@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
|
@@ -18,8 +18,7 @@ import { homedir } from "os";
|
|
|
18
18
|
import { createHash } from "crypto";
|
|
19
19
|
import { logger } from "../utils/logger.js";
|
|
20
20
|
import { TokenStoreError } from "../types/errors.js";
|
|
21
|
-
|
|
22
|
-
export { TokenStoreError } from "../types/errors.js";
|
|
21
|
+
import { AsyncMutex } from "../utils/asyncMutex.js";
|
|
23
22
|
const { readFile, writeFile, mkdir, unlink, access, chmod, rename } = fs;
|
|
24
23
|
// =============================================================================
|
|
25
24
|
// TOKEN STORE CLASS
|
|
@@ -62,12 +61,14 @@ export class TokenStore {
|
|
|
62
61
|
static TOKEN_FILE = "tokens.json";
|
|
63
62
|
static FILE_PERMISSIONS = 0o600;
|
|
64
63
|
static DIR_PERMISSIONS = 0o700;
|
|
65
|
-
/** Default expiration buffer:
|
|
66
|
-
static DEFAULT_EXPIRY_BUFFER_MS =
|
|
64
|
+
/** Default expiration buffer: 1 hour (proactive refresh before actual expiry) */
|
|
65
|
+
static DEFAULT_EXPIRY_BUFFER_MS = 60 * 60 * 1000;
|
|
67
66
|
storagePath;
|
|
68
67
|
encryptionEnabled;
|
|
69
68
|
encryptionKey;
|
|
70
69
|
tokenRefreshers = new Map();
|
|
70
|
+
inFlightRefreshes = new Map();
|
|
71
|
+
_mutex = new AsyncMutex();
|
|
71
72
|
/**
|
|
72
73
|
* Creates a new TokenStore instance
|
|
73
74
|
*
|
|
@@ -105,6 +106,14 @@ export class TokenStore {
|
|
|
105
106
|
* @throws TokenStoreError if storage fails
|
|
106
107
|
*/
|
|
107
108
|
async saveTokens(provider, tokens) {
|
|
109
|
+
return this._mutex.runExclusive(async () => {
|
|
110
|
+
await this._saveTokensInternal(provider, tokens);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Internal save without mutex — callers must already hold the mutex.
|
|
115
|
+
*/
|
|
116
|
+
async _saveTokensInternal(provider, tokens) {
|
|
108
117
|
// Validate tokens before saving
|
|
109
118
|
this.validateTokens(tokens);
|
|
110
119
|
const storageDir = join(this.storagePath, "..");
|
|
@@ -168,6 +177,14 @@ export class TokenStore {
|
|
|
168
177
|
* @throws TokenStoreError if reading fails (other than file not found)
|
|
169
178
|
*/
|
|
170
179
|
async loadTokens(provider) {
|
|
180
|
+
return this._mutex.runExclusive(async () => {
|
|
181
|
+
return this._loadTokensInternal(provider);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Internal load without mutex — callers must already hold the mutex.
|
|
186
|
+
*/
|
|
187
|
+
async _loadTokensInternal(provider) {
|
|
171
188
|
try {
|
|
172
189
|
const storageData = await this.loadStorageData();
|
|
173
190
|
const providerData = storageData.providers[provider];
|
|
@@ -199,35 +216,40 @@ export class TokenStore {
|
|
|
199
216
|
* @throws TokenStoreError if deletion fails
|
|
200
217
|
*/
|
|
201
218
|
async clearTokens(provider) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
219
|
+
return this._mutex.runExclusive(async () => {
|
|
220
|
+
// Clear in-memory refresh state so re-adding an account starts fresh
|
|
221
|
+
this.inFlightRefreshes.delete(provider);
|
|
222
|
+
this.tokenRefreshers.delete(provider);
|
|
223
|
+
try {
|
|
224
|
+
const storageData = await this.loadStorageData();
|
|
225
|
+
if (!storageData.providers[provider]) {
|
|
226
|
+
logger.debug("No tokens to clear for provider", { provider });
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
delete storageData.providers[provider];
|
|
230
|
+
storageData.lastModified = Date.now();
|
|
231
|
+
// If no more providers, delete the file entirely
|
|
232
|
+
if (Object.keys(storageData.providers).length === 0) {
|
|
233
|
+
await this.deleteStorageFile();
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
await this.saveStorageData(storageData);
|
|
237
|
+
}
|
|
238
|
+
logger.info("OAuth tokens cleared successfully", { provider });
|
|
216
239
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
240
|
+
catch (error) {
|
|
241
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
242
|
+
logger.debug("No tokens to clear for provider", { provider });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
246
|
+
logger.error("Failed to clear OAuth tokens", {
|
|
247
|
+
provider,
|
|
248
|
+
error: errorMessage,
|
|
249
|
+
});
|
|
250
|
+
throw new TokenStoreError(`Failed to clear tokens for ${provider}: ${errorMessage}`, "STORAGE_ERROR");
|
|
223
251
|
}
|
|
224
|
-
|
|
225
|
-
logger.error("Failed to clear OAuth tokens", {
|
|
226
|
-
provider,
|
|
227
|
-
error: errorMessage,
|
|
228
|
-
});
|
|
229
|
-
throw new TokenStoreError(`Failed to clear tokens for ${provider}: ${errorMessage}`, "STORAGE_ERROR");
|
|
230
|
-
}
|
|
252
|
+
});
|
|
231
253
|
}
|
|
232
254
|
/**
|
|
233
255
|
* Checks if the given tokens are expired
|
|
@@ -251,47 +273,105 @@ export class TokenStore {
|
|
|
251
273
|
* @throws TokenStoreError if refresh fails
|
|
252
274
|
*/
|
|
253
275
|
async getValidToken(provider) {
|
|
254
|
-
|
|
255
|
-
|
|
276
|
+
// Phase 1: Read token under mutex (fast)
|
|
277
|
+
const snapshot = await this._mutex.runExclusive(async () => {
|
|
278
|
+
const tokens = await this._loadTokensInternal(provider);
|
|
279
|
+
if (!tokens) {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
return { ...tokens };
|
|
283
|
+
});
|
|
284
|
+
if (!snapshot) {
|
|
256
285
|
logger.debug("No tokens found for provider", { provider });
|
|
257
286
|
return null;
|
|
258
287
|
}
|
|
259
|
-
//
|
|
260
|
-
if (this.isTokenExpired(
|
|
261
|
-
|
|
288
|
+
// Token is still valid — return immediately
|
|
289
|
+
if (!this.isTokenExpired(snapshot)) {
|
|
290
|
+
return snapshot.accessToken;
|
|
291
|
+
}
|
|
292
|
+
logger.debug("Token expired or expiring soon", {
|
|
293
|
+
provider,
|
|
294
|
+
expiresAt: new Date(snapshot.expiresAt).toISOString(),
|
|
295
|
+
});
|
|
296
|
+
// Phase 2: Refresh OUTSIDE the mutex so other reads are not blocked
|
|
297
|
+
const refresher = this.tokenRefreshers.get(provider);
|
|
298
|
+
if (!refresher || !snapshot.refreshToken) {
|
|
299
|
+
logger.debug("No refresher configured or no refresh token available", {
|
|
262
300
|
provider,
|
|
263
|
-
|
|
301
|
+
hasRefresher: !!refresher,
|
|
302
|
+
hasRefreshToken: !!snapshot.refreshToken,
|
|
264
303
|
});
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
304
|
+
// No refresher/refresh-token available — fall back to hard expiry check.
|
|
305
|
+
// The proactive buffer only applies when a refresh is possible.
|
|
306
|
+
return this.isTokenExpired(snapshot, 0) ? null : snapshot.accessToken;
|
|
307
|
+
}
|
|
308
|
+
// Deduplicate concurrent refresh calls for the same provider:
|
|
309
|
+
// If a refresh is already in-flight, await it instead of starting another.
|
|
310
|
+
const existing = this.inFlightRefreshes.get(provider);
|
|
311
|
+
if (existing) {
|
|
312
|
+
logger.debug("Awaiting in-flight refresh for provider", { provider });
|
|
313
|
+
const result = await existing;
|
|
314
|
+
return result.accessToken;
|
|
315
|
+
}
|
|
316
|
+
const refreshTokenValue = snapshot.refreshToken;
|
|
317
|
+
const refreshPromise = (async () => {
|
|
318
|
+
let newTokens;
|
|
319
|
+
try {
|
|
320
|
+
logger.info("Refreshing expired token", { provider });
|
|
321
|
+
newTokens = await refresher(refreshTokenValue);
|
|
284
322
|
}
|
|
285
|
-
|
|
286
|
-
|
|
323
|
+
catch (error) {
|
|
324
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
325
|
+
logger.error("Failed to refresh token", {
|
|
287
326
|
provider,
|
|
288
|
-
|
|
289
|
-
hasRefreshToken: !!tokens.refreshToken,
|
|
327
|
+
error: errorMessage,
|
|
290
328
|
});
|
|
291
|
-
|
|
329
|
+
throw new TokenStoreError(`Failed to refresh token for ${provider}: ${errorMessage}`, "REFRESH_ERROR");
|
|
292
330
|
}
|
|
331
|
+
// Phase 3: Write refreshed token under mutex (fast).
|
|
332
|
+
// Re-check that the token is still expired before overwriting —
|
|
333
|
+
// another caller may have already persisted a fresh token.
|
|
334
|
+
// Also guard against resurrecting cleared/disabled entries:
|
|
335
|
+
// if the entry was removed or disabled during the in-flight refresh,
|
|
336
|
+
// skip the save to avoid re-creating a dead entry.
|
|
337
|
+
const persistedTokens = await this._mutex.runExclusive(async () => {
|
|
338
|
+
// Guard: do not resurrect cleared entries
|
|
339
|
+
const current = await this._loadTokensInternal(provider);
|
|
340
|
+
if (!current) {
|
|
341
|
+
logger.debug("Skipping token persist — provider entry was cleared during refresh", { provider });
|
|
342
|
+
return newTokens; // return refreshed tokens to caller but don't persist
|
|
343
|
+
}
|
|
344
|
+
// Guard: do not resurrect disabled entries
|
|
345
|
+
try {
|
|
346
|
+
const storageData = await this.loadStorageData();
|
|
347
|
+
const providerData = storageData.providers[provider];
|
|
348
|
+
if (providerData?.disabled) {
|
|
349
|
+
logger.debug("Skipping token persist — provider was disabled during refresh", { provider });
|
|
350
|
+
return newTokens;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
// Storage read failure — proceed cautiously
|
|
355
|
+
}
|
|
356
|
+
if (!this.isTokenExpired(current)) {
|
|
357
|
+
// Another caller already persisted a fresh token — use theirs.
|
|
358
|
+
logger.debug("Skipping token persist — another refresh already wrote a valid token", { provider });
|
|
359
|
+
return current;
|
|
360
|
+
}
|
|
361
|
+
await this._saveTokensInternal(provider, newTokens);
|
|
362
|
+
return newTokens;
|
|
363
|
+
});
|
|
364
|
+
logger.info("Token refreshed successfully", { provider });
|
|
365
|
+
return persistedTokens;
|
|
366
|
+
})();
|
|
367
|
+
this.inFlightRefreshes.set(provider, refreshPromise);
|
|
368
|
+
try {
|
|
369
|
+
const newTokens = await refreshPromise;
|
|
370
|
+
return newTokens.accessToken;
|
|
371
|
+
}
|
|
372
|
+
finally {
|
|
373
|
+
this.inFlightRefreshes.delete(provider);
|
|
293
374
|
}
|
|
294
|
-
return tokens.accessToken;
|
|
295
375
|
}
|
|
296
376
|
/**
|
|
297
377
|
* Sets the token refresher function for a provider
|
|
@@ -347,14 +427,212 @@ export class TokenStore {
|
|
|
347
427
|
throw error;
|
|
348
428
|
}
|
|
349
429
|
}
|
|
430
|
+
/**
|
|
431
|
+
* Lists all provider keys that start with the given prefix
|
|
432
|
+
*
|
|
433
|
+
* @param prefix - The prefix to filter by (e.g., "anthropic:")
|
|
434
|
+
* @returns Array of matching provider keys
|
|
435
|
+
*/
|
|
436
|
+
async listByPrefix(prefix) {
|
|
437
|
+
const allProviders = await this.listProviders();
|
|
438
|
+
return allProviders.filter((key) => key.startsWith(prefix));
|
|
439
|
+
}
|
|
440
|
+
// ===========================================================================
|
|
441
|
+
// DISABLED STATE METHODS
|
|
442
|
+
// ===========================================================================
|
|
443
|
+
/**
|
|
444
|
+
* Marks a provider's tokens as permanently disabled (persisted to disk).
|
|
445
|
+
*
|
|
446
|
+
* Disabled accounts are skipped immediately by consumers — no wasted
|
|
447
|
+
* round-trips. The state survives proxy restarts because it is stored
|
|
448
|
+
* alongside the tokens in the JSON file.
|
|
449
|
+
*
|
|
450
|
+
* @param provider - The provider key (e.g., "anthropic:user@example.com")
|
|
451
|
+
* @param reason - Optional human-readable reason (e.g., "refresh_failed")
|
|
452
|
+
*/
|
|
453
|
+
async markDisabled(provider, reason) {
|
|
454
|
+
return this._mutex.runExclusive(async () => {
|
|
455
|
+
let storageData;
|
|
456
|
+
try {
|
|
457
|
+
storageData = await this.loadStorageData();
|
|
458
|
+
}
|
|
459
|
+
catch (error) {
|
|
460
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
461
|
+
logger.debug("No token storage found — nothing to disable", {
|
|
462
|
+
provider,
|
|
463
|
+
});
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
throw error;
|
|
467
|
+
}
|
|
468
|
+
const providerData = storageData.providers[provider];
|
|
469
|
+
if (!providerData) {
|
|
470
|
+
logger.debug("No tokens found for provider — nothing to disable", {
|
|
471
|
+
provider,
|
|
472
|
+
});
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
providerData.disabled = true;
|
|
476
|
+
providerData.disabledAt = Date.now();
|
|
477
|
+
providerData.disabledReason = reason;
|
|
478
|
+
storageData.lastModified = Date.now();
|
|
479
|
+
await this.saveStorageData(storageData);
|
|
480
|
+
logger.info("Provider marked as disabled", {
|
|
481
|
+
provider,
|
|
482
|
+
reason: reason ?? "unspecified",
|
|
483
|
+
});
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Re-enables a previously disabled provider (persisted to disk).
|
|
488
|
+
*
|
|
489
|
+
* Clears the disabled flag, timestamp, and reason so the account can
|
|
490
|
+
* be used again by the proxy pool.
|
|
491
|
+
*
|
|
492
|
+
* @param provider - The provider key (e.g., "anthropic:user@example.com")
|
|
493
|
+
*/
|
|
494
|
+
async markEnabled(provider) {
|
|
495
|
+
return this._mutex.runExclusive(async () => {
|
|
496
|
+
let storageData;
|
|
497
|
+
try {
|
|
498
|
+
storageData = await this.loadStorageData();
|
|
499
|
+
}
|
|
500
|
+
catch (error) {
|
|
501
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
502
|
+
logger.debug("No token storage found — nothing to enable", {
|
|
503
|
+
provider,
|
|
504
|
+
});
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
throw error;
|
|
508
|
+
}
|
|
509
|
+
const providerData = storageData.providers[provider];
|
|
510
|
+
if (!providerData) {
|
|
511
|
+
logger.debug("No tokens found for provider — nothing to enable", {
|
|
512
|
+
provider,
|
|
513
|
+
});
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
providerData.disabled = false;
|
|
517
|
+
delete providerData.disabledAt;
|
|
518
|
+
delete providerData.disabledReason;
|
|
519
|
+
storageData.lastModified = Date.now();
|
|
520
|
+
await this.saveStorageData(storageData);
|
|
521
|
+
logger.info("Provider re-enabled", { provider });
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Checks whether a provider's tokens are currently disabled.
|
|
526
|
+
*
|
|
527
|
+
* Returns false for providers that don't exist in the store (no tokens
|
|
528
|
+
* at all) and for entries that predate the disabled field (backward compat).
|
|
529
|
+
*
|
|
530
|
+
* @param provider - The provider key
|
|
531
|
+
* @returns true if the provider entry exists and is disabled
|
|
532
|
+
*/
|
|
533
|
+
async isDisabled(provider) {
|
|
534
|
+
return this._mutex.runExclusive(async () => {
|
|
535
|
+
try {
|
|
536
|
+
const storageData = await this.loadStorageData();
|
|
537
|
+
const providerData = storageData.providers[provider];
|
|
538
|
+
return providerData?.disabled === true;
|
|
539
|
+
}
|
|
540
|
+
catch (error) {
|
|
541
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
542
|
+
return false;
|
|
543
|
+
}
|
|
544
|
+
throw error;
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Lists all provider keys that are currently disabled.
|
|
550
|
+
*
|
|
551
|
+
* @returns Array of disabled provider keys (empty if none or no storage file)
|
|
552
|
+
*/
|
|
553
|
+
async listDisabled() {
|
|
554
|
+
return this._mutex.runExclusive(async () => {
|
|
555
|
+
try {
|
|
556
|
+
const storageData = await this.loadStorageData();
|
|
557
|
+
return Object.entries(storageData.providers)
|
|
558
|
+
.filter(([, data]) => data.disabled === true)
|
|
559
|
+
.map(([key]) => key);
|
|
560
|
+
}
|
|
561
|
+
catch (error) {
|
|
562
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
563
|
+
return [];
|
|
564
|
+
}
|
|
565
|
+
throw error;
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Removes expired and unrefreshable token entries from disk.
|
|
571
|
+
*
|
|
572
|
+
* An entry is pruned when:
|
|
573
|
+
* - Its access token is expired (with optional buffer) AND it has no
|
|
574
|
+
* refresh token, AND it is NOT manually disabled.
|
|
575
|
+
*
|
|
576
|
+
* Manually disabled entries are preserved so that `auth enable` can
|
|
577
|
+
* re-enable them later. They are only removed via explicit `clearTokens`.
|
|
578
|
+
*
|
|
579
|
+
* @param bufferMs - Extra buffer in milliseconds to subtract from expiresAt
|
|
580
|
+
* when checking expiry (default: 0 — strict expiry check)
|
|
581
|
+
* @returns Array of provider keys that were removed
|
|
582
|
+
*/
|
|
583
|
+
async pruneExpired(bufferMs = 0) {
|
|
584
|
+
return this._mutex.runExclusive(async () => {
|
|
585
|
+
let storageData;
|
|
586
|
+
try {
|
|
587
|
+
storageData = await this.loadStorageData();
|
|
588
|
+
}
|
|
589
|
+
catch (error) {
|
|
590
|
+
if (error instanceof TokenStoreError && error.code === "NOT_FOUND") {
|
|
591
|
+
return [];
|
|
592
|
+
}
|
|
593
|
+
throw error;
|
|
594
|
+
}
|
|
595
|
+
const now = Date.now();
|
|
596
|
+
const pruned = [];
|
|
597
|
+
for (const [key, providerData] of Object.entries(storageData.providers)) {
|
|
598
|
+
const isExpired = providerData.tokens.expiresAt - bufferMs <= now;
|
|
599
|
+
const hasNoRefreshToken = !providerData.tokens.refreshToken;
|
|
600
|
+
const isManuallyDisabled = providerData.disabled === true;
|
|
601
|
+
// Only prune expired+unrefreshable entries that are NOT manually disabled
|
|
602
|
+
if (isExpired && hasNoRefreshToken && !isManuallyDisabled) {
|
|
603
|
+
delete storageData.providers[key];
|
|
604
|
+
pruned.push(key);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
if (pruned.length > 0) {
|
|
608
|
+
storageData.lastModified = Date.now();
|
|
609
|
+
if (Object.keys(storageData.providers).length === 0) {
|
|
610
|
+
await this.deleteStorageFile();
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
await this.saveStorageData(storageData);
|
|
614
|
+
}
|
|
615
|
+
logger.info("Pruned expired token entries", {
|
|
616
|
+
removed: pruned,
|
|
617
|
+
count: pruned.length,
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
return pruned;
|
|
621
|
+
});
|
|
622
|
+
}
|
|
350
623
|
/**
|
|
351
624
|
* Clears all stored tokens for all providers
|
|
352
625
|
*
|
|
353
626
|
* @throws TokenStoreError if deletion fails
|
|
354
627
|
*/
|
|
355
628
|
async clearAllTokens() {
|
|
356
|
-
|
|
357
|
-
|
|
629
|
+
return this._mutex.runExclusive(async () => {
|
|
630
|
+
// Clear all in-memory refresh state so re-adding accounts starts fresh
|
|
631
|
+
this.inFlightRefreshes.clear();
|
|
632
|
+
this.tokenRefreshers.clear();
|
|
633
|
+
await this.deleteStorageFile();
|
|
634
|
+
logger.info("All OAuth tokens cleared");
|
|
635
|
+
});
|
|
358
636
|
}
|
|
359
637
|
// ===========================================================================
|
|
360
638
|
// PRIVATE HELPER METHODS
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK Compatibility Layer
|
|
3
|
+
*
|
|
4
|
+
* Provides compatibility with the Vercel AI SDK by implementing the
|
|
5
|
+
* LanguageModelV1 interface. This allows NeuroLink to be used as a
|
|
6
|
+
* drop-in replacement for other AI providers in AI SDK applications.
|
|
7
|
+
*
|
|
8
|
+
* @module @neurolink/ai-sdk
|
|
9
|
+
*/
|
|
10
|
+
import type { LanguageModel, LanguageModelCallOptions, LanguageModelResponse, LanguageModelStreamResponse, NeuroLinkProviderOptions, ModelOptions } from "../types/clientTypes.js";
|
|
11
|
+
import { NeuroLinkClient } from "./httpClient.js";
|
|
12
|
+
/**
|
|
13
|
+
* NeuroLink Language Model implementation compatible with Vercel AI SDK
|
|
14
|
+
*
|
|
15
|
+
* Implements the LanguageModelV1 interface for drop-in compatibility.
|
|
16
|
+
*
|
|
17
|
+
* @example Using with AI SDK
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { generateText } from 'ai';
|
|
20
|
+
* import { createNeuroLinkModel } from '@neurolink/ai-sdk';
|
|
21
|
+
*
|
|
22
|
+
* const model = createNeuroLinkModel({
|
|
23
|
+
* baseUrl: 'https://api.neurolink.example.com',
|
|
24
|
+
* apiKey: 'your-api-key',
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* const result = await generateText({
|
|
28
|
+
* model: model('gpt-4o'),
|
|
29
|
+
* prompt: 'Hello, world!',
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class NeuroLinkLanguageModel implements LanguageModel {
|
|
34
|
+
readonly modelId: string;
|
|
35
|
+
readonly provider: string;
|
|
36
|
+
private client;
|
|
37
|
+
private options;
|
|
38
|
+
constructor(client: NeuroLinkClient, modelId: string, provider: string, options?: ModelOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Generate a non-streaming response
|
|
41
|
+
*/
|
|
42
|
+
doGenerate(options: LanguageModelCallOptions): Promise<LanguageModelResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* Generate a streaming response
|
|
45
|
+
*
|
|
46
|
+
* Uses an async queue so that each text delta from the provider is yielded
|
|
47
|
+
* to the consumer immediately, rather than buffering the entire response.
|
|
48
|
+
*/
|
|
49
|
+
doStream(options: LanguageModelCallOptions): Promise<LanguageModelStreamResponse>;
|
|
50
|
+
/**
|
|
51
|
+
* Map NeuroLink finish reasons to AI SDK finish reasons
|
|
52
|
+
*/
|
|
53
|
+
private mapFinishReason;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* NeuroLink Provider for Vercel AI SDK
|
|
57
|
+
*
|
|
58
|
+
* Creates model instances that are compatible with the Vercel AI SDK.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* import { neurolink } from '@neurolink/ai-sdk';
|
|
63
|
+
*
|
|
64
|
+
* const provider = neurolink({
|
|
65
|
+
* baseUrl: 'https://api.neurolink.example.com',
|
|
66
|
+
* apiKey: 'your-api-key',
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* // Create a model
|
|
70
|
+
* const model = provider('gpt-4o');
|
|
71
|
+
*
|
|
72
|
+
* // Use with AI SDK
|
|
73
|
+
* const result = await generateText({
|
|
74
|
+
* model,
|
|
75
|
+
* prompt: 'Hello!',
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare class NeuroLinkProvider {
|
|
80
|
+
private client;
|
|
81
|
+
private defaultProvider;
|
|
82
|
+
private defaultModel;
|
|
83
|
+
constructor(options: NeuroLinkProviderOptions);
|
|
84
|
+
/**
|
|
85
|
+
* Create a language model instance
|
|
86
|
+
*
|
|
87
|
+
* @param modelId - Model ID (e.g., 'gpt-4o', 'claude-3-opus')
|
|
88
|
+
* @param options - Additional model options
|
|
89
|
+
*/
|
|
90
|
+
model(modelId?: string, options?: ModelOptions): NeuroLinkLanguageModel;
|
|
91
|
+
/**
|
|
92
|
+
* Alias for model() - makes the provider callable
|
|
93
|
+
*/
|
|
94
|
+
call(modelId?: string, options?: ModelOptions): NeuroLinkLanguageModel;
|
|
95
|
+
/**
|
|
96
|
+
* Infer provider from model ID
|
|
97
|
+
*/
|
|
98
|
+
private inferProvider;
|
|
99
|
+
/**
|
|
100
|
+
* Get the underlying client
|
|
101
|
+
*/
|
|
102
|
+
getClient(): NeuroLinkClient;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a NeuroLink provider for Vercel AI SDK
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { createNeuroLinkProvider, generateText } from '@neurolink/ai-sdk';
|
|
110
|
+
*
|
|
111
|
+
* const neurolink = createNeuroLinkProvider({
|
|
112
|
+
* baseUrl: 'https://api.neurolink.example.com',
|
|
113
|
+
* apiKey: process.env.NEUROLINK_API_KEY,
|
|
114
|
+
* });
|
|
115
|
+
*
|
|
116
|
+
* const result = await generateText({
|
|
117
|
+
* model: neurolink('gpt-4o'),
|
|
118
|
+
* prompt: 'Hello!',
|
|
119
|
+
* });
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function createNeuroLinkProvider(options: NeuroLinkProviderOptions): NeuroLinkProvider & ((modelId?: string, modelOptions?: ModelOptions) => NeuroLinkLanguageModel);
|
|
123
|
+
/**
|
|
124
|
+
* Create a standalone NeuroLink model for Vercel AI SDK
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* import { createNeuroLinkModel, generateText } from '@neurolink/ai-sdk';
|
|
129
|
+
*
|
|
130
|
+
* const model = createNeuroLinkModel({
|
|
131
|
+
* baseUrl: 'https://api.neurolink.example.com',
|
|
132
|
+
* apiKey: process.env.NEUROLINK_API_KEY,
|
|
133
|
+
* modelId: 'gpt-4o',
|
|
134
|
+
* provider: 'openai',
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* const result = await generateText({
|
|
138
|
+
* model,
|
|
139
|
+
* prompt: 'Hello!',
|
|
140
|
+
* });
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export declare function createNeuroLinkModel(options: NeuroLinkProviderOptions & {
|
|
144
|
+
modelId: string;
|
|
145
|
+
provider?: string;
|
|
146
|
+
}): NeuroLinkLanguageModel;
|
|
147
|
+
/**
|
|
148
|
+
* Default export for easy provider creation
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* import { neurolink } from '@neurolink/ai-sdk';
|
|
153
|
+
*
|
|
154
|
+
* const provider = neurolink({
|
|
155
|
+
* baseUrl: 'https://api.neurolink.example.com',
|
|
156
|
+
* apiKey: 'your-key',
|
|
157
|
+
* });
|
|
158
|
+
*
|
|
159
|
+
* const model = provider('gpt-4o');
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare const neurolink: typeof createNeuroLinkProvider;
|
|
163
|
+
/**
|
|
164
|
+
* Create an AI SDK compatible streaming response from NeuroLink stream
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* // In a Next.js API route or server action
|
|
169
|
+
* import { createStreamingResponse } from '@neurolink/ai-sdk';
|
|
170
|
+
*
|
|
171
|
+
* export async function POST(req: Request) {
|
|
172
|
+
* const { prompt } = await req.json();
|
|
173
|
+
*
|
|
174
|
+
* const stream = await createStreamingResponse({
|
|
175
|
+
* baseUrl: process.env.NEUROLINK_URL,
|
|
176
|
+
* apiKey: process.env.NEUROLINK_API_KEY,
|
|
177
|
+
* input: { text: prompt },
|
|
178
|
+
* provider: 'openai',
|
|
179
|
+
* model: 'gpt-4o',
|
|
180
|
+
* });
|
|
181
|
+
*
|
|
182
|
+
* return stream;
|
|
183
|
+
* }
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare function createStreamingResponse(options: NeuroLinkProviderOptions & {
|
|
187
|
+
input: {
|
|
188
|
+
text: string;
|
|
189
|
+
};
|
|
190
|
+
model: string;
|
|
191
|
+
provider?: string;
|
|
192
|
+
temperature?: number;
|
|
193
|
+
maxTokens?: number;
|
|
194
|
+
systemPrompt?: string;
|
|
195
|
+
}): Promise<Response>;
|
|
196
|
+
export type { LanguageModel, LanguageModelCallOptions, LanguageModelResponse, LanguageModelStreamResponse, NeuroLinkProviderOptions, ModelOptions, } from "../types/clientTypes.js";
|