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.
Files changed (502) hide show
  1. package/lib/globals/aiModels/enums.d.ts +63 -6
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +78 -9
  4. package/lib/globals/aiModels/index.d.ts +2 -0
  5. package/lib/globals/aiModels/index.d.ts.map +1 -1
  6. package/lib/globals/aiModels/index.js +6 -0
  7. package/lib/globals/aiModels/providers/alibaba.d.ts +4 -0
  8. package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
  9. package/lib/globals/aiModels/providers/alibaba.js +194 -0
  10. package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
  11. package/lib/globals/aiModels/providers/bytedance.js +19 -0
  12. package/lib/globals/aiModels/providers/elevenlabs.d.ts +14 -0
  13. package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
  14. package/lib/globals/aiModels/providers/elevenlabs.js +29 -0
  15. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  16. package/lib/globals/aiModels/providers/google.js +150 -2
  17. package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
  18. package/lib/globals/aiModels/providers/kling.js +280 -37
  19. package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
  20. package/lib/globals/aiModels/providers/minimax.js +73 -2
  21. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  22. package/lib/globals/aiModels/providers/openai.js +90 -6
  23. package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
  24. package/lib/globals/aiModels/providers/pixverse.js +111 -29
  25. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
  26. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
  27. package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
  28. package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
  29. package/lib/globals/aiModels/providers/runway.js +64 -2
  30. package/lib/globals/aiModels/tierHelpers.d.ts +33 -0
  31. package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
  32. package/lib/globals/aiModels/tierHelpers.js +109 -0
  33. package/lib/globals/aiModels/types.d.ts +20 -1
  34. package/lib/globals/aiModels/types.d.ts.map +1 -1
  35. package/lib/globals/ttsModels/index.d.ts +2 -0
  36. package/lib/globals/ttsModels/index.d.ts.map +1 -1
  37. package/lib/globals/ttsModels/index.js +9 -1
  38. package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
  39. package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
  40. package/lib/globals/ttsModels/providers/minimax.js +18 -0
  41. package/lib/globals/ttsModels/providers/openai.d.ts +12 -0
  42. package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
  43. package/lib/globals/ttsModels/providers/openai.js +22 -0
  44. package/lib/globals/ttsModels/types.d.ts +1 -1
  45. package/lib/globals/ttsModels/types.d.ts.map +1 -1
  46. package/lib/globals/ttsModels/voices.d.ts +39 -4
  47. package/lib/globals/ttsModels/voices.d.ts.map +1 -1
  48. package/lib/globals/ttsModels/voices.js +273 -26
  49. package/lib/globals/types.d.ts +59 -1
  50. package/lib/globals/types.d.ts.map +1 -1
  51. package/lib/globals/types.js +81 -2
  52. package/lib/index.d.ts +1 -0
  53. package/lib/index.d.ts.map +1 -1
  54. package/lib/index.js +1 -0
  55. package/lib/models/agent.model.d.ts +357 -0
  56. package/lib/models/agent.model.d.ts.map +1 -0
  57. package/lib/models/agent.model.js +21 -0
  58. package/lib/models/cachedAsset.model.d.ts +18 -0
  59. package/lib/models/cachedAsset.model.d.ts.map +1 -0
  60. package/lib/models/cachedAsset.model.js +2 -0
  61. package/lib/models/cachedRawAsset.model.d.ts +20 -0
  62. package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
  63. package/lib/models/cachedRawAsset.model.js +2 -0
  64. package/lib/models/image.model.d.ts +47 -0
  65. package/lib/models/image.model.d.ts.map +1 -0
  66. package/lib/models/image.model.js +2 -0
  67. package/lib/models/index.d.ts +6 -0
  68. package/lib/models/index.d.ts.map +1 -1
  69. package/lib/models/index.js +6 -0
  70. package/lib/models/notification.model.d.ts +25 -0
  71. package/lib/models/notification.model.d.ts.map +1 -0
  72. package/lib/models/notification.model.js +2 -0
  73. package/lib/models/ref.model.d.ts +80 -0
  74. package/lib/models/ref.model.d.ts.map +1 -0
  75. package/lib/models/ref.model.js +13 -0
  76. package/lib/models/share.model.d.ts +29 -0
  77. package/lib/models/share.model.d.ts.map +1 -0
  78. package/lib/models/share.model.js +2 -0
  79. package/lib/models/user.model.d.ts +12 -1
  80. package/lib/models/user.model.d.ts.map +1 -1
  81. package/lib/models/video.model.d.ts +120 -0
  82. package/lib/models/video.model.d.ts.map +1 -1
  83. package/lib/models/video.model.js +10 -0
  84. package/lib/schemas/agentPersona.schema.d.ts +10 -0
  85. package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
  86. package/lib/schemas/agentPersona.schema.js +11 -0
  87. package/lib/schemas/agentRunJob.schema.d.ts +105 -0
  88. package/lib/schemas/agentRunJob.schema.d.ts.map +1 -0
  89. package/lib/schemas/agentRunJob.schema.js +88 -0
  90. package/lib/schemas/brandKit.schema.d.ts +113 -0
  91. package/lib/schemas/brandKit.schema.d.ts.map +1 -0
  92. package/lib/schemas/brandKit.schema.js +46 -0
  93. package/lib/schemas/brief.schema.d.ts +263 -0
  94. package/lib/schemas/brief.schema.d.ts.map +1 -0
  95. package/lib/schemas/brief.schema.js +157 -0
  96. package/lib/schemas/index.d.ts +7 -0
  97. package/lib/schemas/index.d.ts.map +1 -0
  98. package/lib/schemas/index.js +22 -0
  99. package/lib/schemas/project.schema.d.ts +1025 -0
  100. package/lib/schemas/project.schema.d.ts.map +1 -0
  101. package/lib/schemas/project.schema.js +256 -0
  102. package/lib/schemas/videoPlan.schema.d.ts +590 -0
  103. package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
  104. package/lib/schemas/videoPlan.schema.js +412 -0
  105. package/lib/services/agent/beatSnap.d.ts +10 -0
  106. package/lib/services/agent/beatSnap.d.ts.map +1 -0
  107. package/lib/services/agent/beatSnap.js +128 -0
  108. package/lib/services/agent/bibleBuilder.d.ts +43 -0
  109. package/lib/services/agent/bibleBuilder.d.ts.map +1 -0
  110. package/lib/services/agent/bibleBuilder.js +102 -0
  111. package/lib/services/agent/bibleImageVision.d.ts +45 -0
  112. package/lib/services/agent/bibleImageVision.d.ts.map +1 -0
  113. package/lib/services/agent/bibleImageVision.js +169 -0
  114. package/lib/services/agent/chatAgent.d.ts +79 -0
  115. package/lib/services/agent/chatAgent.d.ts.map +1 -0
  116. package/lib/services/agent/chatAgent.js +136 -0
  117. package/lib/services/agent/costPreflight.d.ts +61 -0
  118. package/lib/services/agent/costPreflight.d.ts.map +1 -0
  119. package/lib/services/agent/costPreflight.js +143 -0
  120. package/lib/services/agent/critic.d.ts +103 -0
  121. package/lib/services/agent/critic.d.ts.map +1 -0
  122. package/lib/services/agent/critic.js +139 -0
  123. package/lib/services/agent/editClassifier.d.ts +262 -0
  124. package/lib/services/agent/editClassifier.d.ts.map +1 -0
  125. package/lib/services/agent/editClassifier.js +186 -0
  126. package/lib/services/agent/eval/index.d.ts +5 -0
  127. package/lib/services/agent/eval/index.d.ts.map +1 -0
  128. package/lib/services/agent/eval/index.js +20 -0
  129. package/lib/services/agent/eval/judge.d.ts +14 -0
  130. package/lib/services/agent/eval/judge.d.ts.map +1 -0
  131. package/lib/services/agent/eval/judge.js +96 -0
  132. package/lib/services/agent/eval/recorder.d.ts +28 -0
  133. package/lib/services/agent/eval/recorder.d.ts.map +1 -0
  134. package/lib/services/agent/eval/recorder.js +100 -0
  135. package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
  136. package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
  137. package/lib/services/agent/eval/seedBriefs.js +1188 -0
  138. package/lib/services/agent/eval/types.d.ts +230 -0
  139. package/lib/services/agent/eval/types.d.ts.map +1 -0
  140. package/lib/services/agent/eval/types.js +73 -0
  141. package/lib/services/agent/executor.d.ts +141 -0
  142. package/lib/services/agent/executor.d.ts.map +1 -0
  143. package/lib/services/agent/executor.js +561 -0
  144. package/lib/services/agent/globalActions.d.ts +49 -0
  145. package/lib/services/agent/globalActions.d.ts.map +1 -0
  146. package/lib/services/agent/globalActions.js +328 -0
  147. package/lib/services/agent/index.d.ts +38 -0
  148. package/lib/services/agent/index.d.ts.map +1 -0
  149. package/lib/services/agent/index.js +53 -0
  150. package/lib/services/agent/llmCaller.d.ts +144 -0
  151. package/lib/services/agent/llmCaller.d.ts.map +1 -0
  152. package/lib/services/agent/llmCaller.js +16 -0
  153. package/lib/services/agent/llmCallerAnthropic.d.ts +90 -0
  154. package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -0
  155. package/lib/services/agent/llmCallerAnthropic.js +255 -0
  156. package/lib/services/agent/llmCallerGateway.d.ts +61 -0
  157. package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
  158. package/lib/services/agent/llmCallerGateway.js +360 -0
  159. package/lib/services/agent/llmCallerRegistry.d.ts +6 -0
  160. package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
  161. package/lib/services/agent/llmCallerRegistry.js +39 -0
  162. package/lib/services/agent/modelQualityNotes.d.ts +100 -0
  163. package/lib/services/agent/modelQualityNotes.d.ts.map +1 -0
  164. package/lib/services/agent/modelQualityNotes.js +248 -0
  165. package/lib/services/agent/modelRouter.d.ts +41 -0
  166. package/lib/services/agent/modelRouter.d.ts.map +1 -0
  167. package/lib/services/agent/modelRouter.js +65 -0
  168. package/lib/services/agent/musicSelect.d.ts +23 -0
  169. package/lib/services/agent/musicSelect.d.ts.map +1 -0
  170. package/lib/services/agent/musicSelect.js +109 -0
  171. package/lib/services/agent/overlayRenderer.d.ts +67 -0
  172. package/lib/services/agent/overlayRenderer.d.ts.map +1 -0
  173. package/lib/services/agent/overlayRenderer.js +253 -0
  174. package/lib/services/agent/perSceneCritic.d.ts +90 -0
  175. package/lib/services/agent/perSceneCritic.d.ts.map +1 -0
  176. package/lib/services/agent/perSceneCritic.js +125 -0
  177. package/lib/services/agent/personas.d.ts +78 -0
  178. package/lib/services/agent/personas.d.ts.map +1 -0
  179. package/lib/services/agent/personas.js +177 -0
  180. package/lib/services/agent/planDiff.d.ts +76 -0
  181. package/lib/services/agent/planDiff.d.ts.map +1 -0
  182. package/lib/services/agent/planDiff.js +182 -0
  183. package/lib/services/agent/planMutations.d.ts +46 -0
  184. package/lib/services/agent/planMutations.d.ts.map +1 -0
  185. package/lib/services/agent/planMutations.js +120 -0
  186. package/lib/services/agent/planner/Planner.d.ts +107 -0
  187. package/lib/services/agent/planner/Planner.d.ts.map +1 -0
  188. package/lib/services/agent/planner/Planner.js +591 -0
  189. package/lib/services/agent/planner/overlaySanity.d.ts +7 -0
  190. package/lib/services/agent/planner/overlaySanity.d.ts.map +1 -0
  191. package/lib/services/agent/planner/overlaySanity.js +86 -0
  192. package/lib/services/agent/planner/promptSections.d.ts +25 -0
  193. package/lib/services/agent/planner/promptSections.d.ts.map +1 -0
  194. package/lib/services/agent/planner/promptSections.js +174 -0
  195. package/lib/services/agent/planner/repair.d.ts +16 -0
  196. package/lib/services/agent/planner/repair.d.ts.map +1 -0
  197. package/lib/services/agent/planner/repair.js +51 -0
  198. package/lib/services/agent/planner/structuralRules.d.ts +10 -0
  199. package/lib/services/agent/planner/structuralRules.d.ts.map +1 -0
  200. package/lib/services/agent/planner/structuralRules.js +111 -0
  201. package/lib/services/agent/planner/validators.d.ts +65 -0
  202. package/lib/services/agent/planner/validators.d.ts.map +1 -0
  203. package/lib/services/agent/planner/validators.js +284 -0
  204. package/lib/services/agent/planner.d.ts +3 -0
  205. package/lib/services/agent/planner.d.ts.map +1 -0
  206. package/lib/services/agent/planner.js +14 -0
  207. package/lib/services/agent/providerFallback/chains.d.ts +100 -0
  208. package/lib/services/agent/providerFallback/chains.d.ts.map +1 -0
  209. package/lib/services/agent/providerFallback/chains.js +198 -0
  210. package/lib/services/agent/providerFallback/classifier.d.ts +36 -0
  211. package/lib/services/agent/providerFallback/classifier.d.ts.map +1 -0
  212. package/lib/services/agent/providerFallback/classifier.js +103 -0
  213. package/lib/services/agent/providerFallback/index.d.ts +4 -0
  214. package/lib/services/agent/providerFallback/index.d.ts.map +1 -0
  215. package/lib/services/agent/providerFallback/index.js +19 -0
  216. package/lib/services/agent/providerFallback/withFallback.d.ts +60 -0
  217. package/lib/services/agent/providerFallback/withFallback.d.ts.map +1 -0
  218. package/lib/services/agent/providerFallback/withFallback.js +93 -0
  219. package/lib/services/agent/providerTaskCache.d.ts +50 -0
  220. package/lib/services/agent/providerTaskCache.d.ts.map +1 -0
  221. package/lib/services/agent/providerTaskCache.js +98 -0
  222. package/lib/services/agent/qualityGate.d.ts +82 -0
  223. package/lib/services/agent/qualityGate.d.ts.map +1 -0
  224. package/lib/services/agent/qualityGate.js +232 -0
  225. package/lib/services/agent/referenceImageRenderer.d.ts +37 -0
  226. package/lib/services/agent/referenceImageRenderer.d.ts.map +1 -0
  227. package/lib/services/agent/referenceImageRenderer.js +92 -0
  228. package/lib/services/agent/regenCore.d.ts +60 -0
  229. package/lib/services/agent/regenCore.d.ts.map +1 -0
  230. package/lib/services/agent/regenCore.js +487 -0
  231. package/lib/services/agent/runHelpers.d.ts +44 -0
  232. package/lib/services/agent/runHelpers.d.ts.map +1 -0
  233. package/lib/services/agent/runHelpers.js +196 -0
  234. package/lib/services/agent/sceneLayoutVision.d.ts +90 -0
  235. package/lib/services/agent/sceneLayoutVision.d.ts.map +1 -0
  236. package/lib/services/agent/sceneLayoutVision.js +212 -0
  237. package/lib/services/agent/stitchedVideoCritic.d.ts +136 -0
  238. package/lib/services/agent/stitchedVideoCritic.d.ts.map +1 -0
  239. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +26 -0
  240. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +1 -0
  241. package/lib/services/agent/stitchedVideoCritic.gemini.js +198 -0
  242. package/lib/services/agent/stitchedVideoCritic.js +162 -0
  243. package/lib/services/agent/taskPoller.d.ts +65 -0
  244. package/lib/services/agent/taskPoller.d.ts.map +1 -0
  245. package/lib/services/agent/taskPoller.js +176 -0
  246. package/lib/services/agent/textOverlayStyles.d.ts +60 -0
  247. package/lib/services/agent/textOverlayStyles.d.ts.map +1 -0
  248. package/lib/services/agent/textOverlayStyles.js +174 -0
  249. package/lib/services/agent/toolRegistry.d.ts +73 -0
  250. package/lib/services/agent/toolRegistry.d.ts.map +1 -0
  251. package/lib/services/agent/toolRegistry.js +95 -0
  252. package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
  253. package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
  254. package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
  255. package/lib/services/agent/tools/animateImage.tool.d.ts +24 -0
  256. package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
  257. package/lib/services/agent/tools/animateImage.tool.js +115 -0
  258. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +32 -0
  259. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
  260. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +135 -0
  261. package/lib/services/agent/tools/composeScene.tool.d.ts +978 -0
  262. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
  263. package/lib/services/agent/tools/composeScene.tool.js +90 -0
  264. package/lib/services/agent/tools/estimateCost.tool.d.ts +352 -0
  265. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
  266. package/lib/services/agent/tools/estimateCost.tool.js +62 -0
  267. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
  268. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
  269. package/lib/services/agent/tools/generateAvatarVideo.tool.js +143 -0
  270. package/lib/services/agent/tools/generateCaptions.tool.d.ts +42 -0
  271. package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +1 -0
  272. package/lib/services/agent/tools/generateCaptions.tool.js +196 -0
  273. package/lib/services/agent/tools/generateImage.tool.d.ts +74 -0
  274. package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
  275. package/lib/services/agent/tools/generateImage.tool.js +206 -0
  276. package/lib/services/agent/tools/generateVideo.tool.d.ts +31 -0
  277. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
  278. package/lib/services/agent/tools/generateVideo.tool.js +153 -0
  279. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +44 -0
  280. package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
  281. package/lib/services/agent/tools/generateVoiceover.tool.js +206 -0
  282. package/lib/services/agent/tools/index.d.ts +20 -0
  283. package/lib/services/agent/tools/index.d.ts.map +1 -0
  284. package/lib/services/agent/tools/index.js +35 -0
  285. package/lib/services/agent/tools/planVideo.tool.d.ts +343 -0
  286. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
  287. package/lib/services/agent/tools/planVideo.tool.js +46 -0
  288. package/lib/services/agent/tools/render.tool.d.ts +367 -0
  289. package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
  290. package/lib/services/agent/tools/render.tool.js +48 -0
  291. package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
  292. package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
  293. package/lib/services/agent/tools/searchMusic.tool.js +74 -0
  294. package/lib/services/agent/tools/searchStock.tool.d.ts +41 -0
  295. package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
  296. package/lib/services/agent/tools/searchStock.tool.js +314 -0
  297. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
  298. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
  299. package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
  300. package/lib/services/agent/ttsDuration.d.ts +29 -0
  301. package/lib/services/agent/ttsDuration.d.ts.map +1 -0
  302. package/lib/services/agent/ttsDuration.js +60 -0
  303. package/lib/services/aiGen/aiGenFactory.service.d.ts +21 -1
  304. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  305. package/lib/services/aiGen/aiGenFactory.service.js +84 -21
  306. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
  307. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
  308. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
  309. package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
  310. package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
  311. package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
  312. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
  313. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
  314. package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
  315. package/lib/services/aiGen/helpers.d.ts.map +1 -1
  316. package/lib/services/aiGen/helpers.js +10 -0
  317. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +14 -3
  318. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
  319. package/lib/services/aiGen/providers/alibaba/alibaba.js +155 -22
  320. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +22 -4
  321. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
  322. package/lib/services/aiGen/providers/baseAiGenProvider.service.js +32 -0
  323. package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
  324. package/lib/services/aiGen/providers/bytedance/bytedance.service.js +13 -13
  325. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
  326. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
  327. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +102 -0
  328. package/lib/services/aiGen/providers/fal/falImage.service.d.ts +15 -0
  329. package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
  330. package/lib/services/aiGen/providers/fal/falImage.service.js +141 -0
  331. package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
  332. package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
  333. package/lib/services/aiGen/providers/fal/index.js +17 -0
  334. package/lib/services/aiGen/providers/google/google.service.d.ts +11 -2
  335. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  336. package/lib/services/aiGen/providers/google/google.service.js +245 -28
  337. package/lib/services/aiGen/providers/index.d.ts +3 -0
  338. package/lib/services/aiGen/providers/index.d.ts.map +1 -1
  339. package/lib/services/aiGen/providers/index.js +3 -0
  340. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
  341. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
  342. package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
  343. package/lib/services/aiGen/providers/kling/index.d.ts +1 -0
  344. package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
  345. package/lib/services/aiGen/providers/kling/index.js +1 -0
  346. package/lib/services/aiGen/providers/kling/kling.service.d.ts +12 -1
  347. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  348. package/lib/services/aiGen/providers/kling/kling.service.js +357 -26
  349. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +21 -0
  350. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +1 -0
  351. package/lib/services/aiGen/providers/kling/klingImage.service.js +208 -0
  352. package/lib/services/aiGen/providers/kling/types.d.ts +105 -0
  353. package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
  354. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +15 -2
  355. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
  356. package/lib/services/aiGen/providers/minimax/minimax.service.js +127 -1
  357. package/lib/services/aiGen/providers/minimax/types.d.ts +10 -1
  358. package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
  359. package/lib/services/aiGen/providers/openai/openai.service.d.ts +8 -2
  360. package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
  361. package/lib/services/aiGen/providers/openai/openai.service.js +184 -7
  362. package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
  363. package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
  364. package/lib/services/aiGen/providers/{azure → pexels}/index.js +1 -1
  365. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
  366. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
  367. package/lib/services/aiGen/providers/pexels/pexels.service.js +150 -0
  368. package/lib/services/aiGen/providers/pixabay/index.d.ts +2 -0
  369. package/lib/services/aiGen/providers/pixabay/index.d.ts.map +1 -0
  370. package/lib/services/aiGen/providers/pixabay/index.js +17 -0
  371. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +12 -0
  372. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +1 -0
  373. package/lib/services/aiGen/providers/pixabay/pixabay.service.js +156 -0
  374. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  375. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +125 -2
  376. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
  377. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
  378. package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
  379. package/lib/services/aiGen/providers/runway/runway.service.d.ts +12 -2
  380. package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
  381. package/lib/services/aiGen/providers/runway/runway.service.js +224 -21
  382. package/lib/services/aiGen/providers/types.d.ts +263 -6
  383. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  384. package/lib/services/aiGen/providers/unsplash/index.d.ts +2 -0
  385. package/lib/services/aiGen/providers/unsplash/index.d.ts.map +1 -0
  386. package/lib/services/aiGen/providers/unsplash/index.js +17 -0
  387. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +16 -0
  388. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +1 -0
  389. package/lib/services/aiGen/providers/unsplash/unsplash.service.js +131 -0
  390. package/lib/services/analytics.service.js +2 -4
  391. package/lib/services/apiUsageCounter.service.d.ts +20 -0
  392. package/lib/services/apiUsageCounter.service.d.ts.map +1 -0
  393. package/lib/services/apiUsageCounter.service.js +84 -0
  394. package/lib/services/asr/assemblyai.service.d.ts +72 -0
  395. package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
  396. package/lib/services/asr/assemblyai.service.js +89 -0
  397. package/lib/services/asr/index.d.ts +3 -0
  398. package/lib/services/asr/index.d.ts.map +1 -0
  399. package/lib/services/asr/index.js +18 -0
  400. package/lib/services/asr/whisper.service.d.ts +18 -0
  401. package/lib/services/asr/whisper.service.d.ts.map +1 -0
  402. package/lib/services/asr/whisper.service.js +151 -0
  403. package/lib/services/assetCache.service.d.ts +54 -0
  404. package/lib/services/assetCache.service.d.ts.map +1 -0
  405. package/lib/services/assetCache.service.js +109 -0
  406. package/lib/services/audioAnalysis/index.d.ts +2 -0
  407. package/lib/services/audioAnalysis/index.d.ts.map +1 -0
  408. package/lib/services/audioAnalysis/index.js +17 -0
  409. package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
  410. package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
  411. package/lib/services/audioAnalysis/onsetDetection.service.js +140 -0
  412. package/lib/services/bullmq.service.d.ts +6 -1
  413. package/lib/services/bullmq.service.d.ts.map +1 -1
  414. package/lib/services/bullmq.service.js +62 -14
  415. package/lib/services/credit.service.d.ts.map +1 -1
  416. package/lib/services/credit.service.js +45 -7
  417. package/lib/services/credits/pricing.d.ts +58 -0
  418. package/lib/services/credits/pricing.d.ts.map +1 -0
  419. package/lib/services/credits/pricing.js +111 -0
  420. package/lib/services/editor/designToProject.d.ts +75 -0
  421. package/lib/services/editor/designToProject.d.ts.map +1 -0
  422. package/lib/services/editor/designToProject.js +295 -0
  423. package/lib/services/editor/planToProject.d.ts +84 -0
  424. package/lib/services/editor/planToProject.d.ts.map +1 -0
  425. package/lib/services/editor/planToProject.js +395 -0
  426. package/lib/services/editor/projectToDesign.d.ts +4 -0
  427. package/lib/services/editor/projectToDesign.d.ts.map +1 -0
  428. package/lib/services/editor/projectToDesign.js +186 -0
  429. package/lib/services/firestore.service.d.ts +17 -0
  430. package/lib/services/firestore.service.d.ts.map +1 -1
  431. package/lib/services/firestore.service.js +30 -0
  432. package/lib/services/gcp/index.d.ts +1 -0
  433. package/lib/services/gcp/index.d.ts.map +1 -1
  434. package/lib/services/gcp/index.js +1 -0
  435. package/lib/services/gcp/uploadAudioBuffer.d.ts +13 -0
  436. package/lib/services/gcp/uploadAudioBuffer.d.ts.map +1 -0
  437. package/lib/services/gcp/uploadAudioBuffer.js +28 -0
  438. package/lib/services/index.d.ts +13 -0
  439. package/lib/services/index.d.ts.map +1 -1
  440. package/lib/services/index.js +13 -0
  441. package/lib/services/musicGen/index.d.ts +6 -0
  442. package/lib/services/musicGen/index.d.ts.map +1 -0
  443. package/lib/services/musicGen/index.js +26 -0
  444. package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
  445. package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
  446. package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
  447. package/lib/services/musicGen/providers/curated.service.d.ts +24 -0
  448. package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
  449. package/lib/services/musicGen/providers/curated.service.js +173 -0
  450. package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
  451. package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
  452. package/lib/services/musicGen/providers/jamendo.service.js +113 -0
  453. package/lib/services/musicGen/providers/mubert.service.d.ts +10 -0
  454. package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
  455. package/lib/services/musicGen/providers/mubert.service.js +128 -0
  456. package/lib/services/musicGen/types.d.ts +46 -0
  457. package/lib/services/musicGen/types.d.ts.map +1 -0
  458. package/lib/services/musicGen/types.js +10 -0
  459. package/lib/services/notification.service.d.ts +22 -0
  460. package/lib/services/notification.service.d.ts.map +1 -0
  461. package/lib/services/notification.service.js +76 -0
  462. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +78 -0
  463. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -0
  464. package/lib/services/rateLimiter/distributedRateLimiter.service.js +269 -0
  465. package/lib/services/rateLimiter/index.d.ts +2 -0
  466. package/lib/services/rateLimiter/index.d.ts.map +1 -0
  467. package/lib/services/rateLimiter/index.js +17 -0
  468. package/lib/services/redis.service.d.ts +9 -0
  469. package/lib/services/redis.service.d.ts.map +1 -1
  470. package/lib/services/redis.service.js +20 -11
  471. package/lib/services/redisOptions.d.ts +22 -0
  472. package/lib/services/redisOptions.d.ts.map +1 -0
  473. package/lib/services/redisOptions.js +51 -0
  474. package/lib/services/tts/index.d.ts +2 -0
  475. package/lib/services/tts/index.d.ts.map +1 -1
  476. package/lib/services/tts/index.js +2 -0
  477. package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
  478. package/lib/services/tts/providers/elevenlabs.service.js +91 -24
  479. package/lib/services/tts/providers/minimax.service.d.ts +14 -0
  480. package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
  481. package/lib/services/tts/providers/minimax.service.js +78 -0
  482. package/lib/services/tts/providers/openai.service.d.ts +14 -0
  483. package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
  484. package/lib/services/tts/providers/openai.service.js +73 -0
  485. package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
  486. package/lib/services/tts/ttsFactory.service.js +6 -0
  487. package/lib/services/tts/types.d.ts +33 -0
  488. package/lib/services/tts/types.d.ts.map +1 -1
  489. package/lib/utils/errors.d.ts +8 -0
  490. package/lib/utils/errors.d.ts.map +1 -1
  491. package/lib/utils/errors.js +8 -0
  492. package/lib/utils/helpers.d.ts +13 -0
  493. package/lib/utils/helpers.d.ts.map +1 -1
  494. package/lib/utils/helpers.js +48 -11
  495. package/lib/utils/logger.d.ts.map +1 -1
  496. package/lib/utils/logger.js +37 -1
  497. package/package.json +5 -1
  498. package/lib/services/aiGen/providers/azure/azure.service.d.ts +0 -14
  499. package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +0 -1
  500. package/lib/services/aiGen/providers/azure/azure.service.js +0 -108
  501. package/lib/services/aiGen/providers/azure/index.d.ts +0 -2
  502. package/lib/services/aiGen/providers/azure/index.d.ts.map +0 -1
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchStockTool = void 0;
4
+ exports._clearStockDedupForTesting = _clearStockDedupForTesting;
5
+ const zod_1 = require("zod");
6
+ const logger_1 = require("../../../utils/logger");
7
+ const pexels_service_1 = require("../../aiGen/providers/pexels/pexels.service");
8
+ const pixabay_service_1 = require("../../aiGen/providers/pixabay/pixabay.service");
9
+ const unsplash_service_1 = require("../../aiGen/providers/unsplash/unsplash.service");
10
+ const assetCache_service_1 = require("../../assetCache.service");
11
+ const toolRegistry_1 = require("../toolRegistry");
12
+ /**
13
+ * Persistent stock-search cache. Pexels is free but slow (~300–800ms) and
14
+ * rate-limited; bulk runs (100 variants of one template) hammer identical
15
+ * queries. A 30-min TTL is safe — Pexels' library moves slowly enough that
16
+ * fresher results aren't worth the extra hops, and any agent run completes
17
+ * well within the window. Persistent (Firestore) so cache survives across
18
+ * worker instances and restarts — in-process maps were per-pod only and
19
+ * useless under autoscale.
20
+ */
21
+ const SEARCH_CACHE_TTL_MS = 30 * 60 * 1000;
22
+ /**
23
+ * Per-provider top-K we ask each provider for AND inspect during de-dup. The
24
+ * symptom we're fixing: when two scenes have semantically-similar queries
25
+ * (e.g. "sky violet" vs "violet science") Pexels returns the same #1 hit for
26
+ * both, and the stitched video shows the same 8s clip twice. By pulling 5
27
+ * candidates per provider we have headroom to skip already-used URLs before
28
+ * falling to the next provider in the cascade.
29
+ */
30
+ const PROVIDER_TOP_K = 5;
31
+ /**
32
+ * Cross-scene de-dup state — keyed by agent run id, holds every visual URL the
33
+ * cascade has already handed out within that run. The Set is mutated as scenes
34
+ * pick candidates and consulted on every subsequent pick so two scenes in the
35
+ * same run never get the same URL when an unused alternative exists.
36
+ *
37
+ * In-memory (per-pod) is fine: the executor runs a single agent run within a
38
+ * single worker process, so all of its scene calls hit the same Map. We
39
+ * deliberately do NOT persist across pods — different runs are independent,
40
+ * and a single agent run does not migrate workers mid-flight.
41
+ */
42
+ const RUN_DEDUP_TTL_MS = 30 * 60 * 1000;
43
+ const runUsedUrls = new Map();
44
+ /**
45
+ * Lazy GC: every time we touch the map, drop entries older than the TTL. Runs
46
+ * complete in minutes, so the map should stay tiny — this is belt-and-braces
47
+ * for crashed runs that never explicitly clear their entry.
48
+ */
49
+ function pruneRunDedup(now) {
50
+ for (const [runId, entry] of runUsedUrls) {
51
+ if (now - entry.createdAt > RUN_DEDUP_TTL_MS) {
52
+ runUsedUrls.delete(runId);
53
+ }
54
+ }
55
+ }
56
+ function getOrCreateUsedSet(runId) {
57
+ const now = Date.now();
58
+ pruneRunDedup(now);
59
+ let entry = runUsedUrls.get(runId);
60
+ if (!entry) {
61
+ entry = { urls: new Set(), createdAt: now };
62
+ runUsedUrls.set(runId, entry);
63
+ }
64
+ return entry.urls;
65
+ }
66
+ /** Test-only: clear all per-run dedup state. */
67
+ function _clearStockDedupForTesting() {
68
+ runUsedUrls.clear();
69
+ }
70
+ const InputSchema = zod_1.z.object({
71
+ query: zod_1.z
72
+ .string()
73
+ .min(1)
74
+ .describe("Plain-English search terms. Be specific — 'cinematic golden-hour ocean cliff drone' beats 'ocean'."),
75
+ kind: zod_1.z
76
+ .enum(["video", "image"])
77
+ .describe("Asset kind. Music search is not yet supported."),
78
+ aspectRatio: zod_1.z
79
+ .enum(["9:16", "1:1", "4:5", "16:9"])
80
+ .optional()
81
+ .describe("Target aspect for filtering by orientation."),
82
+ minDurationSec: zod_1.z.number().positive().optional(),
83
+ maxDurationSec: zod_1.z.number().positive().optional(),
84
+ perPage: zod_1.z
85
+ .number()
86
+ .int()
87
+ .min(1)
88
+ .max(80)
89
+ .default(15)
90
+ .describe("Page size; capped at 80."),
91
+ });
92
+ const OutputSchema = zod_1.z.object({
93
+ assets: zod_1.z.array(zod_1.z.object({
94
+ id: zod_1.z.string(),
95
+ url: zod_1.z.string().url(),
96
+ thumbnailUrl: zod_1.z.string().url().optional(),
97
+ width: zod_1.z.number().optional(),
98
+ height: zod_1.z.number().optional(),
99
+ durationSec: zod_1.z.number().optional(),
100
+ source: zod_1.z.string(),
101
+ attribution: zod_1.z
102
+ .object({ name: zod_1.z.string(), url: zod_1.z.string().url().optional() })
103
+ .optional(),
104
+ trackingUrl: zod_1.z
105
+ .string()
106
+ .url()
107
+ .optional()
108
+ .describe("Provider-required download-tracking endpoint. Render path must GET it when this asset is committed to the final video (Unsplash ToS)."),
109
+ })),
110
+ totalAvailable: zod_1.z.number().optional(),
111
+ /**
112
+ * Ordered list of provider names the cascade actually attempted (whether
113
+ * skipped, errored, or succeeded). Mirrored into SceneAssetResult so
114
+ * post-mortems can see "Pexels was tried but rate-limited, Pixabay served".
115
+ *
116
+ * Annotated entries the cascade may add:
117
+ * "<name>" — provider succeeded with an un-used pick
118
+ * "<name>:dedup-skipped:<n>" — provider returned candidates but all <n>
119
+ * inspected were already used this run
120
+ * "<name>:empty" — provider returned 0 results
121
+ * "<name>:error" — provider threw
122
+ * "dedup-exhausted-accepted-repeat" — every provider's top-K was used;
123
+ * we accepted a repeat to avoid a hard
124
+ * failure (logged warn separately)
125
+ */
126
+ attemptedProviders: zod_1.z.array(zod_1.z.string()).optional(),
127
+ });
128
+ function buildProviderChain(kind) {
129
+ const pexels = new pexels_service_1.PexelsProviderService();
130
+ const pixabay = new pixabay_service_1.PixabayProviderService();
131
+ const unsplash = new unsplash_service_1.UnsplashProviderService();
132
+ const chain = [
133
+ {
134
+ name: "pexels",
135
+ available: () => Boolean(process.env.PEXELS_API_KEY),
136
+ supports: () => true, // images + videos
137
+ search: (p) => pexels.searchStock(p),
138
+ },
139
+ {
140
+ name: "pixabay",
141
+ available: () => Boolean(process.env.PIXABAY_API_KEY),
142
+ supports: () => true, // images + videos
143
+ search: (p) => pixabay.searchStock(p),
144
+ },
145
+ {
146
+ name: "unsplash",
147
+ available: () => Boolean(process.env.UNSPLASH_ACCESS_KEY),
148
+ supports: (k) => k === "image", // photos-only
149
+ search: (p) => unsplash.searchStock(p),
150
+ },
151
+ ];
152
+ return chain.filter((link) => link.supports(kind));
153
+ }
154
+ /**
155
+ * Wrap a provider call with the Firestore cache lookup. We cache the FULL
156
+ * top-K candidate list per (provider, query, params) — not just the chosen
157
+ * URL — so a later scene with the same query but already-used #1 can still
158
+ * pull #2/#3/... from cache without re-hitting the API.
159
+ */
160
+ async function searchProviderWithCache(link, params) {
161
+ const cacheParts = {
162
+ provider: link.name,
163
+ kind: "stock-search",
164
+ input: {
165
+ query: params.query,
166
+ kind: params.kind,
167
+ aspectRatio: params.aspectRatio,
168
+ minDurationSec: params.minDurationSec,
169
+ maxDurationSec: params.maxDurationSec,
170
+ perPage: params.perPage,
171
+ },
172
+ };
173
+ const hit = await assetCache_service_1.RawAssetCacheService.lookup(cacheParts);
174
+ if (hit)
175
+ return hit;
176
+ const fresh = await link.search(params);
177
+ if (fresh.assets.length > 0) {
178
+ void assetCache_service_1.RawAssetCacheService.store(cacheParts, fresh, {
179
+ ttlMs: SEARCH_CACHE_TTL_MS,
180
+ }).catch(() => undefined);
181
+ }
182
+ return fresh;
183
+ }
184
+ exports.searchStockTool = {
185
+ name: "search_stock",
186
+ description: [
187
+ "Search free stock video (Pexels → Pixabay) or image (Pexels → Pixabay → Unsplash)",
188
+ "footage. Tries each provider in order; if one is misconfigured / rate-limited /",
189
+ "returns zero results, falls through to the next so the agent always gets a usable",
190
+ "candidate when one exists somewhere.",
191
+ "Use when the scene needs filler / b-roll / generic visual context that doesn't",
192
+ "require AI generation — this is the cheapest option (T0 tier, ~free).",
193
+ "Do NOT use for: hero shots, product reveals, or branded subjects (use generate_image",
194
+ "or generate_video instead).",
195
+ "Examples:",
196
+ ' { query: "person typing on laptop close-up", kind: "video", aspectRatio: "9:16" }',
197
+ ' { query: "rolling green hills sunset", kind: "image", aspectRatio: "16:9" }',
198
+ ].join(" "),
199
+ inputSchema: InputSchema,
200
+ outputSchema: OutputSchema,
201
+ estimateCost: async () => 0,
202
+ handler: async (input, ctx) => {
203
+ const providers = buildProviderChain(input.kind);
204
+ const attemptedProviders = [];
205
+ const usedUrls = getOrCreateUsedSet(ctx.agentRunId);
206
+ // Always ask each provider for at least PROVIDER_TOP_K candidates so we
207
+ // have room to skip used URLs without paging again. Honour the caller's
208
+ // explicit perPage if it's larger (planner sometimes wants 15 for variety).
209
+ const perPage = Math.max(input.perPage ?? PROVIDER_TOP_K, PROVIDER_TOP_K);
210
+ const searchParams = {
211
+ query: input.query,
212
+ kind: input.kind,
213
+ aspectRatio: input.aspectRatio,
214
+ minDurationSec: input.minDurationSec,
215
+ maxDurationSec: input.maxDurationSec,
216
+ perPage,
217
+ };
218
+ // Track the first non-empty candidate we saw, so if EVERY provider's
219
+ // top-K is already used we can fall back to a repeat rather than hard-fail.
220
+ // "Repeat is better than no scene" is the explicit product call.
221
+ let firstSeenCandidate = null;
222
+ for (const link of providers) {
223
+ if (!link.available()) {
224
+ // Skip silently — keep the log so ops can spot a misconfigured deploy
225
+ // ("why is the cascade always landing on Unsplash?").
226
+ logger_1.logger.info(`search_stock: skipping ${link.name} — env key missing`, { provider: link.name, kind: input.kind });
227
+ continue;
228
+ }
229
+ let result;
230
+ try {
231
+ result = await searchProviderWithCache(link, searchParams);
232
+ }
233
+ catch (err) {
234
+ // Log + continue to the next provider. The cascade exhausting is the
235
+ // only hard failure; an individual provider erroring is normal (rate
236
+ // limit, timeout, transient 5xx).
237
+ const message = err instanceof Error ? err.message : String(err);
238
+ logger_1.logger.warn(`search_stock: ${link.name} threw, falling through`, {
239
+ provider: link.name,
240
+ query: input.query,
241
+ kind: input.kind,
242
+ error: message,
243
+ });
244
+ attemptedProviders.push(`${link.name}:error`);
245
+ continue;
246
+ }
247
+ if (result.assets.length === 0) {
248
+ logger_1.logger.info(`search_stock: ${link.name} returned 0 results, falling through`, { provider: link.name, query: input.query, kind: input.kind });
249
+ attemptedProviders.push(`${link.name}:empty`);
250
+ continue;
251
+ }
252
+ // Inspect at most PROVIDER_TOP_K of this provider's candidates.
253
+ const candidates = result.assets.slice(0, PROVIDER_TOP_K);
254
+ // Remember the very first candidate the cascade saw, in case every
255
+ // provider gets dedup-skipped and we have to accept a repeat.
256
+ if (!firstSeenCandidate) {
257
+ firstSeenCandidate = {
258
+ asset: candidates[0],
259
+ totalAvailable: result.totalAvailable,
260
+ };
261
+ }
262
+ const pick = candidates.find((a) => !usedUrls.has(a.url));
263
+ if (pick) {
264
+ usedUrls.add(pick.url);
265
+ attemptedProviders.push(link.name);
266
+ return {
267
+ assets: [pick],
268
+ totalAvailable: result.totalAvailable,
269
+ attemptedProviders,
270
+ };
271
+ }
272
+ // All top-K from this provider were already used this run. Annotate +
273
+ // fall through to the next provider.
274
+ logger_1.logger.info(`search_stock: ${link.name} top-${candidates.length} all already used this run, falling through`, {
275
+ provider: link.name,
276
+ query: input.query,
277
+ kind: input.kind,
278
+ agentRunId: ctx.agentRunId,
279
+ dedupSkipped: candidates.length,
280
+ });
281
+ attemptedProviders.push(`${link.name}:dedup-skipped:${candidates.length}`);
282
+ }
283
+ // Every provider was either unavailable, errored, empty, or dedup-skipped.
284
+ // If we saw at least one candidate anywhere, accept that repeat rather
285
+ // than fail the scene — the product call is "duplicate visual beats a
286
+ // missing scene". Surface the situation loudly so ops can audit.
287
+ if (firstSeenCandidate) {
288
+ logger_1.logger.warn("search_stock: dedup exhausted across cascade — accepting a repeat", {
289
+ query: input.query,
290
+ kind: input.kind,
291
+ agentRunId: ctx.agentRunId,
292
+ attemptedProviders,
293
+ repeatedUrl: firstSeenCandidate.asset.url,
294
+ });
295
+ // Don't add to usedUrls — it's already there by definition, and the
296
+ // bookkeeping invariant is "every URL handed out has been added once".
297
+ attemptedProviders.push("dedup-exhausted-accepted-repeat");
298
+ return {
299
+ assets: [firstSeenCandidate.asset],
300
+ totalAvailable: firstSeenCandidate.totalAvailable,
301
+ attemptedProviders,
302
+ };
303
+ }
304
+ // Truly nothing — every provider was unavailable / errored / empty. Return
305
+ // an empty result so the executor can raise NO_STOCK_RESULTS with full
306
+ // attemptedProviders context.
307
+ return {
308
+ assets: [],
309
+ totalAvailable: 0,
310
+ attemptedProviders,
311
+ };
312
+ },
313
+ };
314
+ (0, toolRegistry_1.registerTool)(exports.searchStockTool);
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ import { ToolDefinition } from "../toolRegistry";
3
+ /**
4
+ * Per-user asset library search — massive cost saver and consistency boost
5
+ * for serial creators. Looks across previously generated images, voiceovers,
6
+ * stock pulls, and uploads owned by the requesting user.
7
+ *
8
+ * The actual library backing (Firestore + GCS index, vector embeddings for
9
+ * semantic search) is host-side; tool layer accepts an injected searcher.
10
+ */
11
+ export interface UserLibraryAsset {
12
+ id: string;
13
+ kind: "image" | "video" | "audio" | "stock-image" | "stock-video";
14
+ url: string;
15
+ prompt?: string;
16
+ width?: number;
17
+ height?: number;
18
+ durationMs?: number;
19
+ createdAt: string;
20
+ }
21
+ export type UserLibrarySearchFn = (params: {
22
+ userId: string;
23
+ query: string;
24
+ kind?: UserLibraryAsset["kind"];
25
+ limit: number;
26
+ }) => Promise<UserLibraryAsset[]>;
27
+ export declare function setUserLibrarySearch(fn: UserLibrarySearchFn): void;
28
+ declare const InputSchema: z.ZodObject<{
29
+ query: z.ZodString;
30
+ kind: z.ZodOptional<z.ZodEnum<{
31
+ audio: "audio";
32
+ image: "image";
33
+ video: "video";
34
+ "stock-video": "stock-video";
35
+ "stock-image": "stock-image";
36
+ }>>;
37
+ limit: z.ZodDefault<z.ZodNumber>;
38
+ }, z.core.$strip>;
39
+ declare const OutputSchema: z.ZodObject<{
40
+ assets: z.ZodArray<z.ZodObject<{
41
+ id: z.ZodString;
42
+ kind: z.ZodEnum<{
43
+ audio: "audio";
44
+ image: "image";
45
+ video: "video";
46
+ "stock-video": "stock-video";
47
+ "stock-image": "stock-image";
48
+ }>;
49
+ url: z.ZodString;
50
+ prompt: z.ZodOptional<z.ZodString>;
51
+ width: z.ZodOptional<z.ZodNumber>;
52
+ height: z.ZodOptional<z.ZodNumber>;
53
+ durationMs: z.ZodOptional<z.ZodNumber>;
54
+ createdAt: z.ZodString;
55
+ }, z.core.$strip>>;
56
+ }, z.core.$strip>;
57
+ export declare const searchUserLibraryTool: ToolDefinition<typeof InputSchema, typeof OutputSchema>;
58
+ export {};
59
+ //# sourceMappingURL=searchUserLibrary.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUserLibrary.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/searchUserLibrary.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAGlC,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAElE;AAED,QAAA,MAAM,WAAW;;;;;;;;;;iBASf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;iBAahB,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,OAAO,WAAW,EAClB,OAAO,YAAY,CA2BpB,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchUserLibraryTool = void 0;
4
+ exports.setUserLibrarySearch = setUserLibrarySearch;
5
+ const zod_1 = require("zod");
6
+ const toolRegistry_1 = require("../toolRegistry");
7
+ let injectedSearch = null;
8
+ function setUserLibrarySearch(fn) {
9
+ injectedSearch = fn;
10
+ }
11
+ const InputSchema = zod_1.z.object({
12
+ query: zod_1.z
13
+ .string()
14
+ .min(1)
15
+ .describe("Free-text query — semantic match against asset prompts and tags."),
16
+ kind: zod_1.z
17
+ .enum(["image", "video", "audio", "stock-image", "stock-video"])
18
+ .optional(),
19
+ limit: zod_1.z.number().int().min(1).max(20).default(8),
20
+ });
21
+ const OutputSchema = zod_1.z.object({
22
+ assets: zod_1.z.array(zod_1.z.object({
23
+ id: zod_1.z.string(),
24
+ kind: zod_1.z.enum(["image", "video", "audio", "stock-image", "stock-video"]),
25
+ url: zod_1.z.string().url(),
26
+ prompt: zod_1.z.string().optional(),
27
+ width: zod_1.z.number().optional(),
28
+ height: zod_1.z.number().optional(),
29
+ durationMs: zod_1.z.number().optional(),
30
+ createdAt: zod_1.z.string(),
31
+ })),
32
+ });
33
+ exports.searchUserLibraryTool = {
34
+ name: "search_user_library",
35
+ description: [
36
+ "Search the requesting user's previously-generated/uploaded assets before",
37
+ "spending credits to make a new one. Always try this BEFORE generate_image",
38
+ "or search_stock when the brief calls for something the user has likely",
39
+ "produced before (their product photos, recurring characters, brand b-roll).",
40
+ "Returns ranked candidates; the agent picks the best fit by prompt/durationMs/aspect.",
41
+ ].join(" "),
42
+ inputSchema: InputSchema,
43
+ outputSchema: OutputSchema,
44
+ idempotent: true,
45
+ handler: async (input, ctx) => {
46
+ if (!injectedSearch) {
47
+ throw new Error("search_user_library: no searcher wired. Host must call setUserLibrarySearch() at boot.");
48
+ }
49
+ const assets = await injectedSearch({
50
+ userId: ctx.userId,
51
+ query: input.query,
52
+ kind: input.kind,
53
+ limit: input.limit,
54
+ });
55
+ return { assets };
56
+ },
57
+ };
58
+ (0, toolRegistry_1.registerTool)(exports.searchUserLibraryTool);
@@ -0,0 +1,29 @@
1
+ /**
2
+ * AG-28: TTS duration estimator.
3
+ *
4
+ * The planner has no idea how long the TTS engine will speak the line it just
5
+ * wrote, so it picks scene.durationMs based on visual pacing alone. When the
6
+ * VO turns out longer than the scene, the stitcher (or any video-bound mux)
7
+ * clips the voice mid-sentence — fatal for a UGC ad.
8
+ *
9
+ * This estimator gives the planner + executor a shared "how long will this
10
+ * speak?" math so both sides can budget around it BEFORE the TTS call. We
11
+ * deliberately err high (slower wpm) so we under-budget rather than over-
12
+ * budget — clipped audio is worse than slight dead-air.
13
+ *
14
+ * Calibration: ElevenLabs `eleven_multilingual_v2` at default speed reads
15
+ * conversational English at ~150-165 wpm. Slower-paced narration drops to
16
+ * ~120 wpm. We use 150 wpm as the default to match the casual/UGC voices
17
+ * the platform uses most.
18
+ */
19
+ /** Returns a conservative estimate (ms) of how long a TTS engine will speak `text`. */
20
+ export declare function estimateTtsMs(text: string, wpm?: number): number;
21
+ /**
22
+ * Inverse: max VO words that comfortably fit in `durationMs` at default speed.
23
+ * Used by the planner-prompt math hint so the LLM knows how long a line can be
24
+ * for a given scene without having to compute the formula itself.
25
+ */
26
+ export declare function maxVoWordsForMs(durationMs: number, wpm?: number): number;
27
+ export declare const TTS_DEFAULT_WPM = 150;
28
+ export declare const TTS_DEFAULT_WPS: number;
29
+ //# sourceMappingURL=ttsDuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttsDuration.d.ts","sourceRoot":"","sources":["../../../src/services/agent/ttsDuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,MAAM,CAkB7E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,MAAM,CAKrF;AAED,eAAO,MAAM,eAAe,MAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,QAAc,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * AG-28: TTS duration estimator.
4
+ *
5
+ * The planner has no idea how long the TTS engine will speak the line it just
6
+ * wrote, so it picks scene.durationMs based on visual pacing alone. When the
7
+ * VO turns out longer than the scene, the stitcher (or any video-bound mux)
8
+ * clips the voice mid-sentence — fatal for a UGC ad.
9
+ *
10
+ * This estimator gives the planner + executor a shared "how long will this
11
+ * speak?" math so both sides can budget around it BEFORE the TTS call. We
12
+ * deliberately err high (slower wpm) so we under-budget rather than over-
13
+ * budget — clipped audio is worse than slight dead-air.
14
+ *
15
+ * Calibration: ElevenLabs `eleven_multilingual_v2` at default speed reads
16
+ * conversational English at ~150-165 wpm. Slower-paced narration drops to
17
+ * ~120 wpm. We use 150 wpm as the default to match the casual/UGC voices
18
+ * the platform uses most.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.TTS_DEFAULT_WPS = exports.TTS_DEFAULT_WPM = void 0;
22
+ exports.estimateTtsMs = estimateTtsMs;
23
+ exports.maxVoWordsForMs = maxVoWordsForMs;
24
+ const DEFAULT_WPM = 150;
25
+ /** Words per second derived from default wpm. */
26
+ const DEFAULT_WPS = DEFAULT_WPM / 60;
27
+ /** Returns a conservative estimate (ms) of how long a TTS engine will speak `text`. */
28
+ function estimateTtsMs(text, wpm = DEFAULT_WPM) {
29
+ if (!text)
30
+ return 0;
31
+ const words = text
32
+ .trim()
33
+ .split(/\s+/)
34
+ .filter(Boolean).length;
35
+ if (words === 0)
36
+ return 0;
37
+ // Add per-clause pause budget: each comma/semicolon/em-dash adds ~150ms,
38
+ // each terminal punctuation (. ? !) adds ~250ms. These dominate short lines
39
+ // where the word count alone under-counts.
40
+ const punctPauseMs = (text.match(/[,;–—]/g)?.length ?? 0) * 150 +
41
+ (text.match(/[.?!]/g)?.length ?? 0) * 250;
42
+ const wps = wpm / 60;
43
+ const wordsMs = (words / wps) * 1000;
44
+ // Floor at 800ms — even one-syllable utterances ("Yes." "Wait.") need
45
+ // setup + decay time on real TTS.
46
+ return Math.max(800, Math.round(wordsMs + punctPauseMs));
47
+ }
48
+ /**
49
+ * Inverse: max VO words that comfortably fit in `durationMs` at default speed.
50
+ * Used by the planner-prompt math hint so the LLM knows how long a line can be
51
+ * for a given scene without having to compute the formula itself.
52
+ */
53
+ function maxVoWordsForMs(durationMs, wpm = DEFAULT_WPM) {
54
+ const wps = wpm / 60;
55
+ // Subtract a 250ms terminal-punctuation budget to be safe.
56
+ const usableMs = Math.max(0, durationMs - 250);
57
+ return Math.max(1, Math.floor((usableMs / 1000) * wps));
58
+ }
59
+ exports.TTS_DEFAULT_WPM = DEFAULT_WPM;
60
+ exports.TTS_DEFAULT_WPS = DEFAULT_WPS;
@@ -1,7 +1,27 @@
1
1
  import { BaseAiGenProviderService } from "./providers/baseAiGenProvider.service";
