@juspay/neurolink 9.32.0 → 9.32.1
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 +6 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +137 -501
- package/dist/core/factory.js +0 -1
- package/dist/core/redisConversationMemoryManager.js +1 -1
- package/dist/features/ppt/slideGenerator.js +0 -1
- package/dist/features/ppt/utils.js +0 -1
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/configTypes.js +0 -5
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/tools.js +0 -1
- package/dist/types/typeAliases.js +0 -1
- package/dist/types/utilities.js +1 -1
- package/dist/types/workflowTypes.js +0 -1
- package/dist/utils/providerRetry.js +0 -1
- package/dist/utils/providerUtils.js +0 -1
- package/package.json +2 -2
- package/dist/client/adapters/providerImageAdapter.js +0 -588
- package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
- package/dist/client/adapters/video/directorPipeline.js +0 -516
- package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
- package/dist/client/adapters/video/frameExtractor.js +0 -143
- package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
- package/dist/client/adapters/video/videoAnalyzer.js +0 -238
- package/dist/client/adapters/video/videoMerger.js +0 -171
- package/dist/client/agent/directTools.js +0 -840
- package/dist/client/auth/AuthProviderFactory.js +0 -111
- package/dist/client/auth/AuthProviderRegistry.js +0 -190
- package/dist/client/auth/RequestContext.js +0 -78
- package/dist/client/auth/accountPool.js +0 -178
- package/dist/client/auth/anthropicOAuth.js +0 -974
- package/dist/client/auth/authContext.js +0 -314
- package/dist/client/auth/errors.js +0 -39
- package/dist/client/auth/index.js +0 -61
- package/dist/client/auth/middleware/AuthMiddleware.js +0 -519
- package/dist/client/auth/middleware/rateLimitByUser.js +0 -554
- package/dist/client/auth/providers/BaseAuthProvider.js +0 -723
- package/dist/client/auth/providers/CognitoProvider.js +0 -304
- package/dist/client/auth/providers/KeycloakProvider.js +0 -393
- package/dist/client/auth/providers/auth0.js +0 -274
- package/dist/client/auth/providers/betterAuth.js +0 -182
- package/dist/client/auth/providers/clerk.js +0 -317
- package/dist/client/auth/providers/custom.js +0 -112
- package/dist/client/auth/providers/firebase.js +0 -226
- package/dist/client/auth/providers/jwt.js +0 -212
- package/dist/client/auth/providers/oauth2.js +0 -303
- package/dist/client/auth/providers/supabase.js +0 -259
- package/dist/client/auth/providers/workos.js +0 -284
- package/dist/client/auth/serverBridge.js +0 -25
- package/dist/client/auth/sessionManager.js +0 -437
- package/dist/client/auth/tokenStore.js +0 -799
- package/dist/client/client/aiSdkAdapter.js +0 -487
- package/dist/client/client/auth.js +0 -473
- package/dist/client/client/errors.js +0 -552
- package/dist/client/client/httpClient.js +0 -837
- package/dist/client/client/index.js +0 -172
- package/dist/client/client/interceptors.js +0 -601
- package/dist/client/client/sseClient.js +0 -545
- package/dist/client/client/streamingClient.js +0 -917
- package/dist/client/client/wsClient.js +0 -369
- package/dist/client/config/configManager.js +0 -303
- package/dist/client/config/conversationMemory.js +0 -86
- package/dist/client/config/taskClassificationConfig.js +0 -148
- package/dist/client/constants/contextWindows.js +0 -295
- package/dist/client/constants/enums.js +0 -853
- package/dist/client/constants/index.js +0 -207
- package/dist/client/constants/performance.js +0 -389
- package/dist/client/constants/retry.js +0 -266
- package/dist/client/constants/timeouts.js +0 -182
- package/dist/client/constants/tokens.js +0 -380
- package/dist/client/constants/videoErrors.js +0 -46
- package/dist/client/context/budgetChecker.js +0 -98
- package/dist/client/context/contextCompactor.js +0 -205
- package/dist/client/context/emergencyTruncation.js +0 -88
- package/dist/client/context/errorDetection.js +0 -171
- package/dist/client/context/errors.js +0 -21
- package/dist/client/context/fileTokenBudget.js +0 -127
- package/dist/client/context/prompts/summarizationPrompt.js +0 -117
- package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
- package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
- package/dist/client/context/stages/structuredSummarizer.js +0 -99
- package/dist/client/context/stages/toolOutputPruner.js +0 -52
- package/dist/client/context/summarizationEngine.js +0 -136
- package/dist/client/context/toolOutputLimits.js +0 -78
- package/dist/client/context/toolPairRepair.js +0 -66
- package/dist/client/core/analytics.js +0 -88
- package/dist/client/core/baseProvider.js +0 -1385
- package/dist/client/core/constants.js +0 -140
- package/dist/client/core/conversationMemoryFactory.js +0 -141
- package/dist/client/core/conversationMemoryInitializer.js +0 -128
- package/dist/client/core/conversationMemoryManager.js +0 -344
- package/dist/client/core/dynamicModels.js +0 -358
- package/dist/client/core/evaluation.js +0 -309
- package/dist/client/core/evaluationProviders.js +0 -248
- package/dist/client/core/factory.js +0 -412
- package/dist/client/core/infrastructure/baseError.js +0 -22
- package/dist/client/core/infrastructure/baseFactory.js +0 -54
- package/dist/client/core/infrastructure/baseRegistry.js +0 -53
- package/dist/client/core/infrastructure/index.js +0 -5
- package/dist/client/core/infrastructure/retry.js +0 -20
- package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
- package/dist/client/core/modelConfiguration.js +0 -851
- package/dist/client/core/modules/GenerationHandler.js +0 -588
- package/dist/client/core/modules/MessageBuilder.js +0 -273
- package/dist/client/core/modules/StreamHandler.js +0 -185
- package/dist/client/core/modules/TelemetryHandler.js +0 -203
- package/dist/client/core/modules/ToolsManager.js +0 -499
- package/dist/client/core/modules/Utilities.js +0 -331
- package/dist/client/core/redisConversationMemoryManager.js +0 -1435
- package/dist/client/core/streamAnalytics.js +0 -131
- package/dist/client/evaluation/contextBuilder.js +0 -134
- package/dist/client/evaluation/index.js +0 -61
- package/dist/client/evaluation/prompts.js +0 -73
- package/dist/client/evaluation/ragasEvaluator.js +0 -110
- package/dist/client/evaluation/retryManager.js +0 -78
- package/dist/client/evaluation/scoring.js +0 -61
- package/dist/client/factories/providerFactory.js +0 -166
- package/dist/client/factories/providerRegistry.js +0 -166
- package/dist/client/features/ppt/constants.js +0 -896
- package/dist/client/features/ppt/contentPlanner.js +0 -529
- package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
- package/dist/client/features/ppt/slideGenerator.js +0 -532
- package/dist/client/features/ppt/slideRenderers.js +0 -2383
- package/dist/client/features/ppt/slideTypeInference.js +0 -405
- package/dist/client/features/ppt/types.js +0 -13
- package/dist/client/features/ppt/utils.js +0 -443
- package/dist/client/files/fileReferenceRegistry.js +0 -1543
- package/dist/client/files/fileTools.js +0 -450
- package/dist/client/files/streamingReader.js +0 -321
- package/dist/client/files/types.js +0 -23
- package/dist/client/hitl/hitlErrors.js +0 -54
- package/dist/client/hitl/hitlManager.js +0 -460
- package/dist/client/mcp/agentExposure.js +0 -356
- package/dist/client/mcp/auth/index.js +0 -11
- package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
- package/dist/client/mcp/auth/tokenStorage.js +0 -134
- package/dist/client/mcp/batching/index.js +0 -10
- package/dist/client/mcp/batching/requestBatcher.js +0 -441
- package/dist/client/mcp/caching/index.js +0 -10
- package/dist/client/mcp/caching/toolCache.js +0 -433
- package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
- package/dist/client/mcp/elicitation/index.js +0 -11
- package/dist/client/mcp/elicitation/types.js +0 -10
- package/dist/client/mcp/elicitationProtocol.js +0 -375
- package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
- package/dist/client/mcp/externalServerManager.js +0 -1478
- package/dist/client/mcp/factory.js +0 -161
- package/dist/client/mcp/flexibleToolValidator.js +0 -161
- package/dist/client/mcp/httpRateLimiter.js +0 -391
- package/dist/client/mcp/httpRetryHandler.js +0 -178
- package/dist/client/mcp/index.js +0 -74
- package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
- package/dist/client/mcp/mcpClientFactory.js +0 -708
- package/dist/client/mcp/mcpRegistryClient.js +0 -488
- package/dist/client/mcp/mcpServerBase.js +0 -373
- package/dist/client/mcp/multiServerManager.js +0 -579
- package/dist/client/mcp/registry.js +0 -158
- package/dist/client/mcp/routing/index.js +0 -10
- package/dist/client/mcp/routing/toolRouter.js +0 -416
- package/dist/client/mcp/serverCapabilities.js +0 -502
- package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
- package/dist/client/mcp/toolAnnotations.js +0 -239
- package/dist/client/mcp/toolConverter.js +0 -258
- package/dist/client/mcp/toolDiscoveryService.js +0 -798
- package/dist/client/mcp/toolIntegration.js +0 -334
- package/dist/client/mcp/toolRegistry.js +0 -729
- package/dist/client/memory/hippocampusInitializer.js +0 -19
- package/dist/client/memory/memoryRetrievalTools.js +0 -166
- package/dist/client/middleware/builtin/analytics.js +0 -132
- package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
- package/dist/client/middleware/builtin/guardrails.js +0 -109
- package/dist/client/middleware/builtin/lifecycle.js +0 -168
- package/dist/client/middleware/factory.js +0 -327
- package/dist/client/middleware/registry.js +0 -295
- package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
- package/dist/client/models/anthropicModels.js +0 -527
- package/dist/client/neurolink.js +0 -8233
- package/dist/client/observability/exporterRegistry.js +0 -413
- package/dist/client/observability/exporters/arizeExporter.js +0 -138
- package/dist/client/observability/exporters/baseExporter.js +0 -190
- package/dist/client/observability/exporters/braintrustExporter.js +0 -154
- package/dist/client/observability/exporters/datadogExporter.js +0 -196
- package/dist/client/observability/exporters/laminarExporter.js +0 -302
- package/dist/client/observability/exporters/langfuseExporter.js +0 -209
- package/dist/client/observability/exporters/langsmithExporter.js +0 -143
- package/dist/client/observability/exporters/otelExporter.js +0 -164
- package/dist/client/observability/exporters/posthogExporter.js +0 -287
- package/dist/client/observability/exporters/sentryExporter.js +0 -165
- package/dist/client/observability/index.js +0 -31
- package/dist/client/observability/metricsAggregator.js +0 -556
- package/dist/client/observability/otelBridge.js +0 -131
- package/dist/client/observability/retryPolicy.js +0 -383
- package/dist/client/observability/sampling/samplers.js +0 -216
- package/dist/client/observability/spanProcessor.js +0 -303
- package/dist/client/observability/tokenTracker.js +0 -413
- package/dist/client/observability/types/exporterTypes.js +0 -5
- package/dist/client/observability/types/index.js +0 -4
- package/dist/client/observability/types/spanTypes.js +0 -92
- package/dist/client/observability/utils/safeMetadata.js +0 -25
- package/dist/client/observability/utils/spanSerializer.js +0 -292
- package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
- package/dist/client/processors/base/BaseFileProcessor.js +0 -614
- package/dist/client/processors/base/types.js +0 -82
- package/dist/client/processors/config/fileTypes.js +0 -520
- package/dist/client/processors/config/index.js +0 -92
- package/dist/client/processors/config/languageMap.js +0 -410
- package/dist/client/processors/config/mimeTypes.js +0 -363
- package/dist/client/processors/config/sizeLimits.js +0 -258
- package/dist/client/processors/document/ExcelProcessor.js +0 -590
- package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
- package/dist/client/processors/document/PptxProcessor.js +0 -157
- package/dist/client/processors/document/RtfProcessor.js +0 -361
- package/dist/client/processors/document/WordProcessor.js +0 -353
- package/dist/client/processors/errors/FileErrorCode.js +0 -255
- package/dist/client/processors/errors/errorHelpers.js +0 -386
- package/dist/client/processors/errors/errorSerializer.js +0 -507
- package/dist/client/processors/errors/index.js +0 -49
- package/dist/client/processors/markup/SvgProcessor.js +0 -240
- package/dist/client/processors/media/AudioProcessor.js +0 -707
- package/dist/client/processors/media/VideoProcessor.js +0 -1045
- package/dist/client/providers/amazonBedrock.js +0 -1512
- package/dist/client/providers/amazonSagemaker.js +0 -162
- package/dist/client/providers/anthropic.js +0 -831
- package/dist/client/providers/azureOpenai.js +0 -143
- package/dist/client/providers/googleAiStudio.js +0 -1200
- package/dist/client/providers/googleNativeGemini3.js +0 -543
- package/dist/client/providers/googleVertex.js +0 -2936
- package/dist/client/providers/huggingFace.js +0 -315
- package/dist/client/providers/litellm.js +0 -488
- package/dist/client/providers/mistral.js +0 -157
- package/dist/client/providers/ollama.js +0 -1579
- package/dist/client/providers/openAI.js +0 -627
- package/dist/client/providers/openRouter.js +0 -543
- package/dist/client/providers/openaiCompatible.js +0 -290
- package/dist/client/providers/providerTypeUtils.js +0 -46
- package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
- package/dist/client/providers/sagemaker/client.js +0 -472
- package/dist/client/providers/sagemaker/config.js +0 -317
- package/dist/client/providers/sagemaker/detection.js +0 -606
- package/dist/client/providers/sagemaker/error-constants.js +0 -227
- package/dist/client/providers/sagemaker/errors.js +0 -299
- package/dist/client/providers/sagemaker/language-model.js +0 -775
- package/dist/client/providers/sagemaker/parsers.js +0 -634
- package/dist/client/providers/sagemaker/streaming.js +0 -331
- package/dist/client/providers/sagemaker/structured-parser.js +0 -625
- package/dist/client/proxy/accountQuota.js +0 -162
- package/dist/client/proxy/claudeFormat.js +0 -595
- package/dist/client/proxy/modelRouter.js +0 -29
- package/dist/client/proxy/oauthFetch.js +0 -367
- package/dist/client/proxy/proxyFetch.js +0 -586
- package/dist/client/proxy/requestLogger.js +0 -207
- package/dist/client/proxy/tokenRefresh.js +0 -124
- package/dist/client/proxy/usageStats.js +0 -74
- package/dist/client/proxy/utils/noProxyUtils.js +0 -149
- package/dist/client/rag/ChunkerFactory.js +0 -320
- package/dist/client/rag/ChunkerRegistry.js +0 -421
- package/dist/client/rag/chunkers/BaseChunker.js +0 -143
- package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
- package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
- package/dist/client/rag/chunkers/JSONChunker.js +0 -68
- package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
- package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
- package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
- package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
- package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
- package/dist/client/rag/chunkers/TokenChunker.js +0 -61
- package/dist/client/rag/chunkers/index.js +0 -15
- package/dist/client/rag/chunking/characterChunker.js +0 -142
- package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
- package/dist/client/rag/chunking/htmlChunker.js +0 -247
- package/dist/client/rag/chunking/index.js +0 -17
- package/dist/client/rag/chunking/jsonChunker.js +0 -281
- package/dist/client/rag/chunking/latexChunker.js +0 -251
- package/dist/client/rag/chunking/markdownChunker.js +0 -373
- package/dist/client/rag/chunking/recursiveChunker.js +0 -148
- package/dist/client/rag/chunking/semanticChunker.js +0 -306
- package/dist/client/rag/chunking/sentenceChunker.js +0 -230
- package/dist/client/rag/chunking/tokenChunker.js +0 -183
- package/dist/client/rag/document/MDocument.js +0 -392
- package/dist/client/rag/document/index.js +0 -5
- package/dist/client/rag/document/loaders.js +0 -500
- package/dist/client/rag/errors/RAGError.js +0 -274
- package/dist/client/rag/errors/index.js +0 -6
- package/dist/client/rag/graphRag/graphRAG.js +0 -401
- package/dist/client/rag/graphRag/index.js +0 -4
- package/dist/client/rag/index.js +0 -141
- package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
- package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
- package/dist/client/rag/metadata/index.js +0 -9
- package/dist/client/rag/metadata/metadataExtractor.js +0 -280
- package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
- package/dist/client/rag/pipeline/contextAssembly.js +0 -341
- package/dist/client/rag/pipeline/index.js +0 -5
- package/dist/client/rag/ragIntegration.js +0 -321
- package/dist/client/rag/reranker/RerankerFactory.js +0 -430
- package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
- package/dist/client/rag/reranker/index.js +0 -9
- package/dist/client/rag/reranker/reranker.js +0 -277
- package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
- package/dist/client/rag/resilience/RetryHandler.js +0 -304
- package/dist/client/rag/resilience/index.js +0 -7
- package/dist/client/rag/retrieval/hybridSearch.js +0 -335
- package/dist/client/rag/retrieval/index.js +0 -5
- package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
- package/dist/client/rag/types.js +0 -8
- package/dist/client/sdk/toolRegistration.js +0 -377
- package/dist/client/server/abstract/baseServerAdapter.js +0 -575
- package/dist/client/server/adapters/expressAdapter.js +0 -486
- package/dist/client/server/adapters/fastifyAdapter.js +0 -472
- package/dist/client/server/adapters/honoAdapter.js +0 -632
- package/dist/client/server/adapters/koaAdapter.js +0 -510
- package/dist/client/server/errors.js +0 -486
- package/dist/client/server/factory/serverAdapterFactory.js +0 -160
- package/dist/client/server/index.js +0 -108
- package/dist/client/server/middleware/abortSignal.js +0 -111
- package/dist/client/server/middleware/auth.js +0 -388
- package/dist/client/server/middleware/cache.js +0 -359
- package/dist/client/server/middleware/common.js +0 -281
- package/dist/client/server/middleware/deprecation.js +0 -190
- package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
- package/dist/client/server/middleware/rateLimit.js +0 -227
- package/dist/client/server/middleware/validation.js +0 -388
- package/dist/client/server/openapi/generator.js +0 -398
- package/dist/client/server/openapi/index.js +0 -36
- package/dist/client/server/openapi/schemas.js +0 -695
- package/dist/client/server/openapi/templates.js +0 -374
- package/dist/client/server/routes/agentRoutes.js +0 -189
- package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
- package/dist/client/server/routes/healthRoutes.js +0 -187
- package/dist/client/server/routes/index.js +0 -57
- package/dist/client/server/routes/mcpRoutes.js +0 -342
- package/dist/client/server/routes/memoryRoutes.js +0 -350
- package/dist/client/server/routes/openApiRoutes.js +0 -126
- package/dist/client/server/routes/toolRoutes.js +0 -199
- package/dist/client/server/streaming/dataStream.js +0 -486
- package/dist/client/server/streaming/index.js +0 -11
- package/dist/client/server/types.js +0 -67
- package/dist/client/server/utils/redaction.js +0 -334
- package/dist/client/server/utils/validation.js +0 -243
- package/dist/client/server/websocket/WebSocketHandler.js +0 -383
- package/dist/client/server/websocket/index.js +0 -4
- package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
- package/dist/client/telemetry/attributes.js +0 -100
- package/dist/client/telemetry/index.js +0 -26
- package/dist/client/telemetry/telemetryService.js +0 -308
- package/dist/client/telemetry/tracers.js +0 -17
- package/dist/client/telemetry/withSpan.js +0 -34
- package/dist/client/types/actionTypes.js +0 -6
- package/dist/client/types/analytics.js +0 -5
- package/dist/client/types/authTypes.js +0 -9
- package/dist/client/types/circuitBreakerErrors.js +0 -34
- package/dist/client/types/cli.js +0 -21
- package/dist/client/types/clientTypes.js +0 -10
- package/dist/client/types/common.js +0 -51
- package/dist/client/types/configTypes.js +0 -49
- package/dist/client/types/content.js +0 -19
- package/dist/client/types/contextTypes.js +0 -400
- package/dist/client/types/conversation.js +0 -47
- package/dist/client/types/conversationMemoryInterface.js +0 -6
- package/dist/client/types/domainTypes.js +0 -5
- package/dist/client/types/errors.js +0 -167
- package/dist/client/types/evaluation.js +0 -5
- package/dist/client/types/evaluationProviders.js +0 -5
- package/dist/client/types/evaluationTypes.js +0 -1
- package/dist/client/types/externalMcp.js +0 -6
- package/dist/client/types/fileReferenceTypes.js +0 -8
- package/dist/client/types/fileTypes.js +0 -4
- package/dist/client/types/generateTypes.js +0 -1
- package/dist/client/types/guardrails.js +0 -1
- package/dist/client/types/hitlTypes.js +0 -8
- package/dist/client/types/index.js +0 -57
- package/dist/client/types/mcpTypes.js +0 -5
- package/dist/client/types/middlewareTypes.js +0 -1
- package/dist/client/types/modelTypes.js +0 -30
- package/dist/client/types/multimodal.js +0 -135
- package/dist/client/types/observability.js +0 -6
- package/dist/client/types/pptTypes.js +0 -82
- package/dist/client/types/providers.js +0 -111
- package/dist/client/types/proxyTypes.js +0 -16
- package/dist/client/types/ragTypes.js +0 -7
- package/dist/client/types/sdkTypes.js +0 -8
- package/dist/client/types/serviceTypes.js +0 -5
- package/dist/client/types/streamTypes.js +0 -1
- package/dist/client/types/subscriptionTypes.js +0 -9
- package/dist/client/types/taskClassificationTypes.js +0 -5
- package/dist/client/types/tools.js +0 -24
- package/dist/client/types/ttsTypes.js +0 -57
- package/dist/client/types/typeAliases.js +0 -48
- package/dist/client/types/utilities.js +0 -4
- package/dist/client/types/workflowTypes.js +0 -30
- package/dist/client/utils/async/withTimeout.js +0 -98
- package/dist/client/utils/asyncMutex.js +0 -60
- package/dist/client/utils/conversationMemory.js +0 -431
- package/dist/client/utils/csvProcessor.js +0 -846
- package/dist/client/utils/errorHandling.js +0 -936
- package/dist/client/utils/evaluationUtils.js +0 -131
- package/dist/client/utils/factoryProcessing.js +0 -589
- package/dist/client/utils/fileDetector.js +0 -2161
- package/dist/client/utils/imageCache.js +0 -376
- package/dist/client/utils/imageProcessor.js +0 -704
- package/dist/client/utils/logger.js +0 -491
- package/dist/client/utils/mcpDefaults.js +0 -134
- package/dist/client/utils/messageBuilder.js +0 -1653
- package/dist/client/utils/modelAliasResolver.js +0 -54
- package/dist/client/utils/modelDetection.js +0 -80
- package/dist/client/utils/modelRouter.js +0 -292
- package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
- package/dist/client/utils/observabilityHelpers.js +0 -47
- package/dist/client/utils/parameterValidation.js +0 -966
- package/dist/client/utils/pdfProcessor.js +0 -410
- package/dist/client/utils/performance.js +0 -222
- package/dist/client/utils/pricing.js +0 -340
- package/dist/client/utils/promptRedaction.js +0 -62
- package/dist/client/utils/providerConfig.js +0 -1009
- package/dist/client/utils/providerHealth.js +0 -1237
- package/dist/client/utils/providerRetry.js +0 -112
- package/dist/client/utils/providerUtils.js +0 -434
- package/dist/client/utils/rateLimiter.js +0 -200
- package/dist/client/utils/redis.js +0 -368
- package/dist/client/utils/retryHandler.js +0 -269
- package/dist/client/utils/retryability.js +0 -22
- package/dist/client/utils/sanitizers/svg.js +0 -481
- package/dist/client/utils/schemaConversion.js +0 -255
- package/dist/client/utils/taskClassificationUtils.js +0 -149
- package/dist/client/utils/taskClassifier.js +0 -94
- package/dist/client/utils/thinkingConfig.js +0 -104
- package/dist/client/utils/timeout.js +0 -359
- package/dist/client/utils/tokenEstimation.js +0 -142
- package/dist/client/utils/tokenLimits.js +0 -125
- package/dist/client/utils/tokenUtils.js +0 -239
- package/dist/client/utils/toolUtils.js +0 -75
- package/dist/client/utils/transformationUtils.js +0 -554
- package/dist/client/utils/ttsProcessor.js +0 -286
- package/dist/client/utils/typeUtils.js +0 -97
- package/dist/client/utils/videoAnalysisProcessor.js +0 -67
- package/dist/client/workflow/config.js +0 -398
- package/dist/client/workflow/core/ensembleExecutor.js +0 -407
- package/dist/client/workflow/core/judgeScorer.js +0 -544
- package/dist/client/workflow/core/responseConditioner.js +0 -225
- package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
- package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
- package/dist/client/workflow/core/types/index.js +0 -7
- package/dist/client/workflow/core/types/judgeTypes.js +0 -7
- package/dist/client/workflow/core/types/layerTypes.js +0 -7
- package/dist/client/workflow/core/types/registryTypes.js +0 -7
- package/dist/client/workflow/core/workflowRegistry.js +0 -304
- package/dist/client/workflow/core/workflowRunner.js +0 -586
- package/dist/client/workflow/index.js +0 -50
- package/dist/client/workflow/types.js +0 -9
- package/dist/client/workflow/utils/types/index.js +0 -7
- package/dist/client/workflow/utils/workflowMetrics.js +0 -311
- package/dist/client/workflow/utils/workflowValidation.js +0 -420
- package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
- package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
- package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
- package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
- /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
|
@@ -1,427 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Circuit Breaker
|
|
3
|
-
* Implements circuit breaker pattern for external MCP operations
|
|
4
|
-
* Provides fault tolerance and prevents cascading failures
|
|
5
|
-
*/
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
|
-
import { trace } from "@opentelemetry/api";
|
|
8
|
-
import { mcpLogger } from "../utils/logger.js";
|
|
9
|
-
import { CircuitBreakerOpenError } from "../types/circuitBreakerErrors.js";
|
|
10
|
-
// Re-export CircuitBreakerOpenError from shared types to preserve public API
|
|
11
|
-
export { CircuitBreakerOpenError } from "../types/circuitBreakerErrors.js";
|
|
12
|
-
/**
|
|
13
|
-
* Default operation timeout for circuit breaker protected operations.
|
|
14
|
-
* Configurable via MCP_OPERATION_TIMEOUT env var (in milliseconds).
|
|
15
|
-
* Increased from 30s to 60s to accommodate MCP server startup latency,
|
|
16
|
-
* especially when multiple servers start concurrently.
|
|
17
|
-
*/
|
|
18
|
-
const DEFAULT_OPERATION_TIMEOUT = Math.max(10000, Number(process.env.MCP_OPERATION_TIMEOUT) || 60000);
|
|
19
|
-
/**
|
|
20
|
-
* MCPCircuitBreaker
|
|
21
|
-
* Implements circuit breaker pattern for fault tolerance
|
|
22
|
-
*/
|
|
23
|
-
export class MCPCircuitBreaker extends EventEmitter {
|
|
24
|
-
name;
|
|
25
|
-
state = "closed";
|
|
26
|
-
config;
|
|
27
|
-
callHistory = [];
|
|
28
|
-
lastFailureTime = 0;
|
|
29
|
-
halfOpenCalls = 0;
|
|
30
|
-
lastStateChange = new Date();
|
|
31
|
-
// Store the cleanup timer reference for proper cleanup
|
|
32
|
-
cleanupTimer;
|
|
33
|
-
constructor(name, config = {}) {
|
|
34
|
-
super();
|
|
35
|
-
this.name = name;
|
|
36
|
-
// Set default configuration
|
|
37
|
-
this.config = {
|
|
38
|
-
failureThreshold: config.failureThreshold ?? 5,
|
|
39
|
-
resetTimeout: config.resetTimeout ?? 60000,
|
|
40
|
-
halfOpenMaxCalls: config.halfOpenMaxCalls ?? 3,
|
|
41
|
-
operationTimeout: config.operationTimeout ?? DEFAULT_OPERATION_TIMEOUT,
|
|
42
|
-
minimumCallsBeforeCalculation: config.minimumCallsBeforeCalculation ?? 10,
|
|
43
|
-
statisticsWindowSize: config.statisticsWindowSize ?? 300000, // 5 minutes
|
|
44
|
-
};
|
|
45
|
-
// Clean up old call records periodically - now storing the timer reference
|
|
46
|
-
this.cleanupTimer = setInterval(() => this.cleanupCallHistory(), 60000);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Execute an operation with circuit breaker protection
|
|
50
|
-
*/
|
|
51
|
-
async execute(operation) {
|
|
52
|
-
const startTime = Date.now();
|
|
53
|
-
try {
|
|
54
|
-
// Check if circuit is open
|
|
55
|
-
if (this.state === "open") {
|
|
56
|
-
const retryAfterMs = this.config.resetTimeout - (Date.now() - this.lastFailureTime);
|
|
57
|
-
if (retryAfterMs > 0) {
|
|
58
|
-
throw new CircuitBreakerOpenError({
|
|
59
|
-
breakerName: this.name,
|
|
60
|
-
retryAfter: new Date(this.lastFailureTime + this.config.resetTimeout),
|
|
61
|
-
retryAfterMs,
|
|
62
|
-
breakerState: "open",
|
|
63
|
-
failureCount: this.getStats().failedCalls,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
// Transition to half-open
|
|
67
|
-
this.changeState("half-open", "Reset timeout reached");
|
|
68
|
-
}
|
|
69
|
-
// Check half-open call limit
|
|
70
|
-
if (this.state === "half-open" &&
|
|
71
|
-
this.halfOpenCalls >= this.config.halfOpenMaxCalls) {
|
|
72
|
-
// Half-open call limit exceeded — revert to open with fresh cooldown
|
|
73
|
-
this.lastFailureTime = Date.now();
|
|
74
|
-
this.changeState("open", "Half-open call limit reached, reverting to open");
|
|
75
|
-
throw new CircuitBreakerOpenError({
|
|
76
|
-
breakerName: this.name,
|
|
77
|
-
retryAfter: new Date(this.lastFailureTime + this.config.resetTimeout),
|
|
78
|
-
retryAfterMs: this.config.resetTimeout,
|
|
79
|
-
breakerState: "open",
|
|
80
|
-
failureCount: this.getStats().failedCalls,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
// NLK-GAP-009: Record half-open test event when executing in half-open state
|
|
84
|
-
if (this.state === "half-open") {
|
|
85
|
-
const activeSpan = trace.getActiveSpan();
|
|
86
|
-
if (activeSpan) {
|
|
87
|
-
activeSpan.addEvent("circuit.half_open_test", {
|
|
88
|
-
"circuit.name": this.name,
|
|
89
|
-
"circuit.half_open_call": this.halfOpenCalls + 1,
|
|
90
|
-
"circuit.half_open_max_calls": this.config.halfOpenMaxCalls,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Execute operation with timeout
|
|
95
|
-
const result = await Promise.race([
|
|
96
|
-
operation(),
|
|
97
|
-
this.timeoutPromise(this.config.operationTimeout),
|
|
98
|
-
]);
|
|
99
|
-
// Record successful call
|
|
100
|
-
this.recordCall(true, Date.now() - startTime);
|
|
101
|
-
// Handle half-open success
|
|
102
|
-
if (this.state === "half-open") {
|
|
103
|
-
this.halfOpenCalls++;
|
|
104
|
-
// If enough successful calls in half-open, close the circuit
|
|
105
|
-
if (this.halfOpenCalls >= this.config.halfOpenMaxCalls) {
|
|
106
|
-
this.changeState("closed", "Half-open test successful");
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return result;
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
// Record failed call
|
|
113
|
-
const duration = Date.now() - startTime;
|
|
114
|
-
this.recordCall(false, duration);
|
|
115
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
116
|
-
// Emit failure event
|
|
117
|
-
this.emit("callFailure", {
|
|
118
|
-
error: errorMessage,
|
|
119
|
-
duration,
|
|
120
|
-
timestamp: new Date(),
|
|
121
|
-
});
|
|
122
|
-
// Handle state transitions on failure
|
|
123
|
-
if (this.state === "half-open") {
|
|
124
|
-
// Failure in half-open immediately opens circuit
|
|
125
|
-
this.changeState("open", `Half-open test failed: ${errorMessage}`);
|
|
126
|
-
}
|
|
127
|
-
else if (this.state === "closed") {
|
|
128
|
-
// Check if we should open the circuit
|
|
129
|
-
this.checkFailureThreshold();
|
|
130
|
-
}
|
|
131
|
-
throw error;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Record a call in the history
|
|
136
|
-
*/
|
|
137
|
-
recordCall(success, duration) {
|
|
138
|
-
const now = Date.now();
|
|
139
|
-
this.callHistory.push({
|
|
140
|
-
timestamp: now,
|
|
141
|
-
success,
|
|
142
|
-
duration,
|
|
143
|
-
});
|
|
144
|
-
// Emit success event
|
|
145
|
-
if (success) {
|
|
146
|
-
this.emit("callSuccess", {
|
|
147
|
-
duration,
|
|
148
|
-
timestamp: new Date(),
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
// Update failure time
|
|
152
|
-
if (!success) {
|
|
153
|
-
this.lastFailureTime = now;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Check if failure threshold is exceeded
|
|
158
|
-
*/
|
|
159
|
-
checkFailureThreshold() {
|
|
160
|
-
const windowStart = Date.now() - this.config.statisticsWindowSize;
|
|
161
|
-
const windowCalls = this.callHistory.filter((call) => call.timestamp >= windowStart);
|
|
162
|
-
// Need minimum calls before calculating failure rate
|
|
163
|
-
if (windowCalls.length < this.config.minimumCallsBeforeCalculation) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
const failedCalls = windowCalls.filter((call) => !call.success).length;
|
|
167
|
-
const failureRate = failedCalls / windowCalls.length;
|
|
168
|
-
mcpLogger.debug(`[CircuitBreaker:${this.name}] Failure rate: ${(failureRate * 100).toFixed(1)}% (${failedCalls}/${windowCalls.length})`);
|
|
169
|
-
// Open circuit if failure rate exceeds threshold
|
|
170
|
-
if (failedCalls >= this.config.failureThreshold) {
|
|
171
|
-
this.changeState("open", `Failure threshold exceeded: ${failedCalls} failures`);
|
|
172
|
-
this.emit("circuitOpen", {
|
|
173
|
-
failureRate,
|
|
174
|
-
totalCalls: windowCalls.length,
|
|
175
|
-
timestamp: new Date(),
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Change circuit breaker state
|
|
181
|
-
*/
|
|
182
|
-
changeState(newState, reason) {
|
|
183
|
-
const oldState = this.state;
|
|
184
|
-
this.state = newState;
|
|
185
|
-
this.lastStateChange = new Date();
|
|
186
|
-
// NLK-GAP-009: Record state transition on active OTel span
|
|
187
|
-
const activeSpan = trace.getActiveSpan();
|
|
188
|
-
if (activeSpan) {
|
|
189
|
-
activeSpan.addEvent("circuit.state_change", {
|
|
190
|
-
"circuit.name": this.name,
|
|
191
|
-
"circuit.from_state": oldState,
|
|
192
|
-
"circuit.to_state": newState,
|
|
193
|
-
"circuit.reason": reason.slice(0, 128),
|
|
194
|
-
"circuit.failure_count": this.callHistory.filter((c) => !c.success)
|
|
195
|
-
.length,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
// Reset counters based on state
|
|
199
|
-
if (newState === "half-open") {
|
|
200
|
-
this.halfOpenCalls = 0;
|
|
201
|
-
this.emit("circuitHalfOpen", {
|
|
202
|
-
timestamp: new Date(),
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
else if (newState === "closed") {
|
|
206
|
-
this.halfOpenCalls = 0;
|
|
207
|
-
this.emit("circuitClosed", {
|
|
208
|
-
timestamp: new Date(),
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
mcpLogger.info(`[CircuitBreaker:${this.name}] State changed: ${oldState} -> ${newState} (${reason})`);
|
|
212
|
-
// Emit state change event
|
|
213
|
-
this.emit("stateChange", {
|
|
214
|
-
oldState,
|
|
215
|
-
newState,
|
|
216
|
-
reason,
|
|
217
|
-
timestamp: new Date(),
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Create a timeout promise
|
|
222
|
-
*/
|
|
223
|
-
timeoutPromise(timeout) {
|
|
224
|
-
return new Promise((_, reject) => {
|
|
225
|
-
setTimeout(() => {
|
|
226
|
-
reject(new Error(`Operation timed out after ${timeout}ms`));
|
|
227
|
-
}, timeout);
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Clean up old call records
|
|
232
|
-
*/
|
|
233
|
-
cleanupCallHistory() {
|
|
234
|
-
const cutoffTime = Date.now() - this.config.statisticsWindowSize;
|
|
235
|
-
const originalLength = this.callHistory.length;
|
|
236
|
-
this.callHistory = this.callHistory.filter((call) => call.timestamp >= cutoffTime);
|
|
237
|
-
const removed = originalLength - this.callHistory.length;
|
|
238
|
-
if (removed > 0) {
|
|
239
|
-
mcpLogger.debug(`[CircuitBreaker:${this.name}] Cleaned up ${removed} old call records`);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Get current statistics
|
|
244
|
-
*/
|
|
245
|
-
getStats() {
|
|
246
|
-
const windowStart = Date.now() - this.config.statisticsWindowSize;
|
|
247
|
-
const windowCalls = this.callHistory.filter((call) => call.timestamp >= windowStart);
|
|
248
|
-
const successfulCalls = windowCalls.filter((call) => call.success).length;
|
|
249
|
-
const failedCalls = windowCalls.length - successfulCalls;
|
|
250
|
-
const failureRate = windowCalls.length > 0 ? failedCalls / windowCalls.length : 0;
|
|
251
|
-
return {
|
|
252
|
-
state: this.state,
|
|
253
|
-
totalCalls: this.callHistory.length,
|
|
254
|
-
successfulCalls: this.callHistory.filter((call) => call.success).length,
|
|
255
|
-
failedCalls: this.callHistory.filter((call) => !call.success).length,
|
|
256
|
-
failureRate,
|
|
257
|
-
windowCalls: windowCalls.length,
|
|
258
|
-
lastStateChange: this.lastStateChange,
|
|
259
|
-
nextRetryTime: this.state === "open"
|
|
260
|
-
? new Date(this.lastFailureTime + this.config.resetTimeout)
|
|
261
|
-
: undefined,
|
|
262
|
-
halfOpenCalls: this.halfOpenCalls,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Manually reset the circuit breaker
|
|
267
|
-
*/
|
|
268
|
-
reset() {
|
|
269
|
-
this.changeState("closed", "Manual reset");
|
|
270
|
-
this.callHistory = [];
|
|
271
|
-
this.lastFailureTime = 0;
|
|
272
|
-
this.halfOpenCalls = 0;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Force open the circuit breaker
|
|
276
|
-
*/
|
|
277
|
-
forceOpen(reason = "Manual force open") {
|
|
278
|
-
this.changeState("open", reason);
|
|
279
|
-
this.lastFailureTime = Date.now();
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Get circuit breaker name
|
|
283
|
-
*/
|
|
284
|
-
getName() {
|
|
285
|
-
return this.name;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Check if circuit is open
|
|
289
|
-
*/
|
|
290
|
-
isOpen() {
|
|
291
|
-
return this.state === "open";
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Check if circuit is closed
|
|
295
|
-
*/
|
|
296
|
-
isClosed() {
|
|
297
|
-
return this.state === "closed";
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Check if circuit is half-open
|
|
301
|
-
*/
|
|
302
|
-
isHalfOpen() {
|
|
303
|
-
return this.state === "half-open";
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Destroy the circuit breaker and clean up resources
|
|
307
|
-
* This method should be called when the circuit breaker is no longer needed
|
|
308
|
-
* to prevent memory leaks from the cleanup timer
|
|
309
|
-
*/
|
|
310
|
-
destroy() {
|
|
311
|
-
// Clear the interval timer to prevent memory leaks
|
|
312
|
-
if (this.cleanupTimer) {
|
|
313
|
-
clearInterval(this.cleanupTimer);
|
|
314
|
-
this.cleanupTimer = undefined;
|
|
315
|
-
mcpLogger.debug(`[CircuitBreaker:${this.name}] Cleanup timer cleared`);
|
|
316
|
-
}
|
|
317
|
-
// Clear any remaining event listeners
|
|
318
|
-
this.removeAllListeners();
|
|
319
|
-
// Clear call history to free memory
|
|
320
|
-
this.callHistory = [];
|
|
321
|
-
mcpLogger.debug(`[CircuitBreaker:${this.name}] Destroyed and cleaned up`);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Circuit breaker manager for multiple circuit breakers
|
|
326
|
-
*/
|
|
327
|
-
export class CircuitBreakerManager {
|
|
328
|
-
breakers = new Map();
|
|
329
|
-
/**
|
|
330
|
-
* Get or create a circuit breaker
|
|
331
|
-
*/
|
|
332
|
-
getBreaker(name, config) {
|
|
333
|
-
if (!this.breakers.has(name)) {
|
|
334
|
-
const breaker = new MCPCircuitBreaker(name, config);
|
|
335
|
-
this.breakers.set(name, breaker);
|
|
336
|
-
mcpLogger.debug(`[CircuitBreakerManager] Created circuit breaker: ${name}`);
|
|
337
|
-
}
|
|
338
|
-
const breaker = this.breakers.get(name);
|
|
339
|
-
if (!breaker) {
|
|
340
|
-
throw new Error(`Circuit breaker ${name} not found after creation`);
|
|
341
|
-
}
|
|
342
|
-
return breaker;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Remove a circuit breaker and clean up its resources
|
|
346
|
-
*/
|
|
347
|
-
removeBreaker(name) {
|
|
348
|
-
const breaker = this.breakers.get(name);
|
|
349
|
-
if (breaker) {
|
|
350
|
-
// Destroy the breaker to clean up its timer and resources
|
|
351
|
-
breaker.destroy();
|
|
352
|
-
this.breakers.delete(name);
|
|
353
|
-
mcpLogger.debug(`[CircuitBreakerManager] Removed and cleaned up circuit breaker: ${name}`);
|
|
354
|
-
return true;
|
|
355
|
-
}
|
|
356
|
-
return false;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Get all circuit breaker names
|
|
360
|
-
*/
|
|
361
|
-
getBreakerNames() {
|
|
362
|
-
return Array.from(this.breakers.keys());
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Get statistics for all circuit breakers
|
|
366
|
-
*/
|
|
367
|
-
getAllStats() {
|
|
368
|
-
const stats = {};
|
|
369
|
-
for (const [name, breaker] of this.breakers) {
|
|
370
|
-
stats[name] = breaker.getStats();
|
|
371
|
-
}
|
|
372
|
-
return stats;
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Reset all circuit breakers
|
|
376
|
-
*/
|
|
377
|
-
resetAll() {
|
|
378
|
-
for (const breaker of this.breakers.values()) {
|
|
379
|
-
breaker.reset();
|
|
380
|
-
}
|
|
381
|
-
mcpLogger.info("[CircuitBreakerManager] Reset all circuit breakers");
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Get health summary
|
|
385
|
-
*/
|
|
386
|
-
getHealthSummary() {
|
|
387
|
-
let closedBreakers = 0;
|
|
388
|
-
let openBreakers = 0;
|
|
389
|
-
let halfOpenBreakers = 0;
|
|
390
|
-
const unhealthyBreakers = [];
|
|
391
|
-
for (const [name, breaker] of this.breakers) {
|
|
392
|
-
const stats = breaker.getStats();
|
|
393
|
-
switch (stats.state) {
|
|
394
|
-
case "closed":
|
|
395
|
-
closedBreakers++;
|
|
396
|
-
break;
|
|
397
|
-
case "open":
|
|
398
|
-
openBreakers++;
|
|
399
|
-
unhealthyBreakers.push(name);
|
|
400
|
-
break;
|
|
401
|
-
case "half-open":
|
|
402
|
-
halfOpenBreakers++;
|
|
403
|
-
break;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
return {
|
|
407
|
-
totalBreakers: this.breakers.size,
|
|
408
|
-
closedBreakers,
|
|
409
|
-
openBreakers,
|
|
410
|
-
halfOpenBreakers,
|
|
411
|
-
unhealthyBreakers,
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Destroy all circuit breakers and clean up their resources
|
|
416
|
-
* This should be called during application shutdown to prevent memory leaks
|
|
417
|
-
*/
|
|
418
|
-
destroyAll() {
|
|
419
|
-
for (const breaker of this.breakers.values()) {
|
|
420
|
-
breaker.destroy();
|
|
421
|
-
}
|
|
422
|
-
this.breakers.clear();
|
|
423
|
-
mcpLogger.info("[CircuitBreakerManager] Destroyed all circuit breakers");
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
// Global circuit breaker manager instance
|
|
427
|
-
export const globalCircuitBreakerManager = new CircuitBreakerManager();
|