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
@@ -1,22 +1,98 @@
1
- import { ETextGenModels, EVideoGenModels } from "../../../globals/aiModels";
1
+ import { EImageGenModelKey, EMusicGenModels, ESfxGenModels, ETextGenModels, EVideoGenModels } from "../../../globals/aiModels";
2
2
  import { EVideoSceneStatus, TVideoJobTask } from "../../../globals/types";
3
3
  import { EVideoMode } from "../types";
4
+ import type { CameraControl } from "../canonicalAdapters/cameraControl.types";
5
+ import type { MultiShot } from "../canonicalAdapters/multiShot.types";
4
6
  export interface VideoGenerationParams {
5
7
  prompt?: string;
6
8
  modelKey: EVideoGenModels;
9
+ /** End-user ID — required by some providers for compliance tagging (e.g. ByteDance KYC). */
10
+ userId?: string;
7
11
  resolution?: string;
8
12
  aspectRatio?: string;
9
13
  dimensions?: string;
10
14
  duration?: number;
15
+ mode?: EVideoMode;
16
+ type?: "text-to-video" | "image-to-video" | "video-to-video";
17
+ /**
18
+ * Granular endpoint selector when a provider offers multiple sub-endpoints
19
+ * for the same model (e.g. Pixverse: text/image/transition/extend/effect;
20
+ * Sora 2: generate/extension/edit; Kling: t2v/i2v/motion-control). Falls
21
+ * back to inferring from `type` and presence of input fields.
22
+ */
23
+ endpoint?: "text-to-video" | "image-to-video" | "video-to-video" | "reference-to-video" | "extend" | "transition" | "effect" | "edit" | "extension" | "motion-control";
11
24
  inputVideoUrl?: string;
12
25
  inputImageUrl?: string;
26
+ /** Last-frame image (Veo lastFrame, Kling image_tail, Pixverse last_frame, Wan media[].last_frame). */
27
+ lastFrameImageUrl?: string;
28
+ /** Audio used to drive lip-sync / talking-head (Kling avatar, Wan S2V, Veo audio_url). */
13
29
  inputAudioUrl?: string;
14
- mode?: EVideoMode;
15
- type?: "text-to-video" | "image-to-video" | "video-to-video";
30
+ /**
31
+ * Duration of inputAudioUrl in milliseconds. Required for Kling lip-sync to set
32
+ * `sound_end_time` correctly (Kling rejects end_time > actual audio duration).
33
+ * If omitted, defaults to 60 000 ms (60 s max).
34
+ */
35
+ audioDurationMs?: number;
36
+ /**
37
+ * Reference images for character/scene/style consistency or character-to-video.
38
+ * Limits vary per provider (Veo 3.1 ≤3, Runway Gen-4 ≤3, ByteDance r2v ≤9, MiniMax S2V 1).
39
+ */
40
+ referenceImageUrls?: string[];
41
+ /** Reference videos (ByteDance r2v ≤3, combined 2–15s). */
42
+ referenceVideoUrls?: string[];
43
+ /** Reference audio clips (ByteDance r2v ≤3, combined ≤15s). */
44
+ referenceAudioUrls?: string[];
16
45
  audio?: boolean;
17
46
  negativePrompt?: string;
18
47
  multiClip?: boolean;
19
- userId?: string;
48
+ seed?: number;
49
+ /** CFG / guidance scale (Kling 0.0–1.0, default 0.5). */
50
+ cfgScale?: number;
51
+ /** Disable / replace native watermark (Pixverse `water_mark`, Wan `watermark`). */
52
+ watermark?: boolean;
53
+ /** Provider-side prompt rewrite toggle (MiniMax `prompt_optimizer`, Wan `prompt_extend`). */
54
+ promptOptimizer?: boolean;
55
+ /** MiniMax Hailuo fast-pretreatment flag. */
56
+ fastPretreatment?: boolean;
57
+ motionMode?: "normal" | "fast";
58
+ style?: string;
59
+ templateId?: string;
60
+ soundEffect?: {
61
+ switch: boolean;
62
+ content?: string;
63
+ };
64
+ lipSync?: {
65
+ switch: boolean;
66
+ ttsContent?: string;
67
+ ttsSpeakerId?: string;
68
+ };
69
+ thinkingType?: "enabled" | "disabled" | "auto";
70
+ cameraControl?: CameraControl;
71
+ /** Static-area lock mask (Kling I2V — area to keep still). */
72
+ staticMaskUrl?: string;
73
+ /** Motion-brush regions (Kling I2V, ≤6 regions, each `{maskUrl, trajectories}`). */
74
+ dynamicMasks?: Array<{
75
+ maskUrl: string;
76
+ trajectories: Array<{
77
+ x: number;
78
+ y: number;
79
+ }>;
80
+ }>;
81
+ multiShot?: MultiShot;
82
+ /** Google Veo / Imagen — `allow_all` (text only) / `allow_adult` / `dont_allow`. */
83
+ personGeneration?: "allow_all" | "allow_adult" | "dont_allow";
84
+ /** Runway content moderation. */
85
+ publicFigureThreshold?: "auto" | "low";
86
+ callbackUrl?: string;
87
+ /** Provider-side idempotency / dedupe key (Kling `external_task_id`, ByteDance `end_user_id`). */
88
+ externalTaskId?: string;
89
+ endUserId?: string;
90
+ /**
91
+ * Prior provider-internal task id, used by extend endpoints (Kling, Pixverse)
92
+ * which take their own task id rather than an arbitrary URL. Pair with
93
+ * `endpoint: "extend"`.
94
+ */
95
+ sourceTaskId?: string;
20
96
  }
