vidspotai-shared 1.0.82 → 1.0.84

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 (442) hide show
  1. package/lib/globals/aiModels/enums.d.ts +11 -1
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +24 -1
  4. package/lib/globals/aiModels/index.d.ts.map +1 -1
  5. package/lib/globals/aiModels/index.js +2 -0
  6. package/lib/globals/aiModels/providers/anthropic.d.ts +12 -0
  7. package/lib/globals/aiModels/providers/anthropic.d.ts.map +1 -0
  8. package/lib/globals/aiModels/providers/anthropic.js +88 -0
  9. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  10. package/lib/globals/aiModels/providers/google.js +82 -0
  11. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  12. package/lib/globals/aiModels/providers/openai.js +63 -4
  13. package/lib/globals/aiModels/tierHelpers.d.ts +12 -0
  14. package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -1
  15. package/lib/globals/aiModels/tierHelpers.js +83 -0
  16. package/lib/globals/aiModels/types.d.ts +19 -0
  17. package/lib/globals/aiModels/types.d.ts.map +1 -1
  18. package/lib/globals/types.d.ts +120 -1
  19. package/lib/globals/types.d.ts.map +1 -1
  20. package/lib/globals/types.js +135 -1
  21. package/lib/models/agent.model.d.ts +41 -1
  22. package/lib/models/agent.model.d.ts.map +1 -1
  23. package/lib/models/index.d.ts +1 -0
  24. package/lib/models/index.d.ts.map +1 -1
  25. package/lib/models/index.js +1 -0
  26. package/lib/models/social.model.d.ts +180 -0
  27. package/lib/models/social.model.d.ts.map +1 -0
  28. package/lib/models/social.model.js +2 -0
  29. package/lib/models/user.model.d.ts +10 -0
  30. package/lib/models/user.model.d.ts.map +1 -1
  31. package/lib/models/video.model.d.ts +6 -0
  32. package/lib/models/video.model.d.ts.map +1 -1
  33. package/lib/schemas/brief.schema.d.ts +46 -0
  34. package/lib/schemas/brief.schema.d.ts.map +1 -1
  35. package/lib/schemas/brief.schema.js +72 -1
  36. package/lib/schemas/index.d.ts +1 -0
  37. package/lib/schemas/index.d.ts.map +1 -1
  38. package/lib/schemas/index.js +1 -0
  39. package/lib/schemas/project.schema.d.ts +67 -0
  40. package/lib/schemas/project.schema.d.ts.map +1 -1
  41. package/lib/schemas/project.schema.js +12 -0
  42. package/lib/schemas/social.schema.d.ts +91 -0
  43. package/lib/schemas/social.schema.d.ts.map +1 -0
  44. package/lib/schemas/social.schema.js +114 -0
  45. package/lib/schemas/videoPlan.schema.d.ts +114 -0
  46. package/lib/schemas/videoPlan.schema.d.ts.map +1 -1
  47. package/lib/schemas/videoPlan.schema.js +141 -1
  48. package/lib/services/agent/chatAgent.d.ts +25 -1
  49. package/lib/services/agent/chatAgent.d.ts.map +1 -1
  50. package/lib/services/agent/chatAgent.js +145 -9
  51. package/lib/services/agent/costPreflight.d.ts +11 -1
  52. package/lib/services/agent/costPreflight.d.ts.map +1 -1
  53. package/lib/services/agent/costPreflight.js +18 -1
  54. package/lib/services/agent/covers/coverPlanner.d.ts +41 -0
  55. package/lib/services/agent/covers/coverPlanner.d.ts.map +1 -0
  56. package/lib/services/agent/covers/coverPlanner.js +278 -0
  57. package/lib/services/agent/covers/covers.schema.d.ts +158 -0
  58. package/lib/services/agent/covers/covers.schema.d.ts.map +1 -0
  59. package/lib/services/agent/covers/covers.schema.js +166 -0
  60. package/lib/services/agent/covers/index.d.ts +3 -0
  61. package/lib/services/agent/covers/index.d.ts.map +1 -0
  62. package/lib/services/agent/covers/index.js +18 -0
  63. package/lib/services/agent/critic.d.ts +10 -0
  64. package/lib/services/agent/critic.d.ts.map +1 -1
  65. package/lib/services/agent/critic.js +37 -1
  66. package/lib/services/agent/editClassifier.d.ts +2 -2
  67. package/lib/services/agent/editClassifier.js +2 -2
  68. package/lib/services/agent/editExisting/editAssembler.d.ts +78 -0
  69. package/lib/services/agent/editExisting/editAssembler.d.ts.map +1 -0
  70. package/lib/services/agent/editExisting/editAssembler.js +172 -0
  71. package/lib/services/agent/editExisting/editExisting.schema.d.ts +119 -0
  72. package/lib/services/agent/editExisting/editExisting.schema.d.ts.map +1 -0
  73. package/lib/services/agent/editExisting/editExisting.schema.js +157 -0
  74. package/lib/services/agent/editExisting/highlightPicker.d.ts +48 -0
  75. package/lib/services/agent/editExisting/highlightPicker.d.ts.map +1 -0
  76. package/lib/services/agent/editExisting/highlightPicker.js +199 -0
  77. package/lib/services/agent/editExisting/index.d.ts +4 -0
  78. package/lib/services/agent/editExisting/index.d.ts.map +1 -0
  79. package/lib/services/agent/editExisting/index.js +19 -0
  80. package/lib/services/agent/eval/seedBriefs.d.ts +4 -3
  81. package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -1
  82. package/lib/services/agent/eval/seedBriefs.js +283 -3
  83. package/lib/services/agent/eval/types.d.ts +10 -0
  84. package/lib/services/agent/eval/types.d.ts.map +1 -1
  85. package/lib/services/agent/executor/core.d.ts +70 -0
  86. package/lib/services/agent/executor/core.d.ts.map +1 -0
  87. package/lib/services/agent/executor/core.js +250 -0
  88. package/lib/services/agent/executor/duration.d.ts +20 -0
  89. package/lib/services/agent/executor/duration.d.ts.map +1 -0
  90. package/lib/services/agent/executor/duration.js +46 -0
  91. package/lib/services/agent/executor/index.d.ts +15 -0
  92. package/lib/services/agent/executor/index.d.ts.map +1 -0
  93. package/lib/services/agent/executor/index.js +32 -0
  94. package/lib/services/agent/executor/types.d.ts +183 -0
  95. package/lib/services/agent/executor/types.d.ts.map +1 -0
  96. package/lib/services/agent/executor/types.js +29 -0
  97. package/lib/services/agent/executor/visual.d.ts +32 -0
  98. package/lib/services/agent/executor/visual.d.ts.map +1 -0
  99. package/lib/services/agent/executor/visual.js +400 -0
  100. package/lib/services/agent/executor/voice.d.ts +17 -0
  101. package/lib/services/agent/executor/voice.d.ts.map +1 -0
  102. package/lib/services/agent/executor/voice.js +119 -0
  103. package/lib/services/agent/extendChain.d.ts +101 -0
  104. package/lib/services/agent/extendChain.d.ts.map +1 -0
  105. package/lib/services/agent/extendChain.js +177 -0
  106. package/lib/services/agent/index.d.ts +11 -1
  107. package/lib/services/agent/index.d.ts.map +1 -1
  108. package/lib/services/agent/index.js +11 -1
  109. package/lib/services/agent/llmCaller.d.ts +7 -8
  110. package/lib/services/agent/llmCaller.d.ts.map +1 -1
  111. package/lib/services/agent/llmCallerAnthropic.d.ts +44 -31
  112. package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -1
  113. package/lib/services/agent/llmCallerAnthropic.js +135 -60
  114. package/lib/services/agent/llmCallerFactory.d.ts +34 -0
  115. package/lib/services/agent/llmCallerFactory.d.ts.map +1 -0
  116. package/lib/services/agent/llmCallerFactory.js +31 -0
  117. package/lib/services/agent/llmCallerGemini.d.ts +62 -0
  118. package/lib/services/agent/llmCallerGemini.d.ts.map +1 -0
  119. package/lib/services/agent/llmCallerGemini.js +235 -0
  120. package/lib/services/agent/llmCallerOpenai.d.ts +56 -0
  121. package/lib/services/agent/llmCallerOpenai.d.ts.map +1 -0
  122. package/lib/services/agent/llmCallerOpenai.js +230 -0
  123. package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -1
  124. package/lib/services/agent/llmCallerRegistry.js +7 -7
  125. package/lib/services/agent/llmCallerRouting.d.ts +63 -0
  126. package/lib/services/agent/llmCallerRouting.d.ts.map +1 -0
  127. package/lib/services/agent/llmCallerRouting.js +124 -0
  128. package/lib/services/agent/llmModelRegistry.d.ts +59 -0
  129. package/lib/services/agent/llmModelRegistry.d.ts.map +1 -0
  130. package/lib/services/agent/llmModelRegistry.js +168 -0
  131. package/lib/services/agent/llmRetry.d.ts +57 -0
  132. package/lib/services/agent/llmRetry.d.ts.map +1 -0
  133. package/lib/services/agent/llmRetry.js +102 -0
  134. package/lib/services/agent/modelRouter.d.ts +3 -3
  135. package/lib/services/agent/modelRouter.d.ts.map +1 -1
  136. package/lib/services/agent/modelRouter.js +27 -13
  137. package/lib/services/agent/planMutations.d.ts +54 -1
  138. package/lib/services/agent/planMutations.d.ts.map +1 -1
  139. package/lib/services/agent/planMutations.js +78 -0
  140. package/lib/services/agent/planner/Planner.d.ts +0 -17
  141. package/lib/services/agent/planner/Planner.d.ts.map +1 -1
  142. package/lib/services/agent/planner/Planner.js +67 -303
  143. package/lib/services/agent/planner/overlayRegen.d.ts +38 -0
  144. package/lib/services/agent/planner/overlayRegen.d.ts.map +1 -0
  145. package/lib/services/agent/planner/overlayRegen.js +145 -0
  146. package/lib/services/agent/planner/plannerMessages.d.ts +34 -0
  147. package/lib/services/agent/planner/plannerMessages.d.ts.map +1 -0
  148. package/lib/services/agent/planner/plannerMessages.js +185 -0
  149. package/lib/services/agent/planner/promptSections.d.ts +12 -0
  150. package/lib/services/agent/planner/promptSections.d.ts.map +1 -1
  151. package/lib/services/agent/planner/promptSections.js +57 -0
  152. package/lib/services/agent/planner/scriptFirstPlanner.d.ts +35 -0
  153. package/lib/services/agent/planner/scriptFirstPlanner.d.ts.map +1 -0
  154. package/lib/services/agent/planner/scriptFirstPlanner.js +140 -0
  155. package/lib/services/agent/planner/structuralRules.d.ts +10 -0
  156. package/lib/services/agent/planner/structuralRules.d.ts.map +1 -1
  157. package/lib/services/agent/planner/structuralRules.js +92 -9
  158. package/lib/services/agent/planner/validators.d.ts +18 -0
  159. package/lib/services/agent/planner/validators.d.ts.map +1 -1
  160. package/lib/services/agent/planner/validators.js +97 -0
  161. package/lib/services/agent/planner.d.ts +2 -1
  162. package/lib/services/agent/planner.d.ts.map +1 -1
  163. package/lib/services/agent/planner.js +5 -1
  164. package/lib/services/agent/priorProject.d.ts +26 -0
  165. package/lib/services/agent/priorProject.d.ts.map +1 -0
  166. package/lib/services/agent/priorProject.js +51 -0
  167. package/lib/services/agent/providerFallback/chains.d.ts.map +1 -1
  168. package/lib/services/agent/providerFallback/chains.js +27 -15
  169. package/lib/services/agent/repurpose/index.d.ts +3 -0
  170. package/lib/services/agent/repurpose/index.d.ts.map +1 -0
  171. package/lib/services/agent/repurpose/index.js +18 -0
  172. package/lib/services/agent/repurpose/repurpose.schema.d.ts +132 -0
  173. package/lib/services/agent/repurpose/repurpose.schema.d.ts.map +1 -0
  174. package/lib/services/agent/repurpose/repurpose.schema.js +144 -0
  175. package/lib/services/agent/repurpose/shortsPicker.d.ts +25 -0
  176. package/lib/services/agent/repurpose/shortsPicker.d.ts.map +1 -0
  177. package/lib/services/agent/repurpose/shortsPicker.js +218 -0
  178. package/lib/services/agent/runHelpers.d.ts +21 -2
  179. package/lib/services/agent/runHelpers.d.ts.map +1 -1
  180. package/lib/services/agent/runHelpers.js +71 -2
  181. package/lib/services/agent/tools/animateImage.tool.d.ts +1 -0
  182. package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -1
  183. package/lib/services/agent/tools/animateImage.tool.js +12 -0
  184. package/lib/services/agent/tools/chapterOutline.tool.d.ts +42 -0
  185. package/lib/services/agent/tools/chapterOutline.tool.d.ts.map +1 -0
  186. package/lib/services/agent/tools/chapterOutline.tool.js +115 -0
  187. package/lib/services/agent/tools/composeScene.tool.d.ts +63 -0
  188. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -1
  189. package/lib/services/agent/tools/estimateCost.tool.d.ts +27 -0
  190. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -1
  191. package/lib/services/agent/tools/estimateCost.tool.js +55 -7
  192. package/lib/services/agent/tools/extendVideo.tool.d.ts +26 -0
  193. package/lib/services/agent/tools/extendVideo.tool.d.ts.map +1 -0
  194. package/lib/services/agent/tools/extendVideo.tool.js +149 -0
  195. package/lib/services/agent/tools/generateScript.tool.d.ts +184 -0
  196. package/lib/services/agent/tools/generateScript.tool.d.ts.map +1 -0
  197. package/lib/services/agent/tools/generateScript.tool.js +123 -0
  198. package/lib/services/agent/tools/generateVideo.tool.d.ts +1 -0
  199. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -1
  200. package/lib/services/agent/tools/generateVideo.tool.js +20 -1
  201. package/lib/services/agent/tools/index.d.ts +4 -0
  202. package/lib/services/agent/tools/index.d.ts.map +1 -1
  203. package/lib/services/agent/tools/index.js +4 -0
  204. package/lib/services/agent/tools/matchBrollToScript.tool.d.ts +50 -0
  205. package/lib/services/agent/tools/matchBrollToScript.tool.d.ts.map +1 -0
  206. package/lib/services/agent/tools/matchBrollToScript.tool.js +139 -0
  207. package/lib/services/agent/tools/planVideo.tool.d.ts +56 -0
  208. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -1
  209. package/lib/services/agent/tools/planVideo.tool.js +3 -3
  210. package/lib/services/agent/tools/render.tool.d.ts +21 -0
  211. package/lib/services/agent/tools/render.tool.d.ts.map +1 -1
  212. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  213. package/lib/services/aiGen/aiGenFactory.service.js +18 -3
  214. package/lib/services/aiGen/providers/anthropic/anthropic.service.d.ts +26 -0
  215. package/lib/services/aiGen/providers/anthropic/anthropic.service.d.ts.map +1 -0
  216. package/lib/services/aiGen/providers/anthropic/anthropic.service.js +95 -0
  217. package/lib/services/aiGen/providers/google/google.service.d.ts +24 -1
  218. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  219. package/lib/services/aiGen/providers/google/google.service.js +96 -244
  220. package/lib/services/aiGen/providers/google/googleErrors.d.ts +13 -0
  221. package/lib/services/aiGen/providers/google/googleErrors.d.ts.map +1 -0
  222. package/lib/services/aiGen/providers/google/googleErrors.js +102 -0
  223. package/lib/services/aiGen/providers/google/googleFetch.d.ts +8 -0
  224. package/lib/services/aiGen/providers/google/googleFetch.d.ts.map +1 -0
  225. package/lib/services/aiGen/providers/google/googleFetch.js +96 -0
  226. package/lib/services/aiGen/providers/google/googleMusic.d.ts +15 -0
  227. package/lib/services/aiGen/providers/google/googleMusic.d.ts.map +1 -0
  228. package/lib/services/aiGen/providers/google/googleMusic.js +77 -0
  229. package/lib/services/aiGen/providers/kling/kling.service.d.ts +7 -3
  230. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  231. package/lib/services/aiGen/providers/kling/kling.service.js +23 -367
  232. package/lib/services/aiGen/providers/kling/klingCredits.d.ts +9 -0
  233. package/lib/services/aiGen/providers/kling/klingCredits.d.ts.map +1 -0
  234. package/lib/services/aiGen/providers/kling/klingCredits.js +63 -0
  235. package/lib/services/aiGen/providers/kling/klingRequests.d.ts +32 -0
  236. package/lib/services/aiGen/providers/kling/klingRequests.d.ts.map +1 -0
  237. package/lib/services/aiGen/providers/kling/klingRequests.js +194 -0
  238. package/lib/services/aiGen/providers/kling/klingStatus.d.ts +16 -0
  239. package/lib/services/aiGen/providers/kling/klingStatus.d.ts.map +1 -0
  240. package/lib/services/aiGen/providers/kling/klingStatus.js +173 -0
  241. package/lib/services/bullmq.service.d.ts +61 -0
  242. package/lib/services/bullmq.service.d.ts.map +1 -1
  243. package/lib/services/bullmq.service.js +101 -1
  244. package/lib/services/crypto/index.d.ts +2 -0
  245. package/lib/services/crypto/index.d.ts.map +1 -0
  246. package/lib/services/crypto/index.js +17 -0
  247. package/lib/services/crypto/tokenVault.d.ts +47 -0
  248. package/lib/services/crypto/tokenVault.d.ts.map +1 -0
  249. package/lib/services/crypto/tokenVault.js +179 -0
  250. package/lib/services/editor/captionStyleHint.d.ts +3 -0
  251. package/lib/services/editor/captionStyleHint.d.ts.map +1 -0
  252. package/lib/services/editor/captionStyleHint.js +112 -0
  253. package/lib/services/editor/planToProject.d.ts +7 -66
  254. package/lib/services/editor/planToProject.d.ts.map +1 -1
  255. package/lib/services/editor/planToProject.helpers.d.ts +40 -0
  256. package/lib/services/editor/planToProject.helpers.d.ts.map +1 -0
  257. package/lib/services/editor/planToProject.helpers.js +177 -0
  258. package/lib/services/editor/planToProject.js +197 -180
  259. package/lib/services/editor/planToProject.types.d.ts +94 -0
  260. package/lib/services/editor/planToProject.types.d.ts.map +1 -0
  261. package/lib/services/editor/planToProject.types.js +2 -0
  262. package/lib/services/firestore.service.d.ts +5 -0
  263. package/lib/services/firestore.service.d.ts.map +1 -1
  264. package/lib/services/firestore.service.js +13 -0
  265. package/lib/services/index.d.ts +12 -0
  266. package/lib/services/index.d.ts.map +1 -1
  267. package/lib/services/index.js +12 -0
  268. package/lib/services/promptEnhancer/index.d.ts +18 -0
  269. package/lib/services/promptEnhancer/index.d.ts.map +1 -0
  270. package/lib/services/promptEnhancer/index.js +33 -0
  271. package/lib/services/promptEnhancer/models.d.ts +54 -0
  272. package/lib/services/promptEnhancer/models.d.ts.map +1 -0
  273. package/lib/services/promptEnhancer/models.js +37 -0
  274. package/lib/services/promptEnhancer/profiles/agent.profile.d.ts +14 -0
  275. package/lib/services/promptEnhancer/profiles/agent.profile.d.ts.map +1 -0
  276. package/lib/services/promptEnhancer/profiles/agent.profile.js +40 -0
  277. package/lib/services/promptEnhancer/profiles/avatar.profile.d.ts +13 -0
  278. package/lib/services/promptEnhancer/profiles/avatar.profile.d.ts.map +1 -0
  279. package/lib/services/promptEnhancer/profiles/avatar.profile.js +40 -0
  280. package/lib/services/promptEnhancer/profiles/base.d.ts +28 -0
  281. package/lib/services/promptEnhancer/profiles/base.d.ts.map +1 -0
  282. package/lib/services/promptEnhancer/profiles/base.js +35 -0
  283. package/lib/services/promptEnhancer/profiles/image.profile.d.ts +11 -0
  284. package/lib/services/promptEnhancer/profiles/image.profile.d.ts.map +1 -0
  285. package/lib/services/promptEnhancer/profiles/image.profile.js +42 -0
  286. package/lib/services/promptEnhancer/profiles/index.d.ts +12 -0
  287. package/lib/services/promptEnhancer/profiles/index.d.ts.map +1 -0
  288. package/lib/services/promptEnhancer/profiles/index.js +33 -0
  289. package/lib/services/promptEnhancer/profiles/video.profile.d.ts +15 -0
  290. package/lib/services/promptEnhancer/profiles/video.profile.d.ts.map +1 -0
  291. package/lib/services/promptEnhancer/profiles/video.profile.js +81 -0
  292. package/lib/services/promptEnhancer/promptEnhancer.service.d.ts +45 -0
  293. package/lib/services/promptEnhancer/promptEnhancer.service.d.ts.map +1 -0
  294. package/lib/services/promptEnhancer/promptEnhancer.service.js +157 -0
  295. package/lib/services/promptEnhancer/schema.d.ts +19 -0
  296. package/lib/services/promptEnhancer/schema.d.ts.map +1 -0
  297. package/lib/services/promptEnhancer/schema.js +43 -0
  298. package/lib/services/promptEnhancer/types.d.ts +112 -0
  299. package/lib/services/promptEnhancer/types.d.ts.map +1 -0
  300. package/lib/services/promptEnhancer/types.js +2 -0
  301. package/lib/services/socialAI/captionGen.d.ts +81 -0
  302. package/lib/services/socialAI/captionGen.d.ts.map +1 -0
  303. package/lib/services/socialAI/captionGen.js +206 -0
  304. package/lib/services/socialAI/hookScore.d.ts +85 -0
  305. package/lib/services/socialAI/hookScore.d.ts.map +1 -0
  306. package/lib/services/socialAI/hookScore.js +170 -0
  307. package/lib/services/socialAI/index.d.ts +3 -0
  308. package/lib/services/socialAI/index.d.ts.map +1 -0
  309. package/lib/services/socialAI/index.js +18 -0
  310. package/lib/services/socialAccounts/index.d.ts +2 -0
  311. package/lib/services/socialAccounts/index.d.ts.map +1 -0
  312. package/lib/services/socialAccounts/index.js +17 -0
  313. package/lib/services/socialAccounts/socialAccountService.d.ts +25 -0
  314. package/lib/services/socialAccounts/socialAccountService.d.ts.map +1 -0
  315. package/lib/services/socialAccounts/socialAccountService.js +105 -0
  316. package/lib/services/socialEngage/factory.d.ts +7 -0
  317. package/lib/services/socialEngage/factory.d.ts.map +1 -0
  318. package/lib/services/socialEngage/factory.js +25 -0
  319. package/lib/services/socialEngage/index.d.ts +6 -0
  320. package/lib/services/socialEngage/index.d.ts.map +1 -0
  321. package/lib/services/socialEngage/index.js +21 -0
  322. package/lib/services/socialEngage/meta.engage.d.ts +17 -0
  323. package/lib/services/socialEngage/meta.engage.d.ts.map +1 -0
  324. package/lib/services/socialEngage/meta.engage.js +128 -0
  325. package/lib/services/socialEngage/metaWebhook.d.ts +50 -0
  326. package/lib/services/socialEngage/metaWebhook.d.ts.map +1 -0
  327. package/lib/services/socialEngage/metaWebhook.js +93 -0
  328. package/lib/services/socialEngage/types.d.ts +72 -0
  329. package/lib/services/socialEngage/types.d.ts.map +1 -0
  330. package/lib/services/socialEngage/types.js +10 -0
  331. package/lib/services/socialEngage/youtube.engage.d.ts +9 -0
  332. package/lib/services/socialEngage/youtube.engage.d.ts.map +1 -0
  333. package/lib/services/socialEngage/youtube.engage.js +87 -0
  334. package/lib/services/socialFormat/aspectGeometry.d.ts +74 -0
  335. package/lib/services/socialFormat/aspectGeometry.d.ts.map +1 -0
  336. package/lib/services/socialFormat/aspectGeometry.js +135 -0
  337. package/lib/services/socialFormat/index.d.ts +2 -0
  338. package/lib/services/socialFormat/index.d.ts.map +1 -0
  339. package/lib/services/socialFormat/index.js +19 -0
  340. package/lib/services/socialInsights/index.d.ts +3 -0
  341. package/lib/services/socialInsights/index.d.ts.map +1 -0
  342. package/lib/services/socialInsights/index.js +18 -0
  343. package/lib/services/socialInsights/recommendations.d.ts +131 -0
  344. package/lib/services/socialInsights/recommendations.d.ts.map +1 -0
  345. package/lib/services/socialInsights/recommendations.js +277 -0
  346. package/lib/services/socialInsights/timeBuckets.d.ts +35 -0
  347. package/lib/services/socialInsights/timeBuckets.d.ts.map +1 -0
  348. package/lib/services/socialInsights/timeBuckets.js +78 -0
  349. package/lib/services/socialMetrics/factory.d.ts +5 -0
  350. package/lib/services/socialMetrics/factory.d.ts.map +1 -0
  351. package/lib/services/socialMetrics/factory.js +24 -0
  352. package/lib/services/socialMetrics/index.d.ts +6 -0
  353. package/lib/services/socialMetrics/index.d.ts.map +1 -0
  354. package/lib/services/socialMetrics/index.js +21 -0
  355. package/lib/services/socialMetrics/meta.metrics.d.ts +22 -0
  356. package/lib/services/socialMetrics/meta.metrics.d.ts.map +1 -0
  357. package/lib/services/socialMetrics/meta.metrics.js +137 -0
  358. package/lib/services/socialMetrics/tiktok.metrics.d.ts +8 -0
  359. package/lib/services/socialMetrics/tiktok.metrics.d.ts.map +1 -0
  360. package/lib/services/socialMetrics/tiktok.metrics.js +43 -0
  361. package/lib/services/socialMetrics/types.d.ts +54 -0
  362. package/lib/services/socialMetrics/types.d.ts.map +1 -0
  363. package/lib/services/socialMetrics/types.js +2 -0
  364. package/lib/services/socialMetrics/youtube.metrics.d.ts +8 -0
  365. package/lib/services/socialMetrics/youtube.metrics.d.ts.map +1 -0
  366. package/lib/services/socialMetrics/youtube.metrics.js +43 -0
  367. package/lib/services/socialOAuth/factory.d.ts +7 -0
  368. package/lib/services/socialOAuth/factory.d.ts.map +1 -0
  369. package/lib/services/socialOAuth/factory.js +42 -0
  370. package/lib/services/socialOAuth/index.d.ts +11 -0
  371. package/lib/services/socialOAuth/index.d.ts.map +1 -0
  372. package/lib/services/socialOAuth/index.js +26 -0
  373. package/lib/services/socialOAuth/linkedin.oauth.d.ts +14 -0
  374. package/lib/services/socialOAuth/linkedin.oauth.d.ts.map +1 -0
  375. package/lib/services/socialOAuth/linkedin.oauth.js +127 -0
  376. package/lib/services/socialOAuth/meta.oauth.d.ts +31 -0
  377. package/lib/services/socialOAuth/meta.oauth.d.ts.map +1 -0
  378. package/lib/services/socialOAuth/meta.oauth.js +214 -0
  379. package/lib/services/socialOAuth/oauthState.d.ts +14 -0
  380. package/lib/services/socialOAuth/oauthState.d.ts.map +1 -0
  381. package/lib/services/socialOAuth/oauthState.js +66 -0
  382. package/lib/services/socialOAuth/pinterest.oauth.d.ts +15 -0
  383. package/lib/services/socialOAuth/pinterest.oauth.d.ts.map +1 -0
  384. package/lib/services/socialOAuth/pinterest.oauth.js +126 -0
  385. package/lib/services/socialOAuth/threads.oauth.d.ts +14 -0
  386. package/lib/services/socialOAuth/threads.oauth.d.ts.map +1 -0
  387. package/lib/services/socialOAuth/threads.oauth.js +129 -0
  388. package/lib/services/socialOAuth/tiktok.oauth.d.ts +15 -0
  389. package/lib/services/socialOAuth/tiktok.oauth.d.ts.map +1 -0
  390. package/lib/services/socialOAuth/tiktok.oauth.js +151 -0
  391. package/lib/services/socialOAuth/types.d.ts +67 -0
  392. package/lib/services/socialOAuth/types.d.ts.map +1 -0
  393. package/lib/services/socialOAuth/types.js +2 -0
  394. package/lib/services/socialOAuth/x.oauth.d.ts +17 -0
  395. package/lib/services/socialOAuth/x.oauth.d.ts.map +1 -0
  396. package/lib/services/socialOAuth/x.oauth.js +134 -0
  397. package/lib/services/socialOAuth/youtube.oauth.d.ts +15 -0
  398. package/lib/services/socialOAuth/youtube.oauth.d.ts.map +1 -0
  399. package/lib/services/socialOAuth/youtube.oauth.js +156 -0
  400. package/lib/services/socialPublish/factory.d.ts +5 -0
  401. package/lib/services/socialPublish/factory.d.ts.map +1 -0
  402. package/lib/services/socialPublish/factory.js +32 -0
  403. package/lib/services/socialPublish/index.d.ts +10 -0
  404. package/lib/services/socialPublish/index.d.ts.map +1 -0
  405. package/lib/services/socialPublish/index.js +25 -0
  406. package/lib/services/socialPublish/linkedin.publish.d.ts +9 -0
  407. package/lib/services/socialPublish/linkedin.publish.d.ts.map +1 -0
  408. package/lib/services/socialPublish/linkedin.publish.js +143 -0
  409. package/lib/services/socialPublish/meta.publish.d.ts +28 -0
  410. package/lib/services/socialPublish/meta.publish.d.ts.map +1 -0
  411. package/lib/services/socialPublish/meta.publish.js +149 -0
  412. package/lib/services/socialPublish/pinterest.publish.d.ts +13 -0
  413. package/lib/services/socialPublish/pinterest.publish.d.ts.map +1 -0
  414. package/lib/services/socialPublish/pinterest.publish.js +130 -0
  415. package/lib/services/socialPublish/threads.publish.d.ts +12 -0
  416. package/lib/services/socialPublish/threads.publish.d.ts.map +1 -0
  417. package/lib/services/socialPublish/threads.publish.js +96 -0
  418. package/lib/services/socialPublish/tiktok.publish.d.ts +13 -0
  419. package/lib/services/socialPublish/tiktok.publish.d.ts.map +1 -0
  420. package/lib/services/socialPublish/tiktok.publish.js +118 -0
  421. package/lib/services/socialPublish/types.d.ts +47 -0
  422. package/lib/services/socialPublish/types.d.ts.map +1 -0
  423. package/lib/services/socialPublish/types.js +2 -0
  424. package/lib/services/socialPublish/x.publish.d.ts +12 -0
  425. package/lib/services/socialPublish/x.publish.d.ts.map +1 -0
  426. package/lib/services/socialPublish/x.publish.js +147 -0
  427. package/lib/services/socialPublish/youtube.publish.d.ts +9 -0
  428. package/lib/services/socialPublish/youtube.publish.d.ts.map +1 -0
  429. package/lib/services/socialPublish/youtube.publish.js +107 -0
  430. package/lib/services/stock/index.d.ts +2 -0
  431. package/lib/services/stock/index.d.ts.map +1 -0
  432. package/lib/services/stock/index.js +17 -0
  433. package/lib/services/stock/realPersonSafety.d.ts +99 -0
  434. package/lib/services/stock/realPersonSafety.d.ts.map +1 -0
  435. package/lib/services/stock/realPersonSafety.js +248 -0
  436. package/lib/utils/index.d.ts +1 -0
  437. package/lib/utils/index.d.ts.map +1 -1
  438. package/lib/utils/index.js +1 -0
  439. package/lib/utils/renderTier.d.ts +26 -0
  440. package/lib/utils/renderTier.d.ts.map +1 -0
  441. package/lib/utils/renderTier.js +34 -0
  442. package/package.json +1 -1
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.planExtendChain = planExtendChain;
4
+ exports.resolveExtendChain = resolveExtendChain;
5
+ const logger_1 = require("../../utils/logger");
6
+ const tierHelpers_1 = require("../../globals/aiModels/tierHelpers");
7
+ const extendVideo_tool_1 = require("./tools/extendVideo.tool");
8
+ /**
9
+ * AG-2 / Stream L (L-4) — extend-chain orchestration.
10
+ *
11
+ * A single scene can ask for more seconds than the chosen video model emits in
12
+ * one clip (e.g. a 16s continuous establishing shot on Kling, whose max single
13
+ * clip is ~10s). For extend-capable providers (Kling / Pixverse) we don't drop
14
+ * the extra seconds or fall back to a different provider (which would visibly
15
+ * change the look) — we generate the initial clip at the model's max legal
16
+ * length, then call the provider's NATIVE extension endpoint N times, each
17
+ * continuing the PREVIOUS provider task.
18
+ *
19
+ * The hard part is ordering: `extend_video` takes a `previousTaskId` that must
20
+ * already be COMPLETE on the provider before the extension can start. The agent
21
+ * executor is otherwise fire-and-forget (it triggers every scene's generation
22
+ * in parallel and returns `pendingTaskId`s for the host to poll afterwards), so
23
+ * the chain can't live in that parallel fan-out.
24
+ *
25
+ * Split of responsibilities:
26
+ * - `planExtendChain` (pure) — decides whether a scene needs a chain
27
+ * and how to slice the extra seconds. The
28
+ * executor calls this at trigger time and
29
+ * emits the segments on the SceneOutcome.
30
+ * - `resolveExtendChain` (injected) — runs the chain SEQUENTIALLY: poll the
31
+ * source → fire one extend → poll it →
32
+ * repeat. The host injects `pollTask`
33
+ * (a TaskPoller wrapper) + `runTool`.
34
+ *
35
+ * Keeping both here (in `shared`) rather than in the node worker means the
36
+ * decision logic is unit-testable and exercised by the eval harness's executor.
37
+ */
38
+ /** Provider extension request bounds (mirror extendVideo.tool's InputSchema). */
39
+ const EXTEND_MIN_SEC = 2;
40
+ const EXTEND_MAX_SEC = 10;
41
+ /** Preferred per-extension increment (Kling ~4-5s, Pixverse ~5-8s natively). */
42
+ const PREFERRED_STEP_SEC = 5;
43
+ /**
44
+ * Hard cap on extensions per scene. A mis-planned 60s "scene" should not fan
45
+ * into a dozen paid provider calls — beyond this we get as close as we can and
46
+ * log the shortfall. maxClip + MAX_EXTENSIONS×EXTEND_MAX covers ~70s, well past
47
+ * any sane single continuous shot.
48
+ */
49
+ const MAX_EXTENSIONS = 6;
50
+ /** Don't chain for a sub-second overflow — snapping absorbs it. */
51
+ const CHAIN_TOLERANCE_SEC = 0.5;
52
+ /**
53
+ * Decide whether a video scene needs an extend chain, and slice the extra
54
+ * seconds into provider-legal extension steps. Returns `null` when:
55
+ * - the model has no declared duration constraint (unconstrained → one clip),
56
+ * - the target already fits one clip (within snap tolerance), or
57
+ * - the model has no native extension endpoint (caller clamps as before — a
58
+ * non-extend model can't continue a clip, so the extra seconds are dropped
59
+ * by the existing capability/snap path).
60
+ *
61
+ * `targetDurationSec` is the scene's full requested length (scene.durationMs/1000).
62
+ */
63
+ function planExtendChain(modelKey, targetDurationSec) {
64
+ const allowed = (0, tierHelpers_1.getModelAllowedDurations)(modelKey);
65
+ if (!allowed || allowed.length === 0)
66
+ return null; // unconstrained
67
+ const maxClip = allowed[allowed.length - 1]; // getModelAllowedDurations sorts ascending
68
+ const remaining = targetDurationSec - maxClip;
69
+ if (remaining <= CHAIN_TOLERANCE_SEC)
70
+ return null; // fits one clip
71
+ if (!(0, extendVideo_tool_1.modelSupportsExtend)(modelKey))
72
+ return null; // can't extend on this model
73
+ let n = Math.ceil(remaining / PREFERRED_STEP_SEC);
74
+ n = Math.min(Math.max(n, 1), MAX_EXTENSIONS);
75
+ const per = clamp(Math.round(remaining / n), EXTEND_MIN_SEC, EXTEND_MAX_SEC);
76
+ const segments = Array.from({ length: n }, () => ({
77
+ extraDurationSec: per,
78
+ }));
79
+ const achievable = maxClip + n * per;
80
+ if (achievable + CHAIN_TOLERANCE_SEC < targetDurationSec) {
81
+ logger_1.logger.warn("extendChain: requested duration exceeds chain ceiling — clamping", {
82
+ modelKey,
83
+ targetDurationSec,
84
+ maxClip,
85
+ extensions: n,
86
+ perSec: per,
87
+ achievableSec: achievable,
88
+ });
89
+ }
90
+ return { initialDurationSec: maxClip, segments };
91
+ }
92
+ /**
93
+ * Run an extend chain to completion, enforcing source-task ordering: poll the
94
+ * current task → on completion, fire the next extension → poll that → repeat.
95
+ * Returns the source + extension clips in render order.
96
+ *
97
+ * Failure is partial-tolerant: if a mid-chain task fails/times out we stop and
98
+ * return the clips resolved so far with ok:false, so the caller can decide to
99
+ * ship a shorter scene rather than lose the whole thing. A failed SOURCE clip
100
+ * (no clips resolved) is a hard scene failure.
101
+ */
102
+ async function resolveExtendChain(deps, args) {
103
+ const { runTool, pollTask } = deps;
104
+ const { sceneIndex, modelKey, segments, ctx } = args;
105
+ const prefix = args.outputFilenamePrefix ?? `scene${sceneIndex}`;
106
+ const clips = [];
107
+ let currentTaskId = args.initialTaskId;
108
+ let currentDurationSec = args.initialDurationSec;
109
+ // Step 0 is the source clip; steps 1..N are the extensions. We poll the
110
+ // current task, record its clip, then (if more remain) fire the next extend.
111
+ for (let step = 0; step <= segments.length; step++) {
112
+ const poll = await pollTask({
113
+ ref: `${sceneIndex}.${step}`,
114
+ taskId: currentTaskId,
115
+ modelKey,
116
+ outputFilename: `${prefix}-ext${step}`,
117
+ });
118
+ if (poll.status !== "completed" || !poll.videoUrl) {
119
+ logger_1.logger.warn("extendChain: chain task did not complete — stopping", {
120
+ sceneIndex,
121
+ step,
122
+ status: poll.status,
123
+ taskId: currentTaskId,
124
+ error: poll.errorMessage,
125
+ });
126
+ return {
127
+ ok: false,
128
+ clips,
129
+ error: {
130
+ code: step === 0 ? "EXTEND_SOURCE_FAILED" : "EXTEND_STEP_FAILED",
131
+ message: `Extend chain ${step === 0 ? "source" : `step ${step}`} ${poll.status}` +
132
+ (poll.errorMessage ? `: ${poll.errorMessage}` : ""),
133
+ failedTaskId: currentTaskId,
134
+ },
135
+ };
136
+ }
137
+ clips.push({
138
+ visualUrl: poll.videoUrl,
139
+ taskId: currentTaskId,
140
+ durationSec: currentDurationSec,
141
+ });
142
+ // All steps resolved — done.
143
+ if (step === segments.length)
144
+ break;
145
+ // Fire the next extension, continuing the task we just confirmed complete.
146
+ const seg = segments[step];
147
+ const extendOut = await runTool("extend_video", {
148
+ previousTaskId: currentTaskId,
149
+ modelKey,
150
+ extraDurationSec: seg.extraDurationSec,
151
+ ...(seg.prompt ? { prompt: seg.prompt } : {}),
152
+ }, { ...ctx, idempotencyKey: `${ctx.idempotencyKey ?? ctx.agentRunId}:ext${step + 1}` });
153
+ if (!extendOut.ok) {
154
+ logger_1.logger.warn("extendChain: extend_video call failed — stopping", {
155
+ sceneIndex,
156
+ step: step + 1,
157
+ sourceTaskId: currentTaskId,
158
+ error: extendOut.error,
159
+ });
160
+ return {
161
+ ok: false,
162
+ clips,
163
+ error: {
164
+ code: "EXTEND_TRIGGER_FAILED",
165
+ message: `extend_video step ${step + 1} failed: ${extendOut.error?.message ?? extendOut.error?.code ?? "unknown"}`,
166
+ failedTaskId: currentTaskId,
167
+ },
168
+ };
169
+ }
170
+ currentTaskId = extendOut.output.taskId;
171
+ currentDurationSec = seg.extraDurationSec;
172
+ }
173
+ return { ok: true, clips };
174
+ }
175
+ function clamp(v, lo, hi) {
176
+ return Math.max(lo, Math.min(hi, v));
177
+ }
@@ -2,13 +2,19 @@ export * from "./toolRegistry";
2
2
  export * from "./tools";
