@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
@@ -313,6 +313,31 @@ export const EXTENSION_MIME_MAP = {
313
313
  ".lua": "text/x-lua",
314
314
  ".perl": "text/x-perl",
315
315
  ".pl": "text/x-perl",
316
+ // Video
317
+ ".mp4": VIDEO_MIME_TYPES.MP4,
318
+ ".m4v": VIDEO_MIME_TYPES.MP4,
319
+ ".mkv": VIDEO_MIME_TYPES.MKV,
320
+ ".mov": VIDEO_MIME_TYPES.MOV,
321
+ ".avi": VIDEO_MIME_TYPES.AVI,
322
+ ".webm": VIDEO_MIME_TYPES.WEBM,
323
+ ".wmv": VIDEO_MIME_TYPES.WMV,
324
+ ".flv": VIDEO_MIME_TYPES.FLV,
325
+ // Audio
326
+ ".mp3": AUDIO_MIME_TYPES.MP3,
327
+ ".wav": AUDIO_MIME_TYPES.WAV,
328
+ ".ogg": AUDIO_MIME_TYPES.OGG,
329
+ ".flac": AUDIO_MIME_TYPES.FLAC,
330
+ ".m4a": AUDIO_MIME_TYPES.M4A,
331
+ ".aac": AUDIO_MIME_TYPES.AAC,
332
+ ".wma": AUDIO_MIME_TYPES.WMA,
333
+ // Archives
334
+ ".zip": ARCHIVE_MIME_TYPES.ZIP,
335
+ ".tar": ARCHIVE_MIME_TYPES.TAR,
336
+ ".gz": ARCHIVE_MIME_TYPES.GZIP,
337
+ ".tgz": ARCHIVE_MIME_TYPES.GZIP,
338
+ ".rar": ARCHIVE_MIME_TYPES.RAR,
339
+ ".7z": ARCHIVE_MIME_TYPES.SEVEN_ZIP,
340
+ ".jar": "application/java-archive",
316
341
  // Config files
317
342
  ".env": TEXT_MIME_TYPES.PLAIN,
318
343
  ".ini": TEXT_MIME_TYPES.PLAIN,
@@ -10,28 +10,34 @@
10
10
  export declare const SIZE_LIMITS_MB: {
11
11
  /** Maximum image file size (10MB) */
12
12
  readonly IMAGE_MAX_MB: 10;
13
- /** Maximum PDF file size (20MB) */
14
- readonly PDF_MAX_MB: 20;
15
- /** Maximum document file size (10MB) */
16
- readonly DOCUMENT_MAX_MB: 10;
17
- /** Maximum Word document size (10MB) */
18
- readonly WORD_MAX_MB: 10;
19
- /** Maximum text file size (5MB) */
20
- readonly TEXT_MAX_MB: 5;
21
- /** Maximum CSV file size (10MB) */
22
- readonly CSV_MAX_MB: 10;
23
- /** Maximum Excel file size (10MB) */
24
- readonly EXCEL_MAX_MB: 10;
25
- /** Maximum source code file size (5MB) */
26
- readonly SOURCE_CODE_MAX_MB: 5;
27
- /** Maximum JSON file size (5MB) */
28
- readonly JSON_MAX_MB: 5;
29
- /** Maximum YAML file size (5MB) */
30
- readonly YAML_MAX_MB: 5;
31
- /** Maximum XML file size (5MB) */
32
- readonly XML_MAX_MB: 5;
33
- /** Maximum general file size (50MB) */
34
- readonly GENERAL_MAX_MB: 50;
13
+ /** Maximum PDF file size (100MB — enterprise reports, long research papers) */
14
+ readonly PDF_MAX_MB: 100;
15
+ /** Maximum document file size (100MB — enterprise docs with embedded images) */
16
+ readonly DOCUMENT_MAX_MB: 100;
17
+ /** Maximum Word document size (100MB — PRDs, specs with embedded media) */
18
+ readonly WORD_MAX_MB: 100;
19
+ /** Maximum text file size (50MB — large log files, build output) */
20
+ readonly TEXT_MAX_MB: 50;
21
+ /** Maximum CSV file size (50MB — large data exports) */
22
+ readonly CSV_MAX_MB: 50;
23
+ /** Maximum Excel file size (100MB — enterprise spreadsheets, data exports) */
24
+ readonly EXCEL_MAX_MB: 100;
25
+ /** Maximum source code file size (20MB — large codebases) */
26
+ readonly SOURCE_CODE_MAX_MB: 20;
27
+ /** Maximum JSON file size (20MB — large API response dumps) */
28
+ readonly JSON_MAX_MB: 20;
29
+ /** Maximum YAML file size (20MB — large config files) */
30
+ readonly YAML_MAX_MB: 20;
31
+ /** Maximum XML file size (20MB — large config/data files) */
32
+ readonly XML_MAX_MB: 20;
33
+ /** Maximum video file size (500MB — long meeting recordings, screen captures) */
34
+ readonly VIDEO_MAX_MB: 500;
35
+ /** Maximum audio file size (500MB — long meeting recordings, call recordings) */
36
+ readonly AUDIO_MAX_MB: 500;
37
+ /** Maximum archive file size (200MB — large project archives) */
38
+ readonly ARCHIVE_MAX_MB: 200;
39
+ /** Maximum general file size (200MB — matches Curator's memory-safety cap) */
40
+ readonly GENERAL_MAX_MB: 200;
35
41
  };
36
42
  /**
37
43
  * Maximum file sizes in bytes for different file types
@@ -39,27 +45,33 @@ export declare const SIZE_LIMITS_MB: {
39
45
  export declare const SIZE_LIMITS_BYTES: {
40
46
  /** Maximum image file size (10MB) */
41
47
  readonly IMAGE_MAX: number;
42
- /** Maximum PDF file size (20MB) */
48
+ /** Maximum PDF file size (100MB) */
43
49
  readonly PDF_MAX: number;
44
- /** Maximum document file size (10MB) */
50
+ /** Maximum document file size (100MB) */
45
51
  readonly DOCUMENT_MAX: number;
46
- /** Maximum Word document size (10MB) */
52
+ /** Maximum Word document size (100MB) */
47
53
  readonly WORD_MAX: number;
48
- /** Maximum text file size (5MB) */
54
+ /** Maximum text file size (50MB) */
49
55
  readonly TEXT_MAX: number;
50
- /** Maximum CSV file size (10MB) */
56
+ /** Maximum CSV file size (50MB) */
51
57
  readonly CSV_MAX: number;
52
- /** Maximum Excel file size (10MB) */
58
+ /** Maximum Excel file size (100MB) */
53
59
  readonly EXCEL_MAX: number;
54
- /** Maximum source code file size (5MB) */
60
+ /** Maximum source code file size (20MB) */
55
61
  readonly SOURCE_CODE_MAX: number;
56
- /** Maximum JSON file size (5MB) */
62
+ /** Maximum JSON file size (20MB) */
57
63
  readonly JSON_MAX: number;
58
- /** Maximum YAML file size (5MB) */
64
+ /** Maximum YAML file size (20MB) */
59
65
  readonly YAML_MAX: number;
60
- /** Maximum XML file size (5MB) */
66
+ /** Maximum XML file size (20MB) */
61
67
  readonly XML_MAX: number;
62
- /** Maximum general file size (50MB) */
68
+ /** Maximum video file size (500MB) */
69
+ readonly VIDEO_MAX: number;
70
+ /** Maximum audio file size (500MB) */
71
+ readonly AUDIO_MAX: number;
72
+ /** Maximum archive file size (200MB) */
73
+ readonly ARCHIVE_MAX: number;
74
+ /** Maximum general file size (200MB) */
63
75
  readonly GENERAL_MAX: number;
64
76
  };
65
77
  /**
@@ -114,13 +126,13 @@ export declare const YAML_LIMITS: {
114
126
  */
115
127
  export declare const SIZE_LIMITS: {
116
128
  readonly IMAGE_MAX_MB: 10;
117
- readonly PDF_MAX_MB: 20;
118
- readonly DOCUMENT_MAX_MB: 10;
119
- readonly WORD_MAX_MB: 10;
120
- readonly TEXT_MAX_MB: 5;
121
- readonly CSV_MAX_MB: 10;
122
- readonly EXCEL_MAX_MB: 10;
123
- readonly SOURCE_CODE_MAX_MB: 5;
129
+ readonly PDF_MAX_MB: 100;
130
+ readonly DOCUMENT_MAX_MB: 100;
131
+ readonly WORD_MAX_MB: 100;
132
+ readonly TEXT_MAX_MB: 50;
133
+ readonly CSV_MAX_MB: 50;
134
+ readonly EXCEL_MAX_MB: 100;
135
+ readonly SOURCE_CODE_MAX_MB: 20;
124
136
  readonly MAX_FILE_SIZE: number;
125
137
  readonly MAX_IMAGE_SIZE: number;
126
138
  readonly MAX_TEXT_SIZE: number;
@@ -13,28 +13,34 @@
13
13
  export const SIZE_LIMITS_MB = {
14
14
  /** Maximum image file size (10MB) */
15
15
  IMAGE_MAX_MB: 10,
16
- /** Maximum PDF file size (20MB) */
17
- PDF_MAX_MB: 20,
18
- /** Maximum document file size (10MB) */
19
- DOCUMENT_MAX_MB: 10,
20
- /** Maximum Word document size (10MB) */
21
- WORD_MAX_MB: 10,
22
- /** Maximum text file size (5MB) */
23
- TEXT_MAX_MB: 5,
24
- /** Maximum CSV file size (10MB) */
25
- CSV_MAX_MB: 10,
26
- /** Maximum Excel file size (10MB) */
27
- EXCEL_MAX_MB: 10,
28
- /** Maximum source code file size (5MB) */
29
- SOURCE_CODE_MAX_MB: 5,
30
- /** Maximum JSON file size (5MB) */
31
- JSON_MAX_MB: 5,
32
- /** Maximum YAML file size (5MB) */
33
- YAML_MAX_MB: 5,
34
- /** Maximum XML file size (5MB) */
35
- XML_MAX_MB: 5,
36
- /** Maximum general file size (50MB) */
37
- GENERAL_MAX_MB: 50,
16
+ /** Maximum PDF file size (100MB — enterprise reports, long research papers) */
17
+ PDF_MAX_MB: 100,
18
+ /** Maximum document file size (100MB — enterprise docs with embedded images) */
19
+ DOCUMENT_MAX_MB: 100,
20
+ /** Maximum Word document size (100MB — PRDs, specs with embedded media) */
21
+ WORD_MAX_MB: 100,
22
+ /** Maximum text file size (50MB — large log files, build output) */
23
+ TEXT_MAX_MB: 50,
24
+ /** Maximum CSV file size (50MB — large data exports) */
25
+ CSV_MAX_MB: 50,
26
+ /** Maximum Excel file size (100MB — enterprise spreadsheets, data exports) */
27
+ EXCEL_MAX_MB: 100,
28
+ /** Maximum source code file size (20MB — large codebases) */
29
+ SOURCE_CODE_MAX_MB: 20,
30
+ /** Maximum JSON file size (20MB — large API response dumps) */
31
+ JSON_MAX_MB: 20,
32
+ /** Maximum YAML file size (20MB — large config files) */
33
+ YAML_MAX_MB: 20,
34
+ /** Maximum XML file size (20MB — large config/data files) */
35
+ XML_MAX_MB: 20,
36
+ /** Maximum video file size (500MB — long meeting recordings, screen captures) */
37
+ VIDEO_MAX_MB: 500,
38
+ /** Maximum audio file size (500MB — long meeting recordings, call recordings) */
39
+ AUDIO_MAX_MB: 500,
40
+ /** Maximum archive file size (200MB — large project archives) */
41
+ ARCHIVE_MAX_MB: 200,
42
+ /** Maximum general file size (200MB — matches Curator's memory-safety cap) */
43
+ GENERAL_MAX_MB: 200,
38
44
  };
39
45
  // =============================================================================
40
46
  // FILE SIZE LIMITS (in bytes)
@@ -45,28 +51,34 @@ export const SIZE_LIMITS_MB = {
45
51
  export const SIZE_LIMITS_BYTES = {
46
52
  /** Maximum image file size (10MB) */
47
53
  IMAGE_MAX: 10 * 1024 * 1024,
48
- /** Maximum PDF file size (20MB) */
49
- PDF_MAX: 20 * 1024 * 1024,
50
- /** Maximum document file size (10MB) */
51
- DOCUMENT_MAX: 10 * 1024 * 1024,
52
- /** Maximum Word document size (10MB) */
53
- WORD_MAX: 10 * 1024 * 1024,
54
- /** Maximum text file size (5MB) */
55
- TEXT_MAX: 5 * 1024 * 1024,
56
- /** Maximum CSV file size (10MB) */
57
- CSV_MAX: 10 * 1024 * 1024,
58
- /** Maximum Excel file size (10MB) */
59
- EXCEL_MAX: 10 * 1024 * 1024,
60
- /** Maximum source code file size (5MB) */
61
- SOURCE_CODE_MAX: 5 * 1024 * 1024,
62
- /** Maximum JSON file size (5MB) */
63
- JSON_MAX: 5 * 1024 * 1024,
64
- /** Maximum YAML file size (5MB) */
65
- YAML_MAX: 5 * 1024 * 1024,
66
- /** Maximum XML file size (5MB) */
67
- XML_MAX: 5 * 1024 * 1024,
68
- /** Maximum general file size (50MB) */
69
- GENERAL_MAX: 50 * 1024 * 1024,
54
+ /** Maximum PDF file size (100MB) */
55
+ PDF_MAX: 100 * 1024 * 1024,
56
+ /** Maximum document file size (100MB) */
57
+ DOCUMENT_MAX: 100 * 1024 * 1024,
58
+ /** Maximum Word document size (100MB) */
59
+ WORD_MAX: 100 * 1024 * 1024,
60
+ /** Maximum text file size (50MB) */
61
+ TEXT_MAX: 50 * 1024 * 1024,
62
+ /** Maximum CSV file size (50MB) */
63
+ CSV_MAX: 50 * 1024 * 1024,
64
+ /** Maximum Excel file size (100MB) */
65
+ EXCEL_MAX: 100 * 1024 * 1024,
66
+ /** Maximum source code file size (20MB) */
67
+ SOURCE_CODE_MAX: 20 * 1024 * 1024,
68
+ /** Maximum JSON file size (20MB) */
69
+ JSON_MAX: 20 * 1024 * 1024,
70
+ /** Maximum YAML file size (20MB) */
71
+ YAML_MAX: 20 * 1024 * 1024,
72
+ /** Maximum XML file size (20MB) */
73
+ XML_MAX: 20 * 1024 * 1024,
74
+ /** Maximum video file size (500MB) */
75
+ VIDEO_MAX: 500 * 1024 * 1024,
76
+ /** Maximum audio file size (500MB) */
77
+ AUDIO_MAX: 500 * 1024 * 1024,
78
+ /** Maximum archive file size (200MB) */
79
+ ARCHIVE_MAX: 200 * 1024 * 1024,
80
+ /** Maximum general file size (200MB) */
81
+ GENERAL_MAX: 200 * 1024 * 1024,
70
82
  };
71
83
  // =============================================================================
72
84
  // PROCESSING LIMITS
@@ -123,6 +123,20 @@ export declare class ExcelProcessor extends BaseFileProcessor<ProcessedExcel> {
123
123
  * @returns Concatenated plain text
124
124
  */
125
125
  private extractRichText;
126
+ /**
127
+ * Extract a specific range from a spreadsheet.
128
+ *
129
+ * Called by the `extract_file_content` tool for targeted data access.
130
+ * Returns TSV-formatted text for the specified sheet, row range, and columns.
131
+ *
132
+ * @param buffer - Excel file buffer
133
+ * @param sheet - Sheet name or 0-based index (default: first sheet)
134
+ * @param rowStart - Starting row (1-indexed, default: 1)
135
+ * @param rowEnd - Ending row (1-indexed, default: all rows)
136
+ * @param columns - Specific column letters to include (e.g., ["A", "B", "D"])
137
+ * @returns TSV-formatted string with the extracted data
138
+ */
139
+ extractSheetRange(buffer: Buffer, sheet?: string | number, rowStart?: number, rowEnd?: number, columns?: string[]): Promise<string>;
126
140
  }
127
141
  /**
128
142
  * Singleton Excel processor instance.
@@ -35,7 +35,8 @@
35
35
  * }
36
36
  * ```
37
37
  */
38
- import { Workbook } from "exceljs";
38
+ import ExcelJS from "exceljs";
39
+ const { Workbook } = ExcelJS;
39
40
  import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
40
41
  import { SIZE_LIMITS } from "../config/index.js";
41
42
  import { FileErrorCode } from "../errors/index.js";
@@ -385,6 +386,76 @@ export class ExcelProcessor extends BaseFileProcessor {
385
386
  })
386
387
  .join("");
387
388
  }
389
+ // ===========================================================================
390
+ // TARGETED EXTRACTION API
391
+ // ===========================================================================
392
+ /**
393
+ * Extract a specific range from a spreadsheet.
394
+ *
395
+ * Called by the `extract_file_content` tool for targeted data access.
396
+ * Returns TSV-formatted text for the specified sheet, row range, and columns.
397
+ *
398
+ * @param buffer - Excel file buffer
399
+ * @param sheet - Sheet name or 0-based index (default: first sheet)
400
+ * @param rowStart - Starting row (1-indexed, default: 1)
401
+ * @param rowEnd - Ending row (1-indexed, default: all rows)
402
+ * @param columns - Specific column letters to include (e.g., ["A", "B", "D"])
403
+ * @returns TSV-formatted string with the extracted data
404
+ */
405
+ async extractSheetRange(buffer, sheet, rowStart = 1, rowEnd, columns) {
406
+ const workbook = await this.parseWorkbook(buffer);
407
+ // Resolve the target worksheet
408
+ let worksheet;
409
+ if (typeof sheet === "number") {
410
+ // exceljs worksheets are 1-indexed
411
+ worksheet = workbook.worksheets[sheet];
412
+ }
413
+ else if (typeof sheet === "string") {
414
+ worksheet = workbook.getWorksheet(sheet);
415
+ }
416
+ else {
417
+ worksheet = workbook.worksheets[0];
418
+ }
419
+ if (!worksheet) {
420
+ const sheetNames = workbook.worksheets.map((ws) => ws.name).join(", ");
421
+ return `Sheet not found. Available sheets: ${sheetNames}`;
422
+ }
423
+ // Convert column letters to 1-based column indices if specified
424
+ const columnIndices = columns?.map((col) => {
425
+ let index = 0;
426
+ for (let i = 0; i < col.length; i++) {
427
+ index = index * 26 + col.toUpperCase().charCodeAt(i) - 64;
428
+ }
429
+ return index;
430
+ });
431
+ const lines = [];
432
+ lines.push(`## Sheet: ${worksheet.name}`);
433
+ const actualRowEnd = rowEnd ?? worksheet.rowCount;
434
+ let rowCount = 0;
435
+ worksheet.eachRow({ includeEmpty: false }, (row, rowNumber) => {
436
+ if (rowNumber < rowStart || rowNumber > actualRowEnd) {
437
+ return;
438
+ }
439
+ rowCount++;
440
+ const values = [];
441
+ row.eachCell({ includeEmpty: true }, (cell, colNumber) => {
442
+ if (columnIndices && !columnIndices.includes(colNumber)) {
443
+ return;
444
+ }
445
+ const val = this.getCellValue(cell.value);
446
+ values.push(val === null ? "" : String(val));
447
+ });
448
+ // Add row number prefix for easy reference
449
+ lines.push(`${rowNumber}\t${values.join("\t")}`);
450
+ });
451
+ if (rowCount === 0) {
452
+ lines.push(`(No data in rows ${rowStart}-${actualRowEnd})`);
453
+ }
454
+ else {
455
+ lines.push(`\n(${rowCount} rows, range ${rowStart}-${actualRowEnd})`);
456
+ }
457
+ return lines.join("\n");
458
+ }
388
459
  }
389
460
  // =============================================================================
390
461
  // SINGLETON INSTANCE
@@ -0,0 +1,63 @@
1
+ /**
2
+ * PowerPoint (PPTX) Processing Utility
3
+ *
4
+ * Extracts text content from PowerPoint (.pptx) files by treating them
5
+ * as ZIP archives and parsing the slide XML files within.
6
+ *
7
+ * PPTX files are ZIP archives containing:
8
+ * - ppt/slides/slide1.xml, slide2.xml, ... — slide content
9
+ * - ppt/slideMasters/ — master slide templates
10
+ * - ppt/slideLayouts/ — slide layout definitions
11
+ *
12
+ * Text is extracted from `<a:t>` elements in the slide XML files.
13
+ * Slides are sorted by number and presented in reading order.
14
+ *
15
+ * Uses `adm-zip` (already a project dependency) for ZIP extraction.
16
+ *
17
+ * @module processors/document/PptxProcessor
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { PptxProcessor } from "./PptxProcessor.js";
22
+ *
23
+ * const text = await PptxProcessor.extractText(buffer);
24
+ * if (text) {
25
+ * console.log("Extracted text:", text);
26
+ * }
27
+ * ```
28
+ */
29
+ /**
30
+ * Static utility class for extracting text from PPTX files.
31
+ *
32
+ * Designed as a static class (not extending BaseFileProcessor) because
33
+ * PPTX processing is straightforward ZIP+XML extraction and does not
34
+ * need the full download/validate/process pipeline of BaseFileProcessor.
35
+ */
36
+ export declare class PptxProcessor {
37
+ /**
38
+ * Extract all text content from a PPTX buffer.
39
+ *
40
+ * @param content - Raw PPTX file buffer
41
+ * @returns Formatted text content with slide headers, or null if no text found
42
+ * @throws Error if the buffer is not a valid ZIP/PPTX file
43
+ */
44
+ static extractText(content: Buffer): Promise<string | null>;
45
+ /**
46
+ * Extract text strings from a slide XML document.
47
+ * Finds all `<a:t>` elements and returns their text content.
48
+ *
49
+ * @param xml - Raw XML string from a slide file
50
+ * @returns Array of text strings found in the slide
51
+ */
52
+ private static extractTextFromXml;
53
+ /**
54
+ * Extract text from specific slides in a PPTX file.
55
+ *
56
+ * Called by the `extract_file_content` tool for targeted slide access.
57
+ *
58
+ * @param content - Raw PPTX file buffer
59
+ * @param slideNumbers - Array of 1-indexed slide numbers to extract
60
+ * @returns Formatted text from the requested slides
61
+ */
62
+ static extractSlides(content: Buffer, slideNumbers: number[]): Promise<string>;
63
+ }
@@ -0,0 +1,157 @@
1
+ /**
2
+ * PowerPoint (PPTX) Processing Utility
3
+ *
4
+ * Extracts text content from PowerPoint (.pptx) files by treating them
5
+ * as ZIP archives and parsing the slide XML files within.
6
+ *
7
+ * PPTX files are ZIP archives containing:
8
+ * - ppt/slides/slide1.xml, slide2.xml, ... — slide content
9
+ * - ppt/slideMasters/ — master slide templates
10
+ * - ppt/slideLayouts/ — slide layout definitions
11
+ *
12
+ * Text is extracted from `<a:t>` elements in the slide XML files.
13
+ * Slides are sorted by number and presented in reading order.
14
+ *
15
+ * Uses `adm-zip` (already a project dependency) for ZIP extraction.
16
+ *
17
+ * @module processors/document/PptxProcessor
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { PptxProcessor } from "./PptxProcessor.js";
22
+ *
23
+ * const text = await PptxProcessor.extractText(buffer);
24
+ * if (text) {
25
+ * console.log("Extracted text:", text);
26
+ * }
27
+ * ```
28
+ */
29
+ import AdmZip from "adm-zip";
30
+ /**
31
+ * Regex to match text content within PowerPoint XML `<a:t>` elements.
32
+ * These elements contain the actual visible text on slides.
33
+ */
34
+ const TEXT_ELEMENT_REGEX = /<a:t[^>]*>([\s\S]*?)<\/a:t>/g;
35
+ /**
36
+ * Regex to match slide filenames and extract slide number.
37
+ * Matches entries like "ppt/slides/slide1.xml", "ppt/slides/slide12.xml".
38
+ */
39
+ const SLIDE_ENTRY_REGEX = /^ppt\/slides\/slide(\d+)\.xml$/;
40
+ /**
41
+ * Static utility class for extracting text from PPTX files.
42
+ *
43
+ * Designed as a static class (not extending BaseFileProcessor) because
44
+ * PPTX processing is straightforward ZIP+XML extraction and does not
45
+ * need the full download/validate/process pipeline of BaseFileProcessor.
46
+ */
47
+ export class PptxProcessor {
48
+ /**
49
+ * Extract all text content from a PPTX buffer.
50
+ *
51
+ * @param content - Raw PPTX file buffer
52
+ * @returns Formatted text content with slide headers, or null if no text found
53
+ * @throws Error if the buffer is not a valid ZIP/PPTX file
54
+ */
55
+ static async extractText(content) {
56
+ const zip = new AdmZip(content);
57
+ const entries = zip.getEntries();
58
+ // Collect slide entries with their slide numbers for sorting
59
+ const slides = [];
60
+ for (const entry of entries) {
61
+ const match = entry.entryName.match(SLIDE_ENTRY_REGEX);
62
+ if (match) {
63
+ const slideNumber = parseInt(match[1], 10);
64
+ const xmlContent = entry.getData().toString("utf-8");
65
+ slides.push({ slideNumber, xml: xmlContent });
66
+ }
67
+ }
68
+ // Sort slides by number (slide1, slide2, ...)
69
+ slides.sort((a, b) => a.slideNumber - b.slideNumber);
70
+ if (slides.length === 0) {
71
+ return null;
72
+ }
73
+ const parts = [];
74
+ parts.push(`Presentation: ${slides.length} slide(s)\n`);
75
+ for (const slide of slides) {
76
+ const texts = PptxProcessor.extractTextFromXml(slide.xml);
77
+ if (texts.length > 0) {
78
+ parts.push(`### Slide ${slide.slideNumber}`);
79
+ parts.push(texts.join("\n"));
80
+ parts.push(""); // blank line between slides
81
+ }
82
+ }
83
+ const result = parts.join("\n").trim();
84
+ return result || null;
85
+ }
86
+ /**
87
+ * Extract text strings from a slide XML document.
88
+ * Finds all `<a:t>` elements and returns their text content.
89
+ *
90
+ * @param xml - Raw XML string from a slide file
91
+ * @returns Array of text strings found in the slide
92
+ */
93
+ static extractTextFromXml(xml) {
94
+ const texts = [];
95
+ // Reset regex state for re-entrant usage
96
+ TEXT_ELEMENT_REGEX.lastIndex = 0;
97
+ for (let match = TEXT_ELEMENT_REGEX.exec(xml); match !== null; match = TEXT_ELEMENT_REGEX.exec(xml)) {
98
+ const text = match[1].trim();
99
+ if (text) {
100
+ texts.push(text);
101
+ }
102
+ }
103
+ return texts;
104
+ }
105
+ // ===========================================================================
106
+ // TARGETED EXTRACTION API
107
+ // ===========================================================================
108
+ /**
109
+ * Extract text from specific slides in a PPTX file.
110
+ *
111
+ * Called by the `extract_file_content` tool for targeted slide access.
112
+ *
113
+ * @param content - Raw PPTX file buffer
114
+ * @param slideNumbers - Array of 1-indexed slide numbers to extract
115
+ * @returns Formatted text from the requested slides
116
+ */
117
+ static async extractSlides(content, slideNumbers) {
118
+ const zip = new AdmZip(content);
119
+ const entries = zip.getEntries();
120
+ // Collect all slides
121
+ const slides = [];
122
+ for (const entry of entries) {
123
+ const match = entry.entryName.match(SLIDE_ENTRY_REGEX);
124
+ if (match) {
125
+ const slideNumber = parseInt(match[1], 10);
126
+ if (slideNumbers.includes(slideNumber)) {
127
+ const xmlContent = entry.getData().toString("utf-8");
128
+ slides.push({ slideNumber, xml: xmlContent });
129
+ }
130
+ }
131
+ }
132
+ slides.sort((a, b) => a.slideNumber - b.slideNumber);
133
+ if (slides.length === 0) {
134
+ // List total slides to help the LLM
135
+ let totalSlides = 0;
136
+ for (const entry of entries) {
137
+ if (SLIDE_ENTRY_REGEX.test(entry.entryName)) {
138
+ totalSlides++;
139
+ }
140
+ }
141
+ return `Slides ${slideNumbers.join(", ")} not found. This presentation has ${totalSlides} slide(s).`;
142
+ }
143
+ const parts = [];
144
+ for (const slide of slides) {
145
+ const texts = PptxProcessor.extractTextFromXml(slide.xml);
146
+ parts.push(`### Slide ${slide.slideNumber}`);
147
+ if (texts.length > 0) {
148
+ parts.push(texts.join("\n"));
149
+ }
150
+ else {
151
+ parts.push("(No text content on this slide)");
152
+ }
153
+ parts.push("");
154
+ }
155
+ return parts.join("\n").trim();
156
+ }
157
+ }
@@ -50,5 +50,6 @@
50
50
  */
51
51
  export { isWordFile, type ProcessedWord, processWord, validateWordSize, WordProcessor, wordProcessor, } from "./WordProcessor.js";
52
52
  export { ExcelProcessor, type ExcelWorksheet, excelProcessor, getExcelMaxRows, getExcelMaxSheets, getExcelMaxSizeMB, isExcelFile, type ProcessedExcel, processExcel, validateExcelSize, } from "./ExcelProcessor.js";
53
+ export { PptxProcessor, } from "./PptxProcessor.js";
53
54
  export { isRtfFile, type ProcessedRtf, processRtf, RtfProcessor, rtfProcessor, validateRtfSize, } from "./RtfProcessor.js";
54
55
  export { getOpenDocumentMaxSizeMB, isOpenDocumentFile, OpenDocumentProcessor, openDocumentProcessor, type ProcessedOpenDocument, processOpenDocument, validateOpenDocumentSize, } from "./OpenDocumentProcessor.js";
@@ -69,6 +69,12 @@ excelProcessor,
69
69
  // Helper functions
70
70
  getExcelMaxRows, getExcelMaxSheets, getExcelMaxSizeMB, isExcelFile, processExcel, validateExcelSize, } from "./ExcelProcessor.js";
71
71
  // =============================================================================
72
+ // PPTX PROCESSOR
73
+ // =============================================================================
74
+ export {
75
+ // Class
76
+ PptxProcessor, } from "./PptxProcessor.js";
77
+ // =============================================================================
72
78
  // RTF PROCESSOR
73
79
  // =============================================================================
74
80
  export {
@@ -67,7 +67,7 @@ export declare enum FileErrorCode {
67
67
  /**
68
68
  * Error message template with user-friendly messaging and retry information.
69
69
  */
70
- export interface ErrorMessageTemplate {
70
+ export type ErrorMessageTemplate = {
71
71
  /** Technical error message */
72
72
  message: string;
73
73
  /** User-friendly error message */
@@ -76,7 +76,7 @@ export interface ErrorMessageTemplate {
76
76
  suggestedAction: string;
77
77
  /** Whether this error is potentially retryable */
78
78
  retryable: boolean;
79
- }
79
+ };
80
80
  /**
81
81
  * Error messages map with technical and user-friendly messaging for each error code.
82
82
  * All messages are designed to be clear, actionable, and free of technical jargon.
@@ -13,7 +13,7 @@ export type { FileProcessingError };
13
13
  /**
14
14
  * Summary of file processing operations.
15
15
  */
16
- export interface FileProcessingSummary {
16
+ export type FileProcessingSummary = {
17
17
  /** Total number of files attempted */
18
18
  totalFiles: number;
19
19
  /** Successfully processed files */
@@ -38,7 +38,7 @@ export interface FileProcessingSummary {
38
38
  filename: string;
39
39
  message: string;
40
40
  }>;
41
- }
41
+ };
42
42
  /**
43
43
  * Create a structured file processing error with user-friendly messaging.
44
44
  *