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,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonaRouter = exports.PERSONA_PACKS = exports.AgentPersonaSchema = void 0;
4
+ exports.resolveConsistencyTier = resolveConsistencyTier;
5
+ const zod_1 = require("zod");
6
+ const agentPersona_schema_1 = require("../../schemas/agentPersona.schema");
7
+ Object.defineProperty(exports, "AgentPersonaSchema", { enumerable: true, get: function () { return agentPersona_schema_1.AgentPersonaSchema; } });
8
+ const modelRouter_1 = require("./modelRouter");
9
+ exports.PERSONA_PACKS = {
10
+ "ugc-ad": {
11
+ id: "ugc-ad",
12
+ label: "UGC Ad",
13
+ blurb: "Hook-first 9:16 ads with creator energy and punchy product reveals.",
14
+ defaults: {
15
+ aspect: "9:16",
16
+ durationSec: 30,
17
+ tone: "warm",
18
+ pacing: "fast",
19
+ hookStyle: "pattern-interrupt",
20
+ tierBudget: "T2",
21
+ },
22
+ plannerPrompt: [
23
+ "UGC ad rules:",
24
+ "- First 3s MUST be a problem-statement or pattern-interrupt hook (no logos, no slow b-roll).",
25
+ "- Cut every 1.5–2.5s after the hook.",
26
+ "- Voiceover or talking-head drives the script; visuals support, not lead.",
27
+ "- End with a one-sentence CTA + product name burned in.",
28
+ "- Avoid medical / unverifiable claims (legal risk).",
29
+ ].join("\n"),
30
+ defaultBpm: 110,
31
+ criticEmphasis: { hookStrength: 0.3, brandSafety: 0.2 },
32
+ recommendedConsistencyTier: "C2",
33
+ },
34
+ "faceless-yt": {
35
+ id: "faceless-yt",
36
+ label: "Faceless YouTube",
37
+ blurb: "Educational 16:9 explainers built mostly from cheap stock + voiceover.",
38
+ defaults: {
39
+ aspect: "16:9",
40
+ durationSec: 60,
41
+ tone: "informational",
42
+ pacing: "medium",
43
+ hookStyle: "bold-claim",
44
+ tierBudget: "T0",
45
+ },
46
+ plannerPrompt: [
47
+ "Faceless YouTube rules:",
48
+ "- Mostly T0 (stock + Ken Burns) to keep cost <$0.10/video.",
49
+ "- Hook = counter-intuitive claim or surprising stat in first 8s.",
50
+ "- Captions burned in; assume sound-off viewing.",
51
+ "- 1 voiceover line per scene; visuals illustrate the line literally.",
52
+ "- Avoid copyrighted footage; prefer stock and AI-generated stills.",
53
+ ].join("\n"),
54
+ criticEmphasis: { costVsTier: 0.25, voVisualSync: 0.25 },
55
+ recommendedConsistencyTier: "C1",
56
+ },
57
+ "product-demo": {
58
+ id: "product-demo",
59
+ label: "Product Demo",
60
+ blurb: "Square e-comm demos with hero shot first and crisp end-cards.",
61
+ defaults: {
62
+ aspect: "1:1",
63
+ durationSec: 20,
64
+ tone: "energetic",
65
+ pacing: "fast",
66
+ hookStyle: "demo",
67
+ tierBudget: "T2",
68
+ },
69
+ plannerPrompt: [
70
+ "Product demo rules:",
71
+ "- Hero product shot in first 3s (T2 image-to-video on the hero only).",
72
+ "- T0 stock or T1 AI image+motion for filler scenes between.",
73
+ "- Background music ducked under voiceover; no music-only sections.",
74
+ "- End-card with logo + CTA; aspect MUST match brief (default 1:1).",
75
+ ].join("\n"),
76
+ criticEmphasis: { intentMatch: 0.3, brandSafety: 0.15 },
77
+ recommendedConsistencyTier: "C2",
78
+ },
79
+ "talking-head": {
80
+ id: "talking-head",
81
+ label: "Talking-Head Educator",
82
+ blurb: "Authority-driven explainers using a presenter avatar + b-roll cutaways.",
83
+ defaults: {
84
+ aspect: "16:9",
85
+ durationSec: 45,
86
+ tone: "professional",
87
+ pacing: "medium",
88
+ hookStyle: "question",
89
+ tierBudget: "T1",
90
+ },
91
+ plannerPrompt: [
92
+ "Talking-head educator rules:",
93
+ "- Persona is on-camera (avatar or stock talking-head); cut to b-roll for emphasis only.",
94
+ "- Open with a question the viewer has googled.",
95
+ "- One key insight per 10s; recap at end.",
96
+ "- Prefer T1 (image+motion) for b-roll; T0 stock fallbacks if budget tight.",
97
+ ].join("\n"),
98
+ criticEmphasis: { intentMatch: 0.25, voVisualSync: 0.25 },
99
+ recommendedConsistencyTier: "C2",
100
+ },
101
+ "social-recap": {
102
+ id: "social-recap",
103
+ label: "Social Recap",
104
+ blurb: "Fast multi-clip recaps for news, sports, listicles — beat-cut energy.",
105
+ defaults: {
106
+ aspect: "9:16",
107
+ durationSec: 30,
108
+ tone: "energetic",
109
+ pacing: "very-fast",
110
+ hookStyle: "stat",
111
+ tierBudget: "T0",
112
+ },
113
+ plannerPrompt: [
114
+ "Social recap rules:",
115
+ "- Cuts on the music beat; assume an upbeat track at 110–130 BPM.",
116
+ "- 1 sentence per clip max; on-screen text mirrors voice.",
117
+ "- Mostly T0 stock; use AI generation sparingly for transitions.",
118
+ "- Hook = the most surprising stat or the punchline up front.",
119
+ ].join("\n"),
120
+ defaultBpm: 120,
121
+ criticEmphasis: { pacingFit: 0.3, costVsTier: 0.2 },
122
+ recommendedConsistencyTier: "C1",
123
+ },
124
+ };
125
+ /**
126
+ * AG-30: resolve the consistency tier for an agent run. Brief wins when set
127
+ * explicitly; otherwise fall back to the persona's recommendation; otherwise
128
+ * the safe global default of C1. UGC / talking-head / product-demo
129
+ * recommend C2 because the same presenter/product needs to look identical
130
+ * across cuts — text descriptions alone produce a different actor every
131
+ * scene (Test 1 had 5 different women in 5 scenes on C1).
132
+ */
133
+ function resolveConsistencyTier(persona, briefTier) {
134
+ if (briefTier)
135
+ return briefTier;
136
+ const personaTier = persona ? exports.PERSONA_PACKS[persona]?.recommendedConsistencyTier : undefined;
137
+ return personaTier ?? "C1";
138
+ }
139
+ const RoutedPersonaSchema = zod_1.z.object({
140
+ persona: agentPersona_schema_1.AgentPersonaSchema,
141
+ confidence: zod_1.z.number().min(0).max(1),
142
+ reason: zod_1.z.string(),
143
+ });
144
+ class PersonaRouter {
145
+ constructor(llm, router = new modelRouter_1.ModelRouter()) {
146
+ this.llm = llm;
147
+ this.router = router;
148
+ }
149
+ async route(rawPrompt) {
150
+ const model = this.router.pickFor("router");
151
+ const personaList = Object.values(exports.PERSONA_PACKS)
152
+ .map((p) => `- ${p.id}: ${p.blurb}`)
153
+ .join("\n");
154
+ const result = await this.llm.structured({
155
+ model,
156
+ fallbackModel: this.router.fallbackFor("router"),
157
+ schema: RoutedPersonaSchema,
158
+ schemaName: "RoutedPersona",
159
+ temperature: 0,
160
+ messages: [
161
+ {
162
+ role: "system",
163
+ content: [
164
+ "Classify the user's video request into ONE persona.",
165
+ "Personas:",
166
+ personaList,
167
+ "",
168
+ "Pick the closest fit. confidence 0..1; reason in <20 words.",
169
+ ].join("\n"),
170
+ },
171
+ { role: "user", content: rawPrompt },
172
+ ],
173
+ });
174
+ return result.data;
175
+ }
176
+ }
177
+ exports.PersonaRouter = PersonaRouter;
@@ -0,0 +1,76 @@
1
+ import { VideoPlan } from "../../schemas/videoPlan.schema";
2
+ import type { RegenComponent } from "../credits/pricing";
3
+ /**
4
+ * Stage 7 slice 2 — plan diff engine.
5
+ *
6
+ * Computes a structured changeset between two VideoPlans and derives which
7
+ * per-scene components (visual / voiceover / overlays / captions) and which
8
+ * top-level singletons (music) would need to be regenerated to materialize
9
+ * the new plan from the old project.
10
+ *
11
+ * Pure / no I/O. Feeds slice 3's bulk-regen endpoint: the endpoint takes the
12
+ * `regenTargets` array and fans out to the existing per-component regen
13
+ * handlers (regenerateScene / regenerateVoiceover / regenerateOverlays /
14
+ * regenerateCaptions / regenerateMusic).
15
+ *
16
+ * Why a separate helper and not just "regen everything that's different":
17
+ * each regen costs money. The user might edit only scene 3's voiceoverLine
18
+ * — we'd waste $0.30+ on visual regens if we naively reflowed every scene.
19
+ * The diff makes the actual change-set explicit.
20
+ *
21
+ * Field → component mapping:
22
+ * prompt, strategy, preferredModel, preferredProvider, durationMs,
23
+ * tier, bibleEntityIds, characterAnchorSceneIndex, avatarFaceUrl
24
+ * → visual
25
+ * voiceoverLine, voiceStyle → voiceover
26
+ * + captions (derived from VO audio)
27
+ * overlays, onScreenText → overlays
28
+ * transitionIn → none (stitch-time)
29
+ * estimatedCredits, intent → none (derived / informational)
30
+ *
31
+ * Plan-level cascades:
32
+ * aspect change → all scenes' visual
33
+ * voiceId / voiceStyle → all scenes' voiceover + captions
34
+ * bible.* → all scenes' visual (bible drives reference images)
35
+ * music.* → music singleton
36
+ */
37
+ export interface RegenTarget {
38
+ component: RegenComponent;
39
+ /** Omitted for "music" — there is one music clip per project. */
40
+ sceneIndex?: number;
41
+ }
42
+ export interface SceneDiff {
43
+ sceneIndex: number;
44
+ kind: "added" | "removed" | "modified";
45
+ /** Names of scene fields that differ. Empty for "removed" (nothing to regen). */
46
+ changedFields: string[];
47
+ /** Derived from changedFields via the mapping above. */
48
+ affectedComponents: RegenComponent[];
49
+ }
50
+ export interface PlanLevelChanges {
51
+ aspectChanged: boolean;
52
+ voiceIdChanged: boolean;
53
+ voiceStyleChanged: boolean;
54
+ bibleChanged: boolean;
55
+ musicChanged: boolean;
56
+ }
57
+ export interface PlanDiff {
58
+ hasChanges: boolean;
59
+ sceneChanges: SceneDiff[];
60
+ planLevel: PlanLevelChanges;
61
+ /**
62
+ * Deduplicated list of components × scenes that need regen. Already
63
+ * accounts for plan-level cascades — if aspect changed, every existing
64
+ * scene's visual is included here even if its own fields didn't change.
65
+ * Stable order: scene 0 first (visual → voiceover → overlays → captions),
66
+ * then scene 1, ..., then "music" last.
67
+ */
68
+ regenTargets: RegenTarget[];
69
+ }
70
+ /**
71
+ * Diff two plans. Both args required — fresh-project bootstrap should call
72
+ * /execute, not /regenerate-bulk, so there's no "old plan is undefined" case
73
+ * to support here.
74
+ */
75
+ export declare function diffPlans(oldPlan: VideoPlan, newPlan: VideoPlan): PlanDiff;
76
+ //# sourceMappingURL=planDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planDiff.d.ts","sourceRoot":"","sources":["../../../src/services/agent/planDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACvC,iFAAiF;IACjF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,wDAAwD;IACxD,kBAAkB,EAAE,cAAc,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAoGD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,QAAQ,CAwF1E"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diffPlans = diffPlans;
4
+ /**
5
+ * Per-component mapping. Some fields fan out to multiple components (e.g.
6
+ * voiceoverLine drives both VO audio AND its caption transcript).
7
+ */
8
+ const SCENE_FIELD_TO_COMPONENTS = {
9
+ prompt: ["visual"],
10
+ strategy: ["visual"],
11
+ preferredModel: ["visual"],
12
+ preferredProvider: ["visual"],
13
+ durationMs: ["visual"],
14
+ tier: ["visual"],
15
+ bibleEntityIds: ["visual"],
16
+ characterAnchorSceneIndex: ["visual"],
17
+ avatarFaceUrl: ["visual"],
18
+ voiceoverLine: ["voiceover", "captions"],
19
+ voiceStyle: ["voiceover", "captions"],
20
+ overlays: ["overlays"],
21
+ onScreenText: ["overlays"],
22
+ };
23
+ const SCENE_FIELDS_TO_DIFF = [
24
+ "prompt",
25
+ "strategy",
26
+ "preferredModel",
27
+ "preferredProvider",
28
+ "durationMs",
29
+ "tier",
30
+ "bibleEntityIds",
31
+ "characterAnchorSceneIndex",
32
+ "avatarFaceUrl",
33
+ "voiceoverLine",
34
+ "voiceStyle",
35
+ "overlays",
36
+ "onScreenText",
37
+ ];
38
+ function stableStringify(value) {
39
+ if (value === undefined)
40
+ return "undefined";
41
+ if (value === null)
42
+ return "null";
43
+ if (typeof value === "number")
44
+ return Number.isFinite(value) ? String(value) : "null";
45
+ if (typeof value === "string" || typeof value === "boolean")
46
+ return JSON.stringify(value);
47
+ if (Array.isArray(value)) {
48
+ return "[" + value.map(stableStringify).join(",") + "]";
49
+ }
50
+ if (typeof value === "object") {
51
+ const obj = value;
52
+ const keys = Object.keys(obj).sort();
53
+ return ("{" +
54
+ keys
55
+ .map((k) => JSON.stringify(k) + ":" + stableStringify(obj[k]))
56
+ .join(",") +
57
+ "}");
58
+ }
59
+ return "null";
60
+ }
61
+ function fieldChanged(a, b) {
62
+ return stableStringify(a) !== stableStringify(b);
63
+ }
64
+ function diffScene(oldScene, newScene) {
65
+ const changedFields = [];
66
+ for (const field of SCENE_FIELDS_TO_DIFF) {
67
+ if (fieldChanged(oldScene[field], newScene[field])) {
68
+ changedFields.push(field);
69
+ }
70
+ }
71
+ if (changedFields.length === 0)
72
+ return null;
73
+ const affected = new Set();
74
+ for (const field of changedFields) {
75
+ const mapped = SCENE_FIELD_TO_COMPONENTS[field];
76
+ if (mapped) {
77
+ for (const c of mapped)
78
+ affected.add(c);
79
+ }
80
+ }
81
+ return {
82
+ sceneIndex: newScene.sceneIndex,
83
+ kind: "modified",
84
+ changedFields,
85
+ affectedComponents: Array.from(affected),
86
+ };
87
+ }
88
+ function diffPlanLevel(oldPlan, newPlan) {
89
+ return {
90
+ aspectChanged: oldPlan.aspect !== newPlan.aspect,
91
+ voiceIdChanged: (oldPlan.voiceId ?? null) !== (newPlan.voiceId ?? null),
92
+ voiceStyleChanged: (oldPlan.voiceStyle ?? null) !== (newPlan.voiceStyle ?? null),
93
+ bibleChanged: fieldChanged(oldPlan.bible, newPlan.bible),
94
+ musicChanged: fieldChanged(oldPlan.music, newPlan.music),
95
+ };
96
+ }
97
+ /**
98
+ * Diff two plans. Both args required — fresh-project bootstrap should call
99
+ * /execute, not /regenerate-bulk, so there's no "old plan is undefined" case
100
+ * to support here.
101
+ */
102
+ function diffPlans(oldPlan, newPlan) {
103
+ // Index scenes by sceneIndex (NOT array position — planners may reorder).
104
+ const oldByIdx = new Map(oldPlan.scenes.map((s) => [s.sceneIndex, s]));
105
+ const newByIdx = new Map(newPlan.scenes.map((s) => [s.sceneIndex, s]));
106
+ const sceneChanges = [];
107
+ // Added or modified — iterate the new plan so order matches scene order.
108
+ for (const newScene of newPlan.scenes) {
109
+ const oldScene = oldByIdx.get(newScene.sceneIndex);
110
+ if (!oldScene) {
111
+ // Brand new scene — every component needs to be produced.
112
+ const affected = ["visual"];
113
+ if (newScene.voiceoverLine) {
114
+ affected.push("voiceover", "captions");
115
+ }
116
+ if (newScene.overlays?.length || newScene.onScreenText) {
117
+ affected.push("overlays");
118
+ }
119
+ sceneChanges.push({
120
+ sceneIndex: newScene.sceneIndex,
121
+ kind: "added",
122
+ changedFields: [],
123
+ affectedComponents: affected,
124
+ });
125
+ continue;
126
+ }
127
+ const modDiff = diffScene(oldScene, newScene);
128
+ if (modDiff)
129
+ sceneChanges.push(modDiff);
130
+ }
131
+ // Removed.
132
+ for (const oldScene of oldPlan.scenes) {
133
+ if (!newByIdx.has(oldScene.sceneIndex)) {
134
+ sceneChanges.push({
135
+ sceneIndex: oldScene.sceneIndex,
136
+ kind: "removed",
137
+ changedFields: [],
138
+ affectedComponents: [],
139
+ });
140
+ }
141
+ }
142
+ const planLevel = diffPlanLevel(oldPlan, newPlan);
143
+ // Build deduplicated regen targets in stable order.
144
+ // 1) Per-scene targets, scene order, component order (visual → vo → overlays → captions).
145
+ const componentOrder = ["visual", "voiceover", "overlays", "captions"];
146
+ const seen = new Set();
147
+ const regenTargets = [];
148
+ // Per-scene targets from the diff (covers added + modified).
149
+ for (const newScene of newPlan.scenes) {
150
+ const change = sceneChanges.find((c) => c.sceneIndex === newScene.sceneIndex && c.kind !== "removed");
151
+ const componentsForScene = new Set(change?.affectedComponents ?? []);
152
+ // Plan-level cascades — only apply to scenes that still exist in newPlan.
153
+ if (planLevel.aspectChanged || planLevel.bibleChanged) {
154
+ componentsForScene.add("visual");
155
+ }
156
+ if ((planLevel.voiceIdChanged || planLevel.voiceStyleChanged) &&
157
+ newScene.voiceoverLine) {
158
+ componentsForScene.add("voiceover");
159
+ componentsForScene.add("captions");
160
+ }
161
+ for (const c of componentOrder) {
162
+ if (!componentsForScene.has(c))
163
+ continue;
164
+ const key = `${c}:${newScene.sceneIndex}`;
165
+ if (seen.has(key))
166
+ continue;
167
+ seen.add(key);
168
+ regenTargets.push({ component: c, sceneIndex: newScene.sceneIndex });
169
+ }
170
+ }
171
+ // Music — singleton, no sceneIndex.
172
+ if (planLevel.musicChanged) {
173
+ regenTargets.push({ component: "music" });
174
+ }
175
+ const hasChanges = sceneChanges.length > 0 || regenTargets.length > 0;
176
+ return {
177
+ hasChanges,
178
+ sceneChanges,
179
+ planLevel,
180
+ regenTargets,
181
+ };
182
+ }
@@ -0,0 +1,46 @@
1
+ import type { Project } from "../../schemas/project.schema";
2
+ /**
3
+ * planMutations — Stage 7-prep helper for the agent permission flow.
4
+ *
5
+ * When the agent is asked to (re)generate against an existing Project, the
6
+ * controller calls `findClipsNeedingPermission(currentProject)` BEFORE
7
+ * enqueuing the run. Any clip that is `locked === true` OR has a
8
+ * user-placed provenance source is surfaced as a `MutationProposal` so the
9
+ * drawer can prompt the user with a per-clip yes/no modal.
10
+ *
11
+ * v0 contract (this file): coarse — we list every protected clip in the
12
+ * current project. We don't yet diff against the new plan to determine
13
+ * which protected clips it would actually displace (that's Stage 7's diff
14
+ * engine). Over-prompting is acceptable for v0; under-prompting is not.
15
+ *
16
+ * Provenance sources considered "user-placed" (the agent should ask before
17
+ * touching them) are listed in USER_PLACED_PROVENANCE_SOURCES below.
18
+ */
19
+ /** Provenance.source strings that mark a clip as user-placed (not agent-generated). */
20
+ export declare const USER_PLACED_PROVENANCE_SOURCES: ReadonlySet<string>;
21
+ export type MutationReason = "locked" | "user-placed";
22
+ export interface MutationProposal {
23
+ /** Existing clip id in `currentProject.clips`. */
24
+ clipId: string;
25
+ /** The clip's track kind (visual / voiceover / music / text / caption / unknown). */
26
+ clipKind: "visual" | "voiceover" | "music" | "text" | "caption" | "unknown";
27
+ /** Human-readable label for the modal row, e.g. "Scene 3 — voiceover". */
28
+ currentLabel: string;
29
+ /** Why the agent must ask. */
30
+ reason: MutationReason;
31
+ /** Original provenance source if known (e.g. "user-upload"). */
32
+ provenanceSource?: string;
33
+ }
34
+ /**
35
+ * Returns the list of clips in `currentProject` that the agent must obtain
36
+ * user permission for before touching. Returns `[]` if there's no current
37
+ * project (first run on an empty canvas) or no protected clips.
38
+ */
39
+ export declare function findClipsNeedingPermission(currentProject: Project | null | undefined): MutationProposal[];
40
+ /**
41
+ * Convenience predicate used by the controller before enqueueing a run.
42
+ * Returns true if the user must be prompted; false if the run can proceed
43
+ * straight through.
44
+ */
45
+ export declare function requiresUserConfirmation(currentProject: Project | null | undefined): boolean;
46
+ //# sourceMappingURL=planMutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planMutations.d.ts","sourceRoot":"","sources":["../../../src/services/agent/planMutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGlE;;;;;;;;;;;;;;;;GAgBG;AAEH,uFAAuF;AACvF,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,MAAM,CAG7D,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5E,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyDD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GACzC,gBAAgB,EAAE,CAgBpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GACzC,OAAO,CAET"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USER_PLACED_PROVENANCE_SOURCES = void 0;
4
+ exports.findClipsNeedingPermission = findClipsNeedingPermission;
5
+ exports.requiresUserConfirmation = requiresUserConfirmation;
6
+ const planToProject_1 = require("../editor/planToProject");
7
+ /**
8
+ * planMutations — Stage 7-prep helper for the agent permission flow.
9
+ *
10
+ * When the agent is asked to (re)generate against an existing Project, the
11
+ * controller calls `findClipsNeedingPermission(currentProject)` BEFORE
12
+ * enqueuing the run. Any clip that is `locked === true` OR has a
13
+ * user-placed provenance source is surfaced as a `MutationProposal` so the
14
+ * drawer can prompt the user with a per-clip yes/no modal.
15
+ *
16
+ * v0 contract (this file): coarse — we list every protected clip in the
17
+ * current project. We don't yet diff against the new plan to determine
18
+ * which protected clips it would actually displace (that's Stage 7's diff
19
+ * engine). Over-prompting is acceptable for v0; under-prompting is not.
20
+ *
21
+ * Provenance sources considered "user-placed" (the agent should ask before
22
+ * touching them) are listed in USER_PLACED_PROVENANCE_SOURCES below.
23
+ */
24
+ /** Provenance.source strings that mark a clip as user-placed (not agent-generated). */
25
+ exports.USER_PLACED_PROVENANCE_SOURCES = new Set([
26
+ "user-upload",
27
+ "user-library",
28
+ ]);
29
+ /**
30
+ * Maps a clip to its track kind based on the project's track list. Falls
31
+ * back to "unknown" when the track id isn't declared (defensive — every
32
+ * clip's track should appear in project.tracks, but the schema doesn't
33
+ * enforce referential integrity yet).
34
+ */
35
+ function clipKindFor(clip, project) {
36
+ // TRACK_ID values are the canonical track handles emitted by planToProject;
37
+ // checking them first cleanly separates voiceover from music (both have
38
+ // Track.kind === "audio") without depending on a free-form Track.name.
39
+ if (clip.trackId === planToProject_1.TRACK_ID.voiceover)
40
+ return "voiceover";
41
+ if (clip.trackId === planToProject_1.TRACK_ID.music)
42
+ return "music";
43
+ if (clip.trackId === planToProject_1.TRACK_ID.visual)
44
+ return "visual";
45
+ if (clip.trackId === planToProject_1.TRACK_ID.text)
46
+ return "text";
47
+ if (clip.trackId === planToProject_1.TRACK_ID.caption)
48
+ return "caption";
49
+ const track = project.tracks.find((t) => t.id === clip.trackId);
50
+ if (!track)
51
+ return "unknown";
52
+ switch (track.kind) {
53
+ case "video":
54
+ return "visual";
55
+ case "audio":
56
+ // Track.name is the only signal left to distinguish vo from music when
57
+ // the trackId doesn't match the planToProject canonical set (e.g. a
58
+ // user-added audio track in the editor).
59
+ return /voice|vo|narration/i.test(track.name ?? "") ? "voiceover" : "music";
60
+ case "text":
61
+ return "text";
62
+ case "caption":
63
+ return "caption";
64
+ case "fx":
65
+ return "unknown";
66
+ default:
67
+ return "unknown";
68
+ }
69
+ }
70
+ /**
71
+ * Best-effort label for the modal: prefer the clip's user-set `name`, else
72
+ * "<kind> clip @<seconds>s". Used purely for display — never relied on for
73
+ * identity (clip.id is the only stable handle).
74
+ */
75
+ function clipLabel(clip, kind) {
76
+ if (clip.name && clip.name.trim().length > 0)
77
+ return clip.name.trim();
78
+ const seconds = Math.round((clip.display.from ?? 0) / 100) / 10;
79
+ return `${kind} clip @${seconds}s`;
80
+ }
81
+ function isProtected(clip) {
82
+ if (clip.locked)
83
+ return "locked";
84
+ const source = clip.provenance?.source;
85
+ if (source && exports.USER_PLACED_PROVENANCE_SOURCES.has(source))
86
+ return "user-placed";
87
+ return null;
88
+ }
89
+ /**
90
+ * Returns the list of clips in `currentProject` that the agent must obtain
91
+ * user permission for before touching. Returns `[]` if there's no current
92
+ * project (first run on an empty canvas) or no protected clips.
93
+ */
94
+ function findClipsNeedingPermission(currentProject) {
95
+ if (!currentProject)
96
+ return [];
97
+ const out = [];
98
+ for (const clip of currentProject.clips) {
99
+ const reason = isProtected(clip);
100
+ if (!reason)
101
+ continue;
102
+ const kind = clipKindFor(clip, currentProject);
103
+ out.push({
104
+ clipId: clip.id,
105
+ clipKind: kind,
106
+ currentLabel: clipLabel(clip, kind),
107
+ reason,
108
+ provenanceSource: clip.provenance?.source,
109
+ });
110
+ }
111
+ return out;
112
+ }
113
+ /**
114
+ * Convenience predicate used by the controller before enqueueing a run.
115
+ * Returns true if the user must be prompted; false if the run can proceed
116
+ * straight through.
117
+ */
118
+ function requiresUserConfirmation(currentProject) {
119
+ return findClipsNeedingPermission(currentProject).length > 0;
120
+ }