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,360 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GatewayLlmCaller = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Marks a transient error that should trigger HTTP retry (and, when exhausted,
7
+ * model fallback). Non-transient errors (4xx other than 408/429, schema
8
+ * validation, malformed JSON) are NOT wrapped and propagate immediately.
9
+ */
10
+ class TransientLlmError extends Error {
11
+ constructor(message, cause) {
12
+ super(message);
13
+ this.cause = cause;
14
+ this.name = "TransientLlmError";
15
+ }
16
+ }
17
+ const TRANSIENT_HTTP_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
18
+ function isTransientNetworkError(err) {
19
+ if (!err || typeof err !== "object")
20
+ return false;
21
+ const e = err;
22
+ const code = e.code ?? e.cause?.code;
23
+ if (code && /^(ECONNRESET|ECONNREFUSED|ETIMEDOUT|EAI_AGAIN|EPIPE|UND_ERR_.*)$/.test(code)) {
24
+ return true;
25
+ }
26
+ // Our own per-request timeout (ctrl.abort() in postOnce / structuredStream)
27
+ // surfaces as AbortError "This operation was aborted". Treat as transient so
28
+ // the retry loop (and then the fallback model) gets a chance — otherwise a
29
+ // single slow Gemini Flash vision call sinks the entire critic stage with
30
+ // no recovery.
31
+ if (e.name === "AbortError")
32
+ return true;
33
+ const msg = String(e.message ?? "");
34
+ return /fetch failed|socket hang up|other side closed|network|timeout|operation was aborted/i.test(msg);
35
+ }
36
+ class GatewayLlmCaller {
37
+ constructor(cfg) {
38
+ this.cfg = cfg;
39
+ this.fetchImpl = cfg.fetchImpl ?? fetch;
40
+ this.timeoutMs = cfg.timeoutMs ?? 60000;
41
+ this.maxRetries = cfg.maxRetries ?? 3;
42
+ this.retryBaseMs = cfg.retryBaseMs ?? 250;
43
+ }
44
+ async chat(req) {
45
+ const attempted = [];
46
+ const run = async (model) => {
47
+ attempted.push(model);
48
+ const messages = await Promise.all(req.messages.map((m) => this.encodeMessage(m)));
49
+ const raw = await this.postWithRetry({
50
+ model: this.modelId(model),
51
+ messages,
52
+ temperature: req.temperature,
53
+ max_tokens: req.maxTokens,
54
+ stop: req.stop,
55
+ });
56
+ const text = raw.choices?.[0]?.message?.content ?? "";
57
+ return {
58
+ text: typeof text === "string" ? text : JSON.stringify(text),
59
+ usage: this.usage(raw),
60
+ requestId: raw.id,
61
+ };
62
+ };
63
+ try {
64
+ const out = await run(req.model);
65
+ return { ...out, attemptedModels: attempted, usedFallback: false };
66
+ }
67
+ catch (err) {
68
+ if (req.fallbackModel && err instanceof TransientLlmError) {
69
+ const out = await run(req.fallbackModel);
70
+ return { ...out, attemptedModels: attempted, usedFallback: true };
71
+ }
72
+ throw err;
73
+ }
74
+ }
75
+ async structured(req) {
76
+ const attempted = [];
77
+ const jsonSchema = zod_1.z.toJSONSchema(req.schema, { target: "draft-7" });
78
+ const run = async (model) => {
79
+ attempted.push(model);
80
+ const messages = await Promise.all(req.messages.map((m) => this.encodeMessage(m)));
81
+ const raw = await this.postWithRetry({
82
+ model: this.modelId(model),
83
+ messages,
84
+ temperature: req.temperature,
85
+ max_tokens: req.maxTokens,
86
+ response_format: {
87
+ type: "json_schema",
88
+ json_schema: {
89
+ name: req.schemaName,
90
+ schema: jsonSchema,
91
+ strict: true,
92
+ },
93
+ },
94
+ });
95
+ const txt = raw.choices?.[0]?.message?.content ?? "";
96
+ if (!txt || typeof txt !== "string") {
97
+ // Empty body from the model is not retryable across providers —
98
+ // surface immediately; planner-level retry can re-prompt.
99
+ throw new Error(`GatewayLlmCaller.structured: empty response for schema ${req.schemaName}`);
100
+ }
101
+ let parsed;
102
+ try {
103
+ parsed = JSON.parse(txt);
104
+ }
105
+ catch {
106
+ throw new Error(`GatewayLlmCaller.structured: model returned non-JSON for schema ${req.schemaName}: ${txt.slice(0, 200)}`);
107
+ }
108
+ const result = req.schema.safeParse(parsed);
109
+ if (!result.success) {
110
+ throw new Error(`GatewayLlmCaller.structured: schema validation failed for ${req.schemaName}: ${result.error.message}`);
111
+ }
112
+ return {
113
+ data: result.data,
114
+ usage: this.usage(raw),
115
+ requestId: raw.id,
116
+ };
117
+ };
118
+ try {
119
+ const out = await run(req.model);
120
+ return { ...out, attemptedModels: attempted, usedFallback: false };
121
+ }
122
+ catch (err) {
123
+ if (req.fallbackModel && err instanceof TransientLlmError) {
124
+ const out = await run(req.fallbackModel);
125
+ return { ...out, attemptedModels: attempted, usedFallback: true };
126
+ }
127
+ throw err;
128
+ }
129
+ }
130
+ structuredStream(req) {
131
+ // Streaming: fall back is NOT applied mid-stream (would confuse UI
132
+ // chunks). Transport retry IS applied on the initial connect; once
133
+ // bytes start flowing, a mid-stream drop propagates as an error and
134
+ // the caller (planner) handles it via its own retry loop.
135
+ let resolveResult;
136
+ let rejectResult;
137
+ const result = new Promise((resolve, reject) => {
138
+ resolveResult = resolve;
139
+ rejectResult = reject;
140
+ });
141
+ const self = this;
142
+ const tokens = {
143
+ [Symbol.asyncIterator]() {
144
+ return self.createStreamingIterator(req, resolveResult, rejectResult);
145
+ },
146
+ };
147
+ return { tokens, result };
148
+ }
149
+ async *createStreamingIterator(req, resolveResult, rejectResult) {
150
+ const jsonSchema = zod_1.z.toJSONSchema(req.schema, { target: "draft-7" });
151
+ const messages = await Promise.all(req.messages.map((m) => this.encodeMessage(m)));
152
+ const ctrl = new AbortController();
153
+ const t = setTimeout(() => ctrl.abort(), this.timeoutMs);
154
+ let accumulated = "";
155
+ let requestId;
156
+ let usage;
157
+ try {
158
+ // Connect attempt with retry on transient connect failures (pre-stream).
159
+ const res = await this.withRetry(() => this.fetchImpl(`${this.cfg.baseUrl.replace(/\/$/, "")}/chat/completions`, {
160
+ method: "POST",
161
+ headers: {
162
+ "content-type": "application/json",
163
+ authorization: `Bearer ${this.cfg.apiKey}`,
164
+ },
165
+ body: JSON.stringify({
166
+ model: this.modelId(req.model),
167
+ messages,
168
+ temperature: req.temperature,
169
+ max_tokens: req.maxTokens,
170
+ stream: true,
171
+ response_format: {
172
+ type: "json_schema",
173
+ json_schema: {
174
+ name: req.schemaName,
175
+ schema: jsonSchema,
176
+ strict: true,
177
+ },
178
+ },
179
+ }),
180
+ signal: ctrl.signal,
181
+ }).then((r) => {
182
+ if (!r.ok && TRANSIENT_HTTP_STATUSES.has(r.status)) {
183
+ throw new TransientLlmError(`GatewayLlmCaller.structuredStream: ${r.status} ${r.statusText}`);
184
+ }
185
+ return r;
186
+ }));
187
+ if (!res.ok || !res.body) {
188
+ const text = await res.text().catch(() => "");
189
+ const err = new Error(`GatewayLlmCaller.structuredStream: ${res.status} ${res.statusText} — ${text.slice(0, 500)}`);
190
+ rejectResult(err);
191
+ throw err;
192
+ }
193
+ const reader = res.body.getReader();
194
+ const decoder = new TextDecoder();
195
+ let buf = "";
196
+ while (true) {
197
+ const { value, done } = await reader.read();
198
+ if (done)
199
+ break;
200
+ buf += decoder.decode(value, { stream: true });
201
+ let nl;
202
+ while ((nl = buf.indexOf("\n")) !== -1) {
203
+ const line = buf.slice(0, nl).trim();
204
+ buf = buf.slice(nl + 1);
205
+ if (!line || !line.startsWith("data:"))
206
+ continue;
207
+ const payload = line.slice(5).trim();
208
+ if (payload === "[DONE]")
209
+ break;
210
+ try {
211
+ const obj = JSON.parse(payload);
212
+ if (obj.id)
213
+ requestId = obj.id;
214
+ if (obj.usage) {
215
+ usage = {
216
+ promptTokens: obj.usage.prompt_tokens,
217
+ completionTokens: obj.usage.completion_tokens,
218
+ };
219
+ }
220
+ const delta = obj.choices?.[0]?.delta?.content ?? "";
221
+ if (delta) {
222
+ accumulated += delta;
223
+ yield delta;
224
+ }
225
+ }
226
+ catch {
227
+ // skip malformed line
228
+ }
229
+ }
230
+ }
231
+ let parsed;
232
+ try {
233
+ parsed = JSON.parse(accumulated);
234
+ }
235
+ catch {
236
+ const err = new Error(`GatewayLlmCaller.structuredStream: model returned non-JSON for ${req.schemaName}: ${accumulated.slice(0, 200)}`);
237
+ rejectResult(err);
238
+ throw err;
239
+ }
240
+ const validated = req.schema.safeParse(parsed);
241
+ if (!validated.success) {
242
+ const err = new Error(`GatewayLlmCaller.structuredStream: schema validation failed for ${req.schemaName}: ${validated.error.message}`);
243
+ rejectResult(err);
244
+ throw err;
245
+ }
246
+ resolveResult({
247
+ data: validated.data,
248
+ usage,
249
+ requestId,
250
+ attemptedModels: [req.model],
251
+ usedFallback: false,
252
+ });
253
+ }
254
+ catch (e) {
255
+ rejectResult(e);
256
+ throw e;
257
+ }
258
+ finally {
259
+ clearTimeout(t);
260
+ }
261
+ }
262
+ modelId(m) {
263
+ return `${m.provider}/${m.modelId}`;
264
+ }
265
+ async encodeMessage(m) {
266
+ if (!m.imageUrls?.length) {
267
+ return { role: m.role, content: m.content };
268
+ }
269
+ // Fetch + base64-encode each URL into a data URI. The gateway's Anthropic
270
+ // translator rejects raw https URLs ("URL sources are not supported"); data
271
+ // URIs round-trip through every provider's OpenAI-compat shim correctly.
272
+ const dataUris = await Promise.all(m.imageUrls.map((u) => this.toDataUri(u)));
273
+ return {
274
+ role: m.role,
275
+ content: [
276
+ { type: "text", text: m.content },
277
+ ...dataUris.map((url) => ({ type: "image_url", image_url: { url } })),
278
+ ],
279
+ };
280
+ }
281
+ async toDataUri(url) {
282
+ if (url.startsWith("data:"))
283
+ return url;
284
+ const res = await this.fetchImpl(url);
285
+ if (!res.ok) {
286
+ throw new Error(`GatewayLlmCaller.toDataUri: ${res.status} ${res.statusText} fetching ${url}`);
287
+ }
288
+ const contentType = res.headers.get("content-type")?.split(";")[0]?.trim() || "image/jpeg";
289
+ const buf = Buffer.from(await res.arrayBuffer());
290
+ return `data:${contentType};base64,${buf.toString("base64")}`;
291
+ }
292
+ usage(raw) {
293
+ if (!raw.usage)
294
+ return undefined;
295
+ return {
296
+ promptTokens: raw.usage.prompt_tokens,
297
+ completionTokens: raw.usage.completion_tokens,
298
+ };
299
+ }
300
+ /**
301
+ * POST /chat/completions with transient-error retry (F1).
302
+ * Throws TransientLlmError after exhausting retries on transient failures —
303
+ * caller catches it to trigger model fallback (F2). Non-transient errors
304
+ * (4xx other than 408/425/429, malformed responses) propagate as plain Error.
305
+ */
306
+ async postWithRetry(body) {
307
+ return this.withRetry(() => this.postOnce(body));
308
+ }
309
+ async withRetry(fn) {
310
+ let lastErr;
311
+ for (let attempt = 0; attempt < this.maxRetries; attempt++) {
312
+ try {
313
+ return await fn();
314
+ }
315
+ catch (err) {
316
+ lastErr = err;
317
+ const transient = err instanceof TransientLlmError || isTransientNetworkError(err);
318
+ if (!transient || attempt === this.maxRetries - 1) {
319
+ if (transient) {
320
+ // Wrap so the fallback-model path can catch it explicitly.
321
+ throw err instanceof TransientLlmError
322
+ ? err
323
+ : new TransientLlmError(`transient LLM error after ${attempt + 1} attempts: ${String(err?.message ?? err)}`, err);
324
+ }
325
+ throw err;
326
+ }
327
+ await new Promise((r) => setTimeout(r, this.retryBaseMs * Math.pow(4, attempt)));
328
+ }
329
+ }
330
+ throw lastErr;
331
+ }
332
+ async postOnce(body) {
333
+ const ctrl = new AbortController();
334
+ const t = setTimeout(() => ctrl.abort(), this.timeoutMs);
335
+ try {
336
+ const res = await this.fetchImpl(`${this.cfg.baseUrl.replace(/\/$/, "")}/chat/completions`, {
337
+ method: "POST",
338
+ headers: {
339
+ "content-type": "application/json",
340
+ authorization: `Bearer ${this.cfg.apiKey}`,
341
+ },
342
+ body: JSON.stringify(body),
343
+ signal: ctrl.signal,
344
+ });
345
+ if (!res.ok) {
346
+ const text = await res.text().catch(() => "");
347
+ const msg = `GatewayLlmCaller: ${res.status} ${res.statusText} — ${text.slice(0, 500)}`;
348
+ if (TRANSIENT_HTTP_STATUSES.has(res.status)) {
349
+ throw new TransientLlmError(msg);
350
+ }
351
+ throw new Error(msg);
352
+ }
353
+ return (await res.json());
354
+ }
355
+ finally {
356
+ clearTimeout(t);
357
+ }
358
+ }
359
+ }
360
+ exports.GatewayLlmCaller = GatewayLlmCaller;
@@ -0,0 +1,6 @@
1
+ import { LlmCaller } from "./llmCaller";
2
+ export declare function setLlmCaller(caller: LlmCaller): void;
3
+ export declare function getLlmCaller(): LlmCaller;
4
+ export declare function setAnthropicCaller(caller: LlmCaller | null): void;
5
+ export declare function getAnthropicCaller(): LlmCaller | null;
6
+ //# sourceMappingURL=llmCallerRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmCallerRegistry.d.ts","sourceRoot":"","sources":["../../../src/services/agent/llmCallerRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,aAAa,CAAC;AAY/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEpD;AAED,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAeD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED,wBAAgB,kBAAkB,IAAI,SAAS,GAAG,IAAI,CAErD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setLlmCaller = setLlmCaller;
4
+ exports.getLlmCaller = getLlmCaller;
5
+ exports.setAnthropicCaller = setAnthropicCaller;
6
+ exports.getAnthropicCaller = getAnthropicCaller;
7
+ const llmCaller_1 = require("./llmCaller");
8
+ /**
9
+ * Singleton LlmCaller accessor. Host wires a concrete impl at boot
10
+ * (e.g. GatewayLlmCaller); agent code reads via getLlmCaller().
11
+ *
12
+ * Throwing UnconfiguredLlmCaller is the default so tests fail loud
13
+ * if the host forgets to wire.
14
+ */
15
+ let instance = new llmCaller_1.UnconfiguredLlmCaller();
16
+ function setLlmCaller(caller) {
17
+ instance = caller;
18
+ }
19
+ function getLlmCaller() {
20
+ return instance;
21
+ }
22
+ /**
23
+ * Optional Anthropic-direct caller. Wired only on hosts that have
24
+ * ANTHROPIC_API_KEY set and need Anthropic-specific features (server-side
25
+ * web_search, prompt caching, extended thinking). The Planner reads this
26
+ * only when `useWebResearch` is requested — otherwise the default gateway
27
+ * caller is used so provider portability is preserved.
28
+ *
29
+ * Null when unconfigured rather than throwing — caller code checks and
30
+ * gracefully falls back to the gateway path. See AnthropicLlmCaller docstring
31
+ * for deferred features (Tavily custom tools, fallback chain, streaming).
32
+ */
33
+ let anthropicInstance = null;
34
+ function setAnthropicCaller(caller) {
35
+ anthropicInstance = caller;
36
+ }
37
+ function getAnthropicCaller() {
38
+ return anthropicInstance;
39
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * AG-39: per-model capability scorecard fed by AG-26 critic findings.
3
+ *
4
+ * Why: planner picks `preferredModel` heuristically (tier + cost). It has
5
+ * no evidence about which models actually deliver on capabilities that
6
+ * matter for a given scene — brand-text legibility, character
7
+ * continuity, fast-motion fidelity, etc. After the first time
8
+ * seedance-1.0-pro-fast mangled the "HydraPure" label in test 1 we needed
9
+ * a way to (a) tell the planner "avoid X for scenes needing Y" and (b)
10
+ * automatically degrade trust in a model as critic evidence accumulates,
11
+ * without manually maintaining a blacklist.
12
+ *
13
+ * Threshold (so a single bad scene doesn't kill a model):
14
+ * - score decays by 1 ONLY when both:
15
+ * * >=3 distinct FAIL findings for that capability in the last 10
16
+ * attempts (recent window), AND
17
+ * * failure rate within that window >= 0.30
18
+ * - scores are clamped to [1, 5]
19
+ * - a PASS finding in the window adds back attemptCount only; no
20
+ * auto-recovery of score (we'd rather a human re-rate a model than
21
+ * trust ourselves to undo a downgrade).
22
+ *
23
+ * Storage: a small JSON file under
24
+ * wt-dev-backend/packages/shared/data/model-quality-notes.json
25
+ * checked in to the repo. Reads are memoised per-process; writes are
26
+ * append-only with an exclusive lock so the critic feedback hook can run
27
+ * inline with the agent run without racing.
28
+ *
29
+ * Surface for the planner: `renderModelQualityHintsForSystemPrompt()`
30
+ * returns a short paragraph listing models to AVOID per capability,
31
+ * filtered to only what the planner needs to know (no full dump — keeps
32
+ * the system prompt small).
33
+ */
34
+ export type Capability = "textRendering" | "characterContinuity" | "fastMotion" | "photoreal" | "productFidelity" | "cinematic" | "audioSync";
35
+ export interface QualityEvidence {
36
+ /** ISO timestamp the evidence was recorded. */
37
+ at: string;
38
+ /** Critic's grade for this capability on this scene. */
39
+ verdict: "pass" | "warn" | "fail";
40
+ /** Short why (from the critic's `message`). */
41
+ message: string;
42
+ /** Agent run + scene the evidence came from (for audit). */
43
+ runId: string;
44
+ sceneIndex?: number;
45
+ }
46
+ export interface ModelCapabilityEntry {
47
+ /** 1-5; 5 = best in the catalog at this capability. Hand-seeded, decayed by critic. */
48
+ score: number;
49
+ /** Why the seed score was picked, plus any human notes. */
50
+ seedNote?: string;
51
+ /** Recent evidence — rolling window of the last 10 entries. */
52
+ evidence: QualityEvidence[];
53
+ }
54
+ export interface ModelQualityEntry {
55
+ modelKey: string;
56
+ capabilities: Partial<Record<Capability, ModelCapabilityEntry>>;
57
+ lastUpdated: string;
58
+ }
59
+ export declare function getModelCapabilityScore(modelKey: string, capability: Capability): number | undefined;
60
+ /**
61
+ * Return a short paragraph the planner system prompt can paste in,
62
+ * listing models to AVOID per capability. Only emits hints for
63
+ * capabilities we have rated AND that the brief signals are relevant
64
+ * (so the planner isn't drowned in noise).
65
+ */
66
+ export declare function renderModelQualityHintsForSystemPrompt(opts: {
67
+ needsBrandText?: boolean;
68
+ needsCharacterContinuity?: boolean;
69
+ needsFastMotion?: boolean;
70
+ needsCinematic?: boolean;
71
+ }): string;
72
+ /**
73
+ * Critic feedback hook: called after every stitched-video critic run
74
+ * with the structured findings. We map each finding's `dimension` to a
75
+ * `Capability`, record evidence under the model that rendered the scene,
76
+ * and decay the score iff the recent-window thresholds are met.
77
+ */
78
+ export declare function recordCriticEvidence(input: {
79
+ runId: string;
80
+ /** sceneIndex → modelKey that was actually used (from trace.outcomes). */
81
+ sceneModels: Map<number, string>;
82
+ findings: Array<{
83
+ severity: "pass" | "warn" | "fail";
84
+ dimension: string;
85
+ message: string;
86
+ sceneIndexHint?: number;
87
+ }>;
88
+ }): {
89
+ decays: Array<{
90
+ modelKey: string;
91
+ capability: Capability;
92
+ from: number;
93
+ to: number;
94
+ }>;
95
+ };
96
+ /** For tests + manual inspection. */
97
+ export declare function _dumpStore(): ModelQualityEntry[];
98
+ /** For tests — reset to seed (does NOT touch disk). */
99
+ export declare function _resetCacheForTests(): void;
100
+ //# sourceMappingURL=modelQualityNotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelQualityNotes.d.ts","sourceRoot":"","sources":["../../../src/services/agent/modelQualityNotes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,MAAM,UAAU,GAClB,eAAe,GACf,qBAAqB,GACrB,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAmGD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,sCAAsC,CAAC,IAAI,EAAE;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,MAAM,CA2BT;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC;QACd,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAiE5F;AAED,qCAAqC;AACrC,wBAAgB,UAAU,IAAI,iBAAiB,EAAE,CAEhD;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,SAElC"}