@qodo/sdk 0.13.4 → 2.0.0-next.0
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/LICENSE +31 -118
- package/README.md +133 -121
- package/bin/qodo-skills.mjs +13 -0
- package/bundled-skills/code-review/SKILL.md +41 -0
- package/bundled-skills/pr-summary/SKILL.md +59 -0
- package/bundled-skills/test-gen/SKILL.md +47 -0
- package/dist/auth/index.browser.d.ts +38 -0
- package/dist/auth/index.browser.d.ts.map +1 -0
- package/dist/auth/index.browser.js +62 -0
- package/dist/auth/index.browser.js.map +1 -0
- package/dist/auth/index.d.ts +44 -30
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +57 -110
- package/dist/auth/index.js.map +1 -1
- package/dist/client/AgentsClient.d.ts +33 -0
- package/dist/client/AgentsClient.d.ts.map +1 -0
- package/dist/client/AgentsClient.js +40 -0
- package/dist/client/AgentsClient.js.map +1 -0
- package/dist/client/ArtifactsClient.d.ts +43 -0
- package/dist/client/ArtifactsClient.d.ts.map +1 -0
- package/dist/client/ArtifactsClient.js +54 -0
- package/dist/client/ArtifactsClient.js.map +1 -0
- package/dist/client/BulletinClient.d.ts +45 -0
- package/dist/client/BulletinClient.d.ts.map +1 -0
- package/dist/client/BulletinClient.js +51 -0
- package/dist/client/BulletinClient.js.map +1 -0
- package/dist/client/InfoClient.d.ts +58 -0
- package/dist/client/InfoClient.d.ts.map +1 -0
- package/dist/client/InfoClient.js +135 -0
- package/dist/client/InfoClient.js.map +1 -0
- package/dist/client/PipelineClient.d.ts +162 -0
- package/dist/client/PipelineClient.d.ts.map +1 -0
- package/dist/client/PipelineClient.js +340 -0
- package/dist/client/PipelineClient.js.map +1 -0
- package/dist/client/QarRegistryClient.d.ts +396 -0
- package/dist/client/QarRegistryClient.d.ts.map +1 -0
- package/dist/client/QarRegistryClient.js +536 -0
- package/dist/client/QarRegistryClient.js.map +1 -0
- package/dist/client/QodoClient.d.ts +296 -0
- package/dist/client/QodoClient.d.ts.map +1 -0
- package/dist/client/QodoClient.js +803 -0
- package/dist/client/QodoClient.js.map +1 -0
- package/dist/client/SpecsClient.d.ts +121 -0
- package/dist/client/SpecsClient.d.ts.map +1 -0
- package/dist/client/SpecsClient.js +252 -0
- package/dist/client/SpecsClient.js.map +1 -0
- package/dist/client/StateClient.d.ts +35 -0
- package/dist/client/StateClient.d.ts.map +1 -0
- package/dist/client/StateClient.js +36 -0
- package/dist/client/StateClient.js.map +1 -0
- package/dist/client/TaskClient.d.ts +706 -0
- package/dist/client/TaskClient.d.ts.map +1 -0
- package/dist/client/TaskClient.js +2522 -0
- package/dist/client/TaskClient.js.map +1 -0
- package/dist/client/ToolClient.d.ts +278 -0
- package/dist/client/ToolClient.d.ts.map +1 -0
- package/dist/client/ToolClient.js +1115 -0
- package/dist/client/ToolClient.js.map +1 -0
- package/dist/client/a2a/index.d.ts +10 -0
- package/dist/client/a2a/index.d.ts.map +1 -0
- package/dist/client/a2a/index.js +9 -0
- package/dist/client/a2a/index.js.map +1 -0
- package/dist/client/a2a/registerA2A.d.ts +170 -0
- package/dist/client/a2a/registerA2A.d.ts.map +1 -0
- package/dist/client/a2a/registerA2A.js +85 -0
- package/dist/client/a2a/registerA2A.js.map +1 -0
- package/dist/client/connection.d.ts +800 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +2020 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/errors.d.ts +735 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +921 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +26 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +20 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/inlineGraph.d.ts +66 -0
- package/dist/client/inlineGraph.d.ts.map +1 -0
- package/dist/client/inlineGraph.js +500 -0
- package/dist/client/inlineGraph.js.map +1 -0
- package/dist/client/internal/thenable.d.ts +27 -0
- package/dist/client/internal/thenable.d.ts.map +1 -0
- package/dist/client/internal/thenable.js +31 -0
- package/dist/client/internal/thenable.js.map +1 -0
- package/dist/client/iterator.d.ts +32 -0
- package/dist/client/iterator.d.ts.map +1 -0
- package/dist/client/iterator.js +73 -0
- package/dist/client/iterator.js.map +1 -0
- package/dist/client/mcp/McpClientPool.browser.d.ts +76 -0
- package/dist/client/mcp/McpClientPool.browser.d.ts.map +1 -0
- package/dist/client/mcp/McpClientPool.browser.js +78 -0
- package/dist/client/mcp/McpClientPool.browser.js.map +1 -0
- package/dist/client/mcp/McpClientPool.d.ts +236 -0
- package/dist/client/mcp/McpClientPool.d.ts.map +1 -0
- package/dist/client/mcp/McpClientPool.js +585 -0
- package/dist/client/mcp/McpClientPool.js.map +1 -0
- package/dist/client/mcp/projection.d.ts +109 -0
- package/dist/client/mcp/projection.d.ts.map +1 -0
- package/dist/client/mcp/projection.js +446 -0
- package/dist/client/mcp/projection.js.map +1 -0
- package/dist/client/mcp/substituteEnv.browser.d.ts +18 -0
- package/dist/client/mcp/substituteEnv.browser.d.ts.map +1 -0
- package/dist/client/mcp/substituteEnv.browser.js +20 -0
- package/dist/client/mcp/substituteEnv.browser.js.map +1 -0
- package/dist/client/mcp/substituteEnv.d.ts +45 -0
- package/dist/client/mcp/substituteEnv.d.ts.map +1 -0
- package/dist/client/mcp/substituteEnv.js +63 -0
- package/dist/client/mcp/substituteEnv.js.map +1 -0
- package/dist/client/observers.d.ts +57 -0
- package/dist/client/observers.d.ts.map +1 -0
- package/dist/client/observers.js +203 -0
- package/dist/client/observers.js.map +1 -0
- package/dist/client/options.d.ts +269 -0
- package/dist/client/options.d.ts.map +1 -0
- package/dist/client/options.js +9 -0
- package/dist/client/options.js.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts +17 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.js +24 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.js.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.d.ts +33 -0
- package/dist/client/tools/_readlineApprovalPrompt.d.ts.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.js +90 -0
- package/dist/client/tools/_readlineApprovalPrompt.js.map +1 -0
- package/dist/client/tools/approval.d.ts +280 -0
- package/dist/client/tools/approval.d.ts.map +1 -0
- package/dist/client/tools/approval.js +229 -0
- package/dist/client/tools/approval.js.map +1 -0
- package/dist/client/tools/bindFunctionToolDefs.d.ts +156 -0
- package/dist/client/tools/bindFunctionToolDefs.d.ts.map +1 -0
- package/dist/client/tools/bindFunctionToolDefs.js +360 -0
- package/dist/client/tools/bindFunctionToolDefs.js.map +1 -0
- package/dist/client/tools/defineFunctionTool.d.ts +277 -0
- package/dist/client/tools/defineFunctionTool.d.ts.map +1 -0
- package/dist/client/tools/defineFunctionTool.js +190 -0
- package/dist/client/tools/defineFunctionTool.js.map +1 -0
- package/dist/client/transport.browser.d.ts +20 -0
- package/dist/client/transport.browser.d.ts.map +1 -0
- package/dist/client/transport.browser.js +29 -0
- package/dist/client/transport.browser.js.map +1 -0
- package/dist/client/transport.d.ts +47 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +102 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/transport.shared.d.ts +30 -0
- package/dist/client/transport.shared.d.ts.map +1 -0
- package/dist/client/transport.shared.js +40 -0
- package/dist/client/transport.shared.js.map +1 -0
- package/dist/client/uuid.d.ts +32 -0
- package/dist/client/uuid.d.ts.map +1 -0
- package/dist/client/uuid.js +65 -0
- package/dist/client/uuid.js.map +1 -0
- package/dist/index.d.ts +88 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +166 -43
- package/dist/index.js.map +1 -1
- package/dist/observability/attributes.d.ts +136 -0
- package/dist/observability/attributes.d.ts.map +1 -0
- package/dist/observability/attributes.js +184 -0
- package/dist/observability/attributes.js.map +1 -0
- package/dist/observability/index.d.ts +14 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +11 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/resolveOTel.browser.d.ts +13 -0
- package/dist/observability/resolveOTel.browser.d.ts.map +1 -0
- package/dist/observability/resolveOTel.browser.js +14 -0
- package/dist/observability/resolveOTel.browser.js.map +1 -0
- package/dist/observability/resolveOTel.d.ts +28 -0
- package/dist/observability/resolveOTel.d.ts.map +1 -0
- package/dist/observability/resolveOTel.js +74 -0
- package/dist/observability/resolveOTel.js.map +1 -0
- package/dist/observability/spans.d.ts +198 -0
- package/dist/observability/spans.d.ts.map +1 -0
- package/dist/observability/spans.js +300 -0
- package/dist/observability/spans.js.map +1 -0
- package/dist/observability/traceContext.d.ts +51 -0
- package/dist/observability/traceContext.d.ts.map +1 -0
- package/dist/observability/traceContext.js +151 -0
- package/dist/observability/traceContext.js.map +1 -0
- package/dist/observability/transportMetrics.d.ts +58 -0
- package/dist/observability/transportMetrics.d.ts.map +1 -0
- package/dist/observability/transportMetrics.js +55 -0
- package/dist/observability/transportMetrics.js.map +1 -0
- package/dist/qar/agentSpec.d.ts +93 -0
- package/dist/qar/agentSpec.d.ts.map +1 -0
- package/dist/qar/agentSpec.js +184 -0
- package/dist/qar/agentSpec.js.map +1 -0
- package/dist/qar/clientEvents.d.ts +86 -0
- package/dist/qar/clientEvents.d.ts.map +1 -0
- package/dist/qar/clientEvents.js +36 -0
- package/dist/qar/clientEvents.js.map +1 -0
- package/dist/qar/envelopes.d.ts +227 -0
- package/dist/qar/envelopes.d.ts.map +1 -0
- package/dist/qar/envelopes.js +67 -0
- package/dist/qar/envelopes.js.map +1 -0
- package/dist/qar/generated/envelope.d.ts +332 -0
- package/dist/qar/generated/envelope.d.ts.map +1 -0
- package/dist/qar/generated/envelope.js +15 -0
- package/dist/qar/generated/envelope.js.map +1 -0
- package/dist/qar/generated/qar-info.d.ts +76 -0
- package/dist/qar/generated/qar-info.d.ts.map +1 -0
- package/dist/qar/generated/qar-info.js +15 -0
- package/dist/qar/generated/qar-info.js.map +1 -0
- package/dist/qar/generated/qodo-task-start-payload.d.ts +54 -0
- package/dist/qar/generated/qodo-task-start-payload.d.ts.map +1 -0
- package/dist/qar/generated/qodo-task-start-payload.js +15 -0
- package/dist/qar/generated/qodo-task-start-payload.js.map +1 -0
- package/dist/qar/ids.d.ts +19 -0
- package/dist/qar/ids.d.ts.map +1 -0
- package/dist/qar/ids.js +11 -0
- package/dist/qar/ids.js.map +1 -0
- package/dist/qar/index.d.ts +24 -0
- package/dist/qar/index.d.ts.map +1 -0
- package/dist/qar/index.js +16 -0
- package/dist/qar/index.js.map +1 -0
- package/dist/qar/info.d.ts +37 -0
- package/dist/qar/info.d.ts.map +1 -0
- package/dist/qar/info.js +17 -0
- package/dist/qar/info.js.map +1 -0
- package/dist/qar/json.d.ts +14 -0
- package/dist/qar/json.d.ts.map +1 -0
- package/dist/qar/json.js +9 -0
- package/dist/qar/json.js.map +1 -0
- package/dist/qar/payloads.d.ts +480 -0
- package/dist/qar/payloads.d.ts.map +1 -0
- package/dist/qar/payloads.js +37 -0
- package/dist/qar/payloads.js.map +1 -0
- package/dist/qar/specs.d.ts +604 -0
- package/dist/qar/specs.d.ts.map +1 -0
- package/dist/qar/specs.js +29 -0
- package/dist/qar/specs.js.map +1 -0
- package/dist/qar/taskEvents.d.ts +25 -0
- package/dist/qar/taskEvents.d.ts.map +1 -0
- package/dist/qar/taskEvents.js +22 -0
- package/dist/qar/taskEvents.js.map +1 -0
- package/dist/qar/trace.d.ts +12 -0
- package/dist/qar/trace.d.ts.map +1 -0
- package/dist/qar/trace.js +12 -0
- package/dist/qar/trace.js.map +1 -0
- package/dist/skills/activation.d.ts +177 -0
- package/dist/skills/activation.d.ts.map +1 -0
- package/dist/skills/activation.js +428 -0
- package/dist/skills/activation.js.map +1 -0
- package/dist/skills/cli/index.browser.d.ts +18 -0
- package/dist/skills/cli/index.browser.d.ts.map +1 -0
- package/dist/skills/cli/index.browser.js +27 -0
- package/dist/skills/cli/index.browser.js.map +1 -0
- package/dist/skills/cli/index.d.ts +37 -0
- package/dist/skills/cli/index.d.ts.map +1 -0
- package/dist/skills/cli/index.js +494 -0
- package/dist/skills/cli/index.js.map +1 -0
- package/dist/skills/events.d.ts +255 -0
- package/dist/skills/events.d.ts.map +1 -0
- package/dist/skills/events.js +224 -0
- package/dist/skills/events.js.map +1 -0
- package/dist/skills/index.d.ts +45 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +34 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/inject.d.ts +57 -0
- package/dist/skills/inject.d.ts.map +1 -0
- package/dist/skills/inject.js +162 -0
- package/dist/skills/inject.js.map +1 -0
- package/dist/skills/lockfile.browser.d.ts +56 -0
- package/dist/skills/lockfile.browser.d.ts.map +1 -0
- package/dist/skills/lockfile.browser.js +55 -0
- package/dist/skills/lockfile.browser.js.map +1 -0
- package/dist/skills/lockfile.d.ts +137 -0
- package/dist/skills/lockfile.d.ts.map +1 -0
- package/dist/skills/lockfile.js +423 -0
- package/dist/skills/lockfile.js.map +1 -0
- package/dist/skills/manager.browser.d.ts +94 -0
- package/dist/skills/manager.browser.d.ts.map +1 -0
- package/dist/skills/manager.browser.js +159 -0
- package/dist/skills/manager.browser.js.map +1 -0
- package/dist/skills/manager.d.ts +362 -0
- package/dist/skills/manager.d.ts.map +1 -0
- package/dist/skills/manager.js +1386 -0
- package/dist/skills/manager.js.map +1 -0
- package/dist/skills/mcp/index.d.ts +15 -0
- package/dist/skills/mcp/index.d.ts.map +1 -0
- package/dist/skills/mcp/index.js +12 -0
- package/dist/skills/mcp/index.js.map +1 -0
- package/dist/skills/mcp/path.browser.d.ts +27 -0
- package/dist/skills/mcp/path.browser.d.ts.map +1 -0
- package/dist/skills/mcp/path.browser.js +33 -0
- package/dist/skills/mcp/path.browser.js.map +1 -0
- package/dist/skills/mcp/path.d.ts +57 -0
- package/dist/skills/mcp/path.d.ts.map +1 -0
- package/dist/skills/mcp/path.js +150 -0
- package/dist/skills/mcp/path.js.map +1 -0
- package/dist/skills/mcp/server.browser.d.ts +32 -0
- package/dist/skills/mcp/server.browser.d.ts.map +1 -0
- package/dist/skills/mcp/server.browser.js +53 -0
- package/dist/skills/mcp/server.browser.js.map +1 -0
- package/dist/skills/mcp/server.d.ts +144 -0
- package/dist/skills/mcp/server.d.ts.map +1 -0
- package/dist/skills/mcp/server.js +841 -0
- package/dist/skills/mcp/server.js.map +1 -0
- package/dist/skills/mcp/types.d.ts +72 -0
- package/dist/skills/mcp/types.d.ts.map +1 -0
- package/dist/skills/mcp/types.js +20 -0
- package/dist/skills/mcp/types.js.map +1 -0
- package/dist/skills/mcp/wireDefs.d.ts +58 -0
- package/dist/skills/mcp/wireDefs.d.ts.map +1 -0
- package/dist/skills/mcp/wireDefs.js +141 -0
- package/dist/skills/mcp/wireDefs.js.map +1 -0
- package/dist/skills/parser.d.ts +63 -0
- package/dist/skills/parser.d.ts.map +1 -0
- package/dist/skills/parser.js +755 -0
- package/dist/skills/parser.js.map +1 -0
- package/dist/skills/prefilter.d.ts +104 -0
- package/dist/skills/prefilter.d.ts.map +1 -0
- package/dist/skills/prefilter.js +398 -0
- package/dist/skills/prefilter.js.map +1 -0
- package/dist/skills/preprocess.d.ts +169 -0
- package/dist/skills/preprocess.d.ts.map +1 -0
- package/dist/skills/preprocess.js +535 -0
- package/dist/skills/preprocess.js.map +1 -0
- package/dist/skills/render.d.ts +83 -0
- package/dist/skills/render.d.ts.map +1 -0
- package/dist/skills/render.js +397 -0
- package/dist/skills/render.js.map +1 -0
- package/dist/skills/sources/index.browser.d.ts +29 -0
- package/dist/skills/sources/index.browser.d.ts.map +1 -0
- package/dist/skills/sources/index.browser.js +16 -0
- package/dist/skills/sources/index.browser.js.map +1 -0
- package/dist/skills/sources/index.d.ts +59 -0
- package/dist/skills/sources/index.d.ts.map +1 -0
- package/dist/skills/sources/index.js +471 -0
- package/dist/skills/sources/index.js.map +1 -0
- package/dist/skills/sources/walk.browser.d.ts +17 -0
- package/dist/skills/sources/walk.browser.d.ts.map +1 -0
- package/dist/skills/sources/walk.browser.js +19 -0
- package/dist/skills/sources/walk.browser.js.map +1 -0
- package/dist/skills/sources/walk.d.ts +68 -0
- package/dist/skills/sources/walk.d.ts.map +1 -0
- package/dist/skills/sources/walk.js +264 -0
- package/dist/skills/sources/walk.js.map +1 -0
- package/dist/skills/substitute.d.ts +87 -0
- package/dist/skills/substitute.d.ts.map +1 -0
- package/dist/skills/substitute.js +322 -0
- package/dist/skills/substitute.js.map +1 -0
- package/dist/skills/testing/SkillKit.browser.d.ts +62 -0
- package/dist/skills/testing/SkillKit.browser.d.ts.map +1 -0
- package/dist/skills/testing/SkillKit.browser.js +41 -0
- package/dist/skills/testing/SkillKit.browser.js.map +1 -0
- package/dist/skills/testing/SkillKit.d.ts +130 -0
- package/dist/skills/testing/SkillKit.d.ts.map +1 -0
- package/dist/skills/testing/SkillKit.js +316 -0
- package/dist/skills/testing/SkillKit.js.map +1 -0
- package/dist/skills/testing/index.d.ts +9 -0
- package/dist/skills/testing/index.d.ts.map +1 -0
- package/dist/skills/testing/index.js +8 -0
- package/dist/skills/testing/index.js.map +1 -0
- package/dist/skills/trust.d.ts +72 -0
- package/dist/skills/trust.d.ts.map +1 -0
- package/dist/skills/trust.js +183 -0
- package/dist/skills/trust.js.map +1 -0
- package/dist/skills/types.d.ts +627 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +85 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validator.d.ts +95 -0
- package/dist/skills/validator.d.ts.map +1 -0
- package/dist/skills/validator.js +486 -0
- package/dist/skills/validator.js.map +1 -0
- package/dist/tracing/PipelineTracer.d.ts +35 -22
- package/dist/tracing/PipelineTracer.d.ts.map +1 -1
- package/dist/tracing/PipelineTracer.js +106 -61
- package/dist/tracing/PipelineTracer.js.map +1 -1
- package/dist/tracing/SdkTracer.d.ts +63 -61
- package/dist/tracing/SdkTracer.d.ts.map +1 -1
- package/dist/tracing/SdkTracer.js +185 -177
- package/dist/tracing/SdkTracer.js.map +1 -1
- package/dist/tracing/index.d.ts +10 -1
- package/dist/tracing/index.d.ts.map +1 -1
- package/dist/tracing/index.js +9 -0
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/types.d.ts +89 -16
- package/dist/tracing/types.d.ts.map +1 -1
- package/dist/tracing/types.js +17 -4
- package/dist/tracing/types.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +10 -20
- package/dist/version.js.map +1 -1
- package/package.json +53 -39
- package/.claude/skills/qodo-agent/SKILL.md +0 -974
- package/.claude/skills/qodo-agent/assets/programmatic-agent.ts +0 -407
- package/.claude/skills/qodo-agent/references/builtin-tools.md +0 -342
- package/.claude/skills/qodo-agent/references/common-issues.md +0 -537
- package/bin/rg +0 -0
- package/dist/api/agent.d.ts +0 -105
- package/dist/api/agent.d.ts.map +0 -1
- package/dist/api/agent.js +0 -963
- package/dist/api/agent.js.map +0 -1
- package/dist/api/analytics.d.ts +0 -43
- package/dist/api/analytics.d.ts.map +0 -1
- package/dist/api/analytics.js +0 -163
- package/dist/api/analytics.js.map +0 -1
- package/dist/api/http.d.ts +0 -5
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -62
- package/dist/api/http.js.map +0 -1
- package/dist/api/index.d.ts +0 -12
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -17
- package/dist/api/index.js.map +0 -1
- package/dist/api/taskTracking.d.ts +0 -54
- package/dist/api/taskTracking.d.ts.map +0 -1
- package/dist/api/taskTracking.js +0 -208
- package/dist/api/taskTracking.js.map +0 -1
- package/dist/api/types.d.ts +0 -93
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js +0 -2
- package/dist/api/types.js.map +0 -1
- package/dist/api/utils.d.ts +0 -8
- package/dist/api/utils.d.ts.map +0 -1
- package/dist/api/utils.js +0 -63
- package/dist/api/utils.js.map +0 -1
- package/dist/api/websocket.d.ts +0 -203
- package/dist/api/websocket.d.ts.map +0 -1
- package/dist/api/websocket.js +0 -1166
- package/dist/api/websocket.js.map +0 -1
- package/dist/bin/install-skill.d.ts +0 -14
- package/dist/bin/install-skill.d.ts.map +0 -1
- package/dist/bin/install-skill.js +0 -125
- package/dist/bin/install-skill.js.map +0 -1
- package/dist/bin/run-helpers.d.ts +0 -34
- package/dist/bin/run-helpers.d.ts.map +0 -1
- package/dist/bin/run-helpers.js +0 -186
- package/dist/bin/run-helpers.js.map +0 -1
- package/dist/bin/run.d.ts +0 -13
- package/dist/bin/run.d.ts.map +0 -1
- package/dist/bin/run.js +0 -57
- package/dist/bin/run.js.map +0 -1
- package/dist/clients/index.d.ts +0 -10
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/index.js +0 -8
- package/dist/clients/index.js.map +0 -1
- package/dist/clients/info/InfoClient.d.ts +0 -37
- package/dist/clients/info/InfoClient.d.ts.map +0 -1
- package/dist/clients/info/InfoClient.js +0 -69
- package/dist/clients/info/InfoClient.js.map +0 -1
- package/dist/clients/info/index.d.ts +0 -4
- package/dist/clients/info/index.d.ts.map +0 -1
- package/dist/clients/info/index.js +0 -2
- package/dist/clients/info/index.js.map +0 -1
- package/dist/clients/info/types.d.ts +0 -21
- package/dist/clients/info/types.d.ts.map +0 -1
- package/dist/clients/info/types.js +0 -2
- package/dist/clients/info/types.js.map +0 -1
- package/dist/clients/sessions/SessionsClient.d.ts +0 -34
- package/dist/clients/sessions/SessionsClient.d.ts.map +0 -1
- package/dist/clients/sessions/SessionsClient.js +0 -71
- package/dist/clients/sessions/SessionsClient.js.map +0 -1
- package/dist/clients/sessions/index.d.ts +0 -4
- package/dist/clients/sessions/index.d.ts.map +0 -1
- package/dist/clients/sessions/index.js +0 -2
- package/dist/clients/sessions/index.js.map +0 -1
- package/dist/clients/sessions/types.d.ts +0 -20
- package/dist/clients/sessions/types.d.ts.map +0 -1
- package/dist/clients/sessions/types.js +0 -2
- package/dist/clients/sessions/types.js.map +0 -1
- package/dist/clients/tools/ToolsClient.d.ts +0 -39
- package/dist/clients/tools/ToolsClient.d.ts.map +0 -1
- package/dist/clients/tools/ToolsClient.js +0 -95
- package/dist/clients/tools/ToolsClient.js.map +0 -1
- package/dist/clients/tools/index.d.ts +0 -4
- package/dist/clients/tools/index.d.ts.map +0 -1
- package/dist/clients/tools/index.js +0 -2
- package/dist/clients/tools/index.js.map +0 -1
- package/dist/clients/tools/types.d.ts +0 -14
- package/dist/clients/tools/types.d.ts.map +0 -1
- package/dist/clients/tools/types.js +0 -2
- package/dist/clients/tools/types.js.map +0 -1
- package/dist/config/ConfigManager.d.ts +0 -43
- package/dist/config/ConfigManager.d.ts.map +0 -1
- package/dist/config/ConfigManager.js +0 -472
- package/dist/config/ConfigManager.js.map +0 -1
- package/dist/config/index.d.ts +0 -6
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/config/index.js.map +0 -1
- package/dist/config/urlConfig.d.ts +0 -15
- package/dist/config/urlConfig.d.ts.map +0 -1
- package/dist/config/urlConfig.js +0 -75
- package/dist/config/urlConfig.js.map +0 -1
- package/dist/constants/errors.d.ts +0 -2
- package/dist/constants/errors.d.ts.map +0 -1
- package/dist/constants/errors.js +0 -2
- package/dist/constants/errors.js.map +0 -1
- package/dist/constants/index.d.ts +0 -7
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -11
- package/dist/constants/index.js.map +0 -1
- package/dist/constants/tools.d.ts +0 -4
- package/dist/constants/tools.d.ts.map +0 -1
- package/dist/constants/tools.js +0 -4
- package/dist/constants/tools.js.map +0 -1
- package/dist/constants/versions.d.ts +0 -2
- package/dist/constants/versions.d.ts.map +0 -1
- package/dist/constants/versions.js +0 -2
- package/dist/constants/versions.js.map +0 -1
- package/dist/context/buildUserContext.d.ts +0 -18
- package/dist/context/buildUserContext.d.ts.map +0 -1
- package/dist/context/buildUserContext.js +0 -34
- package/dist/context/buildUserContext.js.map +0 -1
- package/dist/context/index.d.ts +0 -9
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -9
- package/dist/context/index.js.map +0 -1
- package/dist/context/messageManager.d.ts +0 -42
- package/dist/context/messageManager.d.ts.map +0 -1
- package/dist/context/messageManager.js +0 -322
- package/dist/context/messageManager.js.map +0 -1
- package/dist/context/taskFocus.d.ts +0 -2
- package/dist/context/taskFocus.d.ts.map +0 -1
- package/dist/context/taskFocus.js +0 -26
- package/dist/context/taskFocus.js.map +0 -1
- package/dist/context/userInput.d.ts +0 -3
- package/dist/context/userInput.d.ts.map +0 -1
- package/dist/context/userInput.js +0 -20
- package/dist/context/userInput.js.map +0 -1
- package/dist/mcp/MCPManager.d.ts +0 -109
- package/dist/mcp/MCPManager.d.ts.map +0 -1
- package/dist/mcp/MCPManager.js +0 -592
- package/dist/mcp/MCPManager.js.map +0 -1
- package/dist/mcp/approvedTools.d.ts +0 -4
- package/dist/mcp/approvedTools.d.ts.map +0 -1
- package/dist/mcp/approvedTools.js +0 -19
- package/dist/mcp/approvedTools.js.map +0 -1
- package/dist/mcp/baseServer.d.ts +0 -75
- package/dist/mcp/baseServer.d.ts.map +0 -1
- package/dist/mcp/baseServer.js +0 -107
- package/dist/mcp/baseServer.js.map +0 -1
- package/dist/mcp/builtinServers.d.ts +0 -15
- package/dist/mcp/builtinServers.d.ts.map +0 -1
- package/dist/mcp/builtinServers.js +0 -141
- package/dist/mcp/builtinServers.js.map +0 -1
- package/dist/mcp/dynamicBEServer.d.ts +0 -20
- package/dist/mcp/dynamicBEServer.d.ts.map +0 -1
- package/dist/mcp/dynamicBEServer.js +0 -52
- package/dist/mcp/dynamicBEServer.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -18
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -23
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/mcpInitialization.d.ts +0 -2
- package/dist/mcp/mcpInitialization.d.ts.map +0 -1
- package/dist/mcp/mcpInitialization.js +0 -56
- package/dist/mcp/mcpInitialization.js.map +0 -1
- package/dist/mcp/servers/filesystem.d.ts +0 -44
- package/dist/mcp/servers/filesystem.d.ts.map +0 -1
- package/dist/mcp/servers/filesystem.js +0 -776
- package/dist/mcp/servers/filesystem.js.map +0 -1
- package/dist/mcp/servers/git.d.ts +0 -18
- package/dist/mcp/servers/git.d.ts.map +0 -1
- package/dist/mcp/servers/git.js +0 -441
- package/dist/mcp/servers/git.js.map +0 -1
- package/dist/mcp/servers/ripgrep.d.ts +0 -39
- package/dist/mcp/servers/ripgrep.d.ts.map +0 -1
- package/dist/mcp/servers/ripgrep.js +0 -550
- package/dist/mcp/servers/ripgrep.js.map +0 -1
- package/dist/mcp/servers/shell.d.ts +0 -20
- package/dist/mcp/servers/shell.d.ts.map +0 -1
- package/dist/mcp/servers/shell.js +0 -519
- package/dist/mcp/servers/shell.js.map +0 -1
- package/dist/mcp/serversRegistry.d.ts +0 -55
- package/dist/mcp/serversRegistry.d.ts.map +0 -1
- package/dist/mcp/serversRegistry.js +0 -416
- package/dist/mcp/serversRegistry.js.map +0 -1
- package/dist/mcp/toolProcessor.d.ts +0 -82
- package/dist/mcp/toolProcessor.d.ts.map +0 -1
- package/dist/mcp/toolProcessor.js +0 -392
- package/dist/mcp/toolProcessor.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -29
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -2
- package/dist/mcp/types.js.map +0 -1
- package/dist/messages/index.d.ts +0 -8
- package/dist/messages/index.d.ts.map +0 -1
- package/dist/messages/index.js +0 -7
- package/dist/messages/index.js.map +0 -1
- package/dist/messages/openai.d.ts +0 -26
- package/dist/messages/openai.d.ts.map +0 -1
- package/dist/messages/openai.js +0 -55
- package/dist/messages/openai.js.map +0 -1
- package/dist/messages/types.d.ts +0 -73
- package/dist/messages/types.d.ts.map +0 -1
- package/dist/messages/types.js +0 -78
- package/dist/messages/types.js.map +0 -1
- package/dist/parser/index.d.ts +0 -72
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -967
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/types.d.ts +0 -153
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/parser/types.js +0 -6
- package/dist/parser/types.js.map +0 -1
- package/dist/parser/utils.d.ts +0 -18
- package/dist/parser/utils.d.ts.map +0 -1
- package/dist/parser/utils.js +0 -64
- package/dist/parser/utils.js.map +0 -1
- package/dist/sdk/QodoSDK.d.ts +0 -218
- package/dist/sdk/QodoSDK.d.ts.map +0 -1
- package/dist/sdk/QodoSDK.js +0 -1115
- package/dist/sdk/QodoSDK.js.map +0 -1
- package/dist/sdk/artifacts.d.ts +0 -156
- package/dist/sdk/artifacts.d.ts.map +0 -1
- package/dist/sdk/artifacts.js +0 -166
- package/dist/sdk/artifacts.js.map +0 -1
- package/dist/sdk/bootstrap.d.ts +0 -16
- package/dist/sdk/bootstrap.d.ts.map +0 -1
- package/dist/sdk/bootstrap.js +0 -28
- package/dist/sdk/bootstrap.js.map +0 -1
- package/dist/sdk/builders.d.ts +0 -54
- package/dist/sdk/builders.d.ts.map +0 -1
- package/dist/sdk/builders.js +0 -117
- package/dist/sdk/builders.js.map +0 -1
- package/dist/sdk/defaults.d.ts +0 -11
- package/dist/sdk/defaults.d.ts.map +0 -1
- package/dist/sdk/defaults.js +0 -39
- package/dist/sdk/defaults.js.map +0 -1
- package/dist/sdk/discovery.d.ts +0 -2
- package/dist/sdk/discovery.d.ts.map +0 -1
- package/dist/sdk/discovery.js +0 -25
- package/dist/sdk/discovery.js.map +0 -1
- package/dist/sdk/events.d.ts +0 -269
- package/dist/sdk/events.d.ts.map +0 -1
- package/dist/sdk/events.js +0 -69
- package/dist/sdk/events.js.map +0 -1
- package/dist/sdk/exit-expression.d.ts +0 -13
- package/dist/sdk/exit-expression.d.ts.map +0 -1
- package/dist/sdk/exit-expression.js +0 -35
- package/dist/sdk/exit-expression.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -17
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js +0 -17
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/middleware.d.ts +0 -59
- package/dist/sdk/middleware.d.ts.map +0 -1
- package/dist/sdk/middleware.js +0 -69
- package/dist/sdk/middleware.js.map +0 -1
- package/dist/sdk/pipeline/PipelineBuilder.d.ts +0 -79
- package/dist/sdk/pipeline/PipelineBuilder.d.ts.map +0 -1
- package/dist/sdk/pipeline/PipelineBuilder.js +0 -129
- package/dist/sdk/pipeline/PipelineBuilder.js.map +0 -1
- package/dist/sdk/pipeline/PipelineRunner.d.ts +0 -28
- package/dist/sdk/pipeline/PipelineRunner.d.ts.map +0 -1
- package/dist/sdk/pipeline/PipelineRunner.js +0 -326
- package/dist/sdk/pipeline/PipelineRunner.js.map +0 -1
- package/dist/sdk/pipeline/compiler.d.ts +0 -24
- package/dist/sdk/pipeline/compiler.d.ts.map +0 -1
- package/dist/sdk/pipeline/compiler.js +0 -199
- package/dist/sdk/pipeline/compiler.js.map +0 -1
- package/dist/sdk/pipeline/declarative.d.ts +0 -34
- package/dist/sdk/pipeline/declarative.d.ts.map +0 -1
- package/dist/sdk/pipeline/declarative.js +0 -9
- package/dist/sdk/pipeline/declarative.js.map +0 -1
- package/dist/sdk/pipeline/index.d.ts +0 -20
- package/dist/sdk/pipeline/index.d.ts.map +0 -1
- package/dist/sdk/pipeline/index.js +0 -19
- package/dist/sdk/pipeline/index.js.map +0 -1
- package/dist/sdk/pipeline/types.d.ts +0 -93
- package/dist/sdk/pipeline/types.d.ts.map +0 -1
- package/dist/sdk/pipeline/types.js +0 -10
- package/dist/sdk/pipeline/types.js.map +0 -1
- package/dist/sdk/policies.d.ts +0 -163
- package/dist/sdk/policies.d.ts.map +0 -1
- package/dist/sdk/policies.js +0 -243
- package/dist/sdk/policies.js.map +0 -1
- package/dist/sdk/runner/AgentRunner.d.ts +0 -22
- package/dist/sdk/runner/AgentRunner.d.ts.map +0 -1
- package/dist/sdk/runner/AgentRunner.js +0 -222
- package/dist/sdk/runner/AgentRunner.js.map +0 -1
- package/dist/sdk/runner/finalize.d.ts +0 -56
- package/dist/sdk/runner/finalize.d.ts.map +0 -1
- package/dist/sdk/runner/finalize.js +0 -155
- package/dist/sdk/runner/finalize.js.map +0 -1
- package/dist/sdk/runner/formats.d.ts +0 -7
- package/dist/sdk/runner/formats.d.ts.map +0 -1
- package/dist/sdk/runner/formats.js +0 -76
- package/dist/sdk/runner/formats.js.map +0 -1
- package/dist/sdk/runner/index.d.ts +0 -9
- package/dist/sdk/runner/index.d.ts.map +0 -1
- package/dist/sdk/runner/index.js +0 -9
- package/dist/sdk/runner/index.js.map +0 -1
- package/dist/sdk/runner/progress.d.ts +0 -3
- package/dist/sdk/runner/progress.d.ts.map +0 -1
- package/dist/sdk/runner/progress.js +0 -16
- package/dist/sdk/runner/progress.js.map +0 -1
- package/dist/sdk/schemas.d.ts +0 -72
- package/dist/sdk/schemas.d.ts.map +0 -1
- package/dist/sdk/schemas.js +0 -282
- package/dist/sdk/schemas.js.map +0 -1
- package/dist/sdk/trigger-context.d.ts +0 -24
- package/dist/sdk/trigger-context.d.ts.map +0 -1
- package/dist/sdk/trigger-context.js +0 -136
- package/dist/sdk/trigger-context.js.map +0 -1
- package/dist/session/SessionContext.d.ts +0 -89
- package/dist/session/SessionContext.d.ts.map +0 -1
- package/dist/session/SessionContext.js +0 -410
- package/dist/session/SessionContext.js.map +0 -1
- package/dist/session/environment.d.ts +0 -52
- package/dist/session/environment.d.ts.map +0 -1
- package/dist/session/environment.js +0 -27
- package/dist/session/environment.js.map +0 -1
- package/dist/session/history.d.ts +0 -18
- package/dist/session/history.d.ts.map +0 -1
- package/dist/session/history.js +0 -68
- package/dist/session/history.js.map +0 -1
- package/dist/session/index.d.ts +0 -10
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -9
- package/dist/session/index.js.map +0 -1
- package/dist/session/serverData.d.ts +0 -38
- package/dist/session/serverData.d.ts.map +0 -1
- package/dist/session/serverData.js +0 -261
- package/dist/session/serverData.js.map +0 -1
- package/dist/tracing/pipelineHelpers.d.ts +0 -29
- package/dist/tracing/pipelineHelpers.d.ts.map +0 -1
- package/dist/tracing/pipelineHelpers.js +0 -224
- package/dist/tracing/pipelineHelpers.js.map +0 -1
- package/dist/tracking/Tracker.d.ts +0 -55
- package/dist/tracking/Tracker.d.ts.map +0 -1
- package/dist/tracking/Tracker.js +0 -217
- package/dist/tracking/Tracker.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -8
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -8
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/schemas.d.ts +0 -292
- package/dist/tracking/schemas.d.ts.map +0 -1
- package/dist/tracking/schemas.js +0 -91
- package/dist/tracking/schemas.js.map +0 -1
- package/dist/utils/extractSetFlags.d.ts +0 -6
- package/dist/utils/extractSetFlags.d.ts.map +0 -1
- package/dist/utils/extractSetFlags.js +0 -16
- package/dist/utils/extractSetFlags.js.map +0 -1
- package/dist/utils/formatTimeAgo.d.ts +0 -2
- package/dist/utils/formatTimeAgo.d.ts.map +0 -1
- package/dist/utils/formatTimeAgo.js +0 -20
- package/dist/utils/formatTimeAgo.js.map +0 -1
- package/dist/utils/index.d.ts +0 -12
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -12
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/machineId.d.ts +0 -14
- package/dist/utils/machineId.d.ts.map +0 -1
- package/dist/utils/machineId.js +0 -66
- package/dist/utils/machineId.js.map +0 -1
- package/dist/utils/pathUtils.d.ts +0 -22
- package/dist/utils/pathUtils.d.ts.map +0 -1
- package/dist/utils/pathUtils.js +0 -54
- package/dist/utils/pathUtils.js.map +0 -1
- package/scripts/download-ripgrep.js +0 -269
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-side MCP tool projection.
|
|
3
|
+
*
|
|
4
|
+
* `projectMcpTools` resolves a consumer's `mcpTools` selector against the
|
|
5
|
+
* live {@link McpClientPool} catalog and produces the concrete
|
|
6
|
+
* `FunctionToolDef[]` shipped to QAR via `AgentSpec.tools`. The function is
|
|
7
|
+
* the SDK's single point of responsibility for the MCP-projection contract:
|
|
8
|
+
*
|
|
9
|
+
* - **Shape A** (`readonly string[]`) — entries are either MCP names
|
|
10
|
+
* (whole-server inclusion) or `<mcp>.<tool>` dotted references
|
|
11
|
+
* (specific tool).
|
|
12
|
+
* - **Shape B** (`{ allowlist?, blocklist? }`) — set difference,
|
|
13
|
+
* same dotted-name resolution as Shape A.
|
|
14
|
+
* - **Shape C** (`(tool: DiscoveredMcpTool) => boolean`) — dynamic
|
|
15
|
+
* filter receiving every discovered tool across every registered MCP.
|
|
16
|
+
*
|
|
17
|
+
* Each match becomes a `FunctionToolDef` carrying the upstream MCP's
|
|
18
|
+
* `inputSchema` + `description` + (new) `annotations`. Tool names are
|
|
19
|
+
* auto-prefixed `<mcp>.<tool>` when the per-MCP `prefixToolNames` policy
|
|
20
|
+
* is on (default); off when the consumer explicitly opted out at
|
|
21
|
+
* `registerMcp` time. Consumer-shipped `tools[]` entries are merged on
|
|
22
|
+
* top — consumer-shipped wins on name collision; consumer-shipped tools
|
|
23
|
+
* escape prefixing because the consumer wrote the name.
|
|
24
|
+
*
|
|
25
|
+
* Diagnostics surface drift between consumer code and the live MCP
|
|
26
|
+
* surface as three buckets:
|
|
27
|
+
*
|
|
28
|
+
* - `unknownMcps` — allowlist entries naming an MCP not in the pool.
|
|
29
|
+
* - `unknownMcpTools` — dotted-name allowlist / override entries whose
|
|
30
|
+
* suffix doesn't match a discovered tool.
|
|
31
|
+
* - `unreachableMcps` — registered MCPs that the selector explicitly
|
|
32
|
+
* *referenced* AND whose catalog is absent (cold start hasn't
|
|
33
|
+
* populated). Note the **referenced** scope: an unreachable MCP that
|
|
34
|
+
* this agent doesn't depend on is silently omitted, NOT flagged.
|
|
35
|
+
* Reference scope:
|
|
36
|
+
* - Shape A (string[]) — bare names + the MCP part of dotted entries.
|
|
37
|
+
* - Shape B allowlist — bare names + dotted MCP parts. Blocklist
|
|
38
|
+
* entries do NOT add references (the consumer is trying to
|
|
39
|
+
* exclude something; if it's already absent, intent is fulfilled).
|
|
40
|
+
* - Shape B blocklist-only (no allowlist) — no references; full
|
|
41
|
+
* reachable surface minus blocks.
|
|
42
|
+
* - Shape C callback — no references; the consumer accepts whatever
|
|
43
|
+
* the live catalog provides.
|
|
44
|
+
* The caller chooses what to do with each diagnostic per the
|
|
45
|
+
* registered `unavailability` policy.
|
|
46
|
+
*
|
|
47
|
+
* Ordering for prompt-cache stability (D17-9): consumer-shipped first
|
|
48
|
+
* (in original insertion order), then projected tools sorted
|
|
49
|
+
* lexicographically by `<mcp>.<tool>`. Stable across runs so Anthropic's
|
|
50
|
+
* prompt-cache prefix matching keeps hitting.
|
|
51
|
+
*
|
|
52
|
+
* The function is pure — same inputs, same outputs — so tests can drive
|
|
53
|
+
* it directly without a live pool. Callers await
|
|
54
|
+
* `pool.waitForCatalogsToSettle()` BEFORE invoking projection so a
|
|
55
|
+
* still-loading MCP doesn't read as unreachable.
|
|
56
|
+
*/
|
|
57
|
+
import type { FunctionToolDef, McpToolOverrides, McpToolsSelector } from '../../qar/specs.js';
|
|
58
|
+
import type { McpClientPool } from './McpClientPool.js';
|
|
59
|
+
/**
|
|
60
|
+
* Input to {@link projectMcpTools}. Consumer-facing fields lifted off the
|
|
61
|
+
* `InlineAgentSpec` at the wire boundary.
|
|
62
|
+
*/
|
|
63
|
+
export interface ProjectionInput {
|
|
64
|
+
/** The `mcpTools` selector — Shape A / B / C, or `undefined` to skip discovery. */
|
|
65
|
+
readonly mcpTools?: McpToolsSelector;
|
|
66
|
+
/** Consumer-shipped `tools[]` — preserved verbatim (consumer wins on name match). */
|
|
67
|
+
readonly consumerTools?: readonly FunctionToolDef[] | null;
|
|
68
|
+
/** Per-tool description overlay — applied AFTER projection. */
|
|
69
|
+
readonly mcpToolOverrides?: McpToolOverrides;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Result of {@link projectMcpTools}. `tools` is the merged + ordered
|
|
73
|
+
* surface (consumer-shipped first, projected sorted lex); `diagnostics`
|
|
74
|
+
* captures drift the caller may want to raise as typed errors.
|
|
75
|
+
*/
|
|
76
|
+
export interface ProjectionResult {
|
|
77
|
+
readonly tools: readonly FunctionToolDef[];
|
|
78
|
+
readonly diagnostics: {
|
|
79
|
+
readonly unknownMcps: readonly string[];
|
|
80
|
+
readonly unknownMcpTools: readonly string[];
|
|
81
|
+
readonly unreachableMcps: readonly string[];
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resolve the MCP selector against the pool and produce the concrete
|
|
86
|
+
* `FunctionToolDef[]` for the wire envelope. See module docblock for the
|
|
87
|
+
* contract.
|
|
88
|
+
*
|
|
89
|
+
* @param input Consumer-side selector + tools[] + overrides.
|
|
90
|
+
* @param pool Live `McpClientPool` (sync-snapshot accessor; the
|
|
91
|
+
* caller is responsible for awaiting
|
|
92
|
+
* `waitForCatalogsToSettle()` first).
|
|
93
|
+
* @param prefixPolicy Per-MCP prefix-on policy. Default `true` when the
|
|
94
|
+
* map is missing an entry — the wire fallback for
|
|
95
|
+
* an MCP registered before the projection ergonomics
|
|
96
|
+
* existed.
|
|
97
|
+
* @param extraKnownMcps Additional MCP names known to the registry but
|
|
98
|
+
* NOT present in the pool. The canonical use case
|
|
99
|
+
* is `transport: 'sdk'` in-process MCPs whose
|
|
100
|
+
* dispatch path bypasses the pool — they have no
|
|
101
|
+
* `tools/list` contract, so the projection layer
|
|
102
|
+
* doesn't auto-project tools for them; but
|
|
103
|
+
* referencing one in `mcpTools` should NOT raise
|
|
104
|
+
* `QodoUnknownMcpError`. Tools for those MCPs ship
|
|
105
|
+
* via consumer `tools[]` instead. Optional;
|
|
106
|
+
* defaults empty.
|
|
107
|
+
*/
|
|
108
|
+
export declare function projectMcpTools(input: ProjectionInput, pool: McpClientPool, prefixPolicy: ReadonlyMap<string, boolean>, extraKnownMcps?: ReadonlySet<string>): ProjectionResult;
|
|
109
|
+
//# sourceMappingURL=projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/client/mcp/projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAGH,OAAO,KAAK,EAEV,eAAe,EAEf,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,CAAC;IAC3D,+DAA+D;IAC/D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;KAC7C,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,aAAa,EACnB,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,cAAc,GAAE,WAAW,CAAC,MAAM,CAAmB,GACpD,gBAAgB,CAkLlB"}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-side MCP tool projection.
|
|
3
|
+
*
|
|
4
|
+
* `projectMcpTools` resolves a consumer's `mcpTools` selector against the
|
|
5
|
+
* live {@link McpClientPool} catalog and produces the concrete
|
|
6
|
+
* `FunctionToolDef[]` shipped to QAR via `AgentSpec.tools`. The function is
|
|
7
|
+
* the SDK's single point of responsibility for the MCP-projection contract:
|
|
8
|
+
*
|
|
9
|
+
* - **Shape A** (`readonly string[]`) — entries are either MCP names
|
|
10
|
+
* (whole-server inclusion) or `<mcp>.<tool>` dotted references
|
|
11
|
+
* (specific tool).
|
|
12
|
+
* - **Shape B** (`{ allowlist?, blocklist? }`) — set difference,
|
|
13
|
+
* same dotted-name resolution as Shape A.
|
|
14
|
+
* - **Shape C** (`(tool: DiscoveredMcpTool) => boolean`) — dynamic
|
|
15
|
+
* filter receiving every discovered tool across every registered MCP.
|
|
16
|
+
*
|
|
17
|
+
* Each match becomes a `FunctionToolDef` carrying the upstream MCP's
|
|
18
|
+
* `inputSchema` + `description` + (new) `annotations`. Tool names are
|
|
19
|
+
* auto-prefixed `<mcp>.<tool>` when the per-MCP `prefixToolNames` policy
|
|
20
|
+
* is on (default); off when the consumer explicitly opted out at
|
|
21
|
+
* `registerMcp` time. Consumer-shipped `tools[]` entries are merged on
|
|
22
|
+
* top — consumer-shipped wins on name collision; consumer-shipped tools
|
|
23
|
+
* escape prefixing because the consumer wrote the name.
|
|
24
|
+
*
|
|
25
|
+
* Diagnostics surface drift between consumer code and the live MCP
|
|
26
|
+
* surface as three buckets:
|
|
27
|
+
*
|
|
28
|
+
* - `unknownMcps` — allowlist entries naming an MCP not in the pool.
|
|
29
|
+
* - `unknownMcpTools` — dotted-name allowlist / override entries whose
|
|
30
|
+
* suffix doesn't match a discovered tool.
|
|
31
|
+
* - `unreachableMcps` — registered MCPs that the selector explicitly
|
|
32
|
+
* *referenced* AND whose catalog is absent (cold start hasn't
|
|
33
|
+
* populated). Note the **referenced** scope: an unreachable MCP that
|
|
34
|
+
* this agent doesn't depend on is silently omitted, NOT flagged.
|
|
35
|
+
* Reference scope:
|
|
36
|
+
* - Shape A (string[]) — bare names + the MCP part of dotted entries.
|
|
37
|
+
* - Shape B allowlist — bare names + dotted MCP parts. Blocklist
|
|
38
|
+
* entries do NOT add references (the consumer is trying to
|
|
39
|
+
* exclude something; if it's already absent, intent is fulfilled).
|
|
40
|
+
* - Shape B blocklist-only (no allowlist) — no references; full
|
|
41
|
+
* reachable surface minus blocks.
|
|
42
|
+
* - Shape C callback — no references; the consumer accepts whatever
|
|
43
|
+
* the live catalog provides.
|
|
44
|
+
* The caller chooses what to do with each diagnostic per the
|
|
45
|
+
* registered `unavailability` policy.
|
|
46
|
+
*
|
|
47
|
+
* Ordering for prompt-cache stability (D17-9): consumer-shipped first
|
|
48
|
+
* (in original insertion order), then projected tools sorted
|
|
49
|
+
* lexicographically by `<mcp>.<tool>`. Stable across runs so Anthropic's
|
|
50
|
+
* prompt-cache prefix matching keeps hitting.
|
|
51
|
+
*
|
|
52
|
+
* The function is pure — same inputs, same outputs — so tests can drive
|
|
53
|
+
* it directly without a live pool. Callers await
|
|
54
|
+
* `pool.waitForCatalogsToSettle()` BEFORE invoking projection so a
|
|
55
|
+
* still-loading MCP doesn't read as unreachable.
|
|
56
|
+
*/
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the MCP selector against the pool and produce the concrete
|
|
59
|
+
* `FunctionToolDef[]` for the wire envelope. See module docblock for the
|
|
60
|
+
* contract.
|
|
61
|
+
*
|
|
62
|
+
* @param input Consumer-side selector + tools[] + overrides.
|
|
63
|
+
* @param pool Live `McpClientPool` (sync-snapshot accessor; the
|
|
64
|
+
* caller is responsible for awaiting
|
|
65
|
+
* `waitForCatalogsToSettle()` first).
|
|
66
|
+
* @param prefixPolicy Per-MCP prefix-on policy. Default `true` when the
|
|
67
|
+
* map is missing an entry — the wire fallback for
|
|
68
|
+
* an MCP registered before the projection ergonomics
|
|
69
|
+
* existed.
|
|
70
|
+
* @param extraKnownMcps Additional MCP names known to the registry but
|
|
71
|
+
* NOT present in the pool. The canonical use case
|
|
72
|
+
* is `transport: 'sdk'` in-process MCPs whose
|
|
73
|
+
* dispatch path bypasses the pool — they have no
|
|
74
|
+
* `tools/list` contract, so the projection layer
|
|
75
|
+
* doesn't auto-project tools for them; but
|
|
76
|
+
* referencing one in `mcpTools` should NOT raise
|
|
77
|
+
* `QodoUnknownMcpError`. Tools for those MCPs ship
|
|
78
|
+
* via consumer `tools[]` instead. Optional;
|
|
79
|
+
* defaults empty.
|
|
80
|
+
*/
|
|
81
|
+
export function projectMcpTools(input, pool, prefixPolicy, extraKnownMcps = EMPTY_KNOWN_SET) {
|
|
82
|
+
// 0. Resolve registered set + cached catalogs + the "referenced" MCP
|
|
83
|
+
// set the selector explicitly names. The referenced scope is what
|
|
84
|
+
// governs the `unreachableMcps` diagnostic — an MCP the consumer
|
|
85
|
+
// doesn't depend on isn't a failure even if its catalog is cold.
|
|
86
|
+
const registered = pool.listRegisteredNames();
|
|
87
|
+
const registeredSet = new Set(registered);
|
|
88
|
+
// Union pool-registered names with the consumer-supplied "extra known"
|
|
89
|
+
// set so sdk-transport MCPs aren't flagged as unknown.
|
|
90
|
+
for (const name of extraKnownMcps)
|
|
91
|
+
registeredSet.add(name);
|
|
92
|
+
const catalogSnapshot = pool.getCatalogSnapshot();
|
|
93
|
+
const referencedMcps = collectReferencedMcps(input.mcpTools);
|
|
94
|
+
// Per-MCP discovered-tool index. Catalogs with `undefined` cache mean
|
|
95
|
+
// unreachable; recorded in `unreachableMcps` ONLY when the selector
|
|
96
|
+
// referenced the MCP (per the scope rule documented at the top of
|
|
97
|
+
// this file). Catalogs present (even an empty array) are reachable.
|
|
98
|
+
// `extraKnownMcps` entries don't appear here — they have no catalog
|
|
99
|
+
// and shouldn't be flagged as unreachable either; their tools ship
|
|
100
|
+
// through the consumer's `tools[]` directly.
|
|
101
|
+
const discoveredByMcp = new Map();
|
|
102
|
+
const unreachableMcps = [];
|
|
103
|
+
for (const mcpName of registered) {
|
|
104
|
+
const catalog = catalogSnapshot.get(mcpName);
|
|
105
|
+
if (catalog === undefined) {
|
|
106
|
+
if (referencedMcps.has(mcpName)) {
|
|
107
|
+
unreachableMcps.push(mcpName);
|
|
108
|
+
}
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const tools = [];
|
|
112
|
+
for (const entry of catalog) {
|
|
113
|
+
tools.push(toDiscovered(mcpName, entry));
|
|
114
|
+
}
|
|
115
|
+
discoveredByMcp.set(mcpName, tools);
|
|
116
|
+
}
|
|
117
|
+
// 1. Walk the selector — produce a Map<projectedName, FunctionToolDef>
|
|
118
|
+
// keyed by the post-prefix name so consumer-shipped collisions
|
|
119
|
+
// win on insertion order.
|
|
120
|
+
const unknownMcps = [];
|
|
121
|
+
const unknownMcpToolsRef = [];
|
|
122
|
+
const projected = new Map();
|
|
123
|
+
const selector = input.mcpTools;
|
|
124
|
+
if (selector !== undefined) {
|
|
125
|
+
if (typeof selector === 'function') {
|
|
126
|
+
// Shape C — run the filter across every discovered tool.
|
|
127
|
+
for (const [mcpName, tools] of discoveredByMcp) {
|
|
128
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, mcpName);
|
|
129
|
+
for (const tool of tools) {
|
|
130
|
+
if (selector(tool)) {
|
|
131
|
+
const projectedName = prefixOn ? `${mcpName}.${tool.name}` : tool.name;
|
|
132
|
+
projected.set(projectedName, toFunctionToolDef(projectedName, tool));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (Array.isArray(selector)) {
|
|
138
|
+
// Shape A — strings; entries with `.` = specific tool, without = whole MCP.
|
|
139
|
+
const arr = selector;
|
|
140
|
+
applyAllowlist(arr, discoveredByMcp, registeredSet, prefixPolicy, projected, unknownMcps, unknownMcpToolsRef);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Shape B — allowlist + blocklist.
|
|
144
|
+
const ab = selector;
|
|
145
|
+
if (ab.allowlist !== undefined) {
|
|
146
|
+
applyAllowlist(ab.allowlist, discoveredByMcp, registeredSet, prefixPolicy, projected, unknownMcps, unknownMcpToolsRef);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Allowlist omitted = include every reachable tool, then
|
|
150
|
+
// subtract blocklist. Matches "subtract from full" semantics.
|
|
151
|
+
for (const [mcpName, tools] of discoveredByMcp) {
|
|
152
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, mcpName);
|
|
153
|
+
for (const tool of tools) {
|
|
154
|
+
const projectedName = prefixOn ? `${mcpName}.${tool.name}` : tool.name;
|
|
155
|
+
projected.set(projectedName, toFunctionToolDef(projectedName, tool));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (ab.blocklist !== undefined) {
|
|
160
|
+
applyBlocklist(ab.blocklist, discoveredByMcp, registeredSet, prefixPolicy, projected, unknownMcps, unknownMcpToolsRef);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// 2. Apply description overlays. Keys are tool names AS PROJECTED
|
|
165
|
+
// (post-prefix). Unknown keys surface as `unknownMcpTools` UNLESS
|
|
166
|
+
// the override targets a tool on an MCP that is unreachable (or
|
|
167
|
+
// a non-projecting sdk-transport MCP) — in which case the tool
|
|
168
|
+
// can never have been projected and flagging it would defeat the
|
|
169
|
+
// `unavailability: 'warn'` graceful-degradation contract. Silently
|
|
170
|
+
// skip those — there's no tool to override; the unreachable
|
|
171
|
+
// diagnostic / warn-policy log already conveys the absence.
|
|
172
|
+
const unreachableMcpsSet = new Set(unreachableMcps);
|
|
173
|
+
if (input.mcpToolOverrides !== undefined) {
|
|
174
|
+
for (const [projectedName, override] of Object.entries(input.mcpToolOverrides)) {
|
|
175
|
+
const existing = projected.get(projectedName);
|
|
176
|
+
if (existing === undefined) {
|
|
177
|
+
if (overrideTargetsNonProjectingMcp(projectedName, unreachableMcpsSet, extraKnownMcps)) {
|
|
178
|
+
// The override's MCP is unreachable or sdk-transport — skip
|
|
179
|
+
// silently. The consumer's intent (frame this tool) is moot
|
|
180
|
+
// when the tool itself isn't available; the warn-policy
|
|
181
|
+
// log already documents the degradation.
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
unknownMcpToolsRef.push(projectedName);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (override.description === undefined)
|
|
188
|
+
continue;
|
|
189
|
+
projected.set(projectedName, {
|
|
190
|
+
type: 'function',
|
|
191
|
+
function: {
|
|
192
|
+
...existing.function,
|
|
193
|
+
description: override.description,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// 3. Sort projected tools lexicographically by name — D17-9 prompt-cache
|
|
199
|
+
// stability. Consumer-shipped tools (added in step 4) preserve
|
|
200
|
+
// original insertion order.
|
|
201
|
+
const projectedSorted = [...projected.entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
202
|
+
// 4. Merge consumer-shipped tools. Consumer-shipped escapes prefixing
|
|
203
|
+
// (their name is verbatim) AND wins on name collision with a
|
|
204
|
+
// projected tool. Final order: consumer-shipped (original order)
|
|
205
|
+
// first, projected (sorted lex) for any name NOT in consumer set.
|
|
206
|
+
const consumerByName = new Map();
|
|
207
|
+
if (input.consumerTools !== undefined && input.consumerTools !== null) {
|
|
208
|
+
for (const tool of input.consumerTools) {
|
|
209
|
+
consumerByName.set(tool.function.name, tool);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const out = [];
|
|
213
|
+
if (input.consumerTools !== undefined && input.consumerTools !== null) {
|
|
214
|
+
for (const tool of input.consumerTools) {
|
|
215
|
+
out.push(tool);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
for (const [name, tool] of projectedSorted) {
|
|
219
|
+
if (consumerByName.has(name))
|
|
220
|
+
continue;
|
|
221
|
+
out.push(tool);
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
tools: out,
|
|
225
|
+
diagnostics: {
|
|
226
|
+
unknownMcps: dedupe(unknownMcps),
|
|
227
|
+
unknownMcpTools: dedupe(unknownMcpToolsRef),
|
|
228
|
+
unreachableMcps: dedupe(unreachableMcps),
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
// Internals
|
|
234
|
+
// ---------------------------------------------------------------------------
|
|
235
|
+
function applyAllowlist(entries, discoveredByMcp, registeredSet, prefixPolicy, projected, unknownMcps, unknownMcpTools) {
|
|
236
|
+
for (const entry of entries) {
|
|
237
|
+
const split = splitDotted(entry);
|
|
238
|
+
if (split === null) {
|
|
239
|
+
// Whole-MCP form. Must reference a registered MCP.
|
|
240
|
+
if (!registeredSet.has(entry)) {
|
|
241
|
+
unknownMcps.push(entry);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const tools = discoveredByMcp.get(entry);
|
|
245
|
+
// Tools absent = MCP is unreachable; surfaced separately via
|
|
246
|
+
// `unreachableMcps`. Skip the entry without recording a per-tool
|
|
247
|
+
// miss — the caller's policy decision lives on the unreachable
|
|
248
|
+
// bucket, not here.
|
|
249
|
+
if (tools === undefined)
|
|
250
|
+
continue;
|
|
251
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, entry);
|
|
252
|
+
for (const tool of tools) {
|
|
253
|
+
const projectedName = prefixOn ? `${entry}.${tool.name}` : tool.name;
|
|
254
|
+
projected.set(projectedName, toFunctionToolDef(projectedName, tool));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Specific-tool form (`<mcp>.<tool>`).
|
|
259
|
+
const { mcpName, toolName } = split;
|
|
260
|
+
if (!registeredSet.has(mcpName)) {
|
|
261
|
+
unknownMcps.push(mcpName);
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const tools = discoveredByMcp.get(mcpName);
|
|
265
|
+
if (tools === undefined)
|
|
266
|
+
continue; // unreachable — caller policy
|
|
267
|
+
const match = tools.find((t) => t.name === toolName);
|
|
268
|
+
if (match === undefined) {
|
|
269
|
+
unknownMcpTools.push(entry);
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, mcpName);
|
|
273
|
+
const projectedName = prefixOn ? `${mcpName}.${toolName}` : toolName;
|
|
274
|
+
projected.set(projectedName, toFunctionToolDef(projectedName, match));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function applyBlocklist(entries, discoveredByMcp, registeredSet, prefixPolicy, projected, unknownMcps, unknownMcpTools) {
|
|
279
|
+
for (const entry of entries) {
|
|
280
|
+
const split = splitDotted(entry);
|
|
281
|
+
if (split === null) {
|
|
282
|
+
// Whole-MCP block — remove every projected tool whose MCP matches.
|
|
283
|
+
if (!registeredSet.has(entry)) {
|
|
284
|
+
unknownMcps.push(entry);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, entry);
|
|
288
|
+
const tools = discoveredByMcp.get(entry);
|
|
289
|
+
if (tools === undefined)
|
|
290
|
+
continue;
|
|
291
|
+
for (const tool of tools) {
|
|
292
|
+
const projectedName = prefixOn ? `${entry}.${tool.name}` : tool.name;
|
|
293
|
+
projected.delete(projectedName);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const { mcpName, toolName } = split;
|
|
298
|
+
if (!registeredSet.has(mcpName)) {
|
|
299
|
+
unknownMcps.push(mcpName);
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
const tools = discoveredByMcp.get(mcpName);
|
|
303
|
+
if (tools === undefined)
|
|
304
|
+
continue;
|
|
305
|
+
const match = tools.find((t) => t.name === toolName);
|
|
306
|
+
if (match === undefined) {
|
|
307
|
+
unknownMcpTools.push(entry);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
const prefixOn = readPrefixPolicy(prefixPolicy, mcpName);
|
|
311
|
+
const projectedName = prefixOn ? `${mcpName}.${toolName}` : toolName;
|
|
312
|
+
projected.delete(projectedName);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Build the set of MCP names the selector explicitly *references* —
|
|
318
|
+
* the scope that governs the `unreachableMcps` diagnostic. Semantics:
|
|
319
|
+
* fail only for what the consumer's selector depends on.
|
|
320
|
+
*
|
|
321
|
+
* - Shape A (string[]) — bare names + the MCP part of dotted entries
|
|
322
|
+
* all count as references.
|
|
323
|
+
* - Shape B allowlist — same scope. Blocklist entries do NOT count
|
|
324
|
+
* (consumer is trying to exclude; if absent, intent fulfilled).
|
|
325
|
+
* - Shape B blocklist-only (no allowlist) — no references. Effective
|
|
326
|
+
* surface is "every reachable tool minus blocks"; unreachable MCPs
|
|
327
|
+
* are silently omitted from the full-surface seed.
|
|
328
|
+
* - Shape C callback — no references. The callback runs across the
|
|
329
|
+
* discovered surface; consumer didn't name specific MCPs.
|
|
330
|
+
* - Undefined selector — no references (no projection runs).
|
|
331
|
+
*/
|
|
332
|
+
function collectReferencedMcps(selector) {
|
|
333
|
+
const out = new Set();
|
|
334
|
+
if (selector === undefined)
|
|
335
|
+
return out;
|
|
336
|
+
if (typeof selector === 'function')
|
|
337
|
+
return out;
|
|
338
|
+
if (Array.isArray(selector)) {
|
|
339
|
+
for (const entry of selector) {
|
|
340
|
+
const split = splitDotted(entry);
|
|
341
|
+
out.add(split === null ? entry : split.mcpName);
|
|
342
|
+
}
|
|
343
|
+
return out;
|
|
344
|
+
}
|
|
345
|
+
const ab = selector;
|
|
346
|
+
if (ab.allowlist !== undefined) {
|
|
347
|
+
for (const entry of ab.allowlist) {
|
|
348
|
+
const split = splitDotted(entry);
|
|
349
|
+
out.add(split === null ? entry : split.mcpName);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Blocklist entries deliberately NOT added — see docblock.
|
|
353
|
+
return out;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Decide whether a `mcpToolOverrides` key whose tool isn't in the
|
|
357
|
+
* projected set is safe to silently skip (vs flag as
|
|
358
|
+
* `unknownMcpTools`). The key is parsed for an `<mcp>.<tool>` prefix;
|
|
359
|
+
* if the prefix matches an MCP that is unreachable OR a known
|
|
360
|
+
* non-projecting sdk-transport MCP, the override target was never
|
|
361
|
+
* projectable — silent skip preserves the `unavailability: 'warn'`
|
|
362
|
+
* graceful-degradation contract and matches the "ship sdk-transport
|
|
363
|
+
* MCP tools via consumer tools[]" model.
|
|
364
|
+
*
|
|
365
|
+
* Keys without a dot belong to prefix-off MCPs whose owning MCP can't
|
|
366
|
+
* be inferred from the key alone; those still flag as unknownMcpTools
|
|
367
|
+
* to preserve drift detection for the prefix-off case.
|
|
368
|
+
*/
|
|
369
|
+
function overrideTargetsNonProjectingMcp(projectedName, unreachableMcps, extraKnownMcps) {
|
|
370
|
+
const split = splitDotted(projectedName);
|
|
371
|
+
if (split === null)
|
|
372
|
+
return false;
|
|
373
|
+
const owningMcp = split.mcpName;
|
|
374
|
+
return unreachableMcps.has(owningMcp) || extraKnownMcps.has(owningMcp);
|
|
375
|
+
}
|
|
376
|
+
/** Parse `<mcp>.<tool>` — returns `null` for entries without a dot. */
|
|
377
|
+
function splitDotted(entry) {
|
|
378
|
+
const idx = entry.indexOf('.');
|
|
379
|
+
if (idx <= 0)
|
|
380
|
+
return null;
|
|
381
|
+
const mcpName = entry.slice(0, idx);
|
|
382
|
+
const toolName = entry.slice(idx + 1);
|
|
383
|
+
if (toolName.length === 0)
|
|
384
|
+
return null;
|
|
385
|
+
return { mcpName, toolName };
|
|
386
|
+
}
|
|
387
|
+
function readPrefixPolicy(prefixPolicy, mcpName) {
|
|
388
|
+
const stored = prefixPolicy.get(mcpName);
|
|
389
|
+
return stored === undefined ? true : stored;
|
|
390
|
+
}
|
|
391
|
+
function toDiscovered(mcpName, entry) {
|
|
392
|
+
const inputSchema = entry.inputSchema !== undefined
|
|
393
|
+
? entry.inputSchema
|
|
394
|
+
: EMPTY_OBJECT_SCHEMA;
|
|
395
|
+
const out = {
|
|
396
|
+
mcpName,
|
|
397
|
+
name: entry.name,
|
|
398
|
+
inputSchema,
|
|
399
|
+
};
|
|
400
|
+
if (entry.description !== undefined)
|
|
401
|
+
out.description = entry.description;
|
|
402
|
+
if (entry.outputSchema !== undefined) {
|
|
403
|
+
out.outputSchema = entry.outputSchema;
|
|
404
|
+
}
|
|
405
|
+
if (entry.annotations !== undefined) {
|
|
406
|
+
out.annotations = entry.annotations;
|
|
407
|
+
}
|
|
408
|
+
return out;
|
|
409
|
+
}
|
|
410
|
+
function toFunctionToolDef(projectedName, tool) {
|
|
411
|
+
const fn = {
|
|
412
|
+
name: projectedName,
|
|
413
|
+
parameters: tool.inputSchema,
|
|
414
|
+
};
|
|
415
|
+
if (tool.description !== undefined)
|
|
416
|
+
fn.description = tool.description;
|
|
417
|
+
if (tool.annotations !== undefined)
|
|
418
|
+
fn.annotations = tool.annotations;
|
|
419
|
+
return { type: 'function', function: fn };
|
|
420
|
+
}
|
|
421
|
+
function dedupe(arr) {
|
|
422
|
+
if (arr.length <= 1)
|
|
423
|
+
return arr;
|
|
424
|
+
const seen = new Set();
|
|
425
|
+
const out = [];
|
|
426
|
+
for (const item of arr) {
|
|
427
|
+
if (seen.has(item))
|
|
428
|
+
continue;
|
|
429
|
+
seen.add(item);
|
|
430
|
+
out.push(item);
|
|
431
|
+
}
|
|
432
|
+
return out;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Default `inputSchema` for MCPs that didn't ship one. Matches the
|
|
436
|
+
* upstream MCP SDK fallback — `{ type: 'object' }` accepts any args.
|
|
437
|
+
* Kept as a frozen constant so the projection doesn't allocate per-call
|
|
438
|
+
* when most tools have proper schemas.
|
|
439
|
+
*/
|
|
440
|
+
const EMPTY_OBJECT_SCHEMA = Object.freeze({ type: 'object' });
|
|
441
|
+
/**
|
|
442
|
+
* Shared empty set used as the default for the optional `extraKnownMcps`
|
|
443
|
+
* parameter so the common no-sdk-transport call path doesn't allocate.
|
|
444
|
+
*/
|
|
445
|
+
const EMPTY_KNOWN_SET = new Set();
|
|
446
|
+
//# sourceMappingURL=projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/client/mcp/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser stub for `substituteEnv.ts`. `process.env` doesn't exist in
|
|
3
|
+
* the browser globals; the SDK's remote-MCP feature is a server-side
|
|
4
|
+
* concern (subprocess + arbitrary fetch authority), so the browser
|
|
5
|
+
* bundle reaches this code only via the McpClientPool import chain —
|
|
6
|
+
* never to actually substitute anything.
|
|
7
|
+
*
|
|
8
|
+
* Returns the input verbatim. If a browser consumer ever wires a remote
|
|
9
|
+
* MCP, the {@link McpClientPool} browser stub rejects the register call
|
|
10
|
+
* before this helper is reached.
|
|
11
|
+
*/
|
|
12
|
+
export declare function substituteEnvInString(value: string): string;
|
|
13
|
+
export declare function substituteEnvInHeaders(headers: {
|
|
14
|
+
readonly [key: string]: string;
|
|
15
|
+
} | undefined): {
|
|
16
|
+
[key: string]: string;
|
|
17
|
+
} | undefined;
|
|
18
|
+
//# sourceMappingURL=substituteEnv.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substituteEnv.browser.d.ts","sourceRoot":"","sources":["../../../src/client/mcp/substituteEnv.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,GACtD;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,CAGvC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser stub for `substituteEnv.ts`. `process.env` doesn't exist in
|
|
3
|
+
* the browser globals; the SDK's remote-MCP feature is a server-side
|
|
4
|
+
* concern (subprocess + arbitrary fetch authority), so the browser
|
|
5
|
+
* bundle reaches this code only via the McpClientPool import chain —
|
|
6
|
+
* never to actually substitute anything.
|
|
7
|
+
*
|
|
8
|
+
* Returns the input verbatim. If a browser consumer ever wires a remote
|
|
9
|
+
* MCP, the {@link McpClientPool} browser stub rejects the register call
|
|
10
|
+
* before this helper is reached.
|
|
11
|
+
*/
|
|
12
|
+
export function substituteEnvInString(value) {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
export function substituteEnvInHeaders(headers) {
|
|
16
|
+
if (headers === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
return { ...headers };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=substituteEnv.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substituteEnv.browser.js","sourceRoot":"","sources":["../../../src/client/mcp/substituteEnv.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAuD;IAEvD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AACxB,CAAC"}
|