@juspay/neurolink 9.29.1 → 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 +20 -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 +6 -3
- package/dist/index.js +21 -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 +6 -3
- package/dist/lib/index.js +21 -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.d.ts +11 -0
- package/dist/lib/middleware/builtin/lifecycle.js +169 -0
- package/dist/lib/middleware/factory.d.ts +3 -3
- package/dist/lib/middleware/factory.js +6 -2
- package/dist/lib/middleware/index.d.ts +2 -1
- package/dist/lib/middleware/index.js +2 -0
- 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 +319 -187
- 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 +14 -4
- 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 +57 -4
- 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 +44 -14
- 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 +7 -1
- package/dist/lib/utils/errorHandling.js +52 -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.d.ts +11 -0
- package/dist/middleware/builtin/lifecycle.js +168 -0
- package/dist/middleware/factory.d.ts +3 -3
- package/dist/middleware/factory.js +6 -2
- package/dist/middleware/index.d.ts +2 -1
- package/dist/middleware/index.js +2 -0
- 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 +319 -187
- 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 +14 -4
- 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 +57 -4
- 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 +44 -14
- 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 +7 -1
- package/dist/utils/errorHandling.js +52 -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 +139 -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
|
@@ -12,32 +12,8 @@
|
|
|
12
12
|
* - Automatic token refresh via configurable refresher functions
|
|
13
13
|
* - Cross-platform support (Unix/macOS/Windows)
|
|
14
14
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* OAuth tokens structure for storage.
|
|
18
|
-
* Stricter version of OAuthTokens from subscriptionTypes with required fields.
|
|
19
|
-
*/
|
|
20
|
-
export interface StoredOAuthTokens {
|
|
21
|
-
/** The access token for API authentication */
|
|
22
|
-
accessToken: string;
|
|
23
|
-
/** The refresh token for obtaining new access tokens (optional for some OAuth flows) */
|
|
24
|
-
refreshToken?: string;
|
|
25
|
-
/** Unix timestamp (ms) when the access token expires */
|
|
26
|
-
expiresAt: number;
|
|
27
|
-
/** Token type, typically "Bearer" */
|
|
28
|
-
tokenType: string;
|
|
29
|
-
/** Optional OAuth scopes granted */
|
|
30
|
-
scope?: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* @deprecated Use StoredOAuthTokens instead
|
|
34
|
-
*/
|
|
35
|
-
export type OAuthTokens = StoredOAuthTokens;
|
|
36
|
-
/**
|
|
37
|
-
* Token refresher function type
|
|
38
|
-
* Takes a refresh token and returns new tokens
|
|
39
|
-
*/
|
|
40
|
-
export type TokenRefresher = (refreshToken: string) => Promise<StoredOAuthTokens>;
|
|
15
|
+
import type { StoredOAuthTokens, TokenRefresher } from "../types/authTypes.js";
|
|
16
|
+
export type { StoredOAuthTokens, TokenRefresher };
|
|
41
17
|
/**
|
|
42
18
|
* Secure token storage for OAuth tokens with multi-provider support
|
|
43
19
|
*
|
|
@@ -76,12 +52,14 @@ export declare class TokenStore {
|
|
|
76
52
|
private static readonly TOKEN_FILE;
|
|
77
53
|
private static readonly FILE_PERMISSIONS;
|
|
78
54
|
private static readonly DIR_PERMISSIONS;
|
|
79
|
-
/** Default expiration buffer:
|
|
55
|
+
/** Default expiration buffer: 1 hour (proactive refresh before actual expiry) */
|
|
80
56
|
private static readonly DEFAULT_EXPIRY_BUFFER_MS;
|
|
81
57
|
private readonly storagePath;
|
|
82
58
|
private readonly encryptionEnabled;
|
|
83
59
|
private readonly encryptionKey;
|
|
84
60
|
private readonly tokenRefreshers;
|
|
61
|
+
private readonly inFlightRefreshes;
|
|
62
|
+
private readonly _mutex;
|
|
85
63
|
/**
|
|
86
64
|
* Creates a new TokenStore instance
|
|
87
65
|
*
|
|
@@ -107,6 +85,10 @@ export declare class TokenStore {
|
|
|
107
85
|
* @throws TokenStoreError if storage fails
|
|
108
86
|
*/
|
|
109
87
|
saveTokens(provider: string, tokens: StoredOAuthTokens): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Internal save without mutex — callers must already hold the mutex.
|
|
90
|
+
*/
|
|
91
|
+
private _saveTokensInternal;
|
|
110
92
|
/**
|
|
111
93
|
* Loads stored OAuth tokens for a specific provider
|
|
112
94
|
*
|
|
@@ -115,6 +97,10 @@ export declare class TokenStore {
|
|
|
115
97
|
* @throws TokenStoreError if reading fails (other than file not found)
|
|
116
98
|
*/
|
|
117
99
|
loadTokens(provider: string): Promise<StoredOAuthTokens | null>;
|
|
100
|
+
/**
|
|
101
|
+
* Internal load without mutex — callers must already hold the mutex.
|
|
102
|
+
*/
|
|
103
|
+
private _loadTokensInternal;
|
|
118
104
|
/**
|
|
119
105
|
* Clears stored tokens for a specific provider
|
|
120
106
|
*
|
|
@@ -170,6 +156,64 @@ export declare class TokenStore {
|
|
|
170
156
|
* @returns Array of provider names
|
|
171
157
|
*/
|
|
172
158
|
listProviders(): Promise<string[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Lists all provider keys that start with the given prefix
|
|
161
|
+
*
|
|
162
|
+
* @param prefix - The prefix to filter by (e.g., "anthropic:")
|
|
163
|
+
* @returns Array of matching provider keys
|
|
164
|
+
*/
|
|
165
|
+
listByPrefix(prefix: string): Promise<string[]>;
|
|
166
|
+
/**
|
|
167
|
+
* Marks a provider's tokens as permanently disabled (persisted to disk).
|
|
168
|
+
*
|
|
169
|
+
* Disabled accounts are skipped immediately by consumers — no wasted
|
|
170
|
+
* round-trips. The state survives proxy restarts because it is stored
|
|
171
|
+
* alongside the tokens in the JSON file.
|
|
172
|
+
*
|
|
173
|
+
* @param provider - The provider key (e.g., "anthropic:user@example.com")
|
|
174
|
+
* @param reason - Optional human-readable reason (e.g., "refresh_failed")
|
|
175
|
+
*/
|
|
176
|
+
markDisabled(provider: string, reason?: string): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Re-enables a previously disabled provider (persisted to disk).
|
|
179
|
+
*
|
|
180
|
+
* Clears the disabled flag, timestamp, and reason so the account can
|
|
181
|
+
* be used again by the proxy pool.
|
|
182
|
+
*
|
|
183
|
+
* @param provider - The provider key (e.g., "anthropic:user@example.com")
|
|
184
|
+
*/
|
|
185
|
+
markEnabled(provider: string): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* Checks whether a provider's tokens are currently disabled.
|
|
188
|
+
*
|
|
189
|
+
* Returns false for providers that don't exist in the store (no tokens
|
|
190
|
+
* at all) and for entries that predate the disabled field (backward compat).
|
|
191
|
+
*
|
|
192
|
+
* @param provider - The provider key
|
|
193
|
+
* @returns true if the provider entry exists and is disabled
|
|
194
|
+
*/
|
|
195
|
+
isDisabled(provider: string): Promise<boolean>;
|
|
196
|
+
/**
|
|
197
|
+
* Lists all provider keys that are currently disabled.
|
|
198
|
+
*
|
|
199
|
+
* @returns Array of disabled provider keys (empty if none or no storage file)
|
|
200
|
+
*/
|
|
201
|
+
listDisabled(): Promise<string[]>;
|
|
202
|
+
/**
|
|
203
|
+
* Removes expired and unrefreshable token entries from disk.
|
|
204
|
+
*
|
|
205
|
+
* An entry is pruned when:
|
|
206
|
+
* - Its access token is expired (with optional buffer) AND it has no
|
|
207
|
+
* refresh token, AND it is NOT manually disabled.
|
|
208
|
+
*
|
|
209
|
+
* Manually disabled entries are preserved so that `auth enable` can
|
|
210
|
+
* re-enable them later. They are only removed via explicit `clearTokens`.
|
|
211
|
+
*
|
|
212
|
+
* @param bufferMs - Extra buffer in milliseconds to subtract from expiresAt
|
|
213
|
+
* when checking expiry (default: 0 — strict expiry check)
|
|
214
|
+
* @returns Array of provider keys that were removed
|
|
215
|
+
*/
|
|
216
|
+
pruneExpired(bufferMs?: number): Promise<string[]>;
|
|
173
217
|
/**
|
|
174
218
|
* Clears all stored tokens for all providers
|
|
175
219
|
*
|
package/dist/auth/tokenStore.js
CHANGED
|
@@ -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
|
|
@@ -7,20 +7,41 @@
|
|
|
7
7
|
* - OAuth 2.1 authentication with PKCE (for Claude subscription)
|
|
8
8
|
*
|
|
9
9
|
* Subcommands:
|
|
10
|
-
* - login: Authenticate with a provider
|
|
10
|
+
* - login: Authenticate with a provider (supports --add/--label for multi-account)
|
|
11
11
|
* - logout: Clear stored credentials
|
|
12
12
|
* - status: Show authentication status
|
|
13
13
|
* - refresh: Manually refresh OAuth tokens
|
|
14
|
+
* - list: List all authenticated accounts
|
|
15
|
+
* - remove: Remove an authenticated account
|
|
14
16
|
*
|
|
15
17
|
* Currently supports:
|
|
16
18
|
* - Anthropic (API key + OAuth)
|
|
17
19
|
*/
|
|
18
|
-
import type { AuthCommandArgs } from "
|
|
20
|
+
import type { AuthCommandArgs } from "../../lib/types/index.js";
|
|
19
21
|
/**
|
|
20
22
|
* Handle the login subcommand
|
|
21
23
|
* `neurolink auth login <provider>`
|
|
24
|
+
*
|
|
25
|
+
* When --add is specified, saves tokens to the TokenStore with a compound key
|
|
26
|
+
* (e.g., "anthropic:alice") to support multi-account pools.
|
|
22
27
|
*/
|
|
23
28
|
export declare function handleLogin(argv: AuthCommandArgs): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Handle the list subcommand
|
|
31
|
+
* `neurolink auth list`
|
|
32
|
+
*
|
|
33
|
+
* Lists all authenticated accounts from the TokenStore.
|
|
34
|
+
*/
|
|
35
|
+
export declare function handleList(argv: AuthCommandArgs): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Handle the remove subcommand
|
|
38
|
+
* `neurolink auth remove <provider> --label <label>` or `neurolink auth remove <provider> --account <key>`
|
|
39
|
+
*
|
|
40
|
+
* Removes an authenticated account from the TokenStore.
|
|
41
|
+
* When neither --label nor --account is given, removes the default (unlabelled) account
|
|
42
|
+
* for the specified provider.
|
|
43
|
+
*/
|
|
44
|
+
export declare function handleRemove(argv: AuthCommandArgs): Promise<void>;
|
|
24
45
|
/**
|
|
25
46
|
* Handle the logout subcommand
|
|
26
47
|
* `neurolink auth logout <provider>`
|
|
@@ -36,6 +57,22 @@ export declare function handleStatus(argv: AuthCommandArgs): Promise<void>;
|
|
|
36
57
|
* `neurolink auth refresh <provider>`
|
|
37
58
|
*/
|
|
38
59
|
export declare function handleRefresh(argv: AuthCommandArgs): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Handle the cleanup subcommand
|
|
62
|
+
* `neurolink auth cleanup [--force]`
|
|
63
|
+
*
|
|
64
|
+
* Removes stale accounts from the token store:
|
|
65
|
+
* 1. Expired entries with no refresh token (via pruneExpired)
|
|
66
|
+
* 2. Permanently disabled entries (after confirmation)
|
|
67
|
+
*/
|
|
68
|
+
export declare function handleCleanup(argv: AuthCommandArgs): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Handle the enable subcommand
|
|
71
|
+
* `neurolink auth enable <account>`
|
|
72
|
+
*
|
|
73
|
+
* Re-enables a previously disabled account so it can be used by the proxy pool again.
|
|
74
|
+
*/
|
|
75
|
+
export declare function handleEnable(argv: AuthCommandArgs): Promise<void>;
|
|
39
76
|
/**
|
|
40
77
|
* Legacy main auth command handler
|
|
41
78
|
* @deprecated Use subcommand handlers instead
|