@juspay/neurolink 9.30.0 → 9.31.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 +14 -0
- package/README.md +2 -3
- package/dist/adapters/providerImageAdapter.js +13 -22
- package/dist/adapters/video/videoAnalyzer.d.ts +4 -4
- package/dist/adapters/video/videoAnalyzer.js +3 -3
- package/dist/agent/directTools.d.ts +20 -289
- package/dist/agent/directTools.js +11 -10
- package/dist/auth/accountPool.d.ts +68 -0
- package/dist/auth/accountPool.js +178 -0
- package/dist/auth/anthropicOAuth.d.ts +15 -5
- package/dist/auth/anthropicOAuth.js +117 -57
- package/dist/auth/index.d.ts +7 -5
- package/dist/auth/index.js +6 -2
- package/dist/auth/tokenStore.d.ts +71 -27
- package/dist/auth/tokenStore.js +342 -64
- package/dist/cli/commands/auth.d.ts +39 -2
- package/dist/cli/commands/auth.js +585 -36
- package/dist/cli/commands/config.d.ts +47 -574
- package/dist/cli/commands/config.js +142 -24
- package/dist/cli/commands/docs.d.ts +1 -5
- package/dist/cli/commands/observability.d.ts +1 -17
- package/dist/cli/commands/ollama.js +1 -1
- package/dist/cli/commands/proxy.d.ts +20 -0
- package/dist/cli/commands/proxy.js +1254 -0
- package/dist/cli/commands/setup-anthropic.js +1 -1
- package/dist/cli/commands/setup-azure.js +1 -1
- package/dist/cli/commands/setup-bedrock.js +2 -2
- package/dist/cli/commands/setup-gcp.js +1 -1
- package/dist/cli/commands/setup-google-ai.js +1 -1
- package/dist/cli/commands/setup-huggingface.js +2 -2
- package/dist/cli/commands/setup-mistral.js +1 -1
- package/dist/cli/commands/setup-openai.js +1 -1
- package/dist/cli/commands/setup.js +3 -3
- package/dist/cli/commands/telemetry.d.ts +1 -22
- package/dist/cli/factories/authCommandFactory.d.ts +16 -11
- package/dist/cli/factories/authCommandFactory.js +96 -1
- package/dist/cli/factories/ollamaCommandFactory.js +1 -1
- package/dist/cli/factories/sagemakerCommandFactory.js +25 -6
- package/dist/cli/index.d.ts +0 -6
- package/dist/cli/index.js +5 -2
- package/dist/cli/loop/conversationSelector.js +7 -2
- package/dist/cli/parser.js +19 -1
- package/dist/cli/utils/envManager.js +2 -2
- package/dist/cli/utils/ollamaUtils.d.ts +1 -2
- package/dist/client/adapters/providerImageAdapter.js +588 -0
- package/dist/client/adapters/tts/googleTTSHandler.js +344 -0
- package/dist/client/adapters/video/directorPipeline.js +516 -0
- package/dist/client/adapters/video/ffmpegAdapter.js +206 -0
- package/dist/client/adapters/video/frameExtractor.js +143 -0
- package/dist/client/adapters/video/vertexVideoHandler.js +763 -0
- package/dist/client/adapters/video/videoAnalyzer.js +238 -0
- package/dist/client/adapters/video/videoMerger.js +171 -0
- package/dist/client/agent/directTools.js +840 -0
- package/dist/client/aiSdkAdapter.d.ts +196 -0
- package/dist/client/aiSdkAdapter.js +487 -0
- package/dist/client/auth/anthropicOAuth.js +974 -0
- package/dist/client/auth/tokenStore.js +799 -0
- package/dist/client/auth.d.ts +248 -0
- package/dist/client/auth.js +473 -0
- package/dist/client/client/aiSdkAdapter.js +487 -0
- package/dist/client/client/auth.js +473 -0
- package/dist/client/client/errors.js +552 -0
- package/dist/client/client/httpClient.js +837 -0
- package/dist/client/client/index.js +172 -0
- package/dist/client/client/interceptors.js +601 -0
- package/dist/client/client/reactHooks.js +1159 -0
- package/dist/client/client/sseClient.js +545 -0
- package/dist/client/client/streamingClient.js +917 -0
- package/dist/client/client/wsClient.js +369 -0
- package/dist/client/config/configManager.js +303 -0
- package/dist/client/config/conversationMemory.js +86 -0
- package/dist/client/config/taskClassificationConfig.js +148 -0
- package/dist/client/constants/contextWindows.js +295 -0
- package/dist/client/constants/enums.js +853 -0
- package/dist/client/constants/index.js +207 -0
- package/dist/client/constants/performance.js +389 -0
- package/dist/client/constants/retry.js +266 -0
- package/dist/client/constants/timeouts.js +182 -0
- package/dist/client/constants/tokens.js +380 -0
- package/dist/client/constants/videoErrors.js +46 -0
- package/dist/client/context/budgetChecker.js +98 -0
- package/dist/client/context/contextCompactor.js +205 -0
- package/dist/client/context/emergencyTruncation.js +88 -0
- package/dist/client/context/errorDetection.js +171 -0
- package/dist/client/context/errors.js +21 -0
- package/dist/client/context/fileTokenBudget.js +127 -0
- package/dist/client/context/prompts/summarizationPrompt.js +117 -0
- package/dist/client/context/stages/fileReadDeduplicator.js +66 -0
- package/dist/client/context/stages/slidingWindowTruncator.js +190 -0
- package/dist/client/context/stages/structuredSummarizer.js +99 -0
- package/dist/client/context/stages/toolOutputPruner.js +52 -0
- package/dist/client/context/summarizationEngine.js +136 -0
- package/dist/client/context/toolOutputLimits.js +78 -0
- package/dist/client/context/toolPairRepair.js +66 -0
- package/dist/client/core/analytics.js +88 -0
- package/dist/client/core/baseProvider.js +1385 -0
- package/dist/client/core/constants.js +140 -0
- package/dist/client/core/conversationMemoryFactory.js +141 -0
- package/dist/client/core/conversationMemoryInitializer.js +128 -0
- package/dist/client/core/conversationMemoryManager.js +344 -0
- package/dist/client/core/dynamicModels.js +358 -0
- package/dist/client/core/evaluation.js +309 -0
- package/dist/client/core/evaluationProviders.js +248 -0
- package/dist/client/core/factory.js +412 -0
- package/dist/client/core/infrastructure/baseError.js +22 -0
- package/dist/client/core/infrastructure/baseFactory.js +54 -0
- package/dist/client/core/infrastructure/baseRegistry.js +49 -0
- package/dist/client/core/infrastructure/index.js +5 -0
- package/dist/client/core/infrastructure/retry.js +20 -0
- package/dist/client/core/infrastructure/typedEventEmitter.js +23 -0
- package/dist/client/core/modelConfiguration.js +851 -0
- package/dist/client/core/modules/GenerationHandler.js +588 -0
- package/dist/client/core/modules/MessageBuilder.js +273 -0
- package/dist/client/core/modules/StreamHandler.js +185 -0
- package/dist/client/core/modules/TelemetryHandler.js +203 -0
- package/dist/client/core/modules/ToolsManager.js +499 -0
- package/dist/client/core/modules/Utilities.js +331 -0
- package/dist/client/core/redisConversationMemoryManager.js +1435 -0
- package/dist/client/core/streamAnalytics.js +131 -0
- package/dist/client/errors.d.ts +299 -0
- package/dist/client/errors.js +552 -0
- package/dist/client/evaluation/contextBuilder.js +134 -0
- package/dist/client/evaluation/index.js +61 -0
- package/dist/client/evaluation/prompts.js +73 -0
- package/dist/client/evaluation/ragasEvaluator.js +110 -0
- package/dist/client/evaluation/retryManager.js +78 -0
- package/dist/client/evaluation/scoring.js +61 -0
- package/dist/client/factories/providerFactory.js +166 -0
- package/dist/client/factories/providerRegistry.js +166 -0
- package/dist/client/features/ppt/constants.js +896 -0
- package/dist/client/features/ppt/contentPlanner.js +529 -0
- package/dist/client/features/ppt/presentationOrchestrator.js +236 -0
- package/dist/client/features/ppt/slideGenerator.js +532 -0
- package/dist/client/features/ppt/slideRenderers.js +2383 -0
- package/dist/client/features/ppt/slideTypeInference.js +405 -0
- package/dist/client/features/ppt/types.js +13 -0
- package/dist/client/features/ppt/utils.js +443 -0
- package/dist/client/files/fileReferenceRegistry.js +1543 -0
- package/dist/client/files/fileTools.js +450 -0
- package/dist/client/files/streamingReader.js +321 -0
- package/dist/client/files/types.js +23 -0
- package/dist/client/hitl/hitlErrors.js +54 -0
- package/dist/client/hitl/hitlManager.js +460 -0
- package/dist/client/httpClient.d.ts +297 -0
- package/dist/client/httpClient.js +837 -0
- package/dist/client/index.d.ts +111 -0
- package/dist/client/index.js +511 -0
- package/dist/client/interceptors.d.ts +283 -0
- package/dist/client/interceptors.js +601 -0
- package/dist/client/mcp/agentExposure.js +356 -0
- package/dist/client/mcp/auth/index.js +11 -0
- package/dist/client/mcp/auth/oauthClientProvider.js +325 -0
- package/dist/client/mcp/auth/tokenStorage.js +134 -0
- package/dist/client/mcp/batching/index.js +10 -0
- package/dist/client/mcp/batching/requestBatcher.js +441 -0
- package/dist/client/mcp/caching/index.js +10 -0
- package/dist/client/mcp/caching/toolCache.js +433 -0
- package/dist/client/mcp/elicitation/elicitationManager.js +376 -0
- package/dist/client/mcp/elicitation/index.js +11 -0
- package/dist/client/mcp/elicitation/types.js +10 -0
- package/dist/client/mcp/elicitationProtocol.js +375 -0
- package/dist/client/mcp/enhancedToolDiscovery.js +481 -0
- package/dist/client/mcp/externalServerManager.js +1478 -0
- package/dist/client/mcp/factory.js +161 -0
- package/dist/client/mcp/flexibleToolValidator.js +161 -0
- package/dist/client/mcp/httpRateLimiter.js +391 -0
- package/dist/client/mcp/httpRetryHandler.js +178 -0
- package/dist/client/mcp/index.js +74 -0
- package/dist/client/mcp/mcpCircuitBreaker.js +427 -0
- package/dist/client/mcp/mcpClientFactory.js +708 -0
- package/dist/client/mcp/mcpRegistryClient.js +488 -0
- package/dist/client/mcp/mcpServerBase.js +373 -0
- package/dist/client/mcp/multiServerManager.js +579 -0
- package/dist/client/mcp/registry.js +158 -0
- package/dist/client/mcp/routing/index.js +10 -0
- package/dist/client/mcp/routing/toolRouter.js +416 -0
- package/dist/client/mcp/serverCapabilities.js +502 -0
- package/dist/client/mcp/servers/agent/directToolsServer.js +150 -0
- package/dist/client/mcp/toolAnnotations.js +239 -0
- package/dist/client/mcp/toolConverter.js +258 -0
- package/dist/client/mcp/toolDiscoveryService.js +798 -0
- package/dist/client/mcp/toolIntegration.js +334 -0
- package/dist/client/mcp/toolRegistry.js +719 -0
- package/dist/client/memory/hippocampusInitializer.js +19 -0
- package/dist/client/memory/memoryRetrievalTools.js +166 -0
- package/dist/client/middleware/builtin/analytics.js +132 -0
- package/dist/client/middleware/builtin/autoEvaluation.js +203 -0
- package/dist/client/middleware/builtin/guardrails.js +109 -0
- package/dist/client/middleware/builtin/lifecycle.js +168 -0
- package/dist/client/middleware/factory.js +327 -0
- package/dist/client/middleware/registry.js +295 -0
- package/dist/client/middleware/utils/guardrailsUtils.js +396 -0
- package/dist/client/models/anthropicModels.js +527 -0
- package/dist/client/neurolink.js +8015 -0
- package/dist/client/observability/exporterRegistry.js +413 -0
- package/dist/client/observability/exporters/arizeExporter.js +138 -0
- package/dist/client/observability/exporters/baseExporter.js +190 -0
- package/dist/client/observability/exporters/braintrustExporter.js +154 -0
- package/dist/client/observability/exporters/datadogExporter.js +196 -0
- package/dist/client/observability/exporters/laminarExporter.js +302 -0
- package/dist/client/observability/exporters/langfuseExporter.js +209 -0
- package/dist/client/observability/exporters/langsmithExporter.js +143 -0
- package/dist/client/observability/exporters/otelExporter.js +164 -0
- package/dist/client/observability/exporters/posthogExporter.js +287 -0
- package/dist/client/observability/exporters/sentryExporter.js +165 -0
- package/dist/client/observability/index.js +31 -0
- package/dist/client/observability/metricsAggregator.js +556 -0
- package/dist/client/observability/otelBridge.js +131 -0
- package/dist/client/observability/retryPolicy.js +383 -0
- package/dist/client/observability/sampling/samplers.js +216 -0
- package/dist/client/observability/spanProcessor.js +303 -0
- package/dist/client/observability/tokenTracker.js +413 -0
- package/dist/client/observability/types/exporterTypes.js +5 -0
- package/dist/client/observability/types/index.js +4 -0
- package/dist/client/observability/types/spanTypes.js +92 -0
- package/dist/client/observability/utils/safeMetadata.js +25 -0
- package/dist/client/observability/utils/spanSerializer.js +292 -0
- package/dist/client/processors/archive/ArchiveProcessor.js +1308 -0
- package/dist/client/processors/base/BaseFileProcessor.js +614 -0
- package/dist/client/processors/base/types.js +82 -0
- package/dist/client/processors/config/fileTypes.js +520 -0
- package/dist/client/processors/config/index.js +92 -0
- package/dist/client/processors/config/languageMap.js +410 -0
- package/dist/client/processors/config/mimeTypes.js +363 -0
- package/dist/client/processors/config/sizeLimits.js +258 -0
- package/dist/client/processors/document/ExcelProcessor.js +590 -0
- package/dist/client/processors/document/OpenDocumentProcessor.js +212 -0
- package/dist/client/processors/document/PptxProcessor.js +157 -0
- package/dist/client/processors/document/RtfProcessor.js +361 -0
- package/dist/client/processors/document/WordProcessor.js +353 -0
- package/dist/client/processors/errors/FileErrorCode.js +255 -0
- package/dist/client/processors/errors/errorHelpers.js +386 -0
- package/dist/client/processors/errors/errorSerializer.js +507 -0
- package/dist/client/processors/errors/index.js +49 -0
- package/dist/client/processors/markup/SvgProcessor.js +240 -0
- package/dist/client/processors/media/AudioProcessor.js +707 -0
- package/dist/client/processors/media/VideoProcessor.js +1045 -0
- package/dist/client/providers/amazonBedrock.js +1512 -0
- package/dist/client/providers/amazonSagemaker.js +162 -0
- package/dist/client/providers/anthropic.js +831 -0
- package/dist/client/providers/azureOpenai.js +143 -0
- package/dist/client/providers/googleAiStudio.js +1200 -0
- package/dist/client/providers/googleNativeGemini3.js +543 -0
- package/dist/client/providers/googleVertex.js +2936 -0
- package/dist/client/providers/huggingFace.js +315 -0
- package/dist/client/providers/litellm.js +488 -0
- package/dist/client/providers/mistral.js +157 -0
- package/dist/client/providers/ollama.js +1579 -0
- package/dist/client/providers/openAI.js +627 -0
- package/dist/client/providers/openRouter.js +543 -0
- package/dist/client/providers/openaiCompatible.js +290 -0
- package/dist/client/providers/providerTypeUtils.js +46 -0
- package/dist/client/providers/sagemaker/adaptive-semaphore.js +215 -0
- package/dist/client/providers/sagemaker/client.js +472 -0
- package/dist/client/providers/sagemaker/config.js +317 -0
- package/dist/client/providers/sagemaker/detection.js +606 -0
- package/dist/client/providers/sagemaker/error-constants.js +227 -0
- package/dist/client/providers/sagemaker/errors.js +299 -0
- package/dist/client/providers/sagemaker/language-model.js +775 -0
- package/dist/client/providers/sagemaker/parsers.js +634 -0
- package/dist/client/providers/sagemaker/streaming.js +331 -0
- package/dist/client/providers/sagemaker/structured-parser.js +625 -0
- package/dist/client/proxy/accountQuota.js +162 -0
- package/dist/client/proxy/claudeFormat.js +595 -0
- package/dist/client/proxy/modelRouter.js +29 -0
- package/dist/client/proxy/oauthFetch.js +367 -0
- package/dist/client/proxy/proxyFetch.js +586 -0
- package/dist/client/proxy/requestLogger.js +207 -0
- package/dist/client/proxy/tokenRefresh.js +124 -0
- package/dist/client/proxy/usageStats.js +74 -0
- package/dist/client/proxy/utils/noProxyUtils.js +149 -0
- package/dist/client/rag/ChunkerFactory.js +320 -0
- package/dist/client/rag/ChunkerRegistry.js +421 -0
- package/dist/client/rag/chunkers/BaseChunker.js +143 -0
- package/dist/client/rag/chunkers/CharacterChunker.js +28 -0
- package/dist/client/rag/chunkers/HTMLChunker.js +38 -0
- package/dist/client/rag/chunkers/JSONChunker.js +68 -0
- package/dist/client/rag/chunkers/LaTeXChunker.js +63 -0
- package/dist/client/rag/chunkers/MarkdownChunker.js +306 -0
- package/dist/client/rag/chunkers/RecursiveChunker.js +139 -0
- package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +138 -0
- package/dist/client/rag/chunkers/SentenceChunker.js +66 -0
- package/dist/client/rag/chunkers/TokenChunker.js +61 -0
- package/dist/client/rag/chunkers/index.js +15 -0
- package/dist/client/rag/chunking/characterChunker.js +142 -0
- package/dist/client/rag/chunking/chunkerRegistry.js +194 -0
- package/dist/client/rag/chunking/htmlChunker.js +247 -0
- package/dist/client/rag/chunking/index.js +17 -0
- package/dist/client/rag/chunking/jsonChunker.js +281 -0
- package/dist/client/rag/chunking/latexChunker.js +251 -0
- package/dist/client/rag/chunking/markdownChunker.js +373 -0
- package/dist/client/rag/chunking/recursiveChunker.js +148 -0
- package/dist/client/rag/chunking/semanticChunker.js +306 -0
- package/dist/client/rag/chunking/sentenceChunker.js +230 -0
- package/dist/client/rag/chunking/tokenChunker.js +183 -0
- package/dist/client/rag/document/MDocument.js +392 -0
- package/dist/client/rag/document/index.js +5 -0
- package/dist/client/rag/document/loaders.js +500 -0
- package/dist/client/rag/errors/RAGError.js +274 -0
- package/dist/client/rag/errors/index.js +6 -0
- package/dist/client/rag/graphRag/graphRAG.js +401 -0
- package/dist/client/rag/graphRag/index.js +4 -0
- package/dist/client/rag/index.js +141 -0
- package/dist/client/rag/metadata/MetadataExtractorFactory.js +418 -0
- package/dist/client/rag/metadata/MetadataExtractorRegistry.js +362 -0
- package/dist/client/rag/metadata/index.js +9 -0
- package/dist/client/rag/metadata/metadataExtractor.js +280 -0
- package/dist/client/rag/pipeline/RAGPipeline.js +436 -0
- package/dist/client/rag/pipeline/contextAssembly.js +341 -0
- package/dist/client/rag/pipeline/index.js +5 -0
- package/dist/client/rag/ragIntegration.js +321 -0
- package/dist/client/rag/reranker/RerankerFactory.js +430 -0
- package/dist/client/rag/reranker/RerankerRegistry.js +402 -0
- package/dist/client/rag/reranker/index.js +9 -0
- package/dist/client/rag/reranker/reranker.js +277 -0
- package/dist/client/rag/resilience/CircuitBreaker.js +431 -0
- package/dist/client/rag/resilience/RetryHandler.js +304 -0
- package/dist/client/rag/resilience/index.js +7 -0
- package/dist/client/rag/retrieval/hybridSearch.js +335 -0
- package/dist/client/rag/retrieval/index.js +5 -0
- package/dist/client/rag/retrieval/vectorQueryTool.js +307 -0
- package/dist/client/rag/types.js +8 -0
- package/dist/client/reactHooks.d.ts +239 -0
- package/dist/client/reactHooks.tsx +1483 -0
- package/dist/client/sdk/toolRegistration.js +377 -0
- package/dist/client/server/abstract/baseServerAdapter.js +575 -0
- package/dist/client/server/adapters/expressAdapter.js +486 -0
- package/dist/client/server/adapters/fastifyAdapter.js +472 -0
- package/dist/client/server/adapters/honoAdapter.js +632 -0
- package/dist/client/server/adapters/koaAdapter.js +510 -0
- package/dist/client/server/errors.js +486 -0
- package/dist/client/server/factory/serverAdapterFactory.js +160 -0
- package/dist/client/server/index.js +108 -0
- package/dist/client/server/middleware/abortSignal.js +111 -0
- package/dist/client/server/middleware/auth.js +388 -0
- package/dist/client/server/middleware/cache.js +359 -0
- package/dist/client/server/middleware/common.js +281 -0
- package/dist/client/server/middleware/deprecation.js +190 -0
- package/dist/client/server/middleware/mcpBodyAttachment.js +63 -0
- package/dist/client/server/middleware/rateLimit.js +227 -0
- package/dist/client/server/middleware/validation.js +388 -0
- package/dist/client/server/openapi/generator.js +398 -0
- package/dist/client/server/openapi/index.js +36 -0
- package/dist/client/server/openapi/schemas.js +695 -0
- package/dist/client/server/openapi/templates.js +374 -0
- package/dist/client/server/routes/agentRoutes.js +171 -0
- package/dist/client/server/routes/claudeProxyRoutes.js +1600 -0
- package/dist/client/server/routes/healthRoutes.js +187 -0
- package/dist/client/server/routes/index.js +57 -0
- package/dist/client/server/routes/mcpRoutes.js +342 -0
- package/dist/client/server/routes/memoryRoutes.js +350 -0
- package/dist/client/server/routes/openApiRoutes.js +126 -0
- package/dist/client/server/routes/toolRoutes.js +199 -0
- package/dist/client/server/streaming/dataStream.js +486 -0
- package/dist/client/server/streaming/index.js +11 -0
- package/dist/client/server/types.js +67 -0
- package/dist/client/server/utils/redaction.js +334 -0
- package/dist/client/server/utils/validation.js +243 -0
- package/dist/client/server/websocket/WebSocketHandler.js +383 -0
- package/dist/client/server/websocket/index.js +4 -0
- package/dist/client/services/server/ai/observability/instrumentation.js +808 -0
- package/dist/client/sseClient.d.ts +156 -0
- package/dist/client/sseClient.js +545 -0
- package/dist/client/streamingClient.d.ts +327 -0
- package/dist/client/streamingClient.js +917 -0
- package/dist/client/telemetry/attributes.js +100 -0
- package/dist/client/telemetry/index.js +26 -0
- package/dist/client/telemetry/telemetryService.js +308 -0
- package/dist/client/telemetry/tracers.js +17 -0
- package/dist/client/telemetry/withSpan.js +34 -0
- package/dist/client/types/actionTypes.js +6 -0
- package/dist/client/types/analytics.js +5 -0
- package/dist/client/types/authTypes.js +8 -0
- package/dist/client/types/circuitBreakerErrors.js +34 -0
- package/dist/client/types/cli.js +21 -0
- package/dist/client/types/clientTypes.js +10 -0
- package/dist/client/types/common.js +51 -0
- package/dist/client/types/configTypes.js +49 -0
- package/dist/client/types/content.js +19 -0
- package/dist/client/types/contextTypes.js +400 -0
- package/dist/client/types/conversation.js +47 -0
- package/dist/client/types/conversationMemoryInterface.js +6 -0
- package/dist/client/types/domainTypes.js +5 -0
- package/dist/client/types/errors.js +167 -0
- package/dist/client/types/evaluation.js +5 -0
- package/dist/client/types/evaluationProviders.js +5 -0
- package/dist/client/types/evaluationTypes.js +1 -0
- package/dist/client/types/externalMcp.js +6 -0
- package/dist/client/types/fileReferenceTypes.js +8 -0
- package/dist/client/types/fileTypes.js +4 -0
- package/dist/client/types/generateTypes.js +1 -0
- package/dist/client/types/guardrails.js +1 -0
- package/dist/client/types/hitlTypes.js +8 -0
- package/dist/client/types/index.js +57 -0
- package/dist/client/types/mcpTypes.js +5 -0
- package/dist/client/types/middlewareTypes.js +1 -0
- package/dist/client/types/modelTypes.js +30 -0
- package/dist/client/types/multimodal.js +135 -0
- package/dist/client/types/observability.js +6 -0
- package/dist/client/types/pptTypes.js +82 -0
- package/dist/client/types/providers.js +111 -0
- package/dist/client/types/proxyTypes.js +16 -0
- package/dist/client/types/ragTypes.js +7 -0
- package/dist/client/types/sdkTypes.js +8 -0
- package/dist/client/types/serviceTypes.js +5 -0
- package/dist/client/types/streamTypes.js +1 -0
- package/dist/client/types/subscriptionTypes.js +9 -0
- package/dist/client/types/taskClassificationTypes.js +5 -0
- package/dist/client/types/tools.js +24 -0
- package/dist/client/types/ttsTypes.js +57 -0
- package/dist/client/types/typeAliases.js +48 -0
- package/dist/client/types/utilities.js +4 -0
- package/dist/client/types/workflowTypes.js +30 -0
- package/dist/client/utils/async/withTimeout.js +98 -0
- package/dist/client/utils/asyncMutex.js +60 -0
- package/dist/client/utils/conversationMemory.js +431 -0
- package/dist/client/utils/csvProcessor.js +846 -0
- package/dist/client/utils/errorHandling.js +936 -0
- package/dist/client/utils/evaluationUtils.js +131 -0
- package/dist/client/utils/factoryProcessing.js +589 -0
- package/dist/client/utils/fileDetector.js +2161 -0
- package/dist/client/utils/imageCache.js +376 -0
- package/dist/client/utils/imageProcessor.js +704 -0
- package/dist/client/utils/logger.js +491 -0
- package/dist/client/utils/mcpDefaults.js +134 -0
- package/dist/client/utils/messageBuilder.js +1653 -0
- package/dist/client/utils/modelAliasResolver.js +54 -0
- package/dist/client/utils/modelDetection.js +80 -0
- package/dist/client/utils/modelRouter.js +292 -0
- package/dist/client/utils/multimodalOptionsBuilder.js +65 -0
- package/dist/client/utils/observabilityHelpers.js +47 -0
- package/dist/client/utils/parameterValidation.js +966 -0
- package/dist/client/utils/pdfProcessor.js +410 -0
- package/dist/client/utils/performance.js +222 -0
- package/dist/client/utils/pricing.js +340 -0
- package/dist/client/utils/promptRedaction.js +62 -0
- package/dist/client/utils/providerConfig.js +1009 -0
- package/dist/client/utils/providerHealth.js +1237 -0
- package/dist/client/utils/providerRetry.js +112 -0
- package/dist/client/utils/providerUtils.js +434 -0
- package/dist/client/utils/rateLimiter.js +200 -0
- package/dist/client/utils/redis.js +368 -0
- package/dist/client/utils/retryHandler.js +269 -0
- package/dist/client/utils/retryability.js +22 -0
- package/dist/client/utils/sanitizers/svg.js +481 -0
- package/dist/client/utils/schemaConversion.js +255 -0
- package/dist/client/utils/taskClassificationUtils.js +149 -0
- package/dist/client/utils/taskClassifier.js +94 -0
- package/dist/client/utils/thinkingConfig.js +104 -0
- package/dist/client/utils/timeout.js +359 -0
- package/dist/client/utils/tokenEstimation.js +142 -0
- package/dist/client/utils/tokenLimits.js +125 -0
- package/dist/client/utils/tokenUtils.js +239 -0
- package/dist/client/utils/toolUtils.js +75 -0
- package/dist/client/utils/transformationUtils.js +554 -0
- package/dist/client/utils/ttsProcessor.js +286 -0
- package/dist/client/utils/typeUtils.js +97 -0
- package/dist/client/utils/videoAnalysisProcessor.js +67 -0
- package/dist/client/workflow/config.js +398 -0
- package/dist/client/workflow/core/ensembleExecutor.js +407 -0
- package/dist/client/workflow/core/judgeScorer.js +544 -0
- package/dist/client/workflow/core/responseConditioner.js +225 -0
- package/dist/client/workflow/core/types/conditionerTypes.js +7 -0
- package/dist/client/workflow/core/types/ensembleTypes.js +7 -0
- package/dist/client/workflow/core/types/index.js +7 -0
- package/dist/client/workflow/core/types/judgeTypes.js +7 -0
- package/dist/client/workflow/core/types/layerTypes.js +7 -0
- package/dist/client/workflow/core/types/registryTypes.js +7 -0
- package/dist/client/workflow/core/workflowRegistry.js +304 -0
- package/dist/client/workflow/core/workflowRunner.js +586 -0
- package/dist/client/workflow/index.js +50 -0
- package/dist/client/workflow/types.js +9 -0
- package/dist/client/workflow/utils/types/index.js +7 -0
- package/dist/client/workflow/utils/workflowMetrics.js +311 -0
- package/dist/client/workflow/utils/workflowValidation.js +420 -0
- package/dist/client/workflow/workflows/adaptiveWorkflow.js +366 -0
- package/dist/client/workflow/workflows/consensusWorkflow.js +192 -0
- package/dist/client/workflow/workflows/fallbackWorkflow.js +225 -0
- package/dist/client/workflow/workflows/multiJudgeWorkflow.js +351 -0
- package/dist/client/wsClient.d.ts +130 -0
- package/dist/client/wsClient.js +369 -0
- package/dist/config/configManager.js +2 -2
- package/dist/constants/contextWindows.js +15 -13
- package/dist/constants/enums.d.ts +10 -16
- package/dist/constants/enums.js +12 -18
- package/dist/constants/index.d.ts +0 -10
- package/dist/constants/index.js +1 -1
- package/dist/constants/tokens.d.ts +29 -16
- package/dist/constants/tokens.js +23 -16
- package/dist/core/baseProvider.d.ts +5 -5
- package/dist/core/baseProvider.js +6 -6
- package/dist/core/constants.js +6 -1
- package/dist/core/dynamicModels.js +10 -6
- package/dist/core/evaluationProviders.js +1 -1
- package/dist/core/infrastructure/baseError.d.ts +1 -1
- package/dist/core/infrastructure/baseFactory.d.ts +1 -6
- package/dist/core/infrastructure/baseRegistry.d.ts +6 -5
- package/dist/core/infrastructure/index.d.ts +6 -4
- package/dist/core/infrastructure/index.js +2 -2
- package/dist/core/modelConfiguration.js +3 -1
- package/dist/core/modules/GenerationHandler.d.ts +3 -3
- package/dist/core/modules/GenerationHandler.js +49 -41
- package/dist/core/modules/MessageBuilder.d.ts +5 -5
- package/dist/core/modules/MessageBuilder.js +4 -6
- package/dist/core/modules/StreamHandler.js +26 -12
- package/dist/core/modules/TelemetryHandler.d.ts +4 -6
- package/dist/core/modules/TelemetryHandler.js +7 -6
- package/dist/core/modules/ToolsManager.d.ts +2 -12
- package/dist/core/modules/ToolsManager.js +20 -4
- package/dist/core/modules/Utilities.js +3 -1
- package/dist/core/redisConversationMemoryManager.js +3 -3
- package/dist/core/streamAnalytics.js +23 -9
- package/dist/evaluation/contextBuilder.d.ts +2 -2
- package/dist/evaluation/contextBuilder.js +2 -2
- package/dist/evaluation/index.d.ts +2 -2
- package/dist/evaluation/retryManager.js +1 -1
- package/dist/factories/providerFactory.js +2 -2
- package/dist/features/ppt/constants.js +1 -1
- package/dist/features/ppt/presentationOrchestrator.js +7 -3
- package/dist/features/ppt/slideGenerator.d.ts +2 -1
- package/dist/features/ppt/slideGenerator.js +6 -1
- package/dist/files/fileTools.d.ts +16 -247
- package/dist/files/fileTools.js +16 -15
- package/dist/index.d.ts +5 -3
- package/dist/index.js +20 -3
- package/dist/lib/adapters/providerImageAdapter.js +13 -22
- package/dist/lib/adapters/video/videoAnalyzer.d.ts +4 -4
- package/dist/lib/adapters/video/videoAnalyzer.js +3 -3
- package/dist/lib/agent/directTools.d.ts +20 -289
- package/dist/lib/agent/directTools.js +11 -10
- package/dist/lib/auth/accountPool.d.ts +68 -0
- package/dist/lib/auth/accountPool.js +179 -0
- package/dist/lib/auth/anthropicOAuth.d.ts +15 -5
- package/dist/lib/auth/anthropicOAuth.js +117 -57
- package/dist/lib/auth/index.d.ts +7 -5
- package/dist/lib/auth/index.js +6 -2
- package/dist/lib/auth/tokenStore.d.ts +71 -27
- package/dist/lib/auth/tokenStore.js +342 -64
- package/dist/lib/client/aiSdkAdapter.d.ts +196 -0
- package/dist/lib/client/aiSdkAdapter.js +488 -0
- package/dist/lib/client/auth.d.ts +248 -0
- package/dist/lib/client/auth.js +474 -0
- package/dist/lib/client/errors.d.ts +299 -0
- package/dist/lib/client/errors.js +553 -0
- package/dist/lib/client/httpClient.d.ts +297 -0
- package/dist/lib/client/httpClient.js +838 -0
- package/dist/lib/client/index.d.ts +111 -0
- package/dist/lib/client/index.js +173 -0
- package/dist/lib/client/interceptors.d.ts +283 -0
- package/dist/lib/client/interceptors.js +602 -0
- package/dist/lib/client/reactHooks.d.ts +239 -0
- package/dist/lib/client/reactHooks.js +1160 -0
- package/dist/lib/client/sseClient.d.ts +156 -0
- package/dist/lib/client/sseClient.js +546 -0
- package/dist/lib/client/streamingClient.d.ts +327 -0
- package/dist/lib/client/streamingClient.js +918 -0
- package/dist/lib/client/wsClient.d.ts +130 -0
- package/dist/lib/client/wsClient.js +370 -0
- package/dist/lib/config/configManager.js +2 -2
- package/dist/lib/constants/contextWindows.js +15 -13
- package/dist/lib/constants/enums.d.ts +10 -16
- package/dist/lib/constants/enums.js +12 -18
- package/dist/lib/constants/index.d.ts +0 -10
- package/dist/lib/constants/index.js +1 -1
- package/dist/lib/constants/tokens.d.ts +29 -16
- package/dist/lib/constants/tokens.js +23 -16
- package/dist/lib/core/baseProvider.d.ts +5 -5
- package/dist/lib/core/baseProvider.js +6 -6
- package/dist/lib/core/constants.js +6 -1
- package/dist/lib/core/dynamicModels.js +10 -6
- package/dist/lib/core/evaluationProviders.js +1 -1
- package/dist/lib/core/infrastructure/baseError.d.ts +1 -1
- package/dist/lib/core/infrastructure/baseFactory.d.ts +1 -6
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +6 -5
- package/dist/lib/core/infrastructure/index.d.ts +6 -4
- package/dist/lib/core/infrastructure/index.js +2 -2
- package/dist/lib/core/modelConfiguration.js +3 -1
- package/dist/lib/core/modules/GenerationHandler.d.ts +3 -3
- package/dist/lib/core/modules/GenerationHandler.js +49 -41
- package/dist/lib/core/modules/MessageBuilder.d.ts +5 -5
- package/dist/lib/core/modules/MessageBuilder.js +4 -6
- package/dist/lib/core/modules/StreamHandler.js +26 -12
- package/dist/lib/core/modules/TelemetryHandler.d.ts +4 -6
- package/dist/lib/core/modules/TelemetryHandler.js +7 -6
- package/dist/lib/core/modules/ToolsManager.d.ts +2 -12
- package/dist/lib/core/modules/ToolsManager.js +20 -4
- package/dist/lib/core/modules/Utilities.js +3 -1
- package/dist/lib/core/redisConversationMemoryManager.js +3 -3
- package/dist/lib/core/streamAnalytics.js +23 -9
- package/dist/lib/evaluation/contextBuilder.d.ts +2 -2
- package/dist/lib/evaluation/contextBuilder.js +2 -2
- package/dist/lib/evaluation/index.d.ts +2 -2
- package/dist/lib/evaluation/retryManager.js +1 -1
- package/dist/lib/factories/providerFactory.js +2 -2
- package/dist/lib/features/ppt/constants.js +1 -1
- package/dist/lib/features/ppt/presentationOrchestrator.js +7 -3
- package/dist/lib/features/ppt/slideGenerator.d.ts +2 -1
- package/dist/lib/features/ppt/slideGenerator.js +6 -1
- package/dist/lib/files/fileTools.d.ts +16 -247
- package/dist/lib/files/fileTools.js +16 -15
- package/dist/lib/index.d.ts +5 -3
- package/dist/lib/index.js +20 -3
- package/dist/lib/mcp/batching/requestBatcher.js +1 -1
- package/dist/lib/mcp/externalServerManager.js +5 -2
- package/dist/lib/mcp/factory.js +1 -1
- package/dist/lib/mcp/index.d.ts +1 -1
- package/dist/lib/mcp/index.js +1 -1
- package/dist/lib/mcp/mcpCircuitBreaker.d.ts +1 -0
- package/dist/lib/mcp/mcpCircuitBreaker.js +30 -4
- package/dist/lib/mcp/mcpClientFactory.js +33 -4
- package/dist/lib/mcp/toolDiscoveryService.js +52 -5
- package/dist/lib/mcp/toolRegistry.js +7 -1
- package/dist/lib/memory/memoryRetrievalTools.d.ts +5 -89
- package/dist/lib/memory/memoryRetrievalTools.js +1 -1
- package/dist/lib/middleware/builtin/analytics.js +3 -0
- package/dist/lib/middleware/builtin/autoEvaluation.js +46 -24
- package/dist/lib/middleware/builtin/guardrails.js +4 -0
- package/dist/lib/middleware/builtin/lifecycle.js +10 -6
- package/dist/lib/middleware/factory.d.ts +3 -3
- package/dist/lib/middleware/factory.js +3 -2
- package/dist/lib/middleware/index.d.ts +1 -1
- package/dist/lib/middleware/registry.d.ts +2 -2
- package/dist/lib/middleware/registry.js +1 -0
- package/dist/lib/middleware/utils/guardrailsUtils.d.ts +5 -6
- package/dist/lib/middleware/utils/guardrailsUtils.js +15 -6
- package/dist/lib/neurolink.d.ts +9 -20
- package/dist/lib/neurolink.js +278 -186
- package/dist/lib/observability/retryPolicy.d.ts +2 -13
- package/dist/lib/observability/sampling/samplers.d.ts +2 -11
- package/dist/lib/observability/spanProcessor.d.ts +2 -14
- package/dist/lib/processors/base/BaseFileProcessor.js +1 -1
- package/dist/lib/processors/document/OpenDocumentProcessor.js +5 -3
- package/dist/lib/processors/media/VideoProcessor.js +157 -101
- package/dist/lib/providers/amazonBedrock.js +12 -5
- package/dist/lib/providers/amazonSagemaker.d.ts +5 -5
- package/dist/lib/providers/amazonSagemaker.js +6 -2
- package/dist/lib/providers/anthropic.d.ts +3 -3
- package/dist/lib/providers/anthropic.js +23 -192
- package/dist/lib/providers/anthropicBaseProvider.d.ts +4 -4
- package/dist/lib/providers/anthropicBaseProvider.js +24 -13
- package/dist/lib/providers/azureOpenai.d.ts +2 -2
- package/dist/lib/providers/azureOpenai.js +6 -6
- package/dist/lib/providers/googleAiStudio.d.ts +2 -2
- package/dist/lib/providers/googleAiStudio.js +15 -7
- package/dist/lib/providers/googleNativeGemini3.d.ts +3 -54
- package/dist/lib/providers/googleNativeGemini3.js +14 -10
- package/dist/lib/providers/googleVertex.d.ts +6 -6
- package/dist/lib/providers/googleVertex.js +32 -26
- package/dist/lib/providers/huggingFace.d.ts +4 -4
- package/dist/lib/providers/huggingFace.js +15 -5
- package/dist/lib/providers/litellm.d.ts +4 -4
- package/dist/lib/providers/litellm.js +54 -42
- package/dist/lib/providers/mistral.d.ts +2 -2
- package/dist/lib/providers/mistral.js +5 -4
- package/dist/lib/providers/ollama.d.ts +7 -4
- package/dist/lib/providers/ollama.js +30 -8
- package/dist/lib/providers/openAI.d.ts +2 -2
- package/dist/lib/providers/openAI.js +46 -21
- package/dist/lib/providers/openRouter.d.ts +4 -4
- package/dist/lib/providers/openRouter.js +63 -35
- package/dist/lib/providers/openaiCompatible.d.ts +2 -2
- package/dist/lib/providers/openaiCompatible.js +18 -9
- package/dist/lib/providers/providerTypeUtils.d.ts +28 -0
- package/dist/lib/providers/providerTypeUtils.js +47 -0
- package/dist/lib/providers/sagemaker/config.js +5 -5
- package/dist/lib/providers/sagemaker/language-model.d.ts +23 -13
- package/dist/lib/providers/sagemaker/language-model.js +20 -8
- package/dist/lib/proxy/accountQuota.d.ts +33 -0
- package/dist/lib/proxy/accountQuota.js +163 -0
- package/dist/lib/proxy/claudeFormat.d.ts +143 -0
- package/dist/lib/proxy/claudeFormat.js +596 -0
- package/dist/lib/proxy/cloaking/index.d.ts +44 -0
- package/dist/lib/proxy/cloaking/index.js +87 -0
- package/dist/lib/proxy/cloaking/plugins/headerScrubber.d.ts +9 -0
- package/dist/lib/proxy/cloaking/plugins/headerScrubber.js +87 -0
- package/dist/lib/proxy/cloaking/plugins/sessionIdentity.d.ts +15 -0
- package/dist/lib/proxy/cloaking/plugins/sessionIdentity.js +66 -0
- package/dist/lib/proxy/cloaking/plugins/systemPromptInjector.d.ts +11 -0
- package/dist/lib/proxy/cloaking/plugins/systemPromptInjector.js +84 -0
- package/dist/lib/proxy/cloaking/plugins/tlsFingerprint.d.ts +14 -0
- package/dist/lib/proxy/cloaking/plugins/tlsFingerprint.js +39 -0
- package/dist/lib/proxy/cloaking/plugins/wordObfuscator.d.ts +9 -0
- package/dist/lib/proxy/cloaking/plugins/wordObfuscator.js +122 -0
- package/dist/lib/proxy/cloaking/types.d.ts +1 -0
- package/dist/lib/proxy/cloaking/types.js +2 -0
- package/dist/lib/proxy/modelRouter.d.ts +10 -0
- package/dist/lib/proxy/modelRouter.js +30 -0
- package/dist/lib/proxy/oauthFetch.d.ts +36 -0
- package/dist/lib/proxy/oauthFetch.js +368 -0
- package/dist/lib/proxy/proxyConfig.d.ts +42 -0
- package/dist/lib/proxy/proxyConfig.js +500 -0
- package/dist/lib/proxy/proxyFetch.js +2 -1
- package/dist/lib/proxy/requestLogger.d.ts +50 -0
- package/dist/lib/proxy/requestLogger.js +208 -0
- package/dist/lib/proxy/tokenRefresh.d.ts +4 -0
- package/dist/lib/proxy/tokenRefresh.js +125 -0
- package/dist/lib/proxy/usageStats.d.ts +13 -0
- package/dist/lib/proxy/usageStats.js +75 -0
- package/dist/lib/rag/document/loaders.js +1 -1
- package/dist/lib/rag/pipeline/contextAssembly.d.ts +4 -7
- package/dist/lib/rag/ragIntegration.d.ts +2 -14
- package/dist/lib/rag/ragIntegration.js +1 -1
- package/dist/lib/rag/resilience/CircuitBreaker.d.ts +5 -44
- package/dist/lib/rag/resilience/RetryHandler.js +1 -1
- package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +1 -9
- package/dist/lib/rag/retrieval/vectorQueryTool.js +1 -1
- package/dist/lib/sdk/toolRegistration.js +12 -1
- package/dist/lib/server/abstract/baseServerAdapter.js +2 -2
- package/dist/lib/server/adapters/honoAdapter.d.ts +6 -0
- package/dist/lib/server/adapters/honoAdapter.js +76 -10
- package/dist/lib/server/middleware/cache.js +3 -0
- package/dist/lib/server/routes/claudeProxyRoutes.d.ts +44 -0
- package/dist/lib/server/routes/claudeProxyRoutes.js +1601 -0
- package/dist/lib/server/routes/healthRoutes.js +18 -1
- package/dist/lib/server/routes/index.d.ts +7 -0
- package/dist/lib/server/routes/index.js +8 -0
- package/dist/lib/server/streaming/dataStream.d.ts +1 -5
- package/dist/lib/server/streaming/dataStream.js +3 -0
- package/dist/lib/server/utils/validation.d.ts +24 -124
- package/dist/lib/server/utils/validation.js +2 -2
- package/dist/lib/services/server/ai/observability/instrumentation.js +4 -0
- package/dist/lib/telemetry/attributes.d.ts +38 -0
- package/dist/lib/telemetry/attributes.js +40 -0
- package/dist/lib/telemetry/tracers.d.ts +1 -0
- package/dist/lib/telemetry/tracers.js +1 -0
- package/dist/lib/types/authTypes.d.ts +56 -0
- package/dist/lib/types/authTypes.js +9 -0
- package/dist/lib/types/circuitBreakerErrors.d.ts +30 -0
- package/dist/lib/types/circuitBreakerErrors.js +35 -0
- package/dist/lib/types/cli.d.ts +258 -0
- package/dist/lib/types/clientTypes.d.ts +1050 -0
- package/dist/lib/types/clientTypes.js +11 -0
- package/dist/lib/types/common.d.ts +123 -0
- package/dist/lib/types/configTypes.d.ts +49 -0
- package/dist/lib/types/configTypes.js +4 -0
- package/dist/lib/types/conversation.d.ts +0 -5
- package/dist/lib/types/evaluationTypes.d.ts +2 -2
- package/dist/lib/types/fileTypes.d.ts +47 -0
- package/dist/lib/types/generateTypes.d.ts +7 -3
- package/dist/lib/types/guardrails.d.ts +2 -2
- package/dist/lib/types/index.d.ts +4 -1
- package/dist/lib/types/index.js +5 -0
- package/dist/lib/types/middlewareTypes.d.ts +3 -3
- package/dist/lib/types/modelTypes.d.ts +7 -97
- package/dist/lib/types/modelTypes.js +3 -3
- package/dist/lib/types/observability.d.ts +37 -0
- package/dist/lib/types/providers.d.ts +107 -0
- package/dist/lib/types/proxyTypes.d.ts +536 -0
- package/dist/lib/types/proxyTypes.js +17 -0
- package/dist/lib/types/ragTypes.d.ts +49 -1
- package/dist/lib/types/streamTypes.d.ts +37 -13
- package/dist/lib/types/subscriptionTypes.d.ts +77 -0
- package/dist/lib/types/subscriptionTypes.js +2 -0
- package/dist/lib/types/tools.d.ts +45 -1
- package/dist/lib/types/typeAliases.d.ts +8 -0
- package/dist/lib/types/typeAliases.js +1 -0
- package/dist/lib/utils/async/retry.d.ts +4 -33
- package/dist/lib/utils/asyncMutex.d.ts +14 -0
- package/dist/lib/utils/asyncMutex.js +61 -0
- package/dist/lib/utils/errorHandling.d.ts +2 -1
- package/dist/lib/utils/errorHandling.js +14 -6
- package/dist/lib/utils/fileDetector.d.ts +13 -1
- package/dist/lib/utils/fileDetector.js +114 -32
- package/dist/lib/utils/imageProcessor.js +7 -7
- package/dist/lib/utils/json/safeParse.d.ts +1 -8
- package/dist/lib/utils/mcpDefaults.d.ts +1 -1
- package/dist/lib/utils/mcpDefaults.js +11 -2
- package/dist/lib/utils/messageBuilder.d.ts +5 -5
- package/dist/lib/utils/messageBuilder.js +106 -80
- package/dist/lib/utils/modelChoices.d.ts +1 -8
- package/dist/lib/utils/pdfProcessor.d.ts +1 -25
- package/dist/lib/utils/pdfProcessor.js +5 -4
- package/dist/lib/utils/pricing.js +28 -5
- package/dist/lib/utils/providerHealth.d.ts +1 -1
- package/dist/lib/utils/rateLimiter.d.ts +1 -15
- package/dist/lib/utils/redis.d.ts +1 -1
- package/dist/lib/utils/redis.js +3 -3
- package/dist/lib/utils/sanitizers/filename.d.ts +2 -22
- package/dist/lib/utils/sanitizers/index.d.ts +4 -2
- package/dist/lib/utils/sanitizers/svg.d.ts +1 -11
- package/dist/lib/utils/schemaConversion.js +4 -1
- package/dist/lib/utils/thinkingConfig.d.ts +1 -33
- package/dist/lib/utils/tokenUtils.d.ts +1 -39
- package/dist/lib/utils/videoAnalysisProcessor.d.ts +5 -5
- package/dist/lib/utils/videoAnalysisProcessor.js +2 -2
- package/dist/lib/workflow/config.d.ts +89 -1257
- package/dist/lib/workflow/utils/workflowValidation.js +1 -1
- package/dist/mcp/batching/requestBatcher.js +1 -1
- package/dist/mcp/externalServerManager.js +5 -2
- package/dist/mcp/factory.js +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/mcpCircuitBreaker.d.ts +1 -0
- package/dist/mcp/mcpCircuitBreaker.js +30 -4
- package/dist/mcp/mcpClientFactory.js +33 -4
- package/dist/mcp/toolDiscoveryService.js +52 -5
- package/dist/mcp/toolRegistry.js +7 -1
- package/dist/memory/memoryRetrievalTools.d.ts +5 -89
- package/dist/memory/memoryRetrievalTools.js +1 -1
- package/dist/middleware/builtin/analytics.js +3 -0
- package/dist/middleware/builtin/autoEvaluation.js +46 -24
- package/dist/middleware/builtin/guardrails.js +4 -0
- package/dist/middleware/builtin/lifecycle.js +10 -6
- package/dist/middleware/factory.d.ts +3 -3
- package/dist/middleware/factory.js +3 -2
- package/dist/middleware/index.d.ts +1 -1
- package/dist/middleware/registry.d.ts +2 -2
- package/dist/middleware/registry.js +1 -0
- package/dist/middleware/utils/guardrailsUtils.d.ts +5 -6
- package/dist/middleware/utils/guardrailsUtils.js +15 -6
- package/dist/neurolink.d.ts +9 -20
- package/dist/neurolink.js +278 -186
- package/dist/observability/retryPolicy.d.ts +2 -13
- package/dist/observability/sampling/samplers.d.ts +2 -11
- package/dist/observability/spanProcessor.d.ts +2 -14
- package/dist/processors/base/BaseFileProcessor.js +1 -1
- package/dist/processors/document/OpenDocumentProcessor.js +5 -3
- package/dist/processors/media/VideoProcessor.js +157 -101
- package/dist/providers/amazonBedrock.js +12 -5
- package/dist/providers/amazonSagemaker.d.ts +5 -5
- package/dist/providers/amazonSagemaker.js +6 -2
- package/dist/providers/anthropic.d.ts +3 -3
- package/dist/providers/anthropic.js +23 -192
- package/dist/providers/anthropicBaseProvider.d.ts +4 -4
- package/dist/providers/anthropicBaseProvider.js +24 -13
- package/dist/providers/azureOpenai.d.ts +2 -2
- package/dist/providers/azureOpenai.js +6 -6
- package/dist/providers/googleAiStudio.d.ts +2 -2
- package/dist/providers/googleAiStudio.js +15 -7
- package/dist/providers/googleNativeGemini3.d.ts +3 -54
- package/dist/providers/googleNativeGemini3.js +14 -10
- package/dist/providers/googleVertex.d.ts +6 -6
- package/dist/providers/googleVertex.js +32 -26
- package/dist/providers/huggingFace.d.ts +4 -4
- package/dist/providers/huggingFace.js +15 -5
- package/dist/providers/litellm.d.ts +4 -4
- package/dist/providers/litellm.js +54 -42
- package/dist/providers/mistral.d.ts +2 -2
- package/dist/providers/mistral.js +5 -4
- package/dist/providers/ollama.d.ts +7 -4
- package/dist/providers/ollama.js +30 -8
- package/dist/providers/openAI.d.ts +2 -2
- package/dist/providers/openAI.js +46 -21
- package/dist/providers/openRouter.d.ts +4 -4
- package/dist/providers/openRouter.js +63 -35
- package/dist/providers/openaiCompatible.d.ts +2 -2
- package/dist/providers/openaiCompatible.js +18 -9
- package/dist/providers/providerTypeUtils.d.ts +28 -0
- package/dist/providers/providerTypeUtils.js +46 -0
- package/dist/providers/sagemaker/config.js +5 -5
- package/dist/providers/sagemaker/language-model.d.ts +23 -13
- package/dist/providers/sagemaker/language-model.js +20 -8
- package/dist/proxy/accountQuota.d.ts +33 -0
- package/dist/proxy/accountQuota.js +162 -0
- package/dist/proxy/claudeFormat.d.ts +143 -0
- package/dist/proxy/claudeFormat.js +595 -0
- package/dist/proxy/cloaking/index.d.ts +44 -0
- package/dist/proxy/cloaking/index.js +86 -0
- package/dist/proxy/cloaking/plugins/headerScrubber.d.ts +9 -0
- package/dist/proxy/cloaking/plugins/headerScrubber.js +86 -0
- package/dist/proxy/cloaking/plugins/sessionIdentity.d.ts +15 -0
- package/dist/proxy/cloaking/plugins/sessionIdentity.js +65 -0
- package/dist/proxy/cloaking/plugins/systemPromptInjector.d.ts +11 -0
- package/dist/proxy/cloaking/plugins/systemPromptInjector.js +83 -0
- package/dist/proxy/cloaking/plugins/tlsFingerprint.d.ts +14 -0
- package/dist/proxy/cloaking/plugins/tlsFingerprint.js +38 -0
- package/dist/proxy/cloaking/plugins/wordObfuscator.d.ts +9 -0
- package/dist/proxy/cloaking/plugins/wordObfuscator.js +121 -0
- package/dist/proxy/cloaking/types.d.ts +1 -0
- package/dist/proxy/cloaking/types.js +1 -0
- package/dist/proxy/modelRouter.d.ts +10 -0
- package/dist/proxy/modelRouter.js +29 -0
- package/dist/proxy/oauthFetch.d.ts +36 -0
- package/dist/proxy/oauthFetch.js +367 -0
- package/dist/proxy/proxyConfig.d.ts +42 -0
- package/dist/proxy/proxyConfig.js +499 -0
- package/dist/proxy/proxyFetch.js +2 -1
- package/dist/proxy/requestLogger.d.ts +50 -0
- package/dist/proxy/requestLogger.js +207 -0
- package/dist/proxy/tokenRefresh.d.ts +4 -0
- package/dist/proxy/tokenRefresh.js +124 -0
- package/dist/proxy/usageStats.d.ts +13 -0
- package/dist/proxy/usageStats.js +74 -0
- package/dist/rag/document/loaders.js +1 -1
- package/dist/rag/pipeline/contextAssembly.d.ts +4 -7
- package/dist/rag/ragIntegration.d.ts +2 -14
- package/dist/rag/ragIntegration.js +1 -1
- package/dist/rag/resilience/CircuitBreaker.d.ts +5 -44
- package/dist/rag/resilience/RetryHandler.js +1 -1
- package/dist/rag/retrieval/vectorQueryTool.d.ts +1 -9
- package/dist/rag/retrieval/vectorQueryTool.js +1 -1
- package/dist/sdk/toolRegistration.js +12 -1
- package/dist/server/abstract/baseServerAdapter.js +2 -2
- package/dist/server/adapters/honoAdapter.d.ts +6 -0
- package/dist/server/adapters/honoAdapter.js +76 -10
- package/dist/server/middleware/cache.js +3 -0
- package/dist/server/routes/claudeProxyRoutes.d.ts +44 -0
- package/dist/server/routes/claudeProxyRoutes.js +1600 -0
- package/dist/server/routes/healthRoutes.js +18 -1
- package/dist/server/routes/index.d.ts +7 -0
- package/dist/server/routes/index.js +8 -0
- package/dist/server/streaming/dataStream.d.ts +1 -5
- package/dist/server/streaming/dataStream.js +3 -0
- package/dist/server/utils/validation.d.ts +24 -124
- package/dist/server/utils/validation.js +2 -2
- package/dist/services/server/ai/observability/instrumentation.js +4 -0
- package/dist/telemetry/attributes.d.ts +38 -0
- package/dist/telemetry/attributes.js +40 -0
- package/dist/telemetry/tracers.d.ts +1 -0
- package/dist/telemetry/tracers.js +1 -0
- package/dist/types/authTypes.d.ts +56 -0
- package/dist/types/authTypes.js +8 -0
- package/dist/types/circuitBreakerErrors.d.ts +30 -0
- package/dist/types/circuitBreakerErrors.js +34 -0
- package/dist/types/cli.d.ts +258 -0
- package/dist/types/clientTypes.d.ts +1050 -0
- package/dist/types/clientTypes.js +10 -0
- package/dist/types/common.d.ts +123 -0
- package/dist/types/configTypes.d.ts +49 -0
- package/dist/types/configTypes.js +4 -0
- package/dist/types/conversation.d.ts +0 -5
- package/dist/types/evaluationTypes.d.ts +2 -2
- package/dist/types/fileTypes.d.ts +47 -0
- package/dist/types/generateTypes.d.ts +7 -3
- package/dist/types/guardrails.d.ts +2 -2
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.js +5 -0
- package/dist/types/middlewareTypes.d.ts +3 -3
- package/dist/types/modelTypes.d.ts +7 -97
- package/dist/types/modelTypes.js +3 -3
- package/dist/types/observability.d.ts +37 -0
- package/dist/types/providers.d.ts +107 -0
- package/dist/types/proxyTypes.d.ts +536 -0
- package/dist/types/proxyTypes.js +16 -0
- package/dist/types/ragTypes.d.ts +49 -1
- package/dist/types/streamTypes.d.ts +37 -13
- package/dist/types/subscriptionTypes.d.ts +77 -0
- package/dist/types/subscriptionTypes.js +2 -0
- package/dist/types/tools.d.ts +45 -1
- package/dist/types/typeAliases.d.ts +8 -0
- package/dist/types/typeAliases.js +1 -0
- package/dist/utils/async/retry.d.ts +4 -33
- package/dist/utils/asyncMutex.d.ts +14 -0
- package/dist/utils/asyncMutex.js +60 -0
- package/dist/utils/errorHandling.d.ts +2 -1
- package/dist/utils/errorHandling.js +14 -6
- package/dist/utils/fileDetector.d.ts +13 -1
- package/dist/utils/fileDetector.js +114 -32
- package/dist/utils/imageProcessor.js +7 -7
- package/dist/utils/json/safeParse.d.ts +1 -8
- package/dist/utils/mcpDefaults.d.ts +1 -1
- package/dist/utils/mcpDefaults.js +11 -2
- package/dist/utils/messageBuilder.d.ts +5 -5
- package/dist/utils/messageBuilder.js +106 -80
- package/dist/utils/modelChoices.d.ts +1 -8
- package/dist/utils/pdfProcessor.d.ts +1 -25
- package/dist/utils/pdfProcessor.js +5 -4
- package/dist/utils/pricing.js +28 -5
- package/dist/utils/rateLimiter.d.ts +1 -15
- package/dist/utils/redis.d.ts +1 -1
- package/dist/utils/redis.js +3 -3
- package/dist/utils/sanitizers/filename.d.ts +2 -22
- package/dist/utils/sanitizers/index.d.ts +4 -2
- package/dist/utils/sanitizers/svg.d.ts +1 -11
- package/dist/utils/schemaConversion.js +4 -1
- package/dist/utils/thinkingConfig.d.ts +1 -33
- package/dist/utils/tokenUtils.d.ts +1 -39
- package/dist/utils/videoAnalysisProcessor.d.ts +5 -5
- package/dist/utils/videoAnalysisProcessor.js +2 -2
- package/dist/workflow/config.d.ts +89 -1257
- package/dist/workflow/utils/workflowValidation.js +1 -1
- package/docs-site/mcp-server/index.js +2 -3
- package/package.json +138 -105
- package/dist/lib/memory/mem0Initializer.d.ts +0 -46
- package/dist/lib/memory/mem0Initializer.js +0 -85
- package/dist/memory/mem0Initializer.d.ts +0 -46
- package/dist/memory/mem0Initializer.js +0 -84
|
@@ -8,6 +8,7 @@ import { getGlobalDispatcher, interceptors, request } from "undici";
|
|
|
8
8
|
import { archiveProcessor } from "../processors/archive/ArchiveProcessor.js";
|
|
9
9
|
import { audioProcessor } from "../processors/media/AudioProcessor.js";
|
|
10
10
|
import { videoProcessor } from "../processors/media/VideoProcessor.js";
|
|
11
|
+
import { tracers, ATTR, withSpan } from "../telemetry/index.js";
|
|
11
12
|
import { CSVProcessor } from "./csvProcessor.js";
|
|
12
13
|
import { ImageProcessor } from "./imageProcessor.js";
|
|
13
14
|
import { logger } from "./logger.js";
|
|
@@ -167,7 +168,7 @@ function formatFileSize(bytes) {
|
|
|
167
168
|
* ```typescript
|
|
168
169
|
* // Auto-detect and process any file
|
|
169
170
|
* const result = await FileDetector.detectAndProcess("data.csv");
|
|
170
|
-
*
|
|
171
|
+
* logger.info(result.type); // 'csv'
|
|
171
172
|
* ```
|
|
172
173
|
*/
|
|
173
174
|
export class FileDetector {
|
|
@@ -189,43 +190,124 @@ export class FileDetector {
|
|
|
189
190
|
* @returns Processed file result with type and content
|
|
190
191
|
*/
|
|
191
192
|
static async detectAndProcess(input, options) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
193
|
+
// Derive filename and size for tracing before detection runs
|
|
194
|
+
const inputFilename = FileDetector.deriveInputFilename(input);
|
|
195
|
+
const inputSizeBytes = FileDetector.deriveInputSize(input);
|
|
196
|
+
return withSpan({
|
|
197
|
+
name: "neurolink.file.detect_and_process",
|
|
198
|
+
tracer: tracers.file,
|
|
199
|
+
attributes: {
|
|
200
|
+
[ATTR.FILE_NAME]: inputFilename,
|
|
201
|
+
[ATTR.FILE_SIZE_BYTES]: inputSizeBytes,
|
|
202
|
+
},
|
|
203
|
+
}, async (span) => {
|
|
204
|
+
const detection = await FileDetector.detect(input, options);
|
|
205
|
+
span.setAttribute(ATTR.FILE_CATEGORY, detection.type);
|
|
206
|
+
span.setAttribute(ATTR.FILE_MIMETYPE, detection.mimeType || "unknown");
|
|
207
|
+
span.setAttribute(ATTR.FILE_CONFIDENCE, detection.metadata.confidence);
|
|
208
|
+
logger.info(`[NEUROLINK] File detected: ${inputFilename} (${detection.mimeType || "unknown"}, ${formatFileSize(inputSizeBytes)}) → category: ${detection.type}`);
|
|
209
|
+
// FD-018: Comprehensive fallback parsing for extension-less files
|
|
210
|
+
if (options?.allowedTypes &&
|
|
211
|
+
!options.allowedTypes.includes(detection.type)) {
|
|
212
|
+
const content = await FileDetector.loadContent(input, detection, options);
|
|
213
|
+
const errors = [];
|
|
214
|
+
for (const allowedType of options.allowedTypes) {
|
|
215
|
+
try {
|
|
216
|
+
const result = await FileDetector.tryFallbackParsing(content, allowedType, options);
|
|
217
|
+
if (result) {
|
|
218
|
+
logger.info(`[FileDetector] ✅ ${allowedType.toUpperCase()} fallback successful`);
|
|
219
|
+
const outputLength = typeof result.content === "string"
|
|
220
|
+
? result.content.length
|
|
221
|
+
: result.content?.length || 0;
|
|
222
|
+
span.setAttribute(ATTR.FILE_OUTPUT_LENGTH, outputLength);
|
|
223
|
+
span.setAttribute(ATTR.FILE_SUCCESS, true);
|
|
224
|
+
span.setAttribute(ATTR.FILE_PROCESSOR_USED, `fallback:${allowedType}`);
|
|
225
|
+
logger.info(`[NEUROLINK] File processed: ${inputFilename} → ${outputLength} bytes output (fallback: ${allowedType})`);
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
231
|
+
errors.push(`${allowedType}: ${errorMsg}`);
|
|
232
|
+
logger.debug(`[FileDetector] ${allowedType} fallback failed: ${errorMsg}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
logger.warn(`[FileDetector] All fallback parsing failed for type "${detection.type}". ` +
|
|
236
|
+
`Attempted: ${options.allowedTypes.join(", ")}. Falling through to universal handler.`);
|
|
237
|
+
const csvOptions = options?.csvOptions;
|
|
238
|
+
const result = await FileDetector.processFile(content, detection, csvOptions, options?.provider);
|
|
239
|
+
FileDetector.setFileResultSpanAttributes(span, result, inputFilename, detection.type);
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
200
242
|
const content = await FileDetector.loadContent(input, detection, options);
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
243
|
+
const csvOptions = options?.csvOptions;
|
|
244
|
+
const result = await FileDetector.processFile(content, detection, csvOptions, options?.provider);
|
|
245
|
+
FileDetector.setFileResultSpanAttributes(span, result, inputFilename, detection.type);
|
|
246
|
+
return result;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Set span attributes and log after file processing completes.
|
|
251
|
+
*/
|
|
252
|
+
static setFileResultSpanAttributes(span, result, filename, processorType) {
|
|
253
|
+
const outputLength = typeof result.content === "string"
|
|
254
|
+
? result.content.length
|
|
255
|
+
: result.content?.length || 0;
|
|
256
|
+
const hasImages = Array.isArray(result.images)
|
|
257
|
+
? result.images.length > 0
|
|
258
|
+
: false;
|
|
259
|
+
const imageCount = Array.isArray(result.images)
|
|
260
|
+
? result.images.length
|
|
261
|
+
: 0;
|
|
262
|
+
span.setAttribute(ATTR.FILE_OUTPUT_LENGTH, outputLength);
|
|
263
|
+
span.setAttribute(ATTR.FILE_SUCCESS, true);
|
|
264
|
+
span.setAttribute(ATTR.FILE_PROCESSOR_USED, processorType);
|
|
265
|
+
span.setAttribute(ATTR.FILE_HAS_IMAGES, hasImages);
|
|
266
|
+
span.setAttribute(ATTR.FILE_IMAGE_COUNT, imageCount);
|
|
267
|
+
logger.info(`[NEUROLINK] File processed: ${filename} → ${outputLength} bytes output` +
|
|
268
|
+
(imageCount > 0 ? ` + ${imageCount} image(s)` : "") +
|
|
269
|
+
` (processor: ${processorType})`);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Derive a human-readable filename from FileInput for tracing.
|
|
273
|
+
*/
|
|
274
|
+
static deriveInputFilename(input) {
|
|
275
|
+
if (typeof input === "string") {
|
|
276
|
+
if (input.startsWith("data:")) {
|
|
277
|
+
return "data-uri";
|
|
278
|
+
}
|
|
279
|
+
if (input.startsWith("http")) {
|
|
204
280
|
try {
|
|
205
|
-
|
|
206
|
-
if (result) {
|
|
207
|
-
logger.info(`[FileDetector] ✅ ${allowedType.toUpperCase()} fallback successful`);
|
|
208
|
-
return result;
|
|
209
|
-
}
|
|
281
|
+
return new URL(input).pathname.split("/").pop() || "url-file";
|
|
210
282
|
}
|
|
211
|
-
catch
|
|
212
|
-
|
|
213
|
-
errors.push(`${allowedType}: ${errorMsg}`);
|
|
214
|
-
logger.debug(`[FileDetector] ${allowedType} fallback failed: ${errorMsg}`);
|
|
283
|
+
catch {
|
|
284
|
+
return "url-file";
|
|
215
285
|
}
|
|
216
286
|
}
|
|
217
|
-
//
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
287
|
+
// File path
|
|
288
|
+
return input.split("/").pop() || input.split("\\").pop() || "file";
|
|
289
|
+
}
|
|
290
|
+
if (Buffer.isBuffer(input)) {
|
|
291
|
+
return "buffer";
|
|
292
|
+
}
|
|
293
|
+
return "unknown-input";
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Derive byte size from FileInput for tracing.
|
|
297
|
+
*/
|
|
298
|
+
static deriveInputSize(input) {
|
|
299
|
+
if (Buffer.isBuffer(input)) {
|
|
300
|
+
return input.length;
|
|
301
|
+
}
|
|
302
|
+
if (typeof input === "string") {
|
|
303
|
+
if (input.startsWith("data:")) {
|
|
304
|
+
// Rough estimate: base64 is ~4/3 of raw
|
|
305
|
+
const base64Part = input.split(",")[1];
|
|
306
|
+
return base64Part ? Math.floor((base64Part.length * 3) / 4) : 0;
|
|
307
|
+
}
|
|
308
|
+
return input.length; // path or URL string length (not file size)
|
|
224
309
|
}
|
|
225
|
-
|
|
226
|
-
// Extract CSV-specific options from FileDetectorOptions
|
|
227
|
-
const csvOptions = options?.csvOptions;
|
|
228
|
-
return await FileDetector.processFile(content, detection, csvOptions, options?.provider);
|
|
310
|
+
return 0;
|
|
229
311
|
}
|
|
230
312
|
/**
|
|
231
313
|
* Try fallback parsing for a specific file type
|
|
@@ -143,7 +143,7 @@ export class ImageProcessor {
|
|
|
143
143
|
}
|
|
144
144
|
catch (error) {
|
|
145
145
|
logger.error("Failed to process image for OpenAI:", error);
|
|
146
|
-
throw new Error(`Image processing failed for OpenAI: ${error instanceof Error ? error.message : "Unknown error"}
|
|
146
|
+
throw new Error(`Image processing failed for OpenAI: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
/**
|
|
@@ -179,7 +179,7 @@ export class ImageProcessor {
|
|
|
179
179
|
}
|
|
180
180
|
catch (error) {
|
|
181
181
|
logger.error("Failed to process image for Google AI:", error);
|
|
182
|
-
throw new Error(`Image processing failed for Google AI: ${error instanceof Error ? error.message : "Unknown error"}
|
|
182
|
+
throw new Error(`Image processing failed for Google AI: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
/**
|
|
@@ -215,7 +215,7 @@ export class ImageProcessor {
|
|
|
215
215
|
}
|
|
216
216
|
catch (error) {
|
|
217
217
|
logger.error("Failed to process image for Anthropic:", error);
|
|
218
|
-
throw new Error(`Image processing failed for Anthropic: ${error instanceof Error ? error.message : "Unknown error"}
|
|
218
|
+
throw new Error(`Image processing failed for Anthropic: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
/**
|
|
@@ -239,7 +239,7 @@ export class ImageProcessor {
|
|
|
239
239
|
}
|
|
240
240
|
catch (error) {
|
|
241
241
|
logger.error("Failed to process image for Vertex AI:", error);
|
|
242
|
-
throw new Error(`Image processing failed for Vertex AI: ${error instanceof Error ? error.message : "Unknown error"}
|
|
242
|
+
throw new Error(`Image processing failed for Vertex AI: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
/**
|
|
@@ -433,7 +433,7 @@ export class ImageProcessor {
|
|
|
433
433
|
}
|
|
434
434
|
catch (error) {
|
|
435
435
|
logger.error(`Failed to process image for ${provider}:`, error);
|
|
436
|
-
throw new Error(`Image processing failed: ${error instanceof Error ? error.message : "Unknown error"}
|
|
436
|
+
throw new Error(`Image processing failed: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
439
|
}
|
|
@@ -521,7 +521,7 @@ export const imageUtils = {
|
|
|
521
521
|
return `data:${mimeType};base64,${base64}`;
|
|
522
522
|
}
|
|
523
523
|
catch (error) {
|
|
524
|
-
throw new Error(`Failed to convert file to base64: ${error instanceof Error ? error.message : "Unknown error"}
|
|
524
|
+
throw new Error(`Failed to convert file to base64: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
525
525
|
}
|
|
526
526
|
},
|
|
527
527
|
/**
|
|
@@ -610,7 +610,7 @@ export const imageUtils = {
|
|
|
610
610
|
});
|
|
611
611
|
}
|
|
612
612
|
catch (error) {
|
|
613
|
-
throw new Error(`Failed to download and convert URL to base64: ${error instanceof Error ? error.message : "Unknown error"}
|
|
613
|
+
throw new Error(`Failed to download and convert URL to base64: ${error instanceof Error ? error.message : "Unknown error"}`, { cause: error });
|
|
614
614
|
}
|
|
615
615
|
},
|
|
616
616
|
/**
|
|
@@ -4,14 +4,7 @@
|
|
|
4
4
|
* Centralized JSON parsing utilities that handle errors gracefully.
|
|
5
5
|
* Provides safe parsing that doesn't throw on invalid JSON.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
* Result type for safe JSON parsing operations
|
|
9
|
-
*/
|
|
10
|
-
export type SafeParseResult<T> = {
|
|
11
|
-
success: boolean;
|
|
12
|
-
data: T | null;
|
|
13
|
-
error: Error | null;
|
|
14
|
-
};
|
|
7
|
+
import type { SafeParseResult } from "../../types/index.js";
|
|
15
8
|
/**
|
|
16
9
|
* Safely parse a JSON string without throwing.
|
|
17
10
|
*
|
|
@@ -37,7 +37,7 @@ export declare function createMCPServerInfo(options: {
|
|
|
37
37
|
* Create MCPServerInfo for custom tool registration
|
|
38
38
|
* Specialized version with smart defaults for registerTool usage
|
|
39
39
|
*/
|
|
40
|
-
export declare function createCustomToolServerInfo(toolName: string, tool: MCPExecutableTool): MCPServerInfo;
|
|
40
|
+
export declare function createCustomToolServerInfo(toolName: string, tool: MCPExecutableTool, timeoutMs?: number, maxRetries?: number): MCPServerInfo;
|
|
41
41
|
/**
|
|
42
42
|
* Create MCPServerInfo for external servers
|
|
43
43
|
* Specialized version with smart defaults for external server usage
|
|
@@ -93,8 +93,8 @@ export function createMCPServerInfo(options) {
|
|
|
93
93
|
* Create MCPServerInfo for custom tool registration
|
|
94
94
|
* Specialized version with smart defaults for registerTool usage
|
|
95
95
|
*/
|
|
96
|
-
export function createCustomToolServerInfo(toolName, tool) {
|
|
97
|
-
|
|
96
|
+
export function createCustomToolServerInfo(toolName, tool, timeoutMs, maxRetries) {
|
|
97
|
+
const serverInfo = createMCPServerInfo({
|
|
98
98
|
id: `custom-tool-${toolName}`,
|
|
99
99
|
name: toolName,
|
|
100
100
|
tool: {
|
|
@@ -105,6 +105,15 @@ export function createCustomToolServerInfo(toolName, tool) {
|
|
|
105
105
|
},
|
|
106
106
|
isCustomTool: true,
|
|
107
107
|
});
|
|
108
|
+
if (serverInfo.metadata) {
|
|
109
|
+
if (timeoutMs !== undefined) {
|
|
110
|
+
serverInfo.metadata.toolTimeoutMs = timeoutMs;
|
|
111
|
+
}
|
|
112
|
+
if (maxRetries !== undefined) {
|
|
113
|
+
serverInfo.metadata.toolMaxRetries = maxRetries;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return serverInfo;
|
|
108
117
|
}
|
|
109
118
|
/**
|
|
110
119
|
* Create MCPServerInfo for external servers
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
* Centralized logic for building message arrays from TextGenerationOptions
|
|
4
4
|
* Enhanced with multimodal support for images
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { ModelMessage } from "ai";
|
|
7
7
|
import type { MultimodalChatMessage } from "../types/conversation.js";
|
|
8
8
|
import type { GenerateOptions } from "../types/generateTypes.js";
|
|
9
9
|
import type { TextGenerationOptions } from "../types/index.js";
|
|
10
10
|
import type { StreamOptions } from "../types/streamTypes.js";
|
|
11
11
|
/**
|
|
12
|
-
* Type-safe conversion from MultimodalChatMessage[] to
|
|
13
|
-
* Filters out invalid content and ensures strict
|
|
12
|
+
* Type-safe conversion from MultimodalChatMessage[] to ModelMessage[]
|
|
13
|
+
* Filters out invalid content and ensures strict ModelMessage contract compliance
|
|
14
14
|
*/
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function convertToModelMessages(messages: MultimodalChatMessage[]): ModelMessage[];
|
|
16
16
|
/**
|
|
17
17
|
* Build a properly formatted message array for AI providers
|
|
18
18
|
* Combines system prompt, conversation history, and current user prompt
|
|
19
19
|
* Supports both TextGenerationOptions and StreamOptions
|
|
20
20
|
* Enhanced with CSV file processing support
|
|
21
21
|
*/
|
|
22
|
-
export declare function buildMessagesArray(options: TextGenerationOptions | StreamOptions): Promise<
|
|
22
|
+
export declare function buildMessagesArray(options: TextGenerationOptions | StreamOptions): Promise<ModelMessage[]>;
|
|
23
23
|
/**
|
|
24
24
|
* Build multimodal message array with image support
|
|
25
25
|
* Detects when images are present and routes through provider adapter
|
|
@@ -10,6 +10,7 @@ import { CONVERSATION_INSTRUCTIONS, STRUCTURED_OUTPUT_INSTRUCTIONS, } from "../c
|
|
|
10
10
|
import { getAvailableInputTokens } from "../constants/contextWindows.js";
|
|
11
11
|
import { enforceAggregateFileBudget, FILE_READ_BUDGET_PERCENT, } from "../context/fileTokenBudget.js";
|
|
12
12
|
import { SIZE_TIER_THRESHOLDS } from "../files/types.js";
|
|
13
|
+
import { tracers, ATTR, withSpan } from "../telemetry/index.js";
|
|
13
14
|
import { FileDetector } from "./fileDetector.js";
|
|
14
15
|
import { getImageCache } from "./imageCache.js";
|
|
15
16
|
import { logger } from "./logger.js";
|
|
@@ -280,7 +281,7 @@ function convertContentItem(item) {
|
|
|
280
281
|
return {
|
|
281
282
|
type: "image",
|
|
282
283
|
image: contentItem.image,
|
|
283
|
-
...(contentItem.mimeType && {
|
|
284
|
+
...(contentItem.mimeType && { mediaType: contentItem.mimeType }),
|
|
284
285
|
};
|
|
285
286
|
}
|
|
286
287
|
if (contentItem.type === "file" &&
|
|
@@ -289,16 +290,16 @@ function convertContentItem(item) {
|
|
|
289
290
|
return {
|
|
290
291
|
type: "file",
|
|
291
292
|
data: contentItem.data,
|
|
292
|
-
|
|
293
|
+
mediaType: contentItem.mimeType,
|
|
293
294
|
};
|
|
294
295
|
}
|
|
295
296
|
return null;
|
|
296
297
|
}
|
|
297
298
|
/**
|
|
298
|
-
* Type-safe conversion from MultimodalChatMessage[] to
|
|
299
|
-
* Filters out invalid content and ensures strict
|
|
299
|
+
* Type-safe conversion from MultimodalChatMessage[] to ModelMessage[]
|
|
300
|
+
* Filters out invalid content and ensures strict ModelMessage contract compliance
|
|
300
301
|
*/
|
|
301
|
-
export function
|
|
302
|
+
export function convertToModelMessages(messages) {
|
|
302
303
|
return messages
|
|
303
304
|
.map((msg) => {
|
|
304
305
|
// Validate role
|
|
@@ -391,9 +392,9 @@ export function convertToCoreMessages(messages) {
|
|
|
391
392
|
.filter((msg) => msg !== null);
|
|
392
393
|
}
|
|
393
394
|
/**
|
|
394
|
-
* Convert ChatMessage to
|
|
395
|
+
* Convert ChatMessage to ModelMessage for AI SDK compatibility
|
|
395
396
|
*/
|
|
396
|
-
function
|
|
397
|
+
function toModelMessage(message) {
|
|
397
398
|
// Only include messages with roles supported by AI SDK
|
|
398
399
|
if (message.role === "user" ||
|
|
399
400
|
message.role === "assistant" ||
|
|
@@ -490,10 +491,10 @@ export async function buildMessagesArray(options) {
|
|
|
490
491
|
});
|
|
491
492
|
}
|
|
492
493
|
// Add conversation history if available
|
|
493
|
-
// Convert ChatMessages to
|
|
494
|
+
// Convert ChatMessages to ModelMessages and filter out tool messages
|
|
494
495
|
if (hasConversationHistory && options.conversationMessages) {
|
|
495
496
|
for (const chatMessage of options.conversationMessages) {
|
|
496
|
-
const coreMessage =
|
|
497
|
+
const coreMessage = toModelMessage(chatMessage);
|
|
497
498
|
if (coreMessage) {
|
|
498
499
|
messages.push(coreMessage);
|
|
499
500
|
}
|
|
@@ -773,66 +774,87 @@ async function processUnifiedFilesArray(options, maxSize, provider) {
|
|
|
773
774
|
if (!options.input.files || options.input.files.length === 0) {
|
|
774
775
|
return;
|
|
775
776
|
}
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
777
|
+
const totalFiles = options.input.files.length;
|
|
778
|
+
return withSpan({
|
|
779
|
+
name: "neurolink.file.process_all",
|
|
780
|
+
tracer: tracers.file,
|
|
781
|
+
attributes: {
|
|
782
|
+
[ATTR.FILE_TOTAL_COUNT]: totalFiles,
|
|
783
|
+
[ATTR.NL_PROVIDER]: provider,
|
|
784
|
+
},
|
|
785
|
+
}, async (span) => {
|
|
786
|
+
logger.info(`[NEUROLINK] Processing ${totalFiles} file(s) with auto-detection`);
|
|
787
|
+
options.input.text = options.input.text || "";
|
|
788
|
+
let includedCount = 0;
|
|
789
|
+
const fileRegistry = options.fileRegistry;
|
|
790
|
+
for (let fileIdx = 0; fileIdx < options.input.files.length; fileIdx++) {
|
|
791
|
+
const file = options.input.files[fileIdx];
|
|
792
|
+
const filename = extractFilename(file, fileIdx);
|
|
793
|
+
try {
|
|
794
|
+
// ─── Lazy file registration path ──────────────────────────────
|
|
795
|
+
const fileSize = fileRegistry ? getFileSize(file) : 0;
|
|
796
|
+
if (fileRegistry && fileSize > SIZE_TIER_THRESHOLDS.TINY_MAX) {
|
|
797
|
+
const registered = await tryRegisterFileReference(file, fileSize, fileRegistry, fileIdx);
|
|
798
|
+
if (registered) {
|
|
799
|
+
logger.info(`[NEUROLINK] File lazily registered: ${filename} (${fileSize} bytes) — deferred processing`);
|
|
800
|
+
includedCount++;
|
|
801
|
+
continue;
|
|
802
|
+
}
|
|
788
803
|
}
|
|
804
|
+
// ─── Full processing path (current behavior) ──────────────────
|
|
805
|
+
const genericFileMaxSize = Math.max(maxSize, 100 * 1024 * 1024);
|
|
806
|
+
const rawFileInput = isFileWithMetadata(file) ? file.buffer : file;
|
|
807
|
+
const result = await FileDetector.detectAndProcess(rawFileInput, {
|
|
808
|
+
maxSize: genericFileMaxSize,
|
|
809
|
+
allowedTypes: [
|
|
810
|
+
"csv",
|
|
811
|
+
"image",
|
|
812
|
+
"pdf",
|
|
813
|
+
"svg",
|
|
814
|
+
"video",
|
|
815
|
+
"audio",
|
|
816
|
+
"archive",
|
|
817
|
+
"xlsx",
|
|
818
|
+
"docx",
|
|
819
|
+
"pptx",
|
|
820
|
+
"text",
|
|
821
|
+
"unknown",
|
|
822
|
+
],
|
|
823
|
+
csvOptions: options.csvOptions,
|
|
824
|
+
provider: provider,
|
|
825
|
+
});
|
|
826
|
+
appendDetectedFileResult(result, file, options);
|
|
827
|
+
includedCount++;
|
|
828
|
+
// Log what content type was added to the message
|
|
829
|
+
const contentType = result.type === "image" ? "image" : "text";
|
|
830
|
+
logger.info(`[NEUROLINK] File added to message: ${filename} as ${contentType} (type: ${result.type})`);
|
|
831
|
+
}
|
|
832
|
+
catch (error) {
|
|
833
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
834
|
+
logger.error(`[NEUROLINK] File skipped/failed: ${filename} — reason: ${errMsg}`);
|
|
789
835
|
}
|
|
790
|
-
// ─── Full processing path (current behavior) ──────────────────
|
|
791
|
-
const genericFileMaxSize = Math.max(maxSize, 100 * 1024 * 1024);
|
|
792
|
-
const rawFileInput = isFileWithMetadata(file) ? file.buffer : file;
|
|
793
|
-
const result = await FileDetector.detectAndProcess(rawFileInput, {
|
|
794
|
-
maxSize: genericFileMaxSize,
|
|
795
|
-
allowedTypes: [
|
|
796
|
-
"csv",
|
|
797
|
-
"image",
|
|
798
|
-
"pdf",
|
|
799
|
-
"svg",
|
|
800
|
-
"video",
|
|
801
|
-
"audio",
|
|
802
|
-
"archive",
|
|
803
|
-
"xlsx",
|
|
804
|
-
"docx",
|
|
805
|
-
"pptx",
|
|
806
|
-
"text",
|
|
807
|
-
"unknown",
|
|
808
|
-
],
|
|
809
|
-
csvOptions: options.csvOptions,
|
|
810
|
-
provider: provider,
|
|
811
|
-
});
|
|
812
|
-
appendDetectedFileResult(result, file, options);
|
|
813
|
-
}
|
|
814
|
-
catch (error) {
|
|
815
|
-
logger.error(`[FileDetector] ❌ Failed to process file:`, error);
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
// After processing all files, inject previews for any lazily-registered files
|
|
819
|
-
if (fileRegistry && fileRegistry.size > 0) {
|
|
820
|
-
const previewText = await fileRegistry.generatePromptPreview();
|
|
821
|
-
if (previewText) {
|
|
822
|
-
options.input.text = (options.input.text || "") + previewText;
|
|
823
|
-
logger.info(`[FileDetector] Injected previews for ${fileRegistry.size} lazily-registered file(s)`);
|
|
824
836
|
}
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
];
|
|
832
|
-
|
|
837
|
+
span.setAttribute(ATTR.FILE_INCLUDED_COUNT, includedCount);
|
|
838
|
+
// After processing all files, inject previews for any lazily-registered files
|
|
839
|
+
if (fileRegistry && fileRegistry.size > 0) {
|
|
840
|
+
const previewText = await fileRegistry.generatePromptPreview();
|
|
841
|
+
if (previewText) {
|
|
842
|
+
options.input.text = (options.input.text || "") + previewText;
|
|
843
|
+
logger.info(`[FileDetector] Injected previews for ${fileRegistry.size} lazily-registered file(s)`);
|
|
844
|
+
}
|
|
845
|
+
const registeredFiles = fileRegistry.list();
|
|
846
|
+
for (const ref of registeredFiles) {
|
|
847
|
+
if (ref.extractedImages && ref.extractedImages.length > 0) {
|
|
848
|
+
options.input.images = [
|
|
849
|
+
...(options.input.images || []),
|
|
850
|
+
...ref.extractedImages,
|
|
851
|
+
];
|
|
852
|
+
logger.info(`[FileDetector] Injected ${ref.extractedImages.length} extracted images from "${ref.filename}"`);
|
|
853
|
+
}
|
|
833
854
|
}
|
|
834
855
|
}
|
|
835
|
-
|
|
856
|
+
logger.info(`[NEUROLINK] File processing complete: ${includedCount}/${totalFiles} files included in message`);
|
|
857
|
+
});
|
|
836
858
|
}
|
|
837
859
|
/**
|
|
838
860
|
* Process explicit CSV files array and append to options.input.text.
|
|
@@ -1171,7 +1193,7 @@ async function downloadImageFromUrl(url) {
|
|
|
1171
1193
|
}
|
|
1172
1194
|
catch (error) {
|
|
1173
1195
|
MultimodalLogger.logError("URL_DOWNLOAD_FAILED", error, { url });
|
|
1174
|
-
throw new Error(`Failed to download image from ${url}: ${error instanceof Error ? error.message : String(error)}
|
|
1196
|
+
throw new Error(`Failed to download image from ${url}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
1175
1197
|
}
|
|
1176
1198
|
}
|
|
1177
1199
|
/**
|
|
@@ -1235,17 +1257,22 @@ async function convertSimpleImagesToProviderFormat(text, images, provider, _mode
|
|
|
1235
1257
|
// Process all images (including downloaded URLs) for Vercel AI SDK
|
|
1236
1258
|
actualImages.forEach(({ data: image }, index) => {
|
|
1237
1259
|
try {
|
|
1238
|
-
// Vercel AI SDK expects { type: 'image', image: Buffer | string, mimeType?: string }
|
|
1239
|
-
//
|
|
1260
|
+
// Vercel AI SDK v6 expects { type: 'image', image: Buffer | string, mimeType?: string }
|
|
1261
|
+
// IMPORTANT: The `image` field must be raw base64 or a Buffer — NOT a data: URI string.
|
|
1262
|
+
// The AI SDK v6's download pipeline calls `new URL(image)` on string values. A data: URI
|
|
1263
|
+
// is a valid URL, so the SDK tries to "download" it, which hits SSRF validation
|
|
1264
|
+
// (validateDownloadUrl) and throws "URL scheme must be http or https, got data:".
|
|
1265
|
+
// Passing raw base64 avoids this because `new URL(base64string)` throws and the SDK
|
|
1266
|
+
// treats the string as inline base64 data instead.
|
|
1240
1267
|
let imageData;
|
|
1241
1268
|
let mimeType = "image/jpeg"; // Default mime type
|
|
1242
1269
|
if (typeof image === "string") {
|
|
1243
1270
|
if (image.startsWith("data:")) {
|
|
1244
|
-
// Data URI (including downloaded URLs) - extract mime type and
|
|
1271
|
+
// Data URI (including downloaded URLs) - extract mime type and raw base64
|
|
1245
1272
|
const match = image.match(/^data:([^;]+);base64,(.+)$/);
|
|
1246
1273
|
if (match) {
|
|
1247
1274
|
mimeType = match[1];
|
|
1248
|
-
imageData =
|
|
1275
|
+
imageData = match[2]; // Raw base64 only — NOT the full data: URI
|
|
1249
1276
|
}
|
|
1250
1277
|
else {
|
|
1251
1278
|
imageData = image;
|
|
@@ -1257,7 +1284,7 @@ async function convertSimpleImagesToProviderFormat(text, images, provider, _mode
|
|
|
1257
1284
|
throw new Error(`Unprocessed URL found in actualImages: ${image}`);
|
|
1258
1285
|
}
|
|
1259
1286
|
else {
|
|
1260
|
-
// File path string - convert to base64
|
|
1287
|
+
// File path string - convert to base64
|
|
1261
1288
|
try {
|
|
1262
1289
|
if (existsSync(image)) {
|
|
1263
1290
|
const buffer = readFileSync(image);
|
|
@@ -1285,7 +1312,7 @@ async function convertSimpleImagesToProviderFormat(text, images, provider, _mode
|
|
|
1285
1312
|
mimeType = "image/jpeg";
|
|
1286
1313
|
break;
|
|
1287
1314
|
}
|
|
1288
|
-
imageData =
|
|
1315
|
+
imageData = base64; // Raw base64 only
|
|
1289
1316
|
}
|
|
1290
1317
|
else {
|
|
1291
1318
|
throw new Error(`Image file not found: ${image}`);
|
|
@@ -1296,19 +1323,18 @@ async function convertSimpleImagesToProviderFormat(text, images, provider, _mode
|
|
|
1296
1323
|
index,
|
|
1297
1324
|
filePath: image,
|
|
1298
1325
|
});
|
|
1299
|
-
throw new Error(`Failed to convert file path to base64: ${image}. ${error}
|
|
1326
|
+
throw new Error(`Failed to convert file path to base64: ${image}. ${error}`, { cause: error });
|
|
1300
1327
|
}
|
|
1301
1328
|
}
|
|
1302
1329
|
}
|
|
1303
1330
|
else {
|
|
1304
|
-
// Buffer - convert to base64
|
|
1305
|
-
|
|
1306
|
-
imageData = `data:${mimeType};base64,${base64}`;
|
|
1331
|
+
// Buffer - convert to raw base64
|
|
1332
|
+
imageData = image.toString("base64");
|
|
1307
1333
|
}
|
|
1308
1334
|
content.push({
|
|
1309
1335
|
type: "image",
|
|
1310
1336
|
image: imageData,
|
|
1311
|
-
mimeType: mimeType,
|
|
1337
|
+
mimeType: mimeType,
|
|
1312
1338
|
});
|
|
1313
1339
|
}
|
|
1314
1340
|
catch (error) {
|
|
@@ -1348,7 +1374,7 @@ async function convertMultimodalToProviderFormat(text, images, pdfFiles, provide
|
|
|
1348
1374
|
return {
|
|
1349
1375
|
type: "file",
|
|
1350
1376
|
data: pdf.buffer,
|
|
1351
|
-
|
|
1377
|
+
mediaType: "application/pdf",
|
|
1352
1378
|
};
|
|
1353
1379
|
}));
|
|
1354
1380
|
}
|
|
@@ -1363,11 +1389,11 @@ async function convertMultimodalToProviderFormat(text, images, pdfFiles, provide
|
|
|
1363
1389
|
maxPages: 20, // Limit pages to prevent token overflow
|
|
1364
1390
|
});
|
|
1365
1391
|
logger.info(`[PDF→Image] ✅ Converted ${pdf.filename}: ${conversionResult.pageCount} page(s) → images`);
|
|
1366
|
-
// Add each page as an ImagePart
|
|
1392
|
+
// Add each page as an ImagePart (raw base64, not data: URI — see SSRF note above)
|
|
1367
1393
|
conversionResult.images.forEach((base64Image, pageIndex) => {
|
|
1368
1394
|
content.push({
|
|
1369
1395
|
type: "image",
|
|
1370
|
-
image:
|
|
1396
|
+
image: base64Image,
|
|
1371
1397
|
mimeType: "image/png",
|
|
1372
1398
|
});
|
|
1373
1399
|
logger.debug(`[PDF→Image] Added page ${pageIndex + 1}/${conversionResult.pageCount} of ${pdf.filename}`);
|
|
@@ -1384,7 +1410,7 @@ async function convertMultimodalToProviderFormat(text, images, pdfFiles, provide
|
|
|
1384
1410
|
logger.error(`[PDF→Image] ❌ Failed to convert ${pdf.filename}: ${errorMessage}`);
|
|
1385
1411
|
// Re-throw so the user knows PDF processing failed
|
|
1386
1412
|
throw new Error(`PDF to image conversion failed for ${pdf.filename}: ${errorMessage}. ` +
|
|
1387
|
-
`Provider ${provider} doesn't support native PDFs and image conversion failed
|
|
1413
|
+
`Provider ${provider} doesn't support native PDFs and image conversion failed.`, { cause: error });
|
|
1388
1414
|
}
|
|
1389
1415
|
}
|
|
1390
1416
|
}
|
|
@@ -3,14 +3,7 @@
|
|
|
3
3
|
* Derives choices from model enums to ensure consistency
|
|
4
4
|
*/
|
|
5
5
|
import { AIProviderName } from "../constants/enums.js";
|
|
6
|
-
|
|
7
|
-
* Model choice for CLI prompts (inquirer format)
|
|
8
|
-
*/
|
|
9
|
-
export type ModelChoice = {
|
|
10
|
-
name: string;
|
|
11
|
-
value: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
};
|
|
6
|
+
import type { ModelChoice } from "../types/index.js";
|
|
14
7
|
/**
|
|
15
8
|
* Default models per provider (first choice/recommended)
|
|
16
9
|
*/
|