2
- import { ETextGenModels, EVideoGenModels, TAiGenModel } from "../../globals/aiModels";
2
+ import { EImageGenModelKey, EMusicGenModels, ESfxGenModels, ETextGenModels, EVideoGenModels, TAiGenModel } from "../../globals/aiModels";
3
3
  type AiGenServiceConstructor = new () => BaseAiGenProviderService;
4
4
  export declare const videoServicesMap: Record<EVideoGenModels, AiGenServiceConstructor>;
5
+ /**
6
+ * Image-gen factory. Each provider service implements `generateImage()` (sync;
7
+ * returns a URL or base64 in a single API roundtrip — no BullMQ worker needed).
8
+ *
9
+ * Kling now has a first-party image API (api-singapore.klingai.com, same JWT auth as video):
10
+ * /v1/images/omni-image → kling-image-o1, kling-v3-omni → KlingImageService
11
+ * /v1/images/generations → kling-v2-1-image → KlingImageService
12
+ * The legacy kling-kolors key still routes to AlibabaService (DashScope-hosted Kolors v2).
13
+ */
14
+ export declare const imageServicesMap: Record<EImageGenModelKey, AiGenServiceConstructor>;
15
+ /**
16
+ * Music-gen factory. Each provider service implements `generateMusic()` (sync —
17
+ * single API roundtrip, no BullMQ worker).
18
+ */
19
+ export declare const musicServicesMap: Record<EMusicGenModels, AiGenServiceConstructor>;
20
+ /**
21
+ * Sound-effects factory. Each provider service implements `generateSoundEffects()`
22
+ * (sync — single API roundtrip, no BullMQ worker).
23
+ */
24
+ export declare const sfxServicesMap: Record<ESfxGenModels, AiGenServiceConstructor>;
5
25
  export declare const textServicesMap: Record<ETextGenModels, AiGenServiceConstructor>;
6
26
  export declare function getAiGenProviderService(modelKey: TAiGenModel): BaseAiGenProviderService;
7
27
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAsDxB,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAY1B"}
1
+ {"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,iBAAiB,EAEjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAahC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAyDxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,iBAAiB,EACjB,uBAAuB,CAuCxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAMxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,aAAa,EACb,uBAAuB,CAGxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAkB1B"}