@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,367 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared OAuth fetch wrapper for Anthropic API requests.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from `providers/anthropic.ts` so that any provider or proxy layer
|
|
5
|
-
* that needs OAuth-authenticated Anthropic requests can reuse the same logic.
|
|
6
|
-
*
|
|
7
|
-
* Applies full "cloaking" to make requests indistinguishable from the
|
|
8
|
-
* official Claude CLI / CLIProxyAPI, which is required for OAuth + tools
|
|
9
|
-
* to work correctly.
|
|
10
|
-
*
|
|
11
|
-
* @module proxy/oauthFetch
|
|
12
|
-
*/
|
|
13
|
-
import { CLAUDE_CLI_USER_AGENT, MCP_TOOL_PREFIX, } from "../auth/anthropicOAuth.js";
|
|
14
|
-
import { logger } from "../utils/logger.js";
|
|
15
|
-
import { randomBytes, randomUUID } from "crypto";
|
|
16
|
-
// Re-export constants for consumers that previously imported them alongside
|
|
17
|
-
// the function from `providers/anthropic.ts`.
|
|
18
|
-
export { CLAUDE_CLI_USER_AGENT, MCP_TOOL_PREFIX };
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
// Helpers
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
/** Cache fake user IDs per token prefix (1-hour TTL, max 1000 entries). */
|
|
23
|
-
const userIdCache = new Map();
|
|
24
|
-
const USER_ID_CACHE_TTL_MS = 3_600_000; // 1 hour
|
|
25
|
-
const USER_ID_CACHE_MAX_SIZE = 1_000;
|
|
26
|
-
/** Evict expired entries and enforce max size (LRU-approximation via insertion order). */
|
|
27
|
-
function evictUserIdCache() {
|
|
28
|
-
const now = Date.now();
|
|
29
|
-
for (const [key, entry] of userIdCache) {
|
|
30
|
-
if (entry.expires <= now) {
|
|
31
|
-
userIdCache.delete(key);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// If still over capacity, remove oldest entries (Map preserves insertion order)
|
|
35
|
-
if (userIdCache.size > USER_ID_CACHE_MAX_SIZE) {
|
|
36
|
-
const excess = userIdCache.size - USER_ID_CACHE_MAX_SIZE;
|
|
37
|
-
let removed = 0;
|
|
38
|
-
for (const key of userIdCache.keys()) {
|
|
39
|
-
if (removed >= excess) {
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
userIdCache.delete(key);
|
|
43
|
-
removed++;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function getOrCreateUserId(tokenPrefix) {
|
|
48
|
-
evictUserIdCache();
|
|
49
|
-
const cached = userIdCache.get(tokenPrefix);
|
|
50
|
-
if (cached && cached.expires > Date.now()) {
|
|
51
|
-
return cached.id;
|
|
52
|
-
}
|
|
53
|
-
const hex = randomBytes(32).toString("hex");
|
|
54
|
-
const id = `user_${hex}_account_${randomUUID()}_session_${randomUUID()}`;
|
|
55
|
-
userIdCache.set(tokenPrefix, {
|
|
56
|
-
id,
|
|
57
|
-
expires: Date.now() + USER_ID_CACHE_TTL_MS,
|
|
58
|
-
});
|
|
59
|
-
return id;
|
|
60
|
-
}
|
|
61
|
-
/** Compute a short hex hash of a string using Web Crypto (SHA-256). */
|
|
62
|
-
async function shortSha256(data) {
|
|
63
|
-
const buf = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(data));
|
|
64
|
-
return Array.from(new Uint8Array(buf))
|
|
65
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
66
|
-
.join("")
|
|
67
|
-
.substring(0, 5);
|
|
68
|
-
}
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Main factory
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
/**
|
|
73
|
-
* Creates a custom fetch function for OAuth-authenticated requests.
|
|
74
|
-
* This wrapper applies all required transformations for OAuth mode:
|
|
75
|
-
* - Uses Authorization: Bearer header (NOT x-api-key)
|
|
76
|
-
* - Adds OAuth-required beta headers
|
|
77
|
-
* - Sets User-Agent to Claude CLI
|
|
78
|
-
* - Adds ?beta=true query parameter to /v1/messages
|
|
79
|
-
* - Injects billing header & agent block into system prompt
|
|
80
|
-
* - Injects fake user ID into metadata
|
|
81
|
-
* - Adds Stainless SDK headers for fingerprint matching
|
|
82
|
-
* - Disables thinking when tool_choice is forced
|
|
83
|
-
*
|
|
84
|
-
* Accepts a getter function instead of a static token so that refreshed
|
|
85
|
-
* tokens are picked up automatically on each request.
|
|
86
|
-
*
|
|
87
|
-
* @param getToken - Function returning the current OAuth access token
|
|
88
|
-
* @param includeOptionalBetas - Whether to include optional beta headers (default true)
|
|
89
|
-
* @param enableMcpPrefix - Whether to apply mcp_ prefix/strip logic to tool names (default false)
|
|
90
|
-
* @param skipBodyTransform - When true, skip ALL body modifications (billing header, user ID, tool prefix).
|
|
91
|
-
* Used for proxy passthrough where the request body must be forwarded as-is.
|
|
92
|
-
*/
|
|
93
|
-
export function createOAuthFetch(getToken, includeOptionalBetas = true, enableMcpPrefix = false, skipBodyTransform = false) {
|
|
94
|
-
return async (input, init) => {
|
|
95
|
-
// Build the URL
|
|
96
|
-
let requestUrl = null;
|
|
97
|
-
try {
|
|
98
|
-
if (typeof input === "string" || input instanceof URL) {
|
|
99
|
-
requestUrl = new URL(input.toString());
|
|
100
|
-
}
|
|
101
|
-
else if (input instanceof Request) {
|
|
102
|
-
requestUrl = new URL(input.url);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
requestUrl = null;
|
|
107
|
-
}
|
|
108
|
-
// Add ?beta=true to /v1/messages endpoint
|
|
109
|
-
if (requestUrl &&
|
|
110
|
-
requestUrl.pathname === "/v1/messages" &&
|
|
111
|
-
!requestUrl.searchParams.has("beta")) {
|
|
112
|
-
requestUrl.searchParams.set("beta", "true");
|
|
113
|
-
}
|
|
114
|
-
// Build new headers
|
|
115
|
-
const requestHeaders = new Headers();
|
|
116
|
-
// Copy headers from Request object if present
|
|
117
|
-
if (input instanceof Request) {
|
|
118
|
-
input.headers.forEach((value, key) => {
|
|
119
|
-
requestHeaders.set(key, value);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
// Copy headers from init if present
|
|
123
|
-
if (init?.headers) {
|
|
124
|
-
if (init.headers instanceof Headers) {
|
|
125
|
-
init.headers.forEach((value, key) => {
|
|
126
|
-
requestHeaders.set(key, value);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
else if (Array.isArray(init.headers)) {
|
|
130
|
-
for (const [key, value] of init.headers) {
|
|
131
|
-
if (typeof value !== "undefined") {
|
|
132
|
-
requestHeaders.set(key, String(value));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
for (const [key, value] of Object.entries(init.headers)) {
|
|
138
|
-
if (typeof value !== "undefined") {
|
|
139
|
-
requestHeaders.set(key, String(value));
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// ------------------------------------------------------------------
|
|
145
|
-
// Beta headers — preserve existing client betas and merge in required ones.
|
|
146
|
-
// In passthrough mode, Claude Code sends its own betas that MUST be kept
|
|
147
|
-
// (e.g., context-management-2025-06-27). We only add oauth if missing.
|
|
148
|
-
// ------------------------------------------------------------------
|
|
149
|
-
const existingBetas = (requestHeaders.get("anthropic-beta") ?? "")
|
|
150
|
-
.split(",")
|
|
151
|
-
.map((s) => s.trim())
|
|
152
|
-
.filter(Boolean);
|
|
153
|
-
const requiredBetas = ["oauth-2025-04-20"];
|
|
154
|
-
// Only add our betas if not already present in client's headers
|
|
155
|
-
if (!skipBodyTransform) {
|
|
156
|
-
// Direct NeuroLink usage — set full beta list
|
|
157
|
-
requiredBetas.push("claude-code-20250219", ...(includeOptionalBetas ? ["interleaved-thinking-2025-05-14"] : []), "prompt-caching-scope-2026-01-05");
|
|
158
|
-
}
|
|
159
|
-
const allBetas = [...new Set([...existingBetas, ...requiredBetas])];
|
|
160
|
-
const mergedBetas = allBetas.join(",");
|
|
161
|
-
// Set OAuth authorization (Bearer token, NOT x-api-key)
|
|
162
|
-
// Call getToken() each time so refreshed tokens are used automatically.
|
|
163
|
-
requestHeaders.set("authorization", `Bearer ${getToken()}`);
|
|
164
|
-
requestHeaders.set("anthropic-beta", mergedBetas);
|
|
165
|
-
if (!skipBodyTransform) {
|
|
166
|
-
// Only override user-agent for direct NeuroLink usage
|
|
167
|
-
requestHeaders.set("user-agent", CLAUDE_CLI_USER_AGENT);
|
|
168
|
-
}
|
|
169
|
-
requestHeaders.delete("x-api-key");
|
|
170
|
-
// Identity / fingerprint headers (skip in passthrough — client sends its own)
|
|
171
|
-
if (!skipBodyTransform) {
|
|
172
|
-
requestHeaders.set("anthropic-dangerous-direct-browser-access", "true");
|
|
173
|
-
requestHeaders.set("x-app", "cli");
|
|
174
|
-
requestHeaders.set("connection", "keep-alive");
|
|
175
|
-
// Stainless SDK headers
|
|
176
|
-
requestHeaders.set("x-stainless-retry-count", "0");
|
|
177
|
-
requestHeaders.set("x-stainless-runtime-version", "v24.3.0");
|
|
178
|
-
requestHeaders.set("x-stainless-package-version", "0.74.0");
|
|
179
|
-
requestHeaders.set("x-stainless-runtime", "node");
|
|
180
|
-
requestHeaders.set("x-stainless-lang", "js");
|
|
181
|
-
requestHeaders.set("x-stainless-arch", process.arch === "x64" ? "x64" : process.arch);
|
|
182
|
-
requestHeaders.set("x-stainless-os", process.platform === "darwin"
|
|
183
|
-
? "MacOS"
|
|
184
|
-
: process.platform === "win32"
|
|
185
|
-
? "Windows"
|
|
186
|
-
: "Linux");
|
|
187
|
-
requestHeaders.set("x-stainless-timeout", "600");
|
|
188
|
-
}
|
|
189
|
-
logger.debug("[createOAuthFetch] Making OAuth request:", {
|
|
190
|
-
url: requestUrl?.toString() || input.toString(),
|
|
191
|
-
hasAuthorization: requestHeaders.has("authorization"),
|
|
192
|
-
authType: "Bearer",
|
|
193
|
-
anthropicBeta: requestHeaders.get("anthropic-beta"),
|
|
194
|
-
userAgent: requestHeaders.get("user-agent"),
|
|
195
|
-
});
|
|
196
|
-
// ------------------------------------------------------------------
|
|
197
|
-
// Body transformations (skipped in passthrough/proxy mode)
|
|
198
|
-
// ------------------------------------------------------------------
|
|
199
|
-
const sourceRequest = input instanceof Request ? input : undefined;
|
|
200
|
-
const method = init?.method ?? sourceRequest?.method;
|
|
201
|
-
let body = init?.body;
|
|
202
|
-
if (body === undefined &&
|
|
203
|
-
sourceRequest &&
|
|
204
|
-
method !== "GET" &&
|
|
205
|
-
method !== "HEAD") {
|
|
206
|
-
// Read the body as text (not ReadableStream) so that the JSON transforms
|
|
207
|
-
// below can parse and modify it. A ReadableStream would bypass the
|
|
208
|
-
// `typeof body === "string"` branch and skip all cloaking transforms.
|
|
209
|
-
const contentType = sourceRequest.headers.get("content-type") ?? "";
|
|
210
|
-
if (contentType.includes("application/json")) {
|
|
211
|
-
body = (await sourceRequest.clone().text()) || undefined;
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
body = sourceRequest.clone().body ?? undefined;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (body && typeof body === "string" && !skipBodyTransform) {
|
|
218
|
-
try {
|
|
219
|
-
const parsed = JSON.parse(body);
|
|
220
|
-
// --- mcp_ prefix (only when explicitly enabled) ----------------
|
|
221
|
-
if (enableMcpPrefix) {
|
|
222
|
-
if (parsed.tools && Array.isArray(parsed.tools)) {
|
|
223
|
-
parsed.tools = parsed.tools.map((tool) => ({
|
|
224
|
-
...tool,
|
|
225
|
-
name: tool.name ? `${MCP_TOOL_PREFIX}${tool.name}` : tool.name,
|
|
226
|
-
}));
|
|
227
|
-
}
|
|
228
|
-
if (parsed.messages && Array.isArray(parsed.messages)) {
|
|
229
|
-
parsed.messages = parsed.messages.map((msg) => {
|
|
230
|
-
if (msg.content && Array.isArray(msg.content)) {
|
|
231
|
-
msg.content = msg.content.map((block) => {
|
|
232
|
-
const b = block;
|
|
233
|
-
if (b.type === "tool_use" && b.name) {
|
|
234
|
-
return {
|
|
235
|
-
...b,
|
|
236
|
-
name: `${MCP_TOOL_PREFIX}${b.name}`,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
return block;
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
return msg;
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
// --- Disable thinking when tool_choice is forced ---------------
|
|
247
|
-
if (parsed.tool_choice?.type === "any" ||
|
|
248
|
-
parsed.tool_choice?.type === "tool") {
|
|
249
|
-
delete parsed.thinking;
|
|
250
|
-
}
|
|
251
|
-
// --- Inject billing header + agent block into system prompt ----
|
|
252
|
-
const version = "2.1.63";
|
|
253
|
-
const randomHex = Array.from(crypto.getRandomValues(new Uint8Array(2)))
|
|
254
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
255
|
-
.join("")
|
|
256
|
-
.substring(0, 3);
|
|
257
|
-
const bodyString = JSON.stringify(parsed);
|
|
258
|
-
const cch = await shortSha256(bodyString);
|
|
259
|
-
const billingBlock = {
|
|
260
|
-
type: "text",
|
|
261
|
-
text: `x-anthropic-billing-header: cc_version=${version}.${randomHex}; cc_entrypoint=cli; cch=${cch};`,
|
|
262
|
-
};
|
|
263
|
-
const agentBlock = {
|
|
264
|
-
type: "text",
|
|
265
|
-
text: "You are a Claude agent, built on Anthropic's Claude Agent SDK.",
|
|
266
|
-
};
|
|
267
|
-
// Normalise `system` to an array and prepend billing + agent blocks
|
|
268
|
-
if (parsed.system) {
|
|
269
|
-
if (typeof parsed.system === "string") {
|
|
270
|
-
parsed.system = [{ type: "text", text: parsed.system }];
|
|
271
|
-
}
|
|
272
|
-
if (Array.isArray(parsed.system)) {
|
|
273
|
-
parsed.system = [billingBlock, agentBlock, ...parsed.system];
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
parsed.system = [billingBlock, agentBlock];
|
|
278
|
-
}
|
|
279
|
-
// --- Inject fake user ID into metadata -------------------------
|
|
280
|
-
const token = getToken();
|
|
281
|
-
const tokenPrefix = token.substring(0, Math.min(20, token.length));
|
|
282
|
-
parsed.metadata = {
|
|
283
|
-
...parsed.metadata,
|
|
284
|
-
user_id: getOrCreateUserId(tokenPrefix),
|
|
285
|
-
};
|
|
286
|
-
body = JSON.stringify(parsed);
|
|
287
|
-
}
|
|
288
|
-
catch {
|
|
289
|
-
// Ignore JSON parse errors — pass body through unchanged
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
// Remove any inherited content-length — the body may have been transformed
|
|
293
|
-
// above, so the original length is stale. Let fetch/undici recalculate it.
|
|
294
|
-
requestHeaders.delete("content-length");
|
|
295
|
-
// Make the request
|
|
296
|
-
const response = await fetch(requestUrl?.toString() ||
|
|
297
|
-
(input instanceof Request ? input.url : input.toString()), {
|
|
298
|
-
...init,
|
|
299
|
-
method,
|
|
300
|
-
body,
|
|
301
|
-
signal: init?.signal ?? sourceRequest?.signal,
|
|
302
|
-
headers: requestHeaders,
|
|
303
|
-
});
|
|
304
|
-
// Transform streaming response to rename tools back (remove mcp_ prefix).
|
|
305
|
-
// Uses a dynamically-sized carry buffer that holds any incomplete JSON
|
|
306
|
-
// token spanning a chunk boundary (e.g. a partial `"name": "mcp_..."`).
|
|
307
|
-
if (enableMcpPrefix && response.body) {
|
|
308
|
-
const reader = response.body.getReader();
|
|
309
|
-
const decoder = new TextDecoder();
|
|
310
|
-
const encoder = new TextEncoder();
|
|
311
|
-
const responseHeaders = new Headers(response.headers);
|
|
312
|
-
responseHeaders.delete("content-length");
|
|
313
|
-
let carry = "";
|
|
314
|
-
const stream = new ReadableStream({
|
|
315
|
-
async pull(controller) {
|
|
316
|
-
const { done, value } = await reader.read();
|
|
317
|
-
if (done) {
|
|
318
|
-
// Flush any remaining carry
|
|
319
|
-
if (carry) {
|
|
320
|
-
const flushed = carry.replace(/"name"\s*:\s*"mcp_([^"]+)"/g, '"name": "$1"');
|
|
321
|
-
controller.enqueue(encoder.encode(flushed));
|
|
322
|
-
carry = "";
|
|
323
|
-
}
|
|
324
|
-
controller.close();
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
const chunkText = decoder.decode(value, { stream: true });
|
|
328
|
-
const combined = carry + chunkText;
|
|
329
|
-
// Detect a trailing partial `"name":\s*"mcp_...` that hasn't closed
|
|
330
|
-
// yet (no closing quote for the value). We must keep the entire
|
|
331
|
-
// partial field in carry so the regex can match it once the next
|
|
332
|
-
// chunk completes it.
|
|
333
|
-
const partialMatch = combined.match(/"name"\s*:\s*"mcp_[^"]*$/);
|
|
334
|
-
let safeText;
|
|
335
|
-
if (partialMatch && partialMatch.index !== undefined) {
|
|
336
|
-
// Partial mcp_ name field at end — carry the entire partial field
|
|
337
|
-
safeText = combined.slice(0, partialMatch.index);
|
|
338
|
-
carry = combined.slice(partialMatch.index);
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
// No partial mcp_ field — safe to process everything.
|
|
342
|
-
// Still carry trailing content after the last quote to avoid
|
|
343
|
-
// splitting other JSON tokens.
|
|
344
|
-
const lastQuote = combined.lastIndexOf('"');
|
|
345
|
-
const safeLen = lastQuote >= 0 ? lastQuote + 1 : combined.length;
|
|
346
|
-
safeText = combined.slice(0, safeLen);
|
|
347
|
-
carry = combined.slice(safeLen);
|
|
348
|
-
}
|
|
349
|
-
// Apply the mcp_ stripping regex on the safe portion
|
|
350
|
-
const replaced = safeText.replace(/"name"\s*:\s*"mcp_([^"]+)"/g, '"name": "$1"');
|
|
351
|
-
if (replaced) {
|
|
352
|
-
controller.enqueue(encoder.encode(replaced));
|
|
353
|
-
}
|
|
354
|
-
},
|
|
355
|
-
async cancel(reason) {
|
|
356
|
-
await reader.cancel(reason);
|
|
357
|
-
},
|
|
358
|
-
});
|
|
359
|
-
return new Response(stream, {
|
|
360
|
-
status: response.status,
|
|
361
|
-
statusText: response.statusText,
|
|
362
|
-
headers: responseHeaders,
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
|
-
return response;
|
|
366
|
-
};
|
|
367
|
-
}
|