@juspay/neurolink 9.1.1 → 9.3.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 (555) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +106 -37
  3. package/dist/agent/directTools.d.ts +11 -11
  4. package/dist/cli/commands/config.d.ts +6 -6
  5. package/dist/cli/commands/rag.d.ts +19 -0
  6. package/dist/cli/commands/rag.js +756 -0
  7. package/dist/cli/factories/commandFactory.js +146 -83
  8. package/dist/cli/parser.js +4 -1
  9. package/dist/core/baseProvider.d.ts +43 -30
  10. package/dist/core/baseProvider.js +98 -138
  11. package/dist/core/conversationMemoryFactory.d.ts +2 -2
  12. package/dist/core/conversationMemoryFactory.js +2 -2
  13. package/dist/core/conversationMemoryInitializer.d.ts +1 -2
  14. package/dist/core/conversationMemoryInitializer.js +2 -2
  15. package/dist/core/infrastructure/baseError.d.ts +21 -0
  16. package/dist/core/infrastructure/baseError.js +22 -0
  17. package/dist/core/infrastructure/baseFactory.d.ts +21 -0
  18. package/dist/core/infrastructure/baseFactory.js +54 -0
  19. package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
  20. package/dist/core/infrastructure/baseRegistry.js +49 -0
  21. package/dist/core/infrastructure/index.d.ts +5 -0
  22. package/dist/core/infrastructure/index.js +5 -0
  23. package/dist/core/infrastructure/retry.d.ts +7 -0
  24. package/dist/core/infrastructure/retry.js +20 -0
  25. package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
  26. package/dist/core/infrastructure/typedEventEmitter.js +23 -0
  27. package/dist/core/redisConversationMemoryManager.d.ts +1 -6
  28. package/dist/core/redisConversationMemoryManager.js +7 -19
  29. package/dist/factories/providerFactory.d.ts +5 -3
  30. package/dist/factories/providerFactory.js +31 -24
  31. package/dist/image-gen/ImageGenService.d.ts +143 -0
  32. package/dist/image-gen/ImageGenService.js +345 -0
  33. package/dist/image-gen/imageGenTools.d.ts +126 -0
  34. package/dist/image-gen/imageGenTools.js +304 -0
  35. package/dist/image-gen/index.d.ts +46 -0
  36. package/dist/image-gen/index.js +48 -0
  37. package/dist/image-gen/types.d.ts +237 -0
  38. package/dist/image-gen/types.js +24 -0
  39. package/dist/index.d.ts +46 -12
  40. package/dist/index.js +88 -36
  41. package/dist/lib/agent/directTools.d.ts +8 -8
  42. package/dist/lib/core/baseProvider.d.ts +43 -30
  43. package/dist/lib/core/baseProvider.js +98 -138
  44. package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
  45. package/dist/lib/core/conversationMemoryFactory.js +2 -2
  46. package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
  47. package/dist/lib/core/conversationMemoryInitializer.js +2 -2
  48. package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
  49. package/dist/lib/core/infrastructure/baseError.js +23 -0
  50. package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
  51. package/dist/lib/core/infrastructure/baseFactory.js +55 -0
  52. package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
  53. package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
  54. package/dist/lib/core/infrastructure/index.d.ts +5 -0
  55. package/dist/lib/core/infrastructure/index.js +6 -0
  56. package/dist/lib/core/infrastructure/retry.d.ts +7 -0
  57. package/dist/lib/core/infrastructure/retry.js +21 -0
  58. package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
  59. package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
  60. package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
  61. package/dist/lib/core/redisConversationMemoryManager.js +7 -19
  62. package/dist/lib/factories/providerFactory.d.ts +5 -3
  63. package/dist/lib/factories/providerFactory.js +31 -24
  64. package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
  65. package/dist/lib/image-gen/ImageGenService.js +346 -0
  66. package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
  67. package/dist/lib/image-gen/imageGenTools.js +305 -0
  68. package/dist/lib/image-gen/index.d.ts +46 -0
  69. package/dist/lib/image-gen/index.js +49 -0
  70. package/dist/lib/image-gen/types.d.ts +237 -0
  71. package/dist/lib/image-gen/types.js +25 -0
  72. package/dist/lib/index.d.ts +46 -12
  73. package/dist/lib/index.js +88 -36
  74. package/dist/lib/mcp/index.d.ts +6 -5
  75. package/dist/lib/mcp/index.js +7 -5
  76. package/dist/lib/neurolink.d.ts +11 -13
  77. package/dist/lib/neurolink.js +95 -29
  78. package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
  79. package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
  80. package/dist/lib/processors/base/index.d.ts +14 -0
  81. package/dist/lib/processors/base/index.js +20 -0
  82. package/dist/lib/processors/base/types.d.ts +593 -0
  83. package/dist/lib/processors/base/types.js +77 -0
  84. package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
  85. package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
  86. package/dist/lib/processors/cli/index.d.ts +37 -0
  87. package/dist/lib/processors/cli/index.js +50 -0
  88. package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
  89. package/dist/lib/processors/code/ConfigProcessor.js +401 -0
  90. package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
  91. package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
  92. package/dist/lib/processors/code/index.d.ts +44 -0
  93. package/dist/lib/processors/code/index.js +61 -0
  94. package/dist/lib/processors/config/fileTypes.d.ts +283 -0
  95. package/dist/lib/processors/config/fileTypes.js +521 -0
  96. package/dist/lib/processors/config/index.d.ts +32 -0
  97. package/dist/lib/processors/config/index.js +93 -0
  98. package/dist/lib/processors/config/languageMap.d.ts +66 -0
  99. package/dist/lib/processors/config/languageMap.js +411 -0
  100. package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
  101. package/dist/lib/processors/config/mimeTypes.js +339 -0
  102. package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
  103. package/dist/lib/processors/config/sizeLimits.js +247 -0
  104. package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
  105. package/dist/lib/processors/data/JsonProcessor.js +204 -0
  106. package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
  107. package/dist/lib/processors/data/XmlProcessor.js +284 -0
  108. package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
  109. package/dist/lib/processors/data/YamlProcessor.js +295 -0
  110. package/dist/lib/processors/data/index.d.ts +49 -0
  111. package/dist/lib/processors/data/index.js +77 -0
  112. package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
  113. package/dist/lib/processors/document/ExcelProcessor.js +520 -0
  114. package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
  115. package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
  116. package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
  117. package/dist/lib/processors/document/RtfProcessor.js +362 -0
  118. package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
  119. package/dist/lib/processors/document/WordProcessor.js +354 -0
  120. package/dist/lib/processors/document/index.d.ts +54 -0
  121. package/dist/lib/processors/document/index.js +91 -0
  122. package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
  123. package/dist/lib/processors/errors/FileErrorCode.js +256 -0
  124. package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
  125. package/dist/lib/processors/errors/errorHelpers.js +379 -0
  126. package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
  127. package/dist/lib/processors/errors/errorSerializer.js +508 -0
  128. package/dist/lib/processors/errors/index.d.ts +46 -0
  129. package/dist/lib/processors/errors/index.js +50 -0
  130. package/dist/lib/processors/index.d.ts +76 -0
  131. package/dist/lib/processors/index.js +113 -0
  132. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
  133. package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
  134. package/dist/lib/processors/integration/index.d.ts +42 -0
  135. package/dist/lib/processors/integration/index.js +45 -0
  136. package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
  137. package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
  138. package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
  139. package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
  140. package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
  141. package/dist/lib/processors/markup/SvgProcessor.js +241 -0
  142. package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
  143. package/dist/lib/processors/markup/TextProcessor.js +189 -0
  144. package/dist/lib/processors/markup/index.d.ts +66 -0
  145. package/dist/lib/processors/markup/index.js +103 -0
  146. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
  147. package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
  148. package/dist/lib/processors/registry/index.d.ts +12 -0
  149. package/dist/lib/processors/registry/index.js +17 -0
  150. package/dist/lib/processors/registry/types.d.ts +53 -0
  151. package/dist/lib/processors/registry/types.js +11 -0
  152. package/dist/lib/providers/amazonBedrock.d.ts +15 -2
  153. package/dist/lib/providers/amazonBedrock.js +65 -8
  154. package/dist/lib/providers/anthropic.d.ts +3 -3
  155. package/dist/lib/providers/anthropic.js +10 -7
  156. package/dist/lib/providers/googleAiStudio.d.ts +5 -5
  157. package/dist/lib/providers/googleAiStudio.js +10 -7
  158. package/dist/lib/providers/googleVertex.d.ts +16 -4
  159. package/dist/lib/providers/googleVertex.js +72 -16
  160. package/dist/lib/providers/litellm.d.ts +3 -3
  161. package/dist/lib/providers/litellm.js +10 -10
  162. package/dist/lib/providers/mistral.d.ts +3 -3
  163. package/dist/lib/providers/mistral.js +7 -6
  164. package/dist/lib/providers/ollama.d.ts +3 -4
  165. package/dist/lib/providers/ollama.js +7 -8
  166. package/dist/lib/providers/openAI.d.ts +14 -2
  167. package/dist/lib/providers/openAI.js +60 -6
  168. package/dist/lib/providers/openRouter.d.ts +2 -2
  169. package/dist/lib/providers/openRouter.js +10 -6
  170. package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
  171. package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
  172. package/dist/lib/rag/ChunkerFactory.js +321 -0
  173. package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
  174. package/dist/lib/rag/ChunkerRegistry.js +422 -0
  175. package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
  176. package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
  177. package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
  178. package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
  179. package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
  180. package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
  181. package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
  182. package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
  183. package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
  184. package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
  185. package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
  186. package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
  187. package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
  188. package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
  189. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  190. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
  191. package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
  192. package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
  193. package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
  194. package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
  195. package/dist/lib/rag/chunkers/index.d.ts +15 -0
  196. package/dist/lib/rag/chunkers/index.js +16 -0
  197. package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
  198. package/dist/lib/rag/chunking/characterChunker.js +143 -0
  199. package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
  200. package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
  201. package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
  202. package/dist/lib/rag/chunking/htmlChunker.js +248 -0
  203. package/dist/lib/rag/chunking/index.d.ts +15 -0
  204. package/dist/lib/rag/chunking/index.js +18 -0
  205. package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
  206. package/dist/lib/rag/chunking/jsonChunker.js +282 -0
  207. package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
  208. package/dist/lib/rag/chunking/latexChunker.js +252 -0
  209. package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
  210. package/dist/lib/rag/chunking/markdownChunker.js +202 -0
  211. package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
  212. package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
  213. package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
  214. package/dist/lib/rag/chunking/semanticChunker.js +307 -0
  215. package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
  216. package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
  217. package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
  218. package/dist/lib/rag/chunking/tokenChunker.js +184 -0
  219. package/dist/lib/rag/document/MDocument.d.ts +198 -0
  220. package/dist/lib/rag/document/MDocument.js +393 -0
  221. package/dist/lib/rag/document/index.d.ts +5 -0
  222. package/dist/lib/rag/document/index.js +6 -0
  223. package/dist/lib/rag/document/loaders.d.ts +201 -0
  224. package/dist/lib/rag/document/loaders.js +501 -0
  225. package/dist/lib/rag/errors/RAGError.d.ts +244 -0
  226. package/dist/lib/rag/errors/RAGError.js +275 -0
  227. package/dist/lib/rag/errors/index.d.ts +6 -0
  228. package/dist/lib/rag/errors/index.js +7 -0
  229. package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
  230. package/dist/lib/rag/graphRag/graphRAG.js +385 -0
  231. package/dist/lib/rag/graphRag/index.d.ts +4 -0
  232. package/dist/lib/rag/graphRag/index.js +5 -0
  233. package/dist/lib/rag/index.d.ts +103 -0
  234. package/dist/lib/rag/index.js +142 -0
  235. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  236. package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
  237. package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  238. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
  239. package/dist/lib/rag/metadata/index.d.ts +6 -0
  240. package/dist/lib/rag/metadata/index.js +10 -0
  241. package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
  242. package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
  243. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
  244. package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
  245. package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
  246. package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
  247. package/dist/lib/rag/pipeline/index.d.ts +5 -0
  248. package/dist/lib/rag/pipeline/index.js +6 -0
  249. package/dist/lib/rag/ragIntegration.d.ts +38 -0
  250. package/dist/lib/rag/ragIntegration.js +212 -0
  251. package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
  252. package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
  253. package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
  254. package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
  255. package/dist/lib/rag/reranker/index.d.ts +6 -0
  256. package/dist/lib/rag/reranker/index.js +10 -0
  257. package/dist/lib/rag/reranker/reranker.d.ts +71 -0
  258. package/dist/lib/rag/reranker/reranker.js +278 -0
  259. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
  260. package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
  261. package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
  262. package/dist/lib/rag/resilience/RetryHandler.js +301 -0
  263. package/dist/lib/rag/resilience/index.d.ts +7 -0
  264. package/dist/lib/rag/resilience/index.js +8 -0
  265. package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
  266. package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
  267. package/dist/lib/rag/retrieval/index.d.ts +5 -0
  268. package/dist/lib/rag/retrieval/index.js +6 -0
  269. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
  270. package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
  271. package/dist/lib/rag/types.d.ts +768 -0
  272. package/dist/lib/rag/types.js +9 -0
  273. package/dist/lib/server/index.d.ts +15 -11
  274. package/dist/lib/server/index.js +55 -51
  275. package/dist/lib/server/utils/validation.d.ts +2 -2
  276. package/dist/lib/types/common.d.ts +0 -1
  277. package/dist/lib/types/fileTypes.d.ts +1 -1
  278. package/dist/lib/types/generateTypes.d.ts +42 -8
  279. package/dist/lib/types/generateTypes.js +1 -1
  280. package/dist/lib/types/index.d.ts +25 -24
  281. package/dist/lib/types/index.js +21 -20
  282. package/dist/lib/types/modelTypes.d.ts +16 -16
  283. package/dist/lib/types/pptTypes.d.ts +14 -2
  284. package/dist/lib/types/pptTypes.js +16 -0
  285. package/dist/lib/types/streamTypes.d.ts +28 -8
  286. package/dist/lib/types/streamTypes.js +1 -1
  287. package/dist/lib/utils/async/delay.d.ts +40 -0
  288. package/dist/lib/utils/async/delay.js +43 -0
  289. package/dist/lib/utils/async/index.d.ts +23 -0
  290. package/dist/lib/utils/async/index.js +24 -0
  291. package/dist/lib/utils/async/retry.d.ts +141 -0
  292. package/dist/lib/utils/async/retry.js +172 -0
  293. package/dist/lib/utils/async/withTimeout.d.ts +73 -0
  294. package/dist/lib/utils/async/withTimeout.js +97 -0
  295. package/dist/lib/utils/fileDetector.d.ts +7 -1
  296. package/dist/lib/utils/fileDetector.js +91 -18
  297. package/dist/lib/utils/json/extract.d.ts +103 -0
  298. package/dist/lib/utils/json/extract.js +249 -0
  299. package/dist/lib/utils/json/index.d.ts +36 -0
  300. package/dist/lib/utils/json/index.js +37 -0
  301. package/dist/lib/utils/json/safeParse.d.ts +137 -0
  302. package/dist/lib/utils/json/safeParse.js +191 -0
  303. package/dist/lib/utils/messageBuilder.d.ts +2 -2
  304. package/dist/lib/utils/messageBuilder.js +15 -7
  305. package/dist/lib/utils/modelRouter.d.ts +4 -4
  306. package/dist/lib/utils/modelRouter.js +4 -4
  307. package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
  308. package/dist/lib/utils/sanitizers/filename.js +366 -0
  309. package/dist/lib/utils/sanitizers/html.d.ts +170 -0
  310. package/dist/lib/utils/sanitizers/html.js +326 -0
  311. package/dist/lib/utils/sanitizers/index.d.ts +26 -0
  312. package/dist/lib/utils/sanitizers/index.js +30 -0
  313. package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
  314. package/dist/lib/utils/sanitizers/svg.js +483 -0
  315. package/dist/mcp/index.d.ts +6 -5
  316. package/dist/mcp/index.js +7 -5
  317. package/dist/neurolink.d.ts +11 -13
  318. package/dist/neurolink.js +95 -29
  319. package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
  320. package/dist/processors/base/BaseFileProcessor.js +613 -0
  321. package/dist/processors/base/index.d.ts +14 -0
  322. package/dist/processors/base/index.js +19 -0
  323. package/dist/processors/base/types.d.ts +593 -0
  324. package/dist/processors/base/types.js +76 -0
  325. package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
  326. package/dist/processors/cli/fileProcessorCli.js +388 -0
  327. package/dist/processors/cli/index.d.ts +37 -0
  328. package/dist/processors/cli/index.js +49 -0
  329. package/dist/processors/code/ConfigProcessor.d.ts +171 -0
  330. package/dist/processors/code/ConfigProcessor.js +400 -0
  331. package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
  332. package/dist/processors/code/SourceCodeProcessor.js +304 -0
  333. package/dist/processors/code/index.d.ts +44 -0
  334. package/dist/processors/code/index.js +60 -0
  335. package/dist/processors/config/fileTypes.d.ts +283 -0
  336. package/dist/processors/config/fileTypes.js +520 -0
  337. package/dist/processors/config/index.d.ts +32 -0
  338. package/dist/processors/config/index.js +92 -0
  339. package/dist/processors/config/languageMap.d.ts +66 -0
  340. package/dist/processors/config/languageMap.js +410 -0
  341. package/dist/processors/config/mimeTypes.d.ts +376 -0
  342. package/dist/processors/config/mimeTypes.js +338 -0
  343. package/dist/processors/config/sizeLimits.d.ts +194 -0
  344. package/dist/processors/config/sizeLimits.js +246 -0
  345. package/dist/processors/data/JsonProcessor.d.ts +122 -0
  346. package/dist/processors/data/JsonProcessor.js +203 -0
  347. package/dist/processors/data/XmlProcessor.d.ts +160 -0
  348. package/dist/processors/data/XmlProcessor.js +283 -0
  349. package/dist/processors/data/YamlProcessor.d.ts +163 -0
  350. package/dist/processors/data/YamlProcessor.js +294 -0
  351. package/dist/processors/data/index.d.ts +49 -0
  352. package/dist/processors/data/index.js +76 -0
  353. package/dist/processors/document/ExcelProcessor.d.ts +238 -0
  354. package/dist/processors/document/ExcelProcessor.js +519 -0
  355. package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
  356. package/dist/processors/document/OpenDocumentProcessor.js +210 -0
  357. package/dist/processors/document/RtfProcessor.d.ts +152 -0
  358. package/dist/processors/document/RtfProcessor.js +361 -0
  359. package/dist/processors/document/WordProcessor.d.ts +168 -0
  360. package/dist/processors/document/WordProcessor.js +353 -0
  361. package/dist/processors/document/index.d.ts +54 -0
  362. package/dist/processors/document/index.js +90 -0
  363. package/dist/processors/errors/FileErrorCode.d.ts +98 -0
  364. package/dist/processors/errors/FileErrorCode.js +255 -0
  365. package/dist/processors/errors/errorHelpers.d.ts +151 -0
  366. package/dist/processors/errors/errorHelpers.js +378 -0
  367. package/dist/processors/errors/errorSerializer.d.ts +139 -0
  368. package/dist/processors/errors/errorSerializer.js +507 -0
  369. package/dist/processors/errors/index.d.ts +46 -0
  370. package/dist/processors/errors/index.js +49 -0
  371. package/dist/processors/index.d.ts +76 -0
  372. package/dist/processors/index.js +112 -0
  373. package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
  374. package/dist/processors/integration/FileProcessorIntegration.js +272 -0
  375. package/dist/processors/integration/index.d.ts +42 -0
  376. package/dist/processors/integration/index.js +44 -0
  377. package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
  378. package/dist/processors/markup/HtmlProcessor.js +249 -0
  379. package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
  380. package/dist/processors/markup/MarkdownProcessor.js +244 -0
  381. package/dist/processors/markup/SvgProcessor.d.ts +156 -0
  382. package/dist/processors/markup/SvgProcessor.js +240 -0
  383. package/dist/processors/markup/TextProcessor.d.ts +135 -0
  384. package/dist/processors/markup/TextProcessor.js +188 -0
  385. package/dist/processors/markup/index.d.ts +66 -0
  386. package/dist/processors/markup/index.js +102 -0
  387. package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
  388. package/dist/processors/registry/ProcessorRegistry.js +608 -0
  389. package/dist/processors/registry/index.d.ts +12 -0
  390. package/dist/processors/registry/index.js +16 -0
  391. package/dist/processors/registry/types.d.ts +53 -0
  392. package/dist/processors/registry/types.js +10 -0
  393. package/dist/providers/amazonBedrock.d.ts +15 -2
  394. package/dist/providers/amazonBedrock.js +65 -8
  395. package/dist/providers/anthropic.d.ts +3 -3
  396. package/dist/providers/anthropic.js +10 -7
  397. package/dist/providers/googleAiStudio.d.ts +5 -5
  398. package/dist/providers/googleAiStudio.js +10 -7
  399. package/dist/providers/googleVertex.d.ts +16 -4
  400. package/dist/providers/googleVertex.js +72 -16
  401. package/dist/providers/litellm.d.ts +3 -3
  402. package/dist/providers/litellm.js +10 -10
  403. package/dist/providers/mistral.d.ts +3 -3
  404. package/dist/providers/mistral.js +7 -6
  405. package/dist/providers/ollama.d.ts +3 -4
  406. package/dist/providers/ollama.js +7 -8
  407. package/dist/providers/openAI.d.ts +14 -2
  408. package/dist/providers/openAI.js +60 -6
  409. package/dist/providers/openRouter.d.ts +2 -2
  410. package/dist/providers/openRouter.js +10 -6
  411. package/dist/rag/ChunkerFactory.d.ts +91 -0
  412. package/dist/rag/ChunkerFactory.js +320 -0
  413. package/dist/rag/ChunkerRegistry.d.ts +91 -0
  414. package/dist/rag/ChunkerRegistry.js +421 -0
  415. package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
  416. package/dist/rag/chunkers/BaseChunker.js +143 -0
  417. package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
  418. package/dist/rag/chunkers/CharacterChunker.js +28 -0
  419. package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
  420. package/dist/rag/chunkers/HTMLChunker.js +38 -0
  421. package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
  422. package/dist/rag/chunkers/JSONChunker.js +68 -0
  423. package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
  424. package/dist/rag/chunkers/LaTeXChunker.js +63 -0
  425. package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
  426. package/dist/rag/chunkers/MarkdownChunker.js +102 -0
  427. package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
  428. package/dist/rag/chunkers/RecursiveChunker.js +139 -0
  429. package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  430. package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
  431. package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
  432. package/dist/rag/chunkers/SentenceChunker.js +66 -0
  433. package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
  434. package/dist/rag/chunkers/TokenChunker.js +61 -0
  435. package/dist/rag/chunkers/index.d.ts +15 -0
  436. package/dist/rag/chunkers/index.js +15 -0
  437. package/dist/rag/chunking/characterChunker.d.ts +16 -0
  438. package/dist/rag/chunking/characterChunker.js +142 -0
  439. package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
  440. package/dist/rag/chunking/chunkerRegistry.js +194 -0
  441. package/dist/rag/chunking/htmlChunker.d.ts +34 -0
  442. package/dist/rag/chunking/htmlChunker.js +247 -0
  443. package/dist/rag/chunking/index.d.ts +15 -0
  444. package/dist/rag/chunking/index.js +17 -0
  445. package/dist/rag/chunking/jsonChunker.d.ts +20 -0
  446. package/dist/rag/chunking/jsonChunker.js +281 -0
  447. package/dist/rag/chunking/latexChunker.d.ts +26 -0
  448. package/dist/rag/chunking/latexChunker.js +251 -0
  449. package/dist/rag/chunking/markdownChunker.d.ts +19 -0
  450. package/dist/rag/chunking/markdownChunker.js +201 -0
  451. package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
  452. package/dist/rag/chunking/recursiveChunker.js +148 -0
  453. package/dist/rag/chunking/semanticChunker.d.ts +41 -0
  454. package/dist/rag/chunking/semanticChunker.js +306 -0
  455. package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
  456. package/dist/rag/chunking/sentenceChunker.js +230 -0
  457. package/dist/rag/chunking/tokenChunker.d.ts +36 -0
  458. package/dist/rag/chunking/tokenChunker.js +183 -0
  459. package/dist/rag/document/MDocument.d.ts +198 -0
  460. package/dist/rag/document/MDocument.js +392 -0
  461. package/dist/rag/document/index.d.ts +5 -0
  462. package/dist/rag/document/index.js +5 -0
  463. package/dist/rag/document/loaders.d.ts +201 -0
  464. package/dist/rag/document/loaders.js +500 -0
  465. package/dist/rag/errors/RAGError.d.ts +244 -0
  466. package/dist/rag/errors/RAGError.js +274 -0
  467. package/dist/rag/errors/index.d.ts +6 -0
  468. package/dist/rag/errors/index.js +6 -0
  469. package/dist/rag/graphRag/graphRAG.d.ts +115 -0
  470. package/dist/rag/graphRag/graphRAG.js +384 -0
  471. package/dist/rag/graphRag/index.d.ts +4 -0
  472. package/dist/rag/graphRag/index.js +4 -0
  473. package/dist/rag/index.d.ts +103 -0
  474. package/dist/rag/index.js +141 -0
  475. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  476. package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
  477. package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  478. package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
  479. package/dist/rag/metadata/index.d.ts +6 -0
  480. package/dist/rag/metadata/index.js +9 -0
  481. package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
  482. package/dist/rag/metadata/metadataExtractor.js +277 -0
  483. package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
  484. package/dist/rag/pipeline/RAGPipeline.js +401 -0
  485. package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
  486. package/dist/rag/pipeline/contextAssembly.js +337 -0
  487. package/dist/rag/pipeline/index.d.ts +5 -0
  488. package/dist/rag/pipeline/index.js +5 -0
  489. package/dist/rag/ragIntegration.d.ts +38 -0
  490. package/dist/rag/ragIntegration.js +211 -0
  491. package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
  492. package/dist/rag/reranker/RerankerFactory.js +430 -0
  493. package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
  494. package/dist/rag/reranker/RerankerRegistry.js +402 -0
  495. package/dist/rag/reranker/index.d.ts +6 -0
  496. package/dist/rag/reranker/index.js +9 -0
  497. package/dist/rag/reranker/reranker.d.ts +71 -0
  498. package/dist/rag/reranker/reranker.js +277 -0
  499. package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
  500. package/dist/rag/resilience/CircuitBreaker.js +431 -0
  501. package/dist/rag/resilience/RetryHandler.d.ts +115 -0
  502. package/dist/rag/resilience/RetryHandler.js +300 -0
  503. package/dist/rag/resilience/index.d.ts +7 -0
  504. package/dist/rag/resilience/index.js +7 -0
  505. package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
  506. package/dist/rag/retrieval/hybridSearch.js +313 -0
  507. package/dist/rag/retrieval/index.d.ts +5 -0
  508. package/dist/rag/retrieval/index.js +5 -0
  509. package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
  510. package/dist/rag/retrieval/vectorQueryTool.js +289 -0
  511. package/dist/rag/types.d.ts +768 -0
  512. package/dist/rag/types.js +8 -0
  513. package/dist/server/index.d.ts +15 -11
  514. package/dist/server/index.js +55 -51
  515. package/dist/server/utils/validation.d.ts +8 -8
  516. package/dist/types/common.d.ts +0 -1
  517. package/dist/types/fileTypes.d.ts +1 -1
  518. package/dist/types/generateTypes.d.ts +42 -8
  519. package/dist/types/generateTypes.js +1 -1
  520. package/dist/types/index.d.ts +25 -24
  521. package/dist/types/index.js +21 -20
  522. package/dist/types/modelTypes.d.ts +10 -10
  523. package/dist/types/pptTypes.d.ts +14 -2
  524. package/dist/types/pptTypes.js +16 -0
  525. package/dist/types/streamTypes.d.ts +28 -8
  526. package/dist/types/streamTypes.js +1 -1
  527. package/dist/utils/async/delay.d.ts +40 -0
  528. package/dist/utils/async/delay.js +42 -0
  529. package/dist/utils/async/index.d.ts +23 -0
  530. package/dist/utils/async/index.js +23 -0
  531. package/dist/utils/async/retry.d.ts +141 -0
  532. package/dist/utils/async/retry.js +171 -0
  533. package/dist/utils/async/withTimeout.d.ts +73 -0
  534. package/dist/utils/async/withTimeout.js +96 -0
  535. package/dist/utils/fileDetector.d.ts +7 -1
  536. package/dist/utils/fileDetector.js +91 -18
  537. package/dist/utils/json/extract.d.ts +103 -0
  538. package/dist/utils/json/extract.js +248 -0
  539. package/dist/utils/json/index.d.ts +36 -0
  540. package/dist/utils/json/index.js +36 -0
  541. package/dist/utils/json/safeParse.d.ts +137 -0
  542. package/dist/utils/json/safeParse.js +190 -0
  543. package/dist/utils/messageBuilder.d.ts +2 -2
  544. package/dist/utils/messageBuilder.js +15 -7
  545. package/dist/utils/modelRouter.d.ts +4 -4
  546. package/dist/utils/modelRouter.js +4 -4
  547. package/dist/utils/sanitizers/filename.d.ts +137 -0
  548. package/dist/utils/sanitizers/filename.js +365 -0
  549. package/dist/utils/sanitizers/html.d.ts +170 -0
  550. package/dist/utils/sanitizers/html.js +325 -0
  551. package/dist/utils/sanitizers/index.d.ts +26 -0
  552. package/dist/utils/sanitizers/index.js +29 -0
  553. package/dist/utils/sanitizers/svg.d.ts +81 -0
  554. package/dist/utils/sanitizers/svg.js +482 -0
  555. package/package.json +2 -2
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Reranker Factory
3
+ *
4
+ * Factory for creating reranker instances with configuration.
5
+ * Follows the BaseFactory pattern for consistent lifecycle management.
6
+ */
7
+ import { BaseFactory } from "../../core/infrastructure/index.js";
8
+ import type { AIProvider } from "../../types/providers.js";
9
+ import type { RerankerOptions, RerankResult, VectorQueryResult } from "../types.js";
10
+ /**
11
+ * Supported reranker types
12
+ */
13
+ export type RerankerType = "llm" | "cross-encoder" | "cohere" | "simple" | "batch";
14
+ /**
15
+ * Reranker interface - all rerankers implement this
16
+ */
17
+ export interface Reranker {
18
+ /** Reranker type identifier */
19
+ readonly type: RerankerType;
20
+ /**
21
+ * Rerank results based on query relevance
22
+ * @param results - Vector search results to rerank
23
+ * @param query - Original search query
24
+ * @param options - Reranking options
25
+ * @returns Reranked results with scores
26
+ */
27
+ rerank(results: VectorQueryResult[], query: string, options?: RerankerOptions): Promise<RerankResult[]>;
28
+ }
29
+ /**
30
+ * Reranker configuration
31
+ */
32
+ export interface RerankerConfig {
33
+ /** Reranker type */
34
+ type: RerankerType;
35
+ /** Model name for LLM-based rerankers */
36
+ model?: string;
37
+ /** Provider for the model */
38
+ provider?: string;
39
+ /** Number of results to return after reranking */
40
+ topK?: number;
41
+ /** Scoring weights */
42
+ weights?: {
43
+ semantic?: number;
44
+ vector?: number;
45
+ position?: number;
46
+ };
47
+ /** API key for external services (e.g., Cohere) */
48
+ apiKey?: string;
49
+ }
50
+ /**
51
+ * Reranker metadata for discovery and documentation
52
+ */
53
+ export interface RerankerMetadata {
54
+ /** Human-readable description */
55
+ description: string;
56
+ /** Default configuration */
57
+ defaultConfig: Partial<RerankerConfig>;
58
+ /** Supported configuration options */
59
+ supportedOptions: string[];
60
+ /** Recommended use cases */
61
+ useCases: string[];
62
+ /** Alternative names for this reranker */
63
+ aliases: string[];
64
+ /** Whether this reranker requires an AI model */
65
+ requiresModel: boolean;
66
+ /** Whether this reranker requires external API */
67
+ requiresExternalAPI: boolean;
68
+ }
69
+ /**
70
+ * Reranker Factory
71
+ *
72
+ * Creates reranker instances based on type with configuration support.
73
+ * Uses lazy loading via dynamic imports to avoid circular dependencies.
74
+ */
75
+ export declare class RerankerFactory extends BaseFactory<Reranker, RerankerConfig> {
76
+ private static instance;
77
+ private metadataMap;
78
+ private modelProvider;
79
+ private constructor();
80
+ /**
81
+ * Get singleton instance
82
+ */
83
+ static getInstance(): RerankerFactory;
84
+ /**
85
+ * Reset singleton (for testing)
86
+ */
87
+ static resetInstance(): void;
88
+ /**
89
+ * Set the AI provider for LLM-based rerankers
90
+ */
91
+ setModelProvider(provider: AIProvider): void;
92
+ /**
93
+ * Register all default rerankers
94
+ */
95
+ protected registerAll(): Promise<void>;
96
+ /**
97
+ * Create LLM-based reranker wrapper
98
+ */
99
+ private createLLMReranker;
100
+ /**
101
+ * Create cross-encoder reranker wrapper
102
+ */
103
+ private createCrossEncoderReranker;
104
+ /**
105
+ * Create Cohere reranker wrapper
106
+ */
107
+ private createCohereReranker;
108
+ /**
109
+ * Create simple reranker wrapper
110
+ */
111
+ private createSimpleReranker;
112
+ /**
113
+ * Create batch reranker wrapper
114
+ */
115
+ private createBatchReranker;
116
+ /**
117
+ * Register a reranker with metadata and aliases
118
+ */
119
+ registerReranker(type: RerankerType, factory: (config?: RerankerConfig) => Promise<Reranker>, metadata: RerankerMetadata): void;
120
+ /**
121
+ * Create a reranker by type or alias
122
+ */
123
+ createReranker(typeOrAlias: string, config?: RerankerConfig): Promise<Reranker>;
124
+ /**
125
+ * Get metadata for a reranker
126
+ */
127
+ getRerankerMetadata(typeOrAlias: string): RerankerMetadata | undefined;
128
+ /**
129
+ * Get default configuration for a reranker
130
+ */
131
+ getDefaultConfig(typeOrAlias: string): Partial<RerankerConfig> | undefined;
132
+ /**
133
+ * Get available reranker types (not including aliases)
134
+ */
135
+ getAvailableTypes(): Promise<RerankerType[]>;
136
+ /**
137
+ * Get all aliases mapped to their types
138
+ */
139
+ getTypeAliases(): Map<string, string>;
140
+ /**
141
+ * Check if a type exists
142
+ */
143
+ hasType(typeOrAlias: string): boolean;
144
+ /**
145
+ * Get rerankers suitable for a use case
146
+ */
147
+ getRerankersForUseCase(useCase: string): RerankerType[];
148
+ /**
149
+ * Get rerankers that don't require external APIs
150
+ */
151
+ getLocalRerankers(): RerankerType[];
152
+ /**
153
+ * Get rerankers that don't require AI models
154
+ */
155
+ getModelFreeRerankers(): RerankerType[];
156
+ /**
157
+ * Get all reranker metadata
158
+ */
159
+ getAllMetadata(): Map<RerankerType, RerankerMetadata>;
160
+ /**
161
+ * Clear factory and metadata
162
+ */
163
+ clear(): void;
164
+ }
165
+ /**
166
+ * Global reranker factory singleton
167
+ */
168
+ export declare const rerankerFactory: RerankerFactory;
169
+ /**
170
+ * Convenience function to create a reranker
171
+ */
172
+ export declare function createReranker(typeOrAlias: string, config?: RerankerConfig): Promise<Reranker>;
173
+ /**
174
+ * Convenience function to get available reranker types
175
+ */
176
+ export declare function getAvailableRerankerTypes(): Promise<RerankerType[]>;
177
+ /**
178
+ * Convenience function to get reranker metadata
179
+ */
180
+ export declare function getRerankerMetadata(typeOrAlias: string): RerankerMetadata | undefined;
181
+ /**
182
+ * Convenience function to get default config
183
+ */
184
+ export declare function getRerankerDefaultConfig(typeOrAlias: string): Partial<RerankerConfig> | undefined;
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Reranker Factory
3
+ *
4
+ * Factory for creating reranker instances with configuration.
5
+ * Follows the BaseFactory pattern for consistent lifecycle management.
6
+ */
7
+ import { BaseFactory } from "../../core/infrastructure/index.js";
8
+ import { logger } from "../../utils/logger.js";
9
+ import { RAGErrorCodes, RerankerError } from "../errors/RAGError.js";
10
+ /**
11
+ * Default reranker metadata entries
12
+ */
13
+ const DEFAULT_RERANKER_METADATA = {
14
+ llm: {
15
+ description: "LLM-powered semantic reranking with multi-factor scoring",
16
+ defaultConfig: {
17
+ topK: 3,
18
+ weights: { semantic: 0.4, vector: 0.4, position: 0.2 },
19
+ },
20
+ supportedOptions: ["model", "provider", "topK", "weights"],
21
+ useCases: [
22
+ "High-quality semantic reranking",
23
+ "Complex query understanding",
24
+ "Context-aware scoring",
25
+ ],
26
+ aliases: ["semantic", "ai", "model-based"],
27
+ requiresModel: true,
28
+ requiresExternalAPI: false,
29
+ },
30
+ "cross-encoder": {
31
+ description: "Cross-encoder model for query-document relevance scoring",
32
+ defaultConfig: {
33
+ topK: 3,
34
+ model: "ms-marco-MiniLM-L-6-v2",
35
+ },
36
+ supportedOptions: ["model", "topK"],
37
+ useCases: [
38
+ "High-precision reranking",
39
+ "Search result refinement",
40
+ "Academic/research applications",
41
+ ],
42
+ aliases: ["cross", "encoder", "bi-encoder"],
43
+ requiresModel: true,
44
+ requiresExternalAPI: false,
45
+ },
46
+ cohere: {
47
+ description: "Cohere Rerank API for production-grade relevance scoring",
48
+ defaultConfig: {
49
+ topK: 3,
50
+ model: "rerank-v3.5",
51
+ },
52
+ supportedOptions: ["model", "topK", "apiKey"],
53
+ useCases: [
54
+ "Production search systems",
55
+ "Enterprise applications",
56
+ "High-volume reranking",
57
+ ],
58
+ aliases: ["cohere-rerank", "cohere-api"],
59
+ requiresModel: false,
60
+ requiresExternalAPI: true,
61
+ },
62
+ simple: {
63
+ description: "Position and vector score-based reranking (no LLM required)",
64
+ defaultConfig: {
65
+ topK: 3,
66
+ weights: { vector: 0.8, position: 0.2 },
67
+ },
68
+ supportedOptions: ["topK", "weights"],
69
+ useCases: [
70
+ "Fast reranking",
71
+ "Low-latency requirements",
72
+ "When LLM is unavailable",
73
+ ],
74
+ aliases: ["fast", "basic", "position-based"],
75
+ requiresModel: false,
76
+ requiresExternalAPI: false,
77
+ },
78
+ batch: {
79
+ description: "Batch LLM reranking for efficient multi-document scoring",
80
+ defaultConfig: {
81
+ topK: 3,
82
+ weights: { semantic: 0.4, vector: 0.4, position: 0.2 },
83
+ },
84
+ supportedOptions: ["model", "provider", "topK", "weights"],
85
+ useCases: [
86
+ "Large result sets",
87
+ "Cost-efficient LLM usage",
88
+ "Batch processing pipelines",
89
+ ],
90
+ aliases: ["batch-llm", "efficient", "bulk"],
91
+ requiresModel: true,
92
+ requiresExternalAPI: false,
93
+ },
94
+ };
95
+ /**
96
+ * Reranker Factory
97
+ *
98
+ * Creates reranker instances based on type with configuration support.
99
+ * Uses lazy loading via dynamic imports to avoid circular dependencies.
100
+ */
101
+ export class RerankerFactory extends BaseFactory {
102
+ static instance = null;
103
+ metadataMap = new Map();
104
+ modelProvider = null;
105
+ constructor() {
106
+ super();
107
+ }
108
+ /**
109
+ * Get singleton instance
110
+ */
111
+ static getInstance() {
112
+ if (!RerankerFactory.instance) {
113
+ RerankerFactory.instance = new RerankerFactory();
114
+ }
115
+ return RerankerFactory.instance;
116
+ }
117
+ /**
118
+ * Reset singleton (for testing)
119
+ */
120
+ static resetInstance() {
121
+ if (RerankerFactory.instance) {
122
+ RerankerFactory.instance.clear();
123
+ RerankerFactory.instance = null;
124
+ }
125
+ }
126
+ /**
127
+ * Set the AI provider for LLM-based rerankers
128
+ */
129
+ setModelProvider(provider) {
130
+ this.modelProvider = provider;
131
+ }
132
+ /**
133
+ * Register all default rerankers
134
+ */
135
+ async registerAll() {
136
+ // Register LLM reranker
137
+ this.registerReranker("llm", async (config) => {
138
+ const { rerank } = await import("./reranker.js");
139
+ return this.createLLMReranker(rerank, config);
140
+ }, DEFAULT_RERANKER_METADATA.llm);
141
+ // Register cross-encoder reranker
142
+ this.registerReranker("cross-encoder", async (config) => {
143
+ const { CrossEncoderReranker } = await import("./reranker.js");
144
+ return this.createCrossEncoderReranker(CrossEncoderReranker, config);
145
+ }, DEFAULT_RERANKER_METADATA["cross-encoder"]);
146
+ // Register Cohere reranker
147
+ this.registerReranker("cohere", async (config) => {
148
+ const { CohereRelevanceScorer } = await import("./reranker.js");
149
+ return this.createCohereReranker(CohereRelevanceScorer, config);
150
+ }, DEFAULT_RERANKER_METADATA.cohere);
151
+ // Register simple reranker
152
+ this.registerReranker("simple", async (config) => {
153
+ const { simpleRerank } = await import("./reranker.js");
154
+ return this.createSimpleReranker(simpleRerank, config);
155
+ }, DEFAULT_RERANKER_METADATA.simple);
156
+ // Register batch reranker
157
+ this.registerReranker("batch", async (config) => {
158
+ const { batchRerank } = await import("./reranker.js");
159
+ return this.createBatchReranker(batchRerank, config);
160
+ }, DEFAULT_RERANKER_METADATA.batch);
161
+ logger.debug(`[RerankerFactory] Registered ${this.items.size} reranker types`);
162
+ }
163
+ /**
164
+ * Create LLM-based reranker wrapper
165
+ */
166
+ createLLMReranker(rerankFn, config) {
167
+ const factory = this;
168
+ return {
169
+ type: "llm",
170
+ async rerank(results, query, options) {
171
+ if (!factory.modelProvider) {
172
+ throw new RerankerError("LLM reranker requires a model provider. Call setModelProvider() first.", {
173
+ rerankerType: "llm",
174
+ });
175
+ }
176
+ return rerankFn(results, query, factory.modelProvider, {
177
+ ...options,
178
+ topK: config?.topK ?? options?.topK,
179
+ weights: config?.weights ?? options?.weights,
180
+ });
181
+ },
182
+ };
183
+ }
184
+ /**
185
+ * Create cross-encoder reranker wrapper
186
+ */
187
+ createCrossEncoderReranker(CrossEncoderClass, config) {
188
+ const encoder = new CrossEncoderClass(config?.model);
189
+ return {
190
+ type: "cross-encoder",
191
+ async rerank(results, query, options) {
192
+ const documents = results.map((r) => r.text || r.metadata?.text || "");
193
+ const scores = await encoder.rerank(query, documents);
194
+ const topK = config?.topK ?? options?.topK ?? 3;
195
+ return scores
196
+ .map((s) => ({
197
+ result: results[s.index],
198
+ score: s.score,
199
+ details: {
200
+ semantic: s.score,
201
+ vector: results[s.index].score ?? 0,
202
+ position: 1 - s.index / results.length,
203
+ },
204
+ }))
205
+ .sort((a, b) => b.score - a.score)
206
+ .slice(0, topK);
207
+ },
208
+ };
209
+ }
210
+ /**
211
+ * Create Cohere reranker wrapper
212
+ */
213
+ createCohereReranker(CohereClass, config) {
214
+ const scorer = new CohereClass(config?.model);
215
+ return {
216
+ type: "cohere",
217
+ async rerank(results, query, options) {
218
+ const documents = results.map((r) => r.text || r.metadata?.text || "");
219
+ const scores = await scorer.score(query, documents);
220
+ const topK = config?.topK ?? options?.topK ?? 3;
221
+ return scores
222
+ .map((s) => ({
223
+ result: results[s.index],
224
+ score: s.score,
225
+ details: {
226
+ semantic: s.score,
227
+ vector: results[s.index].score ?? 0,
228
+ position: 1 - s.index / results.length,
229
+ },
230
+ }))
231
+ .sort((a, b) => b.score - a.score)
232
+ .slice(0, topK);
233
+ },
234
+ };
235
+ }
236
+ /**
237
+ * Create simple reranker wrapper
238
+ */
239
+ createSimpleReranker(simpleRerankFn, config) {
240
+ return {
241
+ type: "simple",
242
+ async rerank(results, _query, options) {
243
+ return simpleRerankFn(results, {
244
+ topK: config?.topK ?? options?.topK,
245
+ vectorWeight: config?.weights?.vector,
246
+ positionWeight: config?.weights?.position,
247
+ });
248
+ },
249
+ };
250
+ }
251
+ /**
252
+ * Create batch reranker wrapper
253
+ */
254
+ createBatchReranker(batchRerankFn, config) {
255
+ const factory = this;
256
+ return {
257
+ type: "batch",
258
+ async rerank(results, query, options) {
259
+ if (!factory.modelProvider) {
260
+ throw new RerankerError("Batch reranker requires a model provider. Call setModelProvider() first.", {
261
+ rerankerType: "batch",
262
+ });
263
+ }
264
+ return batchRerankFn(results, query, factory.modelProvider, {
265
+ ...options,
266
+ topK: config?.topK ?? options?.topK,
267
+ weights: config?.weights ?? options?.weights,
268
+ });
269
+ },
270
+ };
271
+ }
272
+ /**
273
+ * Register a reranker with metadata and aliases
274
+ */
275
+ registerReranker(type, factory, metadata) {
276
+ // Store metadata
277
+ this.metadataMap.set(type, metadata);
278
+ // Register with aliases
279
+ this.register(type, factory, metadata.aliases, { metadata });
280
+ logger.debug(`[RerankerFactory] Registered reranker '${type}' with aliases: ${metadata.aliases.join(", ")}`);
281
+ }
282
+ /**
283
+ * Create a reranker by type or alias
284
+ */
285
+ async createReranker(typeOrAlias, config) {
286
+ await this.ensureInitialized();
287
+ const resolvedName = this.resolveName(typeOrAlias);
288
+ if (!this.has(resolvedName)) {
289
+ const available = this.getAvailable();
290
+ throw new RerankerError(`Unknown reranker type: '${typeOrAlias}'. Available types: ${available.join(", ")}`, {
291
+ code: RAGErrorCodes.RERANKER_NOT_FOUND,
292
+ rerankerType: typeOrAlias,
293
+ details: {
294
+ requestedType: typeOrAlias,
295
+ availableTypes: available,
296
+ },
297
+ });
298
+ }
299
+ try {
300
+ const reranker = await this.create(resolvedName, config);
301
+ logger.debug(`[RerankerFactory] Created reranker '${resolvedName}' with config:`, config);
302
+ return reranker;
303
+ }
304
+ catch (error) {
305
+ // Re-throw if already a RerankerError
306
+ if (error instanceof RerankerError) {
307
+ throw error;
308
+ }
309
+ throw new RerankerError(`Failed to create reranker '${resolvedName}': ${error instanceof Error ? error.message : String(error)}`, {
310
+ rerankerType: resolvedName,
311
+ cause: error instanceof Error ? error : undefined,
312
+ details: { type: resolvedName, config },
313
+ });
314
+ }
315
+ }
316
+ /**
317
+ * Get metadata for a reranker
318
+ */
319
+ getRerankerMetadata(typeOrAlias) {
320
+ const resolvedName = this.resolveName(typeOrAlias);
321
+ return this.metadataMap.get(resolvedName);
322
+ }
323
+ /**
324
+ * Get default configuration for a reranker
325
+ */
326
+ getDefaultConfig(typeOrAlias) {
327
+ const metadata = this.getRerankerMetadata(typeOrAlias);
328
+ return metadata?.defaultConfig;
329
+ }
330
+ /**
331
+ * Get available reranker types (not including aliases)
332
+ */
333
+ async getAvailableTypes() {
334
+ await this.ensureInitialized();
335
+ return this.getAvailable();
336
+ }
337
+ /**
338
+ * Get all aliases mapped to their types
339
+ */
340
+ getTypeAliases() {
341
+ return this.getAliases();
342
+ }
343
+ /**
344
+ * Check if a type exists
345
+ */
346
+ hasType(typeOrAlias) {
347
+ const resolved = this.resolveName(typeOrAlias);
348
+ return this.has(resolved);
349
+ }
350
+ /**
351
+ * Get rerankers suitable for a use case
352
+ */
353
+ getRerankersForUseCase(useCase) {
354
+ const matches = [];
355
+ const useCaseLower = useCase.toLowerCase();
356
+ for (const [type, metadata] of this.metadataMap) {
357
+ const hasMatch = metadata.useCases.some((uc) => uc.toLowerCase().includes(useCaseLower));
358
+ if (hasMatch) {
359
+ matches.push(type);
360
+ }
361
+ }
362
+ return matches;
363
+ }
364
+ /**
365
+ * Get rerankers that don't require external APIs
366
+ */
367
+ getLocalRerankers() {
368
+ const matches = [];
369
+ for (const [type, metadata] of this.metadataMap) {
370
+ if (!metadata.requiresExternalAPI) {
371
+ matches.push(type);
372
+ }
373
+ }
374
+ return matches;
375
+ }
376
+ /**
377
+ * Get rerankers that don't require AI models
378
+ */
379
+ getModelFreeRerankers() {
380
+ const matches = [];
381
+ for (const [type, metadata] of this.metadataMap) {
382
+ if (!metadata.requiresModel) {
383
+ matches.push(type);
384
+ }
385
+ }
386
+ return matches;
387
+ }
388
+ /**
389
+ * Get all reranker metadata
390
+ */
391
+ getAllMetadata() {
392
+ return new Map(this.metadataMap);
393
+ }
394
+ /**
395
+ * Clear factory and metadata
396
+ */
397
+ clear() {
398
+ super.clear();
399
+ this.metadataMap.clear();
400
+ this.modelProvider = null;
401
+ }
402
+ }
403
+ /**
404
+ * Global reranker factory singleton
405
+ */
406
+ export const rerankerFactory = RerankerFactory.getInstance();
407
+ /**
408
+ * Convenience function to create a reranker
409
+ */
410
+ export async function createReranker(typeOrAlias, config) {
411
+ return rerankerFactory.createReranker(typeOrAlias, config);
412
+ }
413
+ /**
414
+ * Convenience function to get available reranker types
415
+ */
416
+ export async function getAvailableRerankerTypes() {
417
+ return rerankerFactory.getAvailableTypes();
418
+ }
419
+ /**
420
+ * Convenience function to get reranker metadata
421
+ */
422
+ export function getRerankerMetadata(typeOrAlias) {
423
+ return rerankerFactory.getRerankerMetadata(typeOrAlias);
424
+ }
425
+ /**
426
+ * Convenience function to get default config
427
+ */
428
+ export function getRerankerDefaultConfig(typeOrAlias) {
429
+ return rerankerFactory.getDefaultConfig(typeOrAlias);
430
+ }