{"record":{"id":"82314031290545f4","repo":"conductor-oss/conductor","slug":"video-generation-not-supported-by-this-provider","errorCode":null,"errorMessage":"Video generation not supported by this provider","messagePattern":"Video generation not supported by this provider","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"ai/src/main/java/org/conductoross/conductor/ai/AIModel.java","lineNumber":186,"sourceCode":"                .size(input.getSize())\n                .build();\n    }\n\n    /**\n     * @return Model to generate videos\n     */\n    default VideoModel getVideoModel() {\n        return null; // Default: video generation not supported\n    }\n\n    /**\n     * Generate video (async job submission)\n     *\n     * @param request Video generation request\n     * @return Response with job ID\n     */\n    default LLMResponse generateVideo(VideoGenRequest request) {\n        throw new UnsupportedOperationException(\"Video generation not supported by this provider\");\n    }\n\n    /**\n     * Check video generation job status (polling)\n     *\n     * @param request Video generation request with jobId\n     * @return Response with current status or completed video\n     */\n    default LLMResponse checkVideoStatus(VideoGenRequest request) {\n        throw new UnsupportedOperationException(\"Video generation not supported by this provider\");\n    }\n\n    default LLMResponse generateAudio(AudioGenRequest request) {\n        throw new UnsupportedOperationException();\n    }\n\n    default List<ToolCallback> getToolCallback(ChatCompletion input) {\n        if (input.getTools() == null || input.getTools().isEmpty()) {","sourceCodeStart":168,"sourceCodeEnd":204,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/ai/src/main/java/org/conductoross/conductor/ai/AIModel.java#L168-L204","documentation":"The default AIModel.generateVideo throws UnsupportedOperationException. AIModel is an interface with default methods so providers opt into video generation by overriding generateVideo; the default implementation exists so providers that do not support video fail loudly rather than silently returning null. Calling it on a provider that has not overridden the method is the trigger.","triggerScenarios":"Invoking aiModel.generateVideo(request) on a provider's AIModel instance that has not overridden the method (e.g. a text-only LLM provider). The request is a VideoGenRequest describing the desired clip.","commonSituations":"Workflow/config selected a text or image model for a video-generation task; a generic code path calls generateVideo without first checking getVideoModel() for capability; a new provider was added without video support but routing allows it.","solutions":["Select an AIModel whose getVideoModel() returns non-null (i.e. a provider that overrides generateVideo).","Guard with a capability check before calling: `if (model.getVideoModel() == null) throw/branch;`.","If your provider supports video, override generateVideo in its AIModel implementation."],"exampleFix":"// before\nLLMResponse r = aiModel.generateVideo(req);  // on a text-only provider\n// after\nif (aiModel.getVideoModel() == null) {\n    throw new IllegalStateException(\"provider does not support video\");\n}\nLLMResponse r = aiModel.generateVideo(req);","handlingStrategy":"type-guard","validationCode":"if (aiModel.getVideoModel() == null) {\n    throw new IllegalStateException(\n        \"provider \" + aiModel.getClass().getSimpleName() + \" does not support video\");\n}\nLLMResponse r = aiModel.generateVideo(request);","typeGuard":"boolean supportsVideo(AIModel m) {\n    return m.getVideoModel() != null;\n}","tryCatchPattern":"try {\n    return aiModel.generateVideo(request);\n} catch (UnsupportedOperationException e) {\n    return notImplemented(e.getMessage()); // or branch to a video-capable model\n}","preventionTips":["Always gate generateVideo with a getVideoModel() capability check.","Route video tasks only to providers that override generateVideo.","Document which AIModel implementations support video."],"tags":["ai","video-generation","capability","not-supported"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}