3
3
  export * from "./modelRouter";
4
4
  export * from "./llmCaller";
5
- export * from "./llmCallerGateway";
5
+ export * from "./llmRetry";
6
+ export * from "./llmModelRegistry";
6
7
  export * from "./llmCallerAnthropic";
8
+ export * from "./llmCallerOpenai";
9
+ export * from "./llmCallerGemini";
10
+ export * from "./llmCallerRouting";
11
+ export * from "./llmCallerFactory";
7
12
  export * from "./personas";
8
13
  export * from "./llmCallerRegistry";
9
14
  export * from "./costPreflight";
10
15
  export * from "./planner";
11
16
  export * from "./planMutations";
17
+ export * from "./priorProject";
12
18
  export * from "./bibleBuilder";
13
19
  export * from "./referenceImageRenderer";
14
20
  export * from "./bibleImageVision";
@@ -16,6 +22,10 @@ export * from "./sceneLayoutVision";
16
22
  export * from "./beatSnap";
17
23
  export * from "./musicSelect";
18
24
  export * from "./executor";
25
+ export * from "./extendChain";
26
+ export * from "./editExisting";
27
+ export * from "./repurpose";
28
+ export * from "./covers";
19
29
  export * from "./providerTaskCache";
20
30
  export * from "./planDiff";
