@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,386 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File Processing Error Helpers
|
|
3
|
-
*
|
|
4
|
-
* Utilities for creating consistent, user-friendly file processing errors.
|
|
5
|
-
* Provides factory functions for structured errors, retry determination logic,
|
|
6
|
-
* and HTTP status extraction.
|
|
7
|
-
*
|
|
8
|
-
* @module processors/errors
|
|
9
|
-
*/
|
|
10
|
-
import { isAbortError } from "../../utils/errorHandling.js";
|
|
11
|
-
import { ERROR_MESSAGES, FileErrorCode, } from "./FileErrorCode.js";
|
|
12
|
-
/**
|
|
13
|
-
* Create a structured file processing error with user-friendly messaging.
|
|
14
|
-
*
|
|
15
|
-
* @param code - The error code from FileErrorCode enum
|
|
16
|
-
* @param details - Additional context for the error (e.g., file size, format)
|
|
17
|
-
* @param originalError - The original error that caused this failure
|
|
18
|
-
* @returns A structured FileProcessingError with user-friendly messaging
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const error = createFileError(FileErrorCode.FILE_TOO_LARGE, {
|
|
23
|
-
* sizeMB: "15.5",
|
|
24
|
-
* maxMB: "10",
|
|
25
|
-
* filename: "large-document.pdf",
|
|
26
|
-
* });
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export function createFileError(code, details, originalError) {
|
|
30
|
-
const template = ERROR_MESSAGES[code];
|
|
31
|
-
const result = {
|
|
32
|
-
code,
|
|
33
|
-
message: template.message,
|
|
34
|
-
userMessage: template.userMessage,
|
|
35
|
-
suggestedAction: template.suggestedAction,
|
|
36
|
-
retryable: template.retryable,
|
|
37
|
-
};
|
|
38
|
-
// Add details if provided
|
|
39
|
-
if (details && Object.keys(details).length > 0) {
|
|
40
|
-
result.details = details;
|
|
41
|
-
}
|
|
42
|
-
// Add technical details from original error
|
|
43
|
-
const technicalDetails = originalError?.message || details?.technicalDetails;
|
|
44
|
-
if (technicalDetails) {
|
|
45
|
-
result.technicalDetails = technicalDetails;
|
|
46
|
-
}
|
|
47
|
-
if (originalError) {
|
|
48
|
-
result.originalError = originalError;
|
|
49
|
-
}
|
|
50
|
-
return result;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Create a file processing error with custom messages.
|
|
54
|
-
* Useful when you need to override the default messages with context-specific ones.
|
|
55
|
-
*
|
|
56
|
-
* @param code - The error code from FileErrorCode enum
|
|
57
|
-
* @param customMessage - Custom technical message
|
|
58
|
-
* @param customUserMessage - Custom user-friendly message
|
|
59
|
-
* @param details - Additional context
|
|
60
|
-
* @returns A structured FileProcessingError
|
|
61
|
-
*/
|
|
62
|
-
export function createCustomFileError(code, customMessage, customUserMessage, details) {
|
|
63
|
-
const template = ERROR_MESSAGES[code];
|
|
64
|
-
return {
|
|
65
|
-
code,
|
|
66
|
-
message: customMessage,
|
|
67
|
-
userMessage: customUserMessage,
|
|
68
|
-
suggestedAction: template.suggestedAction,
|
|
69
|
-
retryable: template.retryable,
|
|
70
|
-
details,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Extract HTTP status code from various error types.
|
|
75
|
-
*
|
|
76
|
-
* @param error - The error to extract status from
|
|
77
|
-
* @returns The HTTP status code if found, null otherwise
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```typescript
|
|
81
|
-
* const status = extractHttpStatus(error);
|
|
82
|
-
* if (status === 404) {
|
|
83
|
-
* // Handle not found
|
|
84
|
-
* }
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export function extractHttpStatus(error) {
|
|
88
|
-
if (!error) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
// Check for Error objects with HTTP status in message
|
|
92
|
-
if (error instanceof Error) {
|
|
93
|
-
// Match patterns like "HTTP 404", "status: 500", "statusCode: 503"
|
|
94
|
-
const patterns = [
|
|
95
|
-
/HTTP\s*(\d{3})/i,
|
|
96
|
-
/status[:\s]+(\d{3})/i,
|
|
97
|
-
/statusCode[:\s]+(\d{3})/i,
|
|
98
|
-
/\b(\d{3})\s+(?:Not Found|Unauthorized|Forbidden|Internal Server Error|Bad Gateway|Service Unavailable|Gateway Timeout)/i,
|
|
99
|
-
];
|
|
100
|
-
for (const pattern of patterns) {
|
|
101
|
-
const match = error.message.match(pattern);
|
|
102
|
-
if (match?.[1]) {
|
|
103
|
-
return parseInt(match[1], 10);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// Check for objects with status or statusCode property
|
|
108
|
-
if (typeof error === "object" && error !== null) {
|
|
109
|
-
const errorObj = error;
|
|
110
|
-
if (typeof errorObj.status === "number") {
|
|
111
|
-
return errorObj.status;
|
|
112
|
-
}
|
|
113
|
-
if (typeof errorObj.statusCode === "number") {
|
|
114
|
-
return errorObj.statusCode;
|
|
115
|
-
}
|
|
116
|
-
if (typeof errorObj.response === "object" && errorObj.response !== null) {
|
|
117
|
-
const response = errorObj.response;
|
|
118
|
-
if (typeof response.status === "number") {
|
|
119
|
-
return response.status;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Determine if an error is retryable based on error type and characteristics.
|
|
127
|
-
* Checks for transient errors like 5xx, network errors, and timeouts.
|
|
128
|
-
*
|
|
129
|
-
* @param error - The error to check
|
|
130
|
-
* @returns true if the error is transient and potentially retryable
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* ```typescript
|
|
134
|
-
* if (isRetryableError(error) && retryCount < maxRetries) {
|
|
135
|
-
* await delay(backoffMs);
|
|
136
|
-
* return retry();
|
|
137
|
-
* }
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
|
-
export function isRetryableError(error) {
|
|
141
|
-
// Check FileProcessingError
|
|
142
|
-
if (isFileProcessingError(error)) {
|
|
143
|
-
return error.retryable ?? false;
|
|
144
|
-
}
|
|
145
|
-
if (error instanceof Error) {
|
|
146
|
-
// User-initiated aborts are NOT retryable
|
|
147
|
-
if (isAbortError(error)) {
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
// Network/timeout errors are retryable
|
|
151
|
-
const retryableNames = ["TimeoutError", "FetchError"];
|
|
152
|
-
if (retryableNames.includes(error.name)) {
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
const message = error.message.toLowerCase();
|
|
156
|
-
// HTTP 5xx server errors are retryable
|
|
157
|
-
if (/http\s*5\d{2}/i.test(error.message)) {
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
// HTTP 429 (rate limiting) is retryable
|
|
161
|
-
if (/http\s*429/i.test(error.message) || message.includes("rate limit")) {
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
// HTTP 408 (request timeout) is retryable
|
|
165
|
-
if (/http\s*408/i.test(error.message)) {
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
// Connection errors are retryable
|
|
169
|
-
const connectionPatterns = [
|
|
170
|
-
"econnreset",
|
|
171
|
-
"etimedout",
|
|
172
|
-
"econnrefused",
|
|
173
|
-
"enotfound",
|
|
174
|
-
"enetunreach",
|
|
175
|
-
"ehostunreach",
|
|
176
|
-
"epipe",
|
|
177
|
-
"socket hang up",
|
|
178
|
-
"network error",
|
|
179
|
-
"connection refused",
|
|
180
|
-
"connection reset",
|
|
181
|
-
"dns lookup failed",
|
|
182
|
-
];
|
|
183
|
-
if (connectionPatterns.some((pattern) => message.includes(pattern))) {
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
// Temporary/transient errors are retryable
|
|
187
|
-
if (message.includes("temporary") || message.includes("try again")) {
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
// Check HTTP status from error object
|
|
192
|
-
const status = extractHttpStatus(error);
|
|
193
|
-
if (status !== null) {
|
|
194
|
-
// 5xx errors (server errors) are retryable
|
|
195
|
-
if (status >= 500 && status < 600) {
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
// 408 (Request Timeout) and 429 (Too Many Requests) are retryable
|
|
199
|
-
if (status === 408 || status === 429) {
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Type guard to check if an error is a FileProcessingError.
|
|
207
|
-
*
|
|
208
|
-
* @param error - The value to check
|
|
209
|
-
* @returns true if error is a FileProcessingError
|
|
210
|
-
*/
|
|
211
|
-
export function isFileProcessingError(error) {
|
|
212
|
-
if (typeof error !== "object" || error === null) {
|
|
213
|
-
return false;
|
|
214
|
-
}
|
|
215
|
-
const e = error;
|
|
216
|
-
return (typeof e.code === "string" &&
|
|
217
|
-
typeof e.message === "string" &&
|
|
218
|
-
typeof e.userMessage === "string" &&
|
|
219
|
-
typeof e.retryable === "boolean");
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Map an error to the appropriate FileErrorCode based on its characteristics.
|
|
223
|
-
*
|
|
224
|
-
* @param error - The error to analyze
|
|
225
|
-
* @returns The most appropriate FileErrorCode
|
|
226
|
-
*/
|
|
227
|
-
export function mapErrorToCode(error) {
|
|
228
|
-
if (!error) {
|
|
229
|
-
return FileErrorCode.UNKNOWN_ERROR;
|
|
230
|
-
}
|
|
231
|
-
// Check HTTP status first
|
|
232
|
-
const status = extractHttpStatus(error);
|
|
233
|
-
if (status !== null) {
|
|
234
|
-
if (status === 401 || status === 403) {
|
|
235
|
-
return FileErrorCode.DOWNLOAD_AUTH_FAILED;
|
|
236
|
-
}
|
|
237
|
-
if (status === 404) {
|
|
238
|
-
return FileErrorCode.FILE_NOT_FOUND;
|
|
239
|
-
}
|
|
240
|
-
if (status === 408) {
|
|
241
|
-
return FileErrorCode.DOWNLOAD_TIMEOUT;
|
|
242
|
-
}
|
|
243
|
-
if (status === 429) {
|
|
244
|
-
return FileErrorCode.RATE_LIMITED;
|
|
245
|
-
}
|
|
246
|
-
if (status >= 500) {
|
|
247
|
-
return FileErrorCode.DOWNLOAD_FAILED;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if (error instanceof Error) {
|
|
251
|
-
const message = error.message.toLowerCase();
|
|
252
|
-
const name = error.name;
|
|
253
|
-
// User-initiated aborts are not timeouts — map to NETWORK_ERROR
|
|
254
|
-
// (no dedicated ABORTED code exists in FileErrorCode)
|
|
255
|
-
if (isAbortError(error)) {
|
|
256
|
-
return FileErrorCode.NETWORK_ERROR;
|
|
257
|
-
}
|
|
258
|
-
// Timeout errors
|
|
259
|
-
if (name === "TimeoutError" || message.includes("timeout")) {
|
|
260
|
-
return FileErrorCode.DOWNLOAD_TIMEOUT;
|
|
261
|
-
}
|
|
262
|
-
// Network errors
|
|
263
|
-
if (message.includes("econnreset") ||
|
|
264
|
-
message.includes("econnrefused") ||
|
|
265
|
-
message.includes("network") ||
|
|
266
|
-
message.includes("socket")) {
|
|
267
|
-
return FileErrorCode.NETWORK_ERROR;
|
|
268
|
-
}
|
|
269
|
-
// Size errors
|
|
270
|
-
if (message.includes("too large") || message.includes("size limit")) {
|
|
271
|
-
return FileErrorCode.FILE_TOO_LARGE;
|
|
272
|
-
}
|
|
273
|
-
// Format/type errors
|
|
274
|
-
if (message.includes("unsupported") || message.includes("not supported")) {
|
|
275
|
-
return FileErrorCode.UNSUPPORTED_TYPE;
|
|
276
|
-
}
|
|
277
|
-
if (message.includes("invalid format") || message.includes("malformed")) {
|
|
278
|
-
return FileErrorCode.INVALID_FORMAT;
|
|
279
|
-
}
|
|
280
|
-
if (message.includes("corrupt")) {
|
|
281
|
-
return FileErrorCode.CORRUPTED_FILE;
|
|
282
|
-
}
|
|
283
|
-
// Parsing errors
|
|
284
|
-
if (message.includes("parse") || message.includes("syntax")) {
|
|
285
|
-
return FileErrorCode.PARSING_FAILED;
|
|
286
|
-
}
|
|
287
|
-
// Encoding errors
|
|
288
|
-
if (message.includes("encoding") ||
|
|
289
|
-
message.includes("utf") ||
|
|
290
|
-
message.includes("decode")) {
|
|
291
|
-
return FileErrorCode.ENCODING_ERROR;
|
|
292
|
-
}
|
|
293
|
-
// Security errors
|
|
294
|
-
if (message.includes("xxe") || message.includes("doctype")) {
|
|
295
|
-
return FileErrorCode.XXE_DETECTED;
|
|
296
|
-
}
|
|
297
|
-
if (message.includes("xss") || message.includes("script")) {
|
|
298
|
-
return FileErrorCode.XSS_DETECTED;
|
|
299
|
-
}
|
|
300
|
-
if (message.includes("zip bomb") || message.includes("compression ratio")) {
|
|
301
|
-
return FileErrorCode.ZIP_BOMB_DETECTED;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
return FileErrorCode.UNKNOWN_ERROR;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Format a file processing error for display to users.
|
|
308
|
-
*
|
|
309
|
-
* @param error - The FileProcessingError to format
|
|
310
|
-
* @returns A formatted string suitable for display
|
|
311
|
-
*/
|
|
312
|
-
export function formatFileError(error) {
|
|
313
|
-
let message = error.userMessage;
|
|
314
|
-
if (error.suggestedAction) {
|
|
315
|
-
message += `\n${error.suggestedAction}`;
|
|
316
|
-
}
|
|
317
|
-
return message;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Create a processing summary from arrays of results.
|
|
321
|
-
*
|
|
322
|
-
* @param totalFiles - Total number of files attempted
|
|
323
|
-
* @param processedFiles - Successfully processed files
|
|
324
|
-
* @param failedFiles - Files that failed to process
|
|
325
|
-
* @param skippedFiles - Files that were skipped
|
|
326
|
-
* @param warnings - Non-fatal warnings
|
|
327
|
-
* @returns A FileProcessingSummary object
|
|
328
|
-
*/
|
|
329
|
-
export function createProcessingSummary(totalFiles, processedFiles = [], failedFiles = [], skippedFiles = [], warnings = []) {
|
|
330
|
-
return {
|
|
331
|
-
totalFiles,
|
|
332
|
-
processedFiles,
|
|
333
|
-
failedFiles,
|
|
334
|
-
skippedFiles,
|
|
335
|
-
warnings,
|
|
336
|
-
};
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Combine multiple processing summaries into one.
|
|
340
|
-
* Useful when processing different file types separately.
|
|
341
|
-
*
|
|
342
|
-
* @param summaries - Array of summaries to combine
|
|
343
|
-
* @returns A combined FileProcessingSummary
|
|
344
|
-
*/
|
|
345
|
-
export function combineSummaries(summaries) {
|
|
346
|
-
return summaries.reduce((combined, summary) => ({
|
|
347
|
-
totalFiles: combined.totalFiles + summary.totalFiles,
|
|
348
|
-
processedFiles: [...combined.processedFiles, ...summary.processedFiles],
|
|
349
|
-
failedFiles: [...combined.failedFiles, ...summary.failedFiles],
|
|
350
|
-
skippedFiles: [...combined.skippedFiles, ...summary.skippedFiles],
|
|
351
|
-
warnings: [...combined.warnings, ...summary.warnings],
|
|
352
|
-
}), createProcessingSummary(0));
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Get retry delay based on error type and attempt number.
|
|
356
|
-
* Implements exponential backoff with jitter.
|
|
357
|
-
*
|
|
358
|
-
* @param error - The error that occurred
|
|
359
|
-
* @param attempt - Current attempt number (1-based)
|
|
360
|
-
* @param baseDelayMs - Base delay in milliseconds (default: 1000)
|
|
361
|
-
* @returns Delay in milliseconds before next retry
|
|
362
|
-
*/
|
|
363
|
-
export function getRetryDelay(error, attempt, baseDelayMs = 1000) {
|
|
364
|
-
// Check for rate limit with Retry-After header
|
|
365
|
-
if (typeof error === "object" && error !== null) {
|
|
366
|
-
const errorObj = error;
|
|
367
|
-
const retryAfter = (errorObj.retryAfter ??
|
|
368
|
-
errorObj["retry-after"]);
|
|
369
|
-
if (typeof retryAfter === "number") {
|
|
370
|
-
return retryAfter * 1000;
|
|
371
|
-
}
|
|
372
|
-
if (typeof retryAfter === "string") {
|
|
373
|
-
const parsed = Number(retryAfter);
|
|
374
|
-
if (!Number.isNaN(parsed)) {
|
|
375
|
-
return parsed * 1000;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
// Exponential backoff: base * 2^(attempt-1)
|
|
380
|
-
const safeAttempt = Math.max(1, attempt);
|
|
381
|
-
const exponentialDelay = baseDelayMs * 2 ** (safeAttempt - 1);
|
|
382
|
-
// Add jitter (0-25% of delay)
|
|
383
|
-
const jitter = exponentialDelay * 0.25 * Math.random();
|
|
384
|
-
// Cap at 30 seconds
|
|
385
|
-
return Math.min(exponentialDelay + jitter, 30000);
|
|
386
|
-
}
|