@juspay/neurolink 9.54.5 → 9.54.7
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 +4 -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 -1
- package/dist/auth/tokenStore.js +45 -4
- package/dist/autoresearch/tools.d.ts +1 -16
- package/dist/browser/neurolink.min.js +353 -353
- 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 +2 -2
- package/dist/client/httpClient.js +13 -0
- package/dist/client/sseClient.d.ts +2 -2
- 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 +7 -2
- 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/core/toolEvents.d.ts +0 -1
- 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 -1
- 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 +2 -2
- package/dist/lib/client/httpClient.js +13 -0
- package/dist/lib/client/sseClient.d.ts +2 -2
- 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 +7 -2
- 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/core/toolEvents.d.ts +0 -1
- 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/hippocampusInitializer.d.ts +1 -2
- package/dist/lib/memory/hippocampusInitializer.js +1 -1
- package/dist/lib/memory/memoryRetrievalTools.js +182 -141
- package/dist/lib/models/anthropicModels.d.ts +0 -1
- package/dist/lib/models/anthropicModels.js +1 -0
- package/dist/lib/neurolink.js +237 -41
- package/dist/lib/observability/exporterRegistry.d.ts +3 -22
- package/dist/lib/observability/exporters/sentryExporter.js +1 -0
- package/dist/lib/observability/metricsAggregator.d.ts +1 -31
- package/dist/lib/observability/retryPolicy.d.ts +0 -1
- package/dist/lib/observability/sampling/samplers.d.ts +0 -1
- package/dist/lib/observability/spanProcessor.d.ts +0 -1
- 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 +82 -0
- package/dist/lib/providers/googleNativeGemini3.d.ts +1 -2
- package/dist/lib/providers/googleVertex.js +52 -0
- 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/proxyHealth.d.ts +0 -1
- 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/routingPolicy.d.ts +1 -2
- 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/sanitizers/filename.d.ts +0 -1
- 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/hippocampusInitializer.d.ts +1 -2
- package/dist/memory/hippocampusInitializer.js +1 -1
- package/dist/memory/memoryRetrievalTools.js +182 -141
- package/dist/models/anthropicModels.d.ts +0 -1
- package/dist/models/anthropicModels.js +1 -0
- package/dist/neurolink.js +237 -41
- package/dist/observability/exporterRegistry.d.ts +3 -22
- package/dist/observability/exporters/sentryExporter.js +1 -0
- package/dist/observability/metricsAggregator.d.ts +1 -31
- package/dist/observability/retryPolicy.d.ts +0 -1
- package/dist/observability/sampling/samplers.d.ts +0 -1
- package/dist/observability/spanProcessor.d.ts +0 -1
- 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 +82 -0
- package/dist/providers/googleNativeGemini3.d.ts +1 -2
- package/dist/providers/googleVertex.js +52 -0
- 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/proxyHealth.d.ts +0 -1
- 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/routingPolicy.d.ts +1 -2
- 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/sanitizers/filename.d.ts +0 -1
- 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 -1
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import { randomUUID } from "crypto";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { ProviderFactory } from "../../factories/providerFactory.js";
|
|
10
|
+
import { withSpan } from "../../telemetry/withSpan.js";
|
|
11
|
+
import { tracers } from "../../telemetry/tracers.js";
|
|
10
12
|
import { logger } from "../../utils/logger.js";
|
|
11
13
|
import { rerank } from "../reranker/reranker.js";
|
|
12
14
|
/**
|
|
@@ -46,75 +48,87 @@ export function createVectorQueryTool(config, vectorStore) {
|
|
|
46
48
|
* @returns Query results with relevant context
|
|
47
49
|
*/
|
|
48
50
|
execute: async (params, context) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const rerankedResults = await rerank(results, params.query, rerankerModel, {
|
|
81
|
-
weights: rerankerConfig.weights,
|
|
82
|
-
topK: rerankerConfig.topK,
|
|
83
|
-
queryEmbedding,
|
|
51
|
+
return withSpan({
|
|
52
|
+
name: "neurolink.rag.vectorQuery",
|
|
53
|
+
tracer: tracers.rag,
|
|
54
|
+
attributes: {
|
|
55
|
+
"rag.vector.index": indexName,
|
|
56
|
+
"rag.vector.top_k": params.topK ?? topK,
|
|
57
|
+
"rag.vector.query_length": params.query.length,
|
|
58
|
+
},
|
|
59
|
+
}, async (span) => {
|
|
60
|
+
const startTime = Date.now();
|
|
61
|
+
try {
|
|
62
|
+
// Resolve vector store if it's a function
|
|
63
|
+
const store = typeof vectorStore === "function"
|
|
64
|
+
? vectorStore(context || {})
|
|
65
|
+
: vectorStore;
|
|
66
|
+
// Generate query embedding
|
|
67
|
+
const embeddingProvider = await ProviderFactory.createProvider(embeddingModel.provider, embeddingModel.modelName);
|
|
68
|
+
// Check if provider has embed method
|
|
69
|
+
if (typeof embeddingProvider
|
|
70
|
+
.embed !== "function") {
|
|
71
|
+
throw new Error(`Provider ${embeddingModel.provider} does not support embeddings`);
|
|
72
|
+
}
|
|
73
|
+
const queryEmbedding = await embeddingProvider.embed(params.query);
|
|
74
|
+
// Query the vector store
|
|
75
|
+
let results = await store.query({
|
|
76
|
+
indexName,
|
|
77
|
+
queryVector: queryEmbedding,
|
|
78
|
+
topK: params.topK || topK,
|
|
79
|
+
filter: params.filter,
|
|
80
|
+
includeVectors,
|
|
81
|
+
...providerOptions,
|
|
84
82
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
83
|
+
let reranked = false;
|
|
84
|
+
// Apply reranking if configured
|
|
85
|
+
if (rerankerConfig && results.length > 0) {
|
|
86
|
+
const rerankerModel = await ProviderFactory.createProvider(typeof rerankerConfig.model === "object"
|
|
87
|
+
? rerankerConfig.model.provider
|
|
88
|
+
: rerankerConfig.model, typeof rerankerConfig.model === "object"
|
|
89
|
+
? rerankerConfig.model.modelName
|
|
90
|
+
: rerankerConfig.model);
|
|
91
|
+
const rerankedResults = await rerank(results, params.query, rerankerModel, {
|
|
92
|
+
weights: rerankerConfig.weights,
|
|
93
|
+
topK: rerankerConfig.topK,
|
|
94
|
+
queryEmbedding,
|
|
95
|
+
});
|
|
96
|
+
results = rerankedResults.map((r) => r.result);
|
|
97
|
+
reranked = true;
|
|
98
|
+
}
|
|
99
|
+
// Format results
|
|
100
|
+
const relevantContext = results
|
|
101
|
+
.map((r, i) => `[${i + 1}] ${r.metadata?.text || r.text || ""}`)
|
|
102
|
+
.join("\n\n");
|
|
103
|
+
const queryTime = Date.now() - startTime;
|
|
104
|
+
logger.info("[VectorQueryTool] Query completed", {
|
|
105
|
+
query: params.query.slice(0, 50),
|
|
106
|
+
resultsCount: results.length,
|
|
105
107
|
queryTime,
|
|
106
108
|
reranked,
|
|
107
109
|
filtered: !!params.filter,
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
});
|
|
111
|
+
span.setAttribute("rag.vector.result_count", results.length);
|
|
112
|
+
span.setAttribute("rag.vector.reranked", reranked);
|
|
113
|
+
return {
|
|
114
|
+
relevantContext,
|
|
115
|
+
sources: includeSources ? results : [],
|
|
116
|
+
totalResults: results.length,
|
|
117
|
+
metadata: {
|
|
118
|
+
queryTime,
|
|
119
|
+
reranked,
|
|
120
|
+
filtered: !!params.filter,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
logger.error("[VectorQueryTool] Query failed", {
|
|
126
|
+
query: params.query.slice(0, 50),
|
|
127
|
+
error: error instanceof Error ? error.message : String(error),
|
|
128
|
+
});
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
}); // end withSpan
|
|
118
132
|
},
|
|
119
133
|
};
|
|
120
134
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Simple interface for developers to register custom tools
|
|
4
4
|
*/
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
import type {
|
|
6
|
+
import type { JsonValue, MCPServerCategory, MCPServerInfo, SDKToolContext, SdkSimpleTool, ZodUnknownSchema } from "../types/index.js";
|
|
7
7
|
/**
|
|
8
8
|
* Enhanced validation configuration
|
|
9
9
|
*/
|
|
@@ -16,44 +16,10 @@ declare const VALIDATION_CONFIG: {
|
|
|
16
16
|
readonly RECOMMENDED_PATTERNS: readonly ["get_data", "fetch_info", "calculate_value", "send_message", "create_item", "update_record", "delete_file", "validate_input"];
|
|
17
17
|
readonly COMPILED_PATTERN_REGEXES: RegExp[];
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
20
|
-
* Context provided to tools during execution
|
|
21
|
-
* Type alias for backward compatibility
|
|
22
|
-
*/
|
|
23
|
-
type ToolContext = SDKToolContext;
|
|
24
|
-
/**
|
|
25
|
-
* Simple tool interface for SDK users
|
|
26
|
-
* Extends the core SimpleTool with specific types
|
|
27
|
-
*/
|
|
28
|
-
type SimpleTool<TArgs = ToolArgs, TResult = JsonValue> = Omit<CoreSimpleTool<TArgs, TResult>, "execute"> & {
|
|
29
|
-
/**
|
|
30
|
-
* Tool description that helps AI understand when to use it
|
|
31
|
-
*/
|
|
32
|
-
description: string;
|
|
33
|
-
/**
|
|
34
|
-
* Parameters schema using Zod (optional)
|
|
35
|
-
*/
|
|
36
|
-
parameters?: ZodUnknownSchema;
|
|
37
|
-
/**
|
|
38
|
-
* Tool execution function
|
|
39
|
-
*/
|
|
40
|
-
execute: (params: TArgs, context?: ToolContext) => Promise<TResult>;
|
|
41
|
-
/**
|
|
42
|
-
* Optional metadata
|
|
43
|
-
*/
|
|
44
|
-
metadata?: {
|
|
45
|
-
category?: string;
|
|
46
|
-
version?: string;
|
|
47
|
-
author?: string;
|
|
48
|
-
tags?: string[];
|
|
49
|
-
documentation?: string;
|
|
50
|
-
[key: string]: JsonValue | undefined;
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
19
|
/**
|
|
54
20
|
* Creates a MCPServerInfo from a set of tools
|
|
55
21
|
*/
|
|
56
|
-
export declare function createMCPServerFromTools(serverId: string, tools: Record<string,
|
|
22
|
+
export declare function createMCPServerFromTools(serverId: string, tools: Record<string, SdkSimpleTool>, metadata?: {
|
|
57
23
|
title?: string;
|
|
58
24
|
description?: string;
|
|
59
25
|
category?: MCPServerCategory;
|
|
@@ -64,29 +30,29 @@ export declare function createMCPServerFromTools(serverId: string, tools: Record
|
|
|
64
30
|
/**
|
|
65
31
|
* Helper to create a tool with type safety
|
|
66
32
|
*/
|
|
67
|
-
export declare function createTool(config:
|
|
33
|
+
export declare function createTool(config: SdkSimpleTool): SdkSimpleTool;
|
|
68
34
|
/**
|
|
69
35
|
* Helper to create a validated tool with suggested improvements
|
|
70
36
|
*/
|
|
71
|
-
export declare function createValidatedTool(name: string, config:
|
|
37
|
+
export declare function createValidatedTool(name: string, config: SdkSimpleTool, options?: {
|
|
72
38
|
strict?: boolean;
|
|
73
39
|
suggestions?: boolean;
|
|
74
|
-
}):
|
|
40
|
+
}): SdkSimpleTool;
|
|
75
41
|
/**
|
|
76
42
|
* Helper to create a tool with typed parameters
|
|
77
43
|
*/
|
|
78
|
-
export declare function createTypedTool<TParams extends ZodUnknownSchema>(config: Omit<
|
|
44
|
+
export declare function createTypedTool<TParams extends ZodUnknownSchema>(config: Omit<SdkSimpleTool, "execute"> & {
|
|
79
45
|
parameters: TParams;
|
|
80
|
-
execute: (params: z.infer<TParams>, context?:
|
|
81
|
-
}):
|
|
46
|
+
execute: (params: z.infer<TParams>, context?: SDKToolContext) => Promise<JsonValue> | JsonValue;
|
|
47
|
+
}): SdkSimpleTool;
|
|
82
48
|
/**
|
|
83
49
|
* Validate tool configuration with detailed error messages
|
|
84
50
|
*/
|
|
85
|
-
export declare function validateTool(name: string, tool:
|
|
51
|
+
export declare function validateTool(name: string, tool: SdkSimpleTool): void;
|
|
86
52
|
/**
|
|
87
53
|
* Utility to validate multiple tools at once
|
|
88
54
|
*/
|
|
89
|
-
export declare function validateTools(tools: Record<string,
|
|
55
|
+
export declare function validateTools(tools: Record<string, SdkSimpleTool>): {
|
|
90
56
|
valid: string[];
|
|
91
57
|
invalid: Array<{
|
|
92
58
|
name: string;
|
|
@@ -168,7 +168,7 @@ function provideToolSuggestions(name, tool) {
|
|
|
168
168
|
* Helper to create a tool with typed parameters
|
|
169
169
|
*/
|
|
170
170
|
export function createTypedTool(config) {
|
|
171
|
-
// Wrap the typed execute to match
|
|
171
|
+
// Wrap the typed execute to match SdkSimpleTool's signature.
|
|
172
172
|
// The Zod schema validates params at runtime, so the cast within the wrapper is safe.
|
|
173
173
|
const wrappedExecute = async (params, context) => {
|
|
174
174
|
const result = await config.execute(params, context);
|
|
@@ -2,16 +2,7 @@
|
|
|
2
2
|
* Abort Signal Middleware
|
|
3
3
|
* Provides client disconnection handling for long-running requests
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
6
|
-
/**
|
|
7
|
-
* Abort signal middleware options
|
|
8
|
-
*/
|
|
9
|
-
type AbortSignalMiddlewareOptions = {
|
|
10
|
-
/** Callback when abort is triggered */
|
|
11
|
-
onAbort?: (ctx: ServerContext) => void;
|
|
12
|
-
/** Request timeout in milliseconds */
|
|
13
|
-
timeout?: number;
|
|
14
|
-
};
|
|
5
|
+
import type { AbortSignalMiddlewareOptions, MiddlewareDefinition } from "../../types/index.js";
|
|
15
6
|
/**
|
|
16
7
|
* Create abort signal middleware for handling client disconnections.
|
|
17
8
|
*
|
|
@@ -59,4 +50,3 @@ export declare function createExpressAbortMiddleware(options?: AbortSignalMiddle
|
|
|
59
50
|
writableFinished?: boolean;
|
|
60
51
|
locals: Record<string, unknown>;
|
|
61
52
|
}, next: () => void) => void;
|
|
62
|
-
export {};
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Authentication Middleware
|
|
3
3
|
* Provides flexible authentication support for server adapters
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
6
|
-
import type { AuthResult } from "../../types/index.js";
|
|
5
|
+
import type { ApiKeyAuthOptions, AuthResult, AuthenticatedUser, BearerAuthOptions, MiddlewareDefinition, ServerServerAuthConfig, TokenValidator } from "../../types/index.js";
|
|
7
6
|
/**
|
|
8
7
|
* Check if request is from development playground.
|
|
9
8
|
* Detects playground requests via special headers for development mode.
|
|
@@ -111,18 +110,6 @@ export declare class ApiKeyStore {
|
|
|
111
110
|
/**
|
|
112
111
|
* Options for bearer auth middleware
|
|
113
112
|
*/
|
|
114
|
-
type BearerAuthOptions = {
|
|
115
|
-
/** Whether authentication is required (default: true) */
|
|
116
|
-
required?: boolean;
|
|
117
|
-
/** Header name (default: "authorization") */
|
|
118
|
-
headerName?: string;
|
|
119
|
-
/** Paths to skip authentication */
|
|
120
|
-
skipPaths?: string[];
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* Token validation function type
|
|
124
|
-
*/
|
|
125
|
-
type TokenValidator = (token: string) => Promise<AuthenticatedUser | null> | AuthenticatedUser | null;
|
|
126
113
|
/**
|
|
127
114
|
* Create bearer token authentication middleware
|
|
128
115
|
*
|
|
@@ -141,12 +128,6 @@ export declare function createBearerAuthMiddleware(validate: TokenValidator, opt
|
|
|
141
128
|
/**
|
|
142
129
|
* Options for API key auth middleware
|
|
143
130
|
*/
|
|
144
|
-
type ApiKeyAuthOptions = {
|
|
145
|
-
/** Header name (default: "x-api-key") */
|
|
146
|
-
headerName?: string;
|
|
147
|
-
/** Paths to skip authentication */
|
|
148
|
-
skipPaths?: string[];
|
|
149
|
-
};
|
|
150
131
|
/**
|
|
151
132
|
* Create API key authentication middleware
|
|
152
133
|
*
|
|
@@ -183,4 +164,3 @@ export declare function createRoleAuthMiddleware(requiredRoles: string[], option
|
|
|
183
164
|
export declare function createPermissionAuthMiddleware(requiredPermissions: string[], options?: {
|
|
184
165
|
requireAll?: boolean;
|
|
185
166
|
}): MiddlewareDefinition;
|
|
186
|
-
export {};
|
|
@@ -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
|
*
|