21
31
  export * from "./taskPoller";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -18,13 +18,19 @@ __exportStar(require("./toolRegistry"), exports);
18
18
  __exportStar(require("./tools"), exports);
19
19
  __exportStar(require("./modelRouter"), exports);
20
20
  __exportStar(require("./llmCaller"), exports);
21
- __exportStar(require("./llmCallerGateway"), exports);
21
+ __exportStar(require("./llmRetry"), exports);
22
+ __exportStar(require("./llmModelRegistry"), exports);
22
23
  __exportStar(require("./llmCallerAnthropic"), exports);
24
+ __exportStar(require("./llmCallerOpenai"), exports);
25
+ __exportStar(require("./llmCallerGemini"), exports);
26
+ __exportStar(require("./llmCallerRouting"), exports);
27
+ __exportStar(require("./llmCallerFactory"), exports);
23
28
  __exportStar(require("./personas"), exports);
24
29
  __exportStar(require("./llmCallerRegistry"), exports);
25
30
  __exportStar(require("./costPreflight"), exports);
26
31
  __exportStar(require("./planner"), exports);
27
32
  __exportStar(require("./planMutations"), exports);
33
+ __exportStar(require("./priorProject"), exports);
28
34
  __exportStar(require("./bibleBuilder"), exports);
29
35
  __exportStar(require("./referenceImageRenderer"), exports);
