diff --git a/src/components/nodes/GenerateVideoNode.tsx b/src/components/nodes/GenerateVideoNode.tsx index 43ce04c1..f2770b3e 100644 --- a/src/components/nodes/GenerateVideoNode.tsx +++ b/src/components/nodes/GenerateVideoNode.tsx @@ -29,6 +29,20 @@ function isVeoModel(modelId: string | undefined): boolean { return modelId.startsWith("veo-"); } +/** Build the hardcoded inputSchema for a Veo model, or undefined for non-Veo */ +function buildVeoInputSchema(modelId: string): ModelInputDef[] | undefined { + if (!isVeoModel(modelId)) return undefined; + const isI2V = modelId.includes("image-to-video"); + const inputs: ModelInputDef[] = [ + { name: "prompt", type: "text", required: true, label: "Prompt" }, + { name: "negative_prompt", type: "text", required: false, label: "Neg. Prompt" }, + ]; + if (isI2V) { + inputs.unshift({ name: "image", type: "image", required: true, label: "Image" }); + } + return inputs; +} + type GenerateVideoNodeType = Node; export function GenerateVideoNode({ id, data, selected }: NodeProps) { @@ -114,21 +128,6 @@ export function GenerateVideoNode({ id, data, selected }: NodeProps { - if (!isVeoModel(selectedModelId)) return; - const isI2V = selectedModelId!.includes("image-to-video"); - const inputs: ModelInputDef[] = [ - { name: "prompt", type: "text", required: true, label: "Prompt" }, - { name: "negative_prompt", type: "text", required: false, label: "Neg. Prompt" }, - ]; - if (isI2V) { - inputs.unshift({ name: "image", type: "image", required: true, label: "Image" }); - } - updateNodeData(id, { inputSchema: inputs }); - }, [id, selectedModelId, updateNodeData]); - // Handle provider change const handleProviderChange = useCallback( (e: React.ChangeEvent) => { @@ -139,8 +138,8 @@ export function GenerateVideoNode({ id, data, selected }: NodeProps