@juspay/neurolink 9.5.2 → 9.6.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 (356) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +29 -25
  3. package/dist/agent/directTools.d.ts +5 -5
  4. package/dist/cli/commands/config.d.ts +9 -9
  5. package/dist/cli/commands/serve.d.ts +37 -0
  6. package/dist/cli/commands/serve.js +302 -229
  7. package/dist/cli/commands/setup-anthropic.d.ts +2 -2
  8. package/dist/cli/commands/setup-azure.d.ts +2 -2
  9. package/dist/cli/commands/setup-bedrock.d.ts +2 -2
  10. package/dist/cli/commands/setup-gcp.d.ts +2 -2
  11. package/dist/cli/commands/setup-google-ai.d.ts +2 -2
  12. package/dist/cli/commands/setup-huggingface.d.ts +2 -2
  13. package/dist/cli/commands/setup-mistral.d.ts +2 -2
  14. package/dist/cli/commands/setup-openai.d.ts +2 -2
  15. package/dist/cli/commands/setup.d.ts +2 -2
  16. package/dist/cli/factories/commandFactory.js +16 -2
  17. package/dist/cli/loop/optionsSchema.d.ts +2 -2
  18. package/dist/cli/loop/session.d.ts +4 -0
  19. package/dist/cli/loop/session.js +49 -4
  20. package/dist/cli/utils/interactiveSetup.d.ts +4 -4
  21. package/dist/config/conversationMemory.d.ts +2 -0
  22. package/dist/config/conversationMemory.js +5 -5
  23. package/dist/constants/contextWindows.d.ts +46 -0
  24. package/dist/constants/contextWindows.js +156 -0
  25. package/dist/context/budgetChecker.d.ts +18 -0
  26. package/dist/context/budgetChecker.js +71 -0
  27. package/dist/context/contextCompactor.d.ts +22 -0
  28. package/dist/context/contextCompactor.js +106 -0
  29. package/dist/context/effectiveHistory.d.ts +52 -0
  30. package/dist/context/effectiveHistory.js +105 -0
  31. package/dist/context/errorDetection.d.ts +14 -0
  32. package/dist/context/errorDetection.js +124 -0
  33. package/dist/context/fileSummarizationService.d.ts +54 -0
  34. package/dist/context/fileSummarizationService.js +255 -0
  35. package/dist/context/fileSummarizer.d.ts +56 -0
  36. package/dist/context/fileSummarizer.js +145 -0
  37. package/dist/context/fileTokenBudget.d.ts +53 -0
  38. package/dist/context/fileTokenBudget.js +127 -0
  39. package/dist/context/prompts/summarizationPrompt.d.ts +17 -0
  40. package/dist/context/prompts/summarizationPrompt.js +110 -0
  41. package/dist/context/stages/fileReadDeduplicator.d.ts +10 -0
  42. package/dist/context/stages/fileReadDeduplicator.js +66 -0
  43. package/dist/context/stages/slidingWindowTruncator.d.ts +11 -0
  44. package/dist/context/stages/slidingWindowTruncator.js +42 -0
  45. package/dist/context/stages/structuredSummarizer.d.ts +10 -0
  46. package/dist/context/stages/structuredSummarizer.js +49 -0
  47. package/dist/context/stages/toolOutputPruner.d.ts +10 -0
  48. package/dist/context/stages/toolOutputPruner.js +52 -0
  49. package/dist/context/summarizationEngine.d.ts +45 -0
  50. package/dist/context/summarizationEngine.js +110 -0
  51. package/dist/context/toolOutputLimits.d.ts +17 -0
  52. package/dist/context/toolOutputLimits.js +84 -0
  53. package/dist/context/toolPairRepair.d.ts +16 -0
  54. package/dist/context/toolPairRepair.js +66 -0
  55. package/dist/core/conversationMemoryManager.d.ts +5 -15
  56. package/dist/core/conversationMemoryManager.js +15 -75
  57. package/dist/core/modules/MessageBuilder.d.ts +1 -1
  58. package/dist/core/modules/MessageBuilder.js +2 -0
  59. package/dist/core/modules/TelemetryHandler.d.ts +2 -3
  60. package/dist/core/modules/TelemetryHandler.js +3 -3
  61. package/dist/core/modules/ToolsManager.d.ts +2 -2
  62. package/dist/core/redisConversationMemoryManager.d.ts +8 -14
  63. package/dist/core/redisConversationMemoryManager.js +69 -78
  64. package/dist/factories/providerFactory.d.ts +2 -2
  65. package/dist/files/fileReferenceRegistry.d.ts +276 -0
  66. package/dist/files/fileReferenceRegistry.js +1543 -0
  67. package/dist/files/fileTools.d.ts +423 -0
  68. package/dist/files/fileTools.js +449 -0
  69. package/dist/files/index.d.ts +14 -0
  70. package/dist/files/index.js +13 -0
  71. package/dist/files/streamingReader.d.ts +93 -0
  72. package/dist/files/streamingReader.js +321 -0
  73. package/dist/files/types.d.ts +23 -0
  74. package/dist/files/types.js +23 -0
  75. package/dist/image-gen/imageGenTools.d.ts +2 -2
  76. package/dist/image-gen/types.d.ts +12 -12
  77. package/dist/lib/agent/directTools.d.ts +7 -7
  78. package/dist/lib/config/conversationMemory.d.ts +2 -0
  79. package/dist/lib/config/conversationMemory.js +5 -5
  80. package/dist/lib/constants/contextWindows.d.ts +46 -0
  81. package/dist/lib/constants/contextWindows.js +157 -0
  82. package/dist/lib/context/budgetChecker.d.ts +18 -0
  83. package/dist/lib/context/budgetChecker.js +72 -0
  84. package/dist/lib/context/contextCompactor.d.ts +22 -0
  85. package/dist/lib/context/contextCompactor.js +107 -0
  86. package/dist/lib/context/effectiveHistory.d.ts +52 -0
  87. package/dist/lib/context/effectiveHistory.js +106 -0
  88. package/dist/lib/context/errorDetection.d.ts +14 -0
  89. package/dist/lib/context/errorDetection.js +125 -0
  90. package/dist/lib/context/fileSummarizationService.d.ts +54 -0
  91. package/dist/lib/context/fileSummarizationService.js +256 -0
  92. package/dist/lib/context/fileSummarizer.d.ts +56 -0
  93. package/dist/lib/context/fileSummarizer.js +146 -0
  94. package/dist/lib/context/fileTokenBudget.d.ts +53 -0
  95. package/dist/lib/context/fileTokenBudget.js +128 -0
  96. package/dist/lib/context/prompts/summarizationPrompt.d.ts +17 -0
  97. package/dist/lib/context/prompts/summarizationPrompt.js +111 -0
  98. package/dist/lib/context/stages/fileReadDeduplicator.d.ts +10 -0
  99. package/dist/lib/context/stages/fileReadDeduplicator.js +67 -0
  100. package/dist/lib/context/stages/slidingWindowTruncator.d.ts +11 -0
  101. package/dist/lib/context/stages/slidingWindowTruncator.js +43 -0
  102. package/dist/lib/context/stages/structuredSummarizer.d.ts +10 -0
  103. package/dist/lib/context/stages/structuredSummarizer.js +50 -0
  104. package/dist/lib/context/stages/toolOutputPruner.d.ts +10 -0
  105. package/dist/lib/context/stages/toolOutputPruner.js +53 -0
  106. package/dist/lib/context/summarizationEngine.d.ts +45 -0
  107. package/dist/lib/context/summarizationEngine.js +111 -0
  108. package/dist/lib/context/toolOutputLimits.d.ts +17 -0
  109. package/dist/lib/context/toolOutputLimits.js +85 -0
  110. package/dist/lib/context/toolPairRepair.d.ts +16 -0
  111. package/dist/lib/context/toolPairRepair.js +67 -0
  112. package/dist/lib/core/conversationMemoryManager.d.ts +5 -15
  113. package/dist/lib/core/conversationMemoryManager.js +15 -75
  114. package/dist/lib/core/modules/MessageBuilder.d.ts +1 -1
  115. package/dist/lib/core/modules/MessageBuilder.js +2 -0
  116. package/dist/lib/core/modules/TelemetryHandler.d.ts +2 -3
  117. package/dist/lib/core/modules/TelemetryHandler.js +3 -3
  118. package/dist/lib/core/modules/ToolsManager.d.ts +2 -2
  119. package/dist/lib/core/redisConversationMemoryManager.d.ts +8 -14
  120. package/dist/lib/core/redisConversationMemoryManager.js +69 -78
  121. package/dist/lib/factories/providerFactory.d.ts +2 -2
  122. package/dist/lib/files/fileReferenceRegistry.d.ts +276 -0
  123. package/dist/lib/files/fileReferenceRegistry.js +1544 -0
  124. package/dist/lib/files/fileTools.d.ts +423 -0
  125. package/dist/lib/files/fileTools.js +450 -0
  126. package/dist/lib/files/index.d.ts +14 -0
  127. package/dist/lib/files/index.js +14 -0
  128. package/dist/lib/files/streamingReader.d.ts +93 -0
  129. package/dist/lib/files/streamingReader.js +322 -0
  130. package/dist/lib/files/types.d.ts +23 -0
  131. package/dist/lib/files/types.js +24 -0
  132. package/dist/lib/image-gen/imageGenTools.d.ts +2 -2
  133. package/dist/lib/image-gen/types.d.ts +12 -12
  134. package/dist/lib/memory/mem0Initializer.d.ts +2 -2
  135. package/dist/lib/neurolink.d.ts +61 -2
  136. package/dist/lib/neurolink.js +619 -307
  137. package/dist/lib/processors/archive/ArchiveProcessor.d.ts +327 -0
  138. package/dist/lib/processors/archive/ArchiveProcessor.js +1309 -0
  139. package/dist/lib/processors/archive/index.d.ts +33 -0
  140. package/dist/lib/processors/archive/index.js +43 -0
  141. package/dist/lib/processors/base/types.d.ts +70 -64
  142. package/dist/lib/processors/base/types.js +6 -0
  143. package/dist/lib/processors/cli/fileProcessorCli.d.ts +8 -8
  144. package/dist/lib/processors/cli/fileProcessorCli.js +5 -5
  145. package/dist/lib/processors/config/mimeTypes.js +25 -0
  146. package/dist/lib/processors/config/sizeLimits.d.ts +52 -40
  147. package/dist/lib/processors/config/sizeLimits.js +56 -44
  148. package/dist/lib/processors/document/ExcelProcessor.d.ts +14 -0
  149. package/dist/lib/processors/document/ExcelProcessor.js +72 -1
  150. package/dist/lib/processors/document/PptxProcessor.d.ts +63 -0
  151. package/dist/lib/processors/document/PptxProcessor.js +158 -0
  152. package/dist/lib/processors/document/index.d.ts +1 -0
  153. package/dist/lib/processors/document/index.js +6 -0
  154. package/dist/lib/processors/errors/FileErrorCode.d.ts +2 -2
  155. package/dist/lib/processors/errors/errorHelpers.d.ts +2 -2
  156. package/dist/lib/processors/errors/errorSerializer.d.ts +4 -4
  157. package/dist/lib/processors/index.d.ts +8 -2
  158. package/dist/lib/processors/index.js +5 -2
  159. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +8 -8
  160. package/dist/lib/processors/integration/FileProcessorIntegration.js +7 -7
  161. package/dist/lib/processors/media/AudioProcessor.d.ts +328 -0
  162. package/dist/lib/processors/media/AudioProcessor.js +708 -0
  163. package/dist/lib/processors/media/VideoProcessor.d.ts +350 -0
  164. package/dist/lib/processors/media/VideoProcessor.js +992 -0
  165. package/dist/lib/processors/media/index.d.ts +27 -0
  166. package/dist/lib/processors/media/index.js +37 -0
  167. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +19 -5
  168. package/dist/lib/processors/registry/ProcessorRegistry.js +103 -8
  169. package/dist/lib/processors/registry/index.d.ts +1 -1
  170. package/dist/lib/processors/registry/index.js +1 -1
  171. package/dist/lib/processors/registry/types.d.ts +2 -2
  172. package/dist/lib/providers/googleAiStudio.d.ts +34 -0
  173. package/dist/lib/providers/googleAiStudio.js +267 -397
  174. package/dist/lib/providers/googleVertex.d.ts +55 -1
  175. package/dist/lib/providers/googleVertex.js +452 -719
  176. package/dist/lib/providers/sagemaker/detection.d.ts +6 -6
  177. package/dist/lib/providers/sagemaker/diagnostics.d.ts +4 -4
  178. package/dist/lib/providers/sagemaker/parsers.d.ts +4 -4
  179. package/dist/lib/rag/chunkers/RecursiveChunker.js +2 -2
  180. package/dist/lib/rag/document/loaders.d.ts +6 -71
  181. package/dist/lib/rag/document/loaders.js +5 -5
  182. package/dist/lib/rag/graphRag/graphRAG.js +26 -9
  183. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
  184. package/dist/lib/rag/metadata/metadataExtractor.js +6 -3
  185. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +8 -126
  186. package/dist/lib/rag/pipeline/RAGPipeline.js +11 -11
  187. package/dist/lib/rag/pipeline/contextAssembly.d.ts +3 -42
  188. package/dist/lib/rag/pipeline/contextAssembly.js +6 -3
  189. package/dist/lib/rag/reranker/RerankerFactory.d.ts +5 -60
  190. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +3 -33
  191. package/dist/lib/rag/resilience/RetryHandler.d.ts +2 -21
  192. package/dist/lib/rag/retrieval/hybridSearch.d.ts +3 -41
  193. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +2 -13
  194. package/dist/lib/rag/retrieval/vectorQueryTool.js +4 -3
  195. package/dist/lib/rag/types.d.ts +3 -3
  196. package/dist/lib/sdk/toolRegistration.d.ts +2 -2
  197. package/dist/lib/server/middleware/cache.d.ts +2 -2
  198. package/dist/lib/server/middleware/rateLimit.d.ts +2 -2
  199. package/dist/lib/server/routes/mcpRoutes.js +277 -249
  200. package/dist/lib/server/routes/memoryRoutes.js +287 -281
  201. package/dist/lib/server/utils/validation.d.ts +10 -10
  202. package/dist/lib/session/globalSessionState.d.ts +2 -2
  203. package/dist/lib/telemetry/telemetryService.d.ts +2 -2
  204. package/dist/lib/types/common.d.ts +39 -0
  205. package/dist/lib/types/contextTypes.d.ts +255 -0
  206. package/dist/lib/types/contextTypes.js +0 -2
  207. package/dist/lib/types/conversation.d.ts +62 -0
  208. package/dist/lib/types/conversationMemoryInterface.d.ts +27 -0
  209. package/dist/lib/types/conversationMemoryInterface.js +7 -0
  210. package/dist/lib/types/fileReferenceTypes.d.ts +222 -0
  211. package/dist/lib/types/fileReferenceTypes.js +9 -0
  212. package/dist/lib/types/fileTypes.d.ts +26 -3
  213. package/dist/lib/types/generateTypes.d.ts +22 -1
  214. package/dist/lib/types/index.d.ts +4 -5
  215. package/dist/lib/types/index.js +8 -10
  216. package/dist/lib/types/modelTypes.d.ts +2 -2
  217. package/dist/lib/types/processorTypes.d.ts +597 -0
  218. package/dist/lib/types/processorTypes.js +91 -0
  219. package/dist/lib/types/ragTypes.d.ts +481 -0
  220. package/dist/lib/types/ragTypes.js +8 -0
  221. package/dist/lib/types/sdkTypes.d.ts +17 -18
  222. package/dist/lib/types/streamTypes.d.ts +11 -1
  223. package/dist/lib/utils/async/retry.d.ts +2 -2
  224. package/dist/lib/utils/async/withTimeout.js +3 -1
  225. package/dist/lib/utils/conversationMemory.d.ts +12 -6
  226. package/dist/lib/utils/conversationMemory.js +76 -36
  227. package/dist/lib/utils/fileDetector.d.ts +62 -0
  228. package/dist/lib/utils/fileDetector.js +1014 -14
  229. package/dist/lib/utils/json/safeParse.d.ts +2 -2
  230. package/dist/lib/utils/messageBuilder.js +806 -153
  231. package/dist/lib/utils/modelChoices.d.ts +2 -2
  232. package/dist/lib/utils/multimodalOptionsBuilder.d.ts +2 -1
  233. package/dist/lib/utils/multimodalOptionsBuilder.js +1 -0
  234. package/dist/lib/utils/rateLimiter.d.ts +2 -2
  235. package/dist/lib/utils/sanitizers/filename.d.ts +4 -4
  236. package/dist/lib/utils/sanitizers/svg.d.ts +2 -2
  237. package/dist/lib/utils/thinkingConfig.d.ts +6 -6
  238. package/dist/lib/utils/tokenEstimation.d.ts +68 -0
  239. package/dist/lib/utils/tokenEstimation.js +113 -0
  240. package/dist/lib/utils/tokenUtils.d.ts +4 -4
  241. package/dist/lib/utils/ttsProcessor.d.ts +2 -2
  242. package/dist/lib/workflow/config.d.ts +150 -150
  243. package/dist/memory/mem0Initializer.d.ts +2 -2
  244. package/dist/neurolink.d.ts +61 -2
  245. package/dist/neurolink.js +619 -307
  246. package/dist/processors/archive/ArchiveProcessor.d.ts +327 -0
  247. package/dist/processors/archive/ArchiveProcessor.js +1308 -0
  248. package/dist/processors/archive/index.d.ts +33 -0
  249. package/dist/processors/archive/index.js +42 -0
  250. package/dist/processors/base/types.d.ts +70 -64
  251. package/dist/processors/base/types.js +6 -0
  252. package/dist/processors/cli/fileProcessorCli.d.ts +8 -8
  253. package/dist/processors/cli/fileProcessorCli.js +5 -5
  254. package/dist/processors/config/mimeTypes.js +25 -0
  255. package/dist/processors/config/sizeLimits.d.ts +52 -40
  256. package/dist/processors/config/sizeLimits.js +56 -44
  257. package/dist/processors/document/ExcelProcessor.d.ts +14 -0
  258. package/dist/processors/document/ExcelProcessor.js +72 -1
  259. package/dist/processors/document/PptxProcessor.d.ts +63 -0
  260. package/dist/processors/document/PptxProcessor.js +157 -0
  261. package/dist/processors/document/index.d.ts +1 -0
  262. package/dist/processors/document/index.js +6 -0
  263. package/dist/processors/errors/FileErrorCode.d.ts +2 -2
  264. package/dist/processors/errors/errorHelpers.d.ts +2 -2
  265. package/dist/processors/errors/errorSerializer.d.ts +4 -4
  266. package/dist/processors/index.d.ts +8 -2
  267. package/dist/processors/index.js +5 -2
  268. package/dist/processors/integration/FileProcessorIntegration.d.ts +8 -8
  269. package/dist/processors/integration/FileProcessorIntegration.js +7 -7
  270. package/dist/processors/media/AudioProcessor.d.ts +328 -0
  271. package/dist/processors/media/AudioProcessor.js +707 -0
  272. package/dist/processors/media/VideoProcessor.d.ts +350 -0
  273. package/dist/processors/media/VideoProcessor.js +991 -0
  274. package/dist/processors/media/ffprobe-static.d.ts +4 -0
  275. package/dist/processors/media/index.d.ts +27 -0
  276. package/dist/processors/media/index.js +36 -0
  277. package/dist/processors/registry/ProcessorRegistry.d.ts +19 -5
  278. package/dist/processors/registry/ProcessorRegistry.js +103 -8
  279. package/dist/processors/registry/index.d.ts +1 -1
  280. package/dist/processors/registry/index.js +1 -1
  281. package/dist/processors/registry/types.d.ts +2 -2
  282. package/dist/providers/googleAiStudio.d.ts +34 -0
  283. package/dist/providers/googleAiStudio.js +267 -397
  284. package/dist/providers/googleVertex.d.ts +55 -1
  285. package/dist/providers/googleVertex.js +452 -719
  286. package/dist/providers/sagemaker/detection.d.ts +6 -6
  287. package/dist/providers/sagemaker/diagnostics.d.ts +4 -4
  288. package/dist/providers/sagemaker/parsers.d.ts +4 -4
  289. package/dist/rag/chunkers/RecursiveChunker.js +2 -2
  290. package/dist/rag/document/loaders.d.ts +6 -71
  291. package/dist/rag/document/loaders.js +5 -5
  292. package/dist/rag/graphRag/graphRAG.js +26 -9
  293. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
  294. package/dist/rag/metadata/metadataExtractor.js +6 -3
  295. package/dist/rag/pipeline/RAGPipeline.d.ts +8 -126
  296. package/dist/rag/pipeline/RAGPipeline.js +11 -11
  297. package/dist/rag/pipeline/contextAssembly.d.ts +3 -42
  298. package/dist/rag/pipeline/contextAssembly.js +6 -3
  299. package/dist/rag/reranker/RerankerFactory.d.ts +5 -60
  300. package/dist/rag/resilience/CircuitBreaker.d.ts +3 -33
  301. package/dist/rag/resilience/RetryHandler.d.ts +2 -21
  302. package/dist/rag/retrieval/hybridSearch.d.ts +3 -41
  303. package/dist/rag/retrieval/vectorQueryTool.d.ts +2 -13
  304. package/dist/rag/retrieval/vectorQueryTool.js +4 -3
  305. package/dist/rag/types.d.ts +3 -3
  306. package/dist/sdk/toolRegistration.d.ts +2 -2
  307. package/dist/server/middleware/cache.d.ts +2 -2
  308. package/dist/server/middleware/rateLimit.d.ts +2 -2
  309. package/dist/server/routes/mcpRoutes.js +277 -249
  310. package/dist/server/routes/memoryRoutes.js +287 -281
  311. package/dist/server/utils/validation.d.ts +4 -4
  312. package/dist/session/globalSessionState.d.ts +2 -2
  313. package/dist/telemetry/telemetryService.d.ts +2 -2
  314. package/dist/types/common.d.ts +39 -0
  315. package/dist/types/contextTypes.d.ts +255 -0
  316. package/dist/types/contextTypes.js +0 -2
  317. package/dist/types/conversation.d.ts +62 -0
  318. package/dist/types/conversationMemoryInterface.d.ts +27 -0
  319. package/dist/types/conversationMemoryInterface.js +6 -0
  320. package/dist/types/fileReferenceTypes.d.ts +222 -0
  321. package/dist/types/fileReferenceTypes.js +8 -0
  322. package/dist/types/fileTypes.d.ts +26 -3
  323. package/dist/types/generateTypes.d.ts +22 -1
  324. package/dist/types/index.d.ts +4 -5
  325. package/dist/types/index.js +8 -10
  326. package/dist/types/processorTypes.d.ts +597 -0
  327. package/dist/types/processorTypes.js +90 -0
  328. package/dist/types/ragTypes.d.ts +481 -0
  329. package/dist/types/ragTypes.js +7 -0
  330. package/dist/types/sdkTypes.d.ts +17 -18
  331. package/dist/types/streamTypes.d.ts +11 -1
  332. package/dist/utils/async/retry.d.ts +2 -2
  333. package/dist/utils/async/withTimeout.js +3 -1
  334. package/dist/utils/conversationMemory.d.ts +12 -6
  335. package/dist/utils/conversationMemory.js +76 -36
  336. package/dist/utils/fileDetector.d.ts +62 -0
  337. package/dist/utils/fileDetector.js +1014 -14
  338. package/dist/utils/json/safeParse.d.ts +2 -2
  339. package/dist/utils/messageBuilder.js +806 -153
  340. package/dist/utils/modelChoices.d.ts +2 -2
  341. package/dist/utils/multimodalOptionsBuilder.d.ts +2 -1
  342. package/dist/utils/multimodalOptionsBuilder.js +1 -0
  343. package/dist/utils/rateLimiter.d.ts +2 -2
  344. package/dist/utils/sanitizers/filename.d.ts +4 -4
  345. package/dist/utils/sanitizers/svg.d.ts +2 -2
  346. package/dist/utils/thinkingConfig.d.ts +6 -6
  347. package/dist/utils/tokenEstimation.d.ts +68 -0
  348. package/dist/utils/tokenEstimation.js +112 -0
  349. package/dist/utils/tokenUtils.d.ts +4 -4
  350. package/dist/utils/ttsProcessor.d.ts +2 -2
  351. package/dist/workflow/config.d.ts +104 -104
  352. package/package.json +18 -6
  353. package/dist/lib/utils/conversationMemoryUtils.d.ts +0 -25
  354. package/dist/lib/utils/conversationMemoryUtils.js +0 -138
  355. package/dist/utils/conversationMemoryUtils.d.ts +0 -25
  356. package/dist/utils/conversationMemoryUtils.js +0 -137
@@ -0,0 +1,106 @@
1
+ /**
2
+ * ContextCompactor
3
+ *
4
+ * Orchestrates multi-stage context reduction:
5
+ *
6
+ * Stage 1: Tool Output Pruning (cheapest -- no LLM call)
7
+ * Stage 2: File Read Deduplication (cheap -- no LLM call)
8
+ * Stage 3: LLM Summarization (expensive -- requires LLM call)
9
+ * Stage 4: Sliding Window Truncation (fallback -- no LLM call)
10
+ */
11
+ import { estimateMessagesTokens } from "../utils/tokenEstimation.js";
12
+ import { pruneToolOutputs } from "./stages/toolOutputPruner.js";
13
+ import { deduplicateFileReads } from "./stages/fileReadDeduplicator.js";
14
+ import { summarizeMessages } from "./stages/structuredSummarizer.js";
15
+ import { truncateWithSlidingWindow } from "./stages/slidingWindowTruncator.js";
16
+ const DEFAULT_CONFIG = {
17
+ enablePrune: true,
18
+ enableDeduplicate: true,
19
+ enableSummarize: true,
20
+ enableTruncate: true,
21
+ pruneProtectTokens: 40_000,
22
+ pruneMinimumSavings: 20_000,
23
+ pruneProtectedTools: ["skill"],
24
+ summarizationProvider: "vertex",
25
+ summarizationModel: "gemini-2.5-flash",
26
+ keepRecentRatio: 0.3,
27
+ truncationFraction: 0.5,
28
+ provider: "",
29
+ };
30
+ export class ContextCompactor {
31
+ config;
32
+ constructor(config) {
33
+ this.config = { ...DEFAULT_CONFIG, ...config };
34
+ }
35
+ /**
36
+ * Run the multi-stage compaction pipeline until messages fit within budget.
37
+ */
38
+ async compact(messages, targetTokens, memoryConfig) {
39
+ const provider = this.config.provider || undefined;
40
+ const tokensBefore = estimateMessagesTokens(messages, provider);
41
+ const stagesUsed = [];
42
+ let currentMessages = [...messages];
43
+ // Stage 1: Tool Output Pruning
44
+ if (this.config.enablePrune &&
45
+ estimateMessagesTokens(currentMessages, provider) > targetTokens) {
46
+ const pruneResult = pruneToolOutputs(currentMessages, {
47
+ protectTokens: this.config.pruneProtectTokens,
48
+ minimumSavings: this.config.pruneMinimumSavings,
49
+ protectedTools: this.config.pruneProtectedTools,
50
+ provider,
51
+ });
52
+ if (pruneResult.pruned) {
53
+ currentMessages = pruneResult.messages;
54
+ stagesUsed.push("prune");
55
+ }
56
+ }
57
+ // Stage 2: File Read Deduplication
58
+ if (this.config.enableDeduplicate &&
59
+ estimateMessagesTokens(currentMessages, provider) > targetTokens) {
60
+ const dedupResult = deduplicateFileReads(currentMessages);
61
+ if (dedupResult.deduplicated) {
62
+ currentMessages = dedupResult.messages;
63
+ stagesUsed.push("deduplicate");
64
+ }
65
+ }
66
+ // Stage 3: LLM Summarization
67
+ if (this.config.enableSummarize &&
68
+ estimateMessagesTokens(currentMessages, provider) > targetTokens) {
69
+ try {
70
+ const summarizeResult = await summarizeMessages(currentMessages, {
71
+ provider: this.config.summarizationProvider,
72
+ model: this.config.summarizationModel,
73
+ keepRecentRatio: this.config.keepRecentRatio,
74
+ memoryConfig,
75
+ });
76
+ if (summarizeResult.summarized) {
77
+ currentMessages = summarizeResult.messages;
78
+ stagesUsed.push("summarize");
79
+ }
80
+ }
81
+ catch {
82
+ // Summarization failed, fall through to truncation
83
+ }
84
+ }
85
+ // Stage 4: Sliding Window Truncation (fallback)
86
+ if (this.config.enableTruncate &&
87
+ estimateMessagesTokens(currentMessages, provider) > targetTokens) {
88
+ const truncResult = truncateWithSlidingWindow(currentMessages, {
89
+ fraction: this.config.truncationFraction,
90
+ });
91
+ if (truncResult.truncated) {
92
+ currentMessages = truncResult.messages;
93
+ stagesUsed.push("truncate");
94
+ }
95
+ }
96
+ const tokensAfter = estimateMessagesTokens(currentMessages, provider);
97
+ return {
98
+ compacted: stagesUsed.length > 0,
99
+ stagesUsed,
100
+ tokensBefore,
101
+ tokensAfter,
102
+ tokensSaved: tokensBefore - tokensAfter,
103
+ messages: currentMessages,
104
+ };
105
+ }
106
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Effective History Filter
3
+ *
4
+ * Filters message arrays to return only "visible" messages,
5
+ * excluding those tagged by condensation or truncation.
6
+ * Supports non-destructive context management where messages
7
+ * are tagged instead of deleted.
8
+ */
9
+ import type { ChatMessage } from "../types/conversation.js";
10
+ /**
11
+ * Get the effective (visible) history from a message array.
12
+ *
13
+ * Filters out:
14
+ * - Messages with a condenseParent (replaced by a summary)
15
+ * - Messages with a truncationParent (hidden by truncation)
16
+ *
17
+ * Keeps:
18
+ * - Summary messages (isSummary = true)
19
+ * - Truncation markers (isTruncationMarker = true)
20
+ * - All other untagged messages
21
+ */
22
+ export declare function getEffectiveHistory(messages: ChatMessage[]): ChatMessage[];
23
+ /**
24
+ * Tag messages for condensation (non-destructive summary).
25
+ *
26
+ * @param messages - Full message array
27
+ * @param fromIndex - Start index of messages to condense
28
+ * @param toIndex - End index (exclusive) of messages to condense
29
+ * @param condenseId - UUID for this condensation group
30
+ * @returns Updated message array with tags applied
31
+ */
32
+ export declare function tagForCondensation(messages: ChatMessage[], fromIndex: number, toIndex: number, condenseId: string): ChatMessage[];
33
+ /**
34
+ * Tag messages for truncation (non-destructive hiding).
35
+ *
36
+ * @param messages - Full message array
37
+ * @param fromIndex - Start index of messages to truncate
38
+ * @param toIndex - End index (exclusive) of messages to truncate
39
+ * @param truncationId - UUID for this truncation group
40
+ * @returns Updated message array with tags applied
41
+ */
42
+ export declare function tagForTruncation(messages: ChatMessage[], fromIndex: number, toIndex: number, truncationId: string): ChatMessage[];
43
+ /**
44
+ * Remove condensation tags (rewind).
45
+ * Makes previously condensed messages visible again.
46
+ */
47
+ export declare function removeCondensationTags(messages: ChatMessage[], condenseId: string): ChatMessage[];
48
+ /**
49
+ * Remove truncation tags (rewind).
50
+ * Makes previously truncated messages visible again.
51
+ */
52
+ export declare function removeTruncationTags(messages: ChatMessage[], truncationId: string): ChatMessage[];
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Effective History Filter
3
+ *
4
+ * Filters message arrays to return only "visible" messages,
5
+ * excluding those tagged by condensation or truncation.
6
+ * Supports non-destructive context management where messages
7
+ * are tagged instead of deleted.
8
+ */
9
+ /**
10
+ * Get the effective (visible) history from a message array.
11
+ *
12
+ * Filters out:
13
+ * - Messages with a condenseParent (replaced by a summary)
14
+ * - Messages with a truncationParent (hidden by truncation)
15
+ *
16
+ * Keeps:
17
+ * - Summary messages (isSummary = true)
18
+ * - Truncation markers (isTruncationMarker = true)
19
+ * - All other untagged messages
20
+ */
21
+ export function getEffectiveHistory(messages) {
22
+ return messages.filter((msg) => {
23
+ // Exclude messages that have been condensed (replaced by summary)
24
+ if (msg.condenseParent) {
25
+ return false;
26
+ }
27
+ // Exclude messages that have been truncated (hidden by marker)
28
+ if (msg.truncationParent) {
29
+ return false;
30
+ }
31
+ return true;
32
+ });
33
+ }
34
+ /**
35
+ * Tag messages for condensation (non-destructive summary).
36
+ *
37
+ * @param messages - Full message array
38
+ * @param fromIndex - Start index of messages to condense
39
+ * @param toIndex - End index (exclusive) of messages to condense
40
+ * @param condenseId - UUID for this condensation group
41
+ * @returns Updated message array with tags applied
42
+ */
43
+ export function tagForCondensation(messages, fromIndex, toIndex, condenseId) {
44
+ return messages.map((msg, i) => {
45
+ if (i >= fromIndex && i < toIndex) {
46
+ return { ...msg, condenseParent: condenseId };
47
+ }
48
+ return msg;
49
+ });
50
+ }
51
+ /**
52
+ * Tag messages for truncation (non-destructive hiding).
53
+ *
54
+ * @param messages - Full message array
55
+ * @param fromIndex - Start index of messages to truncate
56
+ * @param toIndex - End index (exclusive) of messages to truncate
57
+ * @param truncationId - UUID for this truncation group
58
+ * @returns Updated message array with tags applied
59
+ */
60
+ export function tagForTruncation(messages, fromIndex, toIndex, truncationId) {
61
+ return messages.map((msg, i) => {
62
+ if (i >= fromIndex && i < toIndex) {
63
+ return { ...msg, truncationParent: truncationId };
64
+ }
65
+ return msg;
66
+ });
67
+ }
68
+ /**
69
+ * Remove condensation tags (rewind).
70
+ * Makes previously condensed messages visible again.
71
+ */
72
+ export function removeCondensationTags(messages, condenseId) {
73
+ return messages
74
+ .map((msg) => {
75
+ if (msg.condenseParent === condenseId) {
76
+ const { condenseParent, ...rest } = msg;
77
+ return rest;
78
+ }
79
+ // Also remove the summary message itself
80
+ if (msg.condenseId === condenseId && msg.metadata?.isSummary) {
81
+ return null;
82
+ }
83
+ return msg;
84
+ })
85
+ .filter((msg) => msg !== null);
86
+ }
87
+ /**
88
+ * Remove truncation tags (rewind).
89
+ * Makes previously truncated messages visible again.
90
+ */
91
+ export function removeTruncationTags(messages, truncationId) {
92
+ return messages
93
+ .map((msg) => {
94
+ if (msg.truncationParent === truncationId) {
95
+ const { truncationParent, ...rest } = msg;
96
+ return rest;
97
+ }
98
+ // Also remove the truncation marker itself
99
+ if (msg.truncationId === truncationId && msg.isTruncationMarker) {
100
+ return null;
101
+ }
102
+ return msg;
103
+ })
104
+ .filter((msg) => msg !== null);
105
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Context Overflow Error Detection
3
+ *
4
+ * Cross-provider regex patterns to detect context window overflow errors.
5
+ * Modeled on Cline + pi-mono patterns.
6
+ */
7
+ /**
8
+ * Check if an error is a context overflow error from any provider.
9
+ */
10
+ export declare function isContextOverflowError(error: unknown): boolean;
11
+ /**
12
+ * Identify which provider produced the context overflow error.
13
+ */
14
+ export declare function getContextOverflowProvider(error: unknown): string | null;
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Context Overflow Error Detection
3
+ *
4
+ * Cross-provider regex patterns to detect context window overflow errors.
5
+ * Modeled on Cline + pi-mono patterns.
6
+ */
7
+ /**
8
+ * Provider-specific error patterns for context overflow.
9
+ *
10
+ * IMPORTANT: Order matters for getContextOverflowProvider - more specific
11
+ * patterns should be checked first. OpenAI patterns are very specific
12
+ * (e.g., "This model's maximum context length is") so they come first.
13
+ */
14
+ const OVERFLOW_PATTERNS = [
15
+ {
16
+ provider: "openai",
17
+ patterns: [
18
+ /This model's maximum context length is/i,
19
+ /tokens\. However, (?:your messages|you requested)/i,
20
+ /reduce the length of the messages/i,
21
+ /Please reduce the length/i,
22
+ ],
23
+ },
24
+ {
25
+ provider: "azure",
26
+ patterns: [/content_length_exceeded/i],
27
+ },
28
+ {
29
+ provider: "google",
30
+ patterns: [
31
+ /RESOURCE_EXHAUSTED/i,
32
+ /exceeds the maximum number of tokens/i,
33
+ /content is too long/i,
34
+ /request payload size exceeds/i,
35
+ /input token limit/i,
36
+ ],
37
+ },
38
+ {
39
+ provider: "bedrock",
40
+ patterns: [
41
+ /ValidationException.*token/i,
42
+ /Input is too long/i,
43
+ /exceeds the model's maximum/i,
44
+ ],
45
+ },
46
+ {
47
+ provider: "mistral",
48
+ patterns: [/context length exceeded/i, /maximum number of tokens/i],
49
+ },
50
+ {
51
+ provider: "openrouter",
52
+ patterns: [/context_length_exceeded/i],
53
+ },
54
+ {
55
+ provider: "anthropic",
56
+ patterns: [
57
+ /prompt is too long/i,
58
+ /input is too long/i,
59
+ /too many tokens/i,
60
+ /maximum context length/i,
61
+ ],
62
+ },
63
+ ];
64
+ /**
65
+ * Check if an error is a context overflow error from any provider.
66
+ */
67
+ export function isContextOverflowError(error) {
68
+ const errorMessage = extractErrorMessage(error);
69
+ if (!errorMessage) {
70
+ return false;
71
+ }
72
+ return OVERFLOW_PATTERNS.some(({ patterns }) => patterns.some((pattern) => pattern.test(errorMessage)));
73
+ }
74
+ /**
75
+ * Identify which provider produced the context overflow error.
76
+ */
77
+ export function getContextOverflowProvider(error) {
78
+ const errorMessage = extractErrorMessage(error);
79
+ if (!errorMessage) {
80
+ return null;
81
+ }
82
+ for (const { provider, patterns } of OVERFLOW_PATTERNS) {
83
+ if (patterns.some((pattern) => pattern.test(errorMessage))) {
84
+ return provider;
85
+ }
86
+ }
87
+ return null;
88
+ }
89
+ /**
90
+ * Extract error message from various error formats.
91
+ */
92
+ function extractErrorMessage(error) {
93
+ if (!error) {
94
+ return null;
95
+ }
96
+ if (typeof error === "string") {
97
+ return error;
98
+ }
99
+ if (error instanceof Error) {
100
+ // Check nested error messages too
101
+ const msg = error.message;
102
+ const cause = error?.cause;
103
+ if (cause instanceof Error) {
104
+ return `${msg} ${cause.message}`;
105
+ }
106
+ return msg;
107
+ }
108
+ if (typeof error === "object") {
109
+ const obj = error;
110
+ if (typeof obj.message === "string") {
111
+ return obj.message;
112
+ }
113
+ if (typeof obj.error === "string") {
114
+ return obj.error;
115
+ }
116
+ if (typeof obj.error === "object" && obj.error !== null) {
117
+ const nested = obj.error;
118
+ if (typeof nested.message === "string") {
119
+ return nested.message;
120
+ }
121
+ }
122
+ }
123
+ return null;
124
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * File Summarization Service
3
+ *
4
+ * Orchestrates the end-to-end file summarization pipeline:
5
+ * 1. Accept raw file inputs (strings or Buffers)
6
+ * 2. Extract readable text and estimate tokens
7
+ * 3. Use `planFileSummarization()` to decide which files to summarize
8
+ * 4. Call an LLM to produce context-aware summaries of the largest files
9
+ * 5. Fall back to truncation when the LLM call fails
10
+ *
11
+ * The LLM is instantiated via a *dynamic import* of NeuroLink to avoid
12
+ * circular dependency issues (NeuroLink → fileSummarizationService → NeuroLink).
13
+ */
14
+ import { type FileForSummarization, type FileSummarizationCheckParams, type SummarizedFile } from "./fileSummarizer.js";
15
+ import type { RawFileInput } from "../types/contextTypes.js";
16
+ export type { RawFileInput } from "../types/contextTypes.js";
17
+ /** Constructor options. */
18
+ type FileSummarizationServiceOptions = {
19
+ /** Provider used for the summarization LLM call (default: "vertex") */
20
+ provider?: string;
21
+ /** Model used for the summarization LLM call (default: "gemini-2.5-flash") */
22
+ model?: string;
23
+ };
24
+ export declare class FileSummarizationService {
25
+ private readonly provider;
26
+ private readonly model;
27
+ constructor(options?: FileSummarizationServiceOptions);
28
+ /**
29
+ * Extract readable text from a file's content.
30
+ *
31
+ * - Strings are returned as-is.
32
+ * - Buffers are decoded as UTF-8 when the MIME type is textual.
33
+ * - Known-binary types (image/*, audio/*, video/*) return a placeholder.
34
+ */
35
+ extractFileText(content: string | Buffer, mimeType: string, fileName: string): string;
36
+ /**
37
+ * Map a MIME type (and filename for fallback) to a human-readable label.
38
+ */
39
+ getFileTypeLabel(mimeType: string, fileName: string): string;
40
+ /**
41
+ * Convert an array of raw file inputs into `FileForSummarization` objects.
42
+ *
43
+ * Extracts text and estimates token count for each file.
44
+ */
45
+ prepareFilesForSummarization(files: RawFileInput[], provider?: string): FileForSummarization[];
46
+ /**
47
+ * Summarize files that exceed the context budget.
48
+ *
49
+ * For each file marked "summarize" by `planFileSummarization()`, we call
50
+ * the configured LLM to produce a context-aware summary. If the LLM call
51
+ * fails, we fall back to naive truncation so the request can still proceed.
52
+ */
53
+ summarizeFiles(files: FileForSummarization[], userPrompt: string, budgetParams: FileSummarizationCheckParams): Promise<SummarizedFile[]>;
54
+ }