@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,49 @@
|
|
|
1
|
+
import { logger } from "../../utils/logger.js";
|
|
2
|
+
export class BaseRegistry {
|
|
3
|
+
items = new Map();
|
|
4
|
+
initialized = false;
|
|
5
|
+
initPromise = null;
|
|
6
|
+
async ensureInitialized() {
|
|
7
|
+
if (this.initialized) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (this.initPromise) {
|
|
11
|
+
return this.initPromise;
|
|
12
|
+
}
|
|
13
|
+
this.initPromise = this.registerAll();
|
|
14
|
+
await this.initPromise;
|
|
15
|
+
this.initialized = true;
|
|
16
|
+
}
|
|
17
|
+
register(id, factory, metadata) {
|
|
18
|
+
this.items.set(id, { factory, metadata });
|
|
19
|
+
logger.debug(`Registered ${id} in registry`);
|
|
20
|
+
}
|
|
21
|
+
async get(id) {
|
|
22
|
+
await this.ensureInitialized();
|
|
23
|
+
const entry = this.items.get(id);
|
|
24
|
+
if (!entry) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
if (!entry.instance) {
|
|
28
|
+
entry.instance = await entry.factory();
|
|
29
|
+
}
|
|
30
|
+
return entry.instance;
|
|
31
|
+
}
|
|
32
|
+
has(id) {
|
|
33
|
+
return this.items.has(id);
|
|
34
|
+
}
|
|
35
|
+
list() {
|
|
36
|
+
return Array.from(this.items.entries()).map(([id, entry]) => ({
|
|
37
|
+
id,
|
|
38
|
+
metadata: entry.metadata,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
clear() {
|
|
42
|
+
this.items.clear();
|
|
43
|
+
this.initialized = false;
|
|
44
|
+
this.initPromise = null;
|
|
45
|
+
}
|
|
46
|
+
isInitialized() {
|
|
47
|
+
return this.initialized;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createErrorFactory, type ErrorCode, NeuroLinkFeatureError, } from "./baseError.js";
|
|
2
|
+
export { BaseFactory, type FactoryFunction, type FactoryRegistration, } from "./baseFactory.js";
|
|
3
|
+
export { BaseRegistry, type RegistryEntry } from "./baseRegistry.js";
|
|
4
|
+
export { type RetryOptions, withRetry } from "./retry.js";
|
|
5
|
+
export { TypedEventEmitter } from "./typedEventEmitter.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createErrorFactory, NeuroLinkFeatureError, } from "./baseError.js";
|
|
2
|
+
export { BaseFactory, } from "./baseFactory.js";
|
|
3
|
+
export { BaseRegistry } from "./baseRegistry.js";
|
|
4
|
+
export { withRetry } from "./retry.js";
|
|
5
|
+
export { TypedEventEmitter } from "./typedEventEmitter.js";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export async function withRetry(operation, options) {
|
|
2
|
+
const { maxRetries, baseDelayMs, maxDelayMs = 30000, shouldRetry } = options;
|
|
3
|
+
let lastError;
|
|
4
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
5
|
+
try {
|
|
6
|
+
return await operation();
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
lastError = error;
|
|
10
|
+
if (shouldRetry && !shouldRetry(lastError)) {
|
|
11
|
+
throw lastError;
|
|
12
|
+
}
|
|
13
|
+
if (attempt < maxRetries) {
|
|
14
|
+
const delay = Math.min(baseDelayMs * 2 ** attempt, maxDelayMs);
|
|
15
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
throw lastError;
|
|
20
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class TypedEventEmitter<TEvents extends Record<string, unknown[]>> {
|
|
2
|
+
private emitter;
|
|
3
|
+
on<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
|
|
4
|
+
off<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
|
|
5
|
+
emit<K extends keyof TEvents>(event: K, ...args: TEvents[K]): boolean;
|
|
6
|
+
once<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
|
|
7
|
+
removeAllListeners<K extends keyof TEvents>(event?: K): this;
|
|
8
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
export class TypedEventEmitter {
|
|
3
|
+
emitter = new EventEmitter();
|
|
4
|
+
on(event, listener) {
|
|
5
|
+
this.emitter.on(event, listener);
|
|
6
|
+
return this;
|
|
7
|
+
}
|
|
8
|
+
off(event, listener) {
|
|
9
|
+
this.emitter.off(event, listener);
|
|
10
|
+
return this;
|
|
11
|
+
}
|
|
12
|
+
emit(event, ...args) {
|
|
13
|
+
return this.emitter.emit(event, ...args);
|
|
14
|
+
}
|
|
15
|
+
once(event, listener) {
|
|
16
|
+
this.emitter.once(event, listener);
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
removeAllListeners(event) {
|
|
20
|
+
this.emitter.removeAllListeners(event);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Redis-based implementation of conversation storage with same interface as ConversationMemoryManager
|
|
4
4
|
*/
|
|
5
5
|
import type { ConversationMemoryConfig, ConversationMemoryStats, ChatMessage, RedisStorageConfig, SessionMetadata, RedisConversationObject, StoreConversationTurnOptions } from "../types/conversation.js";
|
|
6
|
-
import type { TypedEventEmitter, NeuroLinkEvents } from "../types/common.js";
|
|
7
6
|
/**
|
|
8
7
|
* Redis-based implementation of the ConversationMemoryManager
|
|
9
8
|
* Uses the same interface but stores data in Redis
|
|
@@ -13,10 +12,6 @@ export declare class RedisConversationMemoryManager {
|
|
|
13
12
|
private isInitialized;
|
|
14
13
|
private redisConfig;
|
|
15
14
|
private redisClient;
|
|
16
|
-
/**
|
|
17
|
-
* Event emitter for conversation memory events
|
|
18
|
-
*/
|
|
19
|
-
private eventEmitter?;
|
|
20
15
|
/**
|
|
21
16
|
* Temporary storage for tool execution data to prevent race conditions
|
|
22
17
|
* Key format: "${sessionId}:${userId}"
|
|
@@ -32,7 +27,7 @@ export declare class RedisConversationMemoryManager {
|
|
|
32
27
|
* Key format: "${sessionId}:${userId}"
|
|
33
28
|
*/
|
|
34
29
|
private summarizationInProgress;
|
|
35
|
-
constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig
|
|
30
|
+
constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig);
|
|
36
31
|
/**
|
|
37
32
|
* Initialize the memory manager with Redis connection
|
|
38
33
|
*/
|
|
@@ -19,10 +19,6 @@ export class RedisConversationMemoryManager {
|
|
|
19
19
|
isInitialized = false;
|
|
20
20
|
redisConfig;
|
|
21
21
|
redisClient = null;
|
|
22
|
-
/**
|
|
23
|
-
* Event emitter for conversation memory events
|
|
24
|
-
*/
|
|
25
|
-
eventEmitter;
|
|
26
22
|
/**
|
|
27
23
|
* Temporary storage for tool execution data to prevent race conditions
|
|
28
24
|
* Key format: "${sessionId}:${userId}"
|
|
@@ -38,10 +34,9 @@ export class RedisConversationMemoryManager {
|
|
|
38
34
|
* Key format: "${sessionId}:${userId}"
|
|
39
35
|
*/
|
|
40
36
|
summarizationInProgress = new Set();
|
|
41
|
-
constructor(config, redisConfig = {}
|
|
37
|
+
constructor(config, redisConfig = {}) {
|
|
42
38
|
this.config = config;
|
|
43
39
|
this.redisConfig = getNormalizedConfig(redisConfig);
|
|
44
|
-
this.eventEmitter = eventEmitter;
|
|
45
40
|
}
|
|
46
41
|
/**
|
|
47
42
|
* Initialize the memory manager with Redis connection
|
|
@@ -258,14 +253,6 @@ export class RedisConversationMemoryManager {
|
|
|
258
253
|
if (this.redisConfig.ttl > 0) {
|
|
259
254
|
await this.redisClient?.expire(updatedRedisKey, this.redisConfig.ttl);
|
|
260
255
|
}
|
|
261
|
-
if (this.eventEmitter) {
|
|
262
|
-
this.eventEmitter.emit("conversation:titleGenerated", {
|
|
263
|
-
sessionId: options.sessionId,
|
|
264
|
-
userId: normalizedUserId,
|
|
265
|
-
title,
|
|
266
|
-
timestamp: Date.now(),
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
256
|
}
|
|
270
257
|
}
|
|
271
258
|
catch (titleError) {
|
|
@@ -700,11 +687,12 @@ export class RedisConversationMemoryManager {
|
|
|
700
687
|
const titleGenerator = new NeuroLink({
|
|
701
688
|
conversationMemory: { enabled: false },
|
|
702
689
|
});
|
|
703
|
-
const
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
690
|
+
const titlePrompt = `Generate a clear, concise, and descriptive title (5–8 words maximum) for a conversation based on the following user message.
|
|
691
|
+
The title must meaningfully reflect the topic or intent of the message.
|
|
692
|
+
Do not output anything unrelated, vague, or generic.
|
|
693
|
+
Do not say you cannot create a title. Always return a valid title.
|
|
694
|
+
|
|
695
|
+
User message: "${userMessage}`;
|
|
708
696
|
const result = await titleGenerator.generate({
|
|
709
697
|
input: { text: titlePrompt },
|
|
710
698
|
provider: this.config.summarizationProvider || "vertex",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AIProviderName } from "../constants/enums.js";
|
|
2
2
|
import type { UnknownRecord } from "../types/common.js";
|
|
3
|
-
import {
|
|
3
|
+
import type { AIProvider } from "../types/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Provider constructor interface - supports both sync constructors and async factory functions
|
|
6
6
|
*/
|
|
@@ -30,8 +30,10 @@ export declare class ProviderFactory {
|
|
|
30
30
|
aliases?: string[]): void;
|
|
31
31
|
/**
|
|
32
32
|
* Create a provider instance
|
|
33
|
+
* @param providerName - Provider name (optional, uses NEUROLINK_PROVIDER env var or 'vertex' as default)
|
|
34
|
+
* @param modelName - Model name (optional, uses provider-specific env var or registry default)
|
|
33
35
|
*/
|
|
34
|
-
static createProvider(providerName
|
|
36
|
+
static createProvider(providerName?: AIProviderName | string, modelName?: string, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
|
|
35
37
|
/**
|
|
36
38
|
* Check if a provider is registered
|
|
37
39
|
*/
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { logger } from "../utils/logger.js";
|
|
2
|
-
import { AIProviderName } from "../constants/enums.js";
|
|
3
2
|
/**
|
|
4
3
|
* True Factory Pattern implementation for AI Providers
|
|
5
4
|
* Uses registration-based approach to eliminate switch statements
|
|
@@ -19,31 +18,39 @@ export class ProviderFactory {
|
|
|
19
18
|
aliases,
|
|
20
19
|
};
|
|
21
20
|
// Register main name
|
|
22
|
-
|
|
21
|
+
ProviderFactory.providers.set(name.toLowerCase(), registration);
|
|
23
22
|
// Register aliases
|
|
24
23
|
aliases.forEach((alias) => {
|
|
25
|
-
|
|
24
|
+
ProviderFactory.providers.set(alias.toLowerCase(), registration);
|
|
26
25
|
});
|
|
27
26
|
logger.debug(`Registered provider: ${name} with model ${defaultModel || "from-env"}`);
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
29
|
* Create a provider instance
|
|
30
|
+
* @param providerName - Provider name (optional, uses NEUROLINK_PROVIDER env var or 'vertex' as default)
|
|
31
|
+
* @param modelName - Model name (optional, uses provider-specific env var or registry default)
|
|
31
32
|
*/
|
|
32
33
|
static async createProvider(providerName, modelName, sdk, region) {
|
|
33
34
|
// Note: Providers are registered explicitly by ProviderRegistry to avoid circular dependencies
|
|
34
|
-
|
|
35
|
-
const
|
|
35
|
+
// Use environment variable or default if not specified
|
|
36
|
+
const resolvedProviderName = providerName ||
|
|
37
|
+
process.env.NEUROLINK_PROVIDER ||
|
|
38
|
+
process.env.AI_PROVIDER ||
|
|
39
|
+
"vertex";
|
|
40
|
+
const normalizedName = resolvedProviderName.toLowerCase();
|
|
41
|
+
const registration = ProviderFactory.providers.get(normalizedName);
|
|
36
42
|
if (!registration) {
|
|
37
|
-
throw new Error(`Unknown provider: ${
|
|
43
|
+
throw new Error(`Unknown provider: ${resolvedProviderName}. Available providers: ${ProviderFactory.getAvailableProviders().join(", ")}`);
|
|
38
44
|
}
|
|
39
45
|
// Respect environment variables before falling back to registry default
|
|
40
46
|
let model = modelName;
|
|
41
47
|
if (!model) {
|
|
42
48
|
// Check for provider-specific environment variables
|
|
43
|
-
if (
|
|
44
|
-
model
|
|
49
|
+
if (resolvedProviderName.toLowerCase().includes("vertex")) {
|
|
50
|
+
// Use gemini-2.5-flash as default - latest GA model with best price-performance
|
|
51
|
+
model = process.env.VERTEX_MODEL || "gemini-2.5-flash";
|
|
45
52
|
}
|
|
46
|
-
else if (
|
|
53
|
+
else if (resolvedProviderName.toLowerCase().includes("bedrock")) {
|
|
47
54
|
model = process.env.BEDROCK_MODEL || process.env.BEDROCK_MODEL_ID;
|
|
48
55
|
}
|
|
49
56
|
// Fallback to registry default if no env var
|
|
@@ -55,7 +62,7 @@ export class ProviderFactory {
|
|
|
55
62
|
}
|
|
56
63
|
let result;
|
|
57
64
|
try {
|
|
58
|
-
const factoryResult = registration.constructor(model,
|
|
65
|
+
const factoryResult = registration.constructor(model, resolvedProviderName, sdk, region);
|
|
59
66
|
// Handle both sync and async results
|
|
60
67
|
result =
|
|
61
68
|
factoryResult instanceof Promise
|
|
@@ -67,7 +74,7 @@ export class ProviderFactory {
|
|
|
67
74
|
registration.constructor.prototype.constructor ===
|
|
68
75
|
registration.constructor) {
|
|
69
76
|
try {
|
|
70
|
-
result = new registration.constructor(model,
|
|
77
|
+
result = new registration.constructor(model, resolvedProviderName, sdk, region);
|
|
71
78
|
}
|
|
72
79
|
catch (constructorError) {
|
|
73
80
|
throw new Error(`Both factory function and constructor failed. Factory error: ${factoryError}. Constructor error: ${constructorError}`);
|
|
@@ -80,27 +87,27 @@ export class ProviderFactory {
|
|
|
80
87
|
return result;
|
|
81
88
|
}
|
|
82
89
|
catch (error) {
|
|
83
|
-
logger.error(`Failed to create provider ${
|
|
84
|
-
throw new Error(`Failed to create provider ${
|
|
90
|
+
logger.error(`Failed to create provider ${resolvedProviderName}:`, error);
|
|
91
|
+
throw new Error(`Failed to create provider ${resolvedProviderName}: ${error}`);
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
/**
|
|
88
95
|
* Check if a provider is registered
|
|
89
96
|
*/
|
|
90
97
|
static hasProvider(providerName) {
|
|
91
|
-
return
|
|
98
|
+
return ProviderFactory.providers.has(providerName.toLowerCase());
|
|
92
99
|
}
|
|
93
100
|
/**
|
|
94
101
|
* Get list of available providers
|
|
95
102
|
*/
|
|
96
103
|
static getAvailableProviders() {
|
|
97
|
-
return Array.from(
|
|
104
|
+
return Array.from(ProviderFactory.providers.keys()).filter((name, index, arr) => arr.indexOf(name) === index);
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
100
107
|
* Get provider registration info
|
|
101
108
|
*/
|
|
102
109
|
static getProviderInfo(providerName) {
|
|
103
|
-
return
|
|
110
|
+
return ProviderFactory.providers.get(providerName.toLowerCase());
|
|
104
111
|
}
|
|
105
112
|
/**
|
|
106
113
|
* Normalize provider names using aliases (PHASE 1: Factory Pattern)
|
|
@@ -108,11 +115,11 @@ export class ProviderFactory {
|
|
|
108
115
|
static normalizeProviderName(providerName) {
|
|
109
116
|
const normalized = providerName.toLowerCase();
|
|
110
117
|
// Check direct registration
|
|
111
|
-
if (
|
|
118
|
+
if (ProviderFactory.providers.has(normalized)) {
|
|
112
119
|
return normalized;
|
|
113
120
|
}
|
|
114
121
|
// Check aliases from all registrations
|
|
115
|
-
for (const [name, registration] of
|
|
122
|
+
for (const [name, registration] of ProviderFactory.providers.entries()) {
|
|
116
123
|
if (registration.aliases?.includes(normalized)) {
|
|
117
124
|
return name;
|
|
118
125
|
}
|
|
@@ -123,16 +130,16 @@ export class ProviderFactory {
|
|
|
123
130
|
* Clear all registrations (mainly for testing)
|
|
124
131
|
*/
|
|
125
132
|
static clearRegistrations() {
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
ProviderFactory.providers.clear();
|
|
134
|
+
ProviderFactory.initialized = false;
|
|
128
135
|
}
|
|
129
136
|
/**
|
|
130
137
|
* Ensure providers are initialized
|
|
131
138
|
*/
|
|
132
139
|
static ensureInitialized() {
|
|
133
|
-
if (!
|
|
134
|
-
|
|
135
|
-
|
|
140
|
+
if (!ProviderFactory.initialized) {
|
|
141
|
+
ProviderFactory.initializeDefaultProviders();
|
|
142
|
+
ProviderFactory.initialized = true;
|
|
136
143
|
}
|
|
137
144
|
}
|
|
138
145
|
/**
|
|
@@ -148,7 +155,7 @@ export class ProviderFactory {
|
|
|
148
155
|
* Used by NeuroLink SDK for streaming and generation
|
|
149
156
|
*/
|
|
150
157
|
static async createBestProvider(providerName, modelName, enableMCP, sdk) {
|
|
151
|
-
return await
|
|
158
|
+
return await ProviderFactory.createProvider(providerName, modelName, sdk);
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
/**
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Generation Service
|
|
3
|
+
*
|
|
4
|
+
* Handles AI image generation using NeuroLink SDK with configurable providers
|
|
5
|
+
* and models. Supports reference images and PDFs for contextual generation.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @module @juspay/neurolink/image-gen
|
|
9
|
+
* @category ImageGeneration
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { ImageGenService } from '@juspay/neurolink';
|
|
14
|
+
*
|
|
15
|
+
* const service = new ImageGenService();
|
|
16
|
+
*
|
|
17
|
+
* const result = await service.generate({
|
|
18
|
+
* prompt: 'A serene mountain landscape at sunset',
|
|
19
|
+
* style: 'photorealistic',
|
|
20
|
+
* aspectRatio: '16:9'
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* if (result.success && result.imageBuffer) {
|
|
24
|
+
* fs.writeFileSync('output.png', result.imageBuffer);
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import type { ImageGenConfig, ImageGenOptions, ImageGenResult } from "./types.js";
|
|
29
|
+
/**
|
|
30
|
+
* Image generation service for AI-powered image creation
|
|
31
|
+
*
|
|
32
|
+
* Uses NeuroLink SDK to generate images with support for:
|
|
33
|
+
* - Multiple providers (Vertex AI, OpenAI, etc.)
|
|
34
|
+
* - Reference images for style guidance
|
|
35
|
+
* - PDF documents for contextual generation
|
|
36
|
+
* - Configurable aspect ratios and styles
|
|
37
|
+
*
|
|
38
|
+
* @example Basic usage
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const service = new ImageGenService();
|
|
41
|
+
* const result = await service.generate({
|
|
42
|
+
* prompt: 'A cute robot playing chess'
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example With custom configuration
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const service = new ImageGenService({
|
|
49
|
+
* defaultProvider: 'openai',
|
|
50
|
+
* defaultModel: 'dall-e-3',
|
|
51
|
+
* timeout: 60000
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare class ImageGenService {
|
|
56
|
+
private config;
|
|
57
|
+
private neurolinkInstance;
|
|
58
|
+
private instanceId;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new ImageGenService instance
|
|
61
|
+
*
|
|
62
|
+
* @param config - Optional configuration overrides
|
|
63
|
+
*/
|
|
64
|
+
constructor(config?: Partial<ImageGenConfig>);
|
|
65
|
+
/**
|
|
66
|
+
* Get or create the NeuroLink instance
|
|
67
|
+
* Uses dynamic import to avoid circular dependencies
|
|
68
|
+
*
|
|
69
|
+
* @returns NeuroLink instance for image generation
|
|
70
|
+
*/
|
|
71
|
+
private getNeuroLink;
|
|
72
|
+
/**
|
|
73
|
+
* Generate an image from a text prompt
|
|
74
|
+
*
|
|
75
|
+
* @param options - Generation options including prompt, style, etc.
|
|
76
|
+
* @returns Promise resolving to generation result
|
|
77
|
+
*
|
|
78
|
+
* @example Simple generation
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const result = await service.generate({
|
|
81
|
+
* prompt: 'A futuristic cityscape'
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @example With reference images
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const referenceImage = fs.readFileSync('style-reference.jpg');
|
|
88
|
+
* const result = await service.generate({
|
|
89
|
+
* prompt: 'A portrait in this style',
|
|
90
|
+
* images: [referenceImage],
|
|
91
|
+
* aspectRatio: '1:1'
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
generate(options: ImageGenOptions): Promise<ImageGenResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Extract image data from various result formats
|
|
98
|
+
*
|
|
99
|
+
* Handles multiple output formats:
|
|
100
|
+
* - result.imageOutput?.base64
|
|
101
|
+
* - result.images?.[0]
|
|
102
|
+
* - data:image URI in content
|
|
103
|
+
* - Buffer directly
|
|
104
|
+
*
|
|
105
|
+
* @param result - Raw result from NeuroLink generate
|
|
106
|
+
* @returns Extracted image data or null
|
|
107
|
+
*/
|
|
108
|
+
private extractImageFromResult;
|
|
109
|
+
/**
|
|
110
|
+
* Check if image generation is enabled
|
|
111
|
+
*/
|
|
112
|
+
isEnabled(): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Get the default model
|
|
115
|
+
*/
|
|
116
|
+
getModel(): string;
|
|
117
|
+
/**
|
|
118
|
+
* Get the default provider
|
|
119
|
+
*/
|
|
120
|
+
getProvider(): string;
|
|
121
|
+
/**
|
|
122
|
+
* Get the service configuration
|
|
123
|
+
*/
|
|
124
|
+
getConfig(): Readonly<ImageGenConfig>;
|
|
125
|
+
/**
|
|
126
|
+
* Get the service instance ID (for debugging)
|
|
127
|
+
*/
|
|
128
|
+
getInstanceId(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Update service configuration
|
|
131
|
+
*
|
|
132
|
+
* @param config - Partial configuration to merge
|
|
133
|
+
*/
|
|
134
|
+
updateConfig(config: Partial<ImageGenConfig>): void;
|
|
135
|
+
/**
|
|
136
|
+
* Enable image generation
|
|
137
|
+
*/
|
|
138
|
+
enable(): void;
|
|
139
|
+
/**
|
|
140
|
+
* Disable image generation
|
|
141
|
+
*/
|
|
142
|
+
disable(): void;
|
|
143
|
+
}
|