30
36
  __exportStar(require("./bibleImageVision"), exports);
@@ -32,6 +38,10 @@ __exportStar(require("./sceneLayoutVision"), exports);
32
38
  __exportStar(require("./beatSnap"), exports);
33
39
  __exportStar(require("./musicSelect"), exports);
34
40
  __exportStar(require("./executor"), exports);
41
+ __exportStar(require("./extendChain"), exports);
42
+ __exportStar(require("./editExisting"), exports);
43
+ __exportStar(require("./repurpose"), exports);
44
+ __exportStar(require("./covers"), exports);
35
45
  __exportStar(require("./providerTaskCache"), exports);
36
46
  __exportStar(require("./planDiff"), exports);
37
47
  __exportStar(require("./taskPoller"), exports);
@@ -2,9 +2,10 @@ import { z } from "zod";
2
2
  import { ModelChoice } from "./modelRouter";
3
3
  /**
4
4
  * Provider-agnostic LLM caller. The host (Express server / Firebase Functions)
5
- * wires a concrete implementation backed by Vercel AI Gateway, OpenRouter, or
6
- * direct SDKs. Agent code only ever sees this interface, which keeps it
7
- * portable and lets us A/B-test models against the eval set without code changes.
5
+ * wires a concrete implementation the native ProviderRoutingLlmCaller, which
6
+ * dispatches per request to a provider's own SDK (Anthropic / OpenAI / Gemini).
7
+ * Agent code only ever sees this interface, which keeps it portable and lets us
8
+ * A/B-test models against the eval set without code changes.
8
9
  */
9
10
  export interface LlmCaller {
10
11
  /** Free-form chat completion. */
@@ -30,11 +31,9 @@ export interface LlmCaller {
30
31
  * emitting the final structured payload.
31
32
  *
32
33
  * Only implemented by callers that natively support tool-use loops (today:
33
- * `AnthropicLlmCaller`). `GatewayLlmCaller` does NOT implement this because
34
- * Anthropic's built-in server tools are not exposable through the OpenAI-
35
- * compatible Vercel AI Gateway. If a future need warrants it, we can add
36
- * a custom-tools-only variant on the gateway (e.g. Tavily passed as a
37
- * regular OpenAI-format tool) — see deferred work in `llmCallerAnthropic.ts`.
34
+ * `AnthropicLlmCaller`, for Anthropic's built-in server tools). The
35
+ * dispatcher routes structuredWithTools to the Anthropic caller and throws
36
+ * if a non-Anthropic provider is asked for it. OpenAI/Gemini callers omit it.
38
37
  */
39
38
  structuredWithTools?<T extends z.ZodTypeAny>(req: StructuredWithToolsRequest<T>): Promise<StructuredResponse<T>>;
40
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"llmCaller.d.ts","sourceRoot":"","sources":["../../../src/services/agent/llmCaller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmCaller.d.ts","sourceRoot":"","sources":["../../../src/services/agent/llmCaller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE9C,yFAAyF;IACzF,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAC/B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACtC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACxB;QACD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;KACxC,CAAC;IAEF;;;;;;;;;OASG;IACH,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACzC,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACvD,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC;IACV,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAChE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,YAAY,CAAC;QACnB,6DAA6D;QAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,6CAA6C;QAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACxD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IACrD,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAK7B,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAKrE"}
@@ -1,22 +1,18 @@
1
1
  import { z } from "zod";
2
2
  import { ChatRequest, ChatResponse, LlmCaller, StructuredRequest, StructuredResponse, StructuredWithToolsRequest } from "./llmCaller";
3
+ import { TransientLlmError, isTransientLlmError } from "./llmRetry";
4
+ export { TransientLlmError, isTransientLlmError };
3
5
  /**
4
- * Direct Anthropic SDK LlmCaller. Exists alongside GatewayLlmCaller because
5
- * Anthropic's server-side tools (`web_search_20260209`, `web_fetch`, etc.)
6
- * cannot be exposed through the OpenAI-compatible Vercel AI Gateway
7
- * they're Anthropic-only constructs that the API executes server-side.
6
+ * Direct Anthropic SDK LlmCaller the `anthropic` slice of the native
7
+ * ProviderRoutingLlmCaller (LLM_NATIVE_MIGRATION_PLAN). Serves all anthropic
8
+ * models the router picks (router / planner / executor) and is the only caller
9
+ * that implements `structuredWithTools`, because Anthropic's server-side tools
10
+ * (`web_search_20260209`, `web_fetch`, etc.) are Anthropic-only constructs the
11
+ * API executes server-side — no other provider exposes them.
8
12
  *
9
- * Use this caller when:
10
- * - You need server-side `web_search` for planner grounding.
11
- * - You want Anthropic-native features (prompt caching, extended thinking,
12
- * citations) without a translation layer.
13
- *
14
- * Use the gateway caller when:
15
- * - You want provider portability (GPT-5 / Gemini fallback chains).
16
- * - You don't need built-in tools.
17
- *
18
- * The Planner reads from `getAnthropicCaller()` only when `useWebResearch`
19
- * is set; otherwise it stays on the gateway path.
13
+ * The Planner also reads this directly via `getAnthropicCaller()` when
14
+ * `useWebResearch` is set (server-side `web_search` grounding); otherwise it
15
+ * goes through the normal dispatcher, which already routes anthropic natively.
20
16
  *
21
17
  * Implemented features:
22
18
  * - Prompt caching (`cachePrompt: true`): `cache_control: ephemeral` on
@@ -25,8 +21,10 @@ import { ChatRequest, ChatResponse, LlmCaller, StructuredRequest, StructuredResp
25
21
  * - Extended thinking (`thinking.budgetTokens`): enables Claude's
26
22
  * interleaved reasoning blocks for T3 / complex briefs. Forces
27
23
  * temperature=1 and threads `thinking` blocks through the tool-use loop.
28
- * - Transient errors propagate as `TransientLlmError` so callers can
29
- * fall back to the gateway path (no web search) on Anthropic outages.
24
+ * - Native incremental streaming (`structuredStream`): forces the
25
+ * `submit_<schema>` tool and streams its `input_json_delta` partials.
26
+ * - Transient errors propagate as `TransientLlmError` so the dispatcher can
27
+ * run the cross-provider `fallbackModel` on Anthropic outages.
30
28
  *
31
29
  * Deferred work (v2):
32
30
  * - Custom client-side tools (Tavily / image search): extend the loop
@@ -46,15 +44,6 @@ export interface AnthropicCallerConfig {
46
44
  /** Max retries on transient errors per call. Default 3. */
47
45
  maxRetries?: number;
48
46
  }
49
- /**
50
- * Marks an error worth retrying on the gateway path. The Planner catches
51
- * this specifically to degrade gracefully — drops research, keeps planning.
52
- */
53
- export declare class TransientLlmError extends Error {
54
- readonly cause?: unknown | undefined;
55
- constructor(message: string, cause?: unknown | undefined);
56
- }
57
- export declare function isTransientLlmError(err: unknown): err is TransientLlmError;
58
47
  export declare class AnthropicLlmCaller implements LlmCaller {
59
48
  private readonly client;
60
49
  private readonly timeoutMs;
@@ -63,6 +52,26 @@ export declare class AnthropicLlmCaller implements LlmCaller {
63
52
  chat(req: ChatRequest): Promise<ChatResponse>;
64
53
  structured<T extends z.ZodTypeAny>(req: StructuredRequest<T>): Promise<StructuredResponse<T>>;
65
54
  structuredWithTools<T extends z.ZodTypeAny>(req: StructuredWithToolsRequest<T>): Promise<StructuredResponse<T>>;
55
+ /**
56
+ * Native incremental streaming structured output. Forces the
57
+ * `submit_<schemaName>` tool and streams its argument JSON as
58
+ * `input_json_delta` chunks — yielding each partial for token-by-token UI —
59
+ * then takes the authoritative payload from `stream.finalMessage()` (more
60
+ * robust than re-concatenating partials) and Zod-validates it.
61
+ *
62
+ * Scope: the base StructuredRequest carries no server tools / thinking /
63
+ * caching (those live on StructuredWithToolsRequest and run the blocking
64
+ * tool-loop), so this is a single forced-tool turn. Failure handling mirrors
65
+ * the other streaming callers: a post-stream parse/validation miss rejects
66
+ * `result` and returns cleanly (so the caller's token loop completes and its
67
+ * `await result` retry path fires); a mid-stream/connect drop rejects AND
68
+ * throws out so the iteration aborts.
69
+ */
70
+ structuredStream<T extends z.ZodTypeAny>(req: StructuredRequest<T>): {
71
+ tokens: AsyncIterable<string>;
72
+ result: Promise<StructuredResponse<T>>;
73
+ };
74
+ private streamIterator;
66
75
  /**
67
76
  * Anthropic's API takes a top-level `system` (string or TextBlockParam[])
68
77
  * and messages of user/assistant only. Our LlmCaller carries system as
@@ -78,13 +87,17 @@ export declare class AnthropicLlmCaller implements LlmCaller {
78
87
  private splitSystem;
79
88
  private buildServerTools;
80
89
  /**
81
- * Map our ModelChoice → Anthropic API model id. Pass-through today since
82
- * routing uses Anthropic-shaped ids (e.g. "claude-sonnet-4-6"). If a
83
- * future routing entry uses a non-Anthropic id we'd want to throw rather
84
- * than silently send GPT names to the Anthropic API.
90
+ * Map our ModelChoice → Anthropic API model id via the shared registry
91
+ * (pass-through today). Throws on a non-Anthropic provider rather than
92
+ * silently sending GPT/Gemini names to the Anthropic API the dispatcher
93
+ * routes by provider, so this guards against a mis-wire.
85
94
  */
86
95
  private resolveModelId;
96
+ /**
97
+ * Delegates to the shared transient-retry helper so all native callers share
98
+ * one backoff/classification policy (Phase 1 extraction). The SDK's own
99
+ * `status`/connection-error shapes are recognised by `isTransientError`.
100
+ */
87
101
  private withRetry;
88
- private isTransient;
89
102
  }
90
103
  //# sourceMappingURL=llmCallerAnthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llmCallerAnthropic.d.ts","sourceRoot":"","sources":["../../../src/services/agent/llmCallerAnthropic.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IACb,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAAzC,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,OAAO,YAAA;CAItD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAE1E;AAED,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,GAAG,EAAE,qBAAqB;IAShC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4B7C,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACrC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI3B,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAC9C,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAsHjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,gBAAgB;IAkBxB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;YASR,SAAS;IAyBvB,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"llmCallerAnthropic.d.ts","sourceRoot":"","sources":["../../../src/services/agent/llmCallerAnthropic.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,GAAG,EAAE,qBAAqB;IAShC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4B7C,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACrC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI3B,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAC9C,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAoHjC;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACrC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACxB;QACD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;KACxC;YAgBc,cAAc;IAsF7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,gBAAgB;IAkBxB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAStB;;;;OAIG;IACH,OAAO,CAAC,SAAS;CAGlB"}
@@ -3,26 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AnthropicLlmCaller = exports.TransientLlmError = void 0;
7
- exports.isTransientLlmError = isTransientLlmError;
6
+ exports.AnthropicLlmCaller = exports.isTransientLlmError = exports.TransientLlmError = void 0;
8
7
  const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
9
8
  const zod_1 = require("zod");
10
- const TRANSIENT_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
11
- /**
12
- * Marks an error worth retrying on the gateway path. The Planner catches
13
- * this specifically to degrade gracefully drops research, keeps planning.
14
- */
15
- class TransientLlmError extends Error {
16
- constructor(message, cause) {
17
- super(message);
18
- this.cause = cause;
19
- this.name = "TransientLlmError";
20
- }
21
- }
22
- exports.TransientLlmError = TransientLlmError;
23
- function isTransientLlmError(err) {
24
- return err instanceof Error && err.name === "TransientLlmError";
25
- }
9
+ const llmModelRegistry_1 = require("./llmModelRegistry");
10
+ // Transient-retry primitives are shared across all native callers (Phase 1 of
11
+ // LLM_NATIVE_MIGRATION_PLAN). Re-exported here for backward compat with existing
12
+ // importers that pulled `TransientLlmError` / `isTransientLlmError` from this file.
13
+ const llmRetry_1 = require("./llmRetry");
14
+ Object.defineProperty(exports, "TransientLlmError", { enumerable: true, get: function () { return llmRetry_1.TransientLlmError; } });
15
+ Object.defineProperty(exports, "isTransientLlmError", { enumerable: true, get: function () { return llmRetry_1.isTransientLlmError; } });
26
16
  class AnthropicLlmCaller {
27
17
  constructor(cfg) {
28
18
  this.client = new sdk_1.default({
@@ -149,6 +139,101 @@ class AnthropicLlmCaller {
149
139
  }
150
140
  throw new Error(`AnthropicLlmCaller.structuredWithTools: exceeded ${maxRounds} tool rounds without ${submitToolName}`);
151
141
  }
142
+ /**
143
+ * Native incremental streaming structured output. Forces the
144
+ * `submit_<schemaName>` tool and streams its argument JSON as
145
+ * `input_json_delta` chunks — yielding each partial for token-by-token UI —
146
+ * then takes the authoritative payload from `stream.finalMessage()` (more
147
+ * robust than re-concatenating partials) and Zod-validates it.
148
+ *
149
+ * Scope: the base StructuredRequest carries no server tools / thinking /
150
+ * caching (those live on StructuredWithToolsRequest and run the blocking
151
+ * tool-loop), so this is a single forced-tool turn. Failure handling mirrors
152
+ * the other streaming callers: a post-stream parse/validation miss rejects
153
+ * `result` and returns cleanly (so the caller's token loop completes and its
154
+ * `await result` retry path fires); a mid-stream/connect drop rejects AND
155
+ * throws out so the iteration aborts.
156
+ */
157
+ structuredStream(req) {
158
+ let resolveResult;
159
+ let rejectResult;
160
+ const result = new Promise((resolve, reject) => {
161
+ resolveResult = resolve;
162
+ rejectResult = reject;
163
+ });
164
+ const self = this;
165
+ const tokens = {
166
+ [Symbol.asyncIterator]() {
167
+ return self.streamIterator(req, resolveResult, rejectResult);
168
+ },
169
+ };
170
+ return { tokens, result };
171
+ }
172
+ async *streamIterator(req, resolveResult, rejectResult) {
173
+ const submitToolName = `submit_${req.schemaName}`;
174
+ const jsonSchema = zod_1.z.toJSONSchema(req.schema, { target: "draft-7" });
175
+ const tools = [
176
+ {
177
+ name: submitToolName,
178
+ description: `Submit the final ${req.schemaName} payload. Call this exactly once when ready.`,
179
+ input_schema: jsonSchema,
180
+ },
181
+ ];
182
+ const { system, messages } = this.splitSystem(req.messages, false);
183
+ let requestId;
184
+ let inputTokens;
185
+ let outputTokens;
186
+ try {
187
+ const stream = this.client.messages.stream({
188
+ model: this.resolveModelId(req.model),
189
+ max_tokens: req.maxTokens ?? 8192,
190
+ temperature: req.temperature,
191
+ system,
192
+ tools,
193
+ tool_choice: { type: "tool", name: submitToolName },
194
+ messages,
195
+ });
196
+ for await (const event of stream) {
197
+ if (event.type === "message_start") {
198
+ requestId = event.message.id;
199
+ inputTokens = event.message.usage?.input_tokens;
200
+ }
201
+ else if (event.type === "content_block_delta" &&
202
+ event.delta.type === "input_json_delta") {
203
+ const partial = event.delta.partial_json;
204
+ if (partial)
205
+ yield partial;
206
+ }
207
+ else if (event.type === "message_delta") {
208
+ outputTokens = event.usage?.output_tokens ?? outputTokens;
209
+ }
210
+ }
211
+ // Authoritative payload from the assembled final message (the forced
212
+ // tool_use block's input), not the concatenated partials.
213
+ const final = await stream.finalMessage();
214
+ const submit = final.content.find((b) => b.type === "tool_use" && b.name === submitToolName);
215
+ if (!submit) {
216
+ rejectResult(new Error(`AnthropicLlmCaller.structuredStream: no ${submitToolName} tool_use in final message`));
217
+ return;
218
+ }
219
+ const parsed = req.schema.safeParse(submit.input);
220
+ if (!parsed.success) {
221
+ rejectResult(new Error(`AnthropicLlmCaller.structuredStream: schema validation failed for ${req.schemaName}: ${parsed.error.message}`));
222
+ return;
223
+ }
224
+ resolveResult({
225
+ data: parsed.data,
226
+ usage: { promptTokens: inputTokens, completionTokens: outputTokens },
227
+ requestId,
228
+ attemptedModels: [req.model],
229
+ usedFallback: false,
230
+ });
231
+ }
232
+ catch (e) {
233
+ rejectResult(e);
234
+ throw e;
235
+ }
236
+ }
152
237
  // ---------- helpers ----------
153
238
  /**
154
239
  * Anthropic's API takes a top-level `system` (string or TextBlockParam[])
@@ -170,9 +255,24 @@ class AnthropicLlmCaller {
170
255
  systemText = systemText ? `${systemText}\n\n${m.content}` : m.content;
171
256
  continue;
172
257
  }
173
- // Image attachments are not yet plumbed for the Anthropic caller —
174
- // planner doesn't need them today. When the critic moves over (it's
175
- // vision-heavy), wire image blocks here.
258
+ // Vision: when a message carries imageUrls, emit a content-block array
259
+ // (text + image blocks) instead of a bare string. Uses Anthropic's native
260
+ // URL image source (`source.type: "url"`) no base64 round-trip — which
261
+ // the direct API supports (unlike the gateway's Anthropic translator,
262
+ // which rejected raw https URLs). Needed for the critic fallback
263
+ // (claude-sonnet-4-6, vision) now that it routes here instead of the
264
+ // gateway.
265
+ if (m.imageUrls?.length) {
266
+ const blocks = [
267
+ { type: "text", text: m.content },
268
+ ...m.imageUrls.map((url) => ({
269
+ type: "image",
270
+ source: { type: "url", url },
271
+ })),
272
+ ];
273
+ out.push({ role: m.role, content: blocks });
274
+ continue;
275
+ }
176
276
  out.push({ role: m.role, content: m.content });
177
277
  }
178
278
  if (!systemText)
@@ -207,49 +307,24 @@ class AnthropicLlmCaller {
207
307
  });
208
308
  }
209
309
  /**
210
- * Map our ModelChoice → Anthropic API model id. Pass-through today since
211
- * routing uses Anthropic-shaped ids (e.g. "claude-sonnet-4-6"). If a
212
- * future routing entry uses a non-Anthropic id we'd want to throw rather
213
- * than silently send GPT names to the Anthropic API.
310
+ * Map our ModelChoice → Anthropic API model id via the shared registry
311
+ * (pass-through today). Throws on a non-Anthropic provider rather than
312
+ * silently sending GPT/Gemini names to the Anthropic API the dispatcher
313
+ * routes by provider, so this guards against a mis-wire.
214
314
  */
215
315
  resolveModelId(m) {
216
- if (m.provider !== "anthropic") {
217
- throw new Error(`AnthropicLlmCaller cannot serve provider=${m.provider}; route to GatewayLlmCaller instead.`);
218
- }
219
- return m.modelId;
220
- }
221
- async withRetry(fn) {
222
- let lastErr;
223
- for (let attempt = 0; attempt < this.maxRetries; attempt++) {
224
- try {
225
- return await fn();
226
- }
227
- catch (err) {
228
- lastErr = err;
229
- const transient = this.isTransient(err);
230
- if (!transient || attempt === this.maxRetries - 1) {
231
- if (transient) {
232
- throw new TransientLlmError(`Anthropic transient error after ${attempt + 1} attempts: ${String(err?.message ?? err)}`, err);
233
- }
234
- throw err;
235
- }
236
- await new Promise((r) => setTimeout(r, 250 * Math.pow(4, attempt)));
237
- }
316
+ if ((0, llmModelRegistry_1.normalizeProvider)(m.provider) !== "anthropic") {
317
+ throw new Error(`AnthropicLlmCaller cannot serve provider=${m.provider}; route via the dispatcher.`);
238
318
  }
239
- throw lastErr;
319
+ return (0, llmModelRegistry_1.nativeModelId)(m);
240
320
  }
241
- isTransient(err) {
242
- if (!err || typeof err !== "object")
243
- return false;
244
- const e = err;
245
- if (typeof e.status === "number" && TRANSIENT_STATUSES.has(e.status)) {
246
- return true;
247
- }
248
- if (e.name === "APIConnectionError" || e.name === "APIConnectionTimeoutError") {
249
- return true;
250
- }
251
- const msg = String(e.message ?? "");
252
- return /timeout|ECONNRESET|ETIMEDOUT|network|socket hang up/i.test(msg);
321
+ /**
322
+ * Delegates to the shared transient-retry helper so all native callers share
323
+ * one backoff/classification policy (Phase 1 extraction). The SDK's own
324
+ * `status`/connection-error shapes are recognised by `isTransientError`.
325
+ */
326
+ withRetry(fn) {
327
+ return (0, llmRetry_1.withRetry)(fn, { maxRetries: this.maxRetries });
253
328
  }
254
329
  }
255
330
  exports.AnthropicLlmCaller = AnthropicLlmCaller;