@juspay/neurolink 9.54.6 → 9.54.8
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 +8 -0
- package/dist/action/actionInputs.d.ts +1 -1
- package/dist/adapters/video/directorPipeline.js +6 -0
- package/dist/adapters/video/vertexVideoHandler.js +6 -0
- package/dist/agent/directTools.d.ts +3 -23
- package/dist/auth/AuthProviderFactory.d.ts +1 -3
- package/dist/auth/anthropicOAuth.d.ts +4 -7
- package/dist/auth/anthropicOAuth.js +23 -0
- package/dist/auth/errors.d.ts +1 -1
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/middleware/AuthMiddleware.d.ts +5 -60
- package/dist/auth/middleware/AuthMiddleware.js +3 -0
- package/dist/auth/middleware/rateLimitByUser.d.ts +4 -93
- package/dist/auth/middleware/rateLimitByUser.js +4 -0
- package/dist/auth/providers/BaseAuthProvider.d.ts +1 -1
- package/dist/auth/providers/CognitoProvider.js +3 -0
- package/dist/auth/providers/KeycloakProvider.js +3 -0
- package/dist/auth/providers/auth0.d.ts +1 -1
- package/dist/auth/sessionManager.d.ts +2 -0
- package/dist/auth/sessionManager.js +53 -11
- package/dist/auth/tokenStore.d.ts +2 -0
- package/dist/auth/tokenStore.js +45 -4
- package/dist/autoresearch/tools.d.ts +1 -16
- package/dist/browser/neurolink.min.js +358 -358
- package/dist/cli/commands/config.d.ts +3 -123
- package/dist/cli/commands/config.js +4 -2
- package/dist/cli/commands/evaluate.d.ts +1 -19
- package/dist/cli/commands/proxy.d.ts +1 -1
- package/dist/cli/commands/proxy.js +3 -0
- package/dist/cli/commands/rag.js +3 -0
- package/dist/cli/commands/setup-anthropic.d.ts +2 -6
- package/dist/cli/commands/setup-anthropic.js +1 -1
- package/dist/cli/commands/setup-azure.d.ts +2 -6
- package/dist/cli/commands/setup-azure.js +1 -1
- package/dist/cli/commands/setup-bedrock.d.ts +2 -6
- package/dist/cli/commands/setup-bedrock.js +1 -1
- package/dist/cli/commands/setup-gcp.d.ts +2 -6
- package/dist/cli/commands/setup-google-ai.d.ts +2 -6
- package/dist/cli/commands/setup-google-ai.js +1 -1
- package/dist/cli/commands/setup-huggingface.d.ts +1 -5
- package/dist/cli/commands/setup-mistral.d.ts +1 -5
- package/dist/cli/commands/setup-openai.d.ts +2 -6
- package/dist/cli/commands/setup-openai.js +1 -1
- package/dist/cli/commands/setup.d.ts +1 -8
- package/dist/cli/commands/task.js +1 -0
- package/dist/cli/commands/voiceServer.d.ts +1 -4
- package/dist/cli/loop/session.js +31 -10
- package/dist/cli/utils/interactiveSetup.d.ts +2 -15
- package/dist/cli/utils/videoFileUtils.d.ts +1 -15
- package/dist/client/aiSdkAdapter.d.ts +1 -1
- package/dist/client/aiSdkAdapter.js +1 -0
- package/dist/client/httpClient.d.ts +1 -0
- package/dist/client/httpClient.js +13 -0
- package/dist/client/sseClient.d.ts +1 -0
- package/dist/client/sseClient.js +29 -0
- package/dist/client/streamingClient.d.ts +2 -0
- package/dist/client/streamingClient.js +19 -0
- package/dist/client/wsClient.d.ts +6 -0
- package/dist/client/wsClient.js +90 -10
- package/dist/context/budgetChecker.js +3 -1
- package/dist/context/contextCompactor.js +163 -143
- package/dist/context/fileSummarizationService.d.ts +1 -9
- package/dist/context/summarizationEngine.js +29 -16
- package/dist/core/baseProvider.js +124 -153
- package/dist/core/infrastructure/baseRegistry.d.ts +1 -7
- package/dist/core/modules/GenerationHandler.d.ts +3 -2
- package/dist/core/modules/GenerationHandler.js +9 -1
- package/dist/core/modules/StreamHandler.js +9 -0
- package/dist/core/modules/ToolsManager.js +18 -2
- package/dist/evaluation/BatchEvaluator.d.ts +1 -97
- package/dist/evaluation/EvaluationAggregator.d.ts +1 -118
- package/dist/evaluation/EvaluatorFactory.d.ts +1 -13
- package/dist/evaluation/EvaluatorRegistry.d.ts +1 -50
- package/dist/evaluation/errors/EvaluationError.d.ts +2 -27
- package/dist/evaluation/hooks/langfuseAdapter.d.ts +1 -39
- package/dist/evaluation/hooks/observabilityHooks.d.ts +3 -55
- package/dist/evaluation/hooks/observabilityHooks.js +3 -0
- package/dist/evaluation/pipeline/strategies/batchStrategy.d.ts +7 -61
- package/dist/evaluation/pipeline/strategies/batchStrategy.js +7 -7
- package/dist/evaluation/ragasEvaluator.js +54 -37
- package/dist/evaluation/reporting/metricsCollector.d.ts +1 -60
- package/dist/evaluation/reporting/reportGenerator.d.ts +1 -17
- package/dist/evaluation/scorers/rule/contentSimilarityScorer.d.ts +1 -29
- package/dist/evaluation/scorers/rule/formatScorer.d.ts +1 -42
- package/dist/evaluation/scorers/rule/keywordCoverageScorer.d.ts +1 -19
- package/dist/evaluation/scorers/rule/lengthScorer.d.ts +1 -33
- package/dist/factories/providerFactory.d.ts +1 -16
- package/dist/factories/providerFactory.js +2 -0
- package/dist/image-gen/ImageGenService.d.ts +3 -0
- package/dist/image-gen/ImageGenService.js +3 -0
- package/dist/lib/action/actionInputs.d.ts +1 -1
- package/dist/lib/adapters/video/directorPipeline.js +6 -0
- package/dist/lib/adapters/video/vertexVideoHandler.js +6 -0
- package/dist/lib/agent/directTools.d.ts +3 -23
- package/dist/lib/auth/AuthProviderFactory.d.ts +1 -3
- package/dist/lib/auth/anthropicOAuth.d.ts +4 -7
- package/dist/lib/auth/anthropicOAuth.js +23 -0
- package/dist/lib/auth/errors.d.ts +1 -1
- package/dist/lib/auth/index.d.ts +11 -0
- package/dist/lib/auth/index.js +14 -0
- package/dist/lib/auth/middleware/AuthMiddleware.d.ts +5 -60
- package/dist/lib/auth/middleware/AuthMiddleware.js +3 -0
- package/dist/lib/auth/middleware/rateLimitByUser.d.ts +4 -93
- package/dist/lib/auth/middleware/rateLimitByUser.js +4 -0
- package/dist/lib/auth/providers/BaseAuthProvider.d.ts +1 -1
- package/dist/lib/auth/providers/CognitoProvider.js +3 -0
- package/dist/lib/auth/providers/KeycloakProvider.js +3 -0
- package/dist/lib/auth/providers/auth0.d.ts +1 -1
- package/dist/lib/auth/sessionManager.d.ts +2 -0
- package/dist/lib/auth/sessionManager.js +53 -11
- package/dist/lib/auth/tokenStore.d.ts +2 -0
- package/dist/lib/auth/tokenStore.js +45 -4
- package/dist/lib/autoresearch/tools.d.ts +1 -16
- package/dist/lib/client/aiSdkAdapter.d.ts +1 -1
- package/dist/lib/client/aiSdkAdapter.js +1 -0
- package/dist/lib/client/httpClient.d.ts +1 -0
- package/dist/lib/client/httpClient.js +13 -0
- package/dist/lib/client/sseClient.d.ts +1 -0
- package/dist/lib/client/sseClient.js +29 -0
- package/dist/lib/client/streamingClient.d.ts +2 -0
- package/dist/lib/client/streamingClient.js +19 -0
- package/dist/lib/client/wsClient.d.ts +6 -0
- package/dist/lib/client/wsClient.js +90 -10
- package/dist/lib/context/budgetChecker.js +3 -1
- package/dist/lib/context/contextCompactor.js +163 -143
- package/dist/lib/context/fileSummarizationService.d.ts +1 -9
- package/dist/lib/context/summarizationEngine.js +29 -16
- package/dist/lib/core/baseProvider.js +124 -153
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +1 -7
- package/dist/lib/core/modules/GenerationHandler.d.ts +3 -2
- package/dist/lib/core/modules/GenerationHandler.js +9 -1
- package/dist/lib/core/modules/StreamHandler.js +9 -0
- package/dist/lib/core/modules/ToolsManager.js +18 -2
- package/dist/lib/evaluation/BatchEvaluator.d.ts +1 -97
- package/dist/lib/evaluation/EvaluationAggregator.d.ts +1 -118
- package/dist/lib/evaluation/EvaluatorFactory.d.ts +1 -13
- package/dist/lib/evaluation/EvaluatorRegistry.d.ts +1 -50
- package/dist/lib/evaluation/errors/EvaluationError.d.ts +2 -27
- package/dist/lib/evaluation/hooks/langfuseAdapter.d.ts +1 -39
- package/dist/lib/evaluation/hooks/observabilityHooks.d.ts +3 -55
- package/dist/lib/evaluation/hooks/observabilityHooks.js +3 -0
- package/dist/lib/evaluation/pipeline/strategies/batchStrategy.d.ts +7 -61
- package/dist/lib/evaluation/pipeline/strategies/batchStrategy.js +7 -7
- package/dist/lib/evaluation/ragasEvaluator.js +54 -37
- package/dist/lib/evaluation/reporting/metricsCollector.d.ts +1 -60
- package/dist/lib/evaluation/reporting/reportGenerator.d.ts +1 -17
- package/dist/lib/evaluation/scorers/rule/contentSimilarityScorer.d.ts +1 -29
- package/dist/lib/evaluation/scorers/rule/formatScorer.d.ts +1 -42
- package/dist/lib/evaluation/scorers/rule/keywordCoverageScorer.d.ts +1 -19
- package/dist/lib/evaluation/scorers/rule/lengthScorer.d.ts +1 -33
- package/dist/lib/factories/providerFactory.d.ts +1 -16
- package/dist/lib/factories/providerFactory.js +2 -0
- package/dist/lib/image-gen/ImageGenService.d.ts +3 -0
- package/dist/lib/image-gen/ImageGenService.js +3 -0
- package/dist/lib/mcp/batching/requestBatcher.js +99 -73
- package/dist/lib/mcp/httpRateLimiter.js +3 -1
- package/dist/lib/mcp/httpRetryHandler.js +3 -1
- package/dist/lib/mcp/mcpClientFactory.js +3 -1
- package/dist/lib/mcp/multiServerManager.d.ts +1 -14
- package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +5 -1
- package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +1 -0
- package/dist/lib/mcp/toolDiscoveryService.js +70 -57
- package/dist/lib/mcp/toolRegistry.js +11 -1
- package/dist/lib/memory/memoryRetrievalTools.js +182 -141
- package/dist/lib/neurolink.js +236 -40
- package/dist/lib/observability/exporterRegistry.d.ts +3 -21
- package/dist/lib/observability/exporters/sentryExporter.js +1 -0
- package/dist/lib/observability/metricsAggregator.d.ts +1 -31
- package/dist/lib/observability/tokenTracker.d.ts +7 -16
- package/dist/lib/observability/tokenTracker.js +6 -4
- package/dist/lib/observability/utils/spanSerializer.d.ts +5 -1
- package/dist/lib/observability/utils/spanSerializer.js +24 -4
- package/dist/lib/processors/base/BaseFileProcessor.js +66 -53
- package/dist/lib/processors/document/ExcelProcessor.d.ts +1 -1
- package/dist/lib/processors/errors/errorHelpers.d.ts +1 -31
- package/dist/lib/processors/errors/errorSerializer.d.ts +1 -45
- package/dist/lib/processors/registry/ProcessorRegistry.js +17 -6
- package/dist/lib/providers/amazonBedrock.js +189 -15
- package/dist/lib/providers/amazonSagemaker.js +25 -11
- package/dist/lib/providers/anthropic.js +13 -0
- package/dist/lib/providers/azureOpenai.js +2 -0
- package/dist/lib/providers/googleAiStudio.js +96 -26
- package/dist/lib/providers/googleVertex.js +66 -27
- package/dist/lib/providers/huggingFace.js +2 -0
- package/dist/lib/providers/litellm.js +2 -0
- package/dist/lib/providers/mistral.js +2 -0
- package/dist/lib/providers/ollama.js +84 -5
- package/dist/lib/providers/openAI.d.ts +2 -0
- package/dist/lib/providers/openAI.js +17 -6
- package/dist/lib/providers/openRouter.js +2 -0
- package/dist/lib/providers/openaiCompatible.js +2 -0
- package/dist/lib/providers/sagemaker/detection.d.ts +1 -33
- package/dist/lib/providers/sagemaker/diagnostics.d.ts +1 -25
- package/dist/lib/providers/sagemaker/language-model.d.ts +1 -1
- package/dist/lib/proxy/proxyConfig.js +4 -0
- package/dist/lib/proxy/proxyEnv.d.ts +1 -17
- package/dist/lib/proxy/proxyTracer.d.ts +1 -36
- package/dist/lib/proxy/proxyTracer.js +9 -0
- package/dist/lib/proxy/quietDetector.d.ts +1 -7
- package/dist/lib/proxy/rawStreamCapture.d.ts +1 -10
- package/dist/lib/proxy/requestLogger.d.ts +1 -21
- package/dist/lib/proxy/sseInterceptor.d.ts +1 -66
- package/dist/lib/proxy/sseInterceptor.js +6 -0
- package/dist/lib/proxy/updateChecker.d.ts +1 -6
- package/dist/lib/proxy/updateState.d.ts +1 -12
- package/dist/lib/rag/chunkers/BaseChunker.js +36 -22
- package/dist/lib/rag/chunking/jsonChunker.d.ts +1 -1
- package/dist/lib/rag/errors/RAGError.d.ts +1 -2
- package/dist/lib/rag/ragIntegration.js +45 -32
- package/dist/lib/rag/reranker/reranker.js +151 -122
- package/dist/lib/rag/retrieval/vectorQueryTool.js +79 -65
- package/dist/lib/sdk/toolRegistration.d.ts +10 -44
- package/dist/lib/sdk/toolRegistration.js +1 -1
- package/dist/lib/server/middleware/abortSignal.d.ts +1 -11
- package/dist/lib/server/middleware/auth.d.ts +1 -21
- package/dist/lib/server/middleware/auth.js +12 -0
- package/dist/lib/server/middleware/common.js +48 -32
- package/dist/lib/server/middleware/deprecation.d.ts +1 -20
- package/dist/lib/server/middleware/rateLimit.d.ts +1 -75
- package/dist/lib/server/middleware/validation.d.ts +3 -81
- package/dist/lib/server/middleware/validation.js +3 -0
- package/dist/lib/server/openapi/generator.d.ts +1 -47
- package/dist/lib/server/routes/agentRoutes.js +112 -57
- package/dist/lib/server/routes/claudeProxyRoutes.d.ts +1 -6
- package/dist/lib/server/routes/claudeProxyRoutes.js +127 -13
- package/dist/lib/server/routes/healthRoutes.js +58 -12
- package/dist/lib/server/routes/index.d.ts +1 -26
- package/dist/lib/server/routes/mcpRoutes.js +40 -7
- package/dist/lib/server/routes/memoryRoutes.js +22 -7
- package/dist/lib/server/routes/openApiRoutes.js +30 -6
- package/dist/lib/server/routes/toolRoutes.js +140 -68
- package/dist/lib/server/streaming/dataStream.d.ts +1 -35
- package/dist/lib/server/streaming/dataStream.js +15 -0
- package/dist/lib/services/server/ai/observability/instrumentation.js +114 -14
- package/dist/lib/session/globalSessionState.d.ts +1 -10
- package/dist/lib/tasks/tools/taskTools.d.ts +2 -2
- package/dist/lib/telemetry/traceContext.d.ts +9 -0
- package/dist/lib/telemetry/traceContext.js +19 -0
- package/dist/lib/telemetry/tracers.d.ts +2 -0
- package/dist/lib/telemetry/tracers.js +2 -0
- package/dist/lib/types/action.d.ts +2 -0
- package/dist/lib/types/artifact.d.ts +7 -0
- package/dist/lib/types/auth.d.ts +125 -18
- package/dist/lib/types/autoresearch.d.ts +12 -0
- package/dist/lib/types/cli.d.ts +415 -0
- package/dist/lib/types/client.d.ts +34 -0
- package/dist/lib/types/common.d.ts +12 -41
- package/dist/lib/types/context.d.ts +5 -0
- package/dist/lib/types/evaluation.d.ts +332 -1
- package/dist/lib/types/file.d.ts +4 -0
- package/dist/lib/types/mcp.d.ts +102 -2
- package/dist/lib/types/middleware.d.ts +116 -0
- package/dist/lib/types/multimodal.d.ts +65 -0
- package/dist/lib/types/observability.d.ts +81 -0
- package/dist/lib/types/processor.d.ts +47 -0
- package/dist/lib/types/providers.d.ts +120 -16
- package/dist/lib/types/proxy.d.ts +321 -1
- package/dist/lib/types/rag.d.ts +22 -0
- package/dist/lib/types/scorer.d.ts +141 -0
- package/dist/lib/types/server.d.ts +99 -0
- package/dist/lib/types/span.d.ts +2 -1
- package/dist/lib/types/span.js +1 -0
- package/dist/lib/types/tools.d.ts +44 -0
- package/dist/lib/types/tts.d.ts +6 -0
- package/dist/lib/types/utilities.d.ts +22 -0
- package/dist/lib/types/workflow.d.ts +18 -0
- package/dist/lib/utils/async/retry.d.ts +2 -8
- package/dist/lib/utils/async/retry.js +9 -9
- package/dist/lib/utils/imageCompressor.d.ts +1 -21
- package/dist/lib/utils/imageCompressor.js +5 -1
- package/dist/lib/utils/messageBuilder.d.ts +1 -1
- package/dist/lib/utils/redis.d.ts +1 -4
- package/dist/lib/utils/toolEndEmitter.d.ts +25 -0
- package/dist/lib/utils/toolEndEmitter.js +65 -0
- package/dist/lib/workflow/config.d.ts +7 -32
- package/dist/lib/workflow/core/ensembleExecutor.js +28 -0
- package/dist/lib/workflow/core/judgeScorer.js +23 -0
- package/dist/lib/workflow/core/responseConditioner.js +17 -0
- package/dist/lib/workflow/core/workflowRunner.d.ts +1 -19
- package/dist/lib/workflow/core/workflowRunner.js +202 -147
- package/dist/mcp/batching/requestBatcher.js +99 -73
- package/dist/mcp/httpRateLimiter.js +3 -1
- package/dist/mcp/httpRetryHandler.js +3 -1
- package/dist/mcp/mcpClientFactory.js +3 -1
- package/dist/mcp/multiServerManager.d.ts +1 -14
- package/dist/mcp/servers/aiProviders/aiAnalysisTools.js +5 -1
- package/dist/mcp/servers/aiProviders/aiWorkflowTools.js +1 -0
- package/dist/mcp/toolDiscoveryService.js +70 -57
- package/dist/mcp/toolRegistry.js +11 -1
- package/dist/memory/memoryRetrievalTools.js +182 -141
- package/dist/neurolink.js +236 -40
- package/dist/observability/exporterRegistry.d.ts +3 -21
- package/dist/observability/exporters/sentryExporter.js +1 -0
- package/dist/observability/metricsAggregator.d.ts +1 -31
- package/dist/observability/tokenTracker.d.ts +7 -16
- package/dist/observability/tokenTracker.js +6 -4
- package/dist/observability/utils/spanSerializer.d.ts +5 -1
- package/dist/observability/utils/spanSerializer.js +24 -4
- package/dist/processors/base/BaseFileProcessor.js +66 -53
- package/dist/processors/document/ExcelProcessor.d.ts +1 -1
- package/dist/processors/errors/errorHelpers.d.ts +1 -31
- package/dist/processors/errors/errorSerializer.d.ts +1 -45
- package/dist/processors/registry/ProcessorRegistry.js +17 -6
- package/dist/providers/amazonBedrock.js +189 -15
- package/dist/providers/amazonSagemaker.js +25 -11
- package/dist/providers/anthropic.js +13 -0
- package/dist/providers/azureOpenai.js +2 -0
- package/dist/providers/googleAiStudio.js +96 -26
- package/dist/providers/googleVertex.js +66 -27
- package/dist/providers/huggingFace.js +2 -0
- package/dist/providers/litellm.js +2 -0
- package/dist/providers/mistral.js +2 -0
- package/dist/providers/ollama.js +84 -5
- package/dist/providers/openAI.d.ts +2 -0
- package/dist/providers/openAI.js +17 -6
- package/dist/providers/openRouter.js +2 -0
- package/dist/providers/openaiCompatible.js +2 -0
- package/dist/providers/sagemaker/detection.d.ts +1 -33
- package/dist/providers/sagemaker/diagnostics.d.ts +1 -25
- package/dist/providers/sagemaker/language-model.d.ts +1 -1
- package/dist/proxy/proxyConfig.js +4 -0
- package/dist/proxy/proxyEnv.d.ts +1 -17
- package/dist/proxy/proxyTracer.d.ts +1 -36
- package/dist/proxy/proxyTracer.js +9 -0
- package/dist/proxy/quietDetector.d.ts +1 -7
- package/dist/proxy/rawStreamCapture.d.ts +1 -10
- package/dist/proxy/requestLogger.d.ts +1 -21
- package/dist/proxy/sseInterceptor.d.ts +1 -66
- package/dist/proxy/sseInterceptor.js +6 -0
- package/dist/proxy/updateChecker.d.ts +1 -6
- package/dist/proxy/updateState.d.ts +1 -12
- package/dist/rag/chunkers/BaseChunker.js +36 -22
- package/dist/rag/chunking/jsonChunker.d.ts +1 -1
- package/dist/rag/errors/RAGError.d.ts +1 -2
- package/dist/rag/ragIntegration.js +45 -32
- package/dist/rag/reranker/reranker.js +151 -122
- package/dist/rag/retrieval/vectorQueryTool.js +79 -65
- package/dist/sdk/toolRegistration.d.ts +10 -44
- package/dist/sdk/toolRegistration.js +1 -1
- package/dist/server/middleware/abortSignal.d.ts +1 -11
- package/dist/server/middleware/auth.d.ts +1 -21
- package/dist/server/middleware/auth.js +12 -0
- package/dist/server/middleware/common.js +48 -32
- package/dist/server/middleware/deprecation.d.ts +1 -20
- package/dist/server/middleware/rateLimit.d.ts +1 -75
- package/dist/server/middleware/validation.d.ts +3 -81
- package/dist/server/middleware/validation.js +3 -0
- package/dist/server/openapi/generator.d.ts +1 -47
- package/dist/server/routes/agentRoutes.js +112 -57
- package/dist/server/routes/claudeProxyRoutes.d.ts +1 -6
- package/dist/server/routes/claudeProxyRoutes.js +127 -13
- package/dist/server/routes/healthRoutes.js +58 -12
- package/dist/server/routes/index.d.ts +1 -26
- package/dist/server/routes/mcpRoutes.js +40 -7
- package/dist/server/routes/memoryRoutes.js +22 -7
- package/dist/server/routes/openApiRoutes.js +30 -6
- package/dist/server/routes/toolRoutes.js +140 -68
- package/dist/server/streaming/dataStream.d.ts +1 -35
- package/dist/server/streaming/dataStream.js +15 -0
- package/dist/services/server/ai/observability/instrumentation.js +114 -14
- package/dist/session/globalSessionState.d.ts +1 -10
- package/dist/tasks/tools/taskTools.d.ts +2 -2
- package/dist/telemetry/traceContext.d.ts +9 -0
- package/dist/telemetry/traceContext.js +18 -0
- package/dist/telemetry/tracers.d.ts +2 -0
- package/dist/telemetry/tracers.js +2 -0
- package/dist/types/action.d.ts +2 -0
- package/dist/types/artifact.d.ts +7 -0
- package/dist/types/auth.d.ts +125 -18
- package/dist/types/autoresearch.d.ts +12 -0
- package/dist/types/cli.d.ts +415 -0
- package/dist/types/client.d.ts +34 -0
- package/dist/types/common.d.ts +12 -41
- package/dist/types/context.d.ts +5 -0
- package/dist/types/evaluation.d.ts +332 -1
- package/dist/types/file.d.ts +4 -0
- package/dist/types/mcp.d.ts +102 -2
- package/dist/types/middleware.d.ts +116 -0
- package/dist/types/multimodal.d.ts +65 -0
- package/dist/types/observability.d.ts +81 -0
- package/dist/types/processor.d.ts +47 -0
- package/dist/types/providers.d.ts +120 -16
- package/dist/types/proxy.d.ts +321 -1
- package/dist/types/rag.d.ts +22 -0
- package/dist/types/scorer.d.ts +141 -0
- package/dist/types/server.d.ts +99 -0
- package/dist/types/span.d.ts +2 -1
- package/dist/types/span.js +1 -0
- package/dist/types/tools.d.ts +44 -0
- package/dist/types/tts.d.ts +6 -0
- package/dist/types/utilities.d.ts +22 -0
- package/dist/types/workflow.d.ts +18 -0
- package/dist/utils/async/retry.d.ts +2 -8
- package/dist/utils/async/retry.js +9 -9
- package/dist/utils/imageCompressor.d.ts +1 -21
- package/dist/utils/imageCompressor.js +5 -1
- package/dist/utils/messageBuilder.d.ts +1 -1
- package/dist/utils/redis.d.ts +1 -4
- package/dist/utils/toolEndEmitter.d.ts +25 -0
- package/dist/utils/toolEndEmitter.js +64 -0
- package/dist/workflow/config.d.ts +4 -29
- package/dist/workflow/core/ensembleExecutor.js +28 -0
- package/dist/workflow/core/judgeScorer.js +23 -0
- package/dist/workflow/core/responseConditioner.js +17 -0
- package/dist/workflow/core/workflowRunner.d.ts +1 -19
- package/dist/workflow/core/workflowRunner.js +202 -147
- package/package.json +2 -8
|
@@ -246,6 +246,12 @@ export class ApiKeyStore {
|
|
|
246
246
|
return this.keys.size;
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
+
// ============================================
|
|
250
|
+
// Bearer Token Authentication
|
|
251
|
+
// ============================================
|
|
252
|
+
/**
|
|
253
|
+
* Options for bearer auth middleware
|
|
254
|
+
*/
|
|
249
255
|
/**
|
|
250
256
|
* Create bearer token authentication middleware
|
|
251
257
|
*
|
|
@@ -292,6 +298,12 @@ export function createBearerAuthMiddleware(validate, options = {}) {
|
|
|
292
298
|
},
|
|
293
299
|
};
|
|
294
300
|
}
|
|
301
|
+
// ============================================
|
|
302
|
+
// API Key Authentication
|
|
303
|
+
// ============================================
|
|
304
|
+
/**
|
|
305
|
+
* Options for API key auth middleware
|
|
306
|
+
*/
|
|
295
307
|
/**
|
|
296
308
|
* Create API key authentication middleware
|
|
297
309
|
*
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Utility middleware for common server operations
|
|
4
4
|
*/
|
|
5
5
|
import { getMetricsAggregator, SpanSerializer, SpanStatus, SpanType, } from "../../observability/index.js";
|
|
6
|
+
import { SpanStatusCode } from "@opentelemetry/api";
|
|
7
|
+
import { tracers } from "../../telemetry/tracers.js";
|
|
6
8
|
import { logger } from "../../utils/logger.js";
|
|
7
9
|
/**
|
|
8
10
|
* Create request timing middleware
|
|
@@ -18,38 +20,52 @@ export function createTimingMiddleware() {
|
|
|
18
20
|
name: "timing",
|
|
19
21
|
order: 0, // Run first
|
|
20
22
|
handler: async (ctx, next) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
23
|
+
return tracers.middleware.startActiveSpan("neurolink.middleware.timing", async (otelSpan) => {
|
|
24
|
+
try {
|
|
25
|
+
const startTime = Date.now();
|
|
26
|
+
const startHrTime = process.hrtime.bigint();
|
|
27
|
+
// Store start time in metadata
|
|
28
|
+
ctx.metadata.requestStartTime = startTime;
|
|
29
|
+
const span = SpanSerializer.createSpan(SpanType.SERVER_REQUEST, "server.middleware.timing", {
|
|
30
|
+
"server.operation": "middleware",
|
|
31
|
+
"server.middleware": "timing",
|
|
32
|
+
});
|
|
33
|
+
try {
|
|
34
|
+
const result = await next();
|
|
35
|
+
// Calculate duration
|
|
36
|
+
const endHrTime = process.hrtime.bigint();
|
|
37
|
+
const durationNs = Number(endHrTime - startHrTime);
|
|
38
|
+
const durationMs = durationNs / 1_000_000;
|
|
39
|
+
// Add timing headers to responseHeaders (adapters read from here)
|
|
40
|
+
ctx.responseHeaders = ctx.responseHeaders || {};
|
|
41
|
+
ctx.responseHeaders["X-Response-Time"] =
|
|
42
|
+
`${durationMs.toFixed(2)}ms`;
|
|
43
|
+
ctx.responseHeaders["Server-Timing"] =
|
|
44
|
+
`total;dur=${durationMs.toFixed(2)}`;
|
|
45
|
+
span.durationMs = Date.now() - startTime;
|
|
46
|
+
const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
|
|
47
|
+
getMetricsAggregator().recordSpan(endedSpan);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
// Propagate error to OTel span so traces show ERROR status
|
|
52
|
+
otelSpan.recordException(error instanceof Error ? error : new Error(String(error)));
|
|
53
|
+
otelSpan.setStatus({
|
|
54
|
+
code: SpanStatusCode.ERROR,
|
|
55
|
+
message: error instanceof Error ? error.message : String(error),
|
|
56
|
+
});
|
|
57
|
+
span.durationMs = Date.now() - startTime;
|
|
58
|
+
const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR);
|
|
59
|
+
endedSpan.statusMessage =
|
|
60
|
+
error instanceof Error ? error.message : String(error);
|
|
61
|
+
getMetricsAggregator().recordSpan(endedSpan);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
otelSpan.end();
|
|
67
|
+
}
|
|
68
|
+
}); // end startActiveSpan
|
|
53
69
|
},
|
|
54
70
|
};
|
|
55
71
|
}
|
|
@@ -4,25 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @see https://datatracker.ietf.org/doc/html/rfc8594 - The 'Deprecation' HTTP Header Field
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
8
|
-
/**
|
|
9
|
-
* Deprecation middleware configuration
|
|
10
|
-
*/
|
|
11
|
-
type DeprecationConfig = {
|
|
12
|
-
/**
|
|
13
|
-
* Array of route definitions to check for deprecation
|
|
14
|
-
* Routes with `deprecated.enabled: true` will have deprecation headers added
|
|
15
|
-
*/
|
|
16
|
-
routes: RouteDefinition[];
|
|
17
|
-
/**
|
|
18
|
-
* Custom header name for deprecation notice (default: "X-Deprecation-Notice")
|
|
19
|
-
*/
|
|
20
|
-
noticeHeader?: string;
|
|
21
|
-
/**
|
|
22
|
-
* Whether to include Link header for alternative routes (default: true)
|
|
23
|
-
*/
|
|
24
|
-
includeLink?: boolean;
|
|
25
|
-
};
|
|
7
|
+
import type { DeprecationConfig, MiddlewareDefinition } from "../../types/index.js";
|
|
26
8
|
/**
|
|
27
9
|
* Create deprecation middleware
|
|
28
10
|
*
|
|
@@ -56,4 +38,3 @@ type DeprecationConfig = {
|
|
|
56
38
|
* ```
|
|
57
39
|
*/
|
|
58
40
|
export declare function createDeprecationMiddleware(config: DeprecationConfig): MiddlewareDefinition;
|
|
59
|
-
export {};
|
|
@@ -2,64 +2,7 @@
|
|
|
2
2
|
* Rate Limiting Middleware
|
|
3
3
|
* Provides configurable rate limiting for server adapters
|
|
4
4
|
*/
|
|
5
|
-
import type { MiddlewareDefinition,
|
|
6
|
-
/**
|
|
7
|
-
* Rate limit middleware configuration
|
|
8
|
-
*/
|
|
9
|
-
type RateLimitMiddlewareConfig = {
|
|
10
|
-
/** Maximum requests per window */
|
|
11
|
-
maxRequests: number;
|
|
12
|
-
/** Time window in milliseconds */
|
|
13
|
-
windowMs: number;
|
|
14
|
-
/** Custom error message */
|
|
15
|
-
message?: string;
|
|
16
|
-
/** Skip rate limiting for certain paths */
|
|
17
|
-
skipPaths?: string[];
|
|
18
|
-
/**
|
|
19
|
-
* Custom key generator for identifying clients
|
|
20
|
-
* Default: IP address
|
|
21
|
-
*/
|
|
22
|
-
keyGenerator?: (ctx: ServerContext) => string;
|
|
23
|
-
/**
|
|
24
|
-
* Custom response handler for rate limit exceeded
|
|
25
|
-
*/
|
|
26
|
-
onRateLimitExceeded?: (ctx: ServerContext, retryAfter: number) => unknown;
|
|
27
|
-
/**
|
|
28
|
-
* Custom rate limit store
|
|
29
|
-
* Default: in-memory store
|
|
30
|
-
*/
|
|
31
|
-
store?: RateLimitStore;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Rate limit entry
|
|
35
|
-
*/
|
|
36
|
-
type RateLimitEntry = {
|
|
37
|
-
count: number;
|
|
38
|
-
resetAt: number;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Rate limit store interface
|
|
42
|
-
* Implement this for custom storage (Redis, etc.)
|
|
43
|
-
*/
|
|
44
|
-
type RateLimitStore = {
|
|
45
|
-
/**
|
|
46
|
-
* Get the current entry for a key
|
|
47
|
-
*/
|
|
48
|
-
get(key: string): Promise<RateLimitEntry | undefined>;
|
|
49
|
-
/**
|
|
50
|
-
* Set an entry for a key
|
|
51
|
-
*/
|
|
52
|
-
set(key: string, entry: RateLimitEntry): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Increment the counter for a key
|
|
55
|
-
* Returns the current count and reset time
|
|
56
|
-
*/
|
|
57
|
-
increment(key: string, windowMs: number): Promise<RateLimitEntry>;
|
|
58
|
-
/**
|
|
59
|
-
* Reset the counter for a key
|
|
60
|
-
*/
|
|
61
|
-
reset(key: string): Promise<void>;
|
|
62
|
-
};
|
|
5
|
+
import type { FixedWindowRateLimitConfig, MiddlewareDefinition, RateLimitEntry, RateLimitMiddlewareConfig, RateLimitStore } from "../../types/index.js";
|
|
63
6
|
/**
|
|
64
7
|
* In-memory rate limit store
|
|
65
8
|
*/
|
|
@@ -113,23 +56,6 @@ export declare function createSlidingWindowRateLimitMiddleware(config: RateLimit
|
|
|
113
56
|
* Alias for InMemoryRateLimitStore for compatibility
|
|
114
57
|
*/
|
|
115
58
|
export { InMemoryRateLimitStore as MemoryRateLimitStore };
|
|
116
|
-
/**
|
|
117
|
-
* Fixed window rate limit configuration (for standalone signature)
|
|
118
|
-
*/
|
|
119
|
-
type FixedWindowRateLimitConfig = {
|
|
120
|
-
/** Maximum requests per window */
|
|
121
|
-
maxRequests: number;
|
|
122
|
-
/** Time window in milliseconds */
|
|
123
|
-
windowMs: number;
|
|
124
|
-
/** Custom error message */
|
|
125
|
-
message?: string;
|
|
126
|
-
/** Skip rate limiting for certain paths */
|
|
127
|
-
skipPaths?: string[];
|
|
128
|
-
/** Custom key generator */
|
|
129
|
-
keyGenerator?: (ctx: ServerContext) => string;
|
|
130
|
-
/** Custom rate limit exceeded handler */
|
|
131
|
-
onRateLimitExceeded?: (ctx: ServerContext, retryAfter: number) => unknown;
|
|
132
|
-
};
|
|
133
59
|
/**
|
|
134
60
|
* Create fixed window rate limit middleware
|
|
135
61
|
*
|
|
@@ -2,69 +2,7 @@
|
|
|
2
2
|
* Request Validation Middleware
|
|
3
3
|
* Provides schema-based request validation for server adapters
|
|
4
4
|
*/
|
|
5
|
-
import type { MiddlewareDefinition,
|
|
6
|
-
import { ValidationError as ServerValidationError } from "../errors.js";
|
|
7
|
-
/**
|
|
8
|
-
* Validation configuration
|
|
9
|
-
*/
|
|
10
|
-
type ValidationConfig = {
|
|
11
|
-
/** Schema for validating request body */
|
|
12
|
-
bodySchema?: ValidationSchema;
|
|
13
|
-
/** Schema for validating query parameters */
|
|
14
|
-
querySchema?: ValidationSchema;
|
|
15
|
-
/** Schema for validating path parameters */
|
|
16
|
-
paramsSchema?: ValidationSchema;
|
|
17
|
-
/** Schema for validating headers */
|
|
18
|
-
headersSchema?: ValidationSchema;
|
|
19
|
-
/**
|
|
20
|
-
* Custom validation function
|
|
21
|
-
* Throw ValidationError for invalid requests
|
|
22
|
-
*/
|
|
23
|
-
customValidator?: (ctx: ServerContext) => Promise<void>;
|
|
24
|
-
/** Skip validation for certain paths */
|
|
25
|
-
skipPaths?: string[];
|
|
26
|
-
/** Custom error formatter */
|
|
27
|
-
errorFormatter?: (errors: ServerValidationError[]) => unknown;
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Simple validation schema
|
|
31
|
-
* Can be extended with JSON Schema or Zod integration
|
|
32
|
-
*/
|
|
33
|
-
type ValidationSchema = {
|
|
34
|
-
/** Required fields */
|
|
35
|
-
required?: string[];
|
|
36
|
-
/** Field type definitions */
|
|
37
|
-
properties?: Record<string, PropertySchema>;
|
|
38
|
-
/** Allow additional properties */
|
|
39
|
-
additionalProperties?: boolean;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Property schema definition
|
|
43
|
-
*/
|
|
44
|
-
type PropertySchema = {
|
|
45
|
-
/** Property type */
|
|
46
|
-
type: "string" | "number" | "boolean" | "object" | "array";
|
|
47
|
-
/** Minimum value (for numbers) or length (for strings/arrays) */
|
|
48
|
-
minimum?: number;
|
|
49
|
-
/** Maximum value (for numbers) or length (for strings/arrays) */
|
|
50
|
-
maximum?: number;
|
|
51
|
-
/** Minimum length for strings (alias for minimum) */
|
|
52
|
-
minLength?: number;
|
|
53
|
-
/** Maximum length for strings (alias for maximum) */
|
|
54
|
-
maxLength?: number;
|
|
55
|
-
/** Minimum items for arrays */
|
|
56
|
-
minItems?: number;
|
|
57
|
-
/** Maximum items for arrays */
|
|
58
|
-
maxItems?: number;
|
|
59
|
-
/** Pattern for string validation (regex) */
|
|
60
|
-
pattern?: string;
|
|
61
|
-
/** Enum of allowed values */
|
|
62
|
-
enum?: unknown[];
|
|
63
|
-
/** Default value */
|
|
64
|
-
default?: unknown;
|
|
65
|
-
/** Custom validation function */
|
|
66
|
-
validate?: (value: unknown) => boolean | string;
|
|
67
|
-
};
|
|
5
|
+
import type { ExtendedValidationSchema, MiddlewareDefinition, MiddlewareRequestSchema, PropertySchema, ValidationConfig } from "../../types/index.js";
|
|
68
6
|
/**
|
|
69
7
|
* Re-export ValidationError from errors for convenience
|
|
70
8
|
*/
|
|
@@ -105,7 +43,7 @@ export declare function createFieldValidator(fieldName: string, rules: PropertyS
|
|
|
105
43
|
* });
|
|
106
44
|
* ```
|
|
107
45
|
*/
|
|
108
|
-
export declare function createBodyValidationMiddleware(schema:
|
|
46
|
+
export declare function createBodyValidationMiddleware(schema: MiddlewareRequestSchema): MiddlewareDefinition;
|
|
109
47
|
/**
|
|
110
48
|
* Create query-only validation middleware
|
|
111
49
|
*
|
|
@@ -119,28 +57,12 @@ export declare function createBodyValidationMiddleware(schema: ValidationSchema)
|
|
|
119
57
|
* });
|
|
120
58
|
* ```
|
|
121
59
|
*/
|
|
122
|
-
export declare function createQueryValidationMiddleware(schema:
|
|
60
|
+
export declare function createQueryValidationMiddleware(schema: MiddlewareRequestSchema): MiddlewareDefinition;
|
|
123
61
|
/**
|
|
124
62
|
* Create a combined validation middleware with full config support
|
|
125
63
|
* Alias for createRequestValidationMiddleware for compatibility
|
|
126
64
|
*/
|
|
127
65
|
export declare const createValidationMiddleware: typeof createRequestValidationMiddleware;
|
|
128
|
-
/**
|
|
129
|
-
* Extended property schema for common schemas
|
|
130
|
-
*/
|
|
131
|
-
type ExtendedPropertySchema = PropertySchema & {
|
|
132
|
-
format?: string;
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Extended validation schema for common schemas
|
|
136
|
-
*/
|
|
137
|
-
type ExtendedValidationSchema = {
|
|
138
|
-
type?: string;
|
|
139
|
-
format?: string;
|
|
140
|
-
required?: string[];
|
|
141
|
-
properties?: Record<string, ExtendedPropertySchema>;
|
|
142
|
-
additionalProperties?: boolean;
|
|
143
|
-
};
|
|
144
66
|
/**
|
|
145
67
|
* Common validation schemas for reuse
|
|
146
68
|
*/
|
|
@@ -287,6 +287,9 @@ export function createQueryValidationMiddleware(schema) {
|
|
|
287
287
|
* Alias for createRequestValidationMiddleware for compatibility
|
|
288
288
|
*/
|
|
289
289
|
export const createValidationMiddleware = createRequestValidationMiddleware;
|
|
290
|
+
// ============================================
|
|
291
|
+
// Common Schemas
|
|
292
|
+
// ============================================
|
|
290
293
|
/**
|
|
291
294
|
* Common validation schemas for reuse
|
|
292
295
|
*/
|
|
@@ -2,52 +2,7 @@
|
|
|
2
2
|
* OpenAPI 3.1 Specification Generator
|
|
3
3
|
* Generates OpenAPI documentation from NeuroLink server routes
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
6
|
-
/**
|
|
7
|
-
* OpenAPI generator configuration
|
|
8
|
-
*/
|
|
9
|
-
type OpenAPIGeneratorConfig = {
|
|
10
|
-
/** API info override */
|
|
11
|
-
info?: {
|
|
12
|
-
title?: string;
|
|
13
|
-
version?: string;
|
|
14
|
-
description?: string;
|
|
15
|
-
};
|
|
16
|
-
/** Server configuration */
|
|
17
|
-
servers?: Array<{
|
|
18
|
-
url: string;
|
|
19
|
-
description?: string;
|
|
20
|
-
}>;
|
|
21
|
-
/** Include security schemes */
|
|
22
|
-
includeSecurity?: boolean;
|
|
23
|
-
/** Base path for all routes */
|
|
24
|
-
basePath?: string;
|
|
25
|
-
/** Additional tags */
|
|
26
|
-
additionalTags?: Array<{
|
|
27
|
-
name: string;
|
|
28
|
-
description: string;
|
|
29
|
-
}>;
|
|
30
|
-
/** Custom schemas to add */
|
|
31
|
-
customSchemas?: Record<string, JsonObject>;
|
|
32
|
-
/** Routes to document in the OpenAPI spec */
|
|
33
|
-
routes?: RouteDefinition[];
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Generated OpenAPI specification
|
|
37
|
-
*/
|
|
38
|
-
type OpenAPISpec = {
|
|
39
|
-
openapi: "3.1.0";
|
|
40
|
-
info: JsonObject;
|
|
41
|
-
servers: JsonObject[];
|
|
42
|
-
tags: JsonObject[];
|
|
43
|
-
paths: Record<string, JsonObject>;
|
|
44
|
-
components: {
|
|
45
|
-
schemas: Record<string, JsonObject>;
|
|
46
|
-
securitySchemes?: Record<string, JsonObject>;
|
|
47
|
-
parameters?: Record<string, JsonObject>;
|
|
48
|
-
};
|
|
49
|
-
security?: JsonObject[];
|
|
50
|
-
};
|
|
5
|
+
import type { OpenAPIGeneratorConfig, OpenAPISpec, RouteDefinition, ServerAdapterConfig } from "../../types/index.js";
|
|
51
6
|
/**
|
|
52
7
|
* OpenAPI specification generator
|
|
53
8
|
* Generates OpenAPI 3.1 compliant documentation from route definitions
|
|
@@ -104,4 +59,3 @@ export declare function generateOpenAPISpec(routes: RouteDefinition[], config?:
|
|
|
104
59
|
* Generate OpenAPI spec from server adapter configuration
|
|
105
60
|
*/
|
|
106
61
|
export declare function generateOpenAPIFromConfig(serverConfig: ServerAdapterConfig, routes?: RouteDefinition[]): OpenAPISpec;
|
|
107
|
-
export {};
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Agent Routes
|
|
3
3
|
* Endpoints for agent execution and streaming
|
|
4
4
|
*/
|
|
5
|
+
import { SpanStatusCode } from "@opentelemetry/api";
|
|
5
6
|
import { ProviderFactory } from "../../factories/providerFactory.js";
|
|
7
|
+
import { withSpan } from "../../telemetry/withSpan.js";
|
|
8
|
+
import { tracers } from "../../telemetry/tracers.js";
|
|
6
9
|
import { createStreamRedactor } from "../utils/redaction.js";
|
|
7
10
|
import { AgentExecuteRequestSchema, createErrorResponse as createError, EmbedManyRequestSchema, EmbedRequestSchema, validateRequest, } from "../utils/validation.js";
|
|
8
11
|
/**
|
|
@@ -22,43 +25,53 @@ export function createAgentRoutes(basePath = "/api") {
|
|
|
22
25
|
return validation.error;
|
|
23
26
|
}
|
|
24
27
|
const request = validation.data;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
model: request.model,
|
|
33
|
-
systemPrompt: request.systemPrompt,
|
|
34
|
-
temperature: request.temperature,
|
|
35
|
-
maxTokens: request.maxTokens,
|
|
36
|
-
// Note: tools should be passed as Record<string, Tool> in generate options
|
|
37
|
-
// If request.tools is an array of tool names, we skip them
|
|
38
|
-
context: {
|
|
39
|
-
// When an authenticated user context exists (set by auth middleware),
|
|
40
|
-
// always use its IDs to prevent caller-supplied impersonation.
|
|
41
|
-
sessionId: ctx.user
|
|
42
|
-
? ctx.session?.id
|
|
43
|
-
: (ctx.session?.id ?? request.sessionId),
|
|
44
|
-
userId: ctx.user ? ctx.user.id : request.userId,
|
|
45
|
-
userEmail: ctx.user?.email,
|
|
46
|
-
userRoles: ctx.user?.roles,
|
|
47
|
-
requestId: ctx.requestId,
|
|
28
|
+
return withSpan({
|
|
29
|
+
name: "neurolink.http.execute",
|
|
30
|
+
tracer: tracers.http,
|
|
31
|
+
attributes: {
|
|
32
|
+
"http.route": "/api/agent/execute",
|
|
33
|
+
"ai.provider": request.provider || "default",
|
|
34
|
+
"ai.model": request.model || "default",
|
|
48
35
|
},
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
36
|
+
}, async () => {
|
|
37
|
+
// Normalize input
|
|
38
|
+
const input = typeof request.input === "string"
|
|
39
|
+
? { text: request.input }
|
|
40
|
+
: request.input;
|
|
41
|
+
const result = await ctx.neurolink.generate({
|
|
42
|
+
input,
|
|
43
|
+
provider: request.provider,
|
|
44
|
+
model: request.model,
|
|
45
|
+
systemPrompt: request.systemPrompt,
|
|
46
|
+
temperature: request.temperature,
|
|
47
|
+
maxTokens: request.maxTokens,
|
|
48
|
+
// Note: tools should be passed as Record<string, Tool> in generate options
|
|
49
|
+
// If request.tools is an array of tool names, we skip them
|
|
50
|
+
context: {
|
|
51
|
+
// When an authenticated user context exists (set by auth middleware),
|
|
52
|
+
// always use its IDs to prevent caller-supplied impersonation.
|
|
53
|
+
sessionId: ctx.user
|
|
54
|
+
? ctx.session?.id
|
|
55
|
+
: (ctx.session?.id ?? request.sessionId),
|
|
56
|
+
userId: ctx.user ? ctx.user.id : request.userId,
|
|
57
|
+
userEmail: ctx.user?.email,
|
|
58
|
+
userRoles: ctx.user?.roles,
|
|
59
|
+
requestId: ctx.requestId,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
// Map tool calls from SDK format to API format
|
|
63
|
+
const toolCalls = result.toolCalls?.map((tc) => ({
|
|
64
|
+
name: tc.toolName,
|
|
65
|
+
arguments: tc.args,
|
|
66
|
+
}));
|
|
67
|
+
return {
|
|
68
|
+
content: result.content || "",
|
|
69
|
+
provider: result.provider || request.provider || "unknown",
|
|
70
|
+
model: result.model || request.model || "unknown",
|
|
71
|
+
usage: result.usage,
|
|
72
|
+
toolCalls,
|
|
73
|
+
};
|
|
74
|
+
}); // end withSpan
|
|
62
75
|
},
|
|
63
76
|
description: "Execute agent with prompt",
|
|
64
77
|
tags: ["agent"],
|
|
@@ -99,11 +112,32 @@ export function createAgentRoutes(basePath = "/api") {
|
|
|
99
112
|
});
|
|
100
113
|
// Create redactor (no-op if redaction is not enabled)
|
|
101
114
|
const redactor = createStreamRedactor(ctx.redaction);
|
|
102
|
-
// Wrap stream
|
|
115
|
+
// Wrap stream with a span that stays open for the full consumption
|
|
116
|
+
// lifetime, not just the generator creation.
|
|
103
117
|
async function* redactedStream() {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
118
|
+
const streamSpan = tracers.http.startSpan("neurolink.http.stream", {
|
|
119
|
+
attributes: {
|
|
120
|
+
"http.route": "/api/agent/stream",
|
|
121
|
+
"ai.provider": request.provider || "default",
|
|
122
|
+
"ai.model": request.model || "default",
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
try {
|
|
126
|
+
for await (const chunk of result.stream) {
|
|
127
|
+
yield redactor(chunk);
|
|
128
|
+
}
|
|
129
|
+
streamSpan.setStatus({ code: SpanStatusCode.OK });
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
streamSpan.recordException(err instanceof Error ? err : new Error(String(err)));
|
|
133
|
+
streamSpan.setStatus({
|
|
134
|
+
code: SpanStatusCode.ERROR,
|
|
135
|
+
message: err instanceof Error ? err.message : String(err),
|
|
136
|
+
});
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
streamSpan.end();
|
|
107
141
|
}
|
|
108
142
|
}
|
|
109
143
|
return redactedStream();
|
|
@@ -136,14 +170,24 @@ export function createAgentRoutes(basePath = "/api") {
|
|
|
136
170
|
const request = validation.data;
|
|
137
171
|
try {
|
|
138
172
|
const providerName = request.provider || "openai";
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
173
|
+
return await withSpan({
|
|
174
|
+
name: "neurolink.http.embed",
|
|
175
|
+
tracer: tracers.http,
|
|
176
|
+
attributes: {
|
|
177
|
+
"http.route": "/api/agent/embed",
|
|
178
|
+
"ai.provider": providerName,
|
|
179
|
+
"ai.model": request.model || "default",
|
|
180
|
+
},
|
|
181
|
+
}, async () => {
|
|
182
|
+
const provider = await ProviderFactory.createProvider(providerName, request.model);
|
|
183
|
+
const embedding = await provider.embed(request.text, request.model);
|
|
184
|
+
return {
|
|
185
|
+
embedding,
|
|
186
|
+
provider: providerName,
|
|
187
|
+
model: request.model || "default",
|
|
188
|
+
dimension: embedding.length,
|
|
189
|
+
};
|
|
190
|
+
});
|
|
147
191
|
}
|
|
148
192
|
catch (error) {
|
|
149
193
|
return createError("EXECUTION_FAILED", error instanceof Error
|
|
@@ -165,15 +209,26 @@ export function createAgentRoutes(basePath = "/api") {
|
|
|
165
209
|
const request = validation.data;
|
|
166
210
|
try {
|
|
167
211
|
const providerName = request.provider || "openai";
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
212
|
+
return await withSpan({
|
|
213
|
+
name: "neurolink.http.embedMany",
|
|
214
|
+
tracer: tracers.http,
|
|
215
|
+
attributes: {
|
|
216
|
+
"http.route": "/api/agent/embed-many",
|
|
217
|
+
"ai.provider": providerName,
|
|
218
|
+
"ai.model": request.model || "default",
|
|
219
|
+
"ai.embed.count": request.texts.length,
|
|
220
|
+
},
|
|
221
|
+
}, async () => {
|
|
222
|
+
const provider = await ProviderFactory.createProvider(providerName, request.model);
|
|
223
|
+
const embeddings = await provider.embedMany(request.texts, request.model);
|
|
224
|
+
return {
|
|
225
|
+
embeddings,
|
|
226
|
+
provider: providerName,
|
|
227
|
+
model: request.model || "default",
|
|
228
|
+
count: embeddings.length,
|
|
229
|
+
dimension: embeddings[0]?.length ?? 0,
|
|
230
|
+
};
|
|
231
|
+
});
|
|
177
232
|
}
|
|
178
233
|
catch (error) {
|
|
179
234
|
return createError("EXECUTION_FAILED", error instanceof Error
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Without a router, models are passed through to the Anthropic provider.
|
|
11
11
|
*/
|
|
12
12
|
import type { ModelRouter } from "../../proxy/modelRouter.js";
|
|
13
|
-
import type { ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
|
|
13
|
+
import type { ParsedClaudeError, ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
|
|
14
14
|
/**
|
|
15
15
|
* Create Claude-compatible proxy routes.
|
|
16
16
|
*
|
|
@@ -23,10 +23,6 @@ import type { ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
|
|
|
23
23
|
*/
|
|
24
24
|
export declare function createClaudeProxyRoutes(modelRouter?: ModelRouter, basePath?: string, accountStrategy?: "round-robin" | "fill-first", passthroughMode?: boolean): RouteGroup;
|
|
25
25
|
export declare function getTransientSameAccountRetryDelayMs(retryNumber: number): number;
|
|
26
|
-
type ParsedClaudeError = {
|
|
27
|
-
errorType?: string;
|
|
28
|
-
message?: string;
|
|
29
|
-
};
|
|
30
26
|
/**
|
|
31
27
|
* Parse a Claude error payload when available.
|
|
32
28
|
*/
|
|
@@ -46,4 +42,3 @@ export declare function buildProxyFallbackOptions(parsed: ParsedClaudeRequest, o
|
|
|
46
42
|
* carry transient HTML responses (e.g. 520 pages) inside `error.message`.
|
|
47
43
|
*/
|
|
48
44
|
export declare function isTransientHttpFailure(status: number, errBody: string): boolean;
|
|
49
|
-
export {};
|