@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.
- package/CHANGELOG.md +27 -0
- package/README.md +106 -37
- package/dist/agent/directTools.d.ts +11 -11
- package/dist/cli/commands/config.d.ts +6 -6
- package/dist/cli/commands/rag.d.ts +19 -0
- package/dist/cli/commands/rag.js +756 -0
- package/dist/cli/factories/commandFactory.js +146 -83
- package/dist/cli/parser.js +4 -1
- package/dist/core/baseProvider.d.ts +43 -30
- package/dist/core/baseProvider.js +98 -138
- package/dist/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/core/conversationMemoryFactory.js +2 -2
- package/dist/core/conversationMemoryInitializer.d.ts +1 -2
- package/dist/core/conversationMemoryInitializer.js +2 -2
- package/dist/core/infrastructure/baseError.d.ts +21 -0
- package/dist/core/infrastructure/baseError.js +22 -0
- package/dist/core/infrastructure/baseFactory.d.ts +21 -0
- package/dist/core/infrastructure/baseFactory.js +54 -0
- package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
- package/dist/core/infrastructure/baseRegistry.js +49 -0
- package/dist/core/infrastructure/index.d.ts +5 -0
- package/dist/core/infrastructure/index.js +5 -0
- package/dist/core/infrastructure/retry.d.ts +7 -0
- package/dist/core/infrastructure/retry.js +20 -0
- package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
- package/dist/core/infrastructure/typedEventEmitter.js +23 -0
- package/dist/core/redisConversationMemoryManager.d.ts +1 -6
- package/dist/core/redisConversationMemoryManager.js +7 -19
- package/dist/factories/providerFactory.d.ts +5 -3
- package/dist/factories/providerFactory.js +31 -24
- package/dist/image-gen/ImageGenService.d.ts +143 -0
- package/dist/image-gen/ImageGenService.js +345 -0
- package/dist/image-gen/imageGenTools.d.ts +126 -0
- package/dist/image-gen/imageGenTools.js +304 -0
- package/dist/image-gen/index.d.ts +46 -0
- package/dist/image-gen/index.js +48 -0
- package/dist/image-gen/types.d.ts +237 -0
- package/dist/image-gen/types.js +24 -0
- package/dist/index.d.ts +46 -12
- package/dist/index.js +88 -36
- package/dist/lib/agent/directTools.d.ts +8 -8
- package/dist/lib/core/baseProvider.d.ts +43 -30
- package/dist/lib/core/baseProvider.js +98 -138
- package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/lib/core/conversationMemoryFactory.js +2 -2
- package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
- package/dist/lib/core/conversationMemoryInitializer.js +2 -2
- package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseError.js +23 -0
- package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseFactory.js +55 -0
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
- package/dist/lib/core/infrastructure/index.d.ts +5 -0
- package/dist/lib/core/infrastructure/index.js +6 -0
- package/dist/lib/core/infrastructure/retry.d.ts +7 -0
- package/dist/lib/core/infrastructure/retry.js +21 -0
- package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
- package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
- package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
- package/dist/lib/core/redisConversationMemoryManager.js +7 -19
- package/dist/lib/factories/providerFactory.d.ts +5 -3
- package/dist/lib/factories/providerFactory.js +31 -24
- package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
- package/dist/lib/image-gen/ImageGenService.js +346 -0
- package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
- package/dist/lib/image-gen/imageGenTools.js +305 -0
- package/dist/lib/image-gen/index.d.ts +46 -0
- package/dist/lib/image-gen/index.js +49 -0
- package/dist/lib/image-gen/types.d.ts +237 -0
- package/dist/lib/image-gen/types.js +25 -0
- package/dist/lib/index.d.ts +46 -12
- package/dist/lib/index.js +88 -36
- package/dist/lib/mcp/index.d.ts +6 -5
- package/dist/lib/mcp/index.js +7 -5
- package/dist/lib/neurolink.d.ts +11 -13
- package/dist/lib/neurolink.js +95 -29
- package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
- package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
- package/dist/lib/processors/base/index.d.ts +14 -0
- package/dist/lib/processors/base/index.js +20 -0
- package/dist/lib/processors/base/types.d.ts +593 -0
- package/dist/lib/processors/base/types.js +77 -0
- package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
- package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
- package/dist/lib/processors/cli/index.d.ts +37 -0
- package/dist/lib/processors/cli/index.js +50 -0
- package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
- package/dist/lib/processors/code/ConfigProcessor.js +401 -0
- package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
- package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
- package/dist/lib/processors/code/index.d.ts +44 -0
- package/dist/lib/processors/code/index.js +61 -0
- package/dist/lib/processors/config/fileTypes.d.ts +283 -0
- package/dist/lib/processors/config/fileTypes.js +521 -0
- package/dist/lib/processors/config/index.d.ts +32 -0
- package/dist/lib/processors/config/index.js +93 -0
- package/dist/lib/processors/config/languageMap.d.ts +66 -0
- package/dist/lib/processors/config/languageMap.js +411 -0
- package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
- package/dist/lib/processors/config/mimeTypes.js +339 -0
- package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
- package/dist/lib/processors/config/sizeLimits.js +247 -0
- package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
- package/dist/lib/processors/data/JsonProcessor.js +204 -0
- package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
- package/dist/lib/processors/data/XmlProcessor.js +284 -0
- package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
- package/dist/lib/processors/data/YamlProcessor.js +295 -0
- package/dist/lib/processors/data/index.d.ts +49 -0
- package/dist/lib/processors/data/index.js +77 -0
- package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
- package/dist/lib/processors/document/ExcelProcessor.js +520 -0
- package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
- package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
- package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
- package/dist/lib/processors/document/RtfProcessor.js +362 -0
- package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
- package/dist/lib/processors/document/WordProcessor.js +354 -0
- package/dist/lib/processors/document/index.d.ts +54 -0
- package/dist/lib/processors/document/index.js +91 -0
- package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
- package/dist/lib/processors/errors/FileErrorCode.js +256 -0
- package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
- package/dist/lib/processors/errors/errorHelpers.js +379 -0
- package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
- package/dist/lib/processors/errors/errorSerializer.js +508 -0
- package/dist/lib/processors/errors/index.d.ts +46 -0
- package/dist/lib/processors/errors/index.js +50 -0
- package/dist/lib/processors/index.d.ts +76 -0
- package/dist/lib/processors/index.js +113 -0
- package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
- package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
- package/dist/lib/processors/integration/index.d.ts +42 -0
- package/dist/lib/processors/integration/index.js +45 -0
- package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
- package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
- package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
- package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
- package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
- package/dist/lib/processors/markup/SvgProcessor.js +241 -0
- package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
- package/dist/lib/processors/markup/TextProcessor.js +189 -0
- package/dist/lib/processors/markup/index.d.ts +66 -0
- package/dist/lib/processors/markup/index.js +103 -0
- package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
- package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
- package/dist/lib/processors/registry/index.d.ts +12 -0
- package/dist/lib/processors/registry/index.js +17 -0
- package/dist/lib/processors/registry/types.d.ts +53 -0
- package/dist/lib/processors/registry/types.js +11 -0
- package/dist/lib/providers/amazonBedrock.d.ts +15 -2
- package/dist/lib/providers/amazonBedrock.js +65 -8
- package/dist/lib/providers/anthropic.d.ts +3 -3
- package/dist/lib/providers/anthropic.js +10 -7
- package/dist/lib/providers/googleAiStudio.d.ts +5 -5
- package/dist/lib/providers/googleAiStudio.js +10 -7
- package/dist/lib/providers/googleVertex.d.ts +16 -4
- package/dist/lib/providers/googleVertex.js +72 -16
- package/dist/lib/providers/litellm.d.ts +3 -3
- package/dist/lib/providers/litellm.js +10 -10
- package/dist/lib/providers/mistral.d.ts +3 -3
- package/dist/lib/providers/mistral.js +7 -6
- package/dist/lib/providers/ollama.d.ts +3 -4
- package/dist/lib/providers/ollama.js +7 -8
- package/dist/lib/providers/openAI.d.ts +14 -2
- package/dist/lib/providers/openAI.js +60 -6
- package/dist/lib/providers/openRouter.d.ts +2 -2
- package/dist/lib/providers/openRouter.js +10 -6
- package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
- package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
- package/dist/lib/rag/ChunkerFactory.js +321 -0
- package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
- package/dist/lib/rag/ChunkerRegistry.js +422 -0
- package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
- package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
- package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
- package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
- package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
- package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
- package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
- package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
- package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
- package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
- package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
- package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
- package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
- package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
- package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
- package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
- package/dist/lib/rag/chunkers/index.d.ts +15 -0
- package/dist/lib/rag/chunkers/index.js +16 -0
- package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
- package/dist/lib/rag/chunking/characterChunker.js +143 -0
- package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
- package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
- package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
- package/dist/lib/rag/chunking/htmlChunker.js +248 -0
- package/dist/lib/rag/chunking/index.d.ts +15 -0
- package/dist/lib/rag/chunking/index.js +18 -0
- package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
- package/dist/lib/rag/chunking/jsonChunker.js +282 -0
- package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
- package/dist/lib/rag/chunking/latexChunker.js +252 -0
- package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
- package/dist/lib/rag/chunking/markdownChunker.js +202 -0
- package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
- package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
- package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
- package/dist/lib/rag/chunking/semanticChunker.js +307 -0
- package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
- package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
- package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
- package/dist/lib/rag/chunking/tokenChunker.js +184 -0
- package/dist/lib/rag/document/MDocument.d.ts +198 -0
- package/dist/lib/rag/document/MDocument.js +393 -0
- package/dist/lib/rag/document/index.d.ts +5 -0
- package/dist/lib/rag/document/index.js +6 -0
- package/dist/lib/rag/document/loaders.d.ts +201 -0
- package/dist/lib/rag/document/loaders.js +501 -0
- package/dist/lib/rag/errors/RAGError.d.ts +244 -0
- package/dist/lib/rag/errors/RAGError.js +275 -0
- package/dist/lib/rag/errors/index.d.ts +6 -0
- package/dist/lib/rag/errors/index.js +7 -0
- package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
- package/dist/lib/rag/graphRag/graphRAG.js +385 -0
- package/dist/lib/rag/graphRag/index.d.ts +4 -0
- package/dist/lib/rag/graphRag/index.js +5 -0
- package/dist/lib/rag/index.d.ts +103 -0
- package/dist/lib/rag/index.js +142 -0
- package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
- package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
- package/dist/lib/rag/metadata/index.d.ts +6 -0
- package/dist/lib/rag/metadata/index.js +10 -0
- package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
- package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
- package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
- package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
- package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
- package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
- package/dist/lib/rag/pipeline/index.d.ts +5 -0
- package/dist/lib/rag/pipeline/index.js +6 -0
- package/dist/lib/rag/ragIntegration.d.ts +38 -0
- package/dist/lib/rag/ragIntegration.js +212 -0
- package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
- package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
- package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
- package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
- package/dist/lib/rag/reranker/index.d.ts +6 -0
- package/dist/lib/rag/reranker/index.js +10 -0
- package/dist/lib/rag/reranker/reranker.d.ts +71 -0
- package/dist/lib/rag/reranker/reranker.js +278 -0
- package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
- package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
- package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
- package/dist/lib/rag/resilience/RetryHandler.js +301 -0
- package/dist/lib/rag/resilience/index.d.ts +7 -0
- package/dist/lib/rag/resilience/index.js +8 -0
- package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
- package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
- package/dist/lib/rag/retrieval/index.d.ts +5 -0
- package/dist/lib/rag/retrieval/index.js +6 -0
- package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
- package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
- package/dist/lib/rag/types.d.ts +768 -0
- package/dist/lib/rag/types.js +9 -0
- package/dist/lib/server/index.d.ts +15 -11
- package/dist/lib/server/index.js +55 -51
- package/dist/lib/server/utils/validation.d.ts +2 -2
- package/dist/lib/types/common.d.ts +0 -1
- package/dist/lib/types/fileTypes.d.ts +1 -1
- package/dist/lib/types/generateTypes.d.ts +42 -8
- package/dist/lib/types/generateTypes.js +1 -1
- package/dist/lib/types/index.d.ts +25 -24
- package/dist/lib/types/index.js +21 -20
- package/dist/lib/types/modelTypes.d.ts +16 -16
- package/dist/lib/types/pptTypes.d.ts +14 -2
- package/dist/lib/types/pptTypes.js +16 -0
- package/dist/lib/types/streamTypes.d.ts +28 -8
- package/dist/lib/types/streamTypes.js +1 -1
- package/dist/lib/utils/async/delay.d.ts +40 -0
- package/dist/lib/utils/async/delay.js +43 -0
- package/dist/lib/utils/async/index.d.ts +23 -0
- package/dist/lib/utils/async/index.js +24 -0
- package/dist/lib/utils/async/retry.d.ts +141 -0
- package/dist/lib/utils/async/retry.js +172 -0
- package/dist/lib/utils/async/withTimeout.d.ts +73 -0
- package/dist/lib/utils/async/withTimeout.js +97 -0
- package/dist/lib/utils/fileDetector.d.ts +7 -1
- package/dist/lib/utils/fileDetector.js +91 -18
- package/dist/lib/utils/json/extract.d.ts +103 -0
- package/dist/lib/utils/json/extract.js +249 -0
- package/dist/lib/utils/json/index.d.ts +36 -0
- package/dist/lib/utils/json/index.js +37 -0
- package/dist/lib/utils/json/safeParse.d.ts +137 -0
- package/dist/lib/utils/json/safeParse.js +191 -0
- package/dist/lib/utils/messageBuilder.d.ts +2 -2
- package/dist/lib/utils/messageBuilder.js +15 -7
- package/dist/lib/utils/modelRouter.d.ts +4 -4
- package/dist/lib/utils/modelRouter.js +4 -4
- package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
- package/dist/lib/utils/sanitizers/filename.js +366 -0
- package/dist/lib/utils/sanitizers/html.d.ts +170 -0
- package/dist/lib/utils/sanitizers/html.js +326 -0
- package/dist/lib/utils/sanitizers/index.d.ts +26 -0
- package/dist/lib/utils/sanitizers/index.js +30 -0
- package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
- package/dist/lib/utils/sanitizers/svg.js +483 -0
- package/dist/mcp/index.d.ts +6 -5
- package/dist/mcp/index.js +7 -5
- package/dist/neurolink.d.ts +11 -13
- package/dist/neurolink.js +95 -29
- package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
- package/dist/processors/base/BaseFileProcessor.js +613 -0
- package/dist/processors/base/index.d.ts +14 -0
- package/dist/processors/base/index.js +19 -0
- package/dist/processors/base/types.d.ts +593 -0
- package/dist/processors/base/types.js +76 -0
- package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
- package/dist/processors/cli/fileProcessorCli.js +388 -0
- package/dist/processors/cli/index.d.ts +37 -0
- package/dist/processors/cli/index.js +49 -0
- package/dist/processors/code/ConfigProcessor.d.ts +171 -0
- package/dist/processors/code/ConfigProcessor.js +400 -0
- package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
- package/dist/processors/code/SourceCodeProcessor.js +304 -0
- package/dist/processors/code/index.d.ts +44 -0
- package/dist/processors/code/index.js +60 -0
- package/dist/processors/config/fileTypes.d.ts +283 -0
- package/dist/processors/config/fileTypes.js +520 -0
- package/dist/processors/config/index.d.ts +32 -0
- package/dist/processors/config/index.js +92 -0
- package/dist/processors/config/languageMap.d.ts +66 -0
- package/dist/processors/config/languageMap.js +410 -0
- package/dist/processors/config/mimeTypes.d.ts +376 -0
- package/dist/processors/config/mimeTypes.js +338 -0
- package/dist/processors/config/sizeLimits.d.ts +194 -0
- package/dist/processors/config/sizeLimits.js +246 -0
- package/dist/processors/data/JsonProcessor.d.ts +122 -0
- package/dist/processors/data/JsonProcessor.js +203 -0
- package/dist/processors/data/XmlProcessor.d.ts +160 -0
- package/dist/processors/data/XmlProcessor.js +283 -0
- package/dist/processors/data/YamlProcessor.d.ts +163 -0
- package/dist/processors/data/YamlProcessor.js +294 -0
- package/dist/processors/data/index.d.ts +49 -0
- package/dist/processors/data/index.js +76 -0
- package/dist/processors/document/ExcelProcessor.d.ts +238 -0
- package/dist/processors/document/ExcelProcessor.js +519 -0
- package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
- package/dist/processors/document/OpenDocumentProcessor.js +210 -0
- package/dist/processors/document/RtfProcessor.d.ts +152 -0
- package/dist/processors/document/RtfProcessor.js +361 -0
- package/dist/processors/document/WordProcessor.d.ts +168 -0
- package/dist/processors/document/WordProcessor.js +353 -0
- package/dist/processors/document/index.d.ts +54 -0
- package/dist/processors/document/index.js +90 -0
- package/dist/processors/errors/FileErrorCode.d.ts +98 -0
- package/dist/processors/errors/FileErrorCode.js +255 -0
- package/dist/processors/errors/errorHelpers.d.ts +151 -0
- package/dist/processors/errors/errorHelpers.js +378 -0
- package/dist/processors/errors/errorSerializer.d.ts +139 -0
- package/dist/processors/errors/errorSerializer.js +507 -0
- package/dist/processors/errors/index.d.ts +46 -0
- package/dist/processors/errors/index.js +49 -0
- package/dist/processors/index.d.ts +76 -0
- package/dist/processors/index.js +112 -0
- package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
- package/dist/processors/integration/FileProcessorIntegration.js +272 -0
- package/dist/processors/integration/index.d.ts +42 -0
- package/dist/processors/integration/index.js +44 -0
- package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
- package/dist/processors/markup/HtmlProcessor.js +249 -0
- package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
- package/dist/processors/markup/MarkdownProcessor.js +244 -0
- package/dist/processors/markup/SvgProcessor.d.ts +156 -0
- package/dist/processors/markup/SvgProcessor.js +240 -0
- package/dist/processors/markup/TextProcessor.d.ts +135 -0
- package/dist/processors/markup/TextProcessor.js +188 -0
- package/dist/processors/markup/index.d.ts +66 -0
- package/dist/processors/markup/index.js +102 -0
- package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
- package/dist/processors/registry/ProcessorRegistry.js +608 -0
- package/dist/processors/registry/index.d.ts +12 -0
- package/dist/processors/registry/index.js +16 -0
- package/dist/processors/registry/types.d.ts +53 -0
- package/dist/processors/registry/types.js +10 -0
- package/dist/providers/amazonBedrock.d.ts +15 -2
- package/dist/providers/amazonBedrock.js +65 -8
- package/dist/providers/anthropic.d.ts +3 -3
- package/dist/providers/anthropic.js +10 -7
- package/dist/providers/googleAiStudio.d.ts +5 -5
- package/dist/providers/googleAiStudio.js +10 -7
- package/dist/providers/googleVertex.d.ts +16 -4
- package/dist/providers/googleVertex.js +72 -16
- package/dist/providers/litellm.d.ts +3 -3
- package/dist/providers/litellm.js +10 -10
- package/dist/providers/mistral.d.ts +3 -3
- package/dist/providers/mistral.js +7 -6
- package/dist/providers/ollama.d.ts +3 -4
- package/dist/providers/ollama.js +7 -8
- package/dist/providers/openAI.d.ts +14 -2
- package/dist/providers/openAI.js +60 -6
- package/dist/providers/openRouter.d.ts +2 -2
- package/dist/providers/openRouter.js +10 -6
- package/dist/rag/ChunkerFactory.d.ts +91 -0
- package/dist/rag/ChunkerFactory.js +320 -0
- package/dist/rag/ChunkerRegistry.d.ts +91 -0
- package/dist/rag/ChunkerRegistry.js +421 -0
- package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
- package/dist/rag/chunkers/BaseChunker.js +143 -0
- package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
- package/dist/rag/chunkers/CharacterChunker.js +28 -0
- package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
- package/dist/rag/chunkers/HTMLChunker.js +38 -0
- package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
- package/dist/rag/chunkers/JSONChunker.js +68 -0
- package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
- package/dist/rag/chunkers/LaTeXChunker.js +63 -0
- package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
- package/dist/rag/chunkers/MarkdownChunker.js +102 -0
- package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
- package/dist/rag/chunkers/RecursiveChunker.js +139 -0
- package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
- package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
- package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
- package/dist/rag/chunkers/SentenceChunker.js +66 -0
- package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
- package/dist/rag/chunkers/TokenChunker.js +61 -0
- package/dist/rag/chunkers/index.d.ts +15 -0
- package/dist/rag/chunkers/index.js +15 -0
- package/dist/rag/chunking/characterChunker.d.ts +16 -0
- package/dist/rag/chunking/characterChunker.js +142 -0
- package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
- package/dist/rag/chunking/chunkerRegistry.js +194 -0
- package/dist/rag/chunking/htmlChunker.d.ts +34 -0
- package/dist/rag/chunking/htmlChunker.js +247 -0
- package/dist/rag/chunking/index.d.ts +15 -0
- package/dist/rag/chunking/index.js +17 -0
- package/dist/rag/chunking/jsonChunker.d.ts +20 -0
- package/dist/rag/chunking/jsonChunker.js +281 -0
- package/dist/rag/chunking/latexChunker.d.ts +26 -0
- package/dist/rag/chunking/latexChunker.js +251 -0
- package/dist/rag/chunking/markdownChunker.d.ts +19 -0
- package/dist/rag/chunking/markdownChunker.js +201 -0
- package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
- package/dist/rag/chunking/recursiveChunker.js +148 -0
- package/dist/rag/chunking/semanticChunker.d.ts +41 -0
- package/dist/rag/chunking/semanticChunker.js +306 -0
- package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
- package/dist/rag/chunking/sentenceChunker.js +230 -0
- package/dist/rag/chunking/tokenChunker.d.ts +36 -0
- package/dist/rag/chunking/tokenChunker.js +183 -0
- package/dist/rag/document/MDocument.d.ts +198 -0
- package/dist/rag/document/MDocument.js +392 -0
- package/dist/rag/document/index.d.ts +5 -0
- package/dist/rag/document/index.js +5 -0
- package/dist/rag/document/loaders.d.ts +201 -0
- package/dist/rag/document/loaders.js +500 -0
- package/dist/rag/errors/RAGError.d.ts +244 -0
- package/dist/rag/errors/RAGError.js +274 -0
- package/dist/rag/errors/index.d.ts +6 -0
- package/dist/rag/errors/index.js +6 -0
- package/dist/rag/graphRag/graphRAG.d.ts +115 -0
- package/dist/rag/graphRag/graphRAG.js +384 -0
- package/dist/rag/graphRag/index.d.ts +4 -0
- package/dist/rag/graphRag/index.js +4 -0
- package/dist/rag/index.d.ts +103 -0
- package/dist/rag/index.js +141 -0
- package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
- package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
- package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
- package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
- package/dist/rag/metadata/index.d.ts +6 -0
- package/dist/rag/metadata/index.js +9 -0
- package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
- package/dist/rag/metadata/metadataExtractor.js +277 -0
- package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
- package/dist/rag/pipeline/RAGPipeline.js +401 -0
- package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
- package/dist/rag/pipeline/contextAssembly.js +337 -0
- package/dist/rag/pipeline/index.d.ts +5 -0
- package/dist/rag/pipeline/index.js +5 -0
- package/dist/rag/ragIntegration.d.ts +38 -0
- package/dist/rag/ragIntegration.js +211 -0
- package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
- package/dist/rag/reranker/RerankerFactory.js +430 -0
- package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
- package/dist/rag/reranker/RerankerRegistry.js +402 -0
- package/dist/rag/reranker/index.d.ts +6 -0
- package/dist/rag/reranker/index.js +9 -0
- package/dist/rag/reranker/reranker.d.ts +71 -0
- package/dist/rag/reranker/reranker.js +277 -0
- package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
- package/dist/rag/resilience/CircuitBreaker.js +431 -0
- package/dist/rag/resilience/RetryHandler.d.ts +115 -0
- package/dist/rag/resilience/RetryHandler.js +300 -0
- package/dist/rag/resilience/index.d.ts +7 -0
- package/dist/rag/resilience/index.js +7 -0
- package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
- package/dist/rag/retrieval/hybridSearch.js +313 -0
- package/dist/rag/retrieval/index.d.ts +5 -0
- package/dist/rag/retrieval/index.js +5 -0
- package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
- package/dist/rag/retrieval/vectorQueryTool.js +289 -0
- package/dist/rag/types.d.ts +768 -0
- package/dist/rag/types.js +8 -0
- package/dist/server/index.d.ts +15 -11
- package/dist/server/index.js +55 -51
- package/dist/server/utils/validation.d.ts +8 -8
- package/dist/types/common.d.ts +0 -1
- package/dist/types/fileTypes.d.ts +1 -1
- package/dist/types/generateTypes.d.ts +42 -8
- package/dist/types/generateTypes.js +1 -1
- package/dist/types/index.d.ts +25 -24
- package/dist/types/index.js +21 -20
- package/dist/types/modelTypes.d.ts +10 -10
- package/dist/types/pptTypes.d.ts +14 -2
- package/dist/types/pptTypes.js +16 -0
- package/dist/types/streamTypes.d.ts +28 -8
- package/dist/types/streamTypes.js +1 -1
- package/dist/utils/async/delay.d.ts +40 -0
- package/dist/utils/async/delay.js +42 -0
- package/dist/utils/async/index.d.ts +23 -0
- package/dist/utils/async/index.js +23 -0
- package/dist/utils/async/retry.d.ts +141 -0
- package/dist/utils/async/retry.js +171 -0
- package/dist/utils/async/withTimeout.d.ts +73 -0
- package/dist/utils/async/withTimeout.js +96 -0
- package/dist/utils/fileDetector.d.ts +7 -1
- package/dist/utils/fileDetector.js +91 -18
- package/dist/utils/json/extract.d.ts +103 -0
- package/dist/utils/json/extract.js +248 -0
- package/dist/utils/json/index.d.ts +36 -0
- package/dist/utils/json/index.js +36 -0
- package/dist/utils/json/safeParse.d.ts +137 -0
- package/dist/utils/json/safeParse.js +190 -0
- package/dist/utils/messageBuilder.d.ts +2 -2
- package/dist/utils/messageBuilder.js +15 -7
- package/dist/utils/modelRouter.d.ts +4 -4
- package/dist/utils/modelRouter.js +4 -4
- package/dist/utils/sanitizers/filename.d.ts +137 -0
- package/dist/utils/sanitizers/filename.js +365 -0
- package/dist/utils/sanitizers/html.d.ts +170 -0
- package/dist/utils/sanitizers/html.js +325 -0
- package/dist/utils/sanitizers/index.d.ts +26 -0
- package/dist/utils/sanitizers/index.js +29 -0
- package/dist/utils/sanitizers/svg.d.ts +81 -0
- package/dist/utils/sanitizers/svg.js +482 -0
- 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
|
+
}
|