@juspay/neurolink 9.5.3 → 9.7.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 (423) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +29 -25
  3. package/dist/adapters/video/vertexVideoHandler.js +3 -3
  4. package/dist/agent/directTools.d.ts +5 -5
  5. package/dist/cli/commands/config.d.ts +9 -9
  6. package/dist/cli/commands/serve.d.ts +37 -0
  7. package/dist/cli/commands/serve.js +302 -229
  8. package/dist/cli/commands/setup-anthropic.d.ts +2 -2
  9. package/dist/cli/commands/setup-azure.d.ts +2 -2
  10. package/dist/cli/commands/setup-bedrock.d.ts +2 -2
  11. package/dist/cli/commands/setup-gcp.d.ts +2 -2
  12. package/dist/cli/commands/setup-google-ai.d.ts +2 -2
  13. package/dist/cli/commands/setup-huggingface.d.ts +2 -2
  14. package/dist/cli/commands/setup-mistral.d.ts +2 -2
  15. package/dist/cli/commands/setup-openai.d.ts +2 -2
  16. package/dist/cli/commands/setup.d.ts +2 -2
  17. package/dist/cli/factories/commandFactory.js +16 -2
  18. package/dist/cli/loop/optionsSchema.d.ts +2 -2
  19. package/dist/cli/loop/optionsSchema.js +4 -0
  20. package/dist/cli/loop/session.d.ts +4 -0
  21. package/dist/cli/loop/session.js +49 -4
  22. package/dist/cli/utils/interactiveSetup.d.ts +4 -4
  23. package/dist/config/conversationMemory.d.ts +2 -0
  24. package/dist/config/conversationMemory.js +5 -5
  25. package/dist/constants/contextWindows.d.ts +46 -0
  26. package/dist/constants/contextWindows.js +156 -0
  27. package/dist/context/budgetChecker.d.ts +18 -0
  28. package/dist/context/budgetChecker.js +71 -0
  29. package/dist/context/contextCompactor.d.ts +22 -0
  30. package/dist/context/contextCompactor.js +106 -0
  31. package/dist/context/effectiveHistory.d.ts +52 -0
  32. package/dist/context/effectiveHistory.js +105 -0
  33. package/dist/context/errorDetection.d.ts +14 -0
  34. package/dist/context/errorDetection.js +124 -0
  35. package/dist/context/fileSummarizationService.d.ts +54 -0
  36. package/dist/context/fileSummarizationService.js +255 -0
  37. package/dist/context/fileSummarizer.d.ts +56 -0
  38. package/dist/context/fileSummarizer.js +145 -0
  39. package/dist/context/fileTokenBudget.d.ts +53 -0
  40. package/dist/context/fileTokenBudget.js +127 -0
  41. package/dist/context/prompts/summarizationPrompt.d.ts +17 -0
  42. package/dist/context/prompts/summarizationPrompt.js +110 -0
  43. package/dist/context/stages/fileReadDeduplicator.d.ts +10 -0
  44. package/dist/context/stages/fileReadDeduplicator.js +66 -0
  45. package/dist/context/stages/slidingWindowTruncator.d.ts +11 -0
  46. package/dist/context/stages/slidingWindowTruncator.js +42 -0
  47. package/dist/context/stages/structuredSummarizer.d.ts +10 -0
  48. package/dist/context/stages/structuredSummarizer.js +49 -0
  49. package/dist/context/stages/toolOutputPruner.d.ts +10 -0
  50. package/dist/context/stages/toolOutputPruner.js +52 -0
  51. package/dist/context/summarizationEngine.d.ts +45 -0
  52. package/dist/context/summarizationEngine.js +110 -0
  53. package/dist/context/toolOutputLimits.d.ts +17 -0
  54. package/dist/context/toolOutputLimits.js +84 -0
  55. package/dist/context/toolPairRepair.d.ts +16 -0
  56. package/dist/context/toolPairRepair.js +66 -0
  57. package/dist/core/analytics.js +11 -4
  58. package/dist/core/baseProvider.d.ts +6 -0
  59. package/dist/core/baseProvider.js +83 -14
  60. package/dist/core/conversationMemoryManager.d.ts +14 -11
  61. package/dist/core/conversationMemoryManager.js +36 -68
  62. package/dist/core/dynamicModels.js +3 -2
  63. package/dist/core/modules/GenerationHandler.js +2 -0
  64. package/dist/core/modules/MessageBuilder.d.ts +1 -1
  65. package/dist/core/modules/MessageBuilder.js +2 -0
  66. package/dist/core/modules/TelemetryHandler.d.ts +2 -3
  67. package/dist/core/modules/TelemetryHandler.js +3 -3
  68. package/dist/core/modules/ToolsManager.d.ts +2 -2
  69. package/dist/core/redisConversationMemoryManager.d.ts +19 -14
  70. package/dist/core/redisConversationMemoryManager.js +94 -86
  71. package/dist/factories/providerFactory.d.ts +2 -2
  72. package/dist/files/fileReferenceRegistry.d.ts +276 -0
  73. package/dist/files/fileReferenceRegistry.js +1543 -0
  74. package/dist/files/fileTools.d.ts +423 -0
  75. package/dist/files/fileTools.js +449 -0
  76. package/dist/files/index.d.ts +14 -0
  77. package/dist/files/index.js +13 -0
  78. package/dist/files/streamingReader.d.ts +93 -0
  79. package/dist/files/streamingReader.js +321 -0
  80. package/dist/files/types.d.ts +23 -0
  81. package/dist/files/types.js +23 -0
  82. package/dist/image-gen/imageGenTools.d.ts +2 -2
  83. package/dist/image-gen/types.d.ts +12 -12
  84. package/dist/index.d.ts +4 -0
  85. package/dist/index.js +5 -0
  86. package/dist/lib/adapters/video/vertexVideoHandler.js +3 -3
  87. package/dist/lib/agent/directTools.d.ts +7 -7
  88. package/dist/lib/config/conversationMemory.d.ts +2 -0
  89. package/dist/lib/config/conversationMemory.js +5 -5
  90. package/dist/lib/constants/contextWindows.d.ts +46 -0
  91. package/dist/lib/constants/contextWindows.js +157 -0
  92. package/dist/lib/context/budgetChecker.d.ts +18 -0
  93. package/dist/lib/context/budgetChecker.js +72 -0
  94. package/dist/lib/context/contextCompactor.d.ts +22 -0
  95. package/dist/lib/context/contextCompactor.js +107 -0
  96. package/dist/lib/context/effectiveHistory.d.ts +52 -0
  97. package/dist/lib/context/effectiveHistory.js +106 -0
  98. package/dist/lib/context/errorDetection.d.ts +14 -0
  99. package/dist/lib/context/errorDetection.js +125 -0
  100. package/dist/lib/context/fileSummarizationService.d.ts +54 -0
  101. package/dist/lib/context/fileSummarizationService.js +256 -0
  102. package/dist/lib/context/fileSummarizer.d.ts +56 -0
  103. package/dist/lib/context/fileSummarizer.js +146 -0
  104. package/dist/lib/context/fileTokenBudget.d.ts +53 -0
  105. package/dist/lib/context/fileTokenBudget.js +128 -0
  106. package/dist/lib/context/prompts/summarizationPrompt.d.ts +17 -0
  107. package/dist/lib/context/prompts/summarizationPrompt.js +111 -0
  108. package/dist/lib/context/stages/fileReadDeduplicator.d.ts +10 -0
  109. package/dist/lib/context/stages/fileReadDeduplicator.js +67 -0
  110. package/dist/lib/context/stages/slidingWindowTruncator.d.ts +11 -0
  111. package/dist/lib/context/stages/slidingWindowTruncator.js +43 -0
  112. package/dist/lib/context/stages/structuredSummarizer.d.ts +10 -0
  113. package/dist/lib/context/stages/structuredSummarizer.js +50 -0
  114. package/dist/lib/context/stages/toolOutputPruner.d.ts +10 -0
  115. package/dist/lib/context/stages/toolOutputPruner.js +53 -0
  116. package/dist/lib/context/summarizationEngine.d.ts +45 -0
  117. package/dist/lib/context/summarizationEngine.js +111 -0
  118. package/dist/lib/context/toolOutputLimits.d.ts +17 -0
  119. package/dist/lib/context/toolOutputLimits.js +85 -0
  120. package/dist/lib/context/toolPairRepair.d.ts +16 -0
  121. package/dist/lib/context/toolPairRepair.js +67 -0
  122. package/dist/lib/core/analytics.js +11 -4
  123. package/dist/lib/core/baseProvider.d.ts +6 -0
  124. package/dist/lib/core/baseProvider.js +83 -14
  125. package/dist/lib/core/conversationMemoryManager.d.ts +14 -11
  126. package/dist/lib/core/conversationMemoryManager.js +36 -68
  127. package/dist/lib/core/dynamicModels.js +3 -2
  128. package/dist/lib/core/modules/GenerationHandler.js +2 -0
  129. package/dist/lib/core/modules/MessageBuilder.d.ts +1 -1
  130. package/dist/lib/core/modules/MessageBuilder.js +2 -0
  131. package/dist/lib/core/modules/TelemetryHandler.d.ts +2 -3
  132. package/dist/lib/core/modules/TelemetryHandler.js +3 -3
  133. package/dist/lib/core/modules/ToolsManager.d.ts +2 -2
  134. package/dist/lib/core/redisConversationMemoryManager.d.ts +19 -14
  135. package/dist/lib/core/redisConversationMemoryManager.js +94 -86
  136. package/dist/lib/factories/providerFactory.d.ts +2 -2
  137. package/dist/lib/files/fileReferenceRegistry.d.ts +276 -0
  138. package/dist/lib/files/fileReferenceRegistry.js +1544 -0
  139. package/dist/lib/files/fileTools.d.ts +423 -0
  140. package/dist/lib/files/fileTools.js +450 -0
  141. package/dist/lib/files/index.d.ts +14 -0
  142. package/dist/lib/files/index.js +14 -0
  143. package/dist/lib/files/streamingReader.d.ts +93 -0
  144. package/dist/lib/files/streamingReader.js +322 -0
  145. package/dist/lib/files/types.d.ts +23 -0
  146. package/dist/lib/files/types.js +24 -0
  147. package/dist/lib/image-gen/imageGenTools.d.ts +2 -2
  148. package/dist/lib/image-gen/types.d.ts +12 -12
  149. package/dist/lib/index.d.ts +4 -0
  150. package/dist/lib/index.js +5 -0
  151. package/dist/lib/mcp/httpRetryHandler.js +6 -2
  152. package/dist/lib/memory/mem0Initializer.d.ts +2 -2
  153. package/dist/lib/neurolink.d.ts +66 -2
  154. package/dist/lib/neurolink.js +777 -315
  155. package/dist/lib/processors/archive/ArchiveProcessor.d.ts +327 -0
  156. package/dist/lib/processors/archive/ArchiveProcessor.js +1309 -0
  157. package/dist/lib/processors/archive/index.d.ts +33 -0
  158. package/dist/lib/processors/archive/index.js +43 -0
  159. package/dist/lib/processors/base/BaseFileProcessor.js +2 -1
  160. package/dist/lib/processors/base/types.d.ts +70 -64
  161. package/dist/lib/processors/base/types.js +6 -0
  162. package/dist/lib/processors/cli/fileProcessorCli.d.ts +8 -8
  163. package/dist/lib/processors/cli/fileProcessorCli.js +5 -5
  164. package/dist/lib/processors/config/mimeTypes.js +25 -0
  165. package/dist/lib/processors/config/sizeLimits.d.ts +52 -40
  166. package/dist/lib/processors/config/sizeLimits.js +56 -44
  167. package/dist/lib/processors/document/ExcelProcessor.d.ts +14 -0
  168. package/dist/lib/processors/document/ExcelProcessor.js +72 -1
  169. package/dist/lib/processors/document/PptxProcessor.d.ts +63 -0
  170. package/dist/lib/processors/document/PptxProcessor.js +158 -0
  171. package/dist/lib/processors/document/index.d.ts +1 -0
  172. package/dist/lib/processors/document/index.js +6 -0
  173. package/dist/lib/processors/errors/FileErrorCode.d.ts +2 -2
  174. package/dist/lib/processors/errors/errorHelpers.d.ts +2 -2
  175. package/dist/lib/processors/errors/errorHelpers.js +12 -4
  176. package/dist/lib/processors/errors/errorSerializer.d.ts +4 -4
  177. package/dist/lib/processors/index.d.ts +8 -2
  178. package/dist/lib/processors/index.js +5 -2
  179. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +8 -8
  180. package/dist/lib/processors/integration/FileProcessorIntegration.js +7 -7
  181. package/dist/lib/processors/media/AudioProcessor.d.ts +328 -0
  182. package/dist/lib/processors/media/AudioProcessor.js +708 -0
  183. package/dist/lib/processors/media/VideoProcessor.d.ts +350 -0
  184. package/dist/lib/processors/media/VideoProcessor.js +992 -0
  185. package/dist/lib/processors/media/index.d.ts +27 -0
  186. package/dist/lib/processors/media/index.js +37 -0
  187. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +19 -5
  188. package/dist/lib/processors/registry/ProcessorRegistry.js +103 -8
  189. package/dist/lib/processors/registry/index.d.ts +1 -1
  190. package/dist/lib/processors/registry/index.js +1 -1
  191. package/dist/lib/processors/registry/types.d.ts +2 -2
  192. package/dist/lib/providers/amazonBedrock.js +2 -1
  193. package/dist/lib/providers/anthropic.js +2 -2
  194. package/dist/lib/providers/anthropicBaseProvider.js +10 -4
  195. package/dist/lib/providers/azureOpenai.js +14 -25
  196. package/dist/lib/providers/googleAiStudio.js +136 -457
  197. package/dist/lib/providers/googleNativeGemini3.d.ts +119 -0
  198. package/dist/lib/providers/googleNativeGemini3.js +264 -0
  199. package/dist/lib/providers/googleVertex.d.ts +15 -1
  200. package/dist/lib/providers/googleVertex.js +341 -775
  201. package/dist/lib/providers/huggingFace.js +20 -5
  202. package/dist/lib/providers/litellm.js +6 -4
  203. package/dist/lib/providers/mistral.js +3 -2
  204. package/dist/lib/providers/openAI.js +2 -2
  205. package/dist/lib/providers/openRouter.js +8 -7
  206. package/dist/lib/providers/openaiCompatible.js +10 -4
  207. package/dist/lib/providers/sagemaker/detection.d.ts +6 -6
  208. package/dist/lib/providers/sagemaker/diagnostics.d.ts +4 -4
  209. package/dist/lib/providers/sagemaker/parsers.d.ts +4 -4
  210. package/dist/lib/rag/chunkers/RecursiveChunker.js +2 -2
  211. package/dist/lib/rag/document/loaders.d.ts +6 -71
  212. package/dist/lib/rag/document/loaders.js +5 -5
  213. package/dist/lib/rag/graphRag/graphRAG.js +26 -9
  214. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
  215. package/dist/lib/rag/metadata/metadataExtractor.js +6 -3
  216. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +8 -126
  217. package/dist/lib/rag/pipeline/RAGPipeline.js +11 -11
  218. package/dist/lib/rag/pipeline/contextAssembly.d.ts +3 -42
  219. package/dist/lib/rag/pipeline/contextAssembly.js +6 -3
  220. package/dist/lib/rag/reranker/RerankerFactory.d.ts +5 -60
  221. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +3 -33
  222. package/dist/lib/rag/resilience/RetryHandler.d.ts +2 -21
  223. package/dist/lib/rag/resilience/RetryHandler.js +6 -2
  224. package/dist/lib/rag/retrieval/hybridSearch.d.ts +3 -41
  225. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +2 -13
  226. package/dist/lib/rag/retrieval/vectorQueryTool.js +4 -3
  227. package/dist/lib/rag/types.d.ts +3 -3
  228. package/dist/lib/sdk/toolRegistration.d.ts +2 -2
  229. package/dist/lib/server/middleware/cache.d.ts +2 -2
  230. package/dist/lib/server/middleware/rateLimit.d.ts +2 -2
  231. package/dist/lib/server/routes/mcpRoutes.js +277 -249
  232. package/dist/lib/server/routes/memoryRoutes.js +287 -281
  233. package/dist/lib/server/utils/validation.d.ts +10 -10
  234. package/dist/lib/services/server/ai/observability/instrumentation.d.ts +24 -2
  235. package/dist/lib/services/server/ai/observability/instrumentation.js +12 -1
  236. package/dist/lib/session/globalSessionState.d.ts +2 -2
  237. package/dist/lib/telemetry/telemetryService.d.ts +2 -2
  238. package/dist/lib/types/common.d.ts +39 -0
  239. package/dist/lib/types/contextTypes.d.ts +255 -0
  240. package/dist/lib/types/contextTypes.js +0 -2
  241. package/dist/lib/types/conversation.d.ts +62 -0
  242. package/dist/lib/types/conversationMemoryInterface.d.ts +27 -0
  243. package/dist/lib/types/conversationMemoryInterface.js +7 -0
  244. package/dist/lib/types/fileReferenceTypes.d.ts +222 -0
  245. package/dist/lib/types/fileReferenceTypes.js +9 -0
  246. package/dist/lib/types/fileTypes.d.ts +26 -3
  247. package/dist/lib/types/generateTypes.d.ts +50 -1
  248. package/dist/lib/types/index.d.ts +4 -5
  249. package/dist/lib/types/index.js +8 -10
  250. package/dist/lib/types/modelTypes.d.ts +2 -2
  251. package/dist/lib/types/processorTypes.d.ts +597 -0
  252. package/dist/lib/types/processorTypes.js +91 -0
  253. package/dist/lib/types/ragTypes.d.ts +489 -0
  254. package/dist/lib/types/ragTypes.js +8 -0
  255. package/dist/lib/types/sdkTypes.d.ts +17 -18
  256. package/dist/lib/types/streamTypes.d.ts +24 -1
  257. package/dist/lib/utils/async/retry.d.ts +2 -2
  258. package/dist/lib/utils/async/withTimeout.js +3 -1
  259. package/dist/lib/utils/conversationMemory.d.ts +12 -6
  260. package/dist/lib/utils/conversationMemory.js +91 -36
  261. package/dist/lib/utils/errorHandling.d.ts +5 -0
  262. package/dist/lib/utils/errorHandling.js +19 -0
  263. package/dist/lib/utils/fileDetector.d.ts +62 -0
  264. package/dist/lib/utils/fileDetector.js +1014 -14
  265. package/dist/lib/utils/json/safeParse.d.ts +2 -2
  266. package/dist/lib/utils/messageBuilder.js +806 -153
  267. package/dist/lib/utils/modelChoices.d.ts +2 -2
  268. package/dist/lib/utils/multimodalOptionsBuilder.d.ts +2 -1
  269. package/dist/lib/utils/multimodalOptionsBuilder.js +1 -0
  270. package/dist/lib/utils/pricing.d.ts +12 -0
  271. package/dist/lib/utils/pricing.js +134 -0
  272. package/dist/lib/utils/rateLimiter.d.ts +2 -2
  273. package/dist/lib/utils/redis.d.ts +17 -0
  274. package/dist/lib/utils/redis.js +105 -0
  275. package/dist/lib/utils/sanitizers/filename.d.ts +4 -4
  276. package/dist/lib/utils/sanitizers/svg.d.ts +2 -2
  277. package/dist/lib/utils/thinkingConfig.d.ts +6 -6
  278. package/dist/lib/utils/timeout.d.ts +10 -0
  279. package/dist/lib/utils/timeout.js +15 -0
  280. package/dist/lib/utils/tokenEstimation.d.ts +68 -0
  281. package/dist/lib/utils/tokenEstimation.js +113 -0
  282. package/dist/lib/utils/tokenUtils.d.ts +4 -4
  283. package/dist/lib/utils/ttsProcessor.d.ts +2 -2
  284. package/dist/lib/workflow/config.d.ts +150 -150
  285. package/dist/mcp/httpRetryHandler.js +6 -2
  286. package/dist/memory/mem0Initializer.d.ts +2 -2
  287. package/dist/neurolink.d.ts +66 -2
  288. package/dist/neurolink.js +777 -315
  289. package/dist/processors/archive/ArchiveProcessor.d.ts +327 -0
  290. package/dist/processors/archive/ArchiveProcessor.js +1308 -0
  291. package/dist/processors/archive/index.d.ts +33 -0
  292. package/dist/processors/archive/index.js +42 -0
  293. package/dist/processors/base/BaseFileProcessor.js +2 -1
  294. package/dist/processors/base/types.d.ts +70 -64
  295. package/dist/processors/base/types.js +6 -0
  296. package/dist/processors/cli/fileProcessorCli.d.ts +8 -8
  297. package/dist/processors/cli/fileProcessorCli.js +5 -5
  298. package/dist/processors/config/mimeTypes.js +25 -0
  299. package/dist/processors/config/sizeLimits.d.ts +52 -40
  300. package/dist/processors/config/sizeLimits.js +56 -44
  301. package/dist/processors/document/ExcelProcessor.d.ts +14 -0
  302. package/dist/processors/document/ExcelProcessor.js +72 -1
  303. package/dist/processors/document/PptxProcessor.d.ts +63 -0
  304. package/dist/processors/document/PptxProcessor.js +157 -0
  305. package/dist/processors/document/index.d.ts +1 -0
  306. package/dist/processors/document/index.js +6 -0
  307. package/dist/processors/errors/FileErrorCode.d.ts +2 -2
  308. package/dist/processors/errors/errorHelpers.d.ts +2 -2
  309. package/dist/processors/errors/errorHelpers.js +12 -4
  310. package/dist/processors/errors/errorSerializer.d.ts +4 -4
  311. package/dist/processors/index.d.ts +8 -2
  312. package/dist/processors/index.js +5 -2
  313. package/dist/processors/integration/FileProcessorIntegration.d.ts +8 -8
  314. package/dist/processors/integration/FileProcessorIntegration.js +7 -7
  315. package/dist/processors/media/AudioProcessor.d.ts +328 -0
  316. package/dist/processors/media/AudioProcessor.js +707 -0
  317. package/dist/processors/media/VideoProcessor.d.ts +350 -0
  318. package/dist/processors/media/VideoProcessor.js +991 -0
  319. package/dist/processors/media/ffprobe-static.d.ts +4 -0
  320. package/dist/processors/media/index.d.ts +27 -0
  321. package/dist/processors/media/index.js +36 -0
  322. package/dist/processors/registry/ProcessorRegistry.d.ts +19 -5
  323. package/dist/processors/registry/ProcessorRegistry.js +103 -8
  324. package/dist/processors/registry/index.d.ts +1 -1
  325. package/dist/processors/registry/index.js +1 -1
  326. package/dist/processors/registry/types.d.ts +2 -2
  327. package/dist/providers/amazonBedrock.js +2 -1
  328. package/dist/providers/anthropic.js +2 -2
  329. package/dist/providers/anthropicBaseProvider.js +10 -4
  330. package/dist/providers/azureOpenai.js +14 -25
  331. package/dist/providers/googleAiStudio.js +136 -457
  332. package/dist/providers/googleNativeGemini3.d.ts +119 -0
  333. package/dist/providers/googleNativeGemini3.js +263 -0
  334. package/dist/providers/googleVertex.d.ts +15 -1
  335. package/dist/providers/googleVertex.js +341 -775
  336. package/dist/providers/huggingFace.js +20 -5
  337. package/dist/providers/litellm.js +6 -4
  338. package/dist/providers/mistral.js +3 -2
  339. package/dist/providers/openAI.js +2 -2
  340. package/dist/providers/openRouter.js +8 -7
  341. package/dist/providers/openaiCompatible.js +10 -4
  342. package/dist/providers/sagemaker/detection.d.ts +6 -6
  343. package/dist/providers/sagemaker/diagnostics.d.ts +4 -4
  344. package/dist/providers/sagemaker/parsers.d.ts +4 -4
  345. package/dist/rag/chunkers/RecursiveChunker.js +2 -2
  346. package/dist/rag/document/loaders.d.ts +6 -71
  347. package/dist/rag/document/loaders.js +5 -5
  348. package/dist/rag/graphRag/graphRAG.js +26 -9
  349. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
  350. package/dist/rag/metadata/metadataExtractor.js +6 -3
  351. package/dist/rag/pipeline/RAGPipeline.d.ts +8 -126
  352. package/dist/rag/pipeline/RAGPipeline.js +11 -11
  353. package/dist/rag/pipeline/contextAssembly.d.ts +3 -42
  354. package/dist/rag/pipeline/contextAssembly.js +6 -3
  355. package/dist/rag/reranker/RerankerFactory.d.ts +5 -60
  356. package/dist/rag/resilience/CircuitBreaker.d.ts +3 -33
  357. package/dist/rag/resilience/RetryHandler.d.ts +2 -21
  358. package/dist/rag/resilience/RetryHandler.js +6 -2
  359. package/dist/rag/retrieval/hybridSearch.d.ts +3 -41
  360. package/dist/rag/retrieval/vectorQueryTool.d.ts +2 -13
  361. package/dist/rag/retrieval/vectorQueryTool.js +4 -3
  362. package/dist/rag/types.d.ts +3 -3
  363. package/dist/sdk/toolRegistration.d.ts +2 -2
  364. package/dist/server/middleware/cache.d.ts +2 -2
  365. package/dist/server/middleware/rateLimit.d.ts +2 -2
  366. package/dist/server/routes/mcpRoutes.js +277 -249
  367. package/dist/server/routes/memoryRoutes.js +287 -281
  368. package/dist/server/utils/validation.d.ts +4 -4
  369. package/dist/services/server/ai/observability/instrumentation.d.ts +24 -2
  370. package/dist/services/server/ai/observability/instrumentation.js +12 -1
  371. package/dist/session/globalSessionState.d.ts +2 -2
  372. package/dist/telemetry/telemetryService.d.ts +2 -2
  373. package/dist/types/common.d.ts +39 -0
  374. package/dist/types/contextTypes.d.ts +255 -0
  375. package/dist/types/contextTypes.js +0 -2
  376. package/dist/types/conversation.d.ts +62 -0
  377. package/dist/types/conversationMemoryInterface.d.ts +27 -0
  378. package/dist/types/conversationMemoryInterface.js +6 -0
  379. package/dist/types/fileReferenceTypes.d.ts +222 -0
  380. package/dist/types/fileReferenceTypes.js +8 -0
  381. package/dist/types/fileTypes.d.ts +26 -3
  382. package/dist/types/generateTypes.d.ts +50 -1
  383. package/dist/types/index.d.ts +4 -5
  384. package/dist/types/index.js +8 -10
  385. package/dist/types/processorTypes.d.ts +597 -0
  386. package/dist/types/processorTypes.js +90 -0
  387. package/dist/types/ragTypes.d.ts +489 -0
  388. package/dist/types/ragTypes.js +7 -0
  389. package/dist/types/sdkTypes.d.ts +17 -18
  390. package/dist/types/streamTypes.d.ts +24 -1
  391. package/dist/utils/async/retry.d.ts +2 -2
  392. package/dist/utils/async/withTimeout.js +3 -1
  393. package/dist/utils/conversationMemory.d.ts +12 -6
  394. package/dist/utils/conversationMemory.js +91 -36
  395. package/dist/utils/errorHandling.d.ts +5 -0
  396. package/dist/utils/errorHandling.js +19 -0
  397. package/dist/utils/fileDetector.d.ts +62 -0
  398. package/dist/utils/fileDetector.js +1014 -14
  399. package/dist/utils/json/safeParse.d.ts +2 -2
  400. package/dist/utils/messageBuilder.js +806 -153
  401. package/dist/utils/modelChoices.d.ts +2 -2
  402. package/dist/utils/multimodalOptionsBuilder.d.ts +2 -1
  403. package/dist/utils/multimodalOptionsBuilder.js +1 -0
  404. package/dist/utils/pricing.d.ts +12 -0
  405. package/dist/utils/pricing.js +133 -0
  406. package/dist/utils/rateLimiter.d.ts +2 -2
  407. package/dist/utils/redis.d.ts +17 -0
  408. package/dist/utils/redis.js +105 -0
  409. package/dist/utils/sanitizers/filename.d.ts +4 -4
  410. package/dist/utils/sanitizers/svg.d.ts +2 -2
  411. package/dist/utils/thinkingConfig.d.ts +6 -6
  412. package/dist/utils/timeout.d.ts +10 -0
  413. package/dist/utils/timeout.js +15 -0
  414. package/dist/utils/tokenEstimation.d.ts +68 -0
  415. package/dist/utils/tokenEstimation.js +112 -0
  416. package/dist/utils/tokenUtils.d.ts +4 -4
  417. package/dist/utils/ttsProcessor.d.ts +2 -2
  418. package/dist/workflow/config.d.ts +104 -104
  419. package/package.json +18 -6
  420. package/dist/lib/utils/conversationMemoryUtils.d.ts +0 -25
  421. package/dist/lib/utils/conversationMemoryUtils.js +0 -138
  422. package/dist/utils/conversationMemoryUtils.d.ts +0 -25
  423. package/dist/utils/conversationMemoryUtils.js +0 -137
@@ -3,7 +3,7 @@ import { streamText, } from "ai";
3
3
  import { AIProviderName } from "../constants/enums.js";
4
4
  import { BaseProvider } from "../core/baseProvider.js";
5
5
  import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
6
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
7
7
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
8
8
  import { validateApiKey, createHuggingFaceConfig, getProviderModel, } from "../utils/providerConfig.js";
9
9
  import { createProxyFetch } from "../proxy/proxyFetch.js";
@@ -112,20 +112,35 @@ export class HuggingFaceProvider extends BaseProvider {
112
112
  const timeout = this.getTimeout(options);
113
113
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
114
114
  try {
115
+ // Get tools - options.tools is pre-merged by BaseProvider.stream()
116
+ const shouldUseTools = !options.disableTools && this.supportsTools();
117
+ const allTools = shouldUseTools
118
+ ? options.tools || (await this.getAllTools())
119
+ : {};
115
120
  // Enhanced tool handling for HuggingFace models
116
121
  const streamOptions = this.prepareStreamOptions(options, analysisSchema);
117
122
  // Build message array from options with multimodal support
118
123
  // Using protected helper from BaseProvider to eliminate code duplication
119
- const messages = await this.buildMessagesForStream(options);
124
+ // Pass the enhanced system prompt (with tool-calling instructions) so it
125
+ // actually reaches the model instead of being silently discarded.
126
+ const messagesOptions = streamOptions.system
127
+ ? { ...options, systemPrompt: streamOptions.system }
128
+ : options;
129
+ const messages = await this.buildMessagesForStream(messagesOptions);
120
130
  const result = await streamText({
121
131
  model: this.model,
122
132
  messages: messages,
123
133
  temperature: options.temperature,
124
134
  maxTokens: options.maxTokens, // No default limit - unlimited unless specified
125
135
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
126
- tools: streamOptions.tools, // Tools format conversion handled by prepareStreamOptions
127
- toolChoice: streamOptions.toolChoice, // Tool choice handled by prepareStreamOptions
128
- abortSignal: timeoutController?.controller.signal,
136
+ tools: (shouldUseTools
137
+ ? streamOptions.tools || allTools
138
+ : {}),
139
+ toolChoice: (shouldUseTools
140
+ ? streamOptions.toolChoice || "auto"
141
+ : "none"),
142
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
143
+ experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
129
144
  onStepFinish: ({ toolCalls, toolResults }) => {
130
145
  this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
131
146
  logger.warn("[HuggingFaceProvider] Failed to store tool executions", {
@@ -4,9 +4,10 @@ import { BaseProvider } from "../core/baseProvider.js";
4
4
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
5
5
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
6
6
  import { createProxyFetch } from "../proxy/proxyFetch.js";
7
+ import { isAbortError } from "../utils/errorHandling.js";
7
8
  import { logger } from "../utils/logger.js";
8
9
  import { getProviderModel } from "../utils/providerConfig.js";
9
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
10
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
10
11
  // Configuration helpers
11
12
  const getLiteLLMConfig = () => {
12
13
  return {
@@ -157,7 +158,8 @@ export class LiteLLMProvider extends BaseProvider {
157
158
  toolChoice: "auto",
158
159
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
159
160
  }),
160
- abortSignal: timeoutController?.controller.signal,
161
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
162
+ experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
161
163
  onError: (event) => {
162
164
  const error = event.error;
163
165
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -180,7 +182,7 @@ export class LiteLLMProvider extends BaseProvider {
180
182
  onStepFinish: ({ toolCalls, toolResults }) => {
181
183
  logger.info("Tool execution completed", { toolResults, toolCalls });
182
184
  this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
183
- logger.warn("LiteLLMProvider] Failed to store tool executions", {
185
+ logger.warn("[LiteLLMProvider] Failed to store tool executions", {
184
186
  provider: this.providerName,
185
187
  error: error instanceof Error ? error.message : String(error),
186
188
  });
@@ -361,7 +363,7 @@ export class LiteLLMProvider extends BaseProvider {
361
363
  }
362
364
  catch (error) {
363
365
  clearTimeout(timeoutId);
364
- if (error instanceof Error && error.name === "AbortError") {
366
+ if (isAbortError(error)) {
365
367
  throw new Error("Request timed out after 5 seconds");
366
368
  }
367
369
  throw error;
@@ -6,7 +6,7 @@ import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
6
6
  import { createProxyFetch } from "../proxy/proxyFetch.js";
7
7
  import { logger } from "../utils/logger.js";
8
8
  import { createMistralConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
9
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
9
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
10
10
  // Configuration helpers - now using consolidated utility
11
11
  const getMistralApiKey = () => {
12
12
  return validateApiKey(createMistralConfig());
@@ -63,7 +63,8 @@ export class MistralProvider extends BaseProvider {
63
63
  tools,
64
64
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
65
65
  toolChoice: shouldUseTools ? "auto" : "none",
66
- abortSignal: timeoutController?.controller.signal,
66
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
67
+ experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
67
68
  onStepFinish: ({ toolCalls, toolResults }) => {
68
69
  this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
69
70
  logger.warn("[MistralProvider] Failed to store tool executions", {
@@ -9,7 +9,7 @@ import { AuthenticationError, InvalidModelError, NetworkError, ProviderError, Ra
9
9
  import { logger } from "../utils/logger.js";
10
10
  import { createOpenAIConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
11
11
  import { isZodSchema } from "../utils/schemaConversion.js";
12
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
12
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
13
13
  // Configuration helpers - now using consolidated utility
14
14
  const getOpenAIApiKey = () => {
15
15
  return validateApiKey(createOpenAIConfig());
@@ -282,7 +282,7 @@ export class OpenAIProvider extends BaseProvider {
282
282
  tools,
283
283
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
284
284
  toolChoice: shouldUseTools && Object.keys(tools).length > 0 ? "auto" : "none",
285
- abortSignal: timeoutController?.controller.signal,
285
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
286
286
  experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
287
287
  onStepFinish: ({ toolCalls, toolResults }) => {
288
288
  logger.info("Tool execution completed", { toolResults, toolCalls });
@@ -1,13 +1,14 @@
1
1
  import { createOpenRouter } from "@openrouter/ai-sdk-provider";
2
- import { Output, streamText } 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
5
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
6
6
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
7
7
  import { createProxyFetch } from "../proxy/proxyFetch.js";
8
+ import { isAbortError } from "../utils/errorHandling.js";
8
9
  import { logger } from "../utils/logger.js";
9
10
  import { getProviderModel } from "../utils/providerConfig.js";
10
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
11
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
11
12
  // Constants
12
13
  const MODELS_DISCOVERY_TIMEOUT_MS = 5000; // 5 seconds for model discovery
13
14
  // Configuration helpers
@@ -206,8 +207,7 @@ export class OpenRouterProvider extends BaseProvider {
206
207
  // BaseProvider.stream() pre-merges base tools + external tools into options.tools
207
208
  const shouldUseTools = !options.disableTools && this.supportsTools();
208
209
  const tools = shouldUseTools
209
- ? options.tools ||
210
- (await this.getAllTools())
210
+ ? options.tools || (await this.getAllTools())
211
211
  : {};
212
212
  logger.debug(`OpenRouter: Tools for streaming`, {
213
213
  shouldUseTools,
@@ -229,7 +229,8 @@ export class OpenRouterProvider extends BaseProvider {
229
229
  toolChoice: "auto",
230
230
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
231
231
  }),
232
- abortSignal: timeoutController?.controller.signal,
232
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
233
+ experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
233
234
  onError: (event) => {
234
235
  const error = event.error;
235
236
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -276,7 +277,7 @@ export class OpenRouterProvider extends BaseProvider {
276
277
  }
277
278
  }
278
279
  const result = await streamText(streamOptions);
279
- timeoutController?.cleanup();
280
+ result.text.finally(() => timeoutController?.cleanup());
280
281
  // Transform stream to content object stream using fullStream (handles both text and tool calls)
281
282
  const transformedStream = (async function* () {
282
283
  // Try fullStream first (handles both text and tool calls), fallback to textStream
@@ -439,7 +440,7 @@ export class OpenRouterProvider extends BaseProvider {
439
440
  }
440
441
  catch (error) {
441
442
  clearTimeout(timeoutId);
442
- if (error instanceof Error && error.name === "AbortError") {
443
+ if (isAbortError(error)) {
443
444
  throw new Error(`Request timed out after ${MODELS_DISCOVERY_TIMEOUT_MS / 1000} seconds`);
444
445
  }
445
446
  throw error;
@@ -3,7 +3,7 @@ import { streamText } from "ai";
3
3
  import { AIProviderName } from "../constants/enums.js";
4
4
  import { BaseProvider } from "../core/baseProvider.js";
5
5
  import { logger } from "../utils/logger.js";
6
- import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
6
+ import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
7
7
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
8
8
  import { createProxyFetch } from "../proxy/proxyFetch.js";
9
9
  import { DEFAULT_MAX_STEPS } from "../core/constants.js";
@@ -159,6 +159,11 @@ export class OpenAICompatibleProvider extends BaseProvider {
159
159
  const timeout = this.getTimeout(options);
160
160
  const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
161
161
  try {
162
+ // Get tools - options.tools is pre-merged by BaseProvider.stream()
163
+ const shouldUseTools = !options.disableTools && this.supportsTools();
164
+ const tools = shouldUseTools
165
+ ? options.tools || (await this.getAllTools())
166
+ : {};
162
167
  // Build message array from options with multimodal support
163
168
  // Using protected helper from BaseProvider to eliminate code duplication
164
169
  const messages = await this.buildMessagesForStream(options);
@@ -173,9 +178,10 @@ export class OpenAICompatibleProvider extends BaseProvider {
173
178
  ? { temperature: options.temperature }
174
179
  : {}),
175
180
  maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
176
- tools: options.tools,
177
- toolChoice: "auto",
178
- abortSignal: timeoutController?.controller.signal,
181
+ tools,
182
+ toolChoice: shouldUseTools ? "auto" : "none",
183
+ abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
184
+ experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
179
185
  onStepFinish: ({ toolCalls, toolResults }) => {
180
186
  this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
181
187
  logger.warn("[OpenAiCompatibleProvider] Failed to store tool executions", {
@@ -8,7 +8,7 @@ import type { SageMakerConfig, SageMakerModelConfig } from "../../types/provider
8
8
  /**
9
9
  * Streaming capability information for an endpoint
10
10
  */
11
- export interface StreamingCapability {
11
+ export type StreamingCapability = {
12
12
  /** Whether streaming is supported */
13
13
  supported: boolean;
14
14
  /** Detected streaming protocol */
@@ -28,11 +28,11 @@ export interface StreamingCapability {
28
28
  version?: string;
29
29
  tags?: string[];
30
30
  };
31
- }
31
+ };
32
32
  /**
33
33
  * Model type detection result
34
34
  */
35
- export interface ModelDetectionResult {
35
+ export type ModelDetectionResult = {
36
36
  /** Primary model type */
37
37
  type: StreamingCapability["modelType"];
38
38
  /** Detection confidence (0-1) */
@@ -41,11 +41,11 @@ export interface ModelDetectionResult {
41
41
  evidence: string[];
42
42
  /** Suggested configuration */
43
43
  suggestedConfig?: Partial<SageMakerModelConfig>;
44
- }
44
+ };
45
45
  /**
46
46
  * Endpoint health and metadata information
47
47
  */
48
- export interface EndpointHealth {
48
+ export type EndpointHealth = {
49
49
  /** Health status */
50
50
  status: "healthy" | "unhealthy" | "unknown";
51
51
  /** Response time in milliseconds */
@@ -59,7 +59,7 @@ export interface EndpointHealth {
59
59
  framework?: string;
60
60
  architecture?: string;
61
61
  };
62
- }
62
+ };
63
63
  /**
64
64
  * SageMaker Model Detection and Capability Discovery Service
65
65
  */
@@ -6,18 +6,18 @@
6
6
  /**
7
7
  * Simple diagnostic result interface
8
8
  */
9
- export interface DiagnosticResult {
9
+ export type DiagnosticResult = {
10
10
  name: string;
11
11
  category: "configuration" | "connectivity" | "streaming";
12
12
  status: "pass" | "fail" | "warning";
13
13
  message: string;
14
14
  details?: string;
15
15
  recommendation?: string;
16
- }
16
+ };
17
17
  /**
18
18
  * Diagnostic report interface
19
19
  */
20
- export interface DiagnosticReport {
20
+ export type DiagnosticReport = {
21
21
  overallStatus: "healthy" | "issues" | "critical";
22
22
  results: DiagnosticResult[];
23
23
  summary: {
@@ -26,7 +26,7 @@ export interface DiagnosticReport {
26
26
  failed: number;
27
27
  warnings: number;
28
28
  };
29
- }
29
+ };
30
30
  /**
31
31
  * Run quick diagnostics for SageMaker configuration
32
32
  */
@@ -10,12 +10,12 @@ import { type StructuredOutputParser } from "./structured-parser.js";
10
10
  * Shared bracket counting state and utilities
11
11
  * Used by both validateJSONCompleteness and StructuredOutputParser
12
12
  */
13
- export interface BracketCountingState {
13
+ export type BracketCountingState = {
14
14
  braceCount: number;
15
15
  bracketCount: number;
16
16
  inString: boolean;
17
17
  escapeNext: boolean;
18
- }
18
+ };
19
19
  /**
20
20
  * Process a single character for bracket counting logic
21
21
  * Shared utility to avoid code duplication between parsers
@@ -44,7 +44,7 @@ export declare function parseToolCallArguments(args: string): {
44
44
  /**
45
45
  * Base interface for streaming response parsers
46
46
  */
47
- export interface StreamingParser {
47
+ export type StreamingParser = {
48
48
  /** Parse a chunk of streaming data */
49
49
  parse(chunk: Uint8Array): SageMakerStreamChunk[];
50
50
  /** Check if a chunk indicates completion */
@@ -55,7 +55,7 @@ export interface StreamingParser {
55
55
  getName(): string;
56
56
  /** Reset parser state for new stream */
57
57
  reset(): void;
58
- }
58
+ };
59
59
  /**
60
60
  * Abstract base parser with common functionality
61
61
  */
@@ -127,8 +127,8 @@ export class RecursiveChunker extends BaseChunker {
127
127
  for (let i = 0; i < chunks.length; i++) {
128
128
  let chunk = chunks[i] ?? "";
129
129
  // Add overlap from previous chunk
130
- if (i > 0 && chunks[i - 1]) {
131
- const prevChunk = chunks[i - 1];
130
+ const prevChunk = i > 0 ? chunks[i - 1] : undefined;
131
+ if (prevChunk) {
132
132
  const overlapText = prevChunk.slice(-Math.min(overlap, prevChunk.length));
133
133
  chunk = overlapText + chunk;
134
134
  }
@@ -24,77 +24,12 @@
24
24
  * ```
25
25
  */
26
26
  import { MDocument } from "./MDocument.js";
27
- import type { DocumentType } from "../types.js";
28
- /**
29
- * Document loader options
30
- */
31
- export interface LoaderOptions {
32
- /** Custom metadata to add to document */
33
- metadata?: Record<string, unknown>;
34
- /** Encoding for text files */
35
- encoding?: BufferEncoding;
36
- /** Document type override */
37
- type?: DocumentType;
38
- }
39
- /**
40
- * Web loader options
41
- */
42
- export interface WebLoaderOptions extends LoaderOptions {
43
- /** Request timeout in milliseconds */
44
- timeout?: number;
45
- /** Custom headers for request */
46
- headers?: Record<string, string>;
47
- /** Extract only main content (remove navigation, ads, etc.) */
48
- extractMainContent?: boolean;
49
- /** Selector for main content (CSS selector) */
50
- contentSelector?: string;
51
- /** User agent string */
52
- userAgent?: string;
53
- }
54
- /**
55
- * PDF loader options
56
- */
57
- export interface PDFLoaderOptions extends LoaderOptions {
58
- /** Page range to extract (e.g., "1-5" or "1,3,5") */
59
- pageRange?: string;
60
- /** Extract images as base64 */
61
- extractImages?: boolean;
62
- /** OCR for scanned documents */
63
- enableOCR?: boolean;
64
- /** Preserve layout formatting */
65
- preserveLayout?: boolean;
66
- }
67
- /**
68
- * CSV loader options
69
- */
70
- export interface CSVLoaderOptions extends LoaderOptions {
71
- /** Delimiter character */
72
- delimiter?: string;
73
- /** Whether first row is header */
74
- hasHeader?: boolean;
75
- /** Column names (if no header) */
76
- columns?: string[];
77
- /** Output format */
78
- outputFormat?: "text" | "json" | "markdown";
79
- }
80
- /**
81
- * Abstract document loader interface
82
- */
83
- export interface DocumentLoader {
84
- /**
85
- * Load document from source
86
- * @param source - File path, URL, or content
87
- * @param options - Loader options
88
- * @returns Promise resolving to MDocument
89
- */
90
- load(source: string, options?: LoaderOptions): Promise<MDocument>;
91
- /**
92
- * Check if loader can handle the source
93
- * @param source - File path, URL, or content
94
- * @returns True if loader can handle the source
95
- */
96
- canHandle(source: string): boolean;
97
- }
27
+ import type { LoaderOptions, WebLoaderOptions, PDFLoaderOptions, CSVLoaderOptions, DocumentLoader } from "../../types/ragTypes.js";
28
+ export type { LoaderOptions } from "../../types/ragTypes.js";
29
+ export type { WebLoaderOptions } from "../../types/ragTypes.js";
30
+ export type { PDFLoaderOptions } from "../../types/ragTypes.js";
31
+ export type { CSVLoaderOptions } from "../../types/ragTypes.js";
32
+ export type { DocumentLoader } from "../../types/ragTypes.js";
98
33
  /**
99
34
  * Text file loader
100
35
  */
@@ -23,11 +23,11 @@
23
23
  * const pdfDoc = await PDFLoader.load('/path/to/document.pdf');
24
24
  * ```
25
25
  */
26
- import { readFile } from "fs/promises";
27
26
  import { existsSync } from "fs";
28
- import { extname, basename } from "path";
29
- import { MDocument } from "./MDocument.js";
27
+ import { readFile } from "fs/promises";
28
+ import { basename, extname } from "path";
30
29
  import { logger } from "../../utils/logger.js";
30
+ import { MDocument } from "./MDocument.js";
31
31
  /**
32
32
  * Text file loader
33
33
  */
@@ -244,8 +244,8 @@ export class PDFLoader {
244
244
  }
245
245
  async loadPdfParser() {
246
246
  try {
247
- // @ts-expect-error pdf-parse is an optional dependency
248
- const pdfParse = await import("pdf-parse");
247
+ // pdf-parse is an optional dependency - use dynamic import with type assertion
248
+ const pdfParse = (await import("pdf-parse"));
249
249
  return pdfParse.default || pdfParse;
250
250
  }
251
251
  catch {
@@ -52,11 +52,17 @@ export class GraphRAG {
52
52
  for (let i = 0; i < nodeIds.length; i++) {
53
53
  const edges = [];
54
54
  const nodeA = this.nodes.get(nodeIds[i]);
55
+ if (!nodeA?.embedding) {
56
+ continue;
57
+ }
55
58
  for (let j = 0; j < nodeIds.length; j++) {
56
59
  if (i === j) {
57
60
  continue;
58
61
  }
59
62
  const nodeB = this.nodes.get(nodeIds[j]);
63
+ if (!nodeB?.embedding) {
64
+ continue;
65
+ }
60
66
  const similarity = this.cosineSimilarity(nodeA.embedding, nodeB.embedding);
61
67
  if (similarity >= this.threshold) {
62
68
  edges.push({
@@ -137,14 +143,19 @@ export class GraphRAG {
137
143
  const rankedNodes = Array.from(scores.entries())
138
144
  .sort((a, b) => b[1] - a[1])
139
145
  .slice(0, topK)
140
- .map(([id, score]) => {
146
+ .flatMap(([id, score]) => {
141
147
  const node = this.nodes.get(id);
142
- return {
143
- id,
144
- content: node.content,
145
- metadata: node.metadata,
146
- score,
147
- };
148
+ if (!node) {
149
+ return [];
150
+ }
151
+ return [
152
+ {
153
+ id,
154
+ content: node.content,
155
+ metadata: node.metadata,
156
+ score,
157
+ },
158
+ ];
148
159
  });
149
160
  logger.debug("[GraphRAG] Query completed", {
150
161
  topK,
@@ -174,6 +185,9 @@ export class GraphRAG {
174
185
  if (existingId === id) {
175
186
  continue;
176
187
  }
188
+ if (!existingNode.embedding) {
189
+ continue;
190
+ }
177
191
  const similarity = this.cosineSimilarity(embedding.vector, existingNode.embedding);
178
192
  if (similarity >= this.threshold) {
179
193
  edges.push({
@@ -259,7 +273,7 @@ export class GraphRAG {
259
273
  const queue = [nodeId];
260
274
  while (queue.length > 0) {
261
275
  const current = queue.shift();
262
- if (visited.has(current)) {
276
+ if (current === undefined || visited.has(current)) {
263
277
  continue;
264
278
  }
265
279
  visited.add(current);
@@ -327,12 +341,15 @@ export class GraphRAG {
327
341
  for (let i = 0; i < nodeIds.length; i++) {
328
342
  const edges = [];
329
343
  const nodeA = this.nodes.get(nodeIds[i]);
344
+ if (!nodeA?.embedding) {
345
+ continue;
346
+ }
330
347
  for (let j = 0; j < nodeIds.length; j++) {
331
348
  if (i === j) {
332
349
  continue;
333
350
  }
334
351
  const nodeB = this.nodes.get(nodeIds[j]);
335
- if (!nodeA.embedding || !nodeB.embedding) {
352
+ if (!nodeB?.embedding) {
336
353
  continue;
337
354
  }
338
355
  const similarity = this.cosineSimilarity(nodeA.embedding, nodeB.embedding);
@@ -5,61 +5,11 @@
5
5
  * Follows the BaseFactory pattern for consistent lifecycle management.
6
6
  */
7
7
  import { BaseFactory } from "../../core/infrastructure/index.js";
8
- import type { Chunk, ExtractionResult, ExtractParams } from "../types.js";
9
- /**
10
- * Supported metadata extractor types
11
- */
12
- export type MetadataExtractorType = "llm" | "title" | "summary" | "keywords" | "questions" | "custom" | "composite";
13
- /**
14
- * Metadata Extractor interface - all extractors implement this
15
- */
16
- export interface MetadataExtractor {
17
- /** Extractor type identifier */
18
- readonly type: MetadataExtractorType;
19
- /**
20
- * Extract metadata from chunks
21
- * @param chunks - Array of chunks to extract metadata from
22
- * @param params - Extraction parameters
23
- * @returns Array of extraction results
24
- */
25
- extract(chunks: Chunk[], params?: ExtractParams): Promise<ExtractionResult[]>;
26
- }
27
- /**
28
- * Metadata extractor configuration
29
- */
30
- export interface MetadataExtractorConfig {
31
- /** Extractor type */
32
- type: MetadataExtractorType;
33
- /** Language model provider */
34
- provider?: string;
35
- /** Model name for LLM-based extraction */
36
- modelName?: string;
37
- /** Custom prompt template */
38
- promptTemplate?: string;
39
- /** Maximum tokens for LLM response */
40
- maxTokens?: number;
41
- /** Temperature for LLM generation */
42
- temperature?: number;
43
- }
44
- /**
45
- * Metadata extractor metadata for discovery and documentation
46
- */
47
- export interface MetadataExtractorMetadata {
48
- /** Human-readable description */
49
- description: string;
50
- /** Default configuration */
51
- defaultConfig: Partial<MetadataExtractorConfig>;
52
- /** Supported configuration options */
53
- supportedOptions: string[];
54
- /** Recommended use cases */
55
- useCases: string[];
56
- /** Alternative names for this extractor */
57
- aliases: string[];
58
- /** Whether this extractor requires an AI model */
59
- requiresModel: boolean;
60
- /** Extraction types this extractor can produce */
61
- extractionTypes: string[];
62
- }
8
+ import type { MetadataExtractor, MetadataExtractorConfig, MetadataExtractorMetadata, MetadataExtractorType } from "../../types/ragTypes.js";
9
+ export type { MetadataExtractorType } from "../../types/ragTypes.js";
10
+ export type { MetadataExtractor } from "../../types/ragTypes.js";
11
+ export type { MetadataExtractorConfig } from "../../types/ragTypes.js";
12
+ export type { MetadataExtractorMetadata } from "../../types/ragTypes.js";
63
13
  /**
64
14
  * Metadata Extractor Factory
65
15
  *
@@ -113,10 +113,13 @@ export class LLMMetadataExtractor {
113
113
  const groups = new Map();
114
114
  for (const chunk of chunks) {
115
115
  const docId = chunk.metadata.documentId;
116
- if (!groups.has(docId)) {
117
- groups.set(docId, []);
116
+ const group = groups.get(docId);
117
+ if (group) {
118
+ group.push(chunk);
119
+ }
120
+ else {
121
+ groups.set(docId, [chunk]);
118
122
  }
119
- groups.get(docId).push(chunk);
120
123
  }
121
124
  return groups;
122
125
  }