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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./gcp.service"), exports);
|
|
18
18
|
__exportStar(require("./gsheet.service"), exports);
|
|
19
|
+
__exportStar(require("./uploadAudioBuffer"), exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uploads an audio buffer to the project's Firebase Storage bucket and
|
|
3
|
+
* returns a public download URL. Used by the agent VO pipeline: ElevenLabs
|
|
4
|
+
* returns base64 inline and would blow Firestore's 1 MiB doc cap, so the
|
|
5
|
+
* worker flips base64 → URL before persisting projectJson.
|
|
6
|
+
*
|
|
7
|
+
* The download token follows the same `firebasestorageDownloadTokens`
|
|
8
|
+
* pattern as handleUploadFile so the resulting URL is publicly fetchable
|
|
9
|
+
* without a signed-URL refresh dance — matches how generated visual assets
|
|
10
|
+
* are exposed today.
|
|
11
|
+
*/
|
|
12
|
+
export declare function uploadAudioBufferToGcs(buffer: Buffer, destination: string, contentType?: string): Promise<string>;
|
|
13
|
+
//# sourceMappingURL=uploadAudioBuffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadAudioBuffer.d.ts","sourceRoot":"","sources":["../../../src/services/gcp/uploadAudioBuffer.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAqB,GACjC,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uploadAudioBufferToGcs = uploadAudioBufferToGcs;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const firebase_1 = require("../../libs/firebase");
|
|
6
|
+
/**
|
|
7
|
+
* Uploads an audio buffer to the project's Firebase Storage bucket and
|
|
8
|
+
* returns a public download URL. Used by the agent VO pipeline: ElevenLabs
|
|
9
|
+
* returns base64 inline and would blow Firestore's 1 MiB doc cap, so the
|
|
10
|
+
* worker flips base64 → URL before persisting projectJson.
|
|
11
|
+
*
|
|
12
|
+
* The download token follows the same `firebasestorageDownloadTokens`
|
|
13
|
+
* pattern as handleUploadFile so the resulting URL is publicly fetchable
|
|
14
|
+
* without a signed-URL refresh dance — matches how generated visual assets
|
|
15
|
+
* are exposed today.
|
|
16
|
+
*/
|
|
17
|
+
async function uploadAudioBufferToGcs(buffer, destination, contentType = "audio/mpeg") {
|
|
18
|
+
const bucket = (0, firebase_1.getBucket)();
|
|
19
|
+
const file = bucket.file(destination);
|
|
20
|
+
const downloadToken = (0, node_crypto_1.randomUUID)();
|
|
21
|
+
await file.save(buffer, {
|
|
22
|
+
metadata: {
|
|
23
|
+
contentType,
|
|
24
|
+
metadata: { firebaseStorageDownloadTokens: downloadToken },
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
return `https://firebasestorage.googleapis.com/v0/b/${bucket.name}/o/${encodeURIComponent(destination)}?alt=media&token=${downloadToken}`;
|
|
28
|
+
}
|
package/lib/services/index.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
export * from "./redis.service";
|
|
2
|
+
export * from "./redisOptions";
|
|
3
|
+
export * from "./rateLimiter";
|
|
2
4
|
export * from "./firestore.service";
|
|
3
5
|
export * from "./aiGen";
|
|
4
6
|
export * from "./bullmq.service";
|
|
5
7
|
export * from "./gcp";
|
|
6
8
|
export * from "./credit.service";
|
|
9
|
+
export * from "./notification.service";
|
|
10
|
+
export * from "./credits/pricing";
|
|
7
11
|
export * from "./analytics.service";
|
|
8
12
|
export * from "./tts";
|
|
13
|
+
export * from "./musicGen";
|
|
14
|
+
export * from "./audioAnalysis";
|
|
15
|
+
export * from "./asr";
|
|
16
|
+
export * from "./agent";
|
|
17
|
+
export * from "./assetCache.service";
|
|
18
|
+
export * from "./apiUsageCounter.service";
|
|
19
|
+
export * from "./editor/designToProject";
|
|
20
|
+
export * from "./editor/projectToDesign";
|
|
21
|
+
export * from "./editor/planToProject";
|
|
9
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
|
package/lib/services/index.js
CHANGED
|
@@ -15,10 +15,23 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./redis.service"), exports);
|
|
18
|
+
__exportStar(require("./redisOptions"), exports);
|
|
19
|
+
__exportStar(require("./rateLimiter"), exports);
|
|
18
20
|
__exportStar(require("./firestore.service"), exports);
|
|
19
21
|
__exportStar(require("./aiGen"), exports);
|
|
20
22
|
__exportStar(require("./bullmq.service"), exports);
|
|
21
23
|
__exportStar(require("./gcp"), exports);
|
|
22
24
|
__exportStar(require("./credit.service"), exports);
|
|
25
|
+
__exportStar(require("./notification.service"), exports);
|
|
26
|
+
__exportStar(require("./credits/pricing"), exports);
|
|
23
27
|
__exportStar(require("./analytics.service"), exports);
|
|
24
28
|
__exportStar(require("./tts"), exports);
|
|
29
|
+
__exportStar(require("./musicGen"), exports);
|
|
30
|
+
__exportStar(require("./audioAnalysis"), exports);
|
|
31
|
+
__exportStar(require("./asr"), exports);
|
|
32
|
+
__exportStar(require("./agent"), exports);
|
|
33
|
+
__exportStar(require("./assetCache.service"), exports);
|
|
34
|
+
__exportStar(require("./apiUsageCounter.service"), exports);
|
|
35
|
+
__exportStar(require("./editor/designToProject"), exports);
|
|
36
|
+
__exportStar(require("./editor/projectToDesign"), exports);
|
|
37
|
+
__exportStar(require("./editor/planToProject"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export * from "./musicSearchFactory.service";
|
|
3
|
+
export { CURATED_CATALOG, CuratedMusicProvider } from "./providers/curated.service";
|
|
4
|
+
export { JamendoMusicProvider } from "./providers/jamendo.service";
|
|
5
|
+
export { MubertMusicProvider } from "./providers/mubert.service";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/musicGen/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MubertMusicProvider = exports.JamendoMusicProvider = exports.CuratedMusicProvider = exports.CURATED_CATALOG = void 0;
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
__exportStar(require("./musicSearchFactory.service"), exports);
|
|
20
|
+
var curated_service_1 = require("./providers/curated.service");
|
|
21
|
+
Object.defineProperty(exports, "CURATED_CATALOG", { enumerable: true, get: function () { return curated_service_1.CURATED_CATALOG; } });
|
|
22
|
+
Object.defineProperty(exports, "CuratedMusicProvider", { enumerable: true, get: function () { return curated_service_1.CuratedMusicProvider; } });
|
|
23
|
+
var jamendo_service_1 = require("./providers/jamendo.service");
|
|
24
|
+
Object.defineProperty(exports, "JamendoMusicProvider", { enumerable: true, get: function () { return jamendo_service_1.JamendoMusicProvider; } });
|
|
25
|
+
var mubert_service_1 = require("./providers/mubert.service");
|
|
26
|
+
Object.defineProperty(exports, "MubertMusicProvider", { enumerable: true, get: function () { return mubert_service_1.MubertMusicProvider; } });
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MusicSearchParams, MusicSearchProvider, MusicSearchResult, MusicSource } from "./types";
|
|
2
|
+
export declare function getMusicSearchProvider(source: MusicSource): MusicSearchProvider;
|
|
3
|
+
export declare function listAvailableMusicSources(): MusicSource[];
|
|
4
|
+
/**
|
|
5
|
+
* Walk providers in priority order; stop at the first one that returns a
|
|
6
|
+
* track. Skips providers that aren't configured. Caller chooses one of the
|
|
7
|
+
* tracks — usually the first.
|
|
8
|
+
*/
|
|
9
|
+
export declare function searchAllMusicSources(params: MusicSearchParams, opts?: {
|
|
10
|
+
preferred?: MusicSource;
|
|
11
|
+
}): Promise<MusicSearchResult & {
|
|
12
|
+
sourceUsed?: MusicSource;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=musicSearchFactory.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musicSearchFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/musicGen/musicSearchFactory.service.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACZ,MAAM,SAAS,CAAC;AA4BjB,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAI/E;AAED,wBAAgB,yBAAyB,IAAI,WAAW,EAAE,CAEzD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,iBAAiB,EACzB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,WAAW,CAAA;CAAO,GACrC,OAAO,CAAC,iBAAiB,GAAG;IAAE,UAAU,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAY3D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMusicSearchProvider = getMusicSearchProvider;
|
|
4
|
+
exports.listAvailableMusicSources = listAvailableMusicSources;
|
|
5
|
+
exports.searchAllMusicSources = searchAllMusicSources;
|
|
6
|
+
const curated_service_1 = require("./providers/curated.service");
|
|
7
|
+
const jamendo_service_1 = require("./providers/jamendo.service");
|
|
8
|
+
const mubert_service_1 = require("./providers/mubert.service");
|
|
9
|
+
/**
|
|
10
|
+
* Factory + multi-source dispatcher for music search.
|
|
11
|
+
*
|
|
12
|
+
* Resolution rules:
|
|
13
|
+
* - When a specific source is requested, return its provider (even if not
|
|
14
|
+
* available — caller can branch on isAvailable() for clearer errors).
|
|
15
|
+
* - `searchAll(params)` walks the priority list (curated → jamendo → mubert)
|
|
16
|
+
* and returns the first non-empty result. Curated is always first because
|
|
17
|
+
* it ships zero-latency, zero-cost; Mubert is last because it generates
|
|
18
|
+
* and bills per call.
|
|
19
|
+
*/
|
|
20
|
+
const PRIORITY = ["curated", "jamendo", "mubert"];
|
|
21
|
+
let providerCache;
|
|
22
|
+
function providers() {
|
|
23
|
+
if (providerCache)
|
|
24
|
+
return providerCache;
|
|
25
|
+
providerCache = new Map([
|
|
26
|
+
["curated", new curated_service_1.CuratedMusicProvider()],
|
|
27
|
+
["jamendo", new jamendo_service_1.JamendoMusicProvider()],
|
|
28
|
+
["mubert", new mubert_service_1.MubertMusicProvider()],
|
|
29
|
+
]);
|
|
30
|
+
return providerCache;
|
|
31
|
+
}
|
|
32
|
+
function getMusicSearchProvider(source) {
|
|
33
|
+
const p = providers().get(source);
|
|
34
|
+
if (!p)
|
|
35
|
+
throw new Error(`Unknown music source: ${source}`);
|
|
36
|
+
return p;
|
|
37
|
+
}
|
|
38
|
+
function listAvailableMusicSources() {
|
|
39
|
+
return PRIORITY.filter((s) => providers().get(s)?.isAvailable());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Walk providers in priority order; stop at the first one that returns a
|
|
43
|
+
* track. Skips providers that aren't configured. Caller chooses one of the
|
|
44
|
+
* tracks — usually the first.
|
|
45
|
+
*/
|
|
46
|
+
async function searchAllMusicSources(params, opts = {}) {
|
|
47
|
+
const order = opts.preferred
|
|
48
|
+
? [opts.preferred, ...PRIORITY.filter((s) => s !== opts.preferred)]
|
|
49
|
+
: PRIORITY;
|
|
50
|
+
for (const source of order) {
|
|
51
|
+
const provider = providers().get(source);
|
|
52
|
+
if (!provider?.isAvailable())
|
|
53
|
+
continue;
|
|
54
|
+
const result = await provider.search(params);
|
|
55
|
+
if (result.tracks.length)
|
|
56
|
+
return { ...result, sourceUsed: source };
|
|
57
|
+
}
|
|
58
|
+
return { tracks: [] };
|
|
59
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MusicSearchParams, MusicSearchProvider, MusicSearchResult, MusicTrack } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Curated music catalog — always-on, zero-config.
|
|
4
|
+
*
|
|
5
|
+
* Tracks are sourced from Pixabay's free music library (Pixabay Content
|
|
6
|
+
* License: free for commercial use, no attribution required). URLs point
|
|
7
|
+
* at cdn.pixabay.com directly to avoid us hosting / paying egress.
|
|
8
|
+
* AG-36 (2026-05-17): previously pointed at a never-created GCS bucket
|
|
9
|
+
* (vidspot-public-music) so every selection 404'd; replaced with verified
|
|
10
|
+
* pixabay CDN URLs scraped via scrapePixabayMusic.py.
|
|
11
|
+
*
|
|
12
|
+
* If the CDN proves unreliable later, mirror these to our own bucket via
|
|
13
|
+
* the same script + a gsutil cp pass; the catalog shape doesn't change.
|
|
14
|
+
*
|
|
15
|
+
* BPM values are approximate (eyeballed from the Pixabay listing's
|
|
16
|
+
* tempo band). Refine when AG-39 onset-detection picks them up.
|
|
17
|
+
*/
|
|
18
|
+
export declare const CURATED_CATALOG: MusicTrack[];
|
|
19
|
+
export declare class CuratedMusicProvider implements MusicSearchProvider {
|
|
20
|
+
readonly source: "curated";
|
|
21
|
+
isAvailable(): boolean;
|
|
22
|
+
search(params: MusicSearchParams): Promise<MusicSearchResult>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=curated.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curated.service.d.ts","sourceRoot":"","sources":["../../../../src/services/musicGen/providers/curated.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,eAAe,EAAE,UAAU,EAiFvC,CAAC;AAsDF,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;IACrC,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAUpE"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CuratedMusicProvider = exports.CURATED_CATALOG = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Curated music catalog — always-on, zero-config.
|
|
6
|
+
*
|
|
7
|
+
* Tracks are sourced from Pixabay's free music library (Pixabay Content
|
|
8
|
+
* License: free for commercial use, no attribution required). URLs point
|
|
9
|
+
* at cdn.pixabay.com directly to avoid us hosting / paying egress.
|
|
10
|
+
* AG-36 (2026-05-17): previously pointed at a never-created GCS bucket
|
|
11
|
+
* (vidspot-public-music) so every selection 404'd; replaced with verified
|
|
12
|
+
* pixabay CDN URLs scraped via scrapePixabayMusic.py.
|
|
13
|
+
*
|
|
14
|
+
* If the CDN proves unreliable later, mirror these to our own bucket via
|
|
15
|
+
* the same script + a gsutil cp pass; the catalog shape doesn't change.
|
|
16
|
+
*
|
|
17
|
+
* BPM values are approximate (eyeballed from the Pixabay listing's
|
|
18
|
+
* tempo band). Refine when AG-39 onset-detection picks them up.
|
|
19
|
+
*/
|
|
20
|
+
exports.CURATED_CATALOG = [
|
|
21
|
+
{
|
|
22
|
+
id: "curated-energetic-120",
|
|
23
|
+
url: "https://cdn.pixabay.com/audio/2026/04/23/audio_8593d985e3.mp3",
|
|
24
|
+
durationSec: 100,
|
|
25
|
+
bpm: 120,
|
|
26
|
+
mood: "energetic",
|
|
27
|
+
tags: ["pop", "upbeat", "social-recap", "ugc-ad"],
|
|
28
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
29
|
+
source: "curated",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "curated-energetic-128",
|
|
33
|
+
url: "https://cdn.pixabay.com/audio/2026/04/23/audio_044dad33c3.mp3",
|
|
34
|
+
durationSec: 117,
|
|
35
|
+
bpm: 128,
|
|
36
|
+
mood: "energetic",
|
|
37
|
+
tags: ["edm", "drop", "social-recap"],
|
|
38
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
39
|
+
source: "curated",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "curated-uplifting-110",
|
|
43
|
+
url: "https://cdn.pixabay.com/audio/2026/04/23/audio_50f1e7f615.mp3",
|
|
44
|
+
durationSec: 218,
|
|
45
|
+
bpm: 110,
|
|
46
|
+
mood: "uplifting",
|
|
47
|
+
tags: ["corporate", "ugc-ad", "product-demo"],
|
|
48
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
49
|
+
source: "curated",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "curated-cinematic-90",
|
|
53
|
+
url: "https://cdn.pixabay.com/audio/2026/04/24/audio_0ea6bfb236.mp3",
|
|
54
|
+
durationSec: 236,
|
|
55
|
+
bpm: 90,
|
|
56
|
+
mood: "cinematic",
|
|
57
|
+
tags: ["orchestral", "trailer", "talking-head"],
|
|
58
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
59
|
+
source: "curated",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "curated-calm-80",
|
|
63
|
+
url: "https://cdn.pixabay.com/audio/2026/04/24/audio_f485b72a9c.mp3",
|
|
64
|
+
durationSec: 169,
|
|
65
|
+
bpm: 80,
|
|
66
|
+
mood: "calm",
|
|
67
|
+
tags: ["piano", "ambient", "talking-head"],
|
|
68
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
69
|
+
source: "curated",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "curated-dark-100",
|
|
73
|
+
url: "https://cdn.pixabay.com/audio/2026/05/07/audio_e11ff00f80.mp3",
|
|
74
|
+
durationSec: 141,
|
|
75
|
+
bpm: 100,
|
|
76
|
+
mood: "dark",
|
|
77
|
+
tags: ["trap", "moody", "social-recap"],
|
|
78
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
79
|
+
source: "curated",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "curated-acoustic-95",
|
|
83
|
+
url: "https://cdn.pixabay.com/audio/2026/04/24/audio_be8fac0c2b.mp3",
|
|
84
|
+
durationSec: 187,
|
|
85
|
+
bpm: 95,
|
|
86
|
+
mood: "acoustic",
|
|
87
|
+
tags: ["folk", "guitar", "ugc-ad"],
|
|
88
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
89
|
+
source: "curated",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "curated-retro-115",
|
|
93
|
+
url: "https://cdn.pixabay.com/audio/2026/04/22/audio_1364f85847.mp3",
|
|
94
|
+
durationSec: 108,
|
|
95
|
+
bpm: 115,
|
|
96
|
+
mood: "retro",
|
|
97
|
+
tags: ["synthwave", "80s", "product-demo"],
|
|
98
|
+
attribution: "Pixabay (Pixabay Content License)",
|
|
99
|
+
source: "curated",
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
const MOOD_ALIASES = {
|
|
103
|
+
energetic: "energetic",
|
|
104
|
+
upbeat: "energetic",
|
|
105
|
+
hype: "energetic",
|
|
106
|
+
cinematic: "cinematic",
|
|
107
|
+
epic: "cinematic",
|
|
108
|
+
dramatic: "cinematic",
|
|
109
|
+
calm: "calm",
|
|
110
|
+
chill: "calm",
|
|
111
|
+
ambient: "calm",
|
|
112
|
+
uplifting: "uplifting",
|
|
113
|
+
inspirational: "uplifting",
|
|
114
|
+
dark: "dark",
|
|
115
|
+
moody: "dark",
|
|
116
|
+
acoustic: "acoustic",
|
|
117
|
+
folk: "acoustic",
|
|
118
|
+
retro: "retro",
|
|
119
|
+
vintage: "retro",
|
|
120
|
+
quirky: "retro",
|
|
121
|
+
};
|
|
122
|
+
function tokens(s) {
|
|
123
|
+
if (!s)
|
|
124
|
+
return [];
|
|
125
|
+
return s
|
|
126
|
+
.toLowerCase()
|
|
127
|
+
.replace(/[^a-z0-9\s]+/g, " ")
|
|
128
|
+
.split(/\s+/)
|
|
129
|
+
.filter((t) => t.length >= 2);
|
|
130
|
+
}
|
|
131
|
+
function score(track, params) {
|
|
132
|
+
let s = 0;
|
|
133
|
+
const wantedMood = params.mood ? MOOD_ALIASES[params.mood.toLowerCase()] : undefined;
|
|
134
|
+
if (wantedMood && track.mood === wantedMood)
|
|
135
|
+
s += 50;
|
|
136
|
+
const queryToks = tokens(params.query);
|
|
137
|
+
if (queryToks.length) {
|
|
138
|
+
const hay = [track.mood, ...(track.tags ?? [])].join(" ").toLowerCase();
|
|
139
|
+
for (const t of queryToks)
|
|
140
|
+
if (hay.includes(t))
|
|
141
|
+
s += 5;
|
|
142
|
+
}
|
|
143
|
+
if (params.bpmTarget && track.bpm) {
|
|
144
|
+
const diff = Math.abs(track.bpm - params.bpmTarget);
|
|
145
|
+
s += Math.max(0, 30 - diff); // perfect match = 30, ±30bpm = 0
|
|
146
|
+
}
|
|
147
|
+
if (params.bpmMin && track.bpm && track.bpm < params.bpmMin)
|
|
148
|
+
s -= 20;
|
|
149
|
+
if (params.bpmMax && track.bpm && track.bpm > params.bpmMax)
|
|
150
|
+
s -= 20;
|
|
151
|
+
if (params.durationSecMin && track.durationSec < params.durationSecMin)
|
|
152
|
+
s -= 100;
|
|
153
|
+
return s;
|
|
154
|
+
}
|
|
155
|
+
class CuratedMusicProvider {
|
|
156
|
+
constructor() {
|
|
157
|
+
this.source = "curated";
|
|
158
|
+
}
|
|
159
|
+
isAvailable() {
|
|
160
|
+
return exports.CURATED_CATALOG.length > 0;
|
|
161
|
+
}
|
|
162
|
+
async search(params) {
|
|
163
|
+
const limit = params.limit ?? 5;
|
|
164
|
+
const ranked = exports.CURATED_CATALOG
|
|
165
|
+
.map((t) => ({ t, s: score(t, params) }))
|
|
166
|
+
.filter((r) => r.s > -50)
|
|
167
|
+
.sort((a, b) => b.s - a.s)
|
|
168
|
+
.slice(0, limit)
|
|
169
|
+
.map(({ t }) => t);
|
|
170
|
+
return { tracks: ranked };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.CuratedMusicProvider = CuratedMusicProvider;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MusicSearchParams, MusicSearchProvider, MusicSearchResult } from "../types";
|
|
2
|
+
export declare class JamendoMusicProvider implements MusicSearchProvider {
|
|
3
|
+
readonly source: "jamendo";
|
|
4
|
+
private readonly clientId;
|
|
5
|
+
isAvailable(): boolean;
|
|
6
|
+
search(params: MusicSearchParams): Promise<MusicSearchResult>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=jamendo.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jamendo.service.d.ts","sourceRoot":"","sources":["../../../../src/services/musicGen/providers/jamendo.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAiDlB,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAE1D,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA8DpE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.JamendoMusicProvider = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const apiUsageCounter_service_1 = require("../../apiUsageCounter.service");
|
|
9
|
+
// Jamendo free tier: 35,000 req/month per client_id. Cap at 30,000 to leave
|
|
10
|
+
// headroom; override via env.
|
|
11
|
+
const JAMENDO_MONTHLY_CAP = Number(process.env.JAMENDO_MONTHLY_CAP ?? 30000);
|
|
12
|
+
/**
|
|
13
|
+
* Jamendo Music API v3.
|
|
14
|
+
*
|
|
15
|
+
* Free for app integration via client_id; per-track commercial use requires
|
|
16
|
+
* a Pro license purchased through Jamendo Licensing. We surface tracks here
|
|
17
|
+
* but the host UI must show the license CTA before a user ships a video that
|
|
18
|
+
* uses the track. Track BPM comes back via `musicinfo.bpm` when we request
|
|
19
|
+
* `include=musicinfo`.
|
|
20
|
+
*
|
|
21
|
+
* Env: JAMENDO_CLIENT_ID — provider is unavailable until set.
|
|
22
|
+
*/
|
|
23
|
+
const JAMENDO_TRACKS_URL = "https://api.jamendo.com/v3.0/tracks";
|
|
24
|
+
const MOOD_TO_TAGS = {
|
|
25
|
+
energetic: "energetic+upbeat",
|
|
26
|
+
cinematic: "epic+orchestral",
|
|
27
|
+
calm: "calm+ambient",
|
|
28
|
+
uplifting: "uplifting+inspirational",
|
|
29
|
+
dark: "dark+moody",
|
|
30
|
+
acoustic: "acoustic+folk",
|
|
31
|
+
retro: "retro+synthwave",
|
|
32
|
+
quirky: "quirky+playful",
|
|
33
|
+
};
|
|
34
|
+
class JamendoMusicProvider {
|
|
35
|
+
constructor() {
|
|
36
|
+
this.source = "jamendo";
|
|
37
|
+
this.clientId = process.env.JAMENDO_CLIENT_ID;
|
|
38
|
+
}
|
|
39
|
+
isAvailable() {
|
|
40
|
+
return Boolean(this.clientId);
|
|
41
|
+
}
|
|
42
|
+
async search(params) {
|
|
43
|
+
if (!this.clientId)
|
|
44
|
+
return { tracks: [] };
|
|
45
|
+
const allowed = await apiUsageCounter_service_1.ApiUsageCounterService.tryConsume({
|
|
46
|
+
provider: "jamendo",
|
|
47
|
+
monthlyCap: JAMENDO_MONTHLY_CAP,
|
|
48
|
+
});
|
|
49
|
+
if (!allowed) {
|
|
50
|
+
throw new Error(`JAMENDO_RATE_LIMITED: monthly cap of ${JAMENDO_MONTHLY_CAP} exceeded — back off`);
|
|
51
|
+
}
|
|
52
|
+
const tags = params.mood ? MOOD_TO_TAGS[params.mood.toLowerCase()] : undefined;
|
|
53
|
+
const search = params.query?.trim();
|
|
54
|
+
// Pick a single `speed` bucket: prefer explicit bpmTarget, then bpmMin/Max midpoint.
|
|
55
|
+
const speedSeed = params.bpmTarget
|
|
56
|
+
?? (params.bpmMin && params.bpmMax ? (params.bpmMin + params.bpmMax) / 2 : params.bpmMin);
|
|
57
|
+
// Jamendo server-side `durationbetween=min_max` (seconds). Send both bounds
|
|
58
|
+
// when we have them so the page budget isn't wasted on out-of-range tracks.
|
|
59
|
+
const durationBetween = params.durationSecMin || params.durationSecMax
|
|
60
|
+
? `${params.durationSecMin ?? 0}_${params.durationSecMax ?? 3600}`
|
|
61
|
+
: undefined;
|
|
62
|
+
const res = await axios_1.default.get(JAMENDO_TRACKS_URL, {
|
|
63
|
+
params: {
|
|
64
|
+
client_id: this.clientId,
|
|
65
|
+
format: "json",
|
|
66
|
+
limit: Math.min(params.limit ?? 10, 20),
|
|
67
|
+
include: "musicinfo",
|
|
68
|
+
// Jamendo prefers `tags` for mood and `search` for free-text.
|
|
69
|
+
...(tags ? { tags } : {}),
|
|
70
|
+
...(search ? { search } : {}),
|
|
71
|
+
...(speedSeed ? { speed: bpmToSpeed(speedSeed) } : {}),
|
|
72
|
+
...(durationBetween ? { durationbetween: durationBetween } : {}),
|
|
73
|
+
...(params.vocalInstrumental ? { vocalinstrumental: params.vocalInstrumental } : {}),
|
|
74
|
+
audioformat: "mp32",
|
|
75
|
+
},
|
|
76
|
+
timeout: 8000,
|
|
77
|
+
});
|
|
78
|
+
const tracks = res.data.results
|
|
79
|
+
.filter((t) => !!t.audio)
|
|
80
|
+
.map((t) => ({
|
|
81
|
+
id: `jamendo-${t.id}`,
|
|
82
|
+
url: t.audio,
|
|
83
|
+
durationSec: t.duration,
|
|
84
|
+
bpm: t.musicinfo?.bpm,
|
|
85
|
+
mood: params.mood,
|
|
86
|
+
tags: t.musicinfo?.tags?.vartags,
|
|
87
|
+
attribution: `${t.name} — ${t.artist_name} (Jamendo)`,
|
|
88
|
+
source: "jamendo",
|
|
89
|
+
}));
|
|
90
|
+
if (params.bpmTarget) {
|
|
91
|
+
tracks.sort((a, b) => bpmDistance(a, params.bpmTarget) - bpmDistance(b, params.bpmTarget));
|
|
92
|
+
}
|
|
93
|
+
return { tracks };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.JamendoMusicProvider = JamendoMusicProvider;
|
|
97
|
+
function bpmDistance(t, target) {
|
|
98
|
+
if (!t.bpm)
|
|
99
|
+
return 999;
|
|
100
|
+
return Math.abs(t.bpm - target);
|
|
101
|
+
}
|
|
102
|
+
// Jamendo's `speed` param is a coarse 5-bucket bin; map BPM ranges to it.
|
|
103
|
+
function bpmToSpeed(bpm) {
|
|
104
|
+
if (bpm < 70)
|
|
105
|
+
return "verylow";
|
|
106
|
+
if (bpm < 95)
|
|
107
|
+
return "low";
|
|
108
|
+
if (bpm < 120)
|
|
109
|
+
return "medium";
|
|
110
|
+
if (bpm < 145)
|
|
111
|
+
return "high";
|
|
112
|
+
return "veryhigh";
|
|
113
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MusicSearchParams, MusicSearchProvider, MusicSearchResult } from "../types";
|
|
2
|
+
export declare class MubertMusicProvider implements MusicSearchProvider {
|
|
3
|
+
readonly source: "mubert";
|
|
4
|
+
private readonly customerId;
|
|
5
|
+
private readonly accessToken;
|
|
6
|
+
isAvailable(): boolean;
|
|
7
|
+
search(params: MusicSearchParams): Promise<MusicSearchResult>;
|
|
8
|
+
private pollTrackUrl;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=mubert.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mubert.service.d.ts","sourceRoot":"","sources":["../../../../src/services/musicGen/providers/mubert.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAuDlB,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA0DrD,YAAY;CAyB3B"}
|