@juspay/neurolink 9.2.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +60 -38
  3. package/dist/agent/directTools.d.ts +8 -8
  4. package/dist/cli/commands/rag.d.ts +19 -0
  5. package/dist/cli/commands/rag.js +756 -0
  6. package/dist/cli/factories/commandFactory.js +146 -83
  7. package/dist/cli/index.js +1 -0
  8. package/dist/cli/parser.js +4 -1
  9. package/dist/core/baseProvider.d.ts +43 -30
  10. package/dist/core/baseProvider.js +98 -138
  11. package/dist/core/conversationMemoryFactory.d.ts +2 -2
  12. package/dist/core/conversationMemoryFactory.js +2 -2
  13. package/dist/core/conversationMemoryInitializer.d.ts +1 -2
  14. package/dist/core/conversationMemoryInitializer.js +2 -2
  15. package/dist/core/infrastructure/baseError.d.ts +21 -0
  16. package/dist/core/infrastructure/baseError.js +22 -0
  17. package/dist/core/infrastructure/baseFactory.d.ts +21 -0
  18. package/dist/core/infrastructure/baseFactory.js +54 -0
  19. package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
  20. package/dist/core/infrastructure/baseRegistry.js +49 -0
  21. package/dist/core/infrastructure/index.d.ts +5 -0
  22. package/dist/core/infrastructure/index.js +5 -0
  23. package/dist/core/infrastructure/retry.d.ts +7 -0
  24. package/dist/core/infrastructure/retry.js +20 -0
  25. package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
  26. package/dist/core/infrastructure/typedEventEmitter.js +23 -0
  27. package/dist/core/redisConversationMemoryManager.d.ts +1 -6
  28. package/dist/core/redisConversationMemoryManager.js +7 -19
  29. package/dist/factories/providerFactory.d.ts +5 -3
  30. package/dist/factories/providerFactory.js +31 -24
  31. package/dist/index.d.ts +81 -12
  32. package/dist/index.js +105 -36
  33. package/dist/lib/core/baseProvider.d.ts +43 -30
  34. package/dist/lib/core/baseProvider.js +98 -138
  35. package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
  36. package/dist/lib/core/conversationMemoryFactory.js +2 -2
  37. package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
  38. package/dist/lib/core/conversationMemoryInitializer.js +2 -2
  39. package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
  40. package/dist/lib/core/infrastructure/baseError.js +23 -0
  41. package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
  42. package/dist/lib/core/infrastructure/baseFactory.js +55 -0
  43. package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
  44. package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
  45. package/dist/lib/core/infrastructure/index.d.ts +5 -0
  46. package/dist/lib/core/infrastructure/index.js +6 -0
  47. package/dist/lib/core/infrastructure/retry.d.ts +7 -0
  48. package/dist/lib/core/infrastructure/retry.js +21 -0
  49. package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
  50. package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
  51. package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
  52. package/dist/lib/core/redisConversationMemoryManager.js +7 -19
  53. package/dist/lib/factories/providerFactory.d.ts +5 -3
  54. package/dist/lib/factories/providerFactory.js +31 -24
  55. package/dist/lib/index.d.ts +81 -12
  56. package/dist/lib/index.js +105 -36
  57. package/dist/lib/mcp/index.d.ts +6 -5
  58. package/dist/lib/mcp/index.js +7 -5
  59. package/dist/lib/neurolink.d.ts +22 -13
  60. package/dist/lib/neurolink.js +358 -31
  61. package/dist/lib/providers/amazonBedrock.d.ts +15 -2
  62. package/dist/lib/providers/amazonBedrock.js +65 -8
  63. package/dist/lib/providers/anthropic.d.ts +3 -3
  64. package/dist/lib/providers/anthropic.js +10 -7
  65. package/dist/lib/providers/googleAiStudio.d.ts +5 -5
  66. package/dist/lib/providers/googleAiStudio.js +10 -7
  67. package/dist/lib/providers/googleVertex.d.ts +16 -4
  68. package/dist/lib/providers/googleVertex.js +72 -16
  69. package/dist/lib/providers/litellm.d.ts +3 -3
  70. package/dist/lib/providers/litellm.js +10 -10
  71. package/dist/lib/providers/mistral.d.ts +3 -3
  72. package/dist/lib/providers/mistral.js +7 -6
  73. package/dist/lib/providers/ollama.d.ts +3 -4
  74. package/dist/lib/providers/ollama.js +7 -8
  75. package/dist/lib/providers/openAI.d.ts +14 -2
  76. package/dist/lib/providers/openAI.js +60 -6
  77. package/dist/lib/providers/openRouter.d.ts +2 -2
  78. package/dist/lib/providers/openRouter.js +10 -6
  79. package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
  80. package/dist/lib/rag/ChunkerFactory.js +321 -0
  81. package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
  82. package/dist/lib/rag/ChunkerRegistry.js +422 -0
  83. package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
  84. package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
  85. package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
  86. package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
  87. package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
  88. package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
  89. package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
  90. package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
  91. package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
  92. package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
  93. package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
  94. package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
  95. package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
  96. package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
  97. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  98. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
  99. package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
  100. package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
  101. package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
  102. package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
  103. package/dist/lib/rag/chunkers/index.d.ts +15 -0
  104. package/dist/lib/rag/chunkers/index.js +16 -0
  105. package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
  106. package/dist/lib/rag/chunking/characterChunker.js +143 -0
  107. package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
  108. package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
  109. package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
  110. package/dist/lib/rag/chunking/htmlChunker.js +248 -0
  111. package/dist/lib/rag/chunking/index.d.ts +15 -0
  112. package/dist/lib/rag/chunking/index.js +18 -0
  113. package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
  114. package/dist/lib/rag/chunking/jsonChunker.js +282 -0
  115. package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
  116. package/dist/lib/rag/chunking/latexChunker.js +252 -0
  117. package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
  118. package/dist/lib/rag/chunking/markdownChunker.js +202 -0
  119. package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
  120. package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
  121. package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
  122. package/dist/lib/rag/chunking/semanticChunker.js +307 -0
  123. package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
  124. package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
  125. package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
  126. package/dist/lib/rag/chunking/tokenChunker.js +184 -0
  127. package/dist/lib/rag/document/MDocument.d.ts +198 -0
  128. package/dist/lib/rag/document/MDocument.js +393 -0
  129. package/dist/lib/rag/document/index.d.ts +5 -0
  130. package/dist/lib/rag/document/index.js +6 -0
  131. package/dist/lib/rag/document/loaders.d.ts +201 -0
  132. package/dist/lib/rag/document/loaders.js +501 -0
  133. package/dist/lib/rag/errors/RAGError.d.ts +244 -0
  134. package/dist/lib/rag/errors/RAGError.js +275 -0
  135. package/dist/lib/rag/errors/index.d.ts +6 -0
  136. package/dist/lib/rag/errors/index.js +7 -0
  137. package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
  138. package/dist/lib/rag/graphRag/graphRAG.js +385 -0
  139. package/dist/lib/rag/graphRag/index.d.ts +4 -0
  140. package/dist/lib/rag/graphRag/index.js +5 -0
  141. package/dist/lib/rag/index.d.ts +103 -0
  142. package/dist/lib/rag/index.js +142 -0
  143. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  144. package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
  145. package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  146. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
  147. package/dist/lib/rag/metadata/index.d.ts +6 -0
  148. package/dist/lib/rag/metadata/index.js +10 -0
  149. package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
  150. package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
  151. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
  152. package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
  153. package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
  154. package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
  155. package/dist/lib/rag/pipeline/index.d.ts +5 -0
  156. package/dist/lib/rag/pipeline/index.js +6 -0
  157. package/dist/lib/rag/ragIntegration.d.ts +38 -0
  158. package/dist/lib/rag/ragIntegration.js +212 -0
  159. package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
  160. package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
  161. package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
  162. package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
  163. package/dist/lib/rag/reranker/index.d.ts +6 -0
  164. package/dist/lib/rag/reranker/index.js +10 -0
  165. package/dist/lib/rag/reranker/reranker.d.ts +71 -0
  166. package/dist/lib/rag/reranker/reranker.js +278 -0
  167. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
  168. package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
  169. package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
  170. package/dist/lib/rag/resilience/RetryHandler.js +301 -0
  171. package/dist/lib/rag/resilience/index.d.ts +7 -0
  172. package/dist/lib/rag/resilience/index.js +8 -0
  173. package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
  174. package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
  175. package/dist/lib/rag/retrieval/index.d.ts +5 -0
  176. package/dist/lib/rag/retrieval/index.js +6 -0
  177. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
  178. package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
  179. package/dist/lib/rag/types.d.ts +768 -0
  180. package/dist/lib/rag/types.js +9 -0
  181. package/dist/lib/server/index.d.ts +15 -11
  182. package/dist/lib/server/index.js +55 -51
  183. package/dist/lib/types/common.d.ts +0 -1
  184. package/dist/lib/types/generateTypes.d.ts +70 -8
  185. package/dist/lib/types/generateTypes.js +1 -1
  186. package/dist/lib/types/index.d.ts +6 -0
  187. package/dist/lib/types/index.js +12 -0
  188. package/dist/lib/types/streamTypes.d.ts +63 -8
  189. package/dist/lib/types/streamTypes.js +1 -1
  190. package/dist/lib/types/workflowTypes.d.ts +558 -0
  191. package/dist/lib/types/workflowTypes.js +32 -0
  192. package/dist/lib/utils/modelRouter.d.ts +4 -4
  193. package/dist/lib/utils/modelRouter.js +4 -4
  194. package/dist/lib/workflow/LAYER-EXAMPLES.d.ts +13 -0
  195. package/dist/lib/workflow/LAYER-EXAMPLES.js +312 -0
  196. package/dist/lib/workflow/PROMPT-EXAMPLES.d.ts +117 -0
  197. package/dist/lib/workflow/PROMPT-EXAMPLES.js +246 -0
  198. package/dist/lib/workflow/config.d.ts +1569 -0
  199. package/dist/lib/workflow/config.js +399 -0
  200. package/dist/lib/workflow/core/ensembleExecutor.d.ts +56 -0
  201. package/dist/lib/workflow/core/ensembleExecutor.js +398 -0
  202. package/dist/lib/workflow/core/judgeScorer.d.ts +26 -0
  203. package/dist/lib/workflow/core/judgeScorer.js +527 -0
  204. package/dist/lib/workflow/core/responseConditioner.d.ts +22 -0
  205. package/dist/lib/workflow/core/responseConditioner.js +226 -0
  206. package/dist/lib/workflow/core/types/conditionerTypes.d.ts +7 -0
  207. package/dist/lib/workflow/core/types/conditionerTypes.js +8 -0
  208. package/dist/lib/workflow/core/types/ensembleTypes.d.ts +7 -0
  209. package/dist/lib/workflow/core/types/ensembleTypes.js +8 -0
  210. package/dist/lib/workflow/core/types/index.d.ts +7 -0
  211. package/dist/lib/workflow/core/types/index.js +8 -0
  212. package/dist/lib/workflow/core/types/judgeTypes.d.ts +7 -0
  213. package/dist/lib/workflow/core/types/judgeTypes.js +8 -0
  214. package/dist/lib/workflow/core/types/layerTypes.d.ts +7 -0
  215. package/dist/lib/workflow/core/types/layerTypes.js +8 -0
  216. package/dist/lib/workflow/core/types/registryTypes.d.ts +7 -0
  217. package/dist/lib/workflow/core/types/registryTypes.js +8 -0
  218. package/dist/lib/workflow/core/workflowRegistry.d.ts +73 -0
  219. package/dist/lib/workflow/core/workflowRegistry.js +305 -0
  220. package/dist/lib/workflow/core/workflowRunner.d.ts +115 -0
  221. package/dist/lib/workflow/core/workflowRunner.js +554 -0
  222. package/dist/lib/workflow/index.d.ts +36 -0
  223. package/dist/lib/workflow/index.js +51 -0
  224. package/dist/lib/workflow/types.d.ts +19 -0
  225. package/dist/lib/workflow/types.js +10 -0
  226. package/dist/lib/workflow/utils/types/index.d.ts +7 -0
  227. package/dist/lib/workflow/utils/types/index.js +8 -0
  228. package/dist/lib/workflow/utils/types/metricsTypes.d.ts +7 -0
  229. package/dist/lib/workflow/utils/types/metricsTypes.js +8 -0
  230. package/dist/lib/workflow/utils/types/validationTypes.d.ts +7 -0
  231. package/dist/lib/workflow/utils/types/validationTypes.js +8 -0
  232. package/dist/lib/workflow/utils/workflowMetrics.d.ts +76 -0
  233. package/dist/lib/workflow/utils/workflowMetrics.js +312 -0
  234. package/dist/lib/workflow/utils/workflowValidation.d.ts +29 -0
  235. package/dist/lib/workflow/utils/workflowValidation.js +421 -0
  236. package/dist/lib/workflow/workflows/adaptiveWorkflow.d.ts +72 -0
  237. package/dist/lib/workflow/workflows/adaptiveWorkflow.js +367 -0
  238. package/dist/lib/workflow/workflows/consensusWorkflow.d.ts +69 -0
  239. package/dist/lib/workflow/workflows/consensusWorkflow.js +193 -0
  240. package/dist/lib/workflow/workflows/fallbackWorkflow.d.ts +49 -0
  241. package/dist/lib/workflow/workflows/fallbackWorkflow.js +226 -0
  242. package/dist/lib/workflow/workflows/multiJudgeWorkflow.d.ts +70 -0
  243. package/dist/lib/workflow/workflows/multiJudgeWorkflow.js +352 -0
  244. package/dist/mcp/index.d.ts +6 -5
  245. package/dist/mcp/index.js +7 -5
  246. package/dist/neurolink.d.ts +22 -13
  247. package/dist/neurolink.js +358 -31
  248. package/dist/providers/amazonBedrock.d.ts +15 -2
  249. package/dist/providers/amazonBedrock.js +65 -8
  250. package/dist/providers/anthropic.d.ts +3 -3
  251. package/dist/providers/anthropic.js +10 -7
  252. package/dist/providers/googleAiStudio.d.ts +5 -5
  253. package/dist/providers/googleAiStudio.js +10 -7
  254. package/dist/providers/googleVertex.d.ts +16 -4
  255. package/dist/providers/googleVertex.js +72 -16
  256. package/dist/providers/litellm.d.ts +3 -3
  257. package/dist/providers/litellm.js +10 -10
  258. package/dist/providers/mistral.d.ts +3 -3
  259. package/dist/providers/mistral.js +7 -6
  260. package/dist/providers/ollama.d.ts +3 -4
  261. package/dist/providers/ollama.js +7 -8
  262. package/dist/providers/openAI.d.ts +14 -2
  263. package/dist/providers/openAI.js +60 -6
  264. package/dist/providers/openRouter.d.ts +2 -2
  265. package/dist/providers/openRouter.js +10 -6
  266. package/dist/rag/ChunkerFactory.d.ts +91 -0
  267. package/dist/rag/ChunkerFactory.js +320 -0
  268. package/dist/rag/ChunkerRegistry.d.ts +91 -0
  269. package/dist/rag/ChunkerRegistry.js +421 -0
  270. package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
  271. package/dist/rag/chunkers/BaseChunker.js +143 -0
  272. package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
  273. package/dist/rag/chunkers/CharacterChunker.js +28 -0
  274. package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
  275. package/dist/rag/chunkers/HTMLChunker.js +38 -0
  276. package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
  277. package/dist/rag/chunkers/JSONChunker.js +68 -0
  278. package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
  279. package/dist/rag/chunkers/LaTeXChunker.js +63 -0
  280. package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
  281. package/dist/rag/chunkers/MarkdownChunker.js +102 -0
  282. package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
  283. package/dist/rag/chunkers/RecursiveChunker.js +139 -0
  284. package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  285. package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
  286. package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
  287. package/dist/rag/chunkers/SentenceChunker.js +66 -0
  288. package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
  289. package/dist/rag/chunkers/TokenChunker.js +61 -0
  290. package/dist/rag/chunkers/index.d.ts +15 -0
  291. package/dist/rag/chunkers/index.js +15 -0
  292. package/dist/rag/chunking/characterChunker.d.ts +16 -0
  293. package/dist/rag/chunking/characterChunker.js +142 -0
  294. package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
  295. package/dist/rag/chunking/chunkerRegistry.js +194 -0
  296. package/dist/rag/chunking/htmlChunker.d.ts +34 -0
  297. package/dist/rag/chunking/htmlChunker.js +247 -0
  298. package/dist/rag/chunking/index.d.ts +15 -0
  299. package/dist/rag/chunking/index.js +17 -0
  300. package/dist/rag/chunking/jsonChunker.d.ts +20 -0
  301. package/dist/rag/chunking/jsonChunker.js +281 -0
  302. package/dist/rag/chunking/latexChunker.d.ts +26 -0
  303. package/dist/rag/chunking/latexChunker.js +251 -0
  304. package/dist/rag/chunking/markdownChunker.d.ts +19 -0
  305. package/dist/rag/chunking/markdownChunker.js +201 -0
  306. package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
  307. package/dist/rag/chunking/recursiveChunker.js +148 -0
  308. package/dist/rag/chunking/semanticChunker.d.ts +41 -0
  309. package/dist/rag/chunking/semanticChunker.js +306 -0
  310. package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
  311. package/dist/rag/chunking/sentenceChunker.js +230 -0
  312. package/dist/rag/chunking/tokenChunker.d.ts +36 -0
  313. package/dist/rag/chunking/tokenChunker.js +183 -0
  314. package/dist/rag/document/MDocument.d.ts +198 -0
  315. package/dist/rag/document/MDocument.js +392 -0
  316. package/dist/rag/document/index.d.ts +5 -0
  317. package/dist/rag/document/index.js +5 -0
  318. package/dist/rag/document/loaders.d.ts +201 -0
  319. package/dist/rag/document/loaders.js +500 -0
  320. package/dist/rag/errors/RAGError.d.ts +244 -0
  321. package/dist/rag/errors/RAGError.js +274 -0
  322. package/dist/rag/errors/index.d.ts +6 -0
  323. package/dist/rag/errors/index.js +6 -0
  324. package/dist/rag/graphRag/graphRAG.d.ts +115 -0
  325. package/dist/rag/graphRag/graphRAG.js +384 -0
  326. package/dist/rag/graphRag/index.d.ts +4 -0
  327. package/dist/rag/graphRag/index.js +4 -0
  328. package/dist/rag/index.d.ts +103 -0
  329. package/dist/rag/index.js +141 -0
  330. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  331. package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
  332. package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  333. package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
  334. package/dist/rag/metadata/index.d.ts +6 -0
  335. package/dist/rag/metadata/index.js +9 -0
  336. package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
  337. package/dist/rag/metadata/metadataExtractor.js +277 -0
  338. package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
  339. package/dist/rag/pipeline/RAGPipeline.js +401 -0
  340. package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
  341. package/dist/rag/pipeline/contextAssembly.js +337 -0
  342. package/dist/rag/pipeline/index.d.ts +5 -0
  343. package/dist/rag/pipeline/index.js +5 -0
  344. package/dist/rag/ragIntegration.d.ts +38 -0
  345. package/dist/rag/ragIntegration.js +211 -0
  346. package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
  347. package/dist/rag/reranker/RerankerFactory.js +430 -0
  348. package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
  349. package/dist/rag/reranker/RerankerRegistry.js +402 -0
  350. package/dist/rag/reranker/index.d.ts +6 -0
  351. package/dist/rag/reranker/index.js +9 -0
  352. package/dist/rag/reranker/reranker.d.ts +71 -0
  353. package/dist/rag/reranker/reranker.js +277 -0
  354. package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
  355. package/dist/rag/resilience/CircuitBreaker.js +431 -0
  356. package/dist/rag/resilience/RetryHandler.d.ts +115 -0
  357. package/dist/rag/resilience/RetryHandler.js +300 -0
  358. package/dist/rag/resilience/index.d.ts +7 -0
  359. package/dist/rag/resilience/index.js +7 -0
  360. package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
  361. package/dist/rag/retrieval/hybridSearch.js +313 -0
  362. package/dist/rag/retrieval/index.d.ts +5 -0
  363. package/dist/rag/retrieval/index.js +5 -0
  364. package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
  365. package/dist/rag/retrieval/vectorQueryTool.js +289 -0
  366. package/dist/rag/types.d.ts +768 -0
  367. package/dist/rag/types.js +8 -0
  368. package/dist/server/index.d.ts +15 -11
  369. package/dist/server/index.js +55 -51
  370. package/dist/server/utils/validation.d.ts +2 -2
  371. package/dist/types/common.d.ts +0 -1
  372. package/dist/types/generateTypes.d.ts +70 -8
  373. package/dist/types/generateTypes.js +1 -1
  374. package/dist/types/index.d.ts +6 -0
  375. package/dist/types/index.js +12 -0
  376. package/dist/types/modelTypes.d.ts +20 -20
  377. package/dist/types/streamTypes.d.ts +63 -8
  378. package/dist/types/streamTypes.js +1 -1
  379. package/dist/types/workflowTypes.d.ts +558 -0
  380. package/dist/types/workflowTypes.js +31 -0
  381. package/dist/utils/modelRouter.d.ts +4 -4
  382. package/dist/utils/modelRouter.js +4 -4
  383. package/dist/workflow/LAYER-EXAMPLES.d.ts +13 -0
  384. package/dist/workflow/LAYER-EXAMPLES.js +311 -0
  385. package/dist/workflow/PROMPT-EXAMPLES.d.ts +117 -0
  386. package/dist/workflow/PROMPT-EXAMPLES.js +245 -0
  387. package/dist/workflow/config.d.ts +1569 -0
  388. package/dist/workflow/config.js +398 -0
  389. package/dist/workflow/core/ensembleExecutor.d.ts +56 -0
  390. package/dist/workflow/core/ensembleExecutor.js +397 -0
  391. package/dist/workflow/core/judgeScorer.d.ts +26 -0
  392. package/dist/workflow/core/judgeScorer.js +526 -0
  393. package/dist/workflow/core/responseConditioner.d.ts +22 -0
  394. package/dist/workflow/core/responseConditioner.js +225 -0
  395. package/dist/workflow/core/types/conditionerTypes.d.ts +7 -0
  396. package/dist/workflow/core/types/conditionerTypes.js +7 -0
  397. package/dist/workflow/core/types/ensembleTypes.d.ts +7 -0
  398. package/dist/workflow/core/types/ensembleTypes.js +7 -0
  399. package/dist/workflow/core/types/index.d.ts +7 -0
  400. package/dist/workflow/core/types/index.js +7 -0
  401. package/dist/workflow/core/types/judgeTypes.d.ts +7 -0
  402. package/dist/workflow/core/types/judgeTypes.js +7 -0
  403. package/dist/workflow/core/types/layerTypes.d.ts +7 -0
  404. package/dist/workflow/core/types/layerTypes.js +7 -0
  405. package/dist/workflow/core/types/registryTypes.d.ts +7 -0
  406. package/dist/workflow/core/types/registryTypes.js +7 -0
  407. package/dist/workflow/core/workflowRegistry.d.ts +73 -0
  408. package/dist/workflow/core/workflowRegistry.js +304 -0
  409. package/dist/workflow/core/workflowRunner.d.ts +115 -0
  410. package/dist/workflow/core/workflowRunner.js +553 -0
  411. package/dist/workflow/index.d.ts +36 -0
  412. package/dist/workflow/index.js +50 -0
  413. package/dist/workflow/types.d.ts +19 -0
  414. package/dist/workflow/types.js +9 -0
  415. package/dist/workflow/utils/types/index.d.ts +7 -0
  416. package/dist/workflow/utils/types/index.js +7 -0
  417. package/dist/workflow/utils/types/metricsTypes.d.ts +7 -0
  418. package/dist/workflow/utils/types/metricsTypes.js +7 -0
  419. package/dist/workflow/utils/types/validationTypes.d.ts +7 -0
  420. package/dist/workflow/utils/types/validationTypes.js +7 -0
  421. package/dist/workflow/utils/workflowMetrics.d.ts +76 -0
  422. package/dist/workflow/utils/workflowMetrics.js +311 -0
  423. package/dist/workflow/utils/workflowValidation.d.ts +29 -0
  424. package/dist/workflow/utils/workflowValidation.js +420 -0
  425. package/dist/workflow/workflows/adaptiveWorkflow.d.ts +72 -0
  426. package/dist/workflow/workflows/adaptiveWorkflow.js +366 -0
  427. package/dist/workflow/workflows/consensusWorkflow.d.ts +69 -0
  428. package/dist/workflow/workflows/consensusWorkflow.js +192 -0
  429. package/dist/workflow/workflows/fallbackWorkflow.d.ts +49 -0
  430. package/dist/workflow/workflows/fallbackWorkflow.js +225 -0
  431. package/dist/workflow/workflows/multiJudgeWorkflow.d.ts +70 -0
  432. package/dist/workflow/workflows/multiJudgeWorkflow.js +351 -0
  433. package/package.json +3 -2
@@ -1,13 +1,13 @@
1
1
  import { createAnthropic } from "@ai-sdk/anthropic";
2
2
  import { streamText } from "ai";
3
- import { AIProviderName, AnthropicModels } from "../constants/enums.js";
3
+ import { AnthropicModels } from "../constants/enums.js";
4
4
  import { BaseProvider } from "../core/baseProvider.js";
5
- import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
7
- import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
8
5
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
9
- import { validateApiKey, createAnthropicConfig, getProviderModel, } from "../utils/providerConfig.js";
10
6
  import { createProxyFetch } from "../proxy/proxyFetch.js";
7
+ import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
8
+ import { logger } from "../utils/logger.js";
9
+ import { createAnthropicConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
10
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
11
11
  // Configuration helpers - now using consolidated utility
12
12
  const getAnthropicApiKey = () => {
13
13
  return validateApiKey(createAnthropicConfig());
@@ -88,9 +88,12 @@ export class AnthropicProvider extends BaseProvider {
88
88
  const timeout = this.getTimeout(options);
89
89
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
90
90
  try {
91
- // Get tools for streaming (same as generate method)
91
+ // Get tools - options.tools is pre-merged by BaseProvider.stream() with
92
+ // base tools (MCP/built-in) + user-provided tools (RAG, etc.)
92
93
  const shouldUseTools = !options.disableTools && this.supportsTools();
93
- const tools = shouldUseTools ? await this.getAllTools() : {};
94
+ const tools = shouldUseTools
95
+ ? options.tools || (await this.getAllTools())
96
+ : {};
94
97
  // Build message array from options with multimodal support
95
98
  // Using protected helper from BaseProvider to eliminate code duplication
96
99
  const messages = await this.buildMessagesForStream(options);
@@ -1,9 +1,9 @@
1
- import { type Schema, type LanguageModelV1 } from "ai";
2
- import type { ZodUnknownSchema } from "../types/typeAliases.js";
3
- import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
- import type { TextGenerationOptions, EnhancedGenerateResult } from "../types/generateTypes.js";
1
+ import { type LanguageModelV1, type Schema } from "ai";
2
+ import { type AIProviderName } from "../constants/enums.js";
6
3
  import { BaseProvider } from "../core/baseProvider.js";
4
+ import type { EnhancedGenerateResult, TextGenerationOptions } from "../types/generateTypes.js";
5
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
6
+ import type { ZodUnknownSchema } from "../types/typeAliases.js";
7
7
  /**
8
8
  * Google AI Studio provider implementation using BaseProvider
9
9
  * Migrated from original GoogleAIStudio class to new factory pattern
@@ -1,16 +1,16 @@
1
1
  import { createGoogleGenerativeAI } from "@ai-sdk/google";
2
2
  import { streamText } from "ai";
3
- import { AIProviderName, GoogleAIModels, ErrorCategory, ErrorSeverity, } from "../constants/enums.js";
4
- import { NeuroLinkError, ERROR_CODES } from "../utils/errorHandling.js";
3
+ import { ErrorCategory, ErrorSeverity, GoogleAIModels, } from "../constants/enums.js";
5
4
  import { BaseProvider } from "../core/baseProvider.js";
6
- import { logger } from "../utils/logger.js";
7
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
8
- import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
9
5
  import { DEFAULT_MAX_STEPS, DEFAULT_TOOL_MAX_RETRIES, } from "../core/constants.js";
10
6
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
7
+ import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
8
+ import { ERROR_CODES, NeuroLinkError } from "../utils/errorHandling.js";
9
+ import { logger } from "../utils/logger.js";
11
10
  import { isGemini3Model } from "../utils/modelDetection.js";
12
11
  import { convertZodToJsonSchema, inlineJsonSchema, isZodSchema, } from "../utils/schemaConversion.js";
13
12
  import { createNativeThinkingConfig } from "../utils/thinkingConfig.js";
13
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
14
14
  // Google AI Live API types now imported from ../types/providerSpecific.js
15
15
  // Import proper types for multimodal message handling
16
16
  // Create Google GenAI client
@@ -424,9 +424,12 @@ export class GoogleAIStudioProvider extends BaseProvider {
424
424
  const timeout = this.getTimeout(options);
425
425
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
426
426
  try {
427
- // Get tools consistently with generate method
427
+ // Get tools consistently with generate method (include user-provided RAG tools)
428
428
  const shouldUseTools = !options.disableTools && this.supportsTools();
429
- const tools = shouldUseTools ? await this.getAllTools() : {};
429
+ const baseTools = shouldUseTools ? await this.getAllTools() : {};
430
+ const tools = shouldUseTools
431
+ ? { ...baseTools, ...(options.tools || {}) }
432
+ : {};
430
433
  // Build message array from options with multimodal support
431
434
  // Using protected helper from BaseProvider to eliminate code duplication
432
435
  const messages = await this.buildMessagesForStream(options);
@@ -1,9 +1,9 @@
1
+ import { type LanguageModel, type LanguageModelV1, type Schema } from "ai";
1
2
  import type { ZodType, ZodTypeDef } from "zod";
2
- import { type Schema, type LanguageModelV1, type LanguageModel } from "ai";
3
- import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
- import type { TextGenerationOptions, EnhancedGenerateResult } from "../types/generateTypes.js";
3
+ import { type AIProviderName } from "../constants/enums.js";
6
4
  import { BaseProvider } from "../core/baseProvider.js";
5
+ import type { EnhancedGenerateResult, TextGenerationOptions } from "../types/generateTypes.js";
6
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
7
7
  /**
8
8
  * Google Vertex AI Provider v2 - BaseProvider Implementation
9
9
  *
@@ -64,6 +64,11 @@ export declare class GoogleVertexProvider extends BaseProvider {
64
64
  constructor(modelName?: string, _providerName?: string, sdk?: unknown, region?: string);
65
65
  protected getProviderName(): AIProviderName;
66
66
  protected getDefaultModel(): string;
67
+ /**
68
+ * Get the default embedding model for Google Vertex
69
+ * @returns The default Vertex AI embedding model name
70
+ */
71
+ protected getDefaultEmbeddingModel(): string;
67
72
  /**
68
73
  * Returns the Vercel AI SDK model instance for Google Vertex
69
74
  * Creates fresh model instances for each request
@@ -237,6 +242,13 @@ export declare class GoogleVertexProvider extends BaseProvider {
237
242
  * @returns A promise that resolves to the generation result, including the image data.
238
243
  */
239
244
  protected executeImageGeneration(options: TextGenerationOptions): Promise<EnhancedGenerateResult>;
245
+ /**
246
+ * Generate embeddings for text using Google Vertex AI text-embedding models
247
+ * @param text - The text to embed
248
+ * @param modelName - The embedding model to use (default: text-embedding-004)
249
+ * @returns Promise resolving to the embedding vector
250
+ */
251
+ embed(text: string, modelName?: string): Promise<number[]>;
240
252
  /**
241
253
  * Get model suggestions when a model is not found
242
254
  */
@@ -1,24 +1,24 @@
1
1
  import { createVertex, } from "@ai-sdk/google-vertex";
2
2
  import { createVertexAnthropic, } from "@ai-sdk/google-vertex/anthropic";
3
- import { streamText, Output, } from "ai";
4
- import { AIProviderName, ErrorCategory, ErrorSeverity, } from "../constants/enums.js";
5
- import { NeuroLinkError, ERROR_CODES } from "../utils/errorHandling.js";
3
+ import { Output, streamText, } from "ai";
4
+ import dns from "dns";
5
+ import fs from "fs";
6
+ import os from "os";
7
+ import path from "path";
8
+ import { ErrorCategory, ErrorSeverity, } from "../constants/enums.js";
6
9
  import { BaseProvider } from "../core/baseProvider.js";
7
- import { logger } from "../utils/logger.js";
8
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
9
- import { AuthenticationError, ProviderError } from "../types/errors.js";
10
- import { DEFAULT_MAX_STEPS, GLOBAL_LOCATION_MODELS, DEFAULT_TOOL_MAX_RETRIES, } from "../core/constants.js";
10
+ import { DEFAULT_MAX_STEPS, DEFAULT_TOOL_MAX_RETRIES, GLOBAL_LOCATION_MODELS, } from "../core/constants.js";
11
11
  import { ModelConfigurationManager } from "../core/modelConfiguration.js";
12
- import { validateApiKey, createVertexProjectConfig, createGoogleAuthConfig, } from "../utils/providerConfig.js";
12
+ import { createProxyFetch } from "../proxy/proxyFetch.js";
13
+ import { AuthenticationError, ProviderError } from "../types/errors.js";
14
+ import { ERROR_CODES, NeuroLinkError } from "../utils/errorHandling.js";
15
+ import { FileDetector } from "../utils/fileDetector.js";
16
+ import { logger } from "../utils/logger.js";
13
17
  import { isGemini3Model } from "../utils/modelDetection.js";
18
+ import { createGoogleAuthConfig, createVertexProjectConfig, validateApiKey, } from "../utils/providerConfig.js";
14
19
  import { convertZodToJsonSchema, inlineJsonSchema, } from "../utils/schemaConversion.js";
15
20
  import { createNativeThinkingConfig } from "../utils/thinkingConfig.js";
16
- import fs from "fs";
17
- import path from "path";
18
- import os from "os";
19
- import dns from "dns";
20
- import { createProxyFetch } from "../proxy/proxyFetch.js";
21
- import { FileDetector } from "../utils/fileDetector.js";
21
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
22
22
  // Import proper types for multimodal message handling
23
23
  // Enhanced Anthropic support with direct imports
24
24
  // Using the dual provider architecture from Vercel AI SDK
@@ -339,6 +339,15 @@ export class GoogleVertexProvider extends BaseProvider {
339
339
  getDefaultModel() {
340
340
  return getDefaultVertexModel();
341
341
  }
342
+ /**
343
+ * Get the default embedding model for Google Vertex
344
+ * @returns The default Vertex AI embedding model name
345
+ */
346
+ getDefaultEmbeddingModel() {
347
+ return (process.env.VERTEX_EMBEDDING_MODEL ||
348
+ process.env.GOOGLE_EMBEDDING_MODEL ||
349
+ "text-embedding-004");
350
+ }
342
351
  /**
343
352
  * Returns the Vercel AI SDK model instance for Google Vertex
344
353
  * Creates fresh model instances for each request
@@ -702,11 +711,16 @@ export class GoogleVertexProvider extends BaseProvider {
702
711
  // Using protected helper from BaseProvider to eliminate code duplication
703
712
  const messages = await this.buildMessagesForStream(options);
704
713
  const model = await this.getAISDKModelWithMiddleware(options); // This is where network connection happens!
705
- // Get all available tools (direct + MCP + external) for streaming
714
+ // Get all available tools (direct + MCP + external + user-provided RAG tools) for streaming
706
715
  const shouldUseTools = !options.disableTools && this.supportsTools();
707
- const tools = shouldUseTools ? await this.getAllTools() : {};
716
+ const baseStreamTools = shouldUseTools ? await this.getAllTools() : {};
717
+ const tools = shouldUseTools
718
+ ? { ...baseStreamTools, ...(options.tools || {}) }
719
+ : {};
708
720
  logger.debug(`${functionTag}: Tools for streaming`, {
709
721
  shouldUseTools,
722
+ baseToolCount: Object.keys(baseStreamTools).length,
723
+ externalToolCount: Object.keys(options.tools || {}).length,
710
724
  toolCount: Object.keys(tools).length,
711
725
  toolNames: Object.keys(tools),
712
726
  });
@@ -2747,6 +2761,48 @@ export class GoogleVertexProvider extends BaseProvider {
2747
2761
  throw this.handleProviderError(error);
2748
2762
  }
2749
2763
  }
2764
+ /**
2765
+ * Generate embeddings for text using Google Vertex AI text-embedding models
2766
+ * @param text - The text to embed
2767
+ * @param modelName - The embedding model to use (default: text-embedding-004)
2768
+ * @returns Promise resolving to the embedding vector
2769
+ */
2770
+ async embed(text, modelName) {
2771
+ const embeddingModelName = modelName || "text-embedding-004";
2772
+ logger.debug("Generating embedding", {
2773
+ provider: this.providerName,
2774
+ model: embeddingModelName,
2775
+ textLength: text.length,
2776
+ });
2777
+ try {
2778
+ // Create embedding model using the AI SDK
2779
+ const { embed } = await import("ai");
2780
+ // Create the Vertex provider with current settings
2781
+ const vertexSettings = await createVertexSettings(this.location);
2782
+ const vertex = createVertex(vertexSettings);
2783
+ // Get the text embedding model
2784
+ const embeddingModel = vertex.textEmbeddingModel(embeddingModelName);
2785
+ // Generate the embedding
2786
+ const result = await embed({
2787
+ model: embeddingModel,
2788
+ value: text,
2789
+ });
2790
+ logger.debug("Embedding generated successfully", {
2791
+ provider: this.providerName,
2792
+ model: embeddingModelName,
2793
+ embeddingDimension: result.embedding.length,
2794
+ });
2795
+ return result.embedding;
2796
+ }
2797
+ catch (error) {
2798
+ logger.error("Embedding generation failed", {
2799
+ error: error instanceof Error ? error.message : String(error),
2800
+ model: embeddingModelName,
2801
+ textLength: text.length,
2802
+ });
2803
+ throw this.handleProviderError(error);
2804
+ }
2805
+ }
2750
2806
  /**
2751
2807
  * Get model suggestions when a model is not found
2752
2808
  */
@@ -1,8 +1,8 @@
1
+ import { type LanguageModelV1, type Schema } from "ai";
1
2
  import type { ZodType, ZodTypeDef } from "zod";
2
- import { type Schema, type LanguageModelV1 } from "ai";
3
- import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
3
+ import type { AIProviderName } from "../constants/enums.js";
5
4
  import { BaseProvider } from "../core/baseProvider.js";
5
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
6
6
  /**
7
7
  * LiteLLM Provider - BaseProvider Implementation
8
8
  * Provides access to 100+ models via LiteLLM proxy server
@@ -1,13 +1,12 @@
1
1
  import { createOpenAI } from "@ai-sdk/openai";
2
- import { streamText, Output } from "ai";
3
- import { AIProviderName } from "../constants/enums.js";
2
+ import { Output, streamText, } from "ai";
4
3
  import { BaseProvider } from "../core/baseProvider.js";
5
- import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
7
- import { getProviderModel } from "../utils/providerConfig.js";
8
- import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
9
4
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
5
+ import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
10
6
  import { createProxyFetch } from "../proxy/proxyFetch.js";
7
+ import { logger } from "../utils/logger.js";
8
+ import { getProviderModel } from "../utils/providerConfig.js";
9
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
11
10
  // Configuration helpers
12
11
  const getLiteLLMConfig = () => {
13
12
  return {
@@ -126,9 +125,11 @@ export class LiteLLMProvider extends BaseProvider {
126
125
  // Using protected helper from BaseProvider to eliminate code duplication
127
126
  const messages = await this.buildMessagesForStream(options);
128
127
  const model = await this.getAISDKModelWithMiddleware(options); // This is where network connection happens!
129
- // Get all available tools (direct + MCP + external) for streaming - matching Vertex pattern
128
+ // Get tools - options.tools is pre-merged by BaseProvider.stream()
130
129
  const shouldUseTools = !options.disableTools && this.supportsTools();
131
- const tools = shouldUseTools ? await this.getAllTools() : {};
130
+ const tools = shouldUseTools
131
+ ? options.tools || (await this.getAllTools())
132
+ : {};
132
133
  logger.debug(`LiteLLM: Tools for streaming`, {
133
134
  shouldUseTools,
134
135
  toolCount: Object.keys(tools).length,
@@ -219,8 +220,7 @@ export class LiteLLMProvider extends BaseProvider {
219
220
  errorType: errorChunk.type,
220
221
  errorDetails: errorChunk.error,
221
222
  });
222
- throw new Error(`LiteLLM streaming error: ${errorChunk.error?.message ||
223
- "Unknown error"}`);
223
+ throw new Error(`LiteLLM streaming error: ${errorChunk.error?.message || "Unknown error"}`);
224
224
  }
225
225
  if ("textDelta" in chunk) {
226
226
  // Text delta from fullStream
@@ -1,8 +1,8 @@
1
1
  import { type LanguageModelV1 } from "ai";
2
- import type { ValidationSchema } from "../types/typeAliases.js";
3
- import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
2
+ import type { AIProviderName } from "../constants/enums.js";
5
3
  import { BaseProvider } from "../core/baseProvider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import type { ValidationSchema } from "../types/typeAliases.js";
6
6
  /**
7
7
  * Mistral AI Provider v2 - BaseProvider Implementation
8
8
  * Supports official AI-SDK integration with all Mistral models
@@ -1,13 +1,12 @@
1
1
  import { createMistral } from "@ai-sdk/mistral";
2
2
  import { streamText } from "ai";
3
- import { AIProviderName } from "../constants/enums.js";
4
3
  import { BaseProvider } from "../core/baseProvider.js";
5
- import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
7
4
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
8
- import { validateApiKey, createMistralConfig, getProviderModel, } from "../utils/providerConfig.js";
9
5
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
10
6
  import { createProxyFetch } from "../proxy/proxyFetch.js";
7
+ import { logger } from "../utils/logger.js";
8
+ import { createMistralConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
9
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
11
10
  // Configuration helpers - now using consolidated utility
12
11
  const getMistralApiKey = () => {
13
12
  return validateApiKey(createMistralConfig());
@@ -47,9 +46,11 @@ export class MistralProvider extends BaseProvider {
47
46
  const timeout = this.getTimeout(options);
48
47
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
49
48
  try {
50
- // Get tools consistently with generate method
49
+ // Get tools - options.tools is pre-merged by BaseProvider.stream()
51
50
  const shouldUseTools = !options.disableTools && this.supportsTools();
52
- const tools = shouldUseTools ? await this.getAllTools() : {};
51
+ const tools = shouldUseTools
52
+ ? options.tools || (await this.getAllTools())
53
+ : {};
53
54
  // Build message array from options with multimodal support
54
55
  // Using protected helper from BaseProvider to eliminate code duplication
55
56
  const messages = await this.buildMessagesForStream(options);
@@ -1,9 +1,8 @@
1
- import { AIProviderName } from "../constants/enums.js";
2
- import type { LanguageModelV1 } from "ai";
1
+ import type { LanguageModelV1, Schema } from "ai";
2
+ import type { AIProviderName } from "../constants/enums.js";
3
+ import { BaseProvider } from "../core/baseProvider.js";
3
4
  import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
4
5
  import type { ZodUnknownSchema } from "../types/typeAliases.js";
5
- import type { Schema } from "ai";
6
- import { BaseProvider } from "../core/baseProvider.js";
7
6
  /**
8
7
  * Ollama Provider v2 - BaseProvider Implementation
9
8
  *
@@ -1,13 +1,12 @@
1
- import { AIProviderName } from "../constants/enums.js";
1
+ import { createAnalytics } from "../core/analytics.js";
2
2
  import { BaseProvider } from "../core/baseProvider.js";
3
- import { logger } from "../utils/logger.js";
3
+ import { DEFAULT_MAX_STEPS } from "../core/constants.js";
4
4
  import { modelConfig } from "../core/modelConfiguration.js";
5
5
  import { createProxyFetch } from "../proxy/proxyFetch.js";
6
- import { TimeoutError } from "../utils/timeout.js";
6
+ import { logger } from "../utils/logger.js";
7
7
  import { buildMultimodalMessagesArray } from "../utils/messageBuilder.js";
8
8
  import { buildMultimodalOptions } from "../utils/multimodalOptionsBuilder.js";
9
- import { DEFAULT_MAX_STEPS } from "../core/constants.js";
10
- import { createAnalytics } from "../core/analytics.js";
9
+ import { TimeoutError } from "../utils/timeout.js";
11
10
  // Model version constants (configurable via environment)
12
11
  const DEFAULT_OLLAMA_MODEL = "llama3.1:8b";
13
12
  const FALLBACK_OLLAMA_MODEL = "llama3.2:latest"; // Used when primary model fails
@@ -608,7 +607,9 @@ export class OllamaProvider extends BaseProvider {
608
607
  const maxIterations = options.maxSteps || DEFAULT_MAX_STEPS;
609
608
  let iteration = 0;
610
609
  // Get all available tools (direct + MCP + external)
611
- const allTools = await this.getAllTools();
610
+ // BaseProvider.stream() pre-merges base tools + external tools into options.tools
611
+ const allTools = options.tools ||
612
+ (await this.getAllTools());
612
613
  // Convert tools to Ollama format
613
614
  const ollamaTools = this.convertToolsToOllamaFormat(allTools);
614
615
  // Validate that PDFs are not provided
@@ -698,7 +699,6 @@ export class OllamaProvider extends BaseProvider {
698
699
  };
699
700
  conversationHistory.push(toolMessage);
700
701
  iteration++;
701
- continue; // Next iteration
702
702
  }
703
703
  else if (finishReason === "length") {
704
704
  // Max tokens reached, continue conversation
@@ -708,7 +708,6 @@ export class OllamaProvider extends BaseProvider {
708
708
  content: "Please continue.",
709
709
  });
710
710
  iteration++;
711
- continue;
712
711
  }
713
712
  else {
714
713
  // Unknown finish reason, end conversation
@@ -1,9 +1,9 @@
1
1
  import { type LanguageModelV1 } from "ai";
2
- import type { ValidationSchema } from "../types/typeAliases.js";
3
2
  import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
3
  import { BaseProvider } from "../core/baseProvider.js";
6
4
  import type { NeuroLink } from "../neurolink.js";
5
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
6
+ import type { ValidationSchema } from "../types/typeAliases.js";
7
7
  /**
8
8
  * OpenAI Provider v2 - BaseProvider Implementation
9
9
  * Migrated to use factory pattern with exact Google AI provider pattern
@@ -17,6 +17,11 @@ export declare class OpenAIProvider extends BaseProvider {
17
17
  supportsTools(): boolean;
18
18
  getProviderName(): AIProviderName;
19
19
  getDefaultModel(): string;
20
+ /**
21
+ * Get the default embedding model for OpenAI
22
+ * @returns The default OpenAI embedding model name
23
+ */
24
+ protected getDefaultEmbeddingModel(): string;
20
25
  /**
21
26
  * Returns the Vercel AI SDK model instance for OpenAI
22
27
  */
@@ -47,5 +52,12 @@ export declare class OpenAIProvider extends BaseProvider {
47
52
  * and the migration guide in the project repository.
48
53
  */
49
54
  protected executeStream(options: StreamOptions, _analysisSchema?: ValidationSchema): Promise<StreamResult>;
55
+ /**
56
+ * Generate embeddings for text using OpenAI text-embedding models
57
+ * @param text - The text to embed
58
+ * @param modelName - The embedding model to use (default: text-embedding-3-small)
59
+ * @returns Promise resolving to the embedding vector
60
+ */
61
+ embed(text: string, modelName?: string): Promise<number[]>;
50
62
  }
51
63
  export default OpenAIProvider;
@@ -2,14 +2,14 @@ import { createOpenAI } from "@ai-sdk/openai";
2
2
  import { streamText } from "ai";
3
3
  import { AIProviderName } from "../constants/enums.js";
4
4
  import { BaseProvider } from "../core/baseProvider.js";
5
- import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
7
- import { AuthenticationError, InvalidModelError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
8
5
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
9
- import { validateApiKey, createOpenAIConfig, getProviderModel, } from "../utils/providerConfig.js";
10
6
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
11
7
  import { createProxyFetch } from "../proxy/proxyFetch.js";
8
+ import { AuthenticationError, InvalidModelError, NetworkError, ProviderError, RateLimitError, } from "../types/errors.js";
9
+ import { logger } from "../utils/logger.js";
10
+ import { createOpenAIConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
12
11
  import { isZodSchema } from "../utils/schemaConversion.js";
12
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
13
13
  // Configuration helpers - now using consolidated utility
14
14
  const getOpenAIApiKey = () => {
15
15
  return validateApiKey(createOpenAIConfig());
@@ -54,6 +54,13 @@ export class OpenAIProvider extends BaseProvider {
54
54
  getDefaultModel() {
55
55
  return getOpenAIModel();
56
56
  }
57
+ /**
58
+ * Get the default embedding model for OpenAI
59
+ * @returns The default OpenAI embedding model name
60
+ */
61
+ getDefaultEmbeddingModel() {
62
+ return process.env.OPENAI_EMBEDDING_MODEL || "text-embedding-3-small";
63
+ }
57
64
  /**
58
65
  * Returns the Vercel AI SDK model instance for OpenAI
59
66
  */
@@ -218,9 +225,12 @@ export class OpenAIProvider extends BaseProvider {
218
225
  const timeout = this.getTimeout(options);
219
226
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
220
227
  try {
221
- // Get tools consistently with generate method
228
+ // Get tools - options.tools is pre-merged by BaseProvider.stream() with
229
+ // base tools (MCP/built-in) + user-provided tools (RAG, etc.)
222
230
  const shouldUseTools = !options.disableTools && this.supportsTools();
223
- const allTools = shouldUseTools ? await this.getAllTools() : {};
231
+ const allTools = shouldUseTools
232
+ ? options.tools || (await this.getAllTools())
233
+ : {};
224
234
  // OpenAI-specific fix: Validate tools format and filter out problematic ones
225
235
  let tools = this.validateAndFilterToolsForOpenAI(allTools);
226
236
  // OpenAI max tools limit - configurable via environment variable
@@ -446,6 +456,50 @@ export class OpenAIProvider extends BaseProvider {
446
456
  throw this.handleProviderError(error);
447
457
  }
448
458
  }
459
+ /**
460
+ * Generate embeddings for text using OpenAI text-embedding models
461
+ * @param text - The text to embed
462
+ * @param modelName - The embedding model to use (default: text-embedding-3-small)
463
+ * @returns Promise resolving to the embedding vector
464
+ */
465
+ async embed(text, modelName) {
466
+ const embeddingModelName = modelName || "text-embedding-3-small";
467
+ logger.debug("Generating embedding", {
468
+ provider: this.providerName,
469
+ model: embeddingModelName,
470
+ textLength: text.length,
471
+ });
472
+ try {
473
+ // Create embedding model using the AI SDK
474
+ const { embed } = await import("ai");
475
+ // Create the OpenAI provider
476
+ const openai = createOpenAI({
477
+ apiKey: getOpenAIApiKey(),
478
+ fetch: createProxyFetch(),
479
+ });
480
+ // Get the text embedding model
481
+ const embeddingModel = openai.textEmbeddingModel(embeddingModelName);
482
+ // Generate the embedding
483
+ const result = await embed({
484
+ model: embeddingModel,
485
+ value: text,
486
+ });
487
+ logger.debug("Embedding generated successfully", {
488
+ provider: this.providerName,
489
+ model: embeddingModelName,
490
+ embeddingDimension: result.embedding.length,
491
+ });
492
+ return result.embedding;
493
+ }
494
+ catch (error) {
495
+ logger.error("Embedding generation failed", {
496
+ error: error instanceof Error ? error.message : String(error),
497
+ model: embeddingModelName,
498
+ textLength: text.length,
499
+ });
500
+ throw this.handleProviderError(error);
501
+ }
502
+ }
449
503
  }
450
504
  // Export for factory registration
451
505
  export default OpenAIProvider;
@@ -1,8 +1,8 @@
1
+ import { type LanguageModelV1, type Schema } from "ai";
1
2
  import type { ZodType, ZodTypeDef } from "zod";
2
- import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import { AIProviderName } from "../constants/enums.js";
4
- import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
4
  import { BaseProvider } from "../core/baseProvider.js";
5
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
6
6
  /**
7
7
  * OpenRouter Provider - BaseProvider Implementation
8
8
  * Provides access to 300+ models from 60+ providers via OpenRouter unified gateway
@@ -1,13 +1,13 @@
1
1
  import { createOpenRouter } from "@openrouter/ai-sdk-provider";
2
- import { streamText, Output } from "ai";
2
+ import { Output, streamText } from "ai";
3
3
  import { AIProviderName } from "../constants/enums.js";
4
4
  import { BaseProvider } from "../core/baseProvider.js";
5
- import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
7
- import { getProviderModel } from "../utils/providerConfig.js";
8
- import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
9
5
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
6
+ import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
10
7
  import { createProxyFetch } from "../proxy/proxyFetch.js";
8
+ import { logger } from "../utils/logger.js";
9
+ import { getProviderModel } from "../utils/providerConfig.js";
10
+ import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
11
11
  // Constants
12
12
  const MODELS_DISCOVERY_TIMEOUT_MS = 5000; // 5 seconds for model discovery
13
13
  // Configuration helpers
@@ -203,8 +203,12 @@ export class OpenRouterProvider extends BaseProvider {
203
203
  const messages = await this.buildMessagesForStream(options);
204
204
  const model = await this.getAISDKModelWithMiddleware(options);
205
205
  // Get all available tools (direct + MCP + external) for streaming
206
+ // BaseProvider.stream() pre-merges base tools + external tools into options.tools
206
207
  const shouldUseTools = !options.disableTools && this.supportsTools();
207
- const tools = shouldUseTools ? await this.getAllTools() : {};
208
+ const tools = shouldUseTools
209
+ ? options.tools ||
210
+ (await this.getAllTools())
211
+ : {};
208
212
  logger.debug(`OpenRouter: Tools for streaming`, {
209
213
  shouldUseTools,
210
214
  toolCount: Object.keys(tools).length,