@juspay/neurolink 9.64.0 → 9.65.1

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 (324) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +18 -17
  3. package/dist/adapters/providerImageAdapter.js +29 -1
  4. package/dist/adapters/replicate/auth.d.ts +19 -0
  5. package/dist/adapters/replicate/auth.js +32 -0
  6. package/dist/adapters/replicate/predictionLifecycle.d.ts +46 -0
  7. package/dist/adapters/replicate/predictionLifecycle.js +283 -0
  8. package/dist/adapters/video/klingVideoHandler.d.ts +37 -0
  9. package/dist/adapters/video/klingVideoHandler.js +305 -0
  10. package/dist/adapters/video/replicateVideoHandler.d.ts +29 -0
  11. package/dist/adapters/video/replicateVideoHandler.js +157 -0
  12. package/dist/adapters/video/runwayVideoHandler.d.ts +32 -0
  13. package/dist/adapters/video/runwayVideoHandler.js +316 -0
  14. package/dist/adapters/video/vertexVideoHandler.d.ts +19 -1
  15. package/dist/adapters/video/vertexVideoHandler.js +33 -9
  16. package/dist/agent/directTools.js +11 -3
  17. package/dist/autoresearch/runner.js +8 -2
  18. package/dist/avatar/index.d.ts +13 -0
  19. package/dist/avatar/index.js +13 -0
  20. package/dist/avatar/providers/DIDAvatar.d.ts +49 -0
  21. package/dist/avatar/providers/DIDAvatar.js +501 -0
  22. package/dist/avatar/providers/HeyGenAvatar.d.ts +30 -0
  23. package/dist/avatar/providers/HeyGenAvatar.js +337 -0
  24. package/dist/avatar/providers/ReplicateAvatar.d.ts +36 -0
  25. package/dist/avatar/providers/ReplicateAvatar.js +267 -0
  26. package/dist/browser/neurolink.min.js +624 -601
  27. package/dist/cli/commands/mcp.js +29 -0
  28. package/dist/cli/commands/proxy.js +24 -5
  29. package/dist/cli/factories/commandFactory.d.ts +11 -1
  30. package/dist/cli/factories/commandFactory.js +291 -38
  31. package/dist/constants/contextWindows.js +101 -0
  32. package/dist/constants/enums.d.ts +273 -2
  33. package/dist/constants/enums.js +290 -1
  34. package/dist/constants/videoErrors.d.ts +4 -0
  35. package/dist/constants/videoErrors.js +4 -0
  36. package/dist/core/baseProvider.d.ts +22 -2
  37. package/dist/core/baseProvider.js +217 -11
  38. package/dist/core/constants.d.ts +12 -0
  39. package/dist/core/constants.js +72 -1
  40. package/dist/evaluation/index.d.ts +2 -0
  41. package/dist/evaluation/index.js +4 -0
  42. package/dist/factories/providerFactory.js +7 -1
  43. package/dist/factories/providerRegistry.js +202 -5
  44. package/dist/features/ppt/contentPlanner.js +42 -14
  45. package/dist/index.d.ts +9 -1
  46. package/dist/index.js +16 -1
  47. package/dist/lib/adapters/providerImageAdapter.js +29 -1
  48. package/dist/lib/adapters/replicate/auth.d.ts +19 -0
  49. package/dist/lib/adapters/replicate/auth.js +33 -0
  50. package/dist/lib/adapters/replicate/predictionLifecycle.d.ts +46 -0
  51. package/dist/lib/adapters/replicate/predictionLifecycle.js +284 -0
  52. package/dist/lib/adapters/video/klingVideoHandler.d.ts +37 -0
  53. package/dist/lib/adapters/video/klingVideoHandler.js +306 -0
  54. package/dist/lib/adapters/video/replicateVideoHandler.d.ts +29 -0
  55. package/dist/lib/adapters/video/replicateVideoHandler.js +158 -0
  56. package/dist/lib/adapters/video/runwayVideoHandler.d.ts +32 -0
  57. package/dist/lib/adapters/video/runwayVideoHandler.js +317 -0
  58. package/dist/lib/adapters/video/vertexVideoHandler.d.ts +19 -1
  59. package/dist/lib/adapters/video/vertexVideoHandler.js +33 -9
  60. package/dist/lib/agent/directTools.js +11 -3
  61. package/dist/lib/autoresearch/runner.js +8 -2
  62. package/dist/lib/avatar/index.d.ts +13 -0
  63. package/dist/lib/avatar/index.js +14 -0
  64. package/dist/lib/avatar/providers/DIDAvatar.d.ts +49 -0
  65. package/dist/lib/avatar/providers/DIDAvatar.js +502 -0
  66. package/dist/lib/avatar/providers/HeyGenAvatar.d.ts +30 -0
  67. package/dist/lib/avatar/providers/HeyGenAvatar.js +338 -0
  68. package/dist/lib/avatar/providers/ReplicateAvatar.d.ts +36 -0
  69. package/dist/lib/avatar/providers/ReplicateAvatar.js +268 -0
  70. package/dist/lib/constants/contextWindows.js +101 -0
  71. package/dist/lib/constants/enums.d.ts +273 -2
  72. package/dist/lib/constants/enums.js +290 -1
  73. package/dist/lib/constants/videoErrors.d.ts +4 -0
  74. package/dist/lib/constants/videoErrors.js +4 -0
  75. package/dist/lib/core/baseProvider.d.ts +22 -2
  76. package/dist/lib/core/baseProvider.js +217 -11
  77. package/dist/lib/core/constants.d.ts +12 -0
  78. package/dist/lib/core/constants.js +72 -1
  79. package/dist/lib/evaluation/index.d.ts +2 -0
  80. package/dist/lib/evaluation/index.js +4 -0
  81. package/dist/lib/factories/providerFactory.js +7 -1
  82. package/dist/lib/factories/providerRegistry.js +202 -5
  83. package/dist/lib/features/ppt/contentPlanner.js +42 -14
  84. package/dist/lib/index.d.ts +9 -1
  85. package/dist/lib/index.js +16 -1
  86. package/dist/lib/middleware/builtin/lifecycle.js +39 -9
  87. package/dist/lib/music/index.d.ts +13 -0
  88. package/dist/lib/music/index.js +14 -0
  89. package/dist/lib/music/providers/BeatovenMusic.d.ts +31 -0
  90. package/dist/lib/music/providers/BeatovenMusic.js +334 -0
  91. package/dist/lib/music/providers/ElevenLabsMusic.d.ts +30 -0
  92. package/dist/lib/music/providers/ElevenLabsMusic.js +169 -0
  93. package/dist/lib/music/providers/LyriaMusic.d.ts +29 -0
  94. package/dist/lib/music/providers/LyriaMusic.js +173 -0
  95. package/dist/lib/music/providers/ReplicateMusic.d.ts +31 -0
  96. package/dist/lib/music/providers/ReplicateMusic.js +262 -0
  97. package/dist/lib/neurolink.d.ts +30 -0
  98. package/dist/lib/neurolink.js +323 -77
  99. package/dist/lib/providers/amazonBedrock.d.ts +10 -0
  100. package/dist/lib/providers/amazonBedrock.js +94 -39
  101. package/dist/lib/providers/anthropic.js +55 -7
  102. package/dist/lib/providers/anthropicBaseProvider.js +1 -1
  103. package/dist/lib/providers/azureOpenai.js +66 -17
  104. package/dist/lib/providers/cloudflare.d.ts +35 -0
  105. package/dist/lib/providers/cloudflare.js +174 -0
  106. package/dist/lib/providers/cohere.d.ts +52 -0
  107. package/dist/lib/providers/cohere.js +253 -0
  108. package/dist/lib/providers/deepseek.js +72 -17
  109. package/dist/lib/providers/fireworks.d.ts +33 -0
  110. package/dist/lib/providers/fireworks.js +164 -0
  111. package/dist/lib/providers/googleAiStudio.js +126 -10
  112. package/dist/lib/providers/googleNativeGemini3.d.ts +26 -6
  113. package/dist/lib/providers/googleNativeGemini3.js +276 -29
  114. package/dist/lib/providers/googleVertex.js +639 -181
  115. package/dist/lib/providers/groq.d.ts +33 -0
  116. package/dist/lib/providers/groq.js +181 -0
  117. package/dist/lib/providers/huggingFace.js +9 -8
  118. package/dist/lib/providers/ideogram.d.ts +34 -0
  119. package/dist/lib/providers/ideogram.js +184 -0
  120. package/dist/lib/providers/index.d.ts +13 -0
  121. package/dist/lib/providers/index.js +13 -0
  122. package/dist/lib/providers/jina.d.ts +59 -0
  123. package/dist/lib/providers/jina.js +218 -0
  124. package/dist/lib/providers/llamaCpp.js +14 -46
  125. package/dist/lib/providers/lmStudio.js +14 -47
  126. package/dist/lib/providers/mistral.js +7 -7
  127. package/dist/lib/providers/nvidiaNim.js +160 -19
  128. package/dist/lib/providers/ollama.js +7 -7
  129. package/dist/lib/providers/openAI.d.ts +22 -1
  130. package/dist/lib/providers/openAI.js +181 -0
  131. package/dist/lib/providers/openRouter.js +35 -23
  132. package/dist/lib/providers/openaiCompatible.js +9 -8
  133. package/dist/lib/providers/perplexity.d.ts +33 -0
  134. package/dist/lib/providers/perplexity.js +179 -0
  135. package/dist/lib/providers/recraft.d.ts +34 -0
  136. package/dist/lib/providers/recraft.js +197 -0
  137. package/dist/lib/providers/replicate.d.ts +75 -0
  138. package/dist/lib/providers/replicate.js +403 -0
  139. package/dist/lib/providers/stability.d.ts +37 -0
  140. package/dist/lib/providers/stability.js +191 -0
  141. package/dist/lib/providers/togetherAi.d.ts +33 -0
  142. package/dist/lib/providers/togetherAi.js +176 -0
  143. package/dist/lib/providers/voyage.d.ts +47 -0
  144. package/dist/lib/providers/voyage.js +177 -0
  145. package/dist/lib/providers/xai.d.ts +33 -0
  146. package/dist/lib/providers/xai.js +172 -0
  147. package/dist/lib/telemetry/index.d.ts +1 -1
  148. package/dist/lib/telemetry/index.js +1 -1
  149. package/dist/lib/telemetry/tracers.d.ts +19 -0
  150. package/dist/lib/telemetry/tracers.js +19 -0
  151. package/dist/lib/telemetry/withSpan.d.ts +35 -0
  152. package/dist/lib/telemetry/withSpan.js +103 -0
  153. package/dist/lib/types/avatar.d.ts +143 -0
  154. package/dist/lib/types/avatar.js +20 -0
  155. package/dist/lib/types/cli.d.ts +6 -0
  156. package/dist/lib/types/conversation.d.ts +16 -0
  157. package/dist/lib/types/generate.d.ts +62 -5
  158. package/dist/lib/types/index.d.ts +5 -0
  159. package/dist/lib/types/index.js +7 -0
  160. package/dist/lib/types/middleware.d.ts +27 -0
  161. package/dist/lib/types/multimodal.d.ts +35 -2
  162. package/dist/lib/types/music.d.ts +165 -0
  163. package/dist/lib/types/music.js +21 -0
  164. package/dist/lib/types/providers.d.ts +144 -1
  165. package/dist/lib/types/replicate.d.ts +67 -0
  166. package/dist/lib/types/replicate.js +10 -0
  167. package/dist/lib/types/safeFetch.d.ts +15 -0
  168. package/dist/lib/types/safeFetch.js +7 -0
  169. package/dist/lib/types/stream.d.ts +2 -1
  170. package/dist/lib/types/tools.d.ts +13 -0
  171. package/dist/lib/types/video.d.ts +89 -0
  172. package/dist/lib/types/video.js +15 -0
  173. package/dist/lib/utils/avatarProcessor.d.ts +68 -0
  174. package/dist/lib/utils/avatarProcessor.js +172 -0
  175. package/dist/lib/utils/cloneOptions.d.ts +36 -0
  176. package/dist/lib/utils/cloneOptions.js +62 -0
  177. package/dist/lib/utils/lifecycleCallbacks.d.ts +51 -8
  178. package/dist/lib/utils/lifecycleCallbacks.js +82 -26
  179. package/dist/lib/utils/lifecycleTimeout.d.ts +25 -0
  180. package/dist/lib/utils/lifecycleTimeout.js +39 -0
  181. package/dist/lib/utils/logSanitize.d.ts +49 -0
  182. package/dist/lib/utils/logSanitize.js +170 -0
  183. package/dist/lib/utils/loggingFetch.d.ts +29 -0
  184. package/dist/lib/utils/loggingFetch.js +60 -0
  185. package/dist/lib/utils/messageBuilder.js +43 -25
  186. package/dist/lib/utils/modelChoices.js +236 -3
  187. package/dist/lib/utils/musicProcessor.d.ts +67 -0
  188. package/dist/lib/utils/musicProcessor.js +189 -0
  189. package/dist/lib/utils/optionsConversion.js +3 -2
  190. package/dist/lib/utils/parameterValidation.js +14 -4
  191. package/dist/lib/utils/pricing.js +193 -0
  192. package/dist/lib/utils/providerConfig.d.ts +55 -0
  193. package/dist/lib/utils/providerConfig.js +224 -0
  194. package/dist/lib/utils/safeFetch.d.ts +26 -0
  195. package/dist/lib/utils/safeFetch.js +83 -0
  196. package/dist/lib/utils/sizeGuard.d.ts +34 -0
  197. package/dist/lib/utils/sizeGuard.js +45 -0
  198. package/dist/lib/utils/ssrfGuard.d.ts +52 -0
  199. package/dist/lib/utils/ssrfGuard.js +411 -0
  200. package/dist/lib/utils/videoProcessor.d.ts +60 -0
  201. package/dist/lib/utils/videoProcessor.js +201 -0
  202. package/dist/lib/voice/providers/FishAudioTTS.d.ts +27 -0
  203. package/dist/lib/voice/providers/FishAudioTTS.js +183 -0
  204. package/dist/lib/workflow/core/ensembleExecutor.js +26 -9
  205. package/dist/middleware/builtin/lifecycle.js +39 -9
  206. package/dist/music/index.d.ts +13 -0
  207. package/dist/music/index.js +13 -0
  208. package/dist/music/providers/BeatovenMusic.d.ts +31 -0
  209. package/dist/music/providers/BeatovenMusic.js +333 -0
  210. package/dist/music/providers/ElevenLabsMusic.d.ts +30 -0
  211. package/dist/music/providers/ElevenLabsMusic.js +168 -0
  212. package/dist/music/providers/LyriaMusic.d.ts +29 -0
  213. package/dist/music/providers/LyriaMusic.js +172 -0
  214. package/dist/music/providers/ReplicateMusic.d.ts +31 -0
  215. package/dist/music/providers/ReplicateMusic.js +261 -0
  216. package/dist/neurolink.d.ts +30 -0
  217. package/dist/neurolink.js +323 -77
  218. package/dist/providers/amazonBedrock.d.ts +10 -0
  219. package/dist/providers/amazonBedrock.js +94 -39
  220. package/dist/providers/anthropic.js +55 -7
  221. package/dist/providers/anthropicBaseProvider.js +1 -1
  222. package/dist/providers/azureOpenai.js +66 -17
  223. package/dist/providers/cloudflare.d.ts +35 -0
  224. package/dist/providers/cloudflare.js +173 -0
  225. package/dist/providers/cohere.d.ts +52 -0
  226. package/dist/providers/cohere.js +252 -0
  227. package/dist/providers/deepseek.js +72 -17
  228. package/dist/providers/fireworks.d.ts +33 -0
  229. package/dist/providers/fireworks.js +163 -0
  230. package/dist/providers/googleAiStudio.js +126 -10
  231. package/dist/providers/googleNativeGemini3.d.ts +26 -6
  232. package/dist/providers/googleNativeGemini3.js +276 -29
  233. package/dist/providers/googleVertex.js +639 -181
  234. package/dist/providers/groq.d.ts +33 -0
  235. package/dist/providers/groq.js +180 -0
  236. package/dist/providers/huggingFace.js +9 -8
  237. package/dist/providers/ideogram.d.ts +34 -0
  238. package/dist/providers/ideogram.js +183 -0
  239. package/dist/providers/index.d.ts +13 -0
  240. package/dist/providers/index.js +13 -0
  241. package/dist/providers/jina.d.ts +59 -0
  242. package/dist/providers/jina.js +217 -0
  243. package/dist/providers/llamaCpp.js +14 -46
  244. package/dist/providers/lmStudio.js +14 -47
  245. package/dist/providers/mistral.js +7 -7
  246. package/dist/providers/nvidiaNim.js +160 -19
  247. package/dist/providers/ollama.js +7 -7
  248. package/dist/providers/openAI.d.ts +22 -1
  249. package/dist/providers/openAI.js +181 -0
  250. package/dist/providers/openRouter.js +35 -23
  251. package/dist/providers/openaiCompatible.js +9 -8
  252. package/dist/providers/perplexity.d.ts +33 -0
  253. package/dist/providers/perplexity.js +178 -0
  254. package/dist/providers/recraft.d.ts +34 -0
  255. package/dist/providers/recraft.js +196 -0
  256. package/dist/providers/replicate.d.ts +75 -0
  257. package/dist/providers/replicate.js +402 -0
  258. package/dist/providers/stability.d.ts +37 -0
  259. package/dist/providers/stability.js +190 -0
  260. package/dist/providers/togetherAi.d.ts +33 -0
  261. package/dist/providers/togetherAi.js +175 -0
  262. package/dist/providers/voyage.d.ts +47 -0
  263. package/dist/providers/voyage.js +176 -0
  264. package/dist/providers/xai.d.ts +33 -0
  265. package/dist/providers/xai.js +171 -0
  266. package/dist/telemetry/index.d.ts +1 -1
  267. package/dist/telemetry/index.js +1 -1
  268. package/dist/telemetry/tracers.d.ts +19 -0
  269. package/dist/telemetry/tracers.js +19 -0
  270. package/dist/telemetry/withSpan.d.ts +35 -0
  271. package/dist/telemetry/withSpan.js +103 -0
  272. package/dist/types/avatar.d.ts +143 -0
  273. package/dist/types/avatar.js +19 -0
  274. package/dist/types/cli.d.ts +6 -0
  275. package/dist/types/conversation.d.ts +16 -0
  276. package/dist/types/generate.d.ts +62 -5
  277. package/dist/types/index.d.ts +5 -0
  278. package/dist/types/index.js +7 -0
  279. package/dist/types/middleware.d.ts +27 -0
  280. package/dist/types/multimodal.d.ts +35 -2
  281. package/dist/types/music.d.ts +165 -0
  282. package/dist/types/music.js +20 -0
  283. package/dist/types/providers.d.ts +144 -1
  284. package/dist/types/replicate.d.ts +67 -0
  285. package/dist/types/replicate.js +9 -0
  286. package/dist/types/safeFetch.d.ts +15 -0
  287. package/dist/types/safeFetch.js +6 -0
  288. package/dist/types/stream.d.ts +2 -1
  289. package/dist/types/tools.d.ts +13 -0
  290. package/dist/types/video.d.ts +89 -0
  291. package/dist/types/video.js +14 -0
  292. package/dist/utils/avatarProcessor.d.ts +68 -0
  293. package/dist/utils/avatarProcessor.js +171 -0
  294. package/dist/utils/cloneOptions.d.ts +36 -0
  295. package/dist/utils/cloneOptions.js +61 -0
  296. package/dist/utils/lifecycleCallbacks.d.ts +51 -8
  297. package/dist/utils/lifecycleCallbacks.js +82 -26
  298. package/dist/utils/lifecycleTimeout.d.ts +25 -0
  299. package/dist/utils/lifecycleTimeout.js +38 -0
  300. package/dist/utils/logSanitize.d.ts +49 -0
  301. package/dist/utils/logSanitize.js +169 -0
  302. package/dist/utils/loggingFetch.d.ts +29 -0
  303. package/dist/utils/loggingFetch.js +59 -0
  304. package/dist/utils/messageBuilder.js +43 -25
  305. package/dist/utils/modelChoices.js +236 -3
  306. package/dist/utils/musicProcessor.d.ts +67 -0
  307. package/dist/utils/musicProcessor.js +188 -0
  308. package/dist/utils/optionsConversion.js +3 -2
  309. package/dist/utils/parameterValidation.js +14 -4
  310. package/dist/utils/pricing.js +193 -0
  311. package/dist/utils/providerConfig.d.ts +55 -0
  312. package/dist/utils/providerConfig.js +224 -0
  313. package/dist/utils/safeFetch.d.ts +26 -0
  314. package/dist/utils/safeFetch.js +82 -0
  315. package/dist/utils/sizeGuard.d.ts +34 -0
  316. package/dist/utils/sizeGuard.js +44 -0
  317. package/dist/utils/ssrfGuard.d.ts +52 -0
  318. package/dist/utils/ssrfGuard.js +410 -0
  319. package/dist/utils/videoProcessor.d.ts +60 -0
  320. package/dist/utils/videoProcessor.js +200 -0
  321. package/dist/voice/providers/FishAudioTTS.d.ts +27 -0
  322. package/dist/voice/providers/FishAudioTTS.js +182 -0
  323. package/dist/workflow/core/ensembleExecutor.js +26 -9
  324. package/package.json +32 -5
@@ -1,6 +1,6 @@
1
1
  import { ProviderFactory } from "./providerFactory.js";
2
2
  import { logger } from "../utils/logger.js";
3
- import { AIProviderName, GoogleAIModels, OpenAIModels, AnthropicModels, VertexModels, MistralModels, OllamaModels, LiteLLMModels, HuggingFaceModels, DeepSeekModels, NvidiaNimModels, } from "../constants/enums.js";
3
+ import { AIProviderName, GoogleAIModels, OpenAIModels, AnthropicModels, VertexModels, MistralModels, OllamaModels, LiteLLMModels, HuggingFaceModels, DeepSeekModels, NvidiaNimModels, OpenRouterModels, XaiModels, GroqModels, CohereModels, TogetherAIModels, FireworksModels, PerplexityModels, CloudflareModels, VoyageModels, JinaModels, StabilityModels, IdeogramModels, RecraftModels, ReplicateModels, } from "../constants/enums.js";
4
4
  /**
5
5
  * Provider Registry - registers all providers with the factory
6
6
  * This is where we migrate providers one by one to the new pattern
@@ -136,10 +136,12 @@ export class ProviderRegistry {
136
136
  const { OpenRouterProvider } = await import("../providers/openRouter.js");
137
137
  return new OpenRouterProvider(modelName, sdk, undefined, openrouterCreds);
138
138
  },
139
- // Default updated from claude-3-5-sonnet (sunset by OpenRouter)
140
- // to claude-sonnet-4.5. Must match getDefaultOpenRouterModel()
141
- // in src/lib/providers/openRouter.ts.
142
- process.env.OPENROUTER_MODEL || "anthropic/claude-sonnet-4.5", ["openrouter", "or"]);
139
+ // OpenRouter retired `anthropic/claude-3-5-sonnet` in late 2025 — see
140
+ // src/lib/providers/openRouter.ts and src/lib/utils/modelChoices.ts
141
+ // for the rationale. Keep the three defaults aligned at the new
142
+ // model (claude-sonnet-4.5) so the registry doesn't override the
143
+ // provider's getDefault.
144
+ process.env.OPENROUTER_MODEL || OpenRouterModels.CLAUDE_SONNET_4_5, ["openrouter", "or"]);
143
145
  // Register Amazon SageMaker provider
144
146
  ProviderFactory.registerProvider(AIProviderName.SAGEMAKER, async (modelName, _providerName, _sdk, region, credentials) => {
145
147
  const sagemakerCreds = credentials;
@@ -170,6 +172,86 @@ export class ProviderRegistry {
170
172
  const { LlamaCppProvider } = await import("../providers/llamaCpp.js");
171
173
  return new LlamaCppProvider(modelName, sdk, undefined, llamaCppCreds);
172
174
  }, process.env.LLAMACPP_MODEL || undefined, ["llamacpp", "llama.cpp", "llama-cpp"]);
175
+ // Register xAI Grok provider
176
+ ProviderFactory.registerProvider(AIProviderName.XAI, async (modelName, _providerName, sdk, _region, credentials) => {
177
+ const xaiCreds = credentials;
178
+ const { XaiProvider } = await import("../providers/xai.js");
179
+ return new XaiProvider(modelName, sdk, undefined, xaiCreds);
180
+ }, process.env.XAI_MODEL || XaiModels.GROK_3, ["xai", "grok"]);
181
+ // Register Groq provider
182
+ ProviderFactory.registerProvider(AIProviderName.GROQ, async (modelName, _providerName, sdk, _region, credentials) => {
183
+ const groqCreds = credentials;
184
+ const { GroqProvider } = await import("../providers/groq.js");
185
+ return new GroqProvider(modelName, sdk, undefined, groqCreds);
186
+ }, process.env.GROQ_MODEL || GroqModels.LLAMA_3_3_70B_VERSATILE, ["groq"]);
187
+ // Register Cohere provider
188
+ ProviderFactory.registerProvider(AIProviderName.COHERE, async (modelName, _providerName, sdk, _region, credentials) => {
189
+ const cohereCreds = credentials;
190
+ const { CohereProvider } = await import("../providers/cohere.js");
191
+ return new CohereProvider(modelName, sdk, undefined, cohereCreds);
192
+ }, process.env.COHERE_MODEL || CohereModels.COMMAND_R_PLUS, ["cohere"]);
193
+ // Register Together AI provider
194
+ ProviderFactory.registerProvider(AIProviderName.TOGETHER_AI, async (modelName, _providerName, sdk, _region, credentials) => {
195
+ const togetherCreds = credentials;
196
+ const { TogetherAIProvider } = await import("../providers/togetherAi.js");
197
+ return new TogetherAIProvider(modelName, sdk, undefined, togetherCreds);
198
+ }, process.env.TOGETHER_MODEL ||
199
+ TogetherAIModels.LLAMA_3_3_70B_INSTRUCT_TURBO, ["together-ai", "together"]);
200
+ // Register Fireworks AI provider
201
+ ProviderFactory.registerProvider(AIProviderName.FIREWORKS, async (modelName, _providerName, sdk, _region, credentials) => {
202
+ const fireworksCreds = credentials;
203
+ const { FireworksProvider } = await import("../providers/fireworks.js");
204
+ return new FireworksProvider(modelName, sdk, undefined, fireworksCreds);
205
+ }, process.env.FIREWORKS_MODEL || FireworksModels.DEEPSEEK_V4_PRO, ["fireworks"]);
206
+ // Register Perplexity provider
207
+ ProviderFactory.registerProvider(AIProviderName.PERPLEXITY, async (modelName, _providerName, sdk, _region, credentials) => {
208
+ const perplexityCreds = credentials;
209
+ const { PerplexityProvider } = await import("../providers/perplexity.js");
210
+ return new PerplexityProvider(modelName, sdk, undefined, perplexityCreds);
211
+ }, process.env.PERPLEXITY_MODEL || PerplexityModels.SONAR, ["perplexity", "pplx"]);
212
+ // Register Cloudflare Workers AI provider
213
+ ProviderFactory.registerProvider(AIProviderName.CLOUDFLARE, async (modelName, _providerName, sdk, _region, credentials) => {
214
+ const cloudflareCreds = credentials;
215
+ const { CloudflareProvider } = await import("../providers/cloudflare.js");
216
+ return new CloudflareProvider(modelName, sdk, undefined, cloudflareCreds);
217
+ }, process.env.CLOUDFLARE_MODEL || CloudflareModels.LLAMA_3_3_70B_FAST, ["cloudflare", "workers-ai", "cf-ai"]);
218
+ // Register Voyage AI embeddings provider
219
+ ProviderFactory.registerProvider(AIProviderName.VOYAGE, async (modelName, _providerName, sdk, _region, credentials) => {
220
+ const voyageCreds = credentials;
221
+ const { VoyageProvider } = await import("../providers/voyage.js");
222
+ return new VoyageProvider(modelName, sdk, undefined, voyageCreds);
223
+ }, process.env.VOYAGE_MODEL || VoyageModels.VOYAGE_3_5, ["voyage", "voyage-ai"]);
224
+ // Register Jina AI embeddings + reranking provider
225
+ ProviderFactory.registerProvider(AIProviderName.JINA, async (modelName, _providerName, sdk, _region, credentials) => {
226
+ const jinaCreds = credentials;
227
+ const { JinaProvider } = await import("../providers/jina.js");
228
+ return new JinaProvider(modelName, sdk, undefined, jinaCreds);
229
+ }, process.env.JINA_MODEL || JinaModels.JINA_EMBEDDINGS_V3, ["jina", "jina-ai"]);
230
+ // Register Stability AI image-gen provider
231
+ ProviderFactory.registerProvider(AIProviderName.STABILITY, async (modelName, _providerName, sdk, _region, credentials) => {
232
+ const stabilityCreds = credentials;
233
+ const { StabilityProvider } = await import("../providers/stability.js");
234
+ return new StabilityProvider(modelName, sdk, undefined, stabilityCreds);
235
+ }, process.env.STABILITY_MODEL || StabilityModels.STABLE_IMAGE_ULTRA, ["stability", "stability-ai", "sd"]);
236
+ // Register Ideogram image-gen provider
237
+ ProviderFactory.registerProvider(AIProviderName.IDEOGRAM, async (modelName, _providerName, sdk, _region, credentials) => {
238
+ const ideogramCreds = credentials;
239
+ const { IdeogramProvider } = await import("../providers/ideogram.js");
240
+ return new IdeogramProvider(modelName, sdk, undefined, ideogramCreds);
241
+ }, process.env.IDEOGRAM_MODEL || IdeogramModels.IDEOGRAM_V3, ["ideogram"]);
242
+ // Register Replicate LLM provider (multi-modal — also serves video /
243
+ // avatar / music handlers via dedicated processors registered below)
244
+ ProviderFactory.registerProvider(AIProviderName.REPLICATE, async (modelName, _providerName, sdk, _region, credentials) => {
245
+ const replicateCreds = credentials;
246
+ const { ReplicateProvider } = await import("../providers/replicate.js");
247
+ return new ReplicateProvider(modelName, sdk, undefined, replicateCreds);
248
+ }, process.env.REPLICATE_MODEL || ReplicateModels.LLAMA_3_70B_INSTRUCT, ["replicate"]);
249
+ // Register Recraft image-gen provider
250
+ ProviderFactory.registerProvider(AIProviderName.RECRAFT, async (modelName, _providerName, sdk, _region, credentials) => {
251
+ const recraftCreds = credentials;
252
+ const { RecraftProvider } = await import("../providers/recraft.js");
253
+ return new RecraftProvider(modelName, sdk, undefined, recraftCreds);
254
+ }, process.env.RECRAFT_MODEL || RecraftModels.RECRAFT_V3, ["recraft"]);
173
255
  logger.debug("All AI providers registered successfully");
174
256
  // ===== TTS HANDLER REGISTRATION =====
175
257
  try {
@@ -307,6 +389,121 @@ export class ProviderRegistry {
307
389
  : String(realtimeError),
308
390
  });
309
391
  }
392
+ // ===== VIDEO HANDLER REGISTRATION =====
393
+ try {
394
+ const { VideoProcessor } = await import("../utils/videoProcessor.js");
395
+ try {
396
+ const { VertexVideoHandler } = await import("../adapters/video/vertexVideoHandler.js");
397
+ VideoProcessor.registerHandler("vertex", new VertexVideoHandler());
398
+ }
399
+ catch (err) {
400
+ logger.debug(`[ProviderRegistry] vertex video registration skipped: ${err instanceof Error ? err.message : String(err)}`);
401
+ }
402
+ try {
403
+ const { KlingVideoHandler } = await import("../adapters/video/klingVideoHandler.js");
404
+ VideoProcessor.registerHandler("kling", new KlingVideoHandler());
405
+ }
406
+ catch (err) {
407
+ logger.debug(`[ProviderRegistry] kling video registration skipped: ${err instanceof Error ? err.message : String(err)}`);
408
+ }
409
+ try {
410
+ const { RunwayVideoHandler } = await import("../adapters/video/runwayVideoHandler.js");
411
+ VideoProcessor.registerHandler("runway", new RunwayVideoHandler());
412
+ }
413
+ catch (err) {
414
+ logger.debug(`[ProviderRegistry] runway video registration skipped: ${err instanceof Error ? err.message : String(err)}`);
415
+ }
416
+ try {
417
+ const { ReplicateVideoHandler } = await import("../adapters/video/replicateVideoHandler.js");
418
+ VideoProcessor.registerHandler("replicate", new ReplicateVideoHandler());
419
+ }
420
+ catch (err) {
421
+ logger.debug(`[ProviderRegistry] replicate video registration skipped: ${err instanceof Error ? err.message : String(err)}`);
422
+ }
423
+ logger.debug("Video handlers registered");
424
+ }
425
+ catch (err) {
426
+ logger.warn(`[ProviderRegistry] video registration block failed: ${err instanceof Error ? err.message : String(err)}`);
427
+ }
428
+ // ===== AVATAR HANDLER REGISTRATION =====
429
+ try {
430
+ const { AvatarProcessor } = await import("../utils/avatarProcessor.js");
431
+ try {
432
+ const { DIDAvatar } = await import("../avatar/providers/DIDAvatar.js");
433
+ AvatarProcessor.registerHandler("d-id", new DIDAvatar());
434
+ }
435
+ catch (err) {
436
+ logger.debug(`[ProviderRegistry] d-id avatar registration skipped: ${err instanceof Error ? err.message : String(err)}`);
437
+ }
438
+ try {
439
+ const { ReplicateAvatar } = await import("../avatar/providers/ReplicateAvatar.js");
440
+ const replicateAvatar = new ReplicateAvatar();
441
+ AvatarProcessor.registerHandler("replicate", replicateAvatar);
442
+ AvatarProcessor.registerHandler("musetalk", replicateAvatar);
443
+ }
444
+ catch (err) {
445
+ logger.debug(`[ProviderRegistry] replicate avatar registration skipped: ${err instanceof Error ? err.message : String(err)}`);
446
+ }
447
+ try {
448
+ const { HeyGenAvatar } = await import("../avatar/providers/HeyGenAvatar.js");
449
+ AvatarProcessor.registerHandler("heygen", new HeyGenAvatar());
450
+ }
451
+ catch (err) {
452
+ logger.debug(`[ProviderRegistry] heygen avatar registration skipped: ${err instanceof Error ? err.message : String(err)}`);
453
+ }
454
+ logger.debug("Avatar handlers registered");
455
+ }
456
+ catch (avatarError) {
457
+ logger.warn("Failed to register Avatar handlers - Avatar functionality will be unavailable", {
458
+ error: avatarError instanceof Error
459
+ ? avatarError.message
460
+ : String(avatarError),
461
+ });
462
+ }
463
+ // ===== MUSIC HANDLER REGISTRATION =====
464
+ try {
465
+ const { MusicProcessor } = await import("../utils/musicProcessor.js");
466
+ try {
467
+ const { BeatovenMusic } = await import("../music/providers/BeatovenMusic.js");
468
+ MusicProcessor.registerHandler("beatoven", new BeatovenMusic());
469
+ }
470
+ catch (err) {
471
+ logger.debug(`[ProviderRegistry] beatoven music registration skipped: ${err instanceof Error ? err.message : String(err)}`);
472
+ }
473
+ try {
474
+ const { ReplicateMusic } = await import("../music/providers/ReplicateMusic.js");
475
+ const replicateMusic = new ReplicateMusic();
476
+ MusicProcessor.registerHandler("replicate", replicateMusic);
477
+ MusicProcessor.registerHandler("musicgen", replicateMusic);
478
+ }
479
+ catch (err) {
480
+ logger.debug(`[ProviderRegistry] replicate music registration skipped: ${err instanceof Error ? err.message : String(err)}`);
481
+ }
482
+ try {
483
+ const { ElevenLabsMusic } = await import("../music/providers/ElevenLabsMusic.js");
484
+ const elevenLabsMusic = new ElevenLabsMusic();
485
+ MusicProcessor.registerHandler("elevenlabs-music", elevenLabsMusic);
486
+ MusicProcessor.registerHandler("elevenlabs-sound", elevenLabsMusic);
487
+ }
488
+ catch (err) {
489
+ logger.debug(`[ProviderRegistry] elevenlabs-music registration skipped: ${err instanceof Error ? err.message : String(err)}`);
490
+ }
491
+ try {
492
+ const { LyriaMusic } = await import("../music/providers/LyriaMusic.js");
493
+ MusicProcessor.registerHandler("lyria", new LyriaMusic());
494
+ }
495
+ catch (err) {
496
+ logger.debug(`[ProviderRegistry] lyria music registration skipped: ${err instanceof Error ? err.message : String(err)}`);
497
+ }
498
+ logger.debug("Music handlers registered");
499
+ }
500
+ catch (musicError) {
501
+ logger.warn("Failed to register Music handlers - Music functionality will be unavailable", {
502
+ error: musicError instanceof Error
503
+ ? musicError.message
504
+ : String(musicError),
505
+ });
506
+ }
310
507
  // Mark registered ONLY after all blocks (AI + voice) attempted, so a
311
508
  // subsequent registerAllProviders() call does not short-circuit when an
312
509
  // optional handler block silently failed.
@@ -374,25 +374,53 @@ function validateContentPlan(plan, expectedSlides) {
374
374
  }
375
375
  /**
376
376
  * Parse AI response to extract JSON
377
- * Handles markdown code blocks and raw JSON
377
+ * Handles markdown code blocks (anywhere in the response), preambles like
378
+ * "Here is the JSON:", and raw JSON.
378
379
  */
379
380
  function parseAIResponse(content) {
380
- let jsonString = content.trim();
381
- // Strip markdown code fences if present
382
- if (jsonString.startsWith("```")) {
383
- jsonString = jsonString
384
- .replace(/^```(?:json)?\s*\n?/, "")
385
- .replace(/\n?```\s*$/, "");
381
+ const trimmed = content.trim();
382
+ const candidates = [];
383
+ // 1) Extract first ```json ... ``` block from anywhere in the response.
384
+ const fenceBlock = trimmed.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
385
+ if (fenceBlock && fenceBlock[1]) {
386
+ candidates.push(fenceBlock[1].trim());
386
387
  }
387
- try {
388
- return JSON.parse(jsonString);
388
+ // 2) Strict leading-fence strip (legacy behaviour).
389
+ if (trimmed.startsWith("```")) {
390
+ candidates.push(trimmed.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, ""));
389
391
  }
390
- catch (error) {
391
- throw new PPTError(`Failed to parse AI response as JSON: ${error instanceof Error ? error.message : String(error)}`, PPT_ERROR_CODES.INVALID_AI_RESPONSE, {
392
- contentPreview: content.substring(0, 500),
393
- parseError: error instanceof Error ? error.message : String(error),
394
- });
392
+ // 3) Slice from first '{' or '[' to its matching close — handles preambles
393
+ // like "Here is the presentation plan:\n{ ... }".
394
+ const firstObj = trimmed.indexOf("{");
395
+ const firstArr = trimmed.indexOf("[");
396
+ const firstStruct = firstObj === -1
397
+ ? firstArr
398
+ : firstArr === -1
399
+ ? firstObj
400
+ : Math.min(firstObj, firstArr);
401
+ if (firstStruct > 0) {
402
+ const openChar = trimmed[firstStruct];
403
+ const closeChar = openChar === "{" ? "}" : "]";
404
+ const lastClose = trimmed.lastIndexOf(closeChar);
405
+ if (lastClose > firstStruct) {
406
+ candidates.push(trimmed.slice(firstStruct, lastClose + 1));
407
+ }
395
408
  }
409
+ // 4) Raw input as last resort.
410
+ candidates.push(trimmed);
411
+ const errors = [];
412
+ for (const candidate of candidates) {
413
+ try {
414
+ return JSON.parse(candidate);
415
+ }
416
+ catch (err) {
417
+ errors.push(err instanceof Error ? err.message : String(err));
418
+ }
419
+ }
420
+ throw new PPTError(`Failed to parse AI response as JSON: ${errors[errors.length - 1]}`, PPT_ERROR_CODES.INVALID_AI_RESPONSE, {
421
+ contentPreview: content.substring(0, 500),
422
+ parseError: errors.join(" | "),
423
+ });
396
424
  }
397
425
  // ============================================================================
398
426
  // MAIN CONTENT PLANNING FUNCTION
package/dist/index.d.ts CHANGED
@@ -45,6 +45,14 @@ export { isAbortError } from "./utils/errorHandling.js";
45
45
  export { calculateCost, hasPricing } from "./utils/pricing.js";
46
46
  export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
47
47
  export { TTSProcessor } from "./utils/ttsProcessor.js";
48
+ export { TTS_ERROR_CODES, TTSError } from "./utils/ttsProcessor.js";
49
+ export { VideoProcessor } from "./utils/videoProcessor.js";
50
+ export { VIDEO_ERROR_CODES, VideoError } from "./utils/videoProcessor.js";
51
+ export { AvatarProcessor } from "./utils/avatarProcessor.js";
52
+ export { AVATAR_ERROR_CODES, AvatarError } from "./utils/avatarProcessor.js";
53
+ export { MusicProcessor } from "./utils/musicProcessor.js";
54
+ export { MUSIC_ERROR_CODES, MusicError } from "./utils/musicProcessor.js";
55
+ export { ProviderRegistry } from "./factories/providerRegistry.js";
48
56
  import { NeuroLink } from "./neurolink.js";
49
57
  export { NeuroLink };
50
58
  export { buildObservabilityConfigFromEnv } from "./utils/observabilityHelpers.js";
@@ -239,7 +247,7 @@ export declare function getTelemetryStatus(): Promise<{
239
247
  * });
240
248
  * ```
241
249
  */
242
- export { Evaluator, EvaluationAggregator, EvaluatorFactory, getEvaluatorFactory, getEvaluatorRegistry, evaluationErrors, isRetryableEvaluationError, isEvaluationError, createEvaluationFailedError, createParseError, createStrategyNotFoundError, createProviderError, createMaxRetriesExceededError, createBatchEvaluationError, createConfigurationError, contextToErrorContext, createLangfuseAdapter, createMockLangfuseClient, startLangfuseAdapter, createConsoleLoggerHook, createMetricsCollectorHook, ObservabilityHooks, observabilityHooks, pipelineToSpanAttributes, scorerToSpanAttributes, createAndInitializePipeline, createPipeline, EvaluationPipeline, PipelineBuilder, Pipelines, CODE_GENERATION_PIPELINE, COMPREHENSIVE_PIPELINE, CUSTOMER_SUPPORT_PIPELINE, getPreset, getPresetNames, MINIMAL_PIPELINE, QUALITY_PIPELINE, RAG_PIPELINE, SAFETY_PIPELINE, SUMMARIZATION_PIPELINE, BatchStrategy, createBatchStrategy, evaluateBatch, streamBatchEvaluation, createSamplingStrategy, DEFAULT_SAMPLING_CONFIG, SamplingStrategies, SamplingStrategy, createMetricsCollector, globalMetricsCollector, MetricsCollector, createReportGenerator, ReportGenerator, Reports, BaseScorer, DEFAULT_SCORE_SCALE as EVAL_DEFAULT_SCORE_SCALE, composeScorers, createConditionalScorer, createFunctionScorer, createInvertedScorer, createKeywordScorer, createRegexScorer, createScorerMetadata, createSimpleLengthScorer, AnswerRelevancyScorer, createAnswerRelevancyScorer, BaseLLMScorer, DEFAULT_LLM_SCORER_CONFIG, BiasDetectionScorer, createBiasDetectionScorer, ContextPrecisionScorer, createContextPrecisionScorer, ContextRelevancyScorer, createContextRelevancyScorer, createFaithfulnessScorer, FaithfulnessScorer, createHallucinationScorer, HallucinationScorer, createPromptAlignmentScorer, PromptAlignmentScorer, createSummarizationScorer, SummarizationScorer, createToneConsistencyScorer, ToneConsistencyScorer, createToxicityScorer, ToxicityScorer, BaseRuleScorer, DEFAULT_RULE_SCORER_CONFIG, createContentSimilarityScorer, createFormatScorer, FormatScorerPresets, createKeywordCoverageScorer, createLengthScorer, LengthScorerPresets, ScorerBuilder, Scorers, ScorerRegistry, } from "./evaluation/index.js";
250
+ export { Evaluator, EvaluationAggregator, EvaluatorFactory, getEvaluatorFactory, getEvaluatorRegistry, evaluationErrors, isRetryableEvaluationError, isEvaluationError, createEvaluationFailedError, createParseError, createStrategyNotFoundError, createProviderError, createMaxRetriesExceededError, createBatchEvaluationError, createConfigurationError, contextToErrorContext, createLangfuseAdapter, createMockLangfuseClient, startLangfuseAdapter, createConsoleLoggerHook, createMetricsCollectorHook, ObservabilityHooks, observabilityHooks, pipelineToSpanAttributes, scorerToSpanAttributes, createAndInitializePipeline, createPipeline, EvaluationPipeline, PipelineBuilder, Pipelines, CODE_GENERATION_PIPELINE, COMPREHENSIVE_PIPELINE, CUSTOMER_SUPPORT_PIPELINE, getPreset, getPresetNames, MINIMAL_PIPELINE, QUALITY_PIPELINE, RAG_PIPELINE, SAFETY_PIPELINE, SUMMARIZATION_PIPELINE, BatchStrategy, createBatchStrategy, evaluateBatch, streamBatchEvaluation, createSamplingStrategy, DEFAULT_SAMPLING_CONFIG, SamplingStrategies, SamplingStrategy, createMetricsCollector, globalMetricsCollector, MetricsCollector, createReportGenerator, ReportGenerator, Reports, BaseScorer, DEFAULT_SCORE_SCALE as EVAL_DEFAULT_SCORE_SCALE, composeScorers, createConditionalScorer, createFunctionScorer, createInvertedScorer, createKeywordScorer, createRegexScorer, createScorerMetadata, createSimpleLengthScorer, AnswerRelevancyScorer, createAnswerRelevancyScorer, BaseLLMScorer, DEFAULT_LLM_SCORER_CONFIG, BiasDetectionScorer, createBiasDetectionScorer, ContextPrecisionScorer, createContextPrecisionScorer, ContextRelevancyScorer, createContextRelevancyScorer, createFaithfulnessScorer, FaithfulnessScorer, createHallucinationScorer, HallucinationScorer, createPromptAlignmentScorer, PromptAlignmentScorer, createSummarizationScorer, SummarizationScorer, createToneConsistencyScorer, ToneConsistencyScorer, createToxicityScorer, ToxicityScorer, BaseRuleScorer, DEFAULT_RULE_SCORER_CONFIG, createContentSimilarityScorer, createFormatScorer, FormatScorerPresets, createKeywordCoverageScorer, createLengthScorer, LengthScorerPresets, ScorerBuilder, Scorers, ScorerRegistry, RAGASEvaluator, RetryManager, } from "./evaluation/index.js";
243
251
  /**
244
252
  * Legacy generateText function for backward compatibility.
245
253
  *
package/dist/index.js CHANGED
@@ -71,6 +71,19 @@ export { calculateCost, hasPricing } from "./utils/pricing.js";
71
71
  export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
72
72
  // TTS utilities
73
73
  export { TTSProcessor } from "./utils/ttsProcessor.js";
74
+ export { TTS_ERROR_CODES, TTSError } from "./utils/ttsProcessor.js";
75
+ // Video utilities
76
+ export { VideoProcessor } from "./utils/videoProcessor.js";
77
+ export { VIDEO_ERROR_CODES, VideoError } from "./utils/videoProcessor.js";
78
+ // Avatar / lip-sync utilities
79
+ export { AvatarProcessor } from "./utils/avatarProcessor.js";
80
+ export { AVATAR_ERROR_CODES, AvatarError } from "./utils/avatarProcessor.js";
81
+ // Music utilities
82
+ export { MusicProcessor } from "./utils/musicProcessor.js";
83
+ export { MUSIC_ERROR_CODES, MusicError } from "./utils/musicProcessor.js";
84
+ // Provider registry (for tests, advanced consumers, and tools that need to
85
+ // invoke registerAllProviders() outside of constructing a NeuroLink instance)
86
+ export { ProviderRegistry } from "./factories/providerRegistry.js";
74
87
  // Main NeuroLink wrapper class and diagnostic types
75
88
  import { NeuroLink } from "./neurolink.js";
76
89
  export { NeuroLink };
@@ -386,7 +399,9 @@ AnswerRelevancyScorer, createAnswerRelevancyScorer, BaseLLMScorer, DEFAULT_LLM_S
386
399
  // Scorers - Rule-based
387
400
  BaseRuleScorer, DEFAULT_RULE_SCORER_CONFIG, createContentSimilarityScorer, createFormatScorer, FormatScorerPresets, createKeywordCoverageScorer, createLengthScorer, LengthScorerPresets,
388
401
  // Scorers - Builder & Registry
389
- ScorerBuilder, Scorers, ScorerRegistry, } from "./evaluation/index.js";
402
+ ScorerBuilder, Scorers, ScorerRegistry,
403
+ // RAGAS evaluator + retry manager (legacy + still-supported classes).
404
+ RAGASEvaluator, RetryManager, } from "./evaluation/index.js";
390
405
  // ============================================================================
391
406
  // BACKWARD COMPATIBILITY: Legacy generateText Function Exports
392
407
  // ============================================================================
@@ -281,7 +281,7 @@ const VISION_CAPABILITIES = {
281
281
  openrouter: [
282
282
  // OpenRouter provides access to vision-capable models from multiple providers
283
283
  // Anthropic Claude models (via OpenRouter)
284
- "anthropic/claude-3-5-sonnet",
284
+ "anthropic/claude-3.7-sonnet",
285
285
  "anthropic/claude-3-5-haiku",
286
286
  "anthropic/claude-3-opus",
287
287
  "anthropic/claude-3-sonnet",
@@ -474,6 +474,34 @@ const VISION_CAPABILITIES = {
474
474
  "qwen2-vl",
475
475
  "phi-3-vision",
476
476
  ],
477
+ // xAI: only grok-2-vision is multimodal today
478
+ xai: ["grok-2-vision-latest"],
479
+ // Groq: vision models are explicit "*-vision-preview" variants
480
+ groq: ["llama-3.2-90b-vision-preview", "llama-3.2-11b-vision-preview"],
481
+ // Cohere: command-r* are text-only (no vision); empty list
482
+ cohere: [],
483
+ // Together AI: text-only by default; add vision variants if/when used.
484
+ "together-ai": [],
485
+ // Fireworks: vision via Phi-3-Vision and Llama 3.2 vision variants.
486
+ fireworks: [
487
+ "accounts/fireworks/models/phi-3-vision-128k-instruct",
488
+ "accounts/fireworks/models/llama-v3p2-90b-vision-instruct",
489
+ "accounts/fireworks/models/llama-v3p2-11b-vision-instruct",
490
+ ],
491
+ // Perplexity Sonar — text-only with web grounding.
492
+ perplexity: [],
493
+ // Cloudflare: explicit vision variants only.
494
+ cloudflare: ["@cf/meta/llama-3.2-11b-vision-instruct"],
495
+ // Replicate: vision capability depends on the specific model id.
496
+ replicate: ["llava", "llama-3.2-vision", "moondream", "qwen2-vl"],
497
+ // Voyage / Jina — embedding-only, not multimodal in this sense.
498
+ voyage: [],
499
+ jina: [],
500
+ // Stability / Ideogram / Recraft — image-OUTPUT, not image-INPUT.
501
+ // VISION_CAPABILITIES tracks reference-image input support.
502
+ stability: [],
503
+ ideogram: [],
504
+ recraft: [],
477
505
  };
478
506
  /**
479
507
  * Provider Image Adapter - Smart routing and formatting
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Replicate Auth Helper
3
+ *
4
+ * Resolves the Replicate API token + base URL from per-call overrides,
5
+ * instance credentials, or env vars. Used by every Replicate-backed
6
+ * handler (LLM, video, avatar, music) so the auth chain is centralised.
7
+ *
8
+ * @module adapters/replicate/auth
9
+ */
10
+ import type { ReplicateAuth } from "../../types/index.js";
11
+ /**
12
+ * Resolve Replicate auth from override → env vars.
13
+ *
14
+ * Returns `null` when `REPLICATE_API_TOKEN` is missing AND no override is
15
+ * provided. Handlers' `isConfigured()` check `auth !== null`.
16
+ *
17
+ * @param override - per-call or instance-level credentials slice
18
+ */
19
+ export declare function getReplicateAuth(override?: Partial<ReplicateAuth>): ReplicateAuth | null;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Replicate Auth Helper
3
+ *
4
+ * Resolves the Replicate API token + base URL from per-call overrides,
5
+ * instance credentials, or env vars. Used by every Replicate-backed
6
+ * handler (LLM, video, avatar, music) so the auth chain is centralised.
7
+ *
8
+ * @module adapters/replicate/auth
9
+ */
10
+ const DEFAULT_BASE_URL = "https://api.replicate.com";
11
+ /**
12
+ * Resolve Replicate auth from override → env vars.
13
+ *
14
+ * Returns `null` when `REPLICATE_API_TOKEN` is missing AND no override is
15
+ * provided. Handlers' `isConfigured()` check `auth !== null`.
16
+ *
17
+ * @param override - per-call or instance-level credentials slice
18
+ */
19
+ export function getReplicateAuth(override) {
20
+ const apiToken = (override?.apiToken ??
21
+ process.env.REPLICATE_API_TOKEN ??
22
+ "").trim();
23
+ if (!apiToken) {
24
+ return null;
25
+ }
26
+ return {
27
+ apiToken,
28
+ baseUrl: (override?.baseUrl ??
29
+ process.env.REPLICATE_BASE_URL ??
30
+ DEFAULT_BASE_URL).replace(/\/$/, ""),
31
+ };
32
+ }
33
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Replicate Prediction Lifecycle
3
+ *
4
+ * Shared async-job helpers used by every Replicate-backed handler. Submits
5
+ * a prediction, polls until terminal status, downloads the binary output.
6
+ *
7
+ * Usage pattern (for handlers — LLM, video, avatar, music):
8
+ *
9
+ * const auth = getReplicateAuth(credentials);
10
+ * if (!auth) throw new XxxError({ code: PROVIDER_NOT_CONFIGURED, ... });
11
+ * const prediction = await predict(auth, { model, input });
12
+ * const buffer = await downloadPredictionOutput(prediction);
13
+ *
14
+ * @module adapters/replicate/predictionLifecycle
15
+ */
16
+ import type { ReplicateAuth, ReplicateCreatePredictionInput, ReplicatePollOptions, ReplicatePrediction } from "../../types/index.js";
17
+ /**
18
+ * Submit a Replicate prediction. Uses `Prefer: wait=60` so quick
19
+ * predictions complete in the initial POST and skip polling entirely.
20
+ */
21
+ export declare function createPrediction(auth: ReplicateAuth, input: ReplicateCreatePredictionInput): Promise<ReplicatePrediction>;
22
+ /**
23
+ * Poll a Replicate prediction until it reaches a terminal status
24
+ * (succeeded / failed / canceled) or the total timeout elapses.
25
+ */
26
+ export declare function pollPrediction(auth: ReplicateAuth, predictionId: string, options?: ReplicatePollOptions): Promise<ReplicatePrediction>;
27
+ /**
28
+ * Submit + poll. Combines `createPrediction` + `pollPrediction`.
29
+ *
30
+ * Uses `Prefer: wait=60` in the submit call so short jobs complete in the
31
+ * initial POST and bypass polling entirely.
32
+ */
33
+ export declare function predict(auth: ReplicateAuth, input: ReplicateCreatePredictionInput, options?: ReplicatePollOptions): Promise<ReplicatePrediction>;
34
+ /**
35
+ * Download a Replicate prediction's binary output.
36
+ *
37
+ * Replicate models return either a single URL string or an array of URL
38
+ * strings (multi-output models). For models that return base64 directly,
39
+ * use a model-specific helper instead.
40
+ *
41
+ * @param prediction The completed prediction to download.
42
+ * @param maxBytes Maximum bytes allowed. Defaults to {@link MAX_VIDEO_BYTES}
43
+ * (256 MiB). Pass {@link MAX_AUDIO_BYTES} for music/TTS
44
+ * outputs or {@link MAX_IMAGE_BYTES} for image outputs.
45
+ */
46
+ export declare function downloadPredictionOutput(prediction: ReplicatePrediction, maxBytes?: number): Promise<Buffer>;