@juspay/neurolink 9.31.2 → 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 +12 -0
- package/dist/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/auth/AuthProviderFactory.js +111 -0
- package/dist/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/auth/AuthProviderRegistry.js +190 -0
- package/dist/auth/RequestContext.d.ts +23 -0
- package/dist/auth/RequestContext.js +78 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/auth/authContext.d.ts +198 -0
- package/dist/auth/authContext.js +314 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.js +39 -0
- package/dist/auth/index.d.ts +20 -8
- package/dist/auth/index.js +35 -7
- package/dist/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/auth/middleware/AuthMiddleware.js +519 -0
- package/dist/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/auth/middleware/rateLimitByUser.js +554 -0
- package/dist/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/auth/providers/BaseAuthProvider.js +723 -0
- package/dist/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/auth/providers/CognitoProvider.js +304 -0
- package/dist/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/auth/providers/KeycloakProvider.js +393 -0
- package/dist/auth/providers/auth0.d.ts +59 -0
- package/dist/auth/providers/auth0.js +274 -0
- package/dist/auth/providers/betterAuth.d.ts +51 -0
- package/dist/auth/providers/betterAuth.js +182 -0
- package/dist/auth/providers/clerk.d.ts +65 -0
- package/dist/auth/providers/clerk.js +317 -0
- package/dist/auth/providers/custom.d.ts +64 -0
- package/dist/auth/providers/custom.js +112 -0
- package/dist/auth/providers/firebase.d.ts +63 -0
- package/dist/auth/providers/firebase.js +226 -0
- package/dist/auth/providers/jwt.d.ts +68 -0
- package/dist/auth/providers/jwt.js +212 -0
- package/dist/auth/providers/oauth2.d.ts +73 -0
- package/dist/auth/providers/oauth2.js +303 -0
- package/dist/auth/providers/supabase.d.ts +63 -0
- package/dist/auth/providers/supabase.js +259 -0
- package/dist/auth/providers/workos.d.ts +61 -0
- package/dist/auth/providers/workos.js +284 -0
- package/dist/auth/serverBridge.d.ts +14 -0
- package/dist/auth/serverBridge.js +25 -0
- package/dist/auth/sessionManager.d.ts +142 -0
- package/dist/auth/sessionManager.js +437 -0
- package/dist/cli/commands/authProviders.d.ts +43 -0
- package/dist/cli/commands/authProviders.js +399 -0
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/cli/factories/authCommandFactory.d.ts +23 -5
- package/dist/cli/factories/authCommandFactory.js +108 -5
- package/dist/cli/parser.js +1 -1
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +138 -477
- package/dist/core/factory.js +0 -1
- package/dist/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/core/infrastructure/baseRegistry.js +5 -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/index.d.ts +1 -0
- package/dist/index.js +25 -0
- package/dist/lib/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/lib/auth/AuthProviderFactory.js +112 -0
- package/dist/lib/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/lib/auth/AuthProviderRegistry.js +191 -0
- package/dist/lib/auth/RequestContext.d.ts +23 -0
- package/dist/lib/auth/RequestContext.js +79 -0
- package/dist/lib/auth/authContext.d.ts +198 -0
- package/dist/lib/auth/authContext.js +315 -0
- package/dist/lib/auth/errors.d.ts +63 -0
- package/dist/lib/auth/errors.js +40 -0
- package/dist/lib/auth/index.d.ts +20 -8
- package/dist/lib/auth/index.js +35 -7
- package/dist/lib/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/lib/auth/middleware/AuthMiddleware.js +520 -0
- package/dist/lib/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/lib/auth/middleware/rateLimitByUser.js +555 -0
- package/dist/lib/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/lib/auth/providers/BaseAuthProvider.js +724 -0
- package/dist/lib/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/lib/auth/providers/CognitoProvider.js +305 -0
- package/dist/lib/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/lib/auth/providers/KeycloakProvider.js +394 -0
- package/dist/lib/auth/providers/auth0.d.ts +59 -0
- package/dist/lib/auth/providers/auth0.js +275 -0
- package/dist/lib/auth/providers/betterAuth.d.ts +51 -0
- package/dist/lib/auth/providers/betterAuth.js +183 -0
- package/dist/lib/auth/providers/clerk.d.ts +65 -0
- package/dist/lib/auth/providers/clerk.js +318 -0
- package/dist/lib/auth/providers/custom.d.ts +64 -0
- package/dist/lib/auth/providers/custom.js +113 -0
- package/dist/lib/auth/providers/firebase.d.ts +63 -0
- package/dist/lib/auth/providers/firebase.js +227 -0
- package/dist/lib/auth/providers/jwt.d.ts +68 -0
- package/dist/lib/auth/providers/jwt.js +213 -0
- package/dist/lib/auth/providers/oauth2.d.ts +73 -0
- package/dist/lib/auth/providers/oauth2.js +304 -0
- package/dist/lib/auth/providers/supabase.d.ts +63 -0
- package/dist/lib/auth/providers/supabase.js +260 -0
- package/dist/lib/auth/providers/workos.d.ts +61 -0
- package/dist/lib/auth/providers/workos.js +285 -0
- package/dist/lib/auth/serverBridge.d.ts +14 -0
- package/dist/lib/auth/serverBridge.js +26 -0
- package/dist/lib/auth/sessionManager.d.ts +142 -0
- package/dist/lib/auth/sessionManager.js +438 -0
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/lib/core/infrastructure/baseRegistry.js +5 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +25 -0
- package/dist/lib/mcp/toolRegistry.js +11 -1
- package/dist/lib/neurolink.d.ts +42 -1
- package/dist/lib/neurolink.js +218 -0
- package/dist/lib/rag/ChunkerRegistry.js +2 -2
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/lib/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/lib/server/routes/agentRoutes.js +20 -2
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/lib/types/authTypes.d.ts +937 -1
- package/dist/lib/types/authTypes.js +2 -1
- package/dist/lib/types/configTypes.d.ts +46 -0
- package/dist/lib/types/generateTypes.d.ts +6 -0
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/streamTypes.d.ts +6 -0
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/mcp/toolRegistry.js +11 -1
- package/dist/neurolink.d.ts +42 -1
- package/dist/neurolink.js +218 -0
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/rag/ChunkerRegistry.js +2 -2
- package/dist/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/agentRoutes.js +20 -2
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/authTypes.d.ts +937 -1
- package/dist/types/authTypes.js +2 -1
- package/dist/types/configTypes.d.ts +46 -0
- package/dist/types/configTypes.js +0 -5
- package/dist/types/generateTypes.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/streamTypes.d.ts +6 -0
- 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 +3 -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/anthropicOAuth.js +0 -974
- 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 -49
- 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 -719
- 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 -8015
- 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 -171
- 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 -8
- 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,499 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools Manager Module
|
|
3
|
-
*
|
|
4
|
-
* Handles all tool registration, discovery, and execution for AI providers.
|
|
5
|
-
* Extracted from BaseProvider to follow Single Responsibility Principle.
|
|
6
|
-
*
|
|
7
|
-
* Responsibilities:
|
|
8
|
-
* - Tool registration (direct, custom, MCP, external MCP)
|
|
9
|
-
* - Tool discovery and aggregation
|
|
10
|
-
* - Tool creation from definitions and schemas
|
|
11
|
-
* - Tool executor setup
|
|
12
|
-
* - Session context management for MCP tools
|
|
13
|
-
* - Event emission wrapping for tool execution
|
|
14
|
-
*
|
|
15
|
-
* @module core/modules/ToolsManager
|
|
16
|
-
*/
|
|
17
|
-
import { tool as createAISDKTool, jsonSchema } from "ai";
|
|
18
|
-
import { z } from "zod";
|
|
19
|
-
import { tracers, ATTR, withSpan } from "../../telemetry/index.js";
|
|
20
|
-
import { SpanStatusCode } from "@opentelemetry/api";
|
|
21
|
-
import { logger } from "../../utils/logger.js";
|
|
22
|
-
import { getKeyCount } from "../../utils/transformationUtils.js";
|
|
23
|
-
import { convertJsonSchemaToZod } from "../../utils/schemaConversion.js";
|
|
24
|
-
/**
|
|
25
|
-
* ToolsManager class - Handles all tool management operations
|
|
26
|
-
*/
|
|
27
|
-
export class ToolsManager {
|
|
28
|
-
providerName;
|
|
29
|
-
directTools;
|
|
30
|
-
neurolink;
|
|
31
|
-
utilities;
|
|
32
|
-
// Tool storage
|
|
33
|
-
mcpTools;
|
|
34
|
-
customTools;
|
|
35
|
-
toolExecutor;
|
|
36
|
-
// Session context
|
|
37
|
-
sessionId;
|
|
38
|
-
userId;
|
|
39
|
-
constructor(providerName, directTools, neurolink, utilities) {
|
|
40
|
-
this.providerName = providerName;
|
|
41
|
-
this.directTools = directTools;
|
|
42
|
-
this.neurolink = neurolink;
|
|
43
|
-
this.utilities = utilities;
|
|
44
|
-
this.mcpTools = {};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Set session context for MCP tools
|
|
48
|
-
*/
|
|
49
|
-
setSessionContext(sessionId, userId) {
|
|
50
|
-
this.sessionId = sessionId;
|
|
51
|
-
this.userId = userId;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Set up tool executor for a provider to enable actual tool execution
|
|
55
|
-
* @param sdk - The NeuroLinkSDK instance for tool execution
|
|
56
|
-
* @param functionTag - Function name for logging
|
|
57
|
-
*/
|
|
58
|
-
setupToolExecutor(sdk, functionTag) {
|
|
59
|
-
const span = tracers.sdk.startSpan("neurolink.tools.register", {
|
|
60
|
-
attributes: {
|
|
61
|
-
[ATTR.NL_PROVIDER]: this.providerName,
|
|
62
|
-
"tools.custom_count": sdk.customTools.size,
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
try {
|
|
66
|
-
// Store custom tools for use in getAllTools()
|
|
67
|
-
this.customTools = sdk.customTools;
|
|
68
|
-
this.toolExecutor = sdk.executeTool.bind(sdk);
|
|
69
|
-
logger.debug(`[${functionTag}] Setting up tool executor for provider`, {
|
|
70
|
-
providerName: this.providerName,
|
|
71
|
-
availableCustomTools: sdk.customTools.size,
|
|
72
|
-
customToolsStored: !!this.customTools,
|
|
73
|
-
toolExecutorStored: !!this.toolExecutor,
|
|
74
|
-
});
|
|
75
|
-
// Note: Tool execution will be handled through getAllTools() -> AI SDK tools
|
|
76
|
-
// The custom tools are converted to AI SDK format in getAllTools() method
|
|
77
|
-
span.setStatus({ code: SpanStatusCode.OK });
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
span.setStatus({
|
|
81
|
-
code: SpanStatusCode.ERROR,
|
|
82
|
-
message: error instanceof Error ? error.message : String(error),
|
|
83
|
-
});
|
|
84
|
-
if (error instanceof Error) {
|
|
85
|
-
span.recordException(error);
|
|
86
|
-
}
|
|
87
|
-
throw error;
|
|
88
|
-
}
|
|
89
|
-
finally {
|
|
90
|
-
span.end();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get all available tools - direct tools are ALWAYS available
|
|
95
|
-
* MCP tools are added when available (without blocking)
|
|
96
|
-
*/
|
|
97
|
-
async getAllTools() {
|
|
98
|
-
return withSpan({
|
|
99
|
-
name: "neurolink.tools.getAll",
|
|
100
|
-
tracer: tracers.sdk,
|
|
101
|
-
attributes: {
|
|
102
|
-
[ATTR.NL_PROVIDER]: this.providerName,
|
|
103
|
-
},
|
|
104
|
-
}, async (span) => {
|
|
105
|
-
// Start with wrapped direct tools that emit events
|
|
106
|
-
const tools = {};
|
|
107
|
-
// Wrap direct tools with event emission
|
|
108
|
-
await this.processDirectTools(tools);
|
|
109
|
-
const directCount = Object.keys(tools).length;
|
|
110
|
-
span.setAttribute("tools.direct_count", directCount);
|
|
111
|
-
logger.debug(`[ToolsManager] getAllTools called for ${this.providerName}`, {
|
|
112
|
-
directToolsCount: getKeyCount(this.directTools),
|
|
113
|
-
});
|
|
114
|
-
// Process all tool types using dedicated helper methods
|
|
115
|
-
await this.processCustomTools(tools);
|
|
116
|
-
const customCount = Object.keys(tools).length - directCount;
|
|
117
|
-
span.setAttribute("tools.custom_count", customCount);
|
|
118
|
-
await this.processExternalMCPTools(tools);
|
|
119
|
-
const externalCount = Object.keys(tools).length - directCount - customCount;
|
|
120
|
-
span.setAttribute("tools.external_mcp_count", externalCount);
|
|
121
|
-
await this.processMCPTools(tools);
|
|
122
|
-
const totalCount = Object.keys(tools).length;
|
|
123
|
-
span.setAttribute(ATTR.NL_TOOL_COUNT, totalCount);
|
|
124
|
-
// Record tool names for debugging (truncated)
|
|
125
|
-
const toolNames = Object.keys(tools);
|
|
126
|
-
span.setAttribute("tools.names", toolNames.slice(0, 20).join(",") +
|
|
127
|
-
(toolNames.length > 20 ? `...+${toolNames.length - 20}` : ""));
|
|
128
|
-
// Log a compact summary instead of full tool list
|
|
129
|
-
logger.debug(`[ToolsManager] getAllTools complete: ${toolNames.length} tools available`, {
|
|
130
|
-
provider: this.providerName,
|
|
131
|
-
toolCount: toolNames.length,
|
|
132
|
-
toolNames: toolNames.length <= 10
|
|
133
|
-
? toolNames
|
|
134
|
-
: [
|
|
135
|
-
...toolNames.slice(0, 10),
|
|
136
|
-
`... and ${toolNames.length - 10} more`,
|
|
137
|
-
],
|
|
138
|
-
});
|
|
139
|
-
return tools;
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Get direct tools (built-in agent tools)
|
|
144
|
-
*/
|
|
145
|
-
getDirectTools() {
|
|
146
|
-
return this.directTools;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Get MCP tools
|
|
150
|
-
*/
|
|
151
|
-
getMCPTools() {
|
|
152
|
-
return this.mcpTools;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Get custom tools
|
|
156
|
-
*/
|
|
157
|
-
getCustomTools() {
|
|
158
|
-
return this.customTools;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Process direct tools with event emission wrapping
|
|
162
|
-
*/
|
|
163
|
-
async processDirectTools(tools) {
|
|
164
|
-
if (!this.directTools || Object.keys(this.directTools).length === 0) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
logger.debug(`[ToolsManager] Loading ${Object.keys(this.directTools).length} direct tools`);
|
|
168
|
-
for (const [toolName, directTool] of Object.entries(this.directTools)) {
|
|
169
|
-
// Wrap the direct tool's execute function with event emission
|
|
170
|
-
if (directTool &&
|
|
171
|
-
typeof directTool === "object" &&
|
|
172
|
-
"execute" in directTool) {
|
|
173
|
-
const originalExecute = directTool.execute;
|
|
174
|
-
// Create a new tool with wrapped execute function
|
|
175
|
-
tools[toolName] = {
|
|
176
|
-
...directTool,
|
|
177
|
-
execute: async (params) => {
|
|
178
|
-
// 🔧 EMIT TOOL START EVENT - Bedrock-compatible format
|
|
179
|
-
if (this.neurolink?.getEventEmitter) {
|
|
180
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
181
|
-
emitter.emit("tool:start", { tool: toolName, input: params });
|
|
182
|
-
}
|
|
183
|
-
try {
|
|
184
|
-
const result = await originalExecute(params);
|
|
185
|
-
// 🔧 EMIT TOOL END EVENT - Bedrock-compatible format
|
|
186
|
-
if (this.neurolink?.getEventEmitter) {
|
|
187
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
188
|
-
emitter.emit("tool:end", { tool: toolName, result });
|
|
189
|
-
}
|
|
190
|
-
return result;
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
// 🔧 EMIT TOOL END EVENT FOR ERROR - Bedrock-compatible format
|
|
194
|
-
if (this.neurolink?.getEventEmitter) {
|
|
195
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
196
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
197
|
-
emitter.emit("tool:end", { tool: toolName, error: errorMsg });
|
|
198
|
-
}
|
|
199
|
-
throw error;
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
// Fallback: include tool as-is if it doesn't have execute function
|
|
206
|
-
tools[toolName] = directTool;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// Direct tools processing complete — count already logged at start
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Process custom tools from setupToolExecutor
|
|
213
|
-
*/
|
|
214
|
-
async processCustomTools(tools) {
|
|
215
|
-
if (!this.customTools || this.customTools.size === 0) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
logger.debug(`[ToolsManager] Loading ${this.customTools.size} custom tools from setupToolExecutor`);
|
|
219
|
-
for (const [toolName, toolDef] of this.customTools.entries()) {
|
|
220
|
-
// Validate tool definition has required execute function
|
|
221
|
-
const toolInfo = toolDef ||
|
|
222
|
-
{};
|
|
223
|
-
if (toolInfo && typeof toolInfo.execute === "function") {
|
|
224
|
-
const tool = await this.createCustomToolFromDefinition(toolName, toolInfo);
|
|
225
|
-
if (tool && !tools[toolName]) {
|
|
226
|
-
tools[toolName] = tool;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
// Custom tools processing complete — count already logged at start
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Process MCP tools integration
|
|
234
|
-
*/
|
|
235
|
-
async processMCPTools(tools) {
|
|
236
|
-
// MCP tools loading simplified - removed functionCalling dependency
|
|
237
|
-
if (!this.mcpTools) {
|
|
238
|
-
// Set empty tools object - MCP tools are handled at a higher level
|
|
239
|
-
this.mcpTools = {};
|
|
240
|
-
}
|
|
241
|
-
// Add MCP tools if available, but don't overwrite existing direct tools
|
|
242
|
-
// Direct tools (Zod-based) take precedence over MCP tools (JSON Schema)
|
|
243
|
-
if (this.mcpTools) {
|
|
244
|
-
for (const [name, tool] of Object.entries(this.mcpTools)) {
|
|
245
|
-
if (!tools[name]) {
|
|
246
|
-
tools[name] = tool;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Process external MCP tools
|
|
253
|
-
*/
|
|
254
|
-
async processExternalMCPTools(tools) {
|
|
255
|
-
if (!this.neurolink ||
|
|
256
|
-
typeof this.neurolink.getExternalMCPTools !== "function") {
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
try {
|
|
260
|
-
const externalTools = await this.neurolink.getExternalMCPTools();
|
|
261
|
-
let addedCount = 0;
|
|
262
|
-
for (const tool of externalTools) {
|
|
263
|
-
const mcpTool = await this.createExternalMCPTool(tool);
|
|
264
|
-
if (mcpTool && !tools[tool.name]) {
|
|
265
|
-
tools[tool.name] = mcpTool;
|
|
266
|
-
addedCount++;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
logger.debug(`[ToolsManager] External MCP tools loaded`, {
|
|
270
|
-
found: externalTools.length,
|
|
271
|
-
added: addedCount,
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
logger.error(`[ToolsManager] Failed to load external MCP tools for ${this.providerName}:`, error);
|
|
276
|
-
// Not an error - external tools are optional
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Create a custom tool from tool definition
|
|
281
|
-
*/
|
|
282
|
-
async createCustomToolFromDefinition(toolName, toolInfo) {
|
|
283
|
-
try {
|
|
284
|
-
let finalSchema;
|
|
285
|
-
let originalInputSchema;
|
|
286
|
-
// Prioritize parameters (Zod), then inputSchema (Zod or JSON Schema)
|
|
287
|
-
if (toolInfo.parameters &&
|
|
288
|
-
this.utilities?.isZodSchema?.(toolInfo.parameters)) {
|
|
289
|
-
finalSchema = toolInfo.parameters;
|
|
290
|
-
}
|
|
291
|
-
else if (toolInfo.inputSchema &&
|
|
292
|
-
this.utilities?.isZodSchema?.(toolInfo.inputSchema)) {
|
|
293
|
-
finalSchema = toolInfo.inputSchema;
|
|
294
|
-
}
|
|
295
|
-
else if (toolInfo.inputSchema &&
|
|
296
|
-
typeof toolInfo.inputSchema === "object") {
|
|
297
|
-
// Use original JSON Schema with jsonSchema() wrapper - NO CONVERSION!
|
|
298
|
-
originalInputSchema = toolInfo.inputSchema;
|
|
299
|
-
finalSchema = jsonSchema(originalInputSchema);
|
|
300
|
-
}
|
|
301
|
-
else if (toolInfo.parameters &&
|
|
302
|
-
typeof toolInfo.parameters === "object") {
|
|
303
|
-
finalSchema = convertJsonSchemaToZod(toolInfo.parameters);
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
finalSchema = z.object({});
|
|
307
|
-
}
|
|
308
|
-
return createAISDKTool({
|
|
309
|
-
description: toolInfo.description || `Tool ${toolName}`,
|
|
310
|
-
inputSchema: finalSchema, // AI SDK v6 uses inputSchema (not parameters)
|
|
311
|
-
execute: async (params) => {
|
|
312
|
-
const customToolSpan = tracers.sdk.startSpan("neurolink.tools.execute_custom", {
|
|
313
|
-
attributes: {
|
|
314
|
-
"tool.name": toolName,
|
|
315
|
-
"tool.type": "custom",
|
|
316
|
-
},
|
|
317
|
-
});
|
|
318
|
-
const startTime = Date.now();
|
|
319
|
-
let executionId;
|
|
320
|
-
try {
|
|
321
|
-
// Route through NeuroLink.executeTool() when available for MCP enhancement support
|
|
322
|
-
// (cache, middleware, annotations, circuit breaker, routing)
|
|
323
|
-
if (this.toolExecutor) {
|
|
324
|
-
// Per-tool timeout and retries flow through the customTools map
|
|
325
|
-
// (set at registration via ToolRegistrationOptions).
|
|
326
|
-
// The execute wrapper in registerTool already enforces timeouts,
|
|
327
|
-
// but we also forward them to toolExecutor for MCP-level handling.
|
|
328
|
-
const toolTimeoutMs = toolInfo.timeoutMs;
|
|
329
|
-
const toolMaxRetries = toolInfo.maxRetries;
|
|
330
|
-
const hasRegistrationOptions = toolTimeoutMs !== undefined || toolMaxRetries !== undefined;
|
|
331
|
-
const result = await this.toolExecutor(toolName, params, hasRegistrationOptions
|
|
332
|
-
? {
|
|
333
|
-
...(toolTimeoutMs !== undefined && {
|
|
334
|
-
timeout: toolTimeoutMs,
|
|
335
|
-
}),
|
|
336
|
-
...(toolMaxRetries !== undefined && {
|
|
337
|
-
maxRetries: toolMaxRetries,
|
|
338
|
-
}),
|
|
339
|
-
}
|
|
340
|
-
: undefined);
|
|
341
|
-
const convertedResult = this.utilities?.convertToolResult
|
|
342
|
-
? await this.utilities.convertToolResult(result)
|
|
343
|
-
: result;
|
|
344
|
-
const endTime = Date.now();
|
|
345
|
-
customToolSpan.setAttribute("tool.duration_ms", endTime - startTime);
|
|
346
|
-
let errorResult = undefined;
|
|
347
|
-
if (convertedResult &&
|
|
348
|
-
typeof convertedResult === "object" &&
|
|
349
|
-
"isError" in convertedResult &&
|
|
350
|
-
convertedResult.isError) {
|
|
351
|
-
try {
|
|
352
|
-
errorResult = JSON.stringify(convertedResult);
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
logger.error(`Failed to serialize error result for ${toolName}`, error);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
customToolSpan.setAttribute("tool.result.status", errorResult ? "error" : "success");
|
|
359
|
-
customToolSpan.setStatus({ code: SpanStatusCode.OK });
|
|
360
|
-
return convertedResult;
|
|
361
|
-
}
|
|
362
|
-
// Fallback: direct execution (standalone usage without NeuroLink SDK)
|
|
363
|
-
if (this.neurolink?.emitToolStart) {
|
|
364
|
-
executionId = this.neurolink.emitToolStart(toolName, params, startTime);
|
|
365
|
-
}
|
|
366
|
-
const result = await toolInfo.execute(params);
|
|
367
|
-
const convertedResult = this.utilities?.convertToolResult
|
|
368
|
-
? await this.utilities.convertToolResult(result)
|
|
369
|
-
: result;
|
|
370
|
-
const endTime = Date.now();
|
|
371
|
-
let errorResult = undefined;
|
|
372
|
-
if (convertedResult &&
|
|
373
|
-
typeof convertedResult === "object" &&
|
|
374
|
-
"isError" in convertedResult &&
|
|
375
|
-
convertedResult.isError) {
|
|
376
|
-
try {
|
|
377
|
-
errorResult = JSON.stringify(convertedResult);
|
|
378
|
-
}
|
|
379
|
-
catch (error) {
|
|
380
|
-
logger.error(`Failed to serialize error result for ${toolName}`, error);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
// Emit tool end event (success or handled error)
|
|
384
|
-
if (this.neurolink?.emitToolEnd) {
|
|
385
|
-
this.neurolink.emitToolEnd(toolName, convertedResult, errorResult, startTime, endTime, executionId);
|
|
386
|
-
}
|
|
387
|
-
customToolSpan.setAttribute("tool.duration_ms", endTime - startTime);
|
|
388
|
-
customToolSpan.setAttribute("tool.result.status", errorResult ? "error" : "success");
|
|
389
|
-
customToolSpan.setStatus({ code: SpanStatusCode.OK });
|
|
390
|
-
return convertedResult;
|
|
391
|
-
}
|
|
392
|
-
catch (error) {
|
|
393
|
-
const endTime = Date.now();
|
|
394
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
395
|
-
// Emit tool end event (error) — only for fallback path
|
|
396
|
-
// When toolExecutor is used, executeTool() handles event emission
|
|
397
|
-
if (!this.toolExecutor && this.neurolink?.emitToolEnd) {
|
|
398
|
-
this.neurolink.emitToolEnd(toolName, undefined, // no result
|
|
399
|
-
errorMsg, startTime, endTime, executionId);
|
|
400
|
-
logger.debug(`Custom tool error: ${toolName} (${endTime - startTime}ms)`, { error: errorMsg });
|
|
401
|
-
}
|
|
402
|
-
customToolSpan.setAttribute("tool.duration_ms", endTime - startTime);
|
|
403
|
-
customToolSpan.setAttribute("tool.result.status", "error");
|
|
404
|
-
customToolSpan.recordException(error instanceof Error ? error : new Error(errorMsg));
|
|
405
|
-
customToolSpan.setStatus({
|
|
406
|
-
code: SpanStatusCode.ERROR,
|
|
407
|
-
message: errorMsg,
|
|
408
|
-
});
|
|
409
|
-
throw error;
|
|
410
|
-
}
|
|
411
|
-
finally {
|
|
412
|
-
customToolSpan.end();
|
|
413
|
-
}
|
|
414
|
-
},
|
|
415
|
-
});
|
|
416
|
-
}
|
|
417
|
-
catch (toolCreationError) {
|
|
418
|
-
logger.error(`Failed to create tool: ${toolName}`, toolCreationError);
|
|
419
|
-
return null;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Create an external MCP tool
|
|
424
|
-
*/
|
|
425
|
-
async createExternalMCPTool(tool) {
|
|
426
|
-
try {
|
|
427
|
-
// Use original JSON Schema from MCP tool if available, otherwise use permissive schema
|
|
428
|
-
let finalSchema;
|
|
429
|
-
if (tool.inputSchema && typeof tool.inputSchema === "object") {
|
|
430
|
-
// Clone and fix the schema for OpenAI strict mode compatibility
|
|
431
|
-
const originalSchema = tool.inputSchema;
|
|
432
|
-
const fixedSchema = this.utilities?.fixSchemaForOpenAIStrictMode
|
|
433
|
-
? this.utilities.fixSchemaForOpenAIStrictMode(originalSchema)
|
|
434
|
-
: originalSchema;
|
|
435
|
-
finalSchema = jsonSchema(fixedSchema);
|
|
436
|
-
}
|
|
437
|
-
else {
|
|
438
|
-
finalSchema = this.utilities?.createPermissiveZodSchema
|
|
439
|
-
? this.utilities.createPermissiveZodSchema()
|
|
440
|
-
: z.object({});
|
|
441
|
-
}
|
|
442
|
-
return createAISDKTool({
|
|
443
|
-
description: tool.description || `External MCP tool ${tool.name}`,
|
|
444
|
-
inputSchema: finalSchema, // AI SDK v6 uses inputSchema (not parameters)
|
|
445
|
-
execute: async (params) => {
|
|
446
|
-
// Emit tool start event
|
|
447
|
-
if (this.neurolink?.getEventEmitter) {
|
|
448
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
449
|
-
emitter.emit("tool:start", { tool: tool.name, input: params });
|
|
450
|
-
}
|
|
451
|
-
// Execute via NeuroLink's direct tool execution
|
|
452
|
-
if (this.neurolink &&
|
|
453
|
-
typeof this.neurolink.executeExternalMCPTool === "function") {
|
|
454
|
-
try {
|
|
455
|
-
const result = await this.neurolink.executeExternalMCPTool(tool.serverId || "unknown", tool.name, params);
|
|
456
|
-
// Emit tool end event (success)
|
|
457
|
-
if (this.neurolink?.getEventEmitter) {
|
|
458
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
459
|
-
emitter.emit("tool:end", { tool: tool.name, result });
|
|
460
|
-
}
|
|
461
|
-
return result;
|
|
462
|
-
}
|
|
463
|
-
catch (mcpError) {
|
|
464
|
-
// Emit tool end event (error)
|
|
465
|
-
if (this.neurolink?.getEventEmitter) {
|
|
466
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
467
|
-
const errorMsg = mcpError instanceof Error
|
|
468
|
-
? mcpError.message
|
|
469
|
-
: String(mcpError);
|
|
470
|
-
emitter.emit("tool:end", { tool: tool.name, error: errorMsg });
|
|
471
|
-
}
|
|
472
|
-
logger.error(`External MCP tool failed: ${tool.name}`, {
|
|
473
|
-
serverId: tool.serverId,
|
|
474
|
-
error: mcpError instanceof Error
|
|
475
|
-
? mcpError.message
|
|
476
|
-
: String(mcpError),
|
|
477
|
-
});
|
|
478
|
-
throw mcpError;
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
else {
|
|
482
|
-
const error = `Cannot execute external MCP tool: NeuroLink executeExternalMCPTool not available`;
|
|
483
|
-
// Emit tool end event (error - no executor)
|
|
484
|
-
if (this.neurolink?.getEventEmitter) {
|
|
485
|
-
const emitter = this.neurolink.getEventEmitter();
|
|
486
|
-
emitter.emit("tool:end", { tool: tool.name, error });
|
|
487
|
-
}
|
|
488
|
-
logger.error(error);
|
|
489
|
-
throw new Error(error);
|
|
490
|
-
}
|
|
491
|
-
},
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
catch (toolCreationError) {
|
|
495
|
-
logger.error(`Failed to create external MCP tool: ${tool.name}`, toolCreationError);
|
|
496
|
-
return null;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
}
|