21
97
  export interface VideoGenerationResult {
22
98
  status: EVideoSceneStatus.TRIGGERED;
@@ -41,17 +117,198 @@ export interface TextGenerationParams {
41
117
  export interface TextGenerationResult {
42
118
  text: string;
43
119
  }
120
+ /**
121
+ * Stock asset search (Pexels, Pixabay, Storyblocks).
122
+ * Returns ranked candidates rather than a single asset; the agent picks
123
+ * which one to use based on duration / aspect / visual fit.
124
+ */
125
+ export interface StockSearchParams {
126
+ query: string;
127
+ /** "video" | "image" | "music". */
128
+ kind: "video" | "image" | "music";
129
+ aspectRatio?: string;
130
+ /** Min duration in seconds (videos / music). */
131
+ minDurationSec?: number;
132
+ /** Max duration in seconds (videos / music). */
133
+ maxDurationSec?: number;
134
+ /** Page size. Provider-specific cap. */
135
+ perPage?: number;
136
+ /** Result page (1-based). Pexels uses this for pagination. */
137
+ page?: number;
138
+ /** Pexels: "large"|"medium"|"small" — minimum size bucket. */
139
+ size?: "large" | "medium" | "small";
140
+ /** Pexels images: dominant colour filter. */
141
+ color?: string;
142
+ /** Pexels: BCP-47 locale (e.g. "en-US", "ja-JP"). */
143
+ locale?: string;
144
+ /** Pexels videos: server-side min width/height. */
145
+ minWidth?: number;
146
+ minHeight?: number;
147
+ }
148
+ export interface StockAsset {
149
+ id: string;
150
+ url: string;
151
+ thumbnailUrl?: string;
152
+ width?: number;
153
+ height?: number;
154
+ durationSec?: number;
155
+ source: string;
156
+ attribution?: {
157
+ name: string;
158
+ url?: string;
159
+ };
160
+ /**
161
+ * Provider-specific "use" / download-tracking endpoint that MUST be hit
162
+ * once the asset is actually used in a render. Unsplash requires this per
163
+ * their API guidelines; ignored by providers that don't need it.
164
+ */
165
+ trackingUrl?: string;
166
+ }
167
+ export interface StockSearchResult {
168
+ assets: StockAsset[];
169
+ /** Total results available, if provider reports it. */
170
+ totalAvailable?: number;
171
+ }
172
+ /**
173
+ * Image generation (text-to-image, image-to-image, instruction edit).
174
+ * Used by T1 (image+motion) and T2 (image-to-video) tier strategies, and
175
+ * exposed as a first-class user feature via `/v1/image/generate` (provider-expansion branch).
176
+ */
177
+ export interface ImageGenerationParams {
178
+ prompt: string;
179
+ modelKey: EImageGenModelKey | string;
180
+ aspectRatio?: string;
181
+ dimensions?: string;
182
+ /** Single-image input (legacy; prefer `inputImageUrls` for new code). */
183
+ inputImageUrl?: string;
184
+ /**
185
+ * Multi-image references. Per-provider caps:
186
+ * OpenAI edits ≤16, Seedream edit ≤10, Nano Banana ≤14 (Banana 2/Pro),
187
+ * Qwen edit 1–3, MiniMax subject_reference 1.
188
+ */
189
+ inputImageUrls?: string[];
190
+ /** Pixel mask for OpenAI edits — PNG with alpha; transparent area = edit region. */
191
+ maskImageUrl?: string;
192
+ negativePrompt?: string;
193
+ seed?: number;
194
+ /** Number of images to generate (n / sampleCount / numberOfImages). */
195
+ numImages?: number;
196
+ /** OpenAI gpt-image quality tier. */
197
+ quality?: "low" | "medium" | "high" | "auto";
198
+ /** OpenAI gpt-image background — `transparent` not on gpt-image-2. */
199
+ background?: "opaque" | "transparent" | "auto";
200
+ outputFormat?: "png" | "jpeg" | "webp";
201
+ /** 0–100, jpeg/webp only. */
202
+ outputCompression?: number;
203
+ /** Google. */
204
+ personGeneration?: "allow_all" | "allow_adult" | "dont_allow";
205
+ /** MiniMax / Alibaba prompt-rewrite toggle. */
206
+ promptOptimizer?: boolean;
207
+ /** Wan / Qwen — disable native watermark. */
208
+ watermark?: boolean;
209
+ /** Seedream / Nano Banana — `auto_2K` | `2K` | `4K` | `1K` | `512px`. */
210
+ imageSize?: string;
211
+ responseFormat?: "url" | "base64";
212
+ safetyChecker?: boolean;
213
+ /** Idempotency key — provider returns same image for same key. */
214
+ idempotencyKey?: string;
215
+ }
216
+ export interface ImageGenerationResult {
217
+ /** First (or only) image. Convenience field; check `imageUrls` for multi-output. */
218
+ imageUrl: string;
219
+ /** All generated images when `numImages > 1`. */
220
+ imageUrls?: string[];
221
+ width?: number;
222
+ height?: number;
223
+ /** Seed actually used (echoed back when provider generated one). */
224
+ seed?: number;
225
+ /** Provider-side request id for tracing. */
226
+ providerRequestId?: string;
227
+ }
228
+ /**
229
+ * Music generation (text-to-music with optional lyrics + style reference).
230
+ * Sync — providers return audio in a single API roundtrip (no polling).
231
+ * Used at /v1/music/generate.
232
+ */
233
+ export interface MusicGenerationParams {
234
+ modelKey: EMusicGenModels;
235
+ /** Style / mood description (e.g. "uplifting cinematic orchestral"). */
236
+ prompt: string;
237
+ /** Lyrics with optional [verse]/[chorus] structure tags. */
238
+ lyrics?: string;
239
+ /** Style reference audio URL (provider must support it). */
240
+ referenceAudioUrl?: string;
241
+ /** Audio length in seconds (provider-clamped). */
242
+ duration?: number;
243
+ /** Output filename used when uploading to Storage (no extension). */
244
+ outputFilename: string;
245
+ /** Sample rate hint (Hz). MiniMax accepts 16000/24000/32000/44100. */
246
+ sampleRate?: number;
247
+ /** Bitrate hint (bps). MiniMax accepts 32000/64000/128000/256000. */
248
+ bitrate?: number;
249
+ }
250
+ export interface MusicGenerationResult {
251
+ /** Public Storage URL of the generated audio. */
252
+ audioUrl: string;
253
+ /** Audio length in seconds (when reported by provider). */
254
+ durationSec?: number;
255
+ /** Provider-side request id for tracing. */
256
+ providerRequestId?: string;
257
+ mimeType: string;
258
+ extension: string;
259
+ }
260
+ /**
261
+ * Sound-effects generation (text-to-sfx). Sync — providers return audio in
262
+ * a single API roundtrip. Used at /v1/sfx/generate.
263
+ */
264
+ export interface SfxGenerationParams {
265
+ modelKey: ESfxGenModels;
266
+ /** Description of the desired sound (e.g. "thunder rumble", "glass shatter"). */
267
+ prompt: string;
268
+ /** Output filename used when uploading to Storage (no extension). */
269
+ outputFilename: string;
270
+ /** Audio length in seconds (provider-clamped; ElevenLabs allows 0.5–22). */
271
+ durationSec?: number;
272
+ /** ElevenLabs prompt-influence 0–1 (higher = more literal interpretation). */
273
+ promptInfluence?: number;
274
+ /** ElevenLabs loop flag for seamless looping (default false). */
275
+ loop?: boolean;
276
+ }
277
+ export interface SfxGenerationResult {
278
+ /** Public Storage URL of the generated audio. */
279
+ audioUrl: string;
280
+ /** Audio length in seconds (when reported by provider). */
281
+ durationSec?: number;
282
+ /** Provider-side request id for tracing. */
283
+ providerRequestId?: string;
284
+ mimeType: string;
285
+ extension: string;
286
+ }
44
287
  export interface CreditUsageParams {
45
- modelKey: EVideoGenModels | ETextGenModels;
288
+ modelKey: EVideoGenModels | ETextGenModels | EImageGenModelKey | EMusicGenModels | ESfxGenModels;
46
289
  mode?: EVideoMode;
47
290
  duration?: number;
48
291
  resolution?: string;
49
292
  dimensions?: string;
50
293
  aspectRatio?: string;
51
294
  inputType?: "text" | "image" | "video";
52
- hasInputVideo?: boolean;
53
295
  outputType?: "text" | "image" | "video";
54
296
  audio?: boolean;
55
297
  multiClip?: boolean;
298
+ /** Image-gen — number of images requested. */
299
+ numImages?: number;
300
+ /** Image-gen — quality tier (gpt-image scales price 4×–15×). */
301
+ quality?: string;
302
+ /** Bytedance Seedance 2.0 — pricing differs when a video is used as input. */
303
+ hasInputVideo?: boolean;
304
+ /**
305
+ * Bytedance Seedance 2.0 / 2.0-fast — duration (seconds) of the input clip
306
+ * for ref-to-video / video-to-video calls. ByteDance bills tokens on
307
+ * (input_duration + output_duration), so this MUST be supplied for V2V/R2V
308
+ * or the call under-bills proportional to input length.
309
+ */
310
+ inputVideoDurationSec?: number;
311
+ /** Image-gen — output resolution tier (e.g. Google nano-banana-pro "1K"/"2K"/"4K"). */
312
+ imageSize?: string;
56
313
  }
57
314
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAEvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CAMzB;AAED,MAAM,WAAW,oBAAoB;IAEnC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./unsplash.service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/unsplash/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
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
+ __exportStar(require("./unsplash.service"), exports);
@@ -0,0 +1,16 @@
1
+ import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
2
+ import { CreditUsageParams, StockSearchParams, StockSearchResult } from "../types";
3
+ export declare class UnsplashProviderService extends BaseAiGenProviderService {
4
+ private readonly accessKey;
5
+ searchStock(params: StockSearchParams): Promise<StockSearchResult>;
6
+ /**
7
+ * Fire the Unsplash download-tracking endpoint. MUST be called once when
8
+ * an Unsplash photo is committed to a render (per their API guidelines).
9
+ * Errors swallowed — failure to ping doesn't break the user's render.
10
+ */
11
+ pingDownload(trackingUrl: string): Promise<void>;
12
+ /** Free assets — registers as 0 credits regardless of model. */
13
+ getCreditUsed(_params: CreditUsageParams): number;
14
+ private aspectToOrientation;
15
+ }
16
+ //# sourceMappingURL=unsplash.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsplash.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/unsplash/unsplash.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AA0DlB,qBAAa,uBAAwB,SAAQ,wBAAwB;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuD;IAE3E,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+DxE;;;;OAIG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD,gEAAgE;IAChE,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAIjD,OAAO,CAAC,mBAAmB;CAQ5B"}
@@ -0,0 +1,131 @@
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.UnsplashProviderService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const apiUsageCounter_service_1 = require("../../../apiUsageCounter.service");
9
+ const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
10
+ /**
11
+ * Unsplash image-search provider (T0 — free).
12
+ *
13
+ * Photos-only. Pairs with Pexels for image queries; we race both and merge
14
+ * results so the agent picks from a wider catalog. Video and music queries
15
+ * delegate to other providers.
16
+ *
17
+ * Auth: `Authorization: Client-ID {access_key}` header (no OAuth needed for
18
+ * read endpoints). Free dev tier: 50 req/h; 1000 req/h after production
19
+ * approval (see https://unsplash.com/documentation#rate-limiting).
20
+ *
21
+ * Attribution: Unsplash guidelines require attributing the photographer and
22
+ * Unsplash (e.g. "Photo by {name} on Unsplash") wherever the photo appears.
23
+ * We surface `attribution.{name,url}` so the producer UI / finished video
24
+ * watermark can render the credit.
25
+ *
26
+ * Download tracking: when an Unsplash photo is actually used in a render,
27
+ * the API requires a fire-and-forget GET to `links.download_location`. We
28
+ * pass that through as `StockAsset.trackingUrl`; callers fire it via
29
+ * `pingDownload()` at scene-commit time.
30
+ */
31
+ const UNSPLASH_SEARCH_URL = "https://api.unsplash.com/search/photos";
32
+ // 10s per-call cap so the agent executor stays responsive when Unsplash is
33
+ // slow — the search_stock cascade can drop us cleanly.
34
+ const UNSPLASH_TIMEOUT_MS = 10000;
35
+ // Cap below 1000 req/h × 24h × 30d = ~720k theoretical max; the realistic
36
+ // cap is the per-hour throttle. We set a conservative monthly upper bound
37
+ // to surface runaway usage early. Override via env if needed.
38
+ const UNSPLASH_MONTHLY_CAP = Number(process.env.UNSPLASH_MONTHLY_CAP ?? 50000);
39
+ class UnsplashProviderService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
40
+ constructor() {
41
+ super(...arguments);
42
+ this.accessKey = process.env.UNSPLASH_ACCESS_KEY;
43
+ }
44
+ async searchStock(params) {
45
+ if (!this.accessKey) {
46
+ throw new Error("UNSPLASH_ACCESS_KEY not set — unsplash provider cannot search");
47
+ }
48
+ if (params.kind !== "image") {
49
+ // Photos-only. Caller falls back to the appropriate provider.
50
+ return { assets: [] };
51
+ }
52
+ const allowed = await apiUsageCounter_service_1.ApiUsageCounterService.tryConsume({
53
+ provider: "unsplash",
54
+ monthlyCap: UNSPLASH_MONTHLY_CAP,
55
+ });
56
+ if (!allowed) {
57
+ throw new Error(`UNSPLASH_RATE_LIMITED: monthly cap of ${UNSPLASH_MONTHLY_CAP} exceeded — back off`);
58
+ }
59
+ const perPage = Math.min(params.perPage ?? 15, 30); // Unsplash caps at 30
60
+ try {
61
+ const { data } = await axios_1.default.get(UNSPLASH_SEARCH_URL, {
62
+ headers: { Authorization: `Client-ID ${this.accessKey}` },
63
+ timeout: UNSPLASH_TIMEOUT_MS,
64
+ params: {
65
+ query: params.query,
66
+ per_page: perPage,
67
+ page: params.page ?? 1,
68
+ orientation: this.aspectToOrientation(params.aspectRatio),
69
+ color: params.color, // black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue
70
+ },
71
+ });
72
+ return {
73
+ assets: data.results.map((p) => ({
74
+ id: `unsplash-${p.id}`,
75
+ url: p.urls.regular,
76
+ thumbnailUrl: p.urls.small,
77
+ width: p.width,
78
+ height: p.height,
79
+ source: "unsplash",
80
+ attribution: {
81
+ name: p.user.name,
82
+ url: p.user.links?.html,
83
+ },
84
+ trackingUrl: p.links.download_location,
85
+ })),
86
+ totalAvailable: data.total,
87
+ };
88
+ }
89
+ catch (err) {
90
+ if (err?.response?.status === 429) {
91
+ throw new Error("UNSPLASH_RATE_LIMITED: 429 from Unsplash API — back off");
92
+ }
93
+ if (err?.code === "ECONNABORTED" || /timeout/i.test(err?.message ?? "")) {
94
+ throw new Error(`UNSPLASH_TIMEOUT: request timed out after ${UNSPLASH_TIMEOUT_MS}ms`);
95
+ }
96
+ throw err;
97
+ }
98
+ }
99
+ /**
100
+ * Fire the Unsplash download-tracking endpoint. MUST be called once when
101
+ * an Unsplash photo is committed to a render (per their API guidelines).
102
+ * Errors swallowed — failure to ping doesn't break the user's render.
103
+ */
104
+ async pingDownload(trackingUrl) {
105
+ if (!this.accessKey || !trackingUrl)
106
+ return;
107
+ try {
108
+ await axios_1.default.get(trackingUrl, {
109
+ headers: { Authorization: `Client-ID ${this.accessKey}` },
110
+ timeout: 5000,
111
+ });
112
+ }
113
+ catch {
114
+ // Intentional — ToS-required best-effort signal, not a hard dependency.
115
+ }
116
+ }
117
+ /** Free assets — registers as 0 credits regardless of model. */
118
+ getCreditUsed(_params) {
119
+ return 0;
120
+ }
121
+ aspectToOrientation(aspect) {
122
+ if (!aspect)
123
+ return undefined;
124
+ if (aspect === "9:16" || aspect === "4:5")
125
+ return "portrait";
126
+ if (aspect === "1:1")
127
+ return "squarish";
128
+ return "landscape";
129
+ }
130
+ }
131
+ exports.UnsplashProviderService = UnsplashProviderService;
@@ -118,9 +118,7 @@ exports.AnalyticsService = AnalyticsService;
118
118
  * map key under `failuresByCode`. Empty/undefined collapses to `unknown`.
119
119
  */
120
120
  function sanitizeCodeKey(code) {
121
- if (code == null || code === "")
121
+ if (!code)
122
122
  return "unknown";
123
- // Defensive: providers occasionally return numeric codes (e.g. Google's
124
- // gRPC status codes). Coerce to string before regex-replacing.
125
- return String(code).replace(/[.\/~*[\]]/g, "_");
123
+ return code.replace(/[.\/~*[\]]/g, "_");
126
124
  }
@@ -0,0 +1,20 @@
1
+ export interface ConsumeOptions {
2
+ /** Provider key, e.g. "pexels" or "jamendo". One doc per provider per month. */
3
+ provider: string;
4
+ /** Hard monthly cap. Below this the call is allowed. */
5
+ monthlyCap: number;
6
+ /** Optional: how many calls this consumes. Defaults to 1. */
7
+ count?: number;
8
+ }
9
+ export declare class ApiUsageCounterService {
10
+ /**
11
+ * Atomically increments the monthly counter for `provider` and returns
12
+ * whether the call is allowed (i.e. the *new* total is ≤ monthlyCap).
13
+ *
14
+ * Fails open on Firestore error — the call goes through and we log.
15
+ */
16
+ static tryConsume(opts: ConsumeOptions): Promise<boolean>;
17
+ /** Read-only — used by ops dashboards / soft-cap warnings. */
18
+ static getUsed(provider: string): Promise<number>;
19
+ }
20
+ //# sourceMappingURL=apiUsageCounter.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiUsageCounter.service.d.ts","sourceRoot":"","sources":["../../src/services/apiUsageCounter.service.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,sBAAsB;IACjC;;;;;OAKG;WACU,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC/D,8DAA8D;WACjD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAexD"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiUsageCounterService = void 0;
4
+ const firebase_1 = require("../libs/firebase");
5
+ const logger_1 = require("../utils/logger");
6
+ /**
7
+ * Cheap monthly-call counter for free-tier external APIs (Pexels, Jamendo,
8
+ * Mubert, etc.). Lives at `apiUsage/{provider}-{YYYY-MM}` — one doc per
9
+ * provider per month — so a single transactional increment per call is the
10
+ * hottest write the system needs. Reset cost is zero (new month = new doc).
11
+ *
12
+ * `tryConsume()` is fail-open: any Firestore error returns `true` so a
13
+ * transient outage doesn't take down provider calls. Wrong direction on
14
+ * over-spend is preferable to false outages on these free tiers.
15
+ *
16
+ * Wired into providers right before their external HTTP call. The provider
17
+ * is responsible for throwing a `*_RATE_LIMITED` error so upstream can swap
18
+ * to a fallback provider.
19
+ */
20
+ const COLLECTION = "apiUsage";
21
+ function currentMonthKey() {
22
+ const d = new Date();
23
+ const y = d.getUTCFullYear();
24
+ const m = String(d.getUTCMonth() + 1).padStart(2, "0");
25
+ return `${y}-${m}`;
26
+ }
27
+ function docId(provider) {
28
+ return `${provider}-${currentMonthKey()}`;
29
+ }
30
+ class ApiUsageCounterService {
31
+ /**
32
+ * Atomically increments the monthly counter for `provider` and returns
33
+ * whether the call is allowed (i.e. the *new* total is ≤ monthlyCap).
34
+ *
35
+ * Fails open on Firestore error — the call goes through and we log.
36
+ */
37
+ static async tryConsume(opts) {
38
+ const ref = firebase_1.firestore.collection(COLLECTION).doc(docId(opts.provider));
39
+ const count = opts.count ?? 1;
40
+ try {
41
+ const allowed = await firebase_1.firestore.runTransaction(async (tx) => {
42
+ const snap = await tx.get(ref);
43
+ const used = (snap.data()?.used ?? 0) + count;
44
+ if (used > opts.monthlyCap) {
45
+ // Don't write — leave the counter as-is so the next reset is clean.
46
+ return false;
47
+ }
48
+ tx.set(ref, {
49
+ used: firebase_1.FieldValue.increment(count),
50
+ cap: opts.monthlyCap,
51
+ updatedAt: firebase_1.FieldValue.serverTimestamp(),
52
+ }, { merge: true });
53
+ return true;
54
+ });
55
+ return allowed;
56
+ }
57
+ catch (err) {
58
+ // Fail open: prefer over-spend to false outages on free tiers.
59
+ logger_1.logger.error("apiUsageCounter: tryConsume fail-open", {
60
+ provider: opts.provider,
61
+ err: err instanceof Error ? err.stack ?? err.message : String(err),
62
+ });
63
+ return true;
64
+ }
65
+ }
66
+ /** Read-only — used by ops dashboards / soft-cap warnings. */
67
+ static async getUsed(provider) {
68
+ try {
69
+ const snap = await firebase_1.firestore
70
+ .collection(COLLECTION)
71
+ .doc(docId(provider))
72
+ .get();
73
+ return snap.data()?.used ?? 0;
74
+ }
75
+ catch (err) {
76
+ logger_1.logger.error("apiUsageCounter: getUsed failed", {
77
+ provider,
78
+ err: err instanceof Error ? err.stack ?? err.message : String(err),
79
+ });
80
+ return 0;
81
+ }
82
+ }
83
+ }
84
+ exports.ApiUsageCounterService = ApiUsageCounterService;