@juspay/neurolink 9.5.3 → 9.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +29 -25
- package/dist/adapters/video/vertexVideoHandler.js +3 -3
- package/dist/agent/directTools.d.ts +5 -5
- package/dist/cli/commands/config.d.ts +9 -9
- package/dist/cli/commands/serve.d.ts +37 -0
- package/dist/cli/commands/serve.js +302 -229
- package/dist/cli/commands/setup-anthropic.d.ts +2 -2
- package/dist/cli/commands/setup-azure.d.ts +2 -2
- package/dist/cli/commands/setup-bedrock.d.ts +2 -2
- package/dist/cli/commands/setup-gcp.d.ts +2 -2
- package/dist/cli/commands/setup-google-ai.d.ts +2 -2
- package/dist/cli/commands/setup-huggingface.d.ts +2 -2
- package/dist/cli/commands/setup-mistral.d.ts +2 -2
- package/dist/cli/commands/setup-openai.d.ts +2 -2
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/factories/commandFactory.js +16 -2
- package/dist/cli/loop/optionsSchema.d.ts +2 -2
- package/dist/cli/loop/optionsSchema.js +4 -0
- package/dist/cli/loop/session.d.ts +4 -0
- package/dist/cli/loop/session.js +49 -4
- package/dist/cli/utils/interactiveSetup.d.ts +4 -4
- package/dist/config/conversationMemory.d.ts +2 -0
- package/dist/config/conversationMemory.js +5 -5
- package/dist/constants/contextWindows.d.ts +46 -0
- package/dist/constants/contextWindows.js +156 -0
- package/dist/context/budgetChecker.d.ts +18 -0
- package/dist/context/budgetChecker.js +71 -0
- package/dist/context/contextCompactor.d.ts +22 -0
- package/dist/context/contextCompactor.js +106 -0
- package/dist/context/effectiveHistory.d.ts +52 -0
- package/dist/context/effectiveHistory.js +105 -0
- package/dist/context/errorDetection.d.ts +14 -0
- package/dist/context/errorDetection.js +124 -0
- package/dist/context/fileSummarizationService.d.ts +54 -0
- package/dist/context/fileSummarizationService.js +255 -0
- package/dist/context/fileSummarizer.d.ts +56 -0
- package/dist/context/fileSummarizer.js +145 -0
- package/dist/context/fileTokenBudget.d.ts +53 -0
- package/dist/context/fileTokenBudget.js +127 -0
- package/dist/context/prompts/summarizationPrompt.d.ts +17 -0
- package/dist/context/prompts/summarizationPrompt.js +110 -0
- package/dist/context/stages/fileReadDeduplicator.d.ts +10 -0
- package/dist/context/stages/fileReadDeduplicator.js +66 -0
- package/dist/context/stages/slidingWindowTruncator.d.ts +11 -0
- package/dist/context/stages/slidingWindowTruncator.js +42 -0
- package/dist/context/stages/structuredSummarizer.d.ts +10 -0
- package/dist/context/stages/structuredSummarizer.js +49 -0
- package/dist/context/stages/toolOutputPruner.d.ts +10 -0
- package/dist/context/stages/toolOutputPruner.js +52 -0
- package/dist/context/summarizationEngine.d.ts +45 -0
- package/dist/context/summarizationEngine.js +110 -0
- package/dist/context/toolOutputLimits.d.ts +17 -0
- package/dist/context/toolOutputLimits.js +84 -0
- package/dist/context/toolPairRepair.d.ts +16 -0
- package/dist/context/toolPairRepair.js +66 -0
- package/dist/core/analytics.js +11 -4
- package/dist/core/baseProvider.d.ts +6 -0
- package/dist/core/baseProvider.js +83 -14
- package/dist/core/conversationMemoryManager.d.ts +14 -11
- package/dist/core/conversationMemoryManager.js +36 -68
- package/dist/core/dynamicModels.js +3 -2
- package/dist/core/modules/GenerationHandler.js +2 -0
- package/dist/core/modules/MessageBuilder.d.ts +1 -1
- package/dist/core/modules/MessageBuilder.js +2 -0
- package/dist/core/modules/TelemetryHandler.d.ts +2 -3
- package/dist/core/modules/TelemetryHandler.js +3 -3
- package/dist/core/modules/ToolsManager.d.ts +2 -2
- package/dist/core/redisConversationMemoryManager.d.ts +19 -14
- package/dist/core/redisConversationMemoryManager.js +94 -86
- package/dist/factories/providerFactory.d.ts +2 -2
- package/dist/files/fileReferenceRegistry.d.ts +276 -0
- package/dist/files/fileReferenceRegistry.js +1543 -0
- package/dist/files/fileTools.d.ts +423 -0
- package/dist/files/fileTools.js +449 -0
- package/dist/files/index.d.ts +14 -0
- package/dist/files/index.js +13 -0
- package/dist/files/streamingReader.d.ts +93 -0
- package/dist/files/streamingReader.js +321 -0
- package/dist/files/types.d.ts +23 -0
- package/dist/files/types.js +23 -0
- package/dist/image-gen/imageGenTools.d.ts +2 -2
- package/dist/image-gen/types.d.ts +12 -12
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/lib/adapters/video/vertexVideoHandler.js +3 -3
- package/dist/lib/agent/directTools.d.ts +7 -7
- package/dist/lib/config/conversationMemory.d.ts +2 -0
- package/dist/lib/config/conversationMemory.js +5 -5
- package/dist/lib/constants/contextWindows.d.ts +46 -0
- package/dist/lib/constants/contextWindows.js +157 -0
- package/dist/lib/context/budgetChecker.d.ts +18 -0
- package/dist/lib/context/budgetChecker.js +72 -0
- package/dist/lib/context/contextCompactor.d.ts +22 -0
- package/dist/lib/context/contextCompactor.js +107 -0
- package/dist/lib/context/effectiveHistory.d.ts +52 -0
- package/dist/lib/context/effectiveHistory.js +106 -0
- package/dist/lib/context/errorDetection.d.ts +14 -0
- package/dist/lib/context/errorDetection.js +125 -0
- package/dist/lib/context/fileSummarizationService.d.ts +54 -0
- package/dist/lib/context/fileSummarizationService.js +256 -0
- package/dist/lib/context/fileSummarizer.d.ts +56 -0
- package/dist/lib/context/fileSummarizer.js +146 -0
- package/dist/lib/context/fileTokenBudget.d.ts +53 -0
- package/dist/lib/context/fileTokenBudget.js +128 -0
- package/dist/lib/context/prompts/summarizationPrompt.d.ts +17 -0
- package/dist/lib/context/prompts/summarizationPrompt.js +111 -0
- package/dist/lib/context/stages/fileReadDeduplicator.d.ts +10 -0
- package/dist/lib/context/stages/fileReadDeduplicator.js +67 -0
- package/dist/lib/context/stages/slidingWindowTruncator.d.ts +11 -0
- package/dist/lib/context/stages/slidingWindowTruncator.js +43 -0
- package/dist/lib/context/stages/structuredSummarizer.d.ts +10 -0
- package/dist/lib/context/stages/structuredSummarizer.js +50 -0
- package/dist/lib/context/stages/toolOutputPruner.d.ts +10 -0
- package/dist/lib/context/stages/toolOutputPruner.js +53 -0
- package/dist/lib/context/summarizationEngine.d.ts +45 -0
- package/dist/lib/context/summarizationEngine.js +111 -0
- package/dist/lib/context/toolOutputLimits.d.ts +17 -0
- package/dist/lib/context/toolOutputLimits.js +85 -0
- package/dist/lib/context/toolPairRepair.d.ts +16 -0
- package/dist/lib/context/toolPairRepair.js +67 -0
- package/dist/lib/core/analytics.js +11 -4
- package/dist/lib/core/baseProvider.d.ts +6 -0
- package/dist/lib/core/baseProvider.js +83 -14
- package/dist/lib/core/conversationMemoryManager.d.ts +14 -11
- package/dist/lib/core/conversationMemoryManager.js +36 -68
- package/dist/lib/core/dynamicModels.js +3 -2
- package/dist/lib/core/modules/GenerationHandler.js +2 -0
- package/dist/lib/core/modules/MessageBuilder.d.ts +1 -1
- package/dist/lib/core/modules/MessageBuilder.js +2 -0
- package/dist/lib/core/modules/TelemetryHandler.d.ts +2 -3
- package/dist/lib/core/modules/TelemetryHandler.js +3 -3
- package/dist/lib/core/modules/ToolsManager.d.ts +2 -2
- package/dist/lib/core/redisConversationMemoryManager.d.ts +19 -14
- package/dist/lib/core/redisConversationMemoryManager.js +94 -86
- package/dist/lib/factories/providerFactory.d.ts +2 -2
- package/dist/lib/files/fileReferenceRegistry.d.ts +276 -0
- package/dist/lib/files/fileReferenceRegistry.js +1544 -0
- package/dist/lib/files/fileTools.d.ts +423 -0
- package/dist/lib/files/fileTools.js +450 -0
- package/dist/lib/files/index.d.ts +14 -0
- package/dist/lib/files/index.js +14 -0
- package/dist/lib/files/streamingReader.d.ts +93 -0
- package/dist/lib/files/streamingReader.js +322 -0
- package/dist/lib/files/types.d.ts +23 -0
- package/dist/lib/files/types.js +24 -0
- package/dist/lib/image-gen/imageGenTools.d.ts +2 -2
- package/dist/lib/image-gen/types.d.ts +12 -12
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/mcp/httpRetryHandler.js +6 -2
- package/dist/lib/memory/mem0Initializer.d.ts +2 -2
- package/dist/lib/neurolink.d.ts +66 -2
- package/dist/lib/neurolink.js +777 -315
- package/dist/lib/processors/archive/ArchiveProcessor.d.ts +327 -0
- package/dist/lib/processors/archive/ArchiveProcessor.js +1309 -0
- package/dist/lib/processors/archive/index.d.ts +33 -0
- package/dist/lib/processors/archive/index.js +43 -0
- package/dist/lib/processors/base/BaseFileProcessor.js +2 -1
- package/dist/lib/processors/base/types.d.ts +70 -64
- package/dist/lib/processors/base/types.js +6 -0
- package/dist/lib/processors/cli/fileProcessorCli.d.ts +8 -8
- package/dist/lib/processors/cli/fileProcessorCli.js +5 -5
- package/dist/lib/processors/config/mimeTypes.js +25 -0
- package/dist/lib/processors/config/sizeLimits.d.ts +52 -40
- package/dist/lib/processors/config/sizeLimits.js +56 -44
- package/dist/lib/processors/document/ExcelProcessor.d.ts +14 -0
- package/dist/lib/processors/document/ExcelProcessor.js +72 -1
- package/dist/lib/processors/document/PptxProcessor.d.ts +63 -0
- package/dist/lib/processors/document/PptxProcessor.js +158 -0
- package/dist/lib/processors/document/index.d.ts +1 -0
- package/dist/lib/processors/document/index.js +6 -0
- package/dist/lib/processors/errors/FileErrorCode.d.ts +2 -2
- package/dist/lib/processors/errors/errorHelpers.d.ts +2 -2
- package/dist/lib/processors/errors/errorHelpers.js +12 -4
- package/dist/lib/processors/errors/errorSerializer.d.ts +4 -4
- package/dist/lib/processors/index.d.ts +8 -2
- package/dist/lib/processors/index.js +5 -2
- package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +8 -8
- package/dist/lib/processors/integration/FileProcessorIntegration.js +7 -7
- package/dist/lib/processors/media/AudioProcessor.d.ts +328 -0
- package/dist/lib/processors/media/AudioProcessor.js +708 -0
- package/dist/lib/processors/media/VideoProcessor.d.ts +350 -0
- package/dist/lib/processors/media/VideoProcessor.js +992 -0
- package/dist/lib/processors/media/index.d.ts +27 -0
- package/dist/lib/processors/media/index.js +37 -0
- package/dist/lib/processors/registry/ProcessorRegistry.d.ts +19 -5
- package/dist/lib/processors/registry/ProcessorRegistry.js +103 -8
- package/dist/lib/processors/registry/index.d.ts +1 -1
- package/dist/lib/processors/registry/index.js +1 -1
- package/dist/lib/processors/registry/types.d.ts +2 -2
- package/dist/lib/providers/amazonBedrock.js +2 -1
- package/dist/lib/providers/anthropic.js +2 -2
- package/dist/lib/providers/anthropicBaseProvider.js +10 -4
- package/dist/lib/providers/azureOpenai.js +14 -25
- package/dist/lib/providers/googleAiStudio.js +136 -457
- package/dist/lib/providers/googleNativeGemini3.d.ts +119 -0
- package/dist/lib/providers/googleNativeGemini3.js +264 -0
- package/dist/lib/providers/googleVertex.d.ts +15 -1
- package/dist/lib/providers/googleVertex.js +341 -775
- package/dist/lib/providers/huggingFace.js +20 -5
- package/dist/lib/providers/litellm.js +6 -4
- package/dist/lib/providers/mistral.js +3 -2
- package/dist/lib/providers/openAI.js +2 -2
- package/dist/lib/providers/openRouter.js +8 -7
- package/dist/lib/providers/openaiCompatible.js +10 -4
- package/dist/lib/providers/sagemaker/detection.d.ts +6 -6
- package/dist/lib/providers/sagemaker/diagnostics.d.ts +4 -4
- package/dist/lib/providers/sagemaker/parsers.d.ts +4 -4
- package/dist/lib/rag/chunkers/RecursiveChunker.js +2 -2
- package/dist/lib/rag/document/loaders.d.ts +6 -71
- package/dist/lib/rag/document/loaders.js +5 -5
- package/dist/lib/rag/graphRag/graphRAG.js +26 -9
- package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
- package/dist/lib/rag/metadata/metadataExtractor.js +6 -3
- package/dist/lib/rag/pipeline/RAGPipeline.d.ts +8 -126
- package/dist/lib/rag/pipeline/RAGPipeline.js +11 -11
- package/dist/lib/rag/pipeline/contextAssembly.d.ts +3 -42
- package/dist/lib/rag/pipeline/contextAssembly.js +6 -3
- package/dist/lib/rag/reranker/RerankerFactory.d.ts +5 -60
- package/dist/lib/rag/resilience/CircuitBreaker.d.ts +3 -33
- package/dist/lib/rag/resilience/RetryHandler.d.ts +2 -21
- package/dist/lib/rag/resilience/RetryHandler.js +6 -2
- package/dist/lib/rag/retrieval/hybridSearch.d.ts +3 -41
- package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +2 -13
- package/dist/lib/rag/retrieval/vectorQueryTool.js +4 -3
- package/dist/lib/rag/types.d.ts +3 -3
- package/dist/lib/sdk/toolRegistration.d.ts +2 -2
- package/dist/lib/server/middleware/cache.d.ts +2 -2
- package/dist/lib/server/middleware/rateLimit.d.ts +2 -2
- package/dist/lib/server/routes/mcpRoutes.js +277 -249
- package/dist/lib/server/routes/memoryRoutes.js +287 -281
- package/dist/lib/server/utils/validation.d.ts +10 -10
- package/dist/lib/services/server/ai/observability/instrumentation.d.ts +24 -2
- package/dist/lib/services/server/ai/observability/instrumentation.js +12 -1
- package/dist/lib/session/globalSessionState.d.ts +2 -2
- package/dist/lib/telemetry/telemetryService.d.ts +2 -2
- package/dist/lib/types/common.d.ts +39 -0
- package/dist/lib/types/contextTypes.d.ts +255 -0
- package/dist/lib/types/contextTypes.js +0 -2
- package/dist/lib/types/conversation.d.ts +62 -0
- package/dist/lib/types/conversationMemoryInterface.d.ts +27 -0
- package/dist/lib/types/conversationMemoryInterface.js +7 -0
- package/dist/lib/types/fileReferenceTypes.d.ts +222 -0
- package/dist/lib/types/fileReferenceTypes.js +9 -0
- package/dist/lib/types/fileTypes.d.ts +26 -3
- package/dist/lib/types/generateTypes.d.ts +50 -1
- package/dist/lib/types/index.d.ts +4 -5
- package/dist/lib/types/index.js +8 -10
- package/dist/lib/types/modelTypes.d.ts +2 -2
- package/dist/lib/types/processorTypes.d.ts +597 -0
- package/dist/lib/types/processorTypes.js +91 -0
- package/dist/lib/types/ragTypes.d.ts +489 -0
- package/dist/lib/types/ragTypes.js +8 -0
- package/dist/lib/types/sdkTypes.d.ts +17 -18
- package/dist/lib/types/streamTypes.d.ts +24 -1
- package/dist/lib/utils/async/retry.d.ts +2 -2
- package/dist/lib/utils/async/withTimeout.js +3 -1
- package/dist/lib/utils/conversationMemory.d.ts +12 -6
- package/dist/lib/utils/conversationMemory.js +91 -36
- package/dist/lib/utils/errorHandling.d.ts +5 -0
- package/dist/lib/utils/errorHandling.js +19 -0
- package/dist/lib/utils/fileDetector.d.ts +62 -0
- package/dist/lib/utils/fileDetector.js +1014 -14
- package/dist/lib/utils/json/safeParse.d.ts +2 -2
- package/dist/lib/utils/messageBuilder.js +806 -153
- package/dist/lib/utils/modelChoices.d.ts +2 -2
- package/dist/lib/utils/multimodalOptionsBuilder.d.ts +2 -1
- package/dist/lib/utils/multimodalOptionsBuilder.js +1 -0
- package/dist/lib/utils/pricing.d.ts +12 -0
- package/dist/lib/utils/pricing.js +134 -0
- package/dist/lib/utils/rateLimiter.d.ts +2 -2
- package/dist/lib/utils/redis.d.ts +17 -0
- package/dist/lib/utils/redis.js +105 -0
- package/dist/lib/utils/sanitizers/filename.d.ts +4 -4
- package/dist/lib/utils/sanitizers/svg.d.ts +2 -2
- package/dist/lib/utils/thinkingConfig.d.ts +6 -6
- package/dist/lib/utils/timeout.d.ts +10 -0
- package/dist/lib/utils/timeout.js +15 -0
- package/dist/lib/utils/tokenEstimation.d.ts +68 -0
- package/dist/lib/utils/tokenEstimation.js +113 -0
- package/dist/lib/utils/tokenUtils.d.ts +4 -4
- package/dist/lib/utils/ttsProcessor.d.ts +2 -2
- package/dist/lib/workflow/config.d.ts +150 -150
- package/dist/mcp/httpRetryHandler.js +6 -2
- package/dist/memory/mem0Initializer.d.ts +2 -2
- package/dist/neurolink.d.ts +66 -2
- package/dist/neurolink.js +777 -315
- package/dist/processors/archive/ArchiveProcessor.d.ts +327 -0
- package/dist/processors/archive/ArchiveProcessor.js +1308 -0
- package/dist/processors/archive/index.d.ts +33 -0
- package/dist/processors/archive/index.js +42 -0
- package/dist/processors/base/BaseFileProcessor.js +2 -1
- package/dist/processors/base/types.d.ts +70 -64
- package/dist/processors/base/types.js +6 -0
- package/dist/processors/cli/fileProcessorCli.d.ts +8 -8
- package/dist/processors/cli/fileProcessorCli.js +5 -5
- package/dist/processors/config/mimeTypes.js +25 -0
- package/dist/processors/config/sizeLimits.d.ts +52 -40
- package/dist/processors/config/sizeLimits.js +56 -44
- package/dist/processors/document/ExcelProcessor.d.ts +14 -0
- package/dist/processors/document/ExcelProcessor.js +72 -1
- package/dist/processors/document/PptxProcessor.d.ts +63 -0
- package/dist/processors/document/PptxProcessor.js +157 -0
- package/dist/processors/document/index.d.ts +1 -0
- package/dist/processors/document/index.js +6 -0
- package/dist/processors/errors/FileErrorCode.d.ts +2 -2
- package/dist/processors/errors/errorHelpers.d.ts +2 -2
- package/dist/processors/errors/errorHelpers.js +12 -4
- package/dist/processors/errors/errorSerializer.d.ts +4 -4
- package/dist/processors/index.d.ts +8 -2
- package/dist/processors/index.js +5 -2
- package/dist/processors/integration/FileProcessorIntegration.d.ts +8 -8
- package/dist/processors/integration/FileProcessorIntegration.js +7 -7
- package/dist/processors/media/AudioProcessor.d.ts +328 -0
- package/dist/processors/media/AudioProcessor.js +707 -0
- package/dist/processors/media/VideoProcessor.d.ts +350 -0
- package/dist/processors/media/VideoProcessor.js +991 -0
- package/dist/processors/media/ffprobe-static.d.ts +4 -0
- package/dist/processors/media/index.d.ts +27 -0
- package/dist/processors/media/index.js +36 -0
- package/dist/processors/registry/ProcessorRegistry.d.ts +19 -5
- package/dist/processors/registry/ProcessorRegistry.js +103 -8
- package/dist/processors/registry/index.d.ts +1 -1
- package/dist/processors/registry/index.js +1 -1
- package/dist/processors/registry/types.d.ts +2 -2
- package/dist/providers/amazonBedrock.js +2 -1
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/anthropicBaseProvider.js +10 -4
- package/dist/providers/azureOpenai.js +14 -25
- package/dist/providers/googleAiStudio.js +136 -457
- package/dist/providers/googleNativeGemini3.d.ts +119 -0
- package/dist/providers/googleNativeGemini3.js +263 -0
- package/dist/providers/googleVertex.d.ts +15 -1
- package/dist/providers/googleVertex.js +341 -775
- package/dist/providers/huggingFace.js +20 -5
- package/dist/providers/litellm.js +6 -4
- package/dist/providers/mistral.js +3 -2
- package/dist/providers/openAI.js +2 -2
- package/dist/providers/openRouter.js +8 -7
- package/dist/providers/openaiCompatible.js +10 -4
- package/dist/providers/sagemaker/detection.d.ts +6 -6
- package/dist/providers/sagemaker/diagnostics.d.ts +4 -4
- package/dist/providers/sagemaker/parsers.d.ts +4 -4
- package/dist/rag/chunkers/RecursiveChunker.js +2 -2
- package/dist/rag/document/loaders.d.ts +6 -71
- package/dist/rag/document/loaders.js +5 -5
- package/dist/rag/graphRag/graphRAG.js +26 -9
- package/dist/rag/metadata/MetadataExtractorFactory.d.ts +5 -55
- package/dist/rag/metadata/metadataExtractor.js +6 -3
- package/dist/rag/pipeline/RAGPipeline.d.ts +8 -126
- package/dist/rag/pipeline/RAGPipeline.js +11 -11
- package/dist/rag/pipeline/contextAssembly.d.ts +3 -42
- package/dist/rag/pipeline/contextAssembly.js +6 -3
- package/dist/rag/reranker/RerankerFactory.d.ts +5 -60
- package/dist/rag/resilience/CircuitBreaker.d.ts +3 -33
- package/dist/rag/resilience/RetryHandler.d.ts +2 -21
- package/dist/rag/resilience/RetryHandler.js +6 -2
- package/dist/rag/retrieval/hybridSearch.d.ts +3 -41
- package/dist/rag/retrieval/vectorQueryTool.d.ts +2 -13
- package/dist/rag/retrieval/vectorQueryTool.js +4 -3
- package/dist/rag/types.d.ts +3 -3
- package/dist/sdk/toolRegistration.d.ts +2 -2
- package/dist/server/middleware/cache.d.ts +2 -2
- package/dist/server/middleware/rateLimit.d.ts +2 -2
- package/dist/server/routes/mcpRoutes.js +277 -249
- package/dist/server/routes/memoryRoutes.js +287 -281
- package/dist/server/utils/validation.d.ts +4 -4
- package/dist/services/server/ai/observability/instrumentation.d.ts +24 -2
- package/dist/services/server/ai/observability/instrumentation.js +12 -1
- package/dist/session/globalSessionState.d.ts +2 -2
- package/dist/telemetry/telemetryService.d.ts +2 -2
- package/dist/types/common.d.ts +39 -0
- package/dist/types/contextTypes.d.ts +255 -0
- package/dist/types/contextTypes.js +0 -2
- package/dist/types/conversation.d.ts +62 -0
- package/dist/types/conversationMemoryInterface.d.ts +27 -0
- package/dist/types/conversationMemoryInterface.js +6 -0
- package/dist/types/fileReferenceTypes.d.ts +222 -0
- package/dist/types/fileReferenceTypes.js +8 -0
- package/dist/types/fileTypes.d.ts +26 -3
- package/dist/types/generateTypes.d.ts +50 -1
- package/dist/types/index.d.ts +4 -5
- package/dist/types/index.js +8 -10
- package/dist/types/processorTypes.d.ts +597 -0
- package/dist/types/processorTypes.js +90 -0
- package/dist/types/ragTypes.d.ts +489 -0
- package/dist/types/ragTypes.js +7 -0
- package/dist/types/sdkTypes.d.ts +17 -18
- package/dist/types/streamTypes.d.ts +24 -1
- package/dist/utils/async/retry.d.ts +2 -2
- package/dist/utils/async/withTimeout.js +3 -1
- package/dist/utils/conversationMemory.d.ts +12 -6
- package/dist/utils/conversationMemory.js +91 -36
- package/dist/utils/errorHandling.d.ts +5 -0
- package/dist/utils/errorHandling.js +19 -0
- package/dist/utils/fileDetector.d.ts +62 -0
- package/dist/utils/fileDetector.js +1014 -14
- package/dist/utils/json/safeParse.d.ts +2 -2
- package/dist/utils/messageBuilder.js +806 -153
- package/dist/utils/modelChoices.d.ts +2 -2
- package/dist/utils/multimodalOptionsBuilder.d.ts +2 -1
- package/dist/utils/multimodalOptionsBuilder.js +1 -0
- package/dist/utils/pricing.d.ts +12 -0
- package/dist/utils/pricing.js +133 -0
- package/dist/utils/rateLimiter.d.ts +2 -2
- package/dist/utils/redis.d.ts +17 -0
- package/dist/utils/redis.js +105 -0
- package/dist/utils/sanitizers/filename.d.ts +4 -4
- package/dist/utils/sanitizers/svg.d.ts +2 -2
- package/dist/utils/thinkingConfig.d.ts +6 -6
- package/dist/utils/timeout.d.ts +10 -0
- package/dist/utils/timeout.js +15 -0
- package/dist/utils/tokenEstimation.d.ts +68 -0
- package/dist/utils/tokenEstimation.js +112 -0
- package/dist/utils/tokenUtils.d.ts +4 -4
- package/dist/utils/ttsProcessor.d.ts +2 -2
- package/dist/workflow/config.d.ts +104 -104
- package/package.json +18 -6
- package/dist/lib/utils/conversationMemoryUtils.d.ts +0 -25
- package/dist/lib/utils/conversationMemoryUtils.js +0 -138
- package/dist/utils/conversationMemoryUtils.d.ts +0 -25
- package/dist/utils/conversationMemoryUtils.js +0 -137
|
@@ -3,7 +3,7 @@ import { streamText, } from "ai";
|
|
|
3
3
|
import { AIProviderName } from "../constants/enums.js";
|
|
4
4
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
6
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
7
7
|
import { DEFAULT_MAX_STEPS } from "../core/constants.js";
|
|
8
8
|
import { validateApiKey, createHuggingFaceConfig, getProviderModel, } from "../utils/providerConfig.js";
|
|
9
9
|
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
@@ -112,20 +112,35 @@ export class HuggingFaceProvider extends BaseProvider {
|
|
|
112
112
|
const timeout = this.getTimeout(options);
|
|
113
113
|
const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
|
|
114
114
|
try {
|
|
115
|
+
// Get tools - options.tools is pre-merged by BaseProvider.stream()
|
|
116
|
+
const shouldUseTools = !options.disableTools && this.supportsTools();
|
|
117
|
+
const allTools = shouldUseTools
|
|
118
|
+
? options.tools || (await this.getAllTools())
|
|
119
|
+
: {};
|
|
115
120
|
// Enhanced tool handling for HuggingFace models
|
|
116
121
|
const streamOptions = this.prepareStreamOptions(options, analysisSchema);
|
|
117
122
|
// Build message array from options with multimodal support
|
|
118
123
|
// Using protected helper from BaseProvider to eliminate code duplication
|
|
119
|
-
|
|
124
|
+
// Pass the enhanced system prompt (with tool-calling instructions) so it
|
|
125
|
+
// actually reaches the model instead of being silently discarded.
|
|
126
|
+
const messagesOptions = streamOptions.system
|
|
127
|
+
? { ...options, systemPrompt: streamOptions.system }
|
|
128
|
+
: options;
|
|
129
|
+
const messages = await this.buildMessagesForStream(messagesOptions);
|
|
120
130
|
const result = await streamText({
|
|
121
131
|
model: this.model,
|
|
122
132
|
messages: messages,
|
|
123
133
|
temperature: options.temperature,
|
|
124
134
|
maxTokens: options.maxTokens, // No default limit - unlimited unless specified
|
|
125
135
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
126
|
-
tools:
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
tools: (shouldUseTools
|
|
137
|
+
? streamOptions.tools || allTools
|
|
138
|
+
: {}),
|
|
139
|
+
toolChoice: (shouldUseTools
|
|
140
|
+
? streamOptions.toolChoice || "auto"
|
|
141
|
+
: "none"),
|
|
142
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
143
|
+
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
129
144
|
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
130
145
|
this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
|
|
131
146
|
logger.warn("[HuggingFaceProvider] Failed to store tool executions", {
|
|
@@ -4,9 +4,10 @@ import { BaseProvider } from "../core/baseProvider.js";
|
|
|
4
4
|
import { DEFAULT_MAX_STEPS } from "../core/constants.js";
|
|
5
5
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
6
6
|
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
7
|
+
import { isAbortError } from "../utils/errorHandling.js";
|
|
7
8
|
import { logger } from "../utils/logger.js";
|
|
8
9
|
import { getProviderModel } from "../utils/providerConfig.js";
|
|
9
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
10
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
10
11
|
// Configuration helpers
|
|
11
12
|
const getLiteLLMConfig = () => {
|
|
12
13
|
return {
|
|
@@ -157,7 +158,8 @@ export class LiteLLMProvider extends BaseProvider {
|
|
|
157
158
|
toolChoice: "auto",
|
|
158
159
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
159
160
|
}),
|
|
160
|
-
abortSignal: timeoutController?.controller.signal,
|
|
161
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
162
|
+
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
161
163
|
onError: (event) => {
|
|
162
164
|
const error = event.error;
|
|
163
165
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -180,7 +182,7 @@ export class LiteLLMProvider extends BaseProvider {
|
|
|
180
182
|
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
181
183
|
logger.info("Tool execution completed", { toolResults, toolCalls });
|
|
182
184
|
this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
|
|
183
|
-
logger.warn("LiteLLMProvider] Failed to store tool executions", {
|
|
185
|
+
logger.warn("[LiteLLMProvider] Failed to store tool executions", {
|
|
184
186
|
provider: this.providerName,
|
|
185
187
|
error: error instanceof Error ? error.message : String(error),
|
|
186
188
|
});
|
|
@@ -361,7 +363,7 @@ export class LiteLLMProvider extends BaseProvider {
|
|
|
361
363
|
}
|
|
362
364
|
catch (error) {
|
|
363
365
|
clearTimeout(timeoutId);
|
|
364
|
-
if (error
|
|
366
|
+
if (isAbortError(error)) {
|
|
365
367
|
throw new Error("Request timed out after 5 seconds");
|
|
366
368
|
}
|
|
367
369
|
throw error;
|
|
@@ -6,7 +6,7 @@ import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
|
6
6
|
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
7
7
|
import { logger } from "../utils/logger.js";
|
|
8
8
|
import { createMistralConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
|
|
9
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
9
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
10
10
|
// Configuration helpers - now using consolidated utility
|
|
11
11
|
const getMistralApiKey = () => {
|
|
12
12
|
return validateApiKey(createMistralConfig());
|
|
@@ -63,7 +63,8 @@ export class MistralProvider extends BaseProvider {
|
|
|
63
63
|
tools,
|
|
64
64
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
65
65
|
toolChoice: shouldUseTools ? "auto" : "none",
|
|
66
|
-
abortSignal: timeoutController?.controller.signal,
|
|
66
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
67
|
+
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
67
68
|
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
68
69
|
this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
|
|
69
70
|
logger.warn("[MistralProvider] Failed to store tool executions", {
|
package/dist/providers/openAI.js
CHANGED
|
@@ -9,7 +9,7 @@ import { AuthenticationError, InvalidModelError, NetworkError, ProviderError, Ra
|
|
|
9
9
|
import { logger } from "../utils/logger.js";
|
|
10
10
|
import { createOpenAIConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
|
|
11
11
|
import { isZodSchema } from "../utils/schemaConversion.js";
|
|
12
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
12
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
13
13
|
// Configuration helpers - now using consolidated utility
|
|
14
14
|
const getOpenAIApiKey = () => {
|
|
15
15
|
return validateApiKey(createOpenAIConfig());
|
|
@@ -282,7 +282,7 @@ export class OpenAIProvider extends BaseProvider {
|
|
|
282
282
|
tools,
|
|
283
283
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
284
284
|
toolChoice: shouldUseTools && Object.keys(tools).length > 0 ? "auto" : "none",
|
|
285
|
-
abortSignal: timeoutController?.controller.signal,
|
|
285
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
286
286
|
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
287
287
|
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
288
288
|
logger.info("Tool execution completed", { toolResults, toolCalls });
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
|
|
2
|
-
import { Output, streamText } from "ai";
|
|
2
|
+
import { Output, streamText, } from "ai";
|
|
3
3
|
import { AIProviderName } from "../constants/enums.js";
|
|
4
4
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
5
5
|
import { DEFAULT_MAX_STEPS } from "../core/constants.js";
|
|
6
6
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
7
7
|
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
8
|
+
import { isAbortError } from "../utils/errorHandling.js";
|
|
8
9
|
import { logger } from "../utils/logger.js";
|
|
9
10
|
import { getProviderModel } from "../utils/providerConfig.js";
|
|
10
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
11
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
11
12
|
// Constants
|
|
12
13
|
const MODELS_DISCOVERY_TIMEOUT_MS = 5000; // 5 seconds for model discovery
|
|
13
14
|
// Configuration helpers
|
|
@@ -206,8 +207,7 @@ export class OpenRouterProvider extends BaseProvider {
|
|
|
206
207
|
// BaseProvider.stream() pre-merges base tools + external tools into options.tools
|
|
207
208
|
const shouldUseTools = !options.disableTools && this.supportsTools();
|
|
208
209
|
const tools = shouldUseTools
|
|
209
|
-
? options.tools ||
|
|
210
|
-
(await this.getAllTools())
|
|
210
|
+
? options.tools || (await this.getAllTools())
|
|
211
211
|
: {};
|
|
212
212
|
logger.debug(`OpenRouter: Tools for streaming`, {
|
|
213
213
|
shouldUseTools,
|
|
@@ -229,7 +229,8 @@ export class OpenRouterProvider extends BaseProvider {
|
|
|
229
229
|
toolChoice: "auto",
|
|
230
230
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
231
231
|
}),
|
|
232
|
-
abortSignal: timeoutController?.controller.signal,
|
|
232
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
233
|
+
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
233
234
|
onError: (event) => {
|
|
234
235
|
const error = event.error;
|
|
235
236
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -276,7 +277,7 @@ export class OpenRouterProvider extends BaseProvider {
|
|
|
276
277
|
}
|
|
277
278
|
}
|
|
278
279
|
const result = await streamText(streamOptions);
|
|
279
|
-
timeoutController?.cleanup();
|
|
280
|
+
result.text.finally(() => timeoutController?.cleanup());
|
|
280
281
|
// Transform stream to content object stream using fullStream (handles both text and tool calls)
|
|
281
282
|
const transformedStream = (async function* () {
|
|
282
283
|
// Try fullStream first (handles both text and tool calls), fallback to textStream
|
|
@@ -439,7 +440,7 @@ export class OpenRouterProvider extends BaseProvider {
|
|
|
439
440
|
}
|
|
440
441
|
catch (error) {
|
|
441
442
|
clearTimeout(timeoutId);
|
|
442
|
-
if (error
|
|
443
|
+
if (isAbortError(error)) {
|
|
443
444
|
throw new Error(`Request timed out after ${MODELS_DISCOVERY_TIMEOUT_MS / 1000} seconds`);
|
|
444
445
|
}
|
|
445
446
|
throw error;
|
|
@@ -3,7 +3,7 @@ import { streamText } from "ai";
|
|
|
3
3
|
import { AIProviderName } from "../constants/enums.js";
|
|
4
4
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
-
import { createTimeoutController, TimeoutError } from "../utils/timeout.js";
|
|
6
|
+
import { composeAbortSignals, createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
7
7
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
8
8
|
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
9
9
|
import { DEFAULT_MAX_STEPS } from "../core/constants.js";
|
|
@@ -159,6 +159,11 @@ export class OpenAICompatibleProvider extends BaseProvider {
|
|
|
159
159
|
const timeout = this.getTimeout(options);
|
|
160
160
|
const timeoutController = createTimeoutController(timeout, this.providerName, "stream");
|
|
161
161
|
try {
|
|
162
|
+
// Get tools - options.tools is pre-merged by BaseProvider.stream()
|
|
163
|
+
const shouldUseTools = !options.disableTools && this.supportsTools();
|
|
164
|
+
const tools = shouldUseTools
|
|
165
|
+
? options.tools || (await this.getAllTools())
|
|
166
|
+
: {};
|
|
162
167
|
// Build message array from options with multimodal support
|
|
163
168
|
// Using protected helper from BaseProvider to eliminate code duplication
|
|
164
169
|
const messages = await this.buildMessagesForStream(options);
|
|
@@ -173,9 +178,10 @@ export class OpenAICompatibleProvider extends BaseProvider {
|
|
|
173
178
|
? { temperature: options.temperature }
|
|
174
179
|
: {}),
|
|
175
180
|
maxSteps: options.maxSteps || DEFAULT_MAX_STEPS,
|
|
176
|
-
tools
|
|
177
|
-
toolChoice: "auto",
|
|
178
|
-
abortSignal: timeoutController?.controller.signal,
|
|
181
|
+
tools,
|
|
182
|
+
toolChoice: shouldUseTools ? "auto" : "none",
|
|
183
|
+
abortSignal: composeAbortSignals(options.abortSignal, timeoutController?.controller.signal),
|
|
184
|
+
experimental_telemetry: this.telemetryHandler.getTelemetryConfig(options),
|
|
179
185
|
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
180
186
|
this.handleToolExecutionStorage(toolCalls, toolResults, options, new Date()).catch((error) => {
|
|
181
187
|
logger.warn("[OpenAiCompatibleProvider] Failed to store tool executions", {
|
|
@@ -8,7 +8,7 @@ import type { SageMakerConfig, SageMakerModelConfig } from "../../types/provider
|
|
|
8
8
|
/**
|
|
9
9
|
* Streaming capability information for an endpoint
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export type StreamingCapability = {
|
|
12
12
|
/** Whether streaming is supported */
|
|
13
13
|
supported: boolean;
|
|
14
14
|
/** Detected streaming protocol */
|
|
@@ -28,11 +28,11 @@ export interface StreamingCapability {
|
|
|
28
28
|
version?: string;
|
|
29
29
|
tags?: string[];
|
|
30
30
|
};
|
|
31
|
-
}
|
|
31
|
+
};
|
|
32
32
|
/**
|
|
33
33
|
* Model type detection result
|
|
34
34
|
*/
|
|
35
|
-
export
|
|
35
|
+
export type ModelDetectionResult = {
|
|
36
36
|
/** Primary model type */
|
|
37
37
|
type: StreamingCapability["modelType"];
|
|
38
38
|
/** Detection confidence (0-1) */
|
|
@@ -41,11 +41,11 @@ export interface ModelDetectionResult {
|
|
|
41
41
|
evidence: string[];
|
|
42
42
|
/** Suggested configuration */
|
|
43
43
|
suggestedConfig?: Partial<SageMakerModelConfig>;
|
|
44
|
-
}
|
|
44
|
+
};
|
|
45
45
|
/**
|
|
46
46
|
* Endpoint health and metadata information
|
|
47
47
|
*/
|
|
48
|
-
export
|
|
48
|
+
export type EndpointHealth = {
|
|
49
49
|
/** Health status */
|
|
50
50
|
status: "healthy" | "unhealthy" | "unknown";
|
|
51
51
|
/** Response time in milliseconds */
|
|
@@ -59,7 +59,7 @@ export interface EndpointHealth {
|
|
|
59
59
|
framework?: string;
|
|
60
60
|
architecture?: string;
|
|
61
61
|
};
|
|
62
|
-
}
|
|
62
|
+
};
|
|
63
63
|
/**
|
|
64
64
|
* SageMaker Model Detection and Capability Discovery Service
|
|
65
65
|
*/
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Simple diagnostic result interface
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export type DiagnosticResult = {
|
|
10
10
|
name: string;
|
|
11
11
|
category: "configuration" | "connectivity" | "streaming";
|
|
12
12
|
status: "pass" | "fail" | "warning";
|
|
13
13
|
message: string;
|
|
14
14
|
details?: string;
|
|
15
15
|
recommendation?: string;
|
|
16
|
-
}
|
|
16
|
+
};
|
|
17
17
|
/**
|
|
18
18
|
* Diagnostic report interface
|
|
19
19
|
*/
|
|
20
|
-
export
|
|
20
|
+
export type DiagnosticReport = {
|
|
21
21
|
overallStatus: "healthy" | "issues" | "critical";
|
|
22
22
|
results: DiagnosticResult[];
|
|
23
23
|
summary: {
|
|
@@ -26,7 +26,7 @@ export interface DiagnosticReport {
|
|
|
26
26
|
failed: number;
|
|
27
27
|
warnings: number;
|
|
28
28
|
};
|
|
29
|
-
}
|
|
29
|
+
};
|
|
30
30
|
/**
|
|
31
31
|
* Run quick diagnostics for SageMaker configuration
|
|
32
32
|
*/
|
|
@@ -10,12 +10,12 @@ import { type StructuredOutputParser } from "./structured-parser.js";
|
|
|
10
10
|
* Shared bracket counting state and utilities
|
|
11
11
|
* Used by both validateJSONCompleteness and StructuredOutputParser
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export type BracketCountingState = {
|
|
14
14
|
braceCount: number;
|
|
15
15
|
bracketCount: number;
|
|
16
16
|
inString: boolean;
|
|
17
17
|
escapeNext: boolean;
|
|
18
|
-
}
|
|
18
|
+
};
|
|
19
19
|
/**
|
|
20
20
|
* Process a single character for bracket counting logic
|
|
21
21
|
* Shared utility to avoid code duplication between parsers
|
|
@@ -44,7 +44,7 @@ export declare function parseToolCallArguments(args: string): {
|
|
|
44
44
|
/**
|
|
45
45
|
* Base interface for streaming response parsers
|
|
46
46
|
*/
|
|
47
|
-
export
|
|
47
|
+
export type StreamingParser = {
|
|
48
48
|
/** Parse a chunk of streaming data */
|
|
49
49
|
parse(chunk: Uint8Array): SageMakerStreamChunk[];
|
|
50
50
|
/** Check if a chunk indicates completion */
|
|
@@ -55,7 +55,7 @@ export interface StreamingParser {
|
|
|
55
55
|
getName(): string;
|
|
56
56
|
/** Reset parser state for new stream */
|
|
57
57
|
reset(): void;
|
|
58
|
-
}
|
|
58
|
+
};
|
|
59
59
|
/**
|
|
60
60
|
* Abstract base parser with common functionality
|
|
61
61
|
*/
|
|
@@ -127,8 +127,8 @@ export class RecursiveChunker extends BaseChunker {
|
|
|
127
127
|
for (let i = 0; i < chunks.length; i++) {
|
|
128
128
|
let chunk = chunks[i] ?? "";
|
|
129
129
|
// Add overlap from previous chunk
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
const prevChunk = i > 0 ? chunks[i - 1] : undefined;
|
|
131
|
+
if (prevChunk) {
|
|
132
132
|
const overlapText = prevChunk.slice(-Math.min(overlap, prevChunk.length));
|
|
133
133
|
chunk = overlapText + chunk;
|
|
134
134
|
}
|
|
@@ -24,77 +24,12 @@
|
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
import { MDocument } from "./MDocument.js";
|
|
27
|
-
import type {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
metadata?: Record<string, unknown>;
|
|
34
|
-
/** Encoding for text files */
|
|
35
|
-
encoding?: BufferEncoding;
|
|
36
|
-
/** Document type override */
|
|
37
|
-
type?: DocumentType;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Web loader options
|
|
41
|
-
*/
|
|
42
|
-
export interface WebLoaderOptions extends LoaderOptions {
|
|
43
|
-
/** Request timeout in milliseconds */
|
|
44
|
-
timeout?: number;
|
|
45
|
-
/** Custom headers for request */
|
|
46
|
-
headers?: Record<string, string>;
|
|
47
|
-
/** Extract only main content (remove navigation, ads, etc.) */
|
|
48
|
-
extractMainContent?: boolean;
|
|
49
|
-
/** Selector for main content (CSS selector) */
|
|
50
|
-
contentSelector?: string;
|
|
51
|
-
/** User agent string */
|
|
52
|
-
userAgent?: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* PDF loader options
|
|
56
|
-
*/
|
|
57
|
-
export interface PDFLoaderOptions extends LoaderOptions {
|
|
58
|
-
/** Page range to extract (e.g., "1-5" or "1,3,5") */
|
|
59
|
-
pageRange?: string;
|
|
60
|
-
/** Extract images as base64 */
|
|
61
|
-
extractImages?: boolean;
|
|
62
|
-
/** OCR for scanned documents */
|
|
63
|
-
enableOCR?: boolean;
|
|
64
|
-
/** Preserve layout formatting */
|
|
65
|
-
preserveLayout?: boolean;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* CSV loader options
|
|
69
|
-
*/
|
|
70
|
-
export interface CSVLoaderOptions extends LoaderOptions {
|
|
71
|
-
/** Delimiter character */
|
|
72
|
-
delimiter?: string;
|
|
73
|
-
/** Whether first row is header */
|
|
74
|
-
hasHeader?: boolean;
|
|
75
|
-
/** Column names (if no header) */
|
|
76
|
-
columns?: string[];
|
|
77
|
-
/** Output format */
|
|
78
|
-
outputFormat?: "text" | "json" | "markdown";
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Abstract document loader interface
|
|
82
|
-
*/
|
|
83
|
-
export interface DocumentLoader {
|
|
84
|
-
/**
|
|
85
|
-
* Load document from source
|
|
86
|
-
* @param source - File path, URL, or content
|
|
87
|
-
* @param options - Loader options
|
|
88
|
-
* @returns Promise resolving to MDocument
|
|
89
|
-
*/
|
|
90
|
-
load(source: string, options?: LoaderOptions): Promise<MDocument>;
|
|
91
|
-
/**
|
|
92
|
-
* Check if loader can handle the source
|
|
93
|
-
* @param source - File path, URL, or content
|
|
94
|
-
* @returns True if loader can handle the source
|
|
95
|
-
*/
|
|
96
|
-
canHandle(source: string): boolean;
|
|
97
|
-
}
|
|
27
|
+
import type { LoaderOptions, WebLoaderOptions, PDFLoaderOptions, CSVLoaderOptions, DocumentLoader } from "../../types/ragTypes.js";
|
|
28
|
+
export type { LoaderOptions } from "../../types/ragTypes.js";
|
|
29
|
+
export type { WebLoaderOptions } from "../../types/ragTypes.js";
|
|
30
|
+
export type { PDFLoaderOptions } from "../../types/ragTypes.js";
|
|
31
|
+
export type { CSVLoaderOptions } from "../../types/ragTypes.js";
|
|
32
|
+
export type { DocumentLoader } from "../../types/ragTypes.js";
|
|
98
33
|
/**
|
|
99
34
|
* Text file loader
|
|
100
35
|
*/
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
* const pdfDoc = await PDFLoader.load('/path/to/document.pdf');
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
import { readFile } from "fs/promises";
|
|
27
26
|
import { existsSync } from "fs";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
27
|
+
import { readFile } from "fs/promises";
|
|
28
|
+
import { basename, extname } from "path";
|
|
30
29
|
import { logger } from "../../utils/logger.js";
|
|
30
|
+
import { MDocument } from "./MDocument.js";
|
|
31
31
|
/**
|
|
32
32
|
* Text file loader
|
|
33
33
|
*/
|
|
@@ -244,8 +244,8 @@ export class PDFLoader {
|
|
|
244
244
|
}
|
|
245
245
|
async loadPdfParser() {
|
|
246
246
|
try {
|
|
247
|
-
//
|
|
248
|
-
const pdfParse = await import("pdf-parse");
|
|
247
|
+
// pdf-parse is an optional dependency - use dynamic import with type assertion
|
|
248
|
+
const pdfParse = (await import("pdf-parse"));
|
|
249
249
|
return pdfParse.default || pdfParse;
|
|
250
250
|
}
|
|
251
251
|
catch {
|
|
@@ -52,11 +52,17 @@ export class GraphRAG {
|
|
|
52
52
|
for (let i = 0; i < nodeIds.length; i++) {
|
|
53
53
|
const edges = [];
|
|
54
54
|
const nodeA = this.nodes.get(nodeIds[i]);
|
|
55
|
+
if (!nodeA?.embedding) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
55
58
|
for (let j = 0; j < nodeIds.length; j++) {
|
|
56
59
|
if (i === j) {
|
|
57
60
|
continue;
|
|
58
61
|
}
|
|
59
62
|
const nodeB = this.nodes.get(nodeIds[j]);
|
|
63
|
+
if (!nodeB?.embedding) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
60
66
|
const similarity = this.cosineSimilarity(nodeA.embedding, nodeB.embedding);
|
|
61
67
|
if (similarity >= this.threshold) {
|
|
62
68
|
edges.push({
|
|
@@ -137,14 +143,19 @@ export class GraphRAG {
|
|
|
137
143
|
const rankedNodes = Array.from(scores.entries())
|
|
138
144
|
.sort((a, b) => b[1] - a[1])
|
|
139
145
|
.slice(0, topK)
|
|
140
|
-
.
|
|
146
|
+
.flatMap(([id, score]) => {
|
|
141
147
|
const node = this.nodes.get(id);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
if (!node) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
return [
|
|
152
|
+
{
|
|
153
|
+
id,
|
|
154
|
+
content: node.content,
|
|
155
|
+
metadata: node.metadata,
|
|
156
|
+
score,
|
|
157
|
+
},
|
|
158
|
+
];
|
|
148
159
|
});
|
|
149
160
|
logger.debug("[GraphRAG] Query completed", {
|
|
150
161
|
topK,
|
|
@@ -174,6 +185,9 @@ export class GraphRAG {
|
|
|
174
185
|
if (existingId === id) {
|
|
175
186
|
continue;
|
|
176
187
|
}
|
|
188
|
+
if (!existingNode.embedding) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
177
191
|
const similarity = this.cosineSimilarity(embedding.vector, existingNode.embedding);
|
|
178
192
|
if (similarity >= this.threshold) {
|
|
179
193
|
edges.push({
|
|
@@ -259,7 +273,7 @@ export class GraphRAG {
|
|
|
259
273
|
const queue = [nodeId];
|
|
260
274
|
while (queue.length > 0) {
|
|
261
275
|
const current = queue.shift();
|
|
262
|
-
if (visited.has(current)) {
|
|
276
|
+
if (current === undefined || visited.has(current)) {
|
|
263
277
|
continue;
|
|
264
278
|
}
|
|
265
279
|
visited.add(current);
|
|
@@ -327,12 +341,15 @@ export class GraphRAG {
|
|
|
327
341
|
for (let i = 0; i < nodeIds.length; i++) {
|
|
328
342
|
const edges = [];
|
|
329
343
|
const nodeA = this.nodes.get(nodeIds[i]);
|
|
344
|
+
if (!nodeA?.embedding) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
330
347
|
for (let j = 0; j < nodeIds.length; j++) {
|
|
331
348
|
if (i === j) {
|
|
332
349
|
continue;
|
|
333
350
|
}
|
|
334
351
|
const nodeB = this.nodes.get(nodeIds[j]);
|
|
335
|
-
if (!
|
|
352
|
+
if (!nodeB?.embedding) {
|
|
336
353
|
continue;
|
|
337
354
|
}
|
|
338
355
|
const similarity = this.cosineSimilarity(nodeA.embedding, nodeB.embedding);
|
|
@@ -5,61 +5,11 @@
|
|
|
5
5
|
* Follows the BaseFactory pattern for consistent lifecycle management.
|
|
6
6
|
*/
|
|
7
7
|
import { BaseFactory } from "../../core/infrastructure/index.js";
|
|
8
|
-
import type {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export type
|
|
13
|
-
/**
|
|
14
|
-
* Metadata Extractor interface - all extractors implement this
|
|
15
|
-
*/
|
|
16
|
-
export interface MetadataExtractor {
|
|
17
|
-
/** Extractor type identifier */
|
|
18
|
-
readonly type: MetadataExtractorType;
|
|
19
|
-
/**
|
|
20
|
-
* Extract metadata from chunks
|
|
21
|
-
* @param chunks - Array of chunks to extract metadata from
|
|
22
|
-
* @param params - Extraction parameters
|
|
23
|
-
* @returns Array of extraction results
|
|
24
|
-
*/
|
|
25
|
-
extract(chunks: Chunk[], params?: ExtractParams): Promise<ExtractionResult[]>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Metadata extractor configuration
|
|
29
|
-
*/
|
|
30
|
-
export interface MetadataExtractorConfig {
|
|
31
|
-
/** Extractor type */
|
|
32
|
-
type: MetadataExtractorType;
|
|
33
|
-
/** Language model provider */
|
|
34
|
-
provider?: string;
|
|
35
|
-
/** Model name for LLM-based extraction */
|
|
36
|
-
modelName?: string;
|
|
37
|
-
/** Custom prompt template */
|
|
38
|
-
promptTemplate?: string;
|
|
39
|
-
/** Maximum tokens for LLM response */
|
|
40
|
-
maxTokens?: number;
|
|
41
|
-
/** Temperature for LLM generation */
|
|
42
|
-
temperature?: number;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Metadata extractor metadata for discovery and documentation
|
|
46
|
-
*/
|
|
47
|
-
export interface MetadataExtractorMetadata {
|
|
48
|
-
/** Human-readable description */
|
|
49
|
-
description: string;
|
|
50
|
-
/** Default configuration */
|
|
51
|
-
defaultConfig: Partial<MetadataExtractorConfig>;
|
|
52
|
-
/** Supported configuration options */
|
|
53
|
-
supportedOptions: string[];
|
|
54
|
-
/** Recommended use cases */
|
|
55
|
-
useCases: string[];
|
|
56
|
-
/** Alternative names for this extractor */
|
|
57
|
-
aliases: string[];
|
|
58
|
-
/** Whether this extractor requires an AI model */
|
|
59
|
-
requiresModel: boolean;
|
|
60
|
-
/** Extraction types this extractor can produce */
|
|
61
|
-
extractionTypes: string[];
|
|
62
|
-
}
|
|
8
|
+
import type { MetadataExtractor, MetadataExtractorConfig, MetadataExtractorMetadata, MetadataExtractorType } from "../../types/ragTypes.js";
|
|
9
|
+
export type { MetadataExtractorType } from "../../types/ragTypes.js";
|
|
10
|
+
export type { MetadataExtractor } from "../../types/ragTypes.js";
|
|
11
|
+
export type { MetadataExtractorConfig } from "../../types/ragTypes.js";
|
|
12
|
+
export type { MetadataExtractorMetadata } from "../../types/ragTypes.js";
|
|
63
13
|
/**
|
|
64
14
|
* Metadata Extractor Factory
|
|
65
15
|
*
|
|
@@ -113,10 +113,13 @@ export class LLMMetadataExtractor {
|
|
|
113
113
|
const groups = new Map();
|
|
114
114
|
for (const chunk of chunks) {
|
|
115
115
|
const docId = chunk.metadata.documentId;
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
const group = groups.get(docId);
|
|
117
|
+
if (group) {
|
|
118
|
+
group.push(chunk);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
groups.set(docId, [chunk]);
|
|
118
122
|
}
|
|
119
|
-
groups.get(docId).push(chunk);
|
|
120
123
|
}
|
|
121
124
|
return groups;
|
|
122
125
|
}
|