@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,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `requireApproval` — ergonomic HITL shorthand on `defineFunctionTool`
|
|
3
|
+
* (S4). Closes the gap identified by the 2026-05-21 ADK comparison
|
|
4
|
+
* (see `docs/sdk2/research/2026-05-21-google-adk-vs-qodo-ts-sdk.md`,
|
|
5
|
+
* Opportunity 5 — ADK's `FunctionTool(my_fn, require_confirmation=True)`
|
|
6
|
+
* is one line; qodo-ts-sdk's pre-S4 surface required ~10 lines across
|
|
7
|
+
* annotations + name-based gate + `onRequest` resolution).
|
|
8
|
+
*
|
|
9
|
+
* The flag composes onto the existing three-layer HITL model documented
|
|
10
|
+
* in `docs/sdk2/concepts/03-hitl.md`:
|
|
11
|
+
*
|
|
12
|
+
* - **Layer 1 (instruction).** `defineFunctionTool({ description })`
|
|
13
|
+
* already shapes the LLM's choice to call the tool. The optional
|
|
14
|
+
* `prompt` on `ApprovalConfig` becomes the human-facing prompt at
|
|
15
|
+
* resolution time — not an instruction to the model.
|
|
16
|
+
* - **Layer 2 (schema).** QAR currently owns `HITLBlock` synthesis on
|
|
17
|
+
* the wire (name-based, server-side, deployment-driven). S4 does
|
|
18
|
+
* NOT attempt to push a synthetic `HITLBlock` onto QAR's
|
|
19
|
+
* `tool.request` envelope; doing so would require a wire-side ADR
|
|
20
|
+
* and a QAR change. Instead, S4 synthesizes the equivalent
|
|
21
|
+
* decision-making flow SDK-side at dispatch time.
|
|
22
|
+
* - **Layer 3 (trust-tier gate).** The actual gate moves into the SDK
|
|
23
|
+
* for tools the consumer marked with `requireApproval`. Before the
|
|
24
|
+
* handler runs, the router asks the consumer's
|
|
25
|
+
* `ApprovalHandler` to approve / deny. Approve → handler invoked
|
|
26
|
+
* with the parsed Zod args. Deny → `outcome: 'denied'` returned to
|
|
27
|
+
* the LLM. Denial is a recoverable error (not a pipeline-fatal one);
|
|
28
|
+
* the agent loop sees the rejection as a normal tool-result and can
|
|
29
|
+
* decide whether to retry, ask the user, or give up.
|
|
30
|
+
*
|
|
31
|
+
* Annotation passthrough is **advisory**, not the gate. The MCP spec
|
|
32
|
+
* explicitly tags `Tool.annotations` as untrusted (see
|
|
33
|
+
* `docs/sdk2/concepts/03-hitl.md` § Dynamic HITL); the runtime's
|
|
34
|
+
* name-based policy is what holds when an MCP misbehaves. S4 still
|
|
35
|
+
* merges `sensitivity`-driven hints (`destructiveHint`, `openWorldHint`)
|
|
36
|
+
* onto the produced `FunctionToolDef.function.annotations` so downstream
|
|
37
|
+
* observability (OTel span attrs, Shape C dynamic filters reading
|
|
38
|
+
* `annotations.destructiveHint`) can see them — but the consumer-side
|
|
39
|
+
* approval flow IS the SDK-level gate.
|
|
40
|
+
*/
|
|
41
|
+
import { readlineApprovalPrompt } from './_readlineApprovalPrompt.js';
|
|
42
|
+
import { ToolDeniedError } from '../errors.js';
|
|
43
|
+
/**
|
|
44
|
+
* Default approval handler. Behavior:
|
|
45
|
+
*
|
|
46
|
+
* - If `process.stdin.isTTY` (interactive Node CLI) — prompt via
|
|
47
|
+
* `readline` with a yes/no question. `y` / `yes` → approve;
|
|
48
|
+
* anything else → deny. Useful for tutorials, scripts,
|
|
49
|
+
* `examples/usecases/*`.
|
|
50
|
+
* - Otherwise (non-TTY, daemon, web worker, browser bundle, CI) —
|
|
51
|
+
* deterministically deny with a typed error message so the
|
|
52
|
+
* consumer's stack trace points at the missing
|
|
53
|
+
* `setApprovalHandler` registration instead of getting a
|
|
54
|
+
* mysterious "tool denied" from QAR. Auto-approving in
|
|
55
|
+
* non-interactive contexts would silently defeat the gate — the
|
|
56
|
+
* wrong default for an approval surface.
|
|
57
|
+
*
|
|
58
|
+
* Override via `client.tools.setApprovalHandler(fn)`. Production
|
|
59
|
+
* apps that route approvals to Slack / a web UI / a pager should
|
|
60
|
+
* register an explicit handler at startup; the default is the
|
|
61
|
+
* "I have an stdin" fallback for the simplest cases.
|
|
62
|
+
*
|
|
63
|
+
* **Concurrency.** `FunctionToolRouter.dispatch` fires per-call
|
|
64
|
+
* handlers via `Promise.all`. Multiple `requireApproval`-gated
|
|
65
|
+
* calls in one `tool.request` batch would otherwise open multiple
|
|
66
|
+
* readline interfaces on the same `process.stdin` and interleave —
|
|
67
|
+
* see {@link readlineApprovalPrompt} for the module-level
|
|
68
|
+
* promise-chain mutex that serializes the default stdin prompts
|
|
69
|
+
* (regression test in `tests/require-approval.test.ts`
|
|
70
|
+
* § readlineApprovalPrompt mutex).
|
|
71
|
+
* Consumer-override handlers (Slack, web UI) don't share stdin and
|
|
72
|
+
* stay parallel by design — serializing them would hurt batch
|
|
73
|
+
* latency in production.
|
|
74
|
+
*/
|
|
75
|
+
export const defaultApprovalHandler = (req) => readlineApprovalPrompt(req.toolName, req.prompt);
|
|
76
|
+
/**
|
|
77
|
+
* Build the human-facing prompt for an approval request. Falls back
|
|
78
|
+
* to a canned `"Approve <tool>(<args>)?"` shape when the consumer
|
|
79
|
+
* didn't set `config.prompt`. Arguments are JSON-stringified with a
|
|
80
|
+
* 256-char cap so a giant args bag doesn't drown the prompt.
|
|
81
|
+
*/
|
|
82
|
+
function buildPrompt(toolName, config, call, parsedArguments) {
|
|
83
|
+
if (typeof config.prompt === 'string' && config.prompt.length > 0) {
|
|
84
|
+
return config.prompt;
|
|
85
|
+
}
|
|
86
|
+
// Prefer parsed args when available — the approver should see the
|
|
87
|
+
// same canonical bag the function-tool handler will actually
|
|
88
|
+
// receive (defaults applied, transforms run). Fall back to the raw
|
|
89
|
+
// wire args only when parsing didn't happen (resolveApproval
|
|
90
|
+
// invoked outside the router; unit-test paths).
|
|
91
|
+
const argsForPrompt = parsedArguments ?? call.arguments;
|
|
92
|
+
let argsRender;
|
|
93
|
+
try {
|
|
94
|
+
argsRender = JSON.stringify(argsForPrompt);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
argsRender = '<unserializable args>';
|
|
98
|
+
}
|
|
99
|
+
if (argsRender.length > 256) {
|
|
100
|
+
argsRender = `${argsRender.slice(0, 253)}...`;
|
|
101
|
+
}
|
|
102
|
+
return `Approve ${toolName}(${argsRender})?`;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve an approval request against the supplied handler. Maps
|
|
106
|
+
* thrown errors (handler bugs, denial-by-throw) to the wire
|
|
107
|
+
* `ToolResponseResult` shape:
|
|
108
|
+
*
|
|
109
|
+
* - Handler returns `{ decision: 'approve' }` → returns the
|
|
110
|
+
* {@link ApprovalDecision} so the caller can pass through the
|
|
111
|
+
* optional `input` / `selection` payload to the function-tool
|
|
112
|
+
* handler.
|
|
113
|
+
* - Handler returns `{ decision: 'deny' }` → returns the
|
|
114
|
+
* pre-formatted `{ outcome: 'denied' }` response item. The
|
|
115
|
+
* caller MUST NOT invoke the function-tool handler.
|
|
116
|
+
* - Handler throws `ToolDeniedError` → mapped to `outcome: 'denied'`.
|
|
117
|
+
* - Handler throws any other Error → mapped to `outcome: 'error'`
|
|
118
|
+
* with the error message (capped by the dispatcher's existing
|
|
119
|
+
* `MAX_ERROR_LEN` boundary).
|
|
120
|
+
*
|
|
121
|
+
* The two-arm return shape (`'approve' | { outcome: 'denied' | 'error' }`)
|
|
122
|
+
* lets the caller skip the function-tool handler invocation entirely
|
|
123
|
+
* on rejection — no need for an `if (decision === 'deny')` follow-up
|
|
124
|
+
* branch.
|
|
125
|
+
*/
|
|
126
|
+
export async function resolveApproval(handler, toolName, config, call, nodeName, parsedArguments) {
|
|
127
|
+
const req = {
|
|
128
|
+
toolName,
|
|
129
|
+
config,
|
|
130
|
+
call,
|
|
131
|
+
nodeName,
|
|
132
|
+
prompt: buildPrompt(toolName, config, call, parsedArguments),
|
|
133
|
+
...(parsedArguments !== undefined ? { parsedArguments } : {}),
|
|
134
|
+
};
|
|
135
|
+
let raw;
|
|
136
|
+
try {
|
|
137
|
+
raw = await handler(req);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (err instanceof ToolDeniedError) {
|
|
141
|
+
return { _denial: { outcome: 'denied', error: err.message } };
|
|
142
|
+
}
|
|
143
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
144
|
+
return { _denial: { outcome: 'error', error: message } };
|
|
145
|
+
}
|
|
146
|
+
// Guard the handler's return shape. A malformed return (undefined,
|
|
147
|
+
// null, missing `decision`, wrong discriminator) used to throw
|
|
148
|
+
// when we read `decision.decision` outside the try/catch, which
|
|
149
|
+
// escaped resolveApproval AND escaped runOne — tanking the entire
|
|
150
|
+
// batch as a router-dispatch exception. The contract is "every
|
|
151
|
+
// approval outcome maps to a per-call ToolResponseResult", so a
|
|
152
|
+
// malformed return surfaces as `outcome: 'error'` for THIS call
|
|
153
|
+
// and the rest of the batch proceeds normally.
|
|
154
|
+
if (raw === null || typeof raw !== 'object') {
|
|
155
|
+
return {
|
|
156
|
+
_denial: {
|
|
157
|
+
outcome: 'error',
|
|
158
|
+
error: `ApprovalHandler(${toolName}) returned a non-object value — expected ApprovalDecision`,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const decisionField = raw.decision;
|
|
163
|
+
if (decisionField !== 'approve' && decisionField !== 'deny') {
|
|
164
|
+
return {
|
|
165
|
+
_denial: {
|
|
166
|
+
outcome: 'error',
|
|
167
|
+
error: `ApprovalHandler(${toolName}) returned a malformed ApprovalDecision ` +
|
|
168
|
+
`— expected \`decision: 'approve' | 'deny'\`, got ${JSON.stringify(decisionField)}`,
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const decision = raw;
|
|
173
|
+
if (decision.decision === 'deny') {
|
|
174
|
+
return {
|
|
175
|
+
_denial: {
|
|
176
|
+
outcome: 'denied',
|
|
177
|
+
error: decision.reason ?? `approval denied for ${toolName}`,
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return decision;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Merge the consumer-supplied `annotations` (if any) with the
|
|
185
|
+
* sensitivity-driven advisory overlay. Consumer values WIN on
|
|
186
|
+
* collision — `requireApproval` is a shorthand, not a forced
|
|
187
|
+
* override. Set sensitivity to opt into the overlay; leave
|
|
188
|
+
* `annotations` undefined to accept it verbatim.
|
|
189
|
+
*
|
|
190
|
+
* Returns `undefined` when neither side contributes a field
|
|
191
|
+
* (so the produced `FunctionToolDef` stays free of an empty
|
|
192
|
+
* `annotations: {}` object — every wire byte counts).
|
|
193
|
+
*/
|
|
194
|
+
export function mergeApprovalAnnotations(base, config) {
|
|
195
|
+
// Build the overlay as a plain mutable record so the `readonly`
|
|
196
|
+
// contract on `McpToolAnnotations` stays honored at the type
|
|
197
|
+
// boundary. We freeze the merged result indirectly via the spread
|
|
198
|
+
// — consumers see an immutable shape.
|
|
199
|
+
const overlay = {};
|
|
200
|
+
if (config.sensitivity === 'pii' || config.sensitivity === 'secret') {
|
|
201
|
+
overlay.destructiveHint = true;
|
|
202
|
+
}
|
|
203
|
+
if (config.sensitivity === 'secret') {
|
|
204
|
+
overlay.openWorldHint = true;
|
|
205
|
+
}
|
|
206
|
+
if (Object.keys(overlay).length === 0 && base === undefined) {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
// Consumer-supplied annotations WIN — the overlay only fills gaps.
|
|
210
|
+
return { ...overlay, ...(base ?? {}) };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Normalize the consumer-facing `requireApproval` value into the
|
|
214
|
+
* internal {@link ApprovalConfig} shape. `true` → `{ kind:
|
|
215
|
+
* 'approval', sensitivity: 'low' }`; an explicit
|
|
216
|
+
* {@link ApprovalConfig} is returned as-is; `false` / `undefined`
|
|
217
|
+
* returns `undefined` (gate disabled).
|
|
218
|
+
*
|
|
219
|
+
* Centralizing the normalization here keeps `defineFunctionTool` and
|
|
220
|
+
* the router from re-implementing the boolean → object widening.
|
|
221
|
+
*/
|
|
222
|
+
export function normalizeApprovalConfig(value) {
|
|
223
|
+
if (value === undefined || value === false)
|
|
224
|
+
return undefined;
|
|
225
|
+
if (value === true)
|
|
226
|
+
return { kind: 'approval', sensitivity: 'low' };
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/client/tools/approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bind step — walks `agent.tools[]` (or every agent's `tools[]` in a
|
|
3
|
+
* graph) at `tasks.startWithAgent` / `tasks.startWithGraph` time,
|
|
4
|
+
* extracts any `defineFunctionTool` handler bags, and installs a single
|
|
5
|
+
* primary `onRequest` handler on the supplied `ToolClient` that
|
|
6
|
+
* dispatches inbound `tool.request` calls by `name` to the right
|
|
7
|
+
* handler.
|
|
8
|
+
*
|
|
9
|
+
* Idempotency: calling the bind step repeatedly with the same tools is
|
|
10
|
+
* cheap — the underlying handler-table is a Map keyed by tool name, so
|
|
11
|
+
* re-binding overrides in-place. The single `onRequest` subscription
|
|
12
|
+
* is attached lazily the first time any handler is registered and
|
|
13
|
+
* stays attached for the lifetime of the client; subsequent task
|
|
14
|
+
* starts only mutate the table.
|
|
15
|
+
*
|
|
16
|
+
* Attachment mode — **fallback, not primary**. The router installs via
|
|
17
|
+
* `ToolClient._attachFallbackHandler(...)`, not the public
|
|
18
|
+
* `onRequest(...)`. Two reasons:
|
|
19
|
+
*
|
|
20
|
+
* 1. **Deterministic-deny preservation.** The dispatcher's
|
|
21
|
+
* "zero-primary-handlers → emit denied" path keys off
|
|
22
|
+
* `this.handlers.length === 0`. Installing the router as a
|
|
23
|
+
* primary handler would defeat that fallback whenever the
|
|
24
|
+
* consumer hadn't also registered a manual `onRequest` —
|
|
25
|
+
* a batch with an unregistered tool name would return
|
|
26
|
+
* `undefined` from our router and then nobody would claim it,
|
|
27
|
+
* leaving QAR's agent loop stalled until the per-task tool-response
|
|
28
|
+
* timeout. As a fallback handler, our router runs AFTER the
|
|
29
|
+
* primary stack but does NOT count toward the
|
|
30
|
+
* no-primaries check, so unrecognized batches still get the
|
|
31
|
+
* deterministic deny.
|
|
32
|
+
* 2. **Consumer-explicit beats SDK-helper.** When a consumer
|
|
33
|
+
* registers a manual `onRequest` for tool name "X" AND defines
|
|
34
|
+
* `defineFunctionTool({ name: 'X' })`, the consumer's explicit
|
|
35
|
+
* handler wins — the primary stack always runs first.
|
|
36
|
+
*
|
|
37
|
+
* Dispatch policy:
|
|
38
|
+
*
|
|
39
|
+
* - If every call name in the inbound batch matches a registered
|
|
40
|
+
* function-tool handler, the router claims the batch and returns
|
|
41
|
+
* the positional result array. Each handler runs in isolation;
|
|
42
|
+
* per-call exceptions are mapped to per-call
|
|
43
|
+
* `outcome: 'error'` / `outcome: 'denied'` (the latter when the
|
|
44
|
+
* handler throws `ToolDeniedError`).
|
|
45
|
+
* - If ANY call in the batch has a name NOT in the table, the
|
|
46
|
+
* router returns `undefined`. With no other fallback claiming
|
|
47
|
+
* AND no primary handler, the dispatcher's deny path fires for
|
|
48
|
+
* the whole batch. With a primary handler present, the dispatcher
|
|
49
|
+
* defers (per the documented "consumer will respond later"
|
|
50
|
+
* semantics — primary handlers already ran first).
|
|
51
|
+
*
|
|
52
|
+
* Argument parsing: the router invokes `bag.parameters.safeParse(...)`
|
|
53
|
+
* on `call.arguments` before invoking the handler. Successful parse
|
|
54
|
+
* yields the typed output (defaults applied, transforms run);
|
|
55
|
+
* failures map to a per-call `outcome: 'error'` with the formatted
|
|
56
|
+
* Zod issue list. This matches the type contract — `handler: (args:
|
|
57
|
+
* z.infer<TSchema>) => ...` promises the OUTPUT type, not the wire
|
|
58
|
+
* INPUT type — and gives consumers the DX they expect from a Zod-
|
|
59
|
+
* derived helper.
|
|
60
|
+
*/
|
|
61
|
+
import type { ToolClient } from '../ToolClient.js';
|
|
62
|
+
import type { FunctionToolDef } from '../../qar/specs.js';
|
|
63
|
+
/**
|
|
64
|
+
* Per-client registry of `defineFunctionTool` handlers. One instance
|
|
65
|
+
* per `QodoClient`; shared across every `tasks.startWith*` call so the
|
|
66
|
+
* same handler stays installed even as the consumer dispatches multiple
|
|
67
|
+
* tasks.
|
|
68
|
+
*
|
|
69
|
+
* Exposed as a class (not a module-level Map) so each client gets an
|
|
70
|
+
* isolated table — multi-client test harnesses don't see cross-talk.
|
|
71
|
+
*/
|
|
72
|
+
export declare class FunctionToolRouter {
|
|
73
|
+
private readonly bags;
|
|
74
|
+
private subscription;
|
|
75
|
+
/**
|
|
76
|
+
* Resolver invoked when a `requireApproval`-gated tool is about to
|
|
77
|
+
* dispatch. Owned by the parent `ToolClient` (consumer registers via
|
|
78
|
+
* `client.tools.setApprovalHandler(...)`); the router holds a
|
|
79
|
+
* getter so an override registered AFTER `attach()` still applies
|
|
80
|
+
* to subsequent inbound batches.
|
|
81
|
+
*/
|
|
82
|
+
private getApprovalHandler;
|
|
83
|
+
/**
|
|
84
|
+
* Predicate read by {@link runOne} AFTER an approval resolves
|
|
85
|
+
* `approve` and BEFORE the function-tool handler is invoked. When
|
|
86
|
+
* the wire has died during the approval round-trip (auto-reconnect
|
|
87
|
+
* exhausted, `failHardAndCleanup` ran, or an explicit
|
|
88
|
+
* `client.disconnect()` raced the resolver), this returns `false`
|
|
89
|
+
* and the router synthesizes a per-call
|
|
90
|
+
* `outcome: 'error'` — the handler does NOT execute, so no
|
|
91
|
+
* real-world side effect occurs that we wouldn't be able to
|
|
92
|
+
* acknowledge on the wire.
|
|
93
|
+
*
|
|
94
|
+
* Defaulted to a permissive `true` so the router stays
|
|
95
|
+
* functionally identical before `attach()` (unit tests construct
|
|
96
|
+
* the router directly + drive `dispatch` without ever calling
|
|
97
|
+
* `attach`).
|
|
98
|
+
*/
|
|
99
|
+
private isConnectionLive;
|
|
100
|
+
/**
|
|
101
|
+
* Register every `defineFunctionTool`-produced entry in `tools` with
|
|
102
|
+
* the router. Hand-authored `FunctionToolDef` literals (no symbol
|
|
103
|
+
* handler attached) are skipped. Returns the number of newly
|
|
104
|
+
* registered names — useful for tests + breadcrumb logging.
|
|
105
|
+
*
|
|
106
|
+
* If `tools` is empty / `null` / `undefined`, the router is left
|
|
107
|
+
* alone — no auto-attach, no error.
|
|
108
|
+
*/
|
|
109
|
+
register(tools: readonly FunctionToolDef[] | null | undefined): number;
|
|
110
|
+
/**
|
|
111
|
+
* Lazy attach. The single fallback handler is registered the first
|
|
112
|
+
* time the router is asked to attach against a `ToolClient`; later
|
|
113
|
+
* calls are no-ops as long as the subscription remains live. The
|
|
114
|
+
* router does NOT auto-detach on `client.disconnect()` — re-binding
|
|
115
|
+
* after reconnect is the consumer's responsibility (the existing
|
|
116
|
+
* subscription becomes stale; the dispatcher's own `attachDispatcher`
|
|
117
|
+
* handles re-attachment).
|
|
118
|
+
*
|
|
119
|
+
* Attaches via `_attachFallbackHandler` so the dispatcher's
|
|
120
|
+
* deterministic-deny path stays intact for unregistered tool names
|
|
121
|
+
* (see the module header for rationale).
|
|
122
|
+
*/
|
|
123
|
+
attach(client: ToolClient): void;
|
|
124
|
+
/**
|
|
125
|
+
* Detach the underlying `onRequest` subscription. Used in tests + by
|
|
126
|
+
* `QodoClient.disconnect()` so a client teardown cleanly drops the
|
|
127
|
+
* router-installed handler.
|
|
128
|
+
*/
|
|
129
|
+
detach(): void;
|
|
130
|
+
/**
|
|
131
|
+
* The actual dispatch handler — wired as the body of the single
|
|
132
|
+
* `onRequest` subscription.
|
|
133
|
+
*
|
|
134
|
+
* Returns `undefined` (fall-through) when:
|
|
135
|
+
*
|
|
136
|
+
* - The router has no handlers registered (rare — only if `attach`
|
|
137
|
+
* was called before any `register`).
|
|
138
|
+
* - Any call in the inbound batch has a name not in the table —
|
|
139
|
+
* defers to the next handler so mixed surfaces still work.
|
|
140
|
+
*
|
|
141
|
+
* Otherwise, invokes every handler in parallel
|
|
142
|
+
* (`Promise.all([...])`) and returns the positional result array.
|
|
143
|
+
* Exceptions per-handler are mapped to per-call response shapes.
|
|
144
|
+
*/
|
|
145
|
+
private dispatch;
|
|
146
|
+
/**
|
|
147
|
+
* Invoke a single handler. Catches throws and maps them to a
|
|
148
|
+
* per-call `ToolResponseResult`. `ToolDeniedError` becomes `outcome:
|
|
149
|
+
* 'denied'`; everything else becomes `outcome: 'error'`. Mirrors the
|
|
150
|
+
* mapping logic in `ToolClient.dispatchInner` so consumers see the
|
|
151
|
+
* same semantics whether they use `defineFunctionTool` or the manual
|
|
152
|
+
* `onRequest` surface.
|
|
153
|
+
*/
|
|
154
|
+
private runOne;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=bindFunctionToolDefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindFunctionToolDefs.d.ts","sourceRoot":"","sources":["../../../src/client/tools/bindFunctionToolDefs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAcH,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6C;IAClE,OAAO,CAAC,YAAY,CAAwC;IAC5D;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAOxB;IAEF;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IAErD;;;;;;;;OAQG;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IAe7E;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAiBvC;;;;OAIG;IACI,MAAM,IAAI,IAAI;IAuBrB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,QAAQ,CAed;IAEF;;;;;;;OAOG;YACW,MAAM;CA8HrB"}
|