vidspotai-shared 1.0.67 → 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 -0
- package/lib/globals/aiModels/index.d.ts.map +1 -1
- package/lib/globals/aiModels/index.js +6 -0
- 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 +73 -2
- 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 -0
- 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 -13
- 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 +127 -1
- 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
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AG-45 — quality gate. Decides whether a generated video (per-scene or
|
|
4
|
+
* stitched) is ship-worthy, needs a cheap re-mux, needs a surgical re-gen on
|
|
5
|
+
* specific scenes, or needs a full replan.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists: the original critic-driven loop in `repairTrace.ts` treated
|
|
8
|
+
* any `severity: 'fail'` finding as a regen trigger. That cost Test 1 4×
|
|
9
|
+
* scene regenerations (~16 credits) over a SINGLE prompt-vs-reference-image
|
|
10
|
+
* misalignment that didn't actually break the video — the bottle was just a
|
|
11
|
+
* different shade of green than the brief said. The user's point was sharp:
|
|
12
|
+
* "if the result was too bad then only regenerate", and the natural rule is
|
|
13
|
+
* a score band + severity floor:
|
|
14
|
+
*
|
|
15
|
+
* per-scene score
|
|
16
|
+
* ≥ 7 ship as-is
|
|
17
|
+
* 5.0–6.9 ship-with-caveats (no auto-regen)
|
|
18
|
+
* 3.0–4.9 surgical regen (scenes the critic flagged)
|
|
19
|
+
* < 3.0 critical — bypass cost-confirmation if cheap
|
|
20
|
+
*
|
|
21
|
+
* stitched score
|
|
22
|
+
* ≥ 7 + shippable deliver
|
|
23
|
+
* 5.0–6.9 no FAIL text/music re-mux only ($0)
|
|
24
|
+
* < 5.0 or FAIL surgical regen on flagged scenes
|
|
25
|
+
* < 3.0 replan (very rare; last resort)
|
|
26
|
+
*
|
|
27
|
+
* guardrails (orthogonal to score):
|
|
28
|
+
* - WARN severity is informational; only FAIL counts toward actions
|
|
29
|
+
* - actionPlausibility FAIL is always actionable, regardless of score —
|
|
30
|
+
* sealed-cap-while-drinking type errors break user trust at any score
|
|
31
|
+
* - max 2 regen attempts per scene per run (`scene.regenCount`)
|
|
32
|
+
* - cumulative cost budget: stop retrying when retry $ > 1.5× original $
|
|
33
|
+
*
|
|
34
|
+
* Every decision is returned as a structured object so the caller (repairTrace,
|
|
35
|
+
* videoJobProcessor, or any future UI) can log it to trace under
|
|
36
|
+
* `qualityGate: GateDecision[]` and let us tune the thresholds from data.
|
|
37
|
+
*/
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.makeBudgetState = makeBudgetState;
|
|
40
|
+
exports.decidePerSceneAction = decidePerSceneAction;
|
|
41
|
+
exports.decideStitchedAction = decideStitchedAction;
|
|
42
|
+
function makeBudgetState(initial) {
|
|
43
|
+
return {
|
|
44
|
+
totalCreditsSpent: initial.totalCreditsSpent ?? initial.originalCreditsBudget,
|
|
45
|
+
originalCreditsBudget: initial.originalCreditsBudget,
|
|
46
|
+
regenCountByScene: initial.regenCountByScene ?? {},
|
|
47
|
+
maxRegenPerScene: initial.maxRegenPerScene ?? 2,
|
|
48
|
+
retryBudgetMultiplier: initial.retryBudgetMultiplier ?? 1.5,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Thresholds — single source of truth so we can tune from data later.
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
const PER_SCENE_SHIP = 7.0;
|
|
55
|
+
const PER_SCENE_ACCEPTABLE = 5.0;
|
|
56
|
+
const PER_SCENE_CRITICAL = 3.0;
|
|
57
|
+
const STITCHED_SHIP = 7.0;
|
|
58
|
+
const STITCHED_ACCEPTABLE = 5.0;
|
|
59
|
+
const STITCHED_REPLAN = 3.0;
|
|
60
|
+
/** Dimensions that always trigger action when FAIL, regardless of score. */
|
|
61
|
+
const ALWAYS_ACTIONABLE_FAIL_DIMENSIONS = new Set([
|
|
62
|
+
"actionPlausibility", // sealed cap while drinking, doors that open the wrong way
|
|
63
|
+
"promptAdherence", // explicit user-requested element missing
|
|
64
|
+
"brandTextLegibility", // user can't read the brand → ad is broken
|
|
65
|
+
]);
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Per-scene decision
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
function decidePerSceneAction(review, budget, opts = {}) {
|
|
70
|
+
const fails = review.findings.filter((f) => f.severity === "fail");
|
|
71
|
+
const warns = review.findings.filter((f) => f.severity === "warn");
|
|
72
|
+
const hardActionableFail = fails.find((f) => ALWAYS_ACTIONABLE_FAIL_DIMENSIONS.has(f.dimension));
|
|
73
|
+
const attemptedTimes = budget.regenCountByScene[review.sceneIndex] ?? 0;
|
|
74
|
+
const overAttemptCap = attemptedTimes >= budget.maxRegenPerScene;
|
|
75
|
+
const retryBudgetCap = budget.originalCreditsBudget * budget.retryBudgetMultiplier;
|
|
76
|
+
const overCostBudget = budget.totalCreditsSpent + (opts.perSceneRegenCostCredits ?? 4) > retryBudgetCap;
|
|
77
|
+
const overGuardrail = overAttemptCap || overCostBudget;
|
|
78
|
+
const baseCaveats = warns.map((w) => `${w.dimension}: ${w.message}`);
|
|
79
|
+
if (review.score >= PER_SCENE_SHIP) {
|
|
80
|
+
return {
|
|
81
|
+
action: "ship",
|
|
82
|
+
score: review.score,
|
|
83
|
+
reason: `score ${review.score.toFixed(1)} ≥ ${PER_SCENE_SHIP} → ship`,
|
|
84
|
+
drivingFindings: warns.map(findingToTelemetry(review.sceneIndex)),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (review.score >= PER_SCENE_ACCEPTABLE && !hardActionableFail) {
|
|
88
|
+
return {
|
|
89
|
+
action: "ship-with-caveats",
|
|
90
|
+
score: review.score,
|
|
91
|
+
reason: `score ${review.score.toFixed(1)} in [${PER_SCENE_ACCEPTABLE}, ${PER_SCENE_SHIP}) with no actionable FAIL — ship with caveats`,
|
|
92
|
+
caveats: baseCaveats,
|
|
93
|
+
drivingFindings: [...warns, ...fails].map(findingToTelemetry(review.sceneIndex)),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// From here we'd like to regen, but guardrails might block it.
|
|
97
|
+
if (overGuardrail) {
|
|
98
|
+
const why = overAttemptCap
|
|
99
|
+
? `scene already retried ${attemptedTimes}/${budget.maxRegenPerScene} times — ship best-effort`
|
|
100
|
+
: `retry would exceed ${budget.retryBudgetMultiplier}× cost cap — ship best-effort`;
|
|
101
|
+
return {
|
|
102
|
+
action: "ship-with-caveats",
|
|
103
|
+
score: review.score,
|
|
104
|
+
reason: `score ${review.score.toFixed(1)} below ${PER_SCENE_ACCEPTABLE} BUT ${why}`,
|
|
105
|
+
caveats: [
|
|
106
|
+
`Quality below preferred threshold (${review.score.toFixed(1)}/10).`,
|
|
107
|
+
...fails.map((f) => `${f.dimension} FAIL: ${f.message}`),
|
|
108
|
+
],
|
|
109
|
+
drivingFindings: fails.map(findingToTelemetry(review.sceneIndex)),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const driving = hardActionableFail ? [hardActionableFail] : fails;
|
|
113
|
+
const critical = review.score < PER_SCENE_CRITICAL;
|
|
114
|
+
return {
|
|
115
|
+
action: "regen-scenes",
|
|
116
|
+
score: review.score,
|
|
117
|
+
reason: critical
|
|
118
|
+
? `score ${review.score.toFixed(1)} < ${PER_SCENE_CRITICAL} (critical) → regen scene ${review.sceneIndex}`
|
|
119
|
+
: hardActionableFail
|
|
120
|
+
? `${hardActionableFail.dimension} FAIL is always actionable → regen scene ${review.sceneIndex}`
|
|
121
|
+
: `score ${review.score.toFixed(1)} < ${PER_SCENE_ACCEPTABLE} → regen scene ${review.sceneIndex}`,
|
|
122
|
+
sceneIndices: [review.sceneIndex],
|
|
123
|
+
estimatedRegenCredits: opts.perSceneRegenCostCredits ?? 4,
|
|
124
|
+
drivingFindings: driving.map(findingToTelemetry(review.sceneIndex)),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// Stitched (final video) decision
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
function decideStitchedAction(stitched, perScene, budget, opts = {}) {
|
|
131
|
+
const fails = stitched.findings.filter((f) => f.severity === "fail");
|
|
132
|
+
const warns = stitched.findings.filter((f) => f.severity === "warn");
|
|
133
|
+
const hardActionableFail = fails.find((f) => ALWAYS_ACTIONABLE_FAIL_DIMENSIONS.has(f.dimension));
|
|
134
|
+
if (stitched.score >= STITCHED_SHIP && stitched.shippable) {
|
|
135
|
+
return {
|
|
136
|
+
action: "ship",
|
|
137
|
+
score: stitched.score,
|
|
138
|
+
reason: `stitched score ${stitched.score.toFixed(1)} ≥ ${STITCHED_SHIP} + shippable=true → ship`,
|
|
139
|
+
drivingFindings: warns.map(stitchedFindingToTelemetry),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// Replan band — only when score is awful AND structural issues (not just
|
|
143
|
+
// bad bottle texture) — that's `voiceoverPacing`, `cutRhythm`, `audioMixBalance`
|
|
144
|
+
// or `overallImpression` FAILs.
|
|
145
|
+
const structuralFail = fails.find((f) => ["voiceoverPacing", "cutRhythm", "audioMixBalance", "overallImpression"].includes(f.dimension));
|
|
146
|
+
if (stitched.score < STITCHED_REPLAN && structuralFail) {
|
|
147
|
+
return {
|
|
148
|
+
action: "replan",
|
|
149
|
+
score: stitched.score,
|
|
150
|
+
reason: `stitched score ${stitched.score.toFixed(1)} < ${STITCHED_REPLAN} with structural FAIL (${structuralFail.dimension}) → replan`,
|
|
151
|
+
drivingFindings: fails.map(stitchedFindingToTelemetry),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// Acceptable band with no FAILs → text/music re-mux only (cheap polish).
|
|
155
|
+
if (stitched.score >= STITCHED_ACCEPTABLE && fails.length === 0) {
|
|
156
|
+
return {
|
|
157
|
+
action: "ship-with-caveats",
|
|
158
|
+
score: stitched.score,
|
|
159
|
+
reason: `stitched score ${stitched.score.toFixed(1)} in [${STITCHED_ACCEPTABLE}, ${STITCHED_SHIP}) with zero FAIL → ship with caveats (no regen)`,
|
|
160
|
+
caveats: warns.map((w) => `${w.dimension}: ${w.message}`),
|
|
161
|
+
drivingFindings: warns.map(stitchedFindingToTelemetry),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Surgical regen band — find which scenes need it.
|
|
165
|
+
const sceneIndicesFromStitched = new Set();
|
|
166
|
+
for (const f of fails) {
|
|
167
|
+
if (typeof f.sceneIndexHint === "number")
|
|
168
|
+
sceneIndicesFromStitched.add(f.sceneIndexHint);
|
|
169
|
+
}
|
|
170
|
+
// Cross-reference per-scene critic for scenes that scored badly.
|
|
171
|
+
for (const r of perScene) {
|
|
172
|
+
if (r.score < PER_SCENE_ACCEPTABLE)
|
|
173
|
+
sceneIndicesFromStitched.add(r.sceneIndex);
|
|
174
|
+
}
|
|
175
|
+
// Honour user-intent scope when present.
|
|
176
|
+
let sceneIndices = Array.from(sceneIndicesFromStitched).sort((a, b) => a - b);
|
|
177
|
+
if (opts.userIntentScope?.length) {
|
|
178
|
+
sceneIndices = sceneIndices.filter((i) => opts.userIntentScope.includes(i));
|
|
179
|
+
}
|
|
180
|
+
if (sceneIndices.length === 0) {
|
|
181
|
+
// FAIL findings but none locatable to a scene + outside user scope.
|
|
182
|
+
return {
|
|
183
|
+
action: "remix",
|
|
184
|
+
score: stitched.score,
|
|
185
|
+
reason: `stitched score ${stitched.score.toFixed(1)} with FAILs that don't map to any in-scope scene → re-mux only`,
|
|
186
|
+
drivingFindings: fails.map(stitchedFindingToTelemetry),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const retryCost = sceneIndices.length * (opts.perSceneRegenCostCredits ?? 4);
|
|
190
|
+
const retryBudgetCap = budget.originalCreditsBudget * budget.retryBudgetMultiplier;
|
|
191
|
+
if (budget.totalCreditsSpent + retryCost > retryBudgetCap) {
|
|
192
|
+
return {
|
|
193
|
+
action: "ship-with-caveats",
|
|
194
|
+
score: stitched.score,
|
|
195
|
+
reason: `regen would cost ${retryCost} credits, exceeding ${budget.retryBudgetMultiplier}× original budget → ship best-effort`,
|
|
196
|
+
caveats: [
|
|
197
|
+
`Score ${stitched.score.toFixed(1)}/10 below ideal but regen cost capped.`,
|
|
198
|
+
...fails.map((f) => `${f.dimension} FAIL: ${f.message}`),
|
|
199
|
+
],
|
|
200
|
+
drivingFindings: fails.map(stitchedFindingToTelemetry),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
action: "regen-scenes",
|
|
205
|
+
score: stitched.score,
|
|
206
|
+
reason: hardActionableFail
|
|
207
|
+
? `${hardActionableFail.dimension} FAIL is always actionable → regen ${sceneIndices.length} scene(s)`
|
|
208
|
+
: `stitched score ${stitched.score.toFixed(1)} < ${STITCHED_ACCEPTABLE} with FAILs → regen ${sceneIndices.length} scene(s)`,
|
|
209
|
+
sceneIndices,
|
|
210
|
+
estimatedRegenCredits: retryCost,
|
|
211
|
+
drivingFindings: fails.map(stitchedFindingToTelemetry),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// ---------------------------------------------------------------------------
|
|
215
|
+
// Helpers
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
function findingToTelemetry(sceneIndex) {
|
|
218
|
+
return (f) => ({
|
|
219
|
+
sceneIndex,
|
|
220
|
+
dimension: f.dimension,
|
|
221
|
+
severity: f.severity,
|
|
222
|
+
message: f.message,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function stitchedFindingToTelemetry(f) {
|
|
226
|
+
return {
|
|
227
|
+
sceneIndex: f.sceneIndexHint,
|
|
228
|
+
dimension: f.dimension,
|
|
229
|
+
severity: f.severity,
|
|
230
|
+
message: f.message,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* referenceImageRenderer — AG-13 (C2 tier) pre-pass.
|
|
3
|
+
*
|
|
4
|
+
* Walks the AgentVisualBible and renders ONE reference image per entity via
|
|
5
|
+
* the generate_image tool. The resulting URLs are written back onto each
|
|
6
|
+
* entity's `referenceImageUrl` field so the executor can thread them into
|
|
7
|
+
* scene-level image-gen calls (image-to-image / subject-reference) to lock
|
|
8
|
+
* identity across scenes.
|
|
9
|
+
*
|
|
10
|
+
* Cost model: ~$0.04 × N entities for nano-banana (1 image each). On a
|
|
11
|
+
* typical UGC brief with 1 character + 1 product + 1 environment, this is
|
|
12
|
+
* ~$0.12 added to the run — paid once, amortised across every scene.
|
|
13
|
+
*
|
|
14
|
+
* Failure mode: per-entity isolated. If CHAR_1 renders fail, the bible still
|
|
15
|
+
* gets returned with CHAR_1.referenceImageUrl=undefined; the executor falls
|
|
16
|
+
* back to text-only consistency for that one entity. We do NOT block the
|
|
17
|
+
* whole run for one entity miss.
|
|
18
|
+
*/
|
|
19
|
+
import type { AgentVisualBible } from "../../schemas/videoPlan.schema";
|
|
20
|
+
import type { RunToolFn } from "./executor";
|
|
21
|
+
import type { ToolContext } from "./toolRegistry";
|
|
22
|
+
export interface RenderReferenceImagesOptions {
|
|
23
|
+
/** Image model key. Default google-nano-banana — cheap + supports multi-ref. */
|
|
24
|
+
modelKey?: string;
|
|
25
|
+
/** Aspect ratio for the reference still. Default 1:1 (good for identity refs). */
|
|
26
|
+
aspectRatio?: "1:1" | "9:16" | "16:9" | "4:5" | "3:4" | "4:3";
|
|
27
|
+
/** Inject for tracing / replay (eval harness). */
|
|
28
|
+
runTool?: RunToolFn;
|
|
29
|
+
}
|
|
30
|
+
export declare function renderReferenceImages(bible: AgentVisualBible, ctx: ToolContext, opts?: RenderReferenceImagesOptions): Promise<AgentVisualBible>;
|
|
31
|
+
/**
|
|
32
|
+
* Helper used by the executor to pluck the referenceImageUrls for a given
|
|
33
|
+
* scene's bibleEntityIds. Returns up to `cap` URLs (provider limits vary —
|
|
34
|
+
* Nano Banana 14, OpenAI 16, Seedream 10, Qwen 3, MiniMax 1).
|
|
35
|
+
*/
|
|
36
|
+
export declare function collectReferenceImageUrls(bible: AgentVisualBible | undefined, entityIds: string[], cap?: number): string[];
|
|
37
|
+
//# sourceMappingURL=referenceImageRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenceImageRenderer.d.ts","sourceRoot":"","sources":["../../../src/services/agent/referenceImageRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,gCAAgC,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,4BAA4B;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9D,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAkCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,SAAI,GACN,MAAM,EAAE,CAcV"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderReferenceImages = renderReferenceImages;
|
|
4
|
+
exports.collectReferenceImageUrls = collectReferenceImageUrls;
|
|
5
|
+
const toolRegistry_1 = require("./toolRegistry");
|
|
6
|
+
async function renderReferenceImages(bible, ctx, opts = {}) {
|
|
7
|
+
if (bible.consistencyTier !== "C2") {
|
|
8
|
+
// No-op for C0 / C1.
|
|
9
|
+
return bible;
|
|
10
|
+
}
|
|
11
|
+
const runTool = opts.runTool ?? toolRegistry_1.runTool;
|
|
12
|
+
const modelKey = opts.modelKey ?? "google-nano-banana";
|
|
13
|
+
const aspectRatio = opts.aspectRatio ?? "1:1";
|
|
14
|
+
const renderOne = async (entity, kind) => {
|
|
15
|
+
if (entity.referenceImageUrl)
|
|
16
|
+
return entity; // pre-supplied (e.g. brandKit.presenterFaceUrl wired in)
|
|
17
|
+
const prompt = buildReferencePrompt(entity, kind);
|
|
18
|
+
try {
|
|
19
|
+
const out = await runTool("generate_image", {
|
|
20
|
+
prompt,
|
|
21
|
+
modelKey,
|
|
22
|
+
aspectRatio,
|
|
23
|
+
numImages: 1,
|
|
24
|
+
}, { ...ctx, idempotencyKey: `${ctx.idempotencyKey}:ref-${entity.id}` });
|
|
25
|
+
if (out.ok && out.output.imageUrl) {
|
|
26
|
+
return { ...entity, referenceImageUrl: out.output.imageUrl };
|
|
27
|
+
}
|
|
28
|
+
return entity;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Per-entity miss is non-fatal — degrade to text-only for this entity.
|
|
32
|
+
return entity;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const [characters, objects, environments] = await Promise.all([
|
|
36
|
+
Promise.all(bible.characters.map((c) => renderOne(c, "character"))),
|
|
37
|
+
Promise.all(bible.objects.map((o) => renderOne(o, "object"))),
|
|
38
|
+
Promise.all(bible.environments.map((e) => renderOne(e, "environment"))),
|
|
39
|
+
]);
|
|
40
|
+
return { ...bible, characters, objects, environments };
|
|
41
|
+
}
|
|
42
|
+
function buildReferencePrompt(entity, kind) {
|
|
43
|
+
switch (kind) {
|
|
44
|
+
case "character":
|
|
45
|
+
// Portrait-style reference so the subject's face + wardrobe + build
|
|
46
|
+
// are all clearly visible for downstream identity transfer.
|
|
47
|
+
return [
|
|
48
|
+
"Reference portrait, full-body, neutral background, soft even studio lighting,",
|
|
49
|
+
"subject centered, looking at camera, no props.",
|
|
50
|
+
entity.description,
|
|
51
|
+
].join(" ");
|
|
52
|
+
case "object":
|
|
53
|
+
// Product-shot style reference — single subject, clean background, all
|
|
54
|
+
// identifying labels / colors / proportions visible.
|
|
55
|
+
return [
|
|
56
|
+
"Reference product shot, single subject centered on a clean neutral seamless background,",
|
|
57
|
+
"soft even studio lighting, all labels and details clearly visible, no props.",
|
|
58
|
+
entity.description,
|
|
59
|
+
].join(" ");
|
|
60
|
+
case "environment":
|
|
61
|
+
// Wide environmental establishing shot — establishes the palette and
|
|
62
|
+
// lighting the executor will match in subsequent scenes.
|
|
63
|
+
return [
|
|
64
|
+
"Reference establishing shot of an environment, wide angle, no people, no products,",
|
|
65
|
+
"showing the dominant palette and lighting clearly.",
|
|
66
|
+
entity.description,
|
|
67
|
+
].join(" ");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Helper used by the executor to pluck the referenceImageUrls for a given
|
|
72
|
+
* scene's bibleEntityIds. Returns up to `cap` URLs (provider limits vary —
|
|
73
|
+
* Nano Banana 14, OpenAI 16, Seedream 10, Qwen 3, MiniMax 1).
|
|
74
|
+
*/
|
|
75
|
+
function collectReferenceImageUrls(bible, entityIds, cap = 3) {
|
|
76
|
+
if (!bible || !entityIds.length)
|
|
77
|
+
return [];
|
|
78
|
+
const all = [
|
|
79
|
+
...bible.characters,
|
|
80
|
+
...bible.objects,
|
|
81
|
+
...bible.environments,
|
|
82
|
+
];
|
|
83
|
+
const urls = [];
|
|
84
|
+
for (const id of entityIds) {
|
|
85
|
+
const ent = all.find((e) => e.id === id);
|
|
86
|
+
if (ent?.referenceImageUrl)
|
|
87
|
+
urls.push(ent.referenceImageUrl);
|
|
88
|
+
if (urls.length >= cap)
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
return urls;
|
|
92
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage 7 (Session H) — shared core for single-target regen.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `runRegenTarget` in apps/firebase-functions/src/controllers/
|
|
5
|
+
* agent.controller.ts so both the synchronous Function endpoints AND the
|
|
6
|
+
* new AGENT_REGEN_JOBS worker call the same code path. Until Stage 8
|
|
7
|
+
* deletes the in-controller copy, this file is the authoritative
|
|
8
|
+
* implementation; the controller copy stays for backwards-compatibility
|
|
9
|
+
* with the existing sync endpoints (they keep working unchanged).
|
|
10
|
+
*
|
|
11
|
+
* Pure logic — never reads from / writes to Firestore. The caller threads
|
|
12
|
+
* project state (the bulk executor reuses one in-memory snapshot across
|
|
13
|
+
* targets) and persists once. Per-target cache mints go via `ctx.cacheMints`
|
|
14
|
+
* which the caller writes back as `providerTaskCache.<clipId>` dot-paths.
|
|
15
|
+
*/
|
|
16
|
+
import { Project } from "../../schemas/project.schema";
|
|
17
|
+
import { VideoPlan } from "../../schemas/videoPlan.schema";
|
|
18
|
+
import { IAgentProjectModel } from "../../models/agent.model";
|
|
19
|
+
import { ProviderTaskCacheEntry } from "./providerTaskCache";
|
|
20
|
+
import type { RegenTarget } from "./planDiff";
|
|
21
|
+
import type { RegenCostEstimate } from "../credits/pricing";
|
|
22
|
+
export interface RegenCoreOptions {
|
|
23
|
+
/** Voiceover-only: if provided, rewrites scene.voiceoverLine and emits nextPlan. */
|
|
24
|
+
overrideLine?: string;
|
|
25
|
+
/** Voiceover-only: passthrough to cost estimation when captions will be re-cut afterward. */
|
|
26
|
+
captionsAlsoChange?: boolean;
|
|
27
|
+
/** Overlays-only: free-text user instruction handed to the planner. */
|
|
28
|
+
instruction?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RegenCoreSuccess {
|
|
31
|
+
ok: true;
|
|
32
|
+
nextPlan?: VideoPlan;
|
|
33
|
+
nextProjectJson: Project;
|
|
34
|
+
runId?: string;
|
|
35
|
+
toolCalls: unknown[];
|
|
36
|
+
cost: RegenCostEstimate;
|
|
37
|
+
details: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export interface RegenCoreError {
|
|
40
|
+
ok: false;
|
|
41
|
+
error: string;
|
|
42
|
+
code?: string;
|
|
43
|
+
/** Suggested HTTP status if surfaced by an HTTP wrapper. */
|
|
44
|
+
status?: number;
|
|
45
|
+
}
|
|
46
|
+
export type RegenCoreResult = RegenCoreSuccess | RegenCoreError;
|
|
47
|
+
export interface RegenCoreContext {
|
|
48
|
+
projectId: string;
|
|
49
|
+
userId: string;
|
|
50
|
+
/** Per-clipId cache mints; caller persists these as `providerTaskCache.<clipId>` patches. */
|
|
51
|
+
cacheMints: Record<string, ProviderTaskCacheEntry>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Run a single regen target against an in-memory project snapshot.
|
|
55
|
+
* Behavioural parity with each per-component HTTP handler in the
|
|
56
|
+
* controller so the bulk executor and the per-component path produce
|
|
57
|
+
* identical projectJson / plan mutations.
|
|
58
|
+
*/
|
|
59
|
+
export declare function executeRegenTarget(target: RegenTarget, project: IAgentProjectModel, ctx: RegenCoreContext, options?: RegenCoreOptions): Promise<RegenCoreResult>;
|
|
60
|
+
//# sourceMappingURL=regenCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regenCore.d.ts","sourceRoot":"","sources":["../../../src/services/agent/regenCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAQ,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAW9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAsd1B"}
|