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,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.detectOnsets = detectOnsets;
40
+ const axios_1 = __importDefault(require("axios"));
41
+ const logger_1 = require("../../utils/logger");
42
+ let decodePromise;
43
+ async function loadDecode() {
44
+ if (!decodePromise) {
45
+ decodePromise = Promise.resolve().then(() => __importStar(require("audio-decode"))).then((m) => (m.default ?? m));
46
+ }
47
+ return decodePromise;
48
+ }
49
+ const TIMEOUT_MS = 12000;
50
+ const MAX_DOWNLOAD_BYTES = 30 * 1024 * 1024; // 30MB cap; longer tracks are rare and bloat memory.
51
+ const cache = new Map();
52
+ let essentiaPromise;
53
+ function isEnabled() {
54
+ return process.env.ENABLE_ONSET_DETECTION === "true";
55
+ }
56
+ async function loadEssentia() {
57
+ if (essentiaPromise)
58
+ return essentiaPromise;
59
+ essentiaPromise = (async () => {
60
+ // Dynamic require — keeps the WASM module out of the cold-start path
61
+ // for callers that never invoke onset detection (the default until
62
+ // the commercial license is in place).
63
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
64
+ const mod = require("essentia.js");
65
+ const wasm = mod.EssentiaWASM;
66
+ const inst = new mod.Essentia(wasm);
67
+ return inst;
68
+ })();
69
+ return essentiaPromise;
70
+ }
71
+ async function downloadAudio(url) {
72
+ const res = await axios_1.default.get(url, {
73
+ responseType: "arraybuffer",
74
+ timeout: 8000,
75
+ maxContentLength: MAX_DOWNLOAD_BYTES,
76
+ });
77
+ return Buffer.from(res.data);
78
+ }
79
+ function mixToMono(channels) {
80
+ if (channels.length === 1)
81
+ return channels[0];
82
+ const len = channels[0].length;
83
+ const out = new Float32Array(len);
84
+ for (let i = 0; i < len; i++) {
85
+ let sum = 0;
86
+ for (const ch of channels)
87
+ sum += ch[i];
88
+ out[i] = sum / channels.length;
89
+ }
90
+ return out;
91
+ }
92
+ async function runDetection(audioUrl) {
93
+ const buf = await downloadAudio(audioUrl);
94
+ const decode = await loadDecode();
95
+ const decoded = await decode(buf);
96
+ const mono = mixToMono(decoded.channelData);
97
+ const essentia = (await loadEssentia());
98
+ const signal = essentia.arrayToVector(mono);
99
+ const result = essentia.RhythmExtractor2013(signal);
100
+ const beats = [];
101
+ const beatVec = result.beats_position;
102
+ for (let i = 0; i < beatVec.size(); i++)
103
+ beats.push(beatVec.get(i));
104
+ if (!beats.length || !result.bpm)
105
+ return undefined;
106
+ return { bpm: Math.round(result.bpm), onsets: beats };
107
+ }
108
+ function withTimeout(p, ms) {
109
+ return new Promise((resolve) => {
110
+ const t = setTimeout(() => resolve(undefined), ms);
111
+ p.then((v) => {
112
+ clearTimeout(t);
113
+ resolve(v);
114
+ }, (err) => {
115
+ clearTimeout(t);
116
+ logger_1.logger.warn("onsetDetection: withTimeout rejected", {
117
+ err: err?.stack ?? err?.message ?? String(err),
118
+ });
119
+ resolve(undefined);
120
+ });
121
+ });
122
+ }
123
+ async function detectOnsets(audioUrl) {
124
+ if (!isEnabled())
125
+ return undefined;
126
+ const hit = cache.get(audioUrl);
127
+ if (hit)
128
+ return hit;
129
+ const analysis = await withTimeout(runDetection(audioUrl), TIMEOUT_MS);
130
+ if (analysis) {
131
+ cache.set(audioUrl, analysis);
132
+ if (cache.size > 100) {
133
+ // Drop oldest entry to bound memory; Map preserves insertion order.
134
+ const firstKey = cache.keys().next().value;
135
+ if (firstKey)
136
+ cache.delete(firstKey);
137
+ }
138
+ }
139
+ return analysis;
140
+ }
@@ -22,7 +22,12 @@ declare class BullMQService {
22
22
  jobId?: string;
23
23
  delay?: number;
24
24
  }): Promise<void>;
25
- startWorkers(queueNames: string[], processor: (job: Job) => Promise<void>): void;
25
+ startWorkers(queueNames: string[], processor: (job: Job) => Promise<void>, perQueueOptions?: Record<string, {
26
+ lockDuration?: number;
27
+ stalledInterval?: number;
28
+ maxStalledCount?: number;
29
+ concurrency?: number;
30
+ }>): void;
26
31
  }
27
32
  export declare const bullmq: BullMQService;
28
33
  export type BullMQJob = Job;
@@ -1 +1 @@
1
- {"version":3,"file":"bullmq.service.d.ts","sourceRoot":"","sources":["../../src/services/bullmq.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE1C,UAAU,oBAAoB;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;WAQO,WAAW,CAAC,OAAO,EAAE,oBAAoB;IAOvD,sDAAsD;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBlC,gBAAgB;IACH,MAAM,CACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUpC,YAAY,CACjB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;CAmDzC;AAWD,eAAO,MAAM,MAAM,eAGjB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"bullmq.service.d.ts","sourceRoot":"","sources":["../../src/services/bullmq.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE1C,UAAU,oBAAoB;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;WAQO,WAAW,CAAC,OAAO,EAAE,oBAAoB;IAOvD,sDAAsD;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC,gBAAgB;IACH,MAAM,CACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUpC,YAAY,CACjB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EACtC,eAAe,CAAC,EAAE,MAAM,CACtB,MAAM,EACN;QACE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CACF;CA+FJ;AASD,eAAO,MAAM,MAAM,eAGjB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bullmq = void 0;
4
4
  // libs/bullmqService.ts
5
5
  const bullmq_1 = require("bullmq");
6
+ const logger_1 = require("../utils/logger");
7
+ const redisOptions_1 = require("./redisOptions");
6
8
  class BullMQService {
7
9
  constructor({ redisOptions, concurrency = 10, }) {
8
10
  this.queues = new Map();
@@ -32,10 +34,12 @@ class BullMQService {
32
34
  testQueueClient.ping();
33
35
  await testQueue.close();
34
36
  this.initialized = true;
35
- console.log("BullMQService initialized and connected to Redis");
37
+ logger_1.logger.info("BullMQService initialized and connected to Redis");
36
38
  }
37
39
  catch (err) {
38
- console.error("BullMQService failed to connect to Redis", err);
40
+ logger_1.logger.error("BullMQService failed to connect to Redis", {
41
+ err: err instanceof Error ? err.stack ?? err.message : String(err),
42
+ });
39
43
  throw err;
40
44
  }
41
45
  }
@@ -48,7 +52,7 @@ class BullMQService {
48
52
  this.queues.set(queueName, queue);
49
53
  await queue.add(opts?.jobId || "default", data, { delay: opts?.delay });
50
54
  }
51
- startWorkers(queueNames, processor) {
55
+ startWorkers(queueNames, processor, perQueueOptions) {
52
56
  const start = async () => {
53
57
  if (!this.initialized)
54
58
  await this.init();
@@ -56,44 +60,88 @@ class BullMQService {
56
60
  const queue = this.queues.get(queueName) ??
57
61
  new bullmq_1.Queue(queueName, { connection: this.redisOptions });
58
62
  this.queues.set(queueName, queue);
63
+ const overrides = perQueueOptions?.[queueName] ?? {};
59
64
  const worker = new bullmq_1.Worker(queueName, async (job) => processor(job), {
60
65
  connection: this.redisOptions,
61
- concurrency: this.concurrency,
66
+ concurrency: overrides.concurrency ?? this.concurrency,
67
+ // N5 (agent refactor Stage 2). Explicit lock semantics:
68
+ // - lockDuration: 60s default. BullMQ auto-renews while the
69
+ // worker is alive; bumped above the 30s default so a slow
70
+ // Firestore write or GC pause can't drop the lock mid-job.
71
+ // Per-queue override required for long CPU-bound jobs
72
+ // (render: Remotion blocks the event loop, lock renewal
73
+ // heartbeat misses, scheduler rescues → duplicate render).
74
+ // - stalledInterval: 30s. How often the scheduler checks for
75
+ // jobs whose lock expired (worker crashed or got SIGKILL'd).
76
+ // - maxStalledCount: 1. A crashed job gets exactly one
77
+ // handoff to a fresh worker; if that one also crashes the
78
+ // job moves to failed instead of looping forever on a
79
+ // poison payload. Agent reruns rely on the providerTaskCache
80
+ // replay (N4) for cheap resume rather than re-submission.
81
+ lockDuration: overrides.lockDuration ?? 60000,
82
+ stalledInterval: overrides.stalledInterval ?? 30000,
83
+ maxStalledCount: overrides.maxStalledCount ?? 1,
84
+ });
85
+ worker.on("completed", (job) => logger_1.logger.info(`BullMQ job completed`, {
86
+ queueName,
87
+ jobId: job.id,
88
+ }));
89
+ // Job-level failure (processor threw or exhausted retries). Routes to
90
+ // Slack via the winston error transport so a stuck provider or a
91
+ // bad payload always surfaces. Stack tail truncated to keep Slack
92
+ // payloads under their block-size limits.
93
+ worker.on("failed", (job, err) => {
94
+ logger_1.logger.error(`BullMQ job failed`, {
95
+ queueName,
96
+ jobId: job?.id,
97
+ jobName: job?.name,
98
+ userId: job?.data?.userId,
99
+ attemptsMade: job?.attemptsMade,
100
+ failedReason: job?.failedReason,
101
+ err: err?.stack ?? err?.message ?? String(err),
102
+ });
103
+ });
104
+ // Worker-shell failure (Redis lost, malformed payload, processor
105
+ // import error, etc.). Without this handler these crashes are silent.
106
+ worker.on("error", (err) => {
107
+ logger_1.logger.error(`BullMQ worker error`, {
108
+ queueName,
109
+ err: err?.stack ?? err?.message ?? String(err),
110
+ });
62
111
  });
63
- worker.on("completed", (job) => console.log(`✅ [${queueName}] Job ${job.id} completed`));
64
- worker.on("failed", (job, err) => console.error(`❌ [${queueName}] Job ${job?.id} failed:`, err));
65
112
  this.workers.push(worker);
66
113
  }
67
- console.log(`🚀 Started workers for queues: ${queueNames.join(", ")}`);
114
+ logger_1.logger.info(`Started workers for queues`, { queueNames });
68
115
  // Setup graceful shutdown
69
116
  const graceful = async () => {
70
117
  if (this.shuttingDown)
71
118
  return;
72
119
  this.shuttingDown = true;
73
- console.log("🛑 Shutting down BullMQ workers gracefully...");
120
+ logger_1.logger.info("Shutting down BullMQ workers gracefully...");
74
121
  for (const worker of this.workers) {
75
122
  await worker.close();
76
- console.log(`✅ Worker for queue ${worker.name} closed`);
123
+ logger_1.logger.info(`Worker for queue closed`, { queueName: worker.name });
77
124
  }
78
- console.log("All workers closed. Exiting process.");
125
+ logger_1.logger.info("All workers closed. Exiting process.");
79
126
  process.exit(0);
80
127
  };
81
128
  process.on("SIGINT", graceful);
82
129
  process.on("SIGTERM", graceful);
83
130
  };
84
131
  start().catch((err) => {
85
- console.error(" Failed to start workers:", err);
132
+ logger_1.logger.error("BullMQ failed to start workers — process exiting", {
133
+ queueNames,
134
+ err: err?.stack ?? err?.message ?? String(err),
135
+ });
86
136
  process.exit(1);
87
137
  });
88
138
  }
89
139
  }
90
140
  const redisOptions = {
141
+ ...redisOptions_1.sharedRedisOptions,
91
142
  host: process.env.REDIS_HOST,
92
143
  port: Number(process.env.REDIS_PORT),
93
144
  password: process.env.REDIS_PASSWORD,
94
- // username: process.env.REDIS_USERNAME,
95
- // tls: {},
96
- maxRetriesPerRequest: null, // REQUIRED for BullMQ stability
97
145
  };
98
146
  exports.bullmq = BullMQService.getInstance({
99
147
  redisOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"credit.service.d.ts","sourceRoot":"","sources":["../../src/services/credit.service.ts"],"names":[],"mappings":"AAGA,qBAAa,aAAa;WACX,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;WAyBH,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
1
+ {"version":3,"file":"credit.service.d.ts","sourceRoot":"","sources":["../../src/services/credit.service.ts"],"names":[],"mappings":"AAaA,qBAAa,aAAa;WACX,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;WAwDH,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
@@ -1,29 +1,67 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreditService = void 0;
4
+ const firestore_1 = require("firebase-admin/firestore");
5
+ const types_1 = require("../globals/types");
4
6
  const firebase_1 = require("../libs/firebase");
7
+ const logger_1 = require("../utils/logger");
5
8
  const firestore_service_1 = require("./firestore.service");
9
+ const notification_service_1 = require("./notification.service");
10
+ // Once balance drops below this fraction of total, fire CREDITS_LOW. The
11
+ // throttle below stops it from re-firing more often than once per 24h so users
12
+ // who linger near the threshold don't see daily spam.
13
+ const CREDITS_LOW_THRESHOLD = 0.2;
14
+ const CREDITS_LOW_THROTTLE_MS = 24 * 60 * 60 * 1000;
6
15
  class CreditService {
7
16
  static async consumeCredits(userId, creditsToConsume) {
8
- await firebase_1.firestore.runTransaction(async (tx) => {
17
+ // Capture the post-consume balance so we can fire CREDITS_LOW outside the
18
+ // transaction (notification writes must not interleave with the credit
19
+ // mutation — that would risk transaction abort + retry firing duplicate
20
+ // notifications).
21
+ const postState = await firebase_1.firestore.runTransaction(async (tx) => {
9
22
  const userRef = firestore_service_1.FirestoreService.usersCol.doc(userId);
10
23
  const snap = await tx.get(userRef);
11
24
  if (!snap.exists) {
12
25
  throw new Error("USER_NOT_FOUND");
13
26
  }
14
- const credits = snap.data()?.credits;
15
- const consumed = credits?.consumed ?? 0;
16
- const total = credits?.total ?? 0;
17
- // console.log(`Consuming ${creditsToConsume} credits for user ${userId}`);
18
- // console.log(`Current credits: ${consumed}/${total}`);
19
- // 🔒 HARD INVARIANT
27
+ const data = snap.data();
28
+ const consumed = data.credits?.consumed ?? 0;
29
+ const total = data.credits?.total ?? 0;
20
30
  if (consumed + creditsToConsume > total) {
21
31
  throw new Error("INSUFFICIENT_CREDITS");
22
32
  }
23
33
  tx.update(userRef, {
24
34
  "credits.consumed": consumed + creditsToConsume,
25
35
  });
36
+ const newRemaining = total - (consumed + creditsToConsume);
37
+ const lastNotifiedMs = data.lastCreditsLowNotifiedAt?.toMillis?.() ?? 0;
38
+ return { total, newRemaining, lastNotifiedMs };
26
39
  });
40
+ const { total, newRemaining, lastNotifiedMs } = postState;
41
+ if (total > 0 && newRemaining < total * CREDITS_LOW_THRESHOLD) {
42
+ const sinceLast = Date.now() - lastNotifiedMs;
43
+ if (sinceLast > CREDITS_LOW_THROTTLE_MS) {
44
+ const pct = Math.max(0, Math.round((newRemaining / total) * 100));
45
+ await notification_service_1.NotificationService.create({
46
+ userId,
47
+ type: types_1.ENotificationType.CREDITS_LOW,
48
+ severity: types_1.ENotificationSeverity.WARNING,
49
+ title: "You're running low on credits",
50
+ body: `${newRemaining} of ${total} credits remaining (${pct}%). Top up to avoid interrupting jobs.`,
51
+ link: "/dashboard/pricing",
52
+ data: { remaining: newRemaining, total },
53
+ });
54
+ await firestore_service_1.FirestoreService.usersCol.doc(userId).update({
55
+ lastCreditsLowNotifiedAt: firestore_1.FieldValue.serverTimestamp(),
56
+ }).catch((err) => {
57
+ logger_1.logger.warn("credit.service: lastCreditsLowNotifiedAt write failed", {
58
+ userId,
59
+ err: err instanceof Error ? err.stack ?? err.message : String(err),
60
+ });
61
+ return undefined;
62
+ });
63
+ }
64
+ }
27
65
  }
28
66
  static async refundCredits(userId, creditsToRefund) {
29
67
  if (creditsToRefund <= 0)
@@ -0,0 +1,58 @@
1
+ import { Clip, Project } from "../../schemas/project.schema";
2
+ import { PlannedScene } from "../../schemas/videoPlan.schema";
3
+ /**
4
+ * Per-component pricing model for agent regen endpoints (Stage 6).
5
+ *
6
+ * Charging granularity matches generation granularity: regen the VO of a
7
+ * single clip → only VO cost is charged. Regen the visual → only visual.
8
+ * Music + overlays + captions have their own (mostly free) rates.
9
+ *
10
+ * Rates are conservative upper bounds used by the budget guard before a
11
+ * regen is dispatched. The *actual* spend is reconciled from provider
12
+ * receipts inside the executor and written back to `clip.provenance.creditsSpent`.
13
+ */
14
+ export declare const CREDITS_PER_USD = 100;
15
+ export declare const BUDGET_GUARD_THRESHOLD_USD = 0.5;
16
+ export type RegenComponent = "visual" | "voiceover" | "music" | "overlays" | "captions";
17
+ export interface RegenCostEstimate {
18
+ component: RegenComponent;
19
+ amountUsd: number;
20
+ amountCredits: number;
21
+ breakdown: Record<string, number>;
22
+ exceedsBudgetGuard: boolean;
23
+ budgetGuardThresholdUsd: number;
24
+ }
25
+ /**
26
+ * Estimate the cost of regenerating one component of a clip / scene.
27
+ * Pass either a `clip` (existing Project clip) or a `scene` (PlannedScene)
28
+ * — both expose tier + duration, just from different sources.
29
+ */
30
+ export declare function estimateRegenCost(args: {
31
+ component: RegenComponent;
32
+ clip?: Clip;
33
+ scene?: PlannedScene;
34
+ /** For voiceover regens: the new VO line text (used to count chars). */
35
+ voiceoverLine?: string;
36
+ /** When the VO line text changes, captions must also be re-cut. */
37
+ captionsAlsoChange?: boolean;
38
+ }): RegenCostEstimate;
39
+ /** History entry appended to `project.metadata.history[]` on each regen. */
40
+ export interface RegenHistoryEntry {
41
+ ts: string;
42
+ action: "regenerate";
43
+ component: RegenComponent;
44
+ clipId?: string;
45
+ sceneIndex?: number;
46
+ modelKey?: string;
47
+ estimatedCreditsSpent: number;
48
+ estimatedUsd: number;
49
+ actualCreditsSpent?: number;
50
+ }
51
+ /**
52
+ * Append a regen entry to `project.metadata.history[]`, returning the
53
+ * mutated project. Caller persists. Caps history at the most recent 200
54
+ * entries to keep the Firestore doc well under the 1 MiB limit (see
55
+ * Risk #2 in notes/AGENT_EDITOR_ROUND_TRIP.md).
56
+ */
57
+ export declare function appendRegenHistory(project: Project, entry: RegenHistoryEntry): Project;
58
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/services/credits/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAQ,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D;;;;;;;;;;GAUG;AAKH,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,WAAW,GACX,OAAO,GACP,UAAU,GACV,UAAU,CAAC;AAqBf,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAmCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,iBAAiB,CA6BpB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAUT"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUDGET_GUARD_THRESHOLD_USD = exports.CREDITS_PER_USD = void 0;
4
+ exports.estimateRegenCost = estimateRegenCost;
5
+ exports.appendRegenHistory = appendRegenHistory;
6
+ /**
7
+ * Per-component pricing model for agent regen endpoints (Stage 6).
8
+ *
9
+ * Charging granularity matches generation granularity: regen the VO of a
10
+ * single clip → only VO cost is charged. Regen the visual → only visual.
11
+ * Music + overlays + captions have their own (mostly free) rates.
12
+ *
13
+ * Rates are conservative upper bounds used by the budget guard before a
14
+ * regen is dispatched. The *actual* spend is reconciled from provider
15
+ * receipts inside the executor and written back to `clip.provenance.creditsSpent`.
16
+ */
17
+ // VidSpot convention: 1 credit ≈ $0.01 USD. The product surface (Stripe
18
+ // plans, dashboard chips) all speak credits; the budget guard speaks USD
19
+ // because the spec threshold ($0.50) is product-facing.
20
+ exports.CREDITS_PER_USD = 100;
21
+ // $0.50 user-confirmation threshold per Decision 4 (notes/AGENT_EDITOR_ROUND_TRIP.md §12).
22
+ exports.BUDGET_GUARD_THRESHOLD_USD = 0.5;
23
+ // Per-second visual cost by tier (USD). Coarse upper bounds — the executor
24
+ // reconciles to the provider's true charge after the fact.
25
+ const TIER_PER_SECOND_USD = {
26
+ T0: 0.005, // stock (per-call cost amortised over duration)
27
+ T1: 0.1, // image-to-video
28
+ T2: 0.03, // image-gen still
29
+ T3: 0.8, // premium text-to-video
30
+ };
31
+ // ElevenLabs creator-tier ballpark. Real rate varies by plan; conservative bound.
32
+ const ELEVENLABS_USD_PER_1K_CHARS = 0.18;
33
+ // Tiny GPT-4o-mini call to rewrite an overlay line.
34
+ const OVERLAY_LLM_USD_PER_CALL = 0.005;
35
+ // Local Whisper, Jamendo: free at the moment.
36
+ const CAPTION_USD_PER_MINUTE = 0;
37
+ const MUSIC_SEARCH_USD = 0;
38
+ const clipDurationMs = (c) => Math.max(0, c.display.to - c.display.from);
39
+ const sceneDurationMs = (s) => s.durationMs;
40
+ function visualUsd(args) {
41
+ if (!args.tier)
42
+ return 0;
43
+ return (args.durationMs / 1000) * TIER_PER_SECOND_USD[args.tier];
44
+ }
45
+ function voiceoverUsd(charCount) {
46
+ return (charCount / 1000) * ELEVENLABS_USD_PER_1K_CHARS;
47
+ }
48
+ function captionsUsd(durationMs) {
49
+ return (durationMs / 60000) * CAPTION_USD_PER_MINUTE;
50
+ }
51
+ function toEstimate(component, breakdown) {
52
+ const amountUsd = Object.values(breakdown).reduce((s, v) => s + v, 0);
53
+ return {
54
+ component,
55
+ amountUsd,
56
+ amountCredits: Math.ceil(amountUsd * exports.CREDITS_PER_USD),
57
+ breakdown,
58
+ exceedsBudgetGuard: amountUsd > exports.BUDGET_GUARD_THRESHOLD_USD,
59
+ budgetGuardThresholdUsd: exports.BUDGET_GUARD_THRESHOLD_USD,
60
+ };
61
+ }
62
+ /**
63
+ * Estimate the cost of regenerating one component of a clip / scene.
64
+ * Pass either a `clip` (existing Project clip) or a `scene` (PlannedScene)
65
+ * — both expose tier + duration, just from different sources.
66
+ */
67
+ function estimateRegenCost(args) {
68
+ const { component } = args;
69
+ const tier = args.clip?.provenance?.tier ?? args.scene?.tier;
70
+ const durationMs = (args.clip ? clipDurationMs(args.clip) : undefined) ??
71
+ (args.scene ? sceneDurationMs(args.scene) : 0);
72
+ switch (component) {
73
+ case "visual":
74
+ return toEstimate("visual", {
75
+ visual: visualUsd({ tier, durationMs }),
76
+ });
77
+ case "voiceover": {
78
+ const chars = args.voiceoverLine?.length ?? 0;
79
+ const breakdown = {
80
+ voiceover: voiceoverUsd(chars),
81
+ };
82
+ if (args.captionsAlsoChange) {
83
+ breakdown.captions = captionsUsd(durationMs);
84
+ }
85
+ return toEstimate("voiceover", breakdown);
86
+ }
87
+ case "music":
88
+ return toEstimate("music", { music: MUSIC_SEARCH_USD });
89
+ case "overlays":
90
+ return toEstimate("overlays", { overlays: OVERLAY_LLM_USD_PER_CALL });
91
+ case "captions":
92
+ return toEstimate("captions", { captions: captionsUsd(durationMs) });
93
+ }
94
+ }
95
+ /**
96
+ * Append a regen entry to `project.metadata.history[]`, returning the
97
+ * mutated project. Caller persists. Caps history at the most recent 200
98
+ * entries to keep the Firestore doc well under the 1 MiB limit (see
99
+ * Risk #2 in notes/AGENT_EDITOR_ROUND_TRIP.md).
100
+ */
101
+ function appendRegenHistory(project, entry) {
102
+ const meta = (project.metadata ?? {});
103
+ const existing = Array.isArray(meta.history)
104
+ ? meta.history
105
+ : [];
106
+ const next = [...existing, entry].slice(-200);
107
+ return {
108
+ ...project,
109
+ metadata: { ...meta, history: next },
110
+ };
111
+ }
@@ -0,0 +1,75 @@
1
+ import type { Project } from "../../schemas/project.schema";
2
+ /**
3
+ * Inverse of `projectToDesign`. Converts the editor's IDesign-shaped
4
+ * autosave blob into the canonical Project JSON the Remotion renderer
5
+ * consumes.
6
+ *
7
+ * The shared package can't import `@designcombo/types` (editor-only),
8
+ * so the input shape is declared inline as a permissive interface — we
9
+ * read what we need and ignore unknown fields. Producers (the editor's
10
+ * autosave hook) are not formally validated here; the resulting Project
11
+ * is validated by `ProjectSchema.parse()` downstream.
12
+ *
13
+ * Round-trip contract: designToProject(projectToDesign(p)) deeply
14
+ * equals p (covered by tests in this package). To preserve fields the
15
+ * editor's IDesign can't represent natively (provenance, locked, clip
16
+ * motion, ducking, caption words), the translator pair stashes them
17
+ * inside `metadata.*` on the design item; designToProject pulls them
18
+ * back here.
19
+ */
20
+ interface DesignTrack {
21
+ id: string;
22
+ type: string;
23
+ items?: string[];
24
+ index?: number;
25
+ }
26
+ interface DesignItemBase {
27
+ id: string;
28
+ name?: string;
29
+ type: string;
30
+ display?: {
31
+ from?: number;
32
+ to?: number;
33
+ };
34
+ metadata?: Record<string, unknown>;
35
+ }
36
+ interface DesignItemDetails extends DesignItemBase {
37
+ details?: Record<string, unknown>;
38
+ }
39
+ interface DesignBackground {
40
+ type?: "color" | "image" | "transparent";
41
+ value?: string;
42
+ }
43
+ interface DesignTransition {
44
+ id?: string;
45
+ fromId?: string;
46
+ toId?: string;
47
+ kind?: string;
48
+ duration?: number;
49
+ }
50
+ export interface EditorDesignInput {
51
+ id?: string;
52
+ fps?: number;
53
+ size?: {
54
+ width?: number;
55
+ height?: number;
56
+ };
57
+ duration?: number;
58
+ background?: DesignBackground;
59
+ tracks?: DesignTrack[];
60
+ trackItemIds?: string[];
61
+ trackItemsMap?: Record<string, DesignItemBase>;
62
+ trackItemDetailsMap?: Record<string, DesignItemDetails>;
63
+ transitionIds?: string[];
64
+ transitionsMap?: Record<string, DesignTransition>;
65
+ /** Server-write-zone field: editor passes it back as-is on autosave. */
66
+ agentRunId?: string;
67
+ }
68
+ export declare function designToProject(design: unknown, meta: {
69
+ id: string;
70
+ name: string;
71
+ createdAt?: string;
72
+ updatedAt?: string;
73
+ }): Project;
74
+ export {};
75
+ //# sourceMappingURL=designToProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designToProject.d.ts","sourceRoot":"","sources":["../../../src/services/editor/designToProject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EAIR,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,iBAAkB,SAAQ,cAAc;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA+BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CA4FT"}