vidspotai-shared 1.0.68 → 1.0.69-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/globals/aiModels/enums.d.ts +63 -6
- package/lib/globals/aiModels/enums.d.ts.map +1 -1
- package/lib/globals/aiModels/enums.js +78 -9
- package/lib/globals/aiModels/index.d.ts +2 -30
- package/lib/globals/aiModels/index.d.ts.map +1 -1
- package/lib/globals/aiModels/index.js +7 -35
- package/lib/globals/aiModels/providers/alibaba.d.ts +4 -0
- package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/alibaba.js +194 -0
- package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/bytedance.js +19 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts +14 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/elevenlabs.js +29 -0
- package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/google.js +150 -2
- package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/kling.js +280 -37
- package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/minimax.js +76 -11
- package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/openai.js +90 -6
- package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/pixverse.js +111 -29
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
- package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/runway.js +64 -2
- package/lib/globals/aiModels/tierHelpers.d.ts +33 -0
- package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
- package/lib/globals/aiModels/tierHelpers.js +109 -0
- package/lib/globals/aiModels/types.d.ts +20 -1
- package/lib/globals/aiModels/types.d.ts.map +1 -1
- package/lib/globals/ttsModels/index.d.ts +2 -0
- package/lib/globals/ttsModels/index.d.ts.map +1 -1
- package/lib/globals/ttsModels/index.js +9 -1
- package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
- package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/minimax.js +18 -0
- package/lib/globals/ttsModels/providers/openai.d.ts +12 -0
- package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/openai.js +22 -0
- package/lib/globals/ttsModels/types.d.ts +1 -1
- package/lib/globals/ttsModels/types.d.ts.map +1 -1
- package/lib/globals/ttsModels/voices.d.ts +39 -4
- package/lib/globals/ttsModels/voices.d.ts.map +1 -1
- package/lib/globals/ttsModels/voices.js +273 -26
- package/lib/globals/types.d.ts +59 -1
- package/lib/globals/types.d.ts.map +1 -1
- package/lib/globals/types.js +81 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/models/agent.model.d.ts +357 -0
- package/lib/models/agent.model.d.ts.map +1 -0
- package/lib/models/agent.model.js +21 -0
- package/lib/models/cachedAsset.model.d.ts +18 -0
- package/lib/models/cachedAsset.model.d.ts.map +1 -0
- package/lib/models/cachedAsset.model.js +2 -0
- package/lib/models/cachedRawAsset.model.d.ts +20 -0
- package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
- package/lib/models/cachedRawAsset.model.js +2 -0
- package/lib/models/image.model.d.ts +47 -0
- package/lib/models/image.model.d.ts.map +1 -0
- package/lib/models/image.model.js +2 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/index.js +6 -0
- package/lib/models/notification.model.d.ts +25 -0
- package/lib/models/notification.model.d.ts.map +1 -0
- package/lib/models/notification.model.js +2 -0
- package/lib/models/ref.model.d.ts +80 -0
- package/lib/models/ref.model.d.ts.map +1 -0
- package/lib/models/ref.model.js +13 -0
- package/lib/models/share.model.d.ts +29 -0
- package/lib/models/share.model.d.ts.map +1 -0
- package/lib/models/share.model.js +2 -0
- package/lib/models/user.model.d.ts +12 -1
- package/lib/models/user.model.d.ts.map +1 -1
- package/lib/models/video.model.d.ts +120 -8
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/models/video.model.js +10 -0
- package/lib/schemas/agentPersona.schema.d.ts +10 -0
- package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
- package/lib/schemas/agentPersona.schema.js +11 -0
- package/lib/schemas/agentRunJob.schema.d.ts +105 -0
- package/lib/schemas/agentRunJob.schema.d.ts.map +1 -0
- package/lib/schemas/agentRunJob.schema.js +88 -0
- package/lib/schemas/brandKit.schema.d.ts +113 -0
- package/lib/schemas/brandKit.schema.d.ts.map +1 -0
- package/lib/schemas/brandKit.schema.js +46 -0
- package/lib/schemas/brief.schema.d.ts +263 -0
- package/lib/schemas/brief.schema.d.ts.map +1 -0
- package/lib/schemas/brief.schema.js +157 -0
- package/lib/schemas/index.d.ts +7 -0
- package/lib/schemas/index.d.ts.map +1 -0
- package/lib/schemas/index.js +22 -0
- package/lib/schemas/project.schema.d.ts +1025 -0
- package/lib/schemas/project.schema.d.ts.map +1 -0
- package/lib/schemas/project.schema.js +256 -0
- package/lib/schemas/videoPlan.schema.d.ts +590 -0
- package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
- package/lib/schemas/videoPlan.schema.js +412 -0
- package/lib/services/agent/beatSnap.d.ts +10 -0
- package/lib/services/agent/beatSnap.d.ts.map +1 -0
- package/lib/services/agent/beatSnap.js +128 -0
- package/lib/services/agent/bibleBuilder.d.ts +43 -0
- package/lib/services/agent/bibleBuilder.d.ts.map +1 -0
- package/lib/services/agent/bibleBuilder.js +102 -0
- package/lib/services/agent/bibleImageVision.d.ts +45 -0
- package/lib/services/agent/bibleImageVision.d.ts.map +1 -0
- package/lib/services/agent/bibleImageVision.js +169 -0
- package/lib/services/agent/chatAgent.d.ts +79 -0
- package/lib/services/agent/chatAgent.d.ts.map +1 -0
- package/lib/services/agent/chatAgent.js +136 -0
- package/lib/services/agent/costPreflight.d.ts +61 -0
- package/lib/services/agent/costPreflight.d.ts.map +1 -0
- package/lib/services/agent/costPreflight.js +143 -0
- package/lib/services/agent/critic.d.ts +103 -0
- package/lib/services/agent/critic.d.ts.map +1 -0
- package/lib/services/agent/critic.js +139 -0
- package/lib/services/agent/editClassifier.d.ts +262 -0
- package/lib/services/agent/editClassifier.d.ts.map +1 -0
- package/lib/services/agent/editClassifier.js +186 -0
- package/lib/services/agent/eval/index.d.ts +5 -0
- package/lib/services/agent/eval/index.d.ts.map +1 -0
- package/lib/services/agent/eval/index.js +20 -0
- package/lib/services/agent/eval/judge.d.ts +14 -0
- package/lib/services/agent/eval/judge.d.ts.map +1 -0
- package/lib/services/agent/eval/judge.js +96 -0
- package/lib/services/agent/eval/recorder.d.ts +28 -0
- package/lib/services/agent/eval/recorder.d.ts.map +1 -0
- package/lib/services/agent/eval/recorder.js +100 -0
- package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
- package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
- package/lib/services/agent/eval/seedBriefs.js +1188 -0
- package/lib/services/agent/eval/types.d.ts +230 -0
- package/lib/services/agent/eval/types.d.ts.map +1 -0
- package/lib/services/agent/eval/types.js +73 -0
- package/lib/services/agent/executor.d.ts +141 -0
- package/lib/services/agent/executor.d.ts.map +1 -0
- package/lib/services/agent/executor.js +561 -0
- package/lib/services/agent/globalActions.d.ts +49 -0
- package/lib/services/agent/globalActions.d.ts.map +1 -0
- package/lib/services/agent/globalActions.js +328 -0
- package/lib/services/agent/index.d.ts +38 -0
- package/lib/services/agent/index.d.ts.map +1 -0
- package/lib/services/agent/index.js +53 -0
- package/lib/services/agent/llmCaller.d.ts +144 -0
- package/lib/services/agent/llmCaller.d.ts.map +1 -0
- package/lib/services/agent/llmCaller.js +16 -0
- package/lib/services/agent/llmCallerAnthropic.d.ts +90 -0
- package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -0
- package/lib/services/agent/llmCallerAnthropic.js +255 -0
- package/lib/services/agent/llmCallerGateway.d.ts +61 -0
- package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
- package/lib/services/agent/llmCallerGateway.js +360 -0
- package/lib/services/agent/llmCallerRegistry.d.ts +6 -0
- package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
- package/lib/services/agent/llmCallerRegistry.js +39 -0
- package/lib/services/agent/modelQualityNotes.d.ts +100 -0
- package/lib/services/agent/modelQualityNotes.d.ts.map +1 -0
- package/lib/services/agent/modelQualityNotes.js +248 -0
- package/lib/services/agent/modelRouter.d.ts +41 -0
- package/lib/services/agent/modelRouter.d.ts.map +1 -0
- package/lib/services/agent/modelRouter.js +65 -0
- package/lib/services/agent/musicSelect.d.ts +23 -0
- package/lib/services/agent/musicSelect.d.ts.map +1 -0
- package/lib/services/agent/musicSelect.js +109 -0
- package/lib/services/agent/overlayRenderer.d.ts +67 -0
- package/lib/services/agent/overlayRenderer.d.ts.map +1 -0
- package/lib/services/agent/overlayRenderer.js +253 -0
- package/lib/services/agent/perSceneCritic.d.ts +90 -0
- package/lib/services/agent/perSceneCritic.d.ts.map +1 -0
- package/lib/services/agent/perSceneCritic.js +125 -0
- package/lib/services/agent/personas.d.ts +78 -0
- package/lib/services/agent/personas.d.ts.map +1 -0
- package/lib/services/agent/personas.js +177 -0
- package/lib/services/agent/planDiff.d.ts +76 -0
- package/lib/services/agent/planDiff.d.ts.map +1 -0
- package/lib/services/agent/planDiff.js +182 -0
- package/lib/services/agent/planMutations.d.ts +46 -0
- package/lib/services/agent/planMutations.d.ts.map +1 -0
- package/lib/services/agent/planMutations.js +120 -0
- package/lib/services/agent/planner/Planner.d.ts +107 -0
- package/lib/services/agent/planner/Planner.d.ts.map +1 -0
- package/lib/services/agent/planner/Planner.js +591 -0
- package/lib/services/agent/planner/overlaySanity.d.ts +7 -0
- package/lib/services/agent/planner/overlaySanity.d.ts.map +1 -0
- package/lib/services/agent/planner/overlaySanity.js +86 -0
- package/lib/services/agent/planner/promptSections.d.ts +25 -0
- package/lib/services/agent/planner/promptSections.d.ts.map +1 -0
- package/lib/services/agent/planner/promptSections.js +174 -0
- package/lib/services/agent/planner/repair.d.ts +16 -0
- package/lib/services/agent/planner/repair.d.ts.map +1 -0
- package/lib/services/agent/planner/repair.js +51 -0
- package/lib/services/agent/planner/structuralRules.d.ts +10 -0
- package/lib/services/agent/planner/structuralRules.d.ts.map +1 -0
- package/lib/services/agent/planner/structuralRules.js +111 -0
- package/lib/services/agent/planner/validators.d.ts +65 -0
- package/lib/services/agent/planner/validators.d.ts.map +1 -0
- package/lib/services/agent/planner/validators.js +284 -0
- package/lib/services/agent/planner.d.ts +3 -0
- package/lib/services/agent/planner.d.ts.map +1 -0
- package/lib/services/agent/planner.js +14 -0
- package/lib/services/agent/providerFallback/chains.d.ts +100 -0
- package/lib/services/agent/providerFallback/chains.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/chains.js +198 -0
- package/lib/services/agent/providerFallback/classifier.d.ts +36 -0
- package/lib/services/agent/providerFallback/classifier.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/classifier.js +103 -0
- package/lib/services/agent/providerFallback/index.d.ts +4 -0
- package/lib/services/agent/providerFallback/index.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/index.js +19 -0
- package/lib/services/agent/providerFallback/withFallback.d.ts +60 -0
- package/lib/services/agent/providerFallback/withFallback.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/withFallback.js +93 -0
- package/lib/services/agent/providerTaskCache.d.ts +50 -0
- package/lib/services/agent/providerTaskCache.d.ts.map +1 -0
- package/lib/services/agent/providerTaskCache.js +98 -0
- package/lib/services/agent/qualityGate.d.ts +82 -0
- package/lib/services/agent/qualityGate.d.ts.map +1 -0
- package/lib/services/agent/qualityGate.js +232 -0
- package/lib/services/agent/referenceImageRenderer.d.ts +37 -0
- package/lib/services/agent/referenceImageRenderer.d.ts.map +1 -0
- package/lib/services/agent/referenceImageRenderer.js +92 -0
- package/lib/services/agent/regenCore.d.ts +60 -0
- package/lib/services/agent/regenCore.d.ts.map +1 -0
- package/lib/services/agent/regenCore.js +487 -0
- package/lib/services/agent/runHelpers.d.ts +44 -0
- package/lib/services/agent/runHelpers.d.ts.map +1 -0
- package/lib/services/agent/runHelpers.js +196 -0
- package/lib/services/agent/sceneLayoutVision.d.ts +90 -0
- package/lib/services/agent/sceneLayoutVision.d.ts.map +1 -0
- package/lib/services/agent/sceneLayoutVision.js +212 -0
- package/lib/services/agent/stitchedVideoCritic.d.ts +136 -0
- package/lib/services/agent/stitchedVideoCritic.d.ts.map +1 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +26 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +1 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.js +198 -0
- package/lib/services/agent/stitchedVideoCritic.js +162 -0
- package/lib/services/agent/taskPoller.d.ts +65 -0
- package/lib/services/agent/taskPoller.d.ts.map +1 -0
- package/lib/services/agent/taskPoller.js +176 -0
- package/lib/services/agent/textOverlayStyles.d.ts +60 -0
- package/lib/services/agent/textOverlayStyles.d.ts.map +1 -0
- package/lib/services/agent/textOverlayStyles.js +174 -0
- package/lib/services/agent/toolRegistry.d.ts +73 -0
- package/lib/services/agent/toolRegistry.d.ts.map +1 -0
- package/lib/services/agent/toolRegistry.js +95 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts +24 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImage.tool.js +115 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +32 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +135 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts +978 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/composeScene.tool.js +90 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts +352 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/estimateCost.tool.js +62 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.js +143 -0
- package/lib/services/agent/tools/generateCaptions.tool.d.ts +42 -0
- package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateCaptions.tool.js +196 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts +74 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateImage.tool.js +206 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts +31 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVideo.tool.js +153 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts +44 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVoiceover.tool.js +206 -0
- package/lib/services/agent/tools/index.d.ts +20 -0
- package/lib/services/agent/tools/index.d.ts.map +1 -0
- package/lib/services/agent/tools/index.js +35 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts +343 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/planVideo.tool.js +46 -0
- package/lib/services/agent/tools/render.tool.d.ts +367 -0
- package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/render.tool.js +48 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchMusic.tool.js +74 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts +41 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchStock.tool.js +314 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
- package/lib/services/agent/ttsDuration.d.ts +29 -0
- package/lib/services/agent/ttsDuration.d.ts.map +1 -0
- package/lib/services/agent/ttsDuration.js +60 -0
- package/lib/services/aiGen/aiGenFactory.service.d.ts +21 -1
- package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.js +84 -21
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
- package/lib/services/aiGen/helpers.d.ts.map +1 -1
- package/lib/services/aiGen/helpers.js +10 -0
- package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +14 -3
- package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
- package/lib/services/aiGen/providers/alibaba/alibaba.js +155 -22
- package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +22 -4
- package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/baseAiGenProvider.service.js +32 -0
- package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/bytedance/bytedance.service.js +13 -19
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +102 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts +15 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/falImage.service.js +141 -0
- package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
- package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/index.js +17 -0
- package/lib/services/aiGen/providers/google/google.service.d.ts +11 -2
- package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/google/google.service.js +245 -28
- package/lib/services/aiGen/providers/index.d.ts +3 -0
- package/lib/services/aiGen/providers/index.d.ts.map +1 -1
- package/lib/services/aiGen/providers/index.js +3 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
- package/lib/services/aiGen/providers/kling/index.d.ts +1 -0
- package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/index.js +1 -0
- package/lib/services/aiGen/providers/kling/kling.service.d.ts +12 -1
- package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.js +357 -26
- package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +21 -0
- package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/kling/klingImage.service.js +208 -0
- package/lib/services/aiGen/providers/kling/types.d.ts +105 -0
- package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +15 -2
- package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/minimax/minimax.service.js +128 -5
- package/lib/services/aiGen/providers/minimax/types.d.ts +10 -1
- package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/openai/openai.service.d.ts +8 -2
- package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/openai/openai.service.js +184 -7
- package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
- package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/{azure → pexels}/index.js +1 -1
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.js +150 -0
- package/lib/services/aiGen/providers/pixabay/index.d.ts +2 -0
- package/lib/services/aiGen/providers/pixabay/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pixabay/index.js +17 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +12 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.js +156 -0
- package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/pixverse/pixverse.service.js +125 -2
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
- package/lib/services/aiGen/providers/runway/runway.service.d.ts +12 -2
- package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/runway/runway.service.js +224 -21
- package/lib/services/aiGen/providers/types.d.ts +263 -6
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/unsplash/index.d.ts +2 -0
- package/lib/services/aiGen/providers/unsplash/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/unsplash/index.js +17 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +16 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.js +131 -0
- package/lib/services/analytics.service.js +2 -4
- package/lib/services/apiUsageCounter.service.d.ts +20 -0
- package/lib/services/apiUsageCounter.service.d.ts.map +1 -0
- package/lib/services/apiUsageCounter.service.js +84 -0
- package/lib/services/asr/assemblyai.service.d.ts +72 -0
- package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
- package/lib/services/asr/assemblyai.service.js +89 -0
- package/lib/services/asr/index.d.ts +3 -0
- package/lib/services/asr/index.d.ts.map +1 -0
- package/lib/services/asr/index.js +18 -0
- package/lib/services/asr/whisper.service.d.ts +18 -0
- package/lib/services/asr/whisper.service.d.ts.map +1 -0
- package/lib/services/asr/whisper.service.js +151 -0
- package/lib/services/assetCache.service.d.ts +54 -0
- package/lib/services/assetCache.service.d.ts.map +1 -0
- package/lib/services/assetCache.service.js +109 -0
- package/lib/services/audioAnalysis/index.d.ts +2 -0
- package/lib/services/audioAnalysis/index.d.ts.map +1 -0
- package/lib/services/audioAnalysis/index.js +17 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
- package/lib/services/audioAnalysis/onsetDetection.service.js +140 -0
- package/lib/services/bullmq.service.d.ts +6 -1
- package/lib/services/bullmq.service.d.ts.map +1 -1
- package/lib/services/bullmq.service.js +62 -14
- package/lib/services/credit.service.d.ts.map +1 -1
- package/lib/services/credit.service.js +45 -7
- package/lib/services/credits/pricing.d.ts +58 -0
- package/lib/services/credits/pricing.d.ts.map +1 -0
- package/lib/services/credits/pricing.js +111 -0
- package/lib/services/editor/designToProject.d.ts +75 -0
- package/lib/services/editor/designToProject.d.ts.map +1 -0
- package/lib/services/editor/designToProject.js +295 -0
- package/lib/services/editor/planToProject.d.ts +84 -0
- package/lib/services/editor/planToProject.d.ts.map +1 -0
- package/lib/services/editor/planToProject.js +395 -0
- package/lib/services/editor/projectToDesign.d.ts +4 -0
- package/lib/services/editor/projectToDesign.d.ts.map +1 -0
- package/lib/services/editor/projectToDesign.js +186 -0
- package/lib/services/firestore.service.d.ts +17 -0
- package/lib/services/firestore.service.d.ts.map +1 -1
- package/lib/services/firestore.service.js +30 -0
- package/lib/services/gcp/index.d.ts +1 -0
- package/lib/services/gcp/index.d.ts.map +1 -1
- package/lib/services/gcp/index.js +1 -0
- package/lib/services/gcp/uploadAudioBuffer.d.ts +13 -0
- package/lib/services/gcp/uploadAudioBuffer.d.ts.map +1 -0
- package/lib/services/gcp/uploadAudioBuffer.js +28 -0
- package/lib/services/index.d.ts +13 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +13 -0
- package/lib/services/musicGen/index.d.ts +6 -0
- package/lib/services/musicGen/index.d.ts.map +1 -0
- package/lib/services/musicGen/index.js +26 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
- package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
- package/lib/services/musicGen/providers/curated.service.d.ts +24 -0
- package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/curated.service.js +173 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/jamendo.service.js +113 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts +10 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/mubert.service.js +128 -0
- package/lib/services/musicGen/types.d.ts +46 -0
- package/lib/services/musicGen/types.d.ts.map +1 -0
- package/lib/services/musicGen/types.js +10 -0
- package/lib/services/notification.service.d.ts +22 -0
- package/lib/services/notification.service.d.ts.map +1 -0
- package/lib/services/notification.service.js +76 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +78 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.js +269 -0
- package/lib/services/rateLimiter/index.d.ts +2 -0
- package/lib/services/rateLimiter/index.d.ts.map +1 -0
- package/lib/services/rateLimiter/index.js +17 -0
- package/lib/services/redis.service.d.ts +9 -0
- package/lib/services/redis.service.d.ts.map +1 -1
- package/lib/services/redis.service.js +20 -11
- package/lib/services/redisOptions.d.ts +22 -0
- package/lib/services/redisOptions.d.ts.map +1 -0
- package/lib/services/redisOptions.js +51 -0
- package/lib/services/tts/index.d.ts +2 -0
- package/lib/services/tts/index.d.ts.map +1 -1
- package/lib/services/tts/index.js +2 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.js +91 -24
- package/lib/services/tts/providers/minimax.service.d.ts +14 -0
- package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
- package/lib/services/tts/providers/minimax.service.js +78 -0
- package/lib/services/tts/providers/openai.service.d.ts +14 -0
- package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
- package/lib/services/tts/providers/openai.service.js +73 -0
- package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
- package/lib/services/tts/ttsFactory.service.js +6 -0
- package/lib/services/tts/types.d.ts +33 -0
- package/lib/services/tts/types.d.ts.map +1 -1
- package/lib/utils/errors.d.ts +8 -0
- package/lib/utils/errors.d.ts.map +1 -1
- package/lib/utils/errors.js +8 -0
- package/lib/utils/helpers.d.ts +13 -0
- package/lib/utils/helpers.d.ts.map +1 -1
- package/lib/utils/helpers.js +48 -11
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +37 -1
- package/package.json +5 -1
- package/lib/services/aiGen/providers/azure/azure.service.d.ts +0 -14
- package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +0 -1
- package/lib/services/aiGen/providers/azure/azure.service.js +0 -108
- package/lib/services/aiGen/providers/azure/index.d.ts +0 -2
- package/lib/services/aiGen/providers/azure/index.d.ts.map +0 -1
|
@@ -26,6 +26,96 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
26
26
|
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
27
27
|
const modelId = modelConfig.modelId;
|
|
28
28
|
const traceId = crypto_1.default.randomUUID();
|
|
29
|
+
// Extend a previously-generated PixVerse video. Takes the prior video_id;
|
|
30
|
+
// returns a new task whose status is polled via the same /result/{id} endpoint.
|
|
31
|
+
if (params.endpoint === "extend") {
|
|
32
|
+
if (!params.sourceTaskId) {
|
|
33
|
+
throw new Error("sourceTaskId (prior PixVerse video_id) is required for video extension");
|
|
34
|
+
}
|
|
35
|
+
const extendBody = {
|
|
36
|
+
video_id: Number(params.sourceTaskId),
|
|
37
|
+
model: modelId,
|
|
38
|
+
quality: params.resolution,
|
|
39
|
+
};
|
|
40
|
+
if (params.prompt)
|
|
41
|
+
extendBody.prompt = params.prompt;
|
|
42
|
+
if (params.negativePrompt)
|
|
43
|
+
extendBody.negative_prompt = params.negativePrompt;
|
|
44
|
+
if (params.seed !== undefined)
|
|
45
|
+
extendBody.seed = params.seed;
|
|
46
|
+
const resp = await fetch(`${this.baseUrl}/extend/generate`, {
|
|
47
|
+
method: "POST",
|
|
48
|
+
headers: {
|
|
49
|
+
"Content-Type": "application/json",
|
|
50
|
+
"API-KEY": process.env.PIXVERSE_API_KEY,
|
|
51
|
+
"Ai-trace-id": traceId,
|
|
52
|
+
},
|
|
53
|
+
body: JSON.stringify(extendBody),
|
|
54
|
+
});
|
|
55
|
+
if (!resp.ok) {
|
|
56
|
+
const errText = await resp.text();
|
|
57
|
+
throw new Error(`PixVerse extendVideo failed (${resp.status}): ${errText}`);
|
|
58
|
+
}
|
|
59
|
+
const data = await resp.json();
|
|
60
|
+
if (data.ErrCode !== 0) {
|
|
61
|
+
throw new Error(`PixVerse API error: ${data.ErrMsg || "Unknown error"}`);
|
|
62
|
+
}
|
|
63
|
+
const videoId = data?.Resp?.video_id;
|
|
64
|
+
if (!videoId)
|
|
65
|
+
throw new Error("PixVerse extend did not return video_id");
|
|
66
|
+
return { task: String(videoId), status: types_1.EVideoSceneStatus.TRIGGERED };
|
|
67
|
+
}
|
|
68
|
+
// Pixverse "Effects" — POST /video/template/generate. Requires both a numeric
|
|
69
|
+
// template_id (resolved upstream from a slug via PIXVERSE_TEMPLATES_BY_SLUG) and
|
|
70
|
+
// a customer_img_url. Most templates ignore prompt; some accept a style hint.
|
|
71
|
+
if (params.endpoint === "effect") {
|
|
72
|
+
if (!params.templateId) {
|
|
73
|
+
throw new Error("templateId is required for Pixverse effect generation");
|
|
74
|
+
}
|
|
75
|
+
if (!params.inputImageUrl) {
|
|
76
|
+
throw new Error("inputImageUrl is required for Pixverse effect generation");
|
|
77
|
+
}
|
|
78
|
+
const templateIdNum = Number(params.templateId);
|
|
79
|
+
if (!Number.isFinite(templateIdNum)) {
|
|
80
|
+
throw new Error(`templateId must be a numeric Pixverse template id (got "${params.templateId}")`);
|
|
81
|
+
}
|
|
82
|
+
const effectBody = {
|
|
83
|
+
template_id: templateIdNum,
|
|
84
|
+
customer_img_url: params.inputImageUrl,
|
|
85
|
+
model: modelId,
|
|
86
|
+
quality: params.resolution,
|
|
87
|
+
duration: params.duration,
|
|
88
|
+
};
|
|
89
|
+
if (params.prompt)
|
|
90
|
+
effectBody.prompt = params.prompt;
|
|
91
|
+
if (params.seed !== undefined)
|
|
92
|
+
effectBody.seed = params.seed;
|
|
93
|
+
if (params.watermark !== undefined)
|
|
94
|
+
effectBody.water_mark = !params.watermark;
|
|
95
|
+
if (params.motionMode)
|
|
96
|
+
effectBody.motion_mode = params.motionMode;
|
|
97
|
+
const resp = await fetch(`${this.baseUrl}/template/generate`, {
|
|
98
|
+
method: "POST",
|
|
99
|
+
headers: {
|
|
100
|
+
"Content-Type": "application/json",
|
|
101
|
+
"API-KEY": process.env.PIXVERSE_API_KEY,
|
|
102
|
+
"Ai-trace-id": traceId,
|
|
103
|
+
},
|
|
104
|
+
body: JSON.stringify(effectBody),
|
|
105
|
+
});
|
|
106
|
+
if (!resp.ok) {
|
|
107
|
+
const errText = await resp.text();
|
|
108
|
+
throw new Error(`PixVerse effect generation failed (${resp.status}): ${errText}`);
|
|
109
|
+
}
|
|
110
|
+
const data = await resp.json();
|
|
111
|
+
if (data.ErrCode !== 0) {
|
|
112
|
+
throw new Error(`PixVerse API error: ${data.ErrMsg || "Unknown error"}`);
|
|
113
|
+
}
|
|
114
|
+
const videoId = data?.Resp?.video_id;
|
|
115
|
+
if (!videoId)
|
|
116
|
+
throw new Error("PixVerse effect did not return video_id");
|
|
117
|
+
return { task: String(videoId), status: types_1.EVideoSceneStatus.TRIGGERED };
|
|
118
|
+
}
|
|
29
119
|
const body = {
|
|
30
120
|
aspect_ratio: params.aspectRatio,
|
|
31
121
|
duration: params.duration,
|
|
@@ -45,7 +135,37 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
45
135
|
if (params.multiClip !== undefined) {
|
|
46
136
|
body.generate_multi_clip_switch = Boolean(params.multiClip);
|
|
47
137
|
}
|
|
48
|
-
|
|
138
|
+
if (params.seed !== undefined)
|
|
139
|
+
body.seed = params.seed;
|
|
140
|
+
if (params.motionMode)
|
|
141
|
+
body.motion_mode = params.motionMode;
|
|
142
|
+
if (params.watermark !== undefined)
|
|
143
|
+
body.water_mark = !params.watermark; // API field is "remove watermark"
|
|
144
|
+
if (params.style)
|
|
145
|
+
body.style = params.style;
|
|
146
|
+
if (params.templateId)
|
|
147
|
+
body.template_id = params.templateId;
|
|
148
|
+
if (params.thinkingType)
|
|
149
|
+
body.thinking_type = params.thinkingType;
|
|
150
|
+
if (params.soundEffect) {
|
|
151
|
+
body.sound_effect_switch = params.soundEffect.switch;
|
|
152
|
+
if (params.soundEffect.content)
|
|
153
|
+
body.sound_effect_content = params.soundEffect.content;
|
|
154
|
+
}
|
|
155
|
+
if (params.lipSync) {
|
|
156
|
+
body.lip_sync_switch = params.lipSync.switch;
|
|
157
|
+
if (params.lipSync.ttsContent)
|
|
158
|
+
body.lip_sync_tts_content = params.lipSync.ttsContent;
|
|
159
|
+
if (params.lipSync.ttsSpeakerId)
|
|
160
|
+
body.lip_sync_tts_speaker_id = params.lipSync.ttsSpeakerId;
|
|
161
|
+
}
|
|
162
|
+
// I2V switches endpoint and adds the image reference.
|
|
163
|
+
const isImageToVideo = !!params.inputImageUrl;
|
|
164
|
+
if (isImageToVideo) {
|
|
165
|
+
body.image_url = params.inputImageUrl;
|
|
166
|
+
}
|
|
167
|
+
const endpoint = isImageToVideo ? `${this.baseUrl}/image/generate` : `${this.baseUrl}/text/generate`;
|
|
168
|
+
const resp = await fetch(endpoint, {
|
|
49
169
|
method: "POST",
|
|
50
170
|
headers: {
|
|
51
171
|
"Content-Type": "application/json",
|
|
@@ -180,7 +300,10 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
180
300
|
return (0, helpers_2.getCreditsFromCost)(cost, !multiClip);
|
|
181
301
|
}
|
|
182
302
|
catch (err) {
|
|
183
|
-
logger_1.logger.error(`PixVerse credit calculation failed`,
|
|
303
|
+
logger_1.logger.error(`PixVerse credit calculation failed`, {
|
|
304
|
+
params,
|
|
305
|
+
err: err instanceof Error ? err.stack ?? err.message : String(err),
|
|
306
|
+
});
|
|
184
307
|
return 10;
|
|
185
308
|
}
|
|
186
309
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/cameraAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,6CAA6C,CAAC;AAmCrD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,CAAC,EAAE,aAAa,GACf,MAAM,CAMR"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyRunwayCameraControl = applyRunwayCameraControl;
|
|
4
|
+
/**
|
|
5
|
+
* Runway gen4 doesn't expose a structured camera-control field — moves are
|
|
6
|
+
* inferred from prompt text. We translate the canonical preset/intensity into
|
|
7
|
+
* a short bracketed clause prepended to the prompt. Matches Runway's own
|
|
8
|
+
* cinematography vocabulary so the model parses it reliably.
|
|
9
|
+
*/
|
|
10
|
+
const PRESET_TO_PHRASE = {
|
|
11
|
+
static: "static camera",
|
|
12
|
+
pan_left: "camera pans left",
|
|
13
|
+
pan_right: "camera pans right",
|
|
14
|
+
tilt_up: "camera tilts up",
|
|
15
|
+
tilt_down: "camera tilts down",
|
|
16
|
+
zoom_in: "camera zooms in",
|
|
17
|
+
zoom_out: "camera zooms out",
|
|
18
|
+
dolly_in: "camera dollies in",
|
|
19
|
+
dolly_out: "camera dollies out",
|
|
20
|
+
orbit_left: "camera orbits left around subject",
|
|
21
|
+
orbit_right: "camera orbits right around subject",
|
|
22
|
+
roll_left: "camera rolls counter-clockwise",
|
|
23
|
+
roll_right: "camera rolls clockwise",
|
|
24
|
+
tracking: "tracking shot following subject",
|
|
25
|
+
handheld: "handheld camera",
|
|
26
|
+
push_in: "slow push in",
|
|
27
|
+
pull_out: "slow pull out",
|
|
28
|
+
};
|
|
29
|
+
function intensityWord(i) {
|
|
30
|
+
if (i === undefined)
|
|
31
|
+
return "";
|
|
32
|
+
if (i <= 0.33)
|
|
33
|
+
return "subtle ";
|
|
34
|
+
if (i >= 0.67)
|
|
35
|
+
return "strong ";
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
function applyRunwayCameraControl(prompt, c) {
|
|
39
|
+
if (!c.preset)
|
|
40
|
+
return prompt ?? "";
|
|
41
|
+
const phrase = PRESET_TO_PHRASE[c.preset];
|
|
42
|
+
if (!phrase)
|
|
43
|
+
return prompt ?? "";
|
|
44
|
+
const clause = `[${intensityWord(c.intensity)}${phrase}]`;
|
|
45
|
+
return prompt ? `${clause} ${prompt}` : clause;
|
|
46
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
|
|
2
|
-
import { CreditUsageParams, VideoGenerationParams, VideoGenerationResult, VideoStatusParams, VideoStatusResult } from "../types";
|
|
2
|
+
import { CreditUsageParams, ImageGenerationParams, ImageGenerationResult, VideoGenerationParams, VideoGenerationResult, VideoStatusParams, VideoStatusResult } from "../types";
|
|
3
3
|
export declare class RunwayService extends BaseAiGenProviderService {
|
|
4
4
|
private readonly baseUrl;
|
|
5
5
|
private readonly apiKey;
|
|
@@ -7,6 +7,16 @@ export declare class RunwayService extends BaseAiGenProviderService {
|
|
|
7
7
|
private request;
|
|
8
8
|
generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
|
|
9
9
|
checkVideoStatus({ task, outputFilename, outputFilePath, }: VideoStatusParams): Promise<VideoStatusResult>;
|
|
10
|
-
getCreditUsed({ modelKey, duration, multiClip }: CreditUsageParams): number;
|
|
10
|
+
getCreditUsed({ modelKey, duration, multiClip, numImages, aspectRatio }: CreditUsageParams): number;
|
|
11
|
+
/**
|
|
12
|
+
* Runway Gen-4 Image (text-to-image). Async — POST returns a task id,
|
|
13
|
+
* we poll /tasks/{id} until SUCCEEDED, then rehost the time-limited URL
|
|
14
|
+
* into our GCS bucket so the asset persists.
|
|
15
|
+
*
|
|
16
|
+
* UI passes aspectRatio as `"1:1" | "16:9" | "9:16" | "4:3" | "3:4"`;
|
|
17
|
+
* Runway requires concrete pixel ratios (`"1920:1080"` etc.) per the
|
|
18
|
+
* Gen-4 Image spec.
|
|
19
|
+
*/
|
|
20
|
+
generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult>;
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=runway.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAIlB,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;YAUlB,OAAO;IAgCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA6G3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4DjD,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,SAAiB,EAAE,SAAa,EAAE,WAAW,EAAE,EAAE,iBAAiB,GAAG,MAAM;IA0BnH;;;;;;;;OAQG;IACG,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;CA0ElC"}
|
|
@@ -12,6 +12,7 @@ const helpers_1 = require("../../../../utils/helpers");
|
|
|
12
12
|
const logger_1 = require("../../../../utils/logger");
|
|
13
13
|
const helpers_2 = require("../../helpers");
|
|
14
14
|
const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
15
|
+
const cameraAdapter_1 = require("./cameraAdapter");
|
|
15
16
|
class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
|
|
16
17
|
constructor() {
|
|
17
18
|
super();
|
|
@@ -46,37 +47,90 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
46
47
|
const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
|
|
47
48
|
if (!modelId)
|
|
48
49
|
throw new Error(`Unknown modelKey: ${params.modelKey}`);
|
|
50
|
+
// Common optional fields. Runway accepts these on all three endpoints.
|
|
51
|
+
const common = {};
|
|
52
|
+
if (params.seed !== undefined)
|
|
53
|
+
common.seed = params.seed;
|
|
54
|
+
if (params.publicFigureThreshold) {
|
|
55
|
+
common.contentModeration = { publicFigureThreshold: params.publicFigureThreshold };
|
|
56
|
+
}
|
|
57
|
+
// Camera-control: Runway has no structured camera field — synthesize a
|
|
58
|
+
// bracketed clause and prepend to the prompt.
|
|
59
|
+
const effectivePrompt = params.cameraControl
|
|
60
|
+
? (0, cameraAdapter_1.applyRunwayCameraControl)(params.prompt, params.cameraControl)
|
|
61
|
+
: params.prompt;
|
|
49
62
|
let run;
|
|
50
|
-
//
|
|
63
|
+
// gen4.5 — supports BOTH text_to_video and image_to_video (Runway docs).
|
|
64
|
+
// Branch on whether the caller supplied a source still.
|
|
51
65
|
if (modelId === "gen4.5") {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
if (params.inputImageUrl) {
|
|
67
|
+
// IMAGE → VIDEO
|
|
68
|
+
const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4.5");
|
|
69
|
+
const promptImage = [
|
|
70
|
+
{ uri: params.inputImageUrl, position: "first" },
|
|
71
|
+
];
|
|
72
|
+
if (params.lastFrameImageUrl) {
|
|
73
|
+
promptImage.push({ uri: params.lastFrameImageUrl, position: "last" });
|
|
74
|
+
}
|
|
75
|
+
const body = {
|
|
76
|
+
model: "gen4.5",
|
|
77
|
+
promptText: effectivePrompt,
|
|
78
|
+
promptImage,
|
|
79
|
+
ratio,
|
|
80
|
+
duration: params.duration || 5,
|
|
81
|
+
...common,
|
|
82
|
+
};
|
|
83
|
+
run = await this.request("/image_to_video", "POST", body);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// TEXT → VIDEO. gen4.5 T2V only accepts "1280:720" / "720:1280".
|
|
87
|
+
const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4.5_t2v");
|
|
88
|
+
const body = {
|
|
89
|
+
model: "gen4.5",
|
|
90
|
+
promptText: effectivePrompt,
|
|
91
|
+
ratio,
|
|
92
|
+
duration: params.duration || 5,
|
|
93
|
+
...common,
|
|
94
|
+
};
|
|
95
|
+
run = await this.request("/text_to_video", "POST", body);
|
|
96
|
+
}
|
|
60
97
|
}
|
|
61
|
-
// IMAGE → VIDEO (gen4_turbo)
|
|
98
|
+
// IMAGE → VIDEO (gen4_turbo). Supports first + optional last-frame.
|
|
62
99
|
else if (modelId === "gen4_turbo") {
|
|
100
|
+
const promptImage = [
|
|
101
|
+
{ uri: params.inputImageUrl, position: "first" },
|
|
102
|
+
];
|
|
103
|
+
if (params.lastFrameImageUrl) {
|
|
104
|
+
promptImage.push({ uri: params.lastFrameImageUrl, position: "last" });
|
|
105
|
+
}
|
|
106
|
+
// AG-16: agent/tool layer sends aspectRatio as "9:16" / "16:9" / etc;
|
|
107
|
+
// Runway video endpoints expect pixel ratios like "720:1280". Image-gen
|
|
108
|
+
// already translates via mapAspectToRunwayRatio — apply the same here so
|
|
109
|
+
// I2V scenes don't 400 on a perfectly valid request.
|
|
110
|
+
const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4_turbo");
|
|
63
111
|
const body = {
|
|
64
112
|
model: "gen4_turbo",
|
|
65
|
-
promptText:
|
|
66
|
-
promptImage
|
|
67
|
-
ratio
|
|
113
|
+
promptText: effectivePrompt,
|
|
114
|
+
promptImage,
|
|
115
|
+
ratio,
|
|
68
116
|
duration: params.duration,
|
|
117
|
+
...common,
|
|
69
118
|
};
|
|
70
119
|
run = await this.request("/image_to_video", "POST", body);
|
|
71
120
|
}
|
|
72
|
-
// VIDEO → VIDEO (gen4_aleph)
|
|
121
|
+
// VIDEO → VIDEO (gen4_aleph). Supports references[] for character/style consistency.
|
|
73
122
|
else if (modelId === "gen4_aleph") {
|
|
123
|
+
const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4_aleph");
|
|
74
124
|
const body = {
|
|
75
125
|
model: "gen4_aleph",
|
|
76
|
-
promptText:
|
|
126
|
+
promptText: effectivePrompt,
|
|
77
127
|
videoUri: params.inputVideoUrl,
|
|
78
|
-
ratio
|
|
128
|
+
ratio,
|
|
129
|
+
...common,
|
|
79
130
|
};
|
|
131
|
+
if (params.referenceImageUrls?.length) {
|
|
132
|
+
body.references = params.referenceImageUrls.map((uri) => ({ type: "image", uri }));
|
|
133
|
+
}
|
|
80
134
|
run = await this.request("/video_to_video", "POST", body);
|
|
81
135
|
}
|
|
82
136
|
else {
|
|
@@ -127,14 +181,163 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
127
181
|
// Still processing
|
|
128
182
|
return { status: types_1.EVideoSceneStatus.PENDING };
|
|
129
183
|
}
|
|
130
|
-
getCreditUsed({ modelKey, duration = 5, multiClip = false }) {
|
|
184
|
+
getCreditUsed({ modelKey, duration = 5, multiClip = false, numImages = 1, aspectRatio }) {
|
|
131
185
|
const modelConfig = aiModels_1.aiModelConfigs[modelKey];
|
|
132
|
-
const
|
|
186
|
+
const cost = modelConfig?.cost;
|
|
187
|
+
const applyFloor = !multiClip;
|
|
188
|
+
// Image-gen — per-aspect price table (Gen-4 Image). Falls back to `fixed`.
|
|
189
|
+
if (cost?.perAspect && aspectRatio) {
|
|
190
|
+
const perImage = cost.perAspect[aspectRatio] ?? cost.fixed;
|
|
191
|
+
if (perImage !== undefined) {
|
|
192
|
+
return (0, helpers_1.getCreditsFromCost)(perImage * Math.max(1, numImages), applyFloor);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Image-gen — flat per-image cost (Runway Gen-4 Image / Turbo).
|
|
196
|
+
if (cost?.fixed !== undefined) {
|
|
197
|
+
return (0, helpers_1.getCreditsFromCost)(cost.fixed * Math.max(1, numImages), applyFloor);
|
|
198
|
+
}
|
|
199
|
+
const perSecond = cost?.perSecond;
|
|
133
200
|
if (perSecond === undefined || perSecond === null) {
|
|
134
|
-
logger_1.logger.warn(`Runway getCreditUsed: no
|
|
135
|
-
return (0, helpers_1.getCreditsFromCost)(1.0,
|
|
201
|
+
logger_1.logger.warn(`Runway getCreditUsed: no cost config for modelKey="${modelKey}" — returning fallback`, { modelKey, duration });
|
|
202
|
+
return (0, helpers_1.getCreditsFromCost)(1.0, applyFloor);
|
|
203
|
+
}
|
|
204
|
+
return (0, helpers_1.getCreditsFromCost)(perSecond * duration, applyFloor);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Runway Gen-4 Image (text-to-image). Async — POST returns a task id,
|
|
208
|
+
* we poll /tasks/{id} until SUCCEEDED, then rehost the time-limited URL
|
|
209
|
+
* into our GCS bucket so the asset persists.
|
|
210
|
+
*
|
|
211
|
+
* UI passes aspectRatio as `"1:1" | "16:9" | "9:16" | "4:3" | "3:4"`;
|
|
212
|
+
* Runway requires concrete pixel ratios (`"1920:1080"` etc.) per the
|
|
213
|
+
* Gen-4 Image spec.
|
|
214
|
+
*/
|
|
215
|
+
async generateImage(params) {
|
|
216
|
+
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
217
|
+
const modelId = modelConfig?.modelId;
|
|
218
|
+
if (!modelId)
|
|
219
|
+
throw new Error(`Unknown Runway image modelKey: ${params.modelKey}`);
|
|
220
|
+
const ratio = mapAspectToRunwayRatio(params.aspectRatio, params.dimensions);
|
|
221
|
+
const body = {
|
|
222
|
+
promptText: params.prompt,
|
|
223
|
+
ratio,
|
|
224
|
+
model: modelId,
|
|
225
|
+
};
|
|
226
|
+
if (params.seed !== undefined)
|
|
227
|
+
body.seed = params.seed;
|
|
228
|
+
const refs = [
|
|
229
|
+
...(params.inputImageUrl ? [params.inputImageUrl] : []),
|
|
230
|
+
...(params.inputImageUrls ?? []),
|
|
231
|
+
];
|
|
232
|
+
if (refs.length > 0) {
|
|
233
|
+
// Runway requires a `tag` per reference; we assign positional tags so the
|
|
234
|
+
// model can disambiguate when the prompt mentions multiple subjects.
|
|
235
|
+
body.referenceImages = refs.map((uri, i) => ({ uri, tag: `ref${i + 1}` }));
|
|
236
|
+
}
|
|
237
|
+
const run = await this.request("/text_to_image", "POST", body);
|
|
238
|
+
// Poll. Runway image-gen is typically 5–20s; cap at 60s with 1.5s pulses.
|
|
239
|
+
const deadline = Date.now() + 60000;
|
|
240
|
+
let outputUri;
|
|
241
|
+
while (Date.now() < deadline) {
|
|
242
|
+
const status = await this.request(`/tasks/${run.id}`, "GET");
|
|
243
|
+
if (status.status === "SUCCEEDED" && status.output?.length) {
|
|
244
|
+
outputUri = status.output[0];
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
if (status.status === "FAILED" || status.status === "CANCELLED") {
|
|
248
|
+
throw new Error(`Runway image generation failed: ${status.failure ?? "unknown"} (${status.failureCode ?? "no code"})`);
|
|
249
|
+
}
|
|
250
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
136
251
|
}
|
|
137
|
-
|
|
252
|
+
if (!outputUri) {
|
|
253
|
+
throw new Error("Runway image generation timed out after 60s");
|
|
254
|
+
}
|
|
255
|
+
// Rehost in GCS — the Runway-hosted URL expires.
|
|
256
|
+
const imgResp = await axios_1.default.get(outputUri, {
|
|
257
|
+
responseType: "arraybuffer",
|
|
258
|
+
timeout: 60000,
|
|
259
|
+
});
|
|
260
|
+
if (imgResp.status !== 200) {
|
|
261
|
+
throw new Error(`Runway image download failed: ${imgResp.status}`);
|
|
262
|
+
}
|
|
263
|
+
const contentType = imgResp.headers["content-type"] ?? "image/png";
|
|
264
|
+
const ext = (contentType.split("/")[1] ?? "png").toLowerCase();
|
|
265
|
+
const ts = Date.now();
|
|
266
|
+
const path = `images/runway/${ts}-${Math.random().toString(36).slice(2, 8)}.${ext}`;
|
|
267
|
+
const file = (0, firebase_1.getBucket)().file(path);
|
|
268
|
+
await file.save(Buffer.from(imgResp.data), { contentType });
|
|
269
|
+
const [signed] = await file.getSignedUrl({ action: "read", expires: "03-09-2491" });
|
|
270
|
+
return {
|
|
271
|
+
imageUrl: signed,
|
|
272
|
+
providerRequestId: run.id,
|
|
273
|
+
};
|
|
138
274
|
}
|
|
139
275
|
}
|
|
140
276
|
exports.RunwayService = RunwayService;
|
|
277
|
+
/**
|
|
278
|
+
* Map a high-level aspect ratio (or explicit `WxH` dimensions) to one of the
|
|
279
|
+
* pixel ratios the Runway Gen-4 Image API accepts. Falls back to 1024:1024
|
|
280
|
+
* for unrecognized inputs.
|
|
281
|
+
*/
|
|
282
|
+
function mapAspectToRunwayRatio(aspectRatio, dimensions) {
|
|
283
|
+
if (dimensions) {
|
|
284
|
+
const [w, h] = dimensions.split("x").map((n) => parseInt(n, 10));
|
|
285
|
+
if (Number.isFinite(w) && Number.isFinite(h))
|
|
286
|
+
return `${w}:${h}`;
|
|
287
|
+
}
|
|
288
|
+
switch (aspectRatio) {
|
|
289
|
+
case "16:9":
|
|
290
|
+
return "1920:1080";
|
|
291
|
+
case "9:16":
|
|
292
|
+
return "1080:1920";
|
|
293
|
+
case "4:3":
|
|
294
|
+
return "1360:768";
|
|
295
|
+
case "3:4":
|
|
296
|
+
return "768:1360";
|
|
297
|
+
case "1:1":
|
|
298
|
+
default:
|
|
299
|
+
return "1024:1024";
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* AG-16: aspectRatio translation for Runway VIDEO endpoints (gen4_turbo,
|
|
304
|
+
* gen4_aleph). Agent / tool layer sends "9:16" / "16:9" / etc; Runway expects
|
|
305
|
+
* pixel ratios from its model-specific allowed list (e.g. gen4_turbo accepts
|
|
306
|
+
* "1280:720", "720:1280", "960:960", ...). Defaults to landscape if the
|
|
307
|
+
* canonical aspect doesn't map to anything the chosen model supports.
|
|
308
|
+
*/
|
|
309
|
+
function mapAspectToRunwayVideoRatio(aspectRatio, flavor) {
|
|
310
|
+
// AG-24: pass through ONLY if it looks like a real pixel ratio (≥100 on at
|
|
311
|
+
// least one side). The previous regex `/^\d+[:x]\d+$/` greedily matched
|
|
312
|
+
// canonical ratios like "9:16" too, short-circuiting the mapping below and
|
|
313
|
+
// sending "9:16" straight to Runway — which rejected it.
|
|
314
|
+
if (aspectRatio) {
|
|
315
|
+
const m = aspectRatio.match(/^(\d+)[:x](\d+)$/);
|
|
316
|
+
if (m && (parseInt(m[1], 10) >= 100 || parseInt(m[2], 10) >= 100)) {
|
|
317
|
+
return `${m[1]}:${m[2]}`;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// gen4.5 T2V is constrained to 2 ratios per Runway docs (1280:720 + 720:1280).
|
|
321
|
+
// Coerce anything else to the closest landscape/portrait.
|
|
322
|
+
if (flavor === "gen4.5_t2v") {
|
|
323
|
+
return aspectRatio === "9:16" || aspectRatio === "3:4"
|
|
324
|
+
? "720:1280"
|
|
325
|
+
: "1280:720";
|
|
326
|
+
}
|
|
327
|
+
switch (aspectRatio) {
|
|
328
|
+
case "16:9":
|
|
329
|
+
return "1280:720";
|
|
330
|
+
case "9:16":
|
|
331
|
+
return "720:1280";
|
|
332
|
+
case "1:1":
|
|
333
|
+
return "960:960";
|
|
334
|
+
case "4:3":
|
|
335
|
+
return "1104:832";
|
|
336
|
+
case "3:4":
|
|
337
|
+
return "832:1104";
|
|
338
|
+
case "21:9":
|
|
339
|
+
return "1584:672";
|
|
340
|
+
default:
|
|
341
|
+
return "1280:720";
|
|
342
|
+
}
|
|
343
|
+
}
|