vidspotai-shared 1.0.68 → 1.0.69-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 -30
  5. package/lib/globals/aiModels/index.d.ts.map +1 -1
  6. package/lib/globals/aiModels/index.js +7 -35
  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 +76 -11
  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 -8
  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 -19
  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 +128 -5
  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
@@ -26,6 +26,96 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
26
26
  const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
27
27
  const modelId = modelConfig.modelId;
28
28
  const traceId = crypto_1.default.randomUUID();
29
+ // Extend a previously-generated PixVerse video. Takes the prior video_id;
30
+ // returns a new task whose status is polled via the same /result/{id} endpoint.
31
+ if (params.endpoint === "extend") {
32
+ if (!params.sourceTaskId) {
33
+ throw new Error("sourceTaskId (prior PixVerse video_id) is required for video extension");
34
+ }
35
+ const extendBody = {
36
+ video_id: Number(params.sourceTaskId),
37
+ model: modelId,
38
+ quality: params.resolution,
39
+ };
40
+ if (params.prompt)
41
+ extendBody.prompt = params.prompt;
42
+ if (params.negativePrompt)
43
+ extendBody.negative_prompt = params.negativePrompt;
44
+ if (params.seed !== undefined)
45
+ extendBody.seed = params.seed;
46
+ const resp = await fetch(`${this.baseUrl}/extend/generate`, {
47
+ method: "POST",
48
+ headers: {
49
+ "Content-Type": "application/json",
50
+ "API-KEY": process.env.PIXVERSE_API_KEY,
51
+ "Ai-trace-id": traceId,
52
+ },
53
+ body: JSON.stringify(extendBody),
54
+ });
55
+ if (!resp.ok) {
56
+ const errText = await resp.text();
57
+ throw new Error(`PixVerse extendVideo failed (${resp.status}): ${errText}`);
58
+ }
59
+ const data = await resp.json();
60
+ if (data.ErrCode !== 0) {
61
+ throw new Error(`PixVerse API error: ${data.ErrMsg || "Unknown error"}`);
62
+ }
63
+ const videoId = data?.Resp?.video_id;
64
+ if (!videoId)
65
+ throw new Error("PixVerse extend did not return video_id");
66
+ return { task: String(videoId), status: types_1.EVideoSceneStatus.TRIGGERED };
67
+ }
68
+ // Pixverse "Effects" — POST /video/template/generate. Requires both a numeric
69
+ // template_id (resolved upstream from a slug via PIXVERSE_TEMPLATES_BY_SLUG) and
70
+ // a customer_img_url. Most templates ignore prompt; some accept a style hint.
71
+ if (params.endpoint === "effect") {
72
+ if (!params.templateId) {
73
+ throw new Error("templateId is required for Pixverse effect generation");
74
+ }
75
+ if (!params.inputImageUrl) {
76
+ throw new Error("inputImageUrl is required for Pixverse effect generation");
77
+ }
78
+ const templateIdNum = Number(params.templateId);
79
+ if (!Number.isFinite(templateIdNum)) {
80
+ throw new Error(`templateId must be a numeric Pixverse template id (got "${params.templateId}")`);
81
+ }
82
+ const effectBody = {
83
+ template_id: templateIdNum,
84
+ customer_img_url: params.inputImageUrl,
85
+ model: modelId,
86
+ quality: params.resolution,
87
+ duration: params.duration,
88
+ };
89
+ if (params.prompt)
90
+ effectBody.prompt = params.prompt;
91
+ if (params.seed !== undefined)
92
+ effectBody.seed = params.seed;
93
+ if (params.watermark !== undefined)
94
+ effectBody.water_mark = !params.watermark;
95
+ if (params.motionMode)
96
+ effectBody.motion_mode = params.motionMode;
97
+ const resp = await fetch(`${this.baseUrl}/template/generate`, {
98
+ method: "POST",
99
+ headers: {
100
+ "Content-Type": "application/json",
101
+ "API-KEY": process.env.PIXVERSE_API_KEY,
102
+ "Ai-trace-id": traceId,
103
+ },
104
+ body: JSON.stringify(effectBody),
105
+ });
106
+ if (!resp.ok) {
107
+ const errText = await resp.text();
108
+ throw new Error(`PixVerse effect generation failed (${resp.status}): ${errText}`);
109
+ }
110
+ const data = await resp.json();
111
+ if (data.ErrCode !== 0) {
112
+ throw new Error(`PixVerse API error: ${data.ErrMsg || "Unknown error"}`);
113
+ }
114
+ const videoId = data?.Resp?.video_id;
115
+ if (!videoId)
116
+ throw new Error("PixVerse effect did not return video_id");
117
+ return { task: String(videoId), status: types_1.EVideoSceneStatus.TRIGGERED };
118
+ }
29
119
  const body = {
30
120
  aspect_ratio: params.aspectRatio,
31
121
  duration: params.duration,
@@ -45,7 +135,37 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
45
135
  if (params.multiClip !== undefined) {
46
136
  body.generate_multi_clip_switch = Boolean(params.multiClip);
47
137
  }
48
- const resp = await fetch(`${this.baseUrl}/text/generate`, {
138
+ if (params.seed !== undefined)
139
+ body.seed = params.seed;
140
+ if (params.motionMode)
141
+ body.motion_mode = params.motionMode;
142
+ if (params.watermark !== undefined)
143
+ body.water_mark = !params.watermark; // API field is "remove watermark"
144
+ if (params.style)
145
+ body.style = params.style;
146
+ if (params.templateId)
147
+ body.template_id = params.templateId;
148
+ if (params.thinkingType)
149
+ body.thinking_type = params.thinkingType;
150
+ if (params.soundEffect) {
151
+ body.sound_effect_switch = params.soundEffect.switch;
152
+ if (params.soundEffect.content)
153
+ body.sound_effect_content = params.soundEffect.content;
154
+ }
155
+ if (params.lipSync) {
156
+ body.lip_sync_switch = params.lipSync.switch;
157
+ if (params.lipSync.ttsContent)
158
+ body.lip_sync_tts_content = params.lipSync.ttsContent;
159
+ if (params.lipSync.ttsSpeakerId)
160
+ body.lip_sync_tts_speaker_id = params.lipSync.ttsSpeakerId;
161
+ }
162
+ // I2V switches endpoint and adds the image reference.
163
+ const isImageToVideo = !!params.inputImageUrl;
164
+ if (isImageToVideo) {
165
+ body.image_url = params.inputImageUrl;
166
+ }
167
+ const endpoint = isImageToVideo ? `${this.baseUrl}/image/generate` : `${this.baseUrl}/text/generate`;
168
+ const resp = await fetch(endpoint, {
49
169
  method: "POST",
50
170
  headers: {
51
171
  "Content-Type": "application/json",
@@ -180,7 +300,10 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
180
300
  return (0, helpers_2.getCreditsFromCost)(cost, !multiClip);
181
301
  }
182
302
  catch (err) {
183
- logger_1.logger.error(`PixVerse credit calculation failed`, err);
303
+ logger_1.logger.error(`PixVerse credit calculation failed`, {
304
+ params,
305
+ err: err instanceof Error ? err.stack ?? err.message : String(err),
306
+ });
184
307
  return 10;
185
308
  }
186
309
  }
@@ -0,0 +1,3 @@
1
+ import type { CameraControl } from "../../canonicalAdapters/cameraControl.types";
2
+ export declare function applyRunwayCameraControl(prompt: string | undefined, c: CameraControl): string;
3
+ //# sourceMappingURL=cameraAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/cameraAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,6CAA6C,CAAC;AAmCrD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,CAAC,EAAE,aAAa,GACf,MAAM,CAMR"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyRunwayCameraControl = applyRunwayCameraControl;
4
+ /**
5
+ * Runway gen4 doesn't expose a structured camera-control field — moves are
6
+ * inferred from prompt text. We translate the canonical preset/intensity into
7
+ * a short bracketed clause prepended to the prompt. Matches Runway's own
8
+ * cinematography vocabulary so the model parses it reliably.
9
+ */
10
+ const PRESET_TO_PHRASE = {
11
+ static: "static camera",
12
+ pan_left: "camera pans left",
13
+ pan_right: "camera pans right",
14
+ tilt_up: "camera tilts up",
15
+ tilt_down: "camera tilts down",
16
+ zoom_in: "camera zooms in",
17
+ zoom_out: "camera zooms out",
18
+ dolly_in: "camera dollies in",
19
+ dolly_out: "camera dollies out",
20
+ orbit_left: "camera orbits left around subject",
21
+ orbit_right: "camera orbits right around subject",
22
+ roll_left: "camera rolls counter-clockwise",
23
+ roll_right: "camera rolls clockwise",
24
+ tracking: "tracking shot following subject",
25
+ handheld: "handheld camera",
26
+ push_in: "slow push in",
27
+ pull_out: "slow pull out",
28
+ };
29
+ function intensityWord(i) {
30
+ if (i === undefined)
31
+ return "";
32
+ if (i <= 0.33)
33
+ return "subtle ";
34
+ if (i >= 0.67)
35
+ return "strong ";
36
+ return "";
37
+ }
38
+ function applyRunwayCameraControl(prompt, c) {
39
+ if (!c.preset)
40
+ return prompt ?? "";
41
+ const phrase = PRESET_TO_PHRASE[c.preset];
42
+ if (!phrase)
43
+ return prompt ?? "";
44
+ const clause = `[${intensityWord(c.intensity)}${phrase}]`;
45
+ return prompt ? `${clause} ${prompt}` : clause;
46
+ }
@@ -1,5 +1,5 @@
1
1
  import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
2
- import { CreditUsageParams, VideoGenerationParams, VideoGenerationResult, VideoStatusParams, VideoStatusResult } from "../types";
2
+ import { CreditUsageParams, ImageGenerationParams, ImageGenerationResult, VideoGenerationParams, VideoGenerationResult, VideoStatusParams, VideoStatusResult } from "../types";
3
3
  export declare class RunwayService extends BaseAiGenProviderService {
4
4
  private readonly baseUrl;
5
5
  private readonly apiKey;
@@ -7,6 +7,16 @@ export declare class RunwayService extends BaseAiGenProviderService {
7
7
  private request;
8
8
  generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
9
9
  checkVideoStatus({ task, outputFilename, outputFilePath, }: VideoStatusParams): Promise<VideoStatusResult>;
10
- getCreditUsed({ modelKey, duration, multiClip }: CreditUsageParams): number;
10
+ getCreditUsed({ modelKey, duration, multiClip, numImages, aspectRatio }: CreditUsageParams): number;
11
+ /**
12
+ * Runway Gen-4 Image (text-to-image). Async — POST returns a task id,
13
+ * we poll /tasks/{id} until SUCCEEDED, then rehost the time-limited URL
14
+ * into our GCS bucket so the asset persists.
15
+ *
16
+ * UI passes aspectRatio as `"1:1" | "16:9" | "9:16" | "4:3" | "3:4"`;
17
+ * Runway requires concrete pixel ratios (`"1920:1080"` etc.) per the
18
+ * Gen-4 Image spec.
19
+ */
20
+ generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult>;
11
21
  }
12
22
  //# sourceMappingURL=runway.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;YAUlB,OAAO;IAgCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAqD3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4DjD,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,SAAiB,EAAE,EAAE,iBAAiB,GAAG,MAAM;CASxF"}
1
+ {"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAIlB,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;YAUlB,OAAO;IAgCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA6G3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4DjD,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,SAAiB,EAAE,SAAa,EAAE,WAAW,EAAE,EAAE,iBAAiB,GAAG,MAAM;IA0BnH;;;;;;;;OAQG;IACG,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;CA0ElC"}
@@ -12,6 +12,7 @@ const helpers_1 = require("../../../../utils/helpers");
12
12
  const logger_1 = require("../../../../utils/logger");
13
13
  const helpers_2 = require("../../helpers");
14
14
  const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
15
+ const cameraAdapter_1 = require("./cameraAdapter");
15
16
  class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
16
17
  constructor() {
17
18
  super();
@@ -46,37 +47,90 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
46
47
  const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
47
48
  if (!modelId)
48
49
  throw new Error(`Unknown modelKey: ${params.modelKey}`);
50
+ // Common optional fields. Runway accepts these on all three endpoints.
51
+ const common = {};
52
+ if (params.seed !== undefined)
53
+ common.seed = params.seed;
54
+ if (params.publicFigureThreshold) {
55
+ common.contentModeration = { publicFigureThreshold: params.publicFigureThreshold };
56
+ }
57
+ // Camera-control: Runway has no structured camera field — synthesize a
58
+ // bracketed clause and prepend to the prompt.
59
+ const effectivePrompt = params.cameraControl
60
+ ? (0, cameraAdapter_1.applyRunwayCameraControl)(params.prompt, params.cameraControl)
61
+ : params.prompt;
49
62
  let run;
50
- // TEXT VIDEO (gen4.5)
63
+ // gen4.5 supports BOTH text_to_video and image_to_video (Runway docs).
64
+ // Branch on whether the caller supplied a source still.
51
65
  if (modelId === "gen4.5") {
52
- const ratio = (params.aspectRatio || "1280x720").replace("x", ":");
53
- const body = {
54
- model: "gen4.5",
55
- promptText: params.prompt,
56
- ratio,
57
- duration: params.duration || 5,
58
- };
59
- run = await this.request("/text_to_video", "POST", body);
66
+ if (params.inputImageUrl) {
67
+ // IMAGE VIDEO
68
+ const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4.5");
69
+ const promptImage = [
70
+ { uri: params.inputImageUrl, position: "first" },
71
+ ];
72
+ if (params.lastFrameImageUrl) {
73
+ promptImage.push({ uri: params.lastFrameImageUrl, position: "last" });
74
+ }
75
+ const body = {
76
+ model: "gen4.5",
77
+ promptText: effectivePrompt,
78
+ promptImage,
79
+ ratio,
80
+ duration: params.duration || 5,
81
+ ...common,
82
+ };
83
+ run = await this.request("/image_to_video", "POST", body);
84
+ }
85
+ else {
86
+ // TEXT → VIDEO. gen4.5 T2V only accepts "1280:720" / "720:1280".
87
+ const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4.5_t2v");
88
+ const body = {
89
+ model: "gen4.5",
90
+ promptText: effectivePrompt,
91
+ ratio,
92
+ duration: params.duration || 5,
93
+ ...common,
94
+ };
95
+ run = await this.request("/text_to_video", "POST", body);
96
+ }
60
97
  }
61
- // IMAGE → VIDEO (gen4_turbo)
98
+ // IMAGE → VIDEO (gen4_turbo). Supports first + optional last-frame.
62
99
  else if (modelId === "gen4_turbo") {
100
+ const promptImage = [
101
+ { uri: params.inputImageUrl, position: "first" },
102
+ ];
103
+ if (params.lastFrameImageUrl) {
104
+ promptImage.push({ uri: params.lastFrameImageUrl, position: "last" });
105
+ }
106
+ // AG-16: agent/tool layer sends aspectRatio as "9:16" / "16:9" / etc;
107
+ // Runway video endpoints expect pixel ratios like "720:1280". Image-gen
108
+ // already translates via mapAspectToRunwayRatio — apply the same here so
109
+ // I2V scenes don't 400 on a perfectly valid request.
110
+ const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4_turbo");
63
111
  const body = {
64
112
  model: "gen4_turbo",
65
- promptText: params.prompt,
66
- promptImage: [{ uri: params.inputImageUrl, position: "first" }],
67
- ratio: params.aspectRatio,
113
+ promptText: effectivePrompt,
114
+ promptImage,
115
+ ratio,
68
116
  duration: params.duration,
117
+ ...common,
69
118
  };
70
119
  run = await this.request("/image_to_video", "POST", body);
71
120
  }
72
- // VIDEO → VIDEO (gen4_aleph)
121
+ // VIDEO → VIDEO (gen4_aleph). Supports references[] for character/style consistency.
73
122
  else if (modelId === "gen4_aleph") {
123
+ const ratio = mapAspectToRunwayVideoRatio(params.aspectRatio, "gen4_aleph");
74
124
  const body = {
75
125
  model: "gen4_aleph",
76
- promptText: params.prompt,
126
+ promptText: effectivePrompt,
77
127
  videoUri: params.inputVideoUrl,
78
- ratio: params.aspectRatio,
128
+ ratio,
129
+ ...common,
79
130
  };
131
+ if (params.referenceImageUrls?.length) {
132
+ body.references = params.referenceImageUrls.map((uri) => ({ type: "image", uri }));
133
+ }
80
134
  run = await this.request("/video_to_video", "POST", body);
81
135
  }
82
136
  else {
@@ -127,14 +181,163 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
127
181
  // Still processing
128
182
  return { status: types_1.EVideoSceneStatus.PENDING };
129
183
  }
130
- getCreditUsed({ modelKey, duration = 5, multiClip = false }) {
184
+ getCreditUsed({ modelKey, duration = 5, multiClip = false, numImages = 1, aspectRatio }) {
131
185
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
132
- const perSecond = modelConfig.cost?.perSecond;
186
+ const cost = modelConfig?.cost;
187
+ const applyFloor = !multiClip;
188
+ // Image-gen — per-aspect price table (Gen-4 Image). Falls back to `fixed`.
189
+ if (cost?.perAspect && aspectRatio) {
190
+ const perImage = cost.perAspect[aspectRatio] ?? cost.fixed;
191
+ if (perImage !== undefined) {
192
+ return (0, helpers_1.getCreditsFromCost)(perImage * Math.max(1, numImages), applyFloor);
193
+ }
194
+ }
195
+ // Image-gen — flat per-image cost (Runway Gen-4 Image / Turbo).
196
+ if (cost?.fixed !== undefined) {
197
+ return (0, helpers_1.getCreditsFromCost)(cost.fixed * Math.max(1, numImages), applyFloor);
198
+ }
199
+ const perSecond = cost?.perSecond;
133
200
  if (perSecond === undefined || perSecond === null) {
134
- logger_1.logger.warn(`Runway getCreditUsed: no perSecond cost config for modelKey="${modelKey}" — returning fallback`, { modelKey, duration });
135
- return (0, helpers_1.getCreditsFromCost)(1.0, !multiClip);
201
+ logger_1.logger.warn(`Runway getCreditUsed: no cost config for modelKey="${modelKey}" — returning fallback`, { modelKey, duration });
202
+ return (0, helpers_1.getCreditsFromCost)(1.0, applyFloor);
203
+ }
204
+ return (0, helpers_1.getCreditsFromCost)(perSecond * duration, applyFloor);
205
+ }
206
+ /**
207
+ * Runway Gen-4 Image (text-to-image). Async — POST returns a task id,
208
+ * we poll /tasks/{id} until SUCCEEDED, then rehost the time-limited URL
209
+ * into our GCS bucket so the asset persists.
210
+ *
211
+ * UI passes aspectRatio as `"1:1" | "16:9" | "9:16" | "4:3" | "3:4"`;
212
+ * Runway requires concrete pixel ratios (`"1920:1080"` etc.) per the
213
+ * Gen-4 Image spec.
214
+ */
215
+ async generateImage(params) {
216
+ const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
217
+ const modelId = modelConfig?.modelId;
218
+ if (!modelId)
219
+ throw new Error(`Unknown Runway image modelKey: ${params.modelKey}`);
220
+ const ratio = mapAspectToRunwayRatio(params.aspectRatio, params.dimensions);
221
+ const body = {
222
+ promptText: params.prompt,
223
+ ratio,
224
+ model: modelId,
225
+ };
226
+ if (params.seed !== undefined)
227
+ body.seed = params.seed;
228
+ const refs = [
229
+ ...(params.inputImageUrl ? [params.inputImageUrl] : []),
230
+ ...(params.inputImageUrls ?? []),
231
+ ];
232
+ if (refs.length > 0) {
233
+ // Runway requires a `tag` per reference; we assign positional tags so the
234
+ // model can disambiguate when the prompt mentions multiple subjects.
235
+ body.referenceImages = refs.map((uri, i) => ({ uri, tag: `ref${i + 1}` }));
236
+ }
237
+ const run = await this.request("/text_to_image", "POST", body);
238
+ // Poll. Runway image-gen is typically 5–20s; cap at 60s with 1.5s pulses.
239
+ const deadline = Date.now() + 60000;
240
+ let outputUri;
241
+ while (Date.now() < deadline) {
242
+ const status = await this.request(`/tasks/${run.id}`, "GET");
243
+ if (status.status === "SUCCEEDED" && status.output?.length) {
244
+ outputUri = status.output[0];
245
+ break;
246
+ }
247
+ if (status.status === "FAILED" || status.status === "CANCELLED") {
248
+ throw new Error(`Runway image generation failed: ${status.failure ?? "unknown"} (${status.failureCode ?? "no code"})`);
249
+ }
250
+ await new Promise((r) => setTimeout(r, 1500));
136
251
  }
137
- return (0, helpers_1.getCreditsFromCost)(perSecond * duration, !multiClip);
252
+ if (!outputUri) {
253
+ throw new Error("Runway image generation timed out after 60s");
254
+ }
255
+ // Rehost in GCS — the Runway-hosted URL expires.
256
+ const imgResp = await axios_1.default.get(outputUri, {
257
+ responseType: "arraybuffer",
258
+ timeout: 60000,
259
+ });
260
+ if (imgResp.status !== 200) {
261
+ throw new Error(`Runway image download failed: ${imgResp.status}`);
262
+ }
263
+ const contentType = imgResp.headers["content-type"] ?? "image/png";
264
+ const ext = (contentType.split("/")[1] ?? "png").toLowerCase();
265
+ const ts = Date.now();
266
+ const path = `images/runway/${ts}-${Math.random().toString(36).slice(2, 8)}.${ext}`;
267
+ const file = (0, firebase_1.getBucket)().file(path);
268
+ await file.save(Buffer.from(imgResp.data), { contentType });
269
+ const [signed] = await file.getSignedUrl({ action: "read", expires: "03-09-2491" });
270
+ return {
271
+ imageUrl: signed,
272
+ providerRequestId: run.id,
273
+ };
138
274
  }
139
275
  }
140
276
  exports.RunwayService = RunwayService;
277
+ /**
278
+ * Map a high-level aspect ratio (or explicit `WxH` dimensions) to one of the
279
+ * pixel ratios the Runway Gen-4 Image API accepts. Falls back to 1024:1024
280
+ * for unrecognized inputs.
281
+ */
282
+ function mapAspectToRunwayRatio(aspectRatio, dimensions) {
283
+ if (dimensions) {
284
+ const [w, h] = dimensions.split("x").map((n) => parseInt(n, 10));
285
+ if (Number.isFinite(w) && Number.isFinite(h))
286
+ return `${w}:${h}`;
287
+ }
288
+ switch (aspectRatio) {
289
+ case "16:9":
290
+ return "1920:1080";
291
+ case "9:16":
292
+ return "1080:1920";
293
+ case "4:3":
294
+ return "1360:768";
295
+ case "3:4":
296
+ return "768:1360";
297
+ case "1:1":
298
+ default:
299
+ return "1024:1024";
300
+ }
301
+ }
302
+ /**
303
+ * AG-16: aspectRatio translation for Runway VIDEO endpoints (gen4_turbo,
304
+ * gen4_aleph). Agent / tool layer sends "9:16" / "16:9" / etc; Runway expects
305
+ * pixel ratios from its model-specific allowed list (e.g. gen4_turbo accepts
306
+ * "1280:720", "720:1280", "960:960", ...). Defaults to landscape if the
307
+ * canonical aspect doesn't map to anything the chosen model supports.
308
+ */
309
+ function mapAspectToRunwayVideoRatio(aspectRatio, flavor) {
310
+ // AG-24: pass through ONLY if it looks like a real pixel ratio (≥100 on at
311
+ // least one side). The previous regex `/^\d+[:x]\d+$/` greedily matched
312
+ // canonical ratios like "9:16" too, short-circuiting the mapping below and
313
+ // sending "9:16" straight to Runway — which rejected it.
314
+ if (aspectRatio) {
315
+ const m = aspectRatio.match(/^(\d+)[:x](\d+)$/);
316
+ if (m && (parseInt(m[1], 10) >= 100 || parseInt(m[2], 10) >= 100)) {
317
+ return `${m[1]}:${m[2]}`;
318
+ }
319
+ }
320
+ // gen4.5 T2V is constrained to 2 ratios per Runway docs (1280:720 + 720:1280).
321
+ // Coerce anything else to the closest landscape/portrait.
322
+ if (flavor === "gen4.5_t2v") {
323
+ return aspectRatio === "9:16" || aspectRatio === "3:4"
324
+ ? "720:1280"
325
+ : "1280:720";
326
+ }
327
+ switch (aspectRatio) {
328
+ case "16:9":
329
+ return "1280:720";
330
+ case "9:16":
331
+ return "720:1280";
332
+ case "1:1":
333
+ return "960:960";
334
+ case "4:3":
335
+ return "1104:832";
336
+ case "3:4":
337
+ return "832:1104";
338
+ case "21:9":
339
+ return "1584:672";
340
+ default:
341
+ return "1280:720";
342
+ }
343
+ }