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
|
@@ -15,6 +15,7 @@ const logger_1 = require("../../../../utils/logger");
|
|
|
15
15
|
const errors_1 = require("../../../../utils/errors");
|
|
16
16
|
const helpers_2 = require("../../helpers");
|
|
17
17
|
const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
18
|
+
const google_auth_library_1 = require("google-auth-library");
|
|
18
19
|
const fs_1 = require("fs");
|
|
19
20
|
const promises_2 = require("stream/promises");
|
|
20
21
|
// Codes from undici / Node net layer that indicate a transient network failure
|
|
@@ -71,6 +72,41 @@ function isTransientFetchError(err) {
|
|
|
71
72
|
const code = err.code ?? err.cause?.code;
|
|
72
73
|
return !!code && TRANSIENT_NETWORK_CODES.has(code);
|
|
73
74
|
}
|
|
75
|
+
const VEO_3_1_MODELS = new Set([
|
|
76
|
+
aiModels_1.EVideoGenModels.GOOGLE_VEO_3_1,
|
|
77
|
+
aiModels_1.EVideoGenModels.GOOGLE_VEO_3_1_FAST,
|
|
78
|
+
aiModels_1.EVideoGenModels.GOOGLE_VEO_3_1_LITE,
|
|
79
|
+
]);
|
|
80
|
+
function inferImageMime(url) {
|
|
81
|
+
const lower = (url.split("?")[0] ?? url).toLowerCase();
|
|
82
|
+
if (lower.endsWith(".jpg") || lower.endsWith(".jpeg"))
|
|
83
|
+
return "image/jpeg";
|
|
84
|
+
if (lower.endsWith(".webp"))
|
|
85
|
+
return "image/webp";
|
|
86
|
+
return "image/png";
|
|
87
|
+
}
|
|
88
|
+
async function fetchAsImage(url) {
|
|
89
|
+
const resp = await fetch(url);
|
|
90
|
+
// fetch() does NOT throw on 4xx/5xx — surface the HTTP error so we don't
|
|
91
|
+
// encode an HTML error page as image bytes (Veo silently rejects them).
|
|
92
|
+
if (!resp.ok) {
|
|
93
|
+
throw new errors_1.UserFacingError(`Input image could not be downloaded (HTTP ${resp.status}). The image URL may have expired or been deleted.`);
|
|
94
|
+
}
|
|
95
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
96
|
+
// 0-byte body slips through resp.ok if the upstream wrote an empty file.
|
|
97
|
+
// Veo treats empty bytes as content-filtered (no error, no video).
|
|
98
|
+
if (buf.length === 0) {
|
|
99
|
+
throw new errors_1.UserFacingError("Input image is empty (0 bytes). Please re-upload the image.");
|
|
100
|
+
}
|
|
101
|
+
// Prefer Content-Type from the response (authoritative — set by Firebase
|
|
102
|
+
// Storage upload metadata) over URL-extension inference. Hardcoded
|
|
103
|
+
// image/png caused Veo to reject JPEG bytes labelled PNG with no detail.
|
|
104
|
+
const respContentType = resp.headers.get("content-type") ?? "";
|
|
105
|
+
return {
|
|
106
|
+
mimeType: pickImageMimeType(respContentType, url),
|
|
107
|
+
imageBytes: buf.toString("base64"),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
74
110
|
/**
|
|
75
111
|
* Maps `@google/genai` `ApiError` failures (whose message is a JSON string)
|
|
76
112
|
* to a `UserFacingError` with a stable code the frontend can translate.
|
|
@@ -146,42 +182,46 @@ class GoogleService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
146
182
|
(0, helpers_2.validateParams)(params);
|
|
147
183
|
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
148
184
|
const modelId = modelConfig.modelId;
|
|
185
|
+
const isVeo3_1 = VEO_3_1_MODELS.has(params.modelKey);
|
|
149
186
|
const request = {
|
|
150
187
|
model: modelId,
|
|
151
188
|
prompt: params.prompt,
|
|
152
|
-
// image:
|
|
153
189
|
config: {
|
|
154
190
|
aspectRatio: params.aspectRatio,
|
|
155
191
|
resolution: params.resolution,
|
|
156
192
|
durationSeconds: params.duration,
|
|
193
|
+
...(params.seed !== undefined ? { seed: params.seed } : {}),
|
|
194
|
+
...(params.personGeneration ? { personGeneration: params.personGeneration } : {}),
|
|
195
|
+
...(params.negativePrompt ? { negativePrompt: params.negativePrompt } : {}),
|
|
196
|
+
...(params.audio !== undefined ? { generateAudio: params.audio } : {}),
|
|
197
|
+
...(params.promptOptimizer !== undefined ? { enhancePrompt: params.promptOptimizer } : {}),
|
|
157
198
|
},
|
|
158
199
|
};
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
200
|
+
// Video extension takes precedence over image (mutually exclusive in Veo API).
|
|
201
|
+
if (params.inputVideoUrl) {
|
|
202
|
+
request.video = { uri: params.inputVideoUrl };
|
|
203
|
+
}
|
|
204
|
+
else if (params.inputImageUrl) {
|
|
205
|
+
request.image = await this.withTransientRetry("input-image fetch", () => fetchAsImage(params.inputImageUrl));
|
|
206
|
+
}
|
|
207
|
+
// Last-frame image for first-last-frame interpolation. Mutually exclusive with referenceImages.
|
|
208
|
+
if (params.lastFrameImageUrl) {
|
|
209
|
+
request.config.lastFrame = await this.withTransientRetry("last-frame fetch", () => fetchAsImage(params.lastFrameImageUrl));
|
|
210
|
+
}
|
|
211
|
+
// Reference images (Veo 3.1 only — up to 3 asset images for character/scene consistency).
|
|
212
|
+
// When references are provided the API requires durationSeconds=8 and forbids image/video/lastFrame.
|
|
213
|
+
if (params.referenceImageUrls?.length) {
|
|
214
|
+
if (!isVeo3_1) {
|
|
215
|
+
logger_1.logger.warn(`Google Veo: referenceImages provided but model ${params.modelKey} does not support them — ignoring.`);
|
|
166
216
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
217
|
+
else {
|
|
218
|
+
const refs = params.referenceImageUrls.slice(0, 3);
|
|
219
|
+
const fetched = await Promise.all(refs.map((url) => this.withTransientRetry("reference-image fetch", () => fetchAsImage(url))));
|
|
220
|
+
request.config.referenceImages = fetched.map((image) => ({
|
|
221
|
+
image,
|
|
222
|
+
referenceType: genai_1.VideoGenerationReferenceType.ASSET,
|
|
223
|
+
}));
|
|
173
224
|
}
|
|
174
|
-
// BUG #1 fix: previously hardcoded "image/png" regardless of the actual
|
|
175
|
-
// upload type. Veo rejects JPEG bytes labeled as PNG, with no error
|
|
176
|
-
// detail. Prefer the Content-Type from the response (authoritative —
|
|
177
|
-
// Firebase Storage sets it from upload metadata), fall back to URL
|
|
178
|
-
// extension, then default to JPEG (modern phone-camera default).
|
|
179
|
-
const respContentType = imgResp.headers.get("content-type") ?? "";
|
|
180
|
-
const mimeType = pickImageMimeType(respContentType, params.inputImageUrl);
|
|
181
|
-
request.image = {
|
|
182
|
-
mimeType,
|
|
183
|
-
imageBytes: imgBuffer.toString("base64"),
|
|
184
|
-
};
|
|
185
225
|
}
|
|
186
226
|
const operation = await this.withTransientRetry("generateVideos", () => this.ai.models.generateVideos(request));
|
|
187
227
|
if (!operation || !operation.name) {
|
|
@@ -245,8 +285,11 @@ class GoogleService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
245
285
|
.then(() => {
|
|
246
286
|
// console.log("Local file deleted:", localPath);
|
|
247
287
|
})
|
|
248
|
-
.catch(() => {
|
|
249
|
-
|
|
288
|
+
.catch((err) => {
|
|
289
|
+
logger_1.logger.warn("google: local file cleanup failed", {
|
|
290
|
+
localPath,
|
|
291
|
+
err: err?.stack ?? err?.message ?? String(err),
|
|
292
|
+
});
|
|
250
293
|
});
|
|
251
294
|
return {
|
|
252
295
|
videoUrl: signedUrl,
|
|
@@ -255,10 +298,184 @@ class GoogleService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
255
298
|
}
|
|
256
299
|
return { status: types_1.EVideoSceneStatus.PENDING };
|
|
257
300
|
}
|
|
258
|
-
|
|
301
|
+
async generateImage(params) {
|
|
302
|
+
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
303
|
+
const modelId = modelConfig?.modelId;
|
|
304
|
+
if (!modelId)
|
|
305
|
+
throw new Error(`Unknown image modelKey: ${params.modelKey}`);
|
|
306
|
+
const isImagen = modelId.startsWith("imagen-");
|
|
307
|
+
const isNanoBanana = modelId.startsWith("gemini-") && modelId.includes("image");
|
|
308
|
+
const allBytes = [];
|
|
309
|
+
if (isImagen) {
|
|
310
|
+
const resp = await this.ai.models.generateImages({
|
|
311
|
+
model: modelId,
|
|
312
|
+
prompt: params.prompt,
|
|
313
|
+
config: {
|
|
314
|
+
numberOfImages: params.numImages ?? 1,
|
|
315
|
+
...(params.aspectRatio ? { aspectRatio: params.aspectRatio } : {}),
|
|
316
|
+
...(params.personGeneration
|
|
317
|
+
? { personGeneration: params.personGeneration }
|
|
318
|
+
: {}),
|
|
319
|
+
...(params.negativePrompt ? { negativePrompt: params.negativePrompt } : {}),
|
|
320
|
+
...(params.outputFormat ? { outputMimeType: `image/${params.outputFormat}` } : {}),
|
|
321
|
+
},
|
|
322
|
+
});
|
|
323
|
+
for (const gen of resp.generatedImages ?? []) {
|
|
324
|
+
const b64 = gen.image?.imageBytes;
|
|
325
|
+
if (!b64)
|
|
326
|
+
continue;
|
|
327
|
+
allBytes.push({
|
|
328
|
+
bytes: Buffer.from(b64, "base64"),
|
|
329
|
+
mime: gen.image?.mimeType ?? "image/png",
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else if (isNanoBanana) {
|
|
334
|
+
// Nano Banana (Gemini image-gen via generateContent) has no structured
|
|
335
|
+
// aspectRatio knob — Imagen does, this path doesn't. Without the hint
|
|
336
|
+
// in the prompt it defaults to landscape, so a 9:16 project ended up
|
|
337
|
+
// with horizontal images that didn't cover the vertical canvas.
|
|
338
|
+
// Prefix the requested ratio so the model produces an output that at
|
|
339
|
+
// least matches orientation (Gemini still won't honor exact pixel
|
|
340
|
+
// dimensions, but landscape vs portrait is reliable).
|
|
341
|
+
const aspectHint = params.aspectRatio
|
|
342
|
+
? `Generate the image with a ${params.aspectRatio} aspect ratio (${params.aspectRatio === "9:16" || params.aspectRatio === "3:4" || params.aspectRatio === "4:5"
|
|
343
|
+
? "vertical portrait"
|
|
344
|
+
: params.aspectRatio === "1:1"
|
|
345
|
+
? "square"
|
|
346
|
+
: "horizontal landscape"} orientation). `
|
|
347
|
+
: "";
|
|
348
|
+
const parts = [{ text: `${aspectHint}${params.prompt}` }];
|
|
349
|
+
const refs = [
|
|
350
|
+
...(params.inputImageUrl ? [params.inputImageUrl] : []),
|
|
351
|
+
...(params.inputImageUrls ?? []),
|
|
352
|
+
];
|
|
353
|
+
for (const url of refs) {
|
|
354
|
+
const ref = await fetchAsImage(url);
|
|
355
|
+
parts.push({ inlineData: { mimeType: ref.mimeType, data: ref.imageBytes } });
|
|
356
|
+
}
|
|
357
|
+
const resp = await this.ai.models.generateContent({
|
|
358
|
+
model: modelId,
|
|
359
|
+
contents: [{ role: "user", parts }],
|
|
360
|
+
});
|
|
361
|
+
const candidates = resp.candidates ?? [];
|
|
362
|
+
for (const cand of candidates) {
|
|
363
|
+
for (const part of cand.content?.parts ?? []) {
|
|
364
|
+
const inline = part.inlineData;
|
|
365
|
+
if (inline?.data) {
|
|
366
|
+
allBytes.push({
|
|
367
|
+
bytes: Buffer.from(inline.data, "base64"),
|
|
368
|
+
mime: inline.mimeType ?? "image/png",
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
throw new Error(`Unsupported Google image modelId: ${modelId}`);
|
|
376
|
+
}
|
|
377
|
+
if (!allBytes.length) {
|
|
378
|
+
throw new Error("Google image generation returned no image bytes");
|
|
379
|
+
}
|
|
380
|
+
const bucket = (0, firebase_1.getBucket)();
|
|
381
|
+
const ts = Date.now();
|
|
382
|
+
const urls = [];
|
|
383
|
+
for (let i = 0; i < allBytes.length; i++) {
|
|
384
|
+
const item = allBytes[i];
|
|
385
|
+
const { bytes, mime } = item;
|
|
386
|
+
const ext = (mime.split("/")[1] ?? "png").toLowerCase();
|
|
387
|
+
const path = `images/google/${ts}-${Math.random().toString(36).slice(2, 8)}-${i}.${ext}`;
|
|
388
|
+
const file = bucket.file(path);
|
|
389
|
+
await file.save(bytes, { contentType: mime });
|
|
390
|
+
const [signed] = await file.getSignedUrl({ action: "read", expires: "03-09-2491" });
|
|
391
|
+
urls.push(signed);
|
|
392
|
+
}
|
|
393
|
+
return {
|
|
394
|
+
imageUrl: urls[0],
|
|
395
|
+
imageUrls: urls.length > 1 ? urls : undefined,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Lyria 2 (Vertex AI). Sync — POST {region}-aiplatform.googleapis.com/.../lyria-002:predict
|
|
400
|
+
* returns base64-encoded WAV audio inline. Auth via ADC on the function service
|
|
401
|
+
* account (or GOOGLE_APPLICATION_CREDENTIALS locally).
|
|
402
|
+
*
|
|
403
|
+
* Required env: GCP_PROJECT_ID. Optional: GCP_LOCATION (default us-central1).
|
|
404
|
+
*/
|
|
405
|
+
async generateMusic(params) {
|
|
406
|
+
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
407
|
+
const modelId = modelConfig?.modelId ?? "lyria-002";
|
|
408
|
+
const projectId = process.env.GCP_PROJECT_ID;
|
|
409
|
+
if (!projectId) {
|
|
410
|
+
throw new Error("Missing GCP_PROJECT_ID env var (required for Vertex Lyria)");
|
|
411
|
+
}
|
|
412
|
+
const location = process.env.GCP_LOCATION ?? "us-central1";
|
|
413
|
+
const auth = new google_auth_library_1.GoogleAuth({
|
|
414
|
+
scopes: ["https://www.googleapis.com/auth/cloud-platform"],
|
|
415
|
+
});
|
|
416
|
+
const client = await auth.getClient();
|
|
417
|
+
const tokenRes = await client.getAccessToken();
|
|
418
|
+
const token = tokenRes?.token;
|
|
419
|
+
if (!token)
|
|
420
|
+
throw new Error("Failed to obtain GCP access token for Vertex Lyria");
|
|
421
|
+
const url = `https://${location}-aiplatform.googleapis.com/v1/projects/${projectId}` +
|
|
422
|
+
`/locations/${location}/publishers/google/models/${modelId}:predict`;
|
|
423
|
+
const instance = { prompt: params.prompt };
|
|
424
|
+
const parameters = {
|
|
425
|
+
sample_count: 1,
|
|
426
|
+
};
|
|
427
|
+
if (params.negativePrompt) {
|
|
428
|
+
instance.negative_prompt = params.negativePrompt;
|
|
429
|
+
}
|
|
430
|
+
if (params.seed !== undefined) {
|
|
431
|
+
parameters.seed = params.seed;
|
|
432
|
+
}
|
|
433
|
+
const resp = await fetch(url, {
|
|
434
|
+
method: "POST",
|
|
435
|
+
headers: {
|
|
436
|
+
Authorization: `Bearer ${token}`,
|
|
437
|
+
"Content-Type": "application/json",
|
|
438
|
+
},
|
|
439
|
+
body: JSON.stringify({ instances: [instance], parameters }),
|
|
440
|
+
});
|
|
441
|
+
if (!resp.ok) {
|
|
442
|
+
const errText = await resp.text();
|
|
443
|
+
throw new Error(`Vertex Lyria failed (${resp.status}): ${errText}`);
|
|
444
|
+
}
|
|
445
|
+
const data = await resp.json();
|
|
446
|
+
const audioB64 = data?.predictions?.[0]?.bytesBase64Encoded;
|
|
447
|
+
if (!audioB64) {
|
|
448
|
+
throw new Error("Vertex Lyria returned no audio data");
|
|
449
|
+
}
|
|
450
|
+
const buffer = Buffer.from(audioB64, "base64");
|
|
451
|
+
const path = `music/lyria/${params.outputFilename}.wav`;
|
|
452
|
+
const file = (0, firebase_1.getBucket)().file(path);
|
|
453
|
+
await file.save(buffer, { contentType: "audio/wav" });
|
|
454
|
+
const [signed] = await file.getSignedUrl({
|
|
455
|
+
action: "read",
|
|
456
|
+
expires: "03-09-2491",
|
|
457
|
+
});
|
|
458
|
+
return {
|
|
459
|
+
audioUrl: signed,
|
|
460
|
+
mimeType: "audio/wav",
|
|
461
|
+
extension: "wav",
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
getCreditUsed({ modelKey, duration = 8, resolution = "720p", multiClip = false, numImages = 1, imageSize }) {
|
|
259
465
|
const modelConfig = aiModels_1.aiModelConfigs[modelKey];
|
|
260
466
|
const cost = modelConfig.cost;
|
|
261
467
|
const applyFloor = !multiClip;
|
|
468
|
+
// Image-gen per-image cost keyed by output size (nano-banana-pro). Falls
|
|
469
|
+
// back to `cost.fixed` if `imageSize` isn't supplied by the caller.
|
|
470
|
+
if (cost?.perImageSize) {
|
|
471
|
+
const key = imageSize ?? "2K";
|
|
472
|
+
const perImage = cost.perImageSize[key] ?? cost.fixed ?? 0;
|
|
473
|
+
return (0, helpers_1.getCreditsFromCost)(perImage * Math.max(1, numImages), applyFloor);
|
|
474
|
+
}
|
|
475
|
+
// Image-gen flat per-image cost (Imagen / Nano Banana).
|
|
476
|
+
if (cost?.fixed !== undefined) {
|
|
477
|
+
return (0, helpers_1.getCreditsFromCost)(cost.fixed * Math.max(1, numImages), applyFloor);
|
|
478
|
+
}
|
|
262
479
|
if (cost?.perResolution) {
|
|
263
480
|
const ratePerSecond = cost.perResolution[resolution] ?? cost.perResolution["720p"];
|
|
264
481
|
return (0, helpers_1.getCreditsFromCost)(ratePerSecond * duration, applyFloor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
|
@@ -21,3 +21,6 @@ __exportStar(require("./openai"), exports);
|
|
|
21
21
|
__exportStar(require("./kling"), exports);
|
|
22
22
|
__exportStar(require("./runway"), exports);
|
|
23
23
|
__exportStar(require("./minimax"), exports);
|
|
24
|
+
__exportStar(require("./fal"), exports);
|
|
25
|
+
__exportStar(require("./pexels"), exports);
|
|
26
|
+
__exportStar(require("./unsplash"), exports);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CameraControl as CanonicalCameraControl } from "../../canonicalAdapters/cameraControl.types";
|
|
2
|
+
import type { CameraControl as KlingCameraControl } from "./types";
|
|
3
|
+
export declare function toKlingCameraControl(c: CanonicalCameraControl): KlingCameraControl | undefined;
|
|
4
|
+
//# sourceMappingURL=cameraAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/cameraAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,sBAAsB,EAExC,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAc,MAAM,SAAS,CAAC;AAgC/E,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,sBAAsB,GACxB,kBAAkB,GAAG,SAAS,CAsBhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toKlingCameraControl = toKlingCameraControl;
|
|
4
|
+
/**
|
|
5
|
+
* Map canonical camera presets → Kling's small named-type vocabulary.
|
|
6
|
+
* Kling exposes only 5 named types (down_back, forward_up, right_turn_forward,
|
|
7
|
+
* left_turn_forward, simple); everything else falls through to "simple" + a
|
|
8
|
+
* synthesized vector that approximates the move.
|
|
9
|
+
*/
|
|
10
|
+
const PRESET_TO_KLING_TYPE = {
|
|
11
|
+
pull_out: "down_back",
|
|
12
|
+
push_in: "forward_up",
|
|
13
|
+
orbit_right: "right_turn_forward",
|
|
14
|
+
orbit_left: "left_turn_forward",
|
|
15
|
+
};
|
|
16
|
+
/** Synth a vector for presets that don't have a Kling named type. */
|
|
17
|
+
const PRESET_TO_VECTOR = {
|
|
18
|
+
static: { horizontal: 0, vertical: 0, pan: 0, tilt: 0, roll: 0, zoom: 0 },
|
|
19
|
+
pan_left: { pan: -8 },
|
|
20
|
+
pan_right: { pan: 8 },
|
|
21
|
+
tilt_up: { tilt: 8 },
|
|
22
|
+
tilt_down: { tilt: -8 },
|
|
23
|
+
zoom_in: { zoom: 8 },
|
|
24
|
+
zoom_out: { zoom: -8 },
|
|
25
|
+
dolly_in: { vertical: 8 },
|
|
26
|
+
dolly_out: { vertical: -8 },
|
|
27
|
+
roll_left: { roll: -8 },
|
|
28
|
+
roll_right: { roll: 8 },
|
|
29
|
+
tracking: { horizontal: 6 },
|
|
30
|
+
handheld: { vertical: 2, horizontal: 2 },
|
|
31
|
+
};
|
|
32
|
+
function toKlingCameraControl(c) {
|
|
33
|
+
// Direct vector takes precedence — caller knows what they want.
|
|
34
|
+
if (c.vector) {
|
|
35
|
+
return { type: "simple", config: c.vector };
|
|
36
|
+
}
|
|
37
|
+
if (c.preset) {
|
|
38
|
+
const namedType = PRESET_TO_KLING_TYPE[c.preset];
|
|
39
|
+
if (namedType)
|
|
40
|
+
return { type: namedType };
|
|
41
|
+
const baseVec = PRESET_TO_VECTOR[c.preset];
|
|
42
|
+
if (baseVec) {
|
|
43
|
+
const intensity = Math.max(0, Math.min(1, c.intensity ?? 1));
|
|
44
|
+
const scaled = {};
|
|
45
|
+
for (const [k, v] of Object.entries(baseVec)) {
|
|
46
|
+
if (typeof v === "number")
|
|
47
|
+
scaled[k] = Math.round(v * intensity * 10) / 10;
|
|
48
|
+
}
|
|
49
|
+
return { type: "simple", config: scaled };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./kling.service"), exports);
|
|
18
|
+
__exportStar(require("./klingImage.service"), exports);
|
|
18
19
|
__exportStar(require("./types"), exports);
|
|
@@ -4,15 +4,26 @@ export declare class KlingService extends BaseAiGenProviderService {
|
|
|
4
4
|
private readonly baseUrl;
|
|
5
5
|
private readonly generateTimeout;
|
|
6
6
|
private readonly statusTimeout;
|
|
7
|
+
private readonly v4HttpAgent;
|
|
8
|
+
private readonly v4HttpsAgent;
|
|
7
9
|
constructor();
|
|
8
10
|
private request;
|
|
9
11
|
generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Extend a previously-generated Kling video by ~4-5s. Takes the Kling task id
|
|
14
|
+
* of the source video (must have been generated by this Kling account).
|
|
15
|
+
* Cost is the same per-second as the base model.
|
|
16
|
+
*/
|
|
17
|
+
private extendVideo;
|
|
18
|
+
private generateOmniVideo;
|
|
19
|
+
private generateMotionControl;
|
|
20
|
+
private generateLipSync;
|
|
10
21
|
private generateAvatarVideo;
|
|
11
22
|
private requestWithTimeoutRetry;
|
|
12
23
|
checkVideoStatus(params: VideoStatusParams): Promise<VideoStatusResult>;
|
|
13
24
|
private checkRegularVideoStatus;
|
|
14
25
|
private checkAvatarVideoStatus;
|
|
15
26
|
encodeJwtToken(): string;
|
|
16
|
-
getCreditUsed({ modelKey, mode, duration, multiClip, }: CreditUsageParams): number;
|
|
27
|
+
getCreditUsed({ modelKey, mode, duration, multiClip, audio, }: CreditUsageParams): number;
|
|
17
28
|
}
|
|
18
29
|
//# sourceMappingURL=kling.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAoBlB,qBAAa,YAAa,SAAQ,wBAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IASxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAC9E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;;YAWlE,OAAO;IAgCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAsGjC;;;;OAIG;YACW,WAAW;YAkCX,iBAAiB;YAuEjB,qBAAqB;YAyCrB,eAAe;YAiEf,mBAAmB;YAuCnB,uBAAuB;IAwF/B,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAO/D,uBAAuB;YAiFvB,sBAAsB;IA2GpC,cAAc,IAAI,MAAM;IAexB,aAAa,CAAC,EACZ,QAAQ,EACR,IAA8B,EAC9B,QAAY,EACZ,SAAiB,EACjB,KAAa,GACd,EAAE,iBAAiB,GAAG,MAAM;CAgC9B"}
|