vidspotai-shared 1.0.67 → 1.0.69-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/lib/globals/aiModels/enums.d.ts +63 -6
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +78 -9
  4. package/lib/globals/aiModels/index.d.ts +2 -0
  5. package/lib/globals/aiModels/index.d.ts.map +1 -1
  6. package/lib/globals/aiModels/index.js +6 -0
  7. package/lib/globals/aiModels/providers/alibaba.d.ts +4 -0
  8. package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
  9. package/lib/globals/aiModels/providers/alibaba.js +194 -0
  10. package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
  11. package/lib/globals/aiModels/providers/bytedance.js +19 -0
  12. package/lib/globals/aiModels/providers/elevenlabs.d.ts +14 -0
  13. package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
  14. package/lib/globals/aiModels/providers/elevenlabs.js +29 -0
  15. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  16. package/lib/globals/aiModels/providers/google.js +150 -2
  17. package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
  18. package/lib/globals/aiModels/providers/kling.js +280 -37
  19. package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
  20. package/lib/globals/aiModels/providers/minimax.js +73 -2
  21. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  22. package/lib/globals/aiModels/providers/openai.js +90 -6
  23. package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
  24. package/lib/globals/aiModels/providers/pixverse.js +111 -29
  25. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
  26. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
  27. package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
  28. package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
  29. package/lib/globals/aiModels/providers/runway.js +64 -2
  30. package/lib/globals/aiModels/tierHelpers.d.ts +33 -0
  31. package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
  32. package/lib/globals/aiModels/tierHelpers.js +109 -0
  33. package/lib/globals/aiModels/types.d.ts +20 -1
  34. package/lib/globals/aiModels/types.d.ts.map +1 -1
  35. package/lib/globals/ttsModels/index.d.ts +2 -0
  36. package/lib/globals/ttsModels/index.d.ts.map +1 -1
  37. package/lib/globals/ttsModels/index.js +9 -1
  38. package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
  39. package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
  40. package/lib/globals/ttsModels/providers/minimax.js +18 -0
  41. package/lib/globals/ttsModels/providers/openai.d.ts +12 -0
  42. package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
  43. package/lib/globals/ttsModels/providers/openai.js +22 -0
  44. package/lib/globals/ttsModels/types.d.ts +1 -1
  45. package/lib/globals/ttsModels/types.d.ts.map +1 -1
  46. package/lib/globals/ttsModels/voices.d.ts +39 -4
  47. package/lib/globals/ttsModels/voices.d.ts.map +1 -1
  48. package/lib/globals/ttsModels/voices.js +273 -26
  49. package/lib/globals/types.d.ts +59 -1
  50. package/lib/globals/types.d.ts.map +1 -1
  51. package/lib/globals/types.js +81 -2
  52. package/lib/index.d.ts +1 -0
  53. package/lib/index.d.ts.map +1 -1
  54. package/lib/index.js +1 -0
  55. package/lib/models/agent.model.d.ts +357 -0
  56. package/lib/models/agent.model.d.ts.map +1 -0
  57. package/lib/models/agent.model.js +21 -0
  58. package/lib/models/cachedAsset.model.d.ts +18 -0
  59. package/lib/models/cachedAsset.model.d.ts.map +1 -0
  60. package/lib/models/cachedAsset.model.js +2 -0
  61. package/lib/models/cachedRawAsset.model.d.ts +20 -0
  62. package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
  63. package/lib/models/cachedRawAsset.model.js +2 -0
  64. package/lib/models/image.model.d.ts +47 -0
  65. package/lib/models/image.model.d.ts.map +1 -0
  66. package/lib/models/image.model.js +2 -0
  67. package/lib/models/index.d.ts +6 -0
  68. package/lib/models/index.d.ts.map +1 -1
  69. package/lib/models/index.js +6 -0
  70. package/lib/models/notification.model.d.ts +25 -0
  71. package/lib/models/notification.model.d.ts.map +1 -0
  72. package/lib/models/notification.model.js +2 -0
  73. package/lib/models/ref.model.d.ts +80 -0
  74. package/lib/models/ref.model.d.ts.map +1 -0
  75. package/lib/models/ref.model.js +13 -0
  76. package/lib/models/share.model.d.ts +29 -0
  77. package/lib/models/share.model.d.ts.map +1 -0
  78. package/lib/models/share.model.js +2 -0
  79. package/lib/models/user.model.d.ts +12 -1
  80. package/lib/models/user.model.d.ts.map +1 -1
  81. package/lib/models/video.model.d.ts +120 -0
  82. package/lib/models/video.model.d.ts.map +1 -1
  83. package/lib/models/video.model.js +10 -0
  84. package/lib/schemas/agentPersona.schema.d.ts +10 -0
  85. package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
  86. package/lib/schemas/agentPersona.schema.js +11 -0
  87. package/lib/schemas/agentRunJob.schema.d.ts +105 -0
  88. package/lib/schemas/agentRunJob.schema.d.ts.map +1 -0
  89. package/lib/schemas/agentRunJob.schema.js +88 -0
  90. package/lib/schemas/brandKit.schema.d.ts +113 -0
  91. package/lib/schemas/brandKit.schema.d.ts.map +1 -0
  92. package/lib/schemas/brandKit.schema.js +46 -0
  93. package/lib/schemas/brief.schema.d.ts +263 -0
  94. package/lib/schemas/brief.schema.d.ts.map +1 -0
  95. package/lib/schemas/brief.schema.js +157 -0
  96. package/lib/schemas/index.d.ts +7 -0
  97. package/lib/schemas/index.d.ts.map +1 -0
  98. package/lib/schemas/index.js +22 -0
  99. package/lib/schemas/project.schema.d.ts +1025 -0
  100. package/lib/schemas/project.schema.d.ts.map +1 -0
  101. package/lib/schemas/project.schema.js +256 -0
  102. package/lib/schemas/videoPlan.schema.d.ts +590 -0
  103. package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
  104. package/lib/schemas/videoPlan.schema.js +412 -0
  105. package/lib/services/agent/beatSnap.d.ts +10 -0
  106. package/lib/services/agent/beatSnap.d.ts.map +1 -0
  107. package/lib/services/agent/beatSnap.js +128 -0
  108. package/lib/services/agent/bibleBuilder.d.ts +43 -0
  109. package/lib/services/agent/bibleBuilder.d.ts.map +1 -0
  110. package/lib/services/agent/bibleBuilder.js +102 -0
  111. package/lib/services/agent/bibleImageVision.d.ts +45 -0
  112. package/lib/services/agent/bibleImageVision.d.ts.map +1 -0
  113. package/lib/services/agent/bibleImageVision.js +169 -0
  114. package/lib/services/agent/chatAgent.d.ts +79 -0
  115. package/lib/services/agent/chatAgent.d.ts.map +1 -0
  116. package/lib/services/agent/chatAgent.js +136 -0
  117. package/lib/services/agent/costPreflight.d.ts +61 -0
  118. package/lib/services/agent/costPreflight.d.ts.map +1 -0
  119. package/lib/services/agent/costPreflight.js +143 -0
  120. package/lib/services/agent/critic.d.ts +103 -0
  121. package/lib/services/agent/critic.d.ts.map +1 -0
  122. package/lib/services/agent/critic.js +139 -0
  123. package/lib/services/agent/editClassifier.d.ts +262 -0
  124. package/lib/services/agent/editClassifier.d.ts.map +1 -0
  125. package/lib/services/agent/editClassifier.js +186 -0
  126. package/lib/services/agent/eval/index.d.ts +5 -0
  127. package/lib/services/agent/eval/index.d.ts.map +1 -0
  128. package/lib/services/agent/eval/index.js +20 -0
  129. package/lib/services/agent/eval/judge.d.ts +14 -0
  130. package/lib/services/agent/eval/judge.d.ts.map +1 -0
  131. package/lib/services/agent/eval/judge.js +96 -0
  132. package/lib/services/agent/eval/recorder.d.ts +28 -0
  133. package/lib/services/agent/eval/recorder.d.ts.map +1 -0
  134. package/lib/services/agent/eval/recorder.js +100 -0
  135. package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
  136. package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
  137. package/lib/services/agent/eval/seedBriefs.js +1188 -0
  138. package/lib/services/agent/eval/types.d.ts +230 -0
  139. package/lib/services/agent/eval/types.d.ts.map +1 -0
  140. package/lib/services/agent/eval/types.js +73 -0
  141. package/lib/services/agent/executor.d.ts +141 -0
  142. package/lib/services/agent/executor.d.ts.map +1 -0
  143. package/lib/services/agent/executor.js +561 -0
  144. package/lib/services/agent/globalActions.d.ts +49 -0
  145. package/lib/services/agent/globalActions.d.ts.map +1 -0
  146. package/lib/services/agent/globalActions.js +328 -0
  147. package/lib/services/agent/index.d.ts +38 -0
  148. package/lib/services/agent/index.d.ts.map +1 -0
  149. package/lib/services/agent/index.js +53 -0
  150. package/lib/services/agent/llmCaller.d.ts +144 -0
  151. package/lib/services/agent/llmCaller.d.ts.map +1 -0
  152. package/lib/services/agent/llmCaller.js +16 -0
  153. package/lib/services/agent/llmCallerAnthropic.d.ts +90 -0
  154. package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -0
  155. package/lib/services/agent/llmCallerAnthropic.js +255 -0
  156. package/lib/services/agent/llmCallerGateway.d.ts +61 -0
  157. package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
  158. package/lib/services/agent/llmCallerGateway.js +360 -0
  159. package/lib/services/agent/llmCallerRegistry.d.ts +6 -0
  160. package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
  161. package/lib/services/agent/llmCallerRegistry.js +39 -0
  162. package/lib/services/agent/modelQualityNotes.d.ts +100 -0
  163. package/lib/services/agent/modelQualityNotes.d.ts.map +1 -0
  164. package/lib/services/agent/modelQualityNotes.js +248 -0
  165. package/lib/services/agent/modelRouter.d.ts +41 -0
  166. package/lib/services/agent/modelRouter.d.ts.map +1 -0
  167. package/lib/services/agent/modelRouter.js +65 -0
  168. package/lib/services/agent/musicSelect.d.ts +23 -0
  169. package/lib/services/agent/musicSelect.d.ts.map +1 -0
  170. package/lib/services/agent/musicSelect.js +109 -0
  171. package/lib/services/agent/overlayRenderer.d.ts +67 -0
  172. package/lib/services/agent/overlayRenderer.d.ts.map +1 -0
  173. package/lib/services/agent/overlayRenderer.js +253 -0
  174. package/lib/services/agent/perSceneCritic.d.ts +90 -0
  175. package/lib/services/agent/perSceneCritic.d.ts.map +1 -0
  176. package/lib/services/agent/perSceneCritic.js +125 -0
  177. package/lib/services/agent/personas.d.ts +78 -0
  178. package/lib/services/agent/personas.d.ts.map +1 -0
  179. package/lib/services/agent/personas.js +177 -0
  180. package/lib/services/agent/planDiff.d.ts +76 -0
  181. package/lib/services/agent/planDiff.d.ts.map +1 -0
  182. package/lib/services/agent/planDiff.js +182 -0
  183. package/lib/services/agent/planMutations.d.ts +46 -0
  184. package/lib/services/agent/planMutations.d.ts.map +1 -0
  185. package/lib/services/agent/planMutations.js +120 -0
  186. package/lib/services/agent/planner/Planner.d.ts +107 -0
  187. package/lib/services/agent/planner/Planner.d.ts.map +1 -0
  188. package/lib/services/agent/planner/Planner.js +591 -0
  189. package/lib/services/agent/planner/overlaySanity.d.ts +7 -0
  190. package/lib/services/agent/planner/overlaySanity.d.ts.map +1 -0
  191. package/lib/services/agent/planner/overlaySanity.js +86 -0
  192. package/lib/services/agent/planner/promptSections.d.ts +25 -0
  193. package/lib/services/agent/planner/promptSections.d.ts.map +1 -0
  194. package/lib/services/agent/planner/promptSections.js +174 -0
  195. package/lib/services/agent/planner/repair.d.ts +16 -0
  196. package/lib/services/agent/planner/repair.d.ts.map +1 -0
  197. package/lib/services/agent/planner/repair.js +51 -0
  198. package/lib/services/agent/planner/structuralRules.d.ts +10 -0
  199. package/lib/services/agent/planner/structuralRules.d.ts.map +1 -0
  200. package/lib/services/agent/planner/structuralRules.js +111 -0
  201. package/lib/services/agent/planner/validators.d.ts +65 -0
  202. package/lib/services/agent/planner/validators.d.ts.map +1 -0
  203. package/lib/services/agent/planner/validators.js +284 -0
  204. package/lib/services/agent/planner.d.ts +3 -0
  205. package/lib/services/agent/planner.d.ts.map +1 -0
  206. package/lib/services/agent/planner.js +14 -0
  207. package/lib/services/agent/providerFallback/chains.d.ts +100 -0
  208. package/lib/services/agent/providerFallback/chains.d.ts.map +1 -0
  209. package/lib/services/agent/providerFallback/chains.js +198 -0
  210. package/lib/services/agent/providerFallback/classifier.d.ts +36 -0
  211. package/lib/services/agent/providerFallback/classifier.d.ts.map +1 -0
  212. package/lib/services/agent/providerFallback/classifier.js +103 -0
  213. package/lib/services/agent/providerFallback/index.d.ts +4 -0
  214. package/lib/services/agent/providerFallback/index.d.ts.map +1 -0
  215. package/lib/services/agent/providerFallback/index.js +19 -0
  216. package/lib/services/agent/providerFallback/withFallback.d.ts +60 -0
  217. package/lib/services/agent/providerFallback/withFallback.d.ts.map +1 -0
  218. package/lib/services/agent/providerFallback/withFallback.js +93 -0
  219. package/lib/services/agent/providerTaskCache.d.ts +50 -0
  220. package/lib/services/agent/providerTaskCache.d.ts.map +1 -0
  221. package/lib/services/agent/providerTaskCache.js +98 -0
  222. package/lib/services/agent/qualityGate.d.ts +82 -0
  223. package/lib/services/agent/qualityGate.d.ts.map +1 -0
  224. package/lib/services/agent/qualityGate.js +232 -0
  225. package/lib/services/agent/referenceImageRenderer.d.ts +37 -0
  226. package/lib/services/agent/referenceImageRenderer.d.ts.map +1 -0
  227. package/lib/services/agent/referenceImageRenderer.js +92 -0
  228. package/lib/services/agent/regenCore.d.ts +60 -0
  229. package/lib/services/agent/regenCore.d.ts.map +1 -0
  230. package/lib/services/agent/regenCore.js +487 -0
  231. package/lib/services/agent/runHelpers.d.ts +44 -0
  232. package/lib/services/agent/runHelpers.d.ts.map +1 -0
  233. package/lib/services/agent/runHelpers.js +196 -0
  234. package/lib/services/agent/sceneLayoutVision.d.ts +90 -0
  235. package/lib/services/agent/sceneLayoutVision.d.ts.map +1 -0
  236. package/lib/services/agent/sceneLayoutVision.js +212 -0
  237. package/lib/services/agent/stitchedVideoCritic.d.ts +136 -0
  238. package/lib/services/agent/stitchedVideoCritic.d.ts.map +1 -0
  239. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +26 -0
  240. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +1 -0
  241. package/lib/services/agent/stitchedVideoCritic.gemini.js +198 -0
  242. package/lib/services/agent/stitchedVideoCritic.js +162 -0
  243. package/lib/services/agent/taskPoller.d.ts +65 -0
  244. package/lib/services/agent/taskPoller.d.ts.map +1 -0
  245. package/lib/services/agent/taskPoller.js +176 -0
  246. package/lib/services/agent/textOverlayStyles.d.ts +60 -0
  247. package/lib/services/agent/textOverlayStyles.d.ts.map +1 -0
  248. package/lib/services/agent/textOverlayStyles.js +174 -0
  249. package/lib/services/agent/toolRegistry.d.ts +73 -0
  250. package/lib/services/agent/toolRegistry.d.ts.map +1 -0
  251. package/lib/services/agent/toolRegistry.js +95 -0
  252. package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
  253. package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
  254. package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
  255. package/lib/services/agent/tools/animateImage.tool.d.ts +24 -0
  256. package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
  257. package/lib/services/agent/tools/animateImage.tool.js +115 -0
  258. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +32 -0
  259. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
  260. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +135 -0
  261. package/lib/services/agent/tools/composeScene.tool.d.ts +978 -0
  262. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
  263. package/lib/services/agent/tools/composeScene.tool.js +90 -0
  264. package/lib/services/agent/tools/estimateCost.tool.d.ts +352 -0
  265. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
  266. package/lib/services/agent/tools/estimateCost.tool.js +62 -0
  267. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
  268. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
  269. package/lib/services/agent/tools/generateAvatarVideo.tool.js +143 -0
  270. package/lib/services/agent/tools/generateCaptions.tool.d.ts +42 -0
  271. package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +1 -0
  272. package/lib/services/agent/tools/generateCaptions.tool.js +196 -0
  273. package/lib/services/agent/tools/generateImage.tool.d.ts +74 -0
  274. package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
  275. package/lib/services/agent/tools/generateImage.tool.js +206 -0
  276. package/lib/services/agent/tools/generateVideo.tool.d.ts +31 -0
  277. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
  278. package/lib/services/agent/tools/generateVideo.tool.js +153 -0
  279. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +44 -0
  280. package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
  281. package/lib/services/agent/tools/generateVoiceover.tool.js +206 -0
  282. package/lib/services/agent/tools/index.d.ts +20 -0
  283. package/lib/services/agent/tools/index.d.ts.map +1 -0
  284. package/lib/services/agent/tools/index.js +35 -0
  285. package/lib/services/agent/tools/planVideo.tool.d.ts +343 -0
  286. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
  287. package/lib/services/agent/tools/planVideo.tool.js +46 -0
  288. package/lib/services/agent/tools/render.tool.d.ts +367 -0
  289. package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
  290. package/lib/services/agent/tools/render.tool.js +48 -0
  291. package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
  292. package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
  293. package/lib/services/agent/tools/searchMusic.tool.js +74 -0
  294. package/lib/services/agent/tools/searchStock.tool.d.ts +41 -0
  295. package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
  296. package/lib/services/agent/tools/searchStock.tool.js +314 -0
  297. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
  298. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
  299. package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
  300. package/lib/services/agent/ttsDuration.d.ts +29 -0
  301. package/lib/services/agent/ttsDuration.d.ts.map +1 -0
  302. package/lib/services/agent/ttsDuration.js +60 -0
  303. package/lib/services/aiGen/aiGenFactory.service.d.ts +21 -1
  304. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  305. package/lib/services/aiGen/aiGenFactory.service.js +84 -21
  306. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
  307. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
  308. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
  309. package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
  310. package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
  311. package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
  312. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
  313. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
  314. package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
  315. package/lib/services/aiGen/helpers.d.ts.map +1 -1
  316. package/lib/services/aiGen/helpers.js +10 -0
  317. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +14 -3
  318. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
  319. package/lib/services/aiGen/providers/alibaba/alibaba.js +155 -22
  320. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +22 -4
  321. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
  322. package/lib/services/aiGen/providers/baseAiGenProvider.service.js +32 -0
  323. package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
  324. package/lib/services/aiGen/providers/bytedance/bytedance.service.js +13 -13
  325. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
  326. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
  327. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +102 -0
  328. package/lib/services/aiGen/providers/fal/falImage.service.d.ts +15 -0
  329. package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
  330. package/lib/services/aiGen/providers/fal/falImage.service.js +141 -0
  331. package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
  332. package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
  333. package/lib/services/aiGen/providers/fal/index.js +17 -0
  334. package/lib/services/aiGen/providers/google/google.service.d.ts +11 -2
  335. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  336. package/lib/services/aiGen/providers/google/google.service.js +245 -28
  337. package/lib/services/aiGen/providers/index.d.ts +3 -0
  338. package/lib/services/aiGen/providers/index.d.ts.map +1 -1
  339. package/lib/services/aiGen/providers/index.js +3 -0
  340. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
  341. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
  342. package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
  343. package/lib/services/aiGen/providers/kling/index.d.ts +1 -0
  344. package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
  345. package/lib/services/aiGen/providers/kling/index.js +1 -0
  346. package/lib/services/aiGen/providers/kling/kling.service.d.ts +12 -1
  347. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  348. package/lib/services/aiGen/providers/kling/kling.service.js +357 -26
  349. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +21 -0
  350. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +1 -0
  351. package/lib/services/aiGen/providers/kling/klingImage.service.js +208 -0
  352. package/lib/services/aiGen/providers/kling/types.d.ts +105 -0
  353. package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
  354. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +15 -2
  355. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
  356. package/lib/services/aiGen/providers/minimax/minimax.service.js +127 -1
  357. package/lib/services/aiGen/providers/minimax/types.d.ts +10 -1
  358. package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
  359. package/lib/services/aiGen/providers/openai/openai.service.d.ts +8 -2
  360. package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
  361. package/lib/services/aiGen/providers/openai/openai.service.js +184 -7
  362. package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
  363. package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
  364. package/lib/services/aiGen/providers/{azure → pexels}/index.js +1 -1
  365. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
  366. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
  367. package/lib/services/aiGen/providers/pexels/pexels.service.js +150 -0
  368. package/lib/services/aiGen/providers/pixabay/index.d.ts +2 -0
  369. package/lib/services/aiGen/providers/pixabay/index.d.ts.map +1 -0
  370. package/lib/services/aiGen/providers/pixabay/index.js +17 -0
  371. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +12 -0
  372. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +1 -0
  373. package/lib/services/aiGen/providers/pixabay/pixabay.service.js +156 -0
  374. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  375. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +125 -2
  376. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
  377. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
  378. package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
  379. package/lib/services/aiGen/providers/runway/runway.service.d.ts +12 -2
  380. package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
  381. package/lib/services/aiGen/providers/runway/runway.service.js +224 -21
  382. package/lib/services/aiGen/providers/types.d.ts +263 -6
  383. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  384. package/lib/services/aiGen/providers/unsplash/index.d.ts +2 -0
  385. package/lib/services/aiGen/providers/unsplash/index.d.ts.map +1 -0
  386. package/lib/services/aiGen/providers/unsplash/index.js +17 -0
  387. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +16 -0
  388. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +1 -0
  389. package/lib/services/aiGen/providers/unsplash/unsplash.service.js +131 -0
  390. package/lib/services/analytics.service.js +2 -4
  391. package/lib/services/apiUsageCounter.service.d.ts +20 -0
  392. package/lib/services/apiUsageCounter.service.d.ts.map +1 -0
  393. package/lib/services/apiUsageCounter.service.js +84 -0
  394. package/lib/services/asr/assemblyai.service.d.ts +72 -0
  395. package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
  396. package/lib/services/asr/assemblyai.service.js +89 -0
  397. package/lib/services/asr/index.d.ts +3 -0
  398. package/lib/services/asr/index.d.ts.map +1 -0
  399. package/lib/services/asr/index.js +18 -0
  400. package/lib/services/asr/whisper.service.d.ts +18 -0
  401. package/lib/services/asr/whisper.service.d.ts.map +1 -0
  402. package/lib/services/asr/whisper.service.js +151 -0
  403. package/lib/services/assetCache.service.d.ts +54 -0
  404. package/lib/services/assetCache.service.d.ts.map +1 -0
  405. package/lib/services/assetCache.service.js +109 -0
  406. package/lib/services/audioAnalysis/index.d.ts +2 -0
  407. package/lib/services/audioAnalysis/index.d.ts.map +1 -0
  408. package/lib/services/audioAnalysis/index.js +17 -0
  409. package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
  410. package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
  411. package/lib/services/audioAnalysis/onsetDetection.service.js +140 -0
  412. package/lib/services/bullmq.service.d.ts +6 -1
  413. package/lib/services/bullmq.service.d.ts.map +1 -1
  414. package/lib/services/bullmq.service.js +62 -14
  415. package/lib/services/credit.service.d.ts.map +1 -1
  416. package/lib/services/credit.service.js +45 -7
  417. package/lib/services/credits/pricing.d.ts +58 -0
  418. package/lib/services/credits/pricing.d.ts.map +1 -0
  419. package/lib/services/credits/pricing.js +111 -0
  420. package/lib/services/editor/designToProject.d.ts +75 -0
  421. package/lib/services/editor/designToProject.d.ts.map +1 -0
  422. package/lib/services/editor/designToProject.js +295 -0
  423. package/lib/services/editor/planToProject.d.ts +84 -0
  424. package/lib/services/editor/planToProject.d.ts.map +1 -0
  425. package/lib/services/editor/planToProject.js +395 -0
  426. package/lib/services/editor/projectToDesign.d.ts +4 -0
  427. package/lib/services/editor/projectToDesign.d.ts.map +1 -0
  428. package/lib/services/editor/projectToDesign.js +186 -0
  429. package/lib/services/firestore.service.d.ts +17 -0
  430. package/lib/services/firestore.service.d.ts.map +1 -1
  431. package/lib/services/firestore.service.js +30 -0
  432. package/lib/services/gcp/index.d.ts +1 -0
  433. package/lib/services/gcp/index.d.ts.map +1 -1
  434. package/lib/services/gcp/index.js +1 -0
  435. package/lib/services/gcp/uploadAudioBuffer.d.ts +13 -0
  436. package/lib/services/gcp/uploadAudioBuffer.d.ts.map +1 -0
  437. package/lib/services/gcp/uploadAudioBuffer.js +28 -0
  438. package/lib/services/index.d.ts +13 -0
  439. package/lib/services/index.d.ts.map +1 -1
  440. package/lib/services/index.js +13 -0
  441. package/lib/services/musicGen/index.d.ts +6 -0
  442. package/lib/services/musicGen/index.d.ts.map +1 -0
  443. package/lib/services/musicGen/index.js +26 -0
  444. package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
  445. package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
  446. package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
  447. package/lib/services/musicGen/providers/curated.service.d.ts +24 -0
  448. package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
  449. package/lib/services/musicGen/providers/curated.service.js +173 -0
  450. package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
  451. package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
  452. package/lib/services/musicGen/providers/jamendo.service.js +113 -0
  453. package/lib/services/musicGen/providers/mubert.service.d.ts +10 -0
  454. package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
  455. package/lib/services/musicGen/providers/mubert.service.js +128 -0
  456. package/lib/services/musicGen/types.d.ts +46 -0
  457. package/lib/services/musicGen/types.d.ts.map +1 -0
  458. package/lib/services/musicGen/types.js +10 -0
  459. package/lib/services/notification.service.d.ts +22 -0
  460. package/lib/services/notification.service.d.ts.map +1 -0
  461. package/lib/services/notification.service.js +76 -0
  462. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +78 -0
  463. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -0
  464. package/lib/services/rateLimiter/distributedRateLimiter.service.js +269 -0
  465. package/lib/services/rateLimiter/index.d.ts +2 -0
  466. package/lib/services/rateLimiter/index.d.ts.map +1 -0
  467. package/lib/services/rateLimiter/index.js +17 -0
  468. package/lib/services/redis.service.d.ts +9 -0
  469. package/lib/services/redis.service.d.ts.map +1 -1
  470. package/lib/services/redis.service.js +20 -11
  471. package/lib/services/redisOptions.d.ts +22 -0
  472. package/lib/services/redisOptions.d.ts.map +1 -0
  473. package/lib/services/redisOptions.js +51 -0
  474. package/lib/services/tts/index.d.ts +2 -0
  475. package/lib/services/tts/index.d.ts.map +1 -1
  476. package/lib/services/tts/index.js +2 -0
  477. package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
  478. package/lib/services/tts/providers/elevenlabs.service.js +91 -24
  479. package/lib/services/tts/providers/minimax.service.d.ts +14 -0
  480. package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
  481. package/lib/services/tts/providers/minimax.service.js +78 -0
  482. package/lib/services/tts/providers/openai.service.d.ts +14 -0
  483. package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
  484. package/lib/services/tts/providers/openai.service.js +73 -0
  485. package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
  486. package/lib/services/tts/ttsFactory.service.js +6 -0
  487. package/lib/services/tts/types.d.ts +33 -0
  488. package/lib/services/tts/types.d.ts.map +1 -1
  489. package/lib/utils/errors.d.ts +8 -0
  490. package/lib/utils/errors.d.ts.map +1 -1
  491. package/lib/utils/errors.js +8 -0
  492. package/lib/utils/helpers.d.ts +13 -0
  493. package/lib/utils/helpers.d.ts.map +1 -1
  494. package/lib/utils/helpers.js +48 -11
  495. package/lib/utils/logger.d.ts.map +1 -1
  496. package/lib/utils/logger.js +37 -1
  497. package/package.json +5 -1
  498. package/lib/services/aiGen/providers/azure/azure.service.d.ts +0 -14
  499. package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +0 -1
  500. package/lib/services/aiGen/providers/azure/azure.service.js +0 -108
  501. package/lib/services/aiGen/providers/azure/index.d.ts +0 -2
  502. package/lib/services/aiGen/providers/azure/index.d.ts.map +0 -1
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ /**
3
+ * AG-45 — quality gate. Decides whether a generated video (per-scene or
4
+ * stitched) is ship-worthy, needs a cheap re-mux, needs a surgical re-gen on
5
+ * specific scenes, or needs a full replan.
6
+ *
7
+ * Why this exists: the original critic-driven loop in `repairTrace.ts` treated
8
+ * any `severity: 'fail'` finding as a regen trigger. That cost Test 1 4×
9
+ * scene regenerations (~16 credits) over a SINGLE prompt-vs-reference-image
10
+ * misalignment that didn't actually break the video — the bottle was just a
11
+ * different shade of green than the brief said. The user's point was sharp:
12
+ * "if the result was too bad then only regenerate", and the natural rule is
13
+ * a score band + severity floor:
14
+ *
15
+ * per-scene score
16
+ * ≥ 7 ship as-is
17
+ * 5.0–6.9 ship-with-caveats (no auto-regen)
18
+ * 3.0–4.9 surgical regen (scenes the critic flagged)
19
+ * < 3.0 critical — bypass cost-confirmation if cheap
20
+ *
21
+ * stitched score
22
+ * ≥ 7 + shippable deliver
23
+ * 5.0–6.9 no FAIL text/music re-mux only ($0)
24
+ * < 5.0 or FAIL surgical regen on flagged scenes
25
+ * < 3.0 replan (very rare; last resort)
26
+ *
27
+ * guardrails (orthogonal to score):
28
+ * - WARN severity is informational; only FAIL counts toward actions
29
+ * - actionPlausibility FAIL is always actionable, regardless of score —
30
+ * sealed-cap-while-drinking type errors break user trust at any score
31
+ * - max 2 regen attempts per scene per run (`scene.regenCount`)
32
+ * - cumulative cost budget: stop retrying when retry $ > 1.5× original $
33
+ *
34
+ * Every decision is returned as a structured object so the caller (repairTrace,
35
+ * videoJobProcessor, or any future UI) can log it to trace under
36
+ * `qualityGate: GateDecision[]` and let us tune the thresholds from data.
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.makeBudgetState = makeBudgetState;
40
+ exports.decidePerSceneAction = decidePerSceneAction;
41
+ exports.decideStitchedAction = decideStitchedAction;
42
+ function makeBudgetState(initial) {
43
+ return {
44
+ totalCreditsSpent: initial.totalCreditsSpent ?? initial.originalCreditsBudget,
45
+ originalCreditsBudget: initial.originalCreditsBudget,
46
+ regenCountByScene: initial.regenCountByScene ?? {},
47
+ maxRegenPerScene: initial.maxRegenPerScene ?? 2,
48
+ retryBudgetMultiplier: initial.retryBudgetMultiplier ?? 1.5,
49
+ };
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Thresholds — single source of truth so we can tune from data later.
53
+ // ---------------------------------------------------------------------------
54
+ const PER_SCENE_SHIP = 7.0;
55
+ const PER_SCENE_ACCEPTABLE = 5.0;
56
+ const PER_SCENE_CRITICAL = 3.0;
57
+ const STITCHED_SHIP = 7.0;
58
+ const STITCHED_ACCEPTABLE = 5.0;
59
+ const STITCHED_REPLAN = 3.0;
60
+ /** Dimensions that always trigger action when FAIL, regardless of score. */
61
+ const ALWAYS_ACTIONABLE_FAIL_DIMENSIONS = new Set([
62
+ "actionPlausibility", // sealed cap while drinking, doors that open the wrong way
63
+ "promptAdherence", // explicit user-requested element missing
64
+ "brandTextLegibility", // user can't read the brand → ad is broken
65
+ ]);
66
+ // ---------------------------------------------------------------------------
67
+ // Per-scene decision
68
+ // ---------------------------------------------------------------------------
69
+ function decidePerSceneAction(review, budget, opts = {}) {
70
+ const fails = review.findings.filter((f) => f.severity === "fail");
71
+ const warns = review.findings.filter((f) => f.severity === "warn");
72
+ const hardActionableFail = fails.find((f) => ALWAYS_ACTIONABLE_FAIL_DIMENSIONS.has(f.dimension));
73
+ const attemptedTimes = budget.regenCountByScene[review.sceneIndex] ?? 0;
74
+ const overAttemptCap = attemptedTimes >= budget.maxRegenPerScene;
75
+ const retryBudgetCap = budget.originalCreditsBudget * budget.retryBudgetMultiplier;
76
+ const overCostBudget = budget.totalCreditsSpent + (opts.perSceneRegenCostCredits ?? 4) > retryBudgetCap;
77
+ const overGuardrail = overAttemptCap || overCostBudget;
78
+ const baseCaveats = warns.map((w) => `${w.dimension}: ${w.message}`);
79
+ if (review.score >= PER_SCENE_SHIP) {
80
+ return {
81
+ action: "ship",
82
+ score: review.score,
83
+ reason: `score ${review.score.toFixed(1)} ≥ ${PER_SCENE_SHIP} → ship`,
84
+ drivingFindings: warns.map(findingToTelemetry(review.sceneIndex)),
85
+ };
86
+ }
87
+ if (review.score >= PER_SCENE_ACCEPTABLE && !hardActionableFail) {
88
+ return {
89
+ action: "ship-with-caveats",
90
+ score: review.score,
91
+ reason: `score ${review.score.toFixed(1)} in [${PER_SCENE_ACCEPTABLE}, ${PER_SCENE_SHIP}) with no actionable FAIL — ship with caveats`,
92
+ caveats: baseCaveats,
93
+ drivingFindings: [...warns, ...fails].map(findingToTelemetry(review.sceneIndex)),
94
+ };
95
+ }
96
+ // From here we'd like to regen, but guardrails might block it.
97
+ if (overGuardrail) {
98
+ const why = overAttemptCap
99
+ ? `scene already retried ${attemptedTimes}/${budget.maxRegenPerScene} times — ship best-effort`
100
+ : `retry would exceed ${budget.retryBudgetMultiplier}× cost cap — ship best-effort`;
101
+ return {
102
+ action: "ship-with-caveats",
103
+ score: review.score,
104
+ reason: `score ${review.score.toFixed(1)} below ${PER_SCENE_ACCEPTABLE} BUT ${why}`,
105
+ caveats: [
106
+ `Quality below preferred threshold (${review.score.toFixed(1)}/10).`,
107
+ ...fails.map((f) => `${f.dimension} FAIL: ${f.message}`),
108
+ ],
109
+ drivingFindings: fails.map(findingToTelemetry(review.sceneIndex)),
110
+ };
111
+ }
112
+ const driving = hardActionableFail ? [hardActionableFail] : fails;
113
+ const critical = review.score < PER_SCENE_CRITICAL;
114
+ return {
115
+ action: "regen-scenes",
116
+ score: review.score,
117
+ reason: critical
118
+ ? `score ${review.score.toFixed(1)} < ${PER_SCENE_CRITICAL} (critical) → regen scene ${review.sceneIndex}`
119
+ : hardActionableFail
120
+ ? `${hardActionableFail.dimension} FAIL is always actionable → regen scene ${review.sceneIndex}`
121
+ : `score ${review.score.toFixed(1)} < ${PER_SCENE_ACCEPTABLE} → regen scene ${review.sceneIndex}`,
122
+ sceneIndices: [review.sceneIndex],
123
+ estimatedRegenCredits: opts.perSceneRegenCostCredits ?? 4,
124
+ drivingFindings: driving.map(findingToTelemetry(review.sceneIndex)),
125
+ };
126
+ }
127
+ // ---------------------------------------------------------------------------
128
+ // Stitched (final video) decision
129
+ // ---------------------------------------------------------------------------
130
+ function decideStitchedAction(stitched, perScene, budget, opts = {}) {
131
+ const fails = stitched.findings.filter((f) => f.severity === "fail");
132
+ const warns = stitched.findings.filter((f) => f.severity === "warn");
133
+ const hardActionableFail = fails.find((f) => ALWAYS_ACTIONABLE_FAIL_DIMENSIONS.has(f.dimension));
134
+ if (stitched.score >= STITCHED_SHIP && stitched.shippable) {
135
+ return {
136
+ action: "ship",
137
+ score: stitched.score,
138
+ reason: `stitched score ${stitched.score.toFixed(1)} ≥ ${STITCHED_SHIP} + shippable=true → ship`,
139
+ drivingFindings: warns.map(stitchedFindingToTelemetry),
140
+ };
141
+ }
142
+ // Replan band — only when score is awful AND structural issues (not just
143
+ // bad bottle texture) — that's `voiceoverPacing`, `cutRhythm`, `audioMixBalance`
144
+ // or `overallImpression` FAILs.
145
+ const structuralFail = fails.find((f) => ["voiceoverPacing", "cutRhythm", "audioMixBalance", "overallImpression"].includes(f.dimension));
146
+ if (stitched.score < STITCHED_REPLAN && structuralFail) {
147
+ return {
148
+ action: "replan",
149
+ score: stitched.score,
150
+ reason: `stitched score ${stitched.score.toFixed(1)} < ${STITCHED_REPLAN} with structural FAIL (${structuralFail.dimension}) → replan`,
151
+ drivingFindings: fails.map(stitchedFindingToTelemetry),
152
+ };
153
+ }
154
+ // Acceptable band with no FAILs → text/music re-mux only (cheap polish).
155
+ if (stitched.score >= STITCHED_ACCEPTABLE && fails.length === 0) {
156
+ return {
157
+ action: "ship-with-caveats",
158
+ score: stitched.score,
159
+ reason: `stitched score ${stitched.score.toFixed(1)} in [${STITCHED_ACCEPTABLE}, ${STITCHED_SHIP}) with zero FAIL → ship with caveats (no regen)`,
160
+ caveats: warns.map((w) => `${w.dimension}: ${w.message}`),
161
+ drivingFindings: warns.map(stitchedFindingToTelemetry),
162
+ };
163
+ }
164
+ // Surgical regen band — find which scenes need it.
165
+ const sceneIndicesFromStitched = new Set();
166
+ for (const f of fails) {
167
+ if (typeof f.sceneIndexHint === "number")
168
+ sceneIndicesFromStitched.add(f.sceneIndexHint);
169
+ }
170
+ // Cross-reference per-scene critic for scenes that scored badly.
171
+ for (const r of perScene) {
172
+ if (r.score < PER_SCENE_ACCEPTABLE)
173
+ sceneIndicesFromStitched.add(r.sceneIndex);
174
+ }
175
+ // Honour user-intent scope when present.
176
+ let sceneIndices = Array.from(sceneIndicesFromStitched).sort((a, b) => a - b);
177
+ if (opts.userIntentScope?.length) {
178
+ sceneIndices = sceneIndices.filter((i) => opts.userIntentScope.includes(i));
179
+ }
180
+ if (sceneIndices.length === 0) {
181
+ // FAIL findings but none locatable to a scene + outside user scope.
182
+ return {
183
+ action: "remix",
184
+ score: stitched.score,
185
+ reason: `stitched score ${stitched.score.toFixed(1)} with FAILs that don't map to any in-scope scene → re-mux only`,
186
+ drivingFindings: fails.map(stitchedFindingToTelemetry),
187
+ };
188
+ }
189
+ const retryCost = sceneIndices.length * (opts.perSceneRegenCostCredits ?? 4);
190
+ const retryBudgetCap = budget.originalCreditsBudget * budget.retryBudgetMultiplier;
191
+ if (budget.totalCreditsSpent + retryCost > retryBudgetCap) {
192
+ return {
193
+ action: "ship-with-caveats",
194
+ score: stitched.score,
195
+ reason: `regen would cost ${retryCost} credits, exceeding ${budget.retryBudgetMultiplier}× original budget → ship best-effort`,
196
+ caveats: [
197
+ `Score ${stitched.score.toFixed(1)}/10 below ideal but regen cost capped.`,
198
+ ...fails.map((f) => `${f.dimension} FAIL: ${f.message}`),
199
+ ],
200
+ drivingFindings: fails.map(stitchedFindingToTelemetry),
201
+ };
202
+ }
203
+ return {
204
+ action: "regen-scenes",
205
+ score: stitched.score,
206
+ reason: hardActionableFail
207
+ ? `${hardActionableFail.dimension} FAIL is always actionable → regen ${sceneIndices.length} scene(s)`
208
+ : `stitched score ${stitched.score.toFixed(1)} < ${STITCHED_ACCEPTABLE} with FAILs → regen ${sceneIndices.length} scene(s)`,
209
+ sceneIndices,
210
+ estimatedRegenCredits: retryCost,
211
+ drivingFindings: fails.map(stitchedFindingToTelemetry),
212
+ };
213
+ }
214
+ // ---------------------------------------------------------------------------
215
+ // Helpers
216
+ // ---------------------------------------------------------------------------
217
+ function findingToTelemetry(sceneIndex) {
218
+ return (f) => ({
219
+ sceneIndex,
220
+ dimension: f.dimension,
221
+ severity: f.severity,
222
+ message: f.message,
223
+ });
224
+ }
225
+ function stitchedFindingToTelemetry(f) {
226
+ return {
227
+ sceneIndex: f.sceneIndexHint,
228
+ dimension: f.dimension,
229
+ severity: f.severity,
230
+ message: f.message,
231
+ };
232
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * referenceImageRenderer — AG-13 (C2 tier) pre-pass.
3
+ *
4
+ * Walks the AgentVisualBible and renders ONE reference image per entity via
5
+ * the generate_image tool. The resulting URLs are written back onto each
6
+ * entity's `referenceImageUrl` field so the executor can thread them into
7
+ * scene-level image-gen calls (image-to-image / subject-reference) to lock
8
+ * identity across scenes.
9
+ *
10
+ * Cost model: ~$0.04 × N entities for nano-banana (1 image each). On a
11
+ * typical UGC brief with 1 character + 1 product + 1 environment, this is
12
+ * ~$0.12 added to the run — paid once, amortised across every scene.
13
+ *
14
+ * Failure mode: per-entity isolated. If CHAR_1 renders fail, the bible still
15
+ * gets returned with CHAR_1.referenceImageUrl=undefined; the executor falls
16
+ * back to text-only consistency for that one entity. We do NOT block the
17
+ * whole run for one entity miss.
18
+ */
19
+ import type { AgentVisualBible } from "../../schemas/videoPlan.schema";
20
+ import type { RunToolFn } from "./executor";
21
+ import type { ToolContext } from "./toolRegistry";
22
+ export interface RenderReferenceImagesOptions {
23
+ /** Image model key. Default google-nano-banana — cheap + supports multi-ref. */
24
+ modelKey?: string;
25
+ /** Aspect ratio for the reference still. Default 1:1 (good for identity refs). */
26
+ aspectRatio?: "1:1" | "9:16" | "16:9" | "4:5" | "3:4" | "4:3";
27
+ /** Inject for tracing / replay (eval harness). */
28
+ runTool?: RunToolFn;
29
+ }
30
+ export declare function renderReferenceImages(bible: AgentVisualBible, ctx: ToolContext, opts?: RenderReferenceImagesOptions): Promise<AgentVisualBible>;
31
+ /**
32
+ * Helper used by the executor to pluck the referenceImageUrls for a given
33
+ * scene's bibleEntityIds. Returns up to `cap` URLs (provider limits vary —
34
+ * Nano Banana 14, OpenAI 16, Seedream 10, Qwen 3, MiniMax 1).
35
+ */
36
+ export declare function collectReferenceImageUrls(bible: AgentVisualBible | undefined, entityIds: string[], cap?: number): string[];
37
+ //# sourceMappingURL=referenceImageRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referenceImageRenderer.d.ts","sourceRoot":"","sources":["../../../src/services/agent/referenceImageRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,gCAAgC,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,4BAA4B;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9D,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAkCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,SAAI,GACN,MAAM,EAAE,CAcV"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderReferenceImages = renderReferenceImages;
4
+ exports.collectReferenceImageUrls = collectReferenceImageUrls;
5
+ const toolRegistry_1 = require("./toolRegistry");
6
+ async function renderReferenceImages(bible, ctx, opts = {}) {
7
+ if (bible.consistencyTier !== "C2") {
8
+ // No-op for C0 / C1.
9
+ return bible;
10
+ }
11
+ const runTool = opts.runTool ?? toolRegistry_1.runTool;
12
+ const modelKey = opts.modelKey ?? "google-nano-banana";
13
+ const aspectRatio = opts.aspectRatio ?? "1:1";
14
+ const renderOne = async (entity, kind) => {
15
+ if (entity.referenceImageUrl)
16
+ return entity; // pre-supplied (e.g. brandKit.presenterFaceUrl wired in)
17
+ const prompt = buildReferencePrompt(entity, kind);
18
+ try {
19
+ const out = await runTool("generate_image", {
20
+ prompt,
21
+ modelKey,
22
+ aspectRatio,
23
+ numImages: 1,
24
+ }, { ...ctx, idempotencyKey: `${ctx.idempotencyKey}:ref-${entity.id}` });
25
+ if (out.ok && out.output.imageUrl) {
26
+ return { ...entity, referenceImageUrl: out.output.imageUrl };
27
+ }
28
+ return entity;
29
+ }
30
+ catch {
31
+ // Per-entity miss is non-fatal — degrade to text-only for this entity.
32
+ return entity;
33
+ }
34
+ };
35
+ const [characters, objects, environments] = await Promise.all([
36
+ Promise.all(bible.characters.map((c) => renderOne(c, "character"))),
37
+ Promise.all(bible.objects.map((o) => renderOne(o, "object"))),
38
+ Promise.all(bible.environments.map((e) => renderOne(e, "environment"))),
39
+ ]);
40
+ return { ...bible, characters, objects, environments };
41
+ }
42
+ function buildReferencePrompt(entity, kind) {
43
+ switch (kind) {
44
+ case "character":
45
+ // Portrait-style reference so the subject's face + wardrobe + build
46
+ // are all clearly visible for downstream identity transfer.
47
+ return [
48
+ "Reference portrait, full-body, neutral background, soft even studio lighting,",
49
+ "subject centered, looking at camera, no props.",
50
+ entity.description,
51
+ ].join(" ");
52
+ case "object":
53
+ // Product-shot style reference — single subject, clean background, all
54
+ // identifying labels / colors / proportions visible.
55
+ return [
56
+ "Reference product shot, single subject centered on a clean neutral seamless background,",
57
+ "soft even studio lighting, all labels and details clearly visible, no props.",
58
+ entity.description,
59
+ ].join(" ");
60
+ case "environment":
61
+ // Wide environmental establishing shot — establishes the palette and
62
+ // lighting the executor will match in subsequent scenes.
63
+ return [
64
+ "Reference establishing shot of an environment, wide angle, no people, no products,",
65
+ "showing the dominant palette and lighting clearly.",
66
+ entity.description,
67
+ ].join(" ");
68
+ }
69
+ }
70
+ /**
71
+ * Helper used by the executor to pluck the referenceImageUrls for a given
72
+ * scene's bibleEntityIds. Returns up to `cap` URLs (provider limits vary —
73
+ * Nano Banana 14, OpenAI 16, Seedream 10, Qwen 3, MiniMax 1).
74
+ */
75
+ function collectReferenceImageUrls(bible, entityIds, cap = 3) {
76
+ if (!bible || !entityIds.length)
77
+ return [];
78
+ const all = [
79
+ ...bible.characters,
80
+ ...bible.objects,
81
+ ...bible.environments,
82
+ ];
83
+ const urls = [];
84
+ for (const id of entityIds) {
85
+ const ent = all.find((e) => e.id === id);
86
+ if (ent?.referenceImageUrl)
87
+ urls.push(ent.referenceImageUrl);
88
+ if (urls.length >= cap)
89
+ break;
90
+ }
91
+ return urls;
92
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Stage 7 (Session H) — shared core for single-target regen.
3
+ *
4
+ * Mirrors `runRegenTarget` in apps/firebase-functions/src/controllers/
5
+ * agent.controller.ts so both the synchronous Function endpoints AND the
6
+ * new AGENT_REGEN_JOBS worker call the same code path. Until Stage 8
7
+ * deletes the in-controller copy, this file is the authoritative
8
+ * implementation; the controller copy stays for backwards-compatibility
9
+ * with the existing sync endpoints (they keep working unchanged).
10
+ *
11
+ * Pure logic — never reads from / writes to Firestore. The caller threads
12
+ * project state (the bulk executor reuses one in-memory snapshot across
13
+ * targets) and persists once. Per-target cache mints go via `ctx.cacheMints`
14
+ * which the caller writes back as `providerTaskCache.<clipId>` dot-paths.
15
+ */
16
+ import { Project } from "../../schemas/project.schema";
17
+ import { VideoPlan } from "../../schemas/videoPlan.schema";
18
+ import { IAgentProjectModel } from "../../models/agent.model";
19
+ import { ProviderTaskCacheEntry } from "./providerTaskCache";
20
+ import type { RegenTarget } from "./planDiff";
21
+ import type { RegenCostEstimate } from "../credits/pricing";
22
+ export interface RegenCoreOptions {
23
+ /** Voiceover-only: if provided, rewrites scene.voiceoverLine and emits nextPlan. */
24
+ overrideLine?: string;
25
+ /** Voiceover-only: passthrough to cost estimation when captions will be re-cut afterward. */
26
+ captionsAlsoChange?: boolean;
27
+ /** Overlays-only: free-text user instruction handed to the planner. */
28
+ instruction?: string;
29
+ }
30
+ export interface RegenCoreSuccess {
31
+ ok: true;
32
+ nextPlan?: VideoPlan;
33
+ nextProjectJson: Project;
34
+ runId?: string;
35
+ toolCalls: unknown[];
36
+ cost: RegenCostEstimate;
37
+ details: Record<string, unknown>;
38
+ }
39
+ export interface RegenCoreError {
40
+ ok: false;
41
+ error: string;
42
+ code?: string;
43
+ /** Suggested HTTP status if surfaced by an HTTP wrapper. */
44
+ status?: number;
45
+ }
46
+ export type RegenCoreResult = RegenCoreSuccess | RegenCoreError;
47
+ export interface RegenCoreContext {
48
+ projectId: string;
49
+ userId: string;
50
+ /** Per-clipId cache mints; caller persists these as `providerTaskCache.<clipId>` patches. */
51
+ cacheMints: Record<string, ProviderTaskCacheEntry>;
52
+ }
53
+ /**
54
+ * Run a single regen target against an in-memory project snapshot.
55
+ * Behavioural parity with each per-component HTTP handler in the
56
+ * controller so the bulk executor and the per-component path produce
57
+ * identical projectJson / plan mutations.
58
+ */
59
+ export declare function executeRegenTarget(target: RegenTarget, project: IAgentProjectModel, ctx: RegenCoreContext, options?: RegenCoreOptions): Promise<RegenCoreResult>;
60
+ //# sourceMappingURL=regenCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenCore.d.ts","sourceRoot":"","sources":["../../../src/services/agent/regenCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAQ,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAW9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAsd1B"}