feat(canvas): add video-prompt node and enhance video generation support

- Introduced a new node type "video-prompt" for AI video generation, including its integration into the canvas command palette and node template picker.
- Updated connection validation to allow connections from text nodes to video-prompt and from video-prompt to ai-video nodes.
- Enhanced error handling and messaging for video generation failures, including specific cases for provider issues.
- Added tests to validate new video-prompt functionality and connection policies.
- Updated localization files to include new labels and prompts for video-prompt and ai-video nodes.
This commit is contained in:
2026-04-07 08:50:59 +02:00
parent 456b910532
commit ed08b976f9
28 changed files with 2899 additions and 9 deletions

View File

@@ -125,6 +125,29 @@
"failed": "Failed"
}
},
"videoPromptNode": {
"label": "AI video",
"promptPlaceholder": "Describe your video...",
"promptFromTextNode": "Prompt from text node",
"modelLabel": "Model",
"durationLabel": "Length",
"duration5s": "5 sec",
"duration10s": "10 sec",
"generateButton": "Generate video",
"insufficientCredits": "Not enough credits",
"noPromptHint": "Enter a prompt or connect a text node"
},
"aiVideoNode": {
"label": "AI video output",
"idleHint": "Connect an AI video node and start generation there.",
"generating": "Generating video...",
"retryButton": "Try again",
"downloadButton": "Download video",
"modelMeta": "Model: {model}",
"durationMeta": "{duration} sec",
"creditMeta": "{credits} credits",
"errorFallback": "Video generation failed"
},
"credits": {
"balance": "Balance",
"available": "Available",
@@ -205,6 +228,8 @@
"contentPolicyDesc": "Try rephrasing your prompt.",
"timeoutTitle": "Generation timed out",
"timeoutDesc": "Credits were not charged.",
"providerIssuesTitle": "AI providers may be experiencing issues",
"providerIssuesDesc": "Several image or video generations have failed.",
"openrouterIssuesTitle": "OpenRouter may be experiencing issues",
"openrouterIssuesDesc": "Several generations have failed.",
"concurrentLimitReachedTitle": "Generation already active",