@qodo/sdk 0.13.3 → 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 -104
- package/dist/api/agent.d.ts.map +0 -1
- package/dist/api/agent.js +0 -939
- 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,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Construction options for `QodoClient` and friends.
|
|
3
|
+
*
|
|
4
|
+
* Strict — no `any` at the public surface. Optional fields that may grow over
|
|
5
|
+
* time (e.g. `headers`, `transport`) carry an index-signature-free interface so
|
|
6
|
+
* adding a key is a SemVer-additive change rather than a silent extension.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/client/options.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser stub for {@link readlineApprovalPrompt}. The Node version
|
|
3
|
+
* imports `readline` to drive an interactive stdin prompt; in the
|
|
4
|
+
* browser the import is a hard error at bundle time. This stub
|
|
5
|
+
* always deterministic-denies — there is no meaningful "default
|
|
6
|
+
* approval flow" in a browser bundle; the consumer MUST register an
|
|
7
|
+
* explicit `ApprovalHandler` via
|
|
8
|
+
* `client.tools.setApprovalHandler(...)`.
|
|
9
|
+
*
|
|
10
|
+
* Wired via `package.json#browser` (per the existing pattern
|
|
11
|
+
* established by `transport.browser.ts` /
|
|
12
|
+
* `resolveOTel.browser.ts`); module-resolution swap is automatic at
|
|
13
|
+
* bundle time.
|
|
14
|
+
*/
|
|
15
|
+
import type { ApprovalDecision } from './approval.js';
|
|
16
|
+
export declare function readlineApprovalPrompt(toolName: string, _prompt: string): Promise<ApprovalDecision>;
|
|
17
|
+
//# sourceMappingURL=_readlineApprovalPrompt.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_readlineApprovalPrompt.browser.d.ts","sourceRoot":"","sources":["../../../src/client/tools/_readlineApprovalPrompt.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser stub for {@link readlineApprovalPrompt}. The Node version
|
|
3
|
+
* imports `readline` to drive an interactive stdin prompt; in the
|
|
4
|
+
* browser the import is a hard error at bundle time. This stub
|
|
5
|
+
* always deterministic-denies — there is no meaningful "default
|
|
6
|
+
* approval flow" in a browser bundle; the consumer MUST register an
|
|
7
|
+
* explicit `ApprovalHandler` via
|
|
8
|
+
* `client.tools.setApprovalHandler(...)`.
|
|
9
|
+
*
|
|
10
|
+
* Wired via `package.json#browser` (per the existing pattern
|
|
11
|
+
* established by `transport.browser.ts` /
|
|
12
|
+
* `resolveOTel.browser.ts`); module-resolution swap is automatic at
|
|
13
|
+
* bundle time.
|
|
14
|
+
*/
|
|
15
|
+
export async function readlineApprovalPrompt(toolName, _prompt) {
|
|
16
|
+
return {
|
|
17
|
+
decision: 'deny',
|
|
18
|
+
reason: `defineFunctionTool(${toolName}): no \`ApprovalHandler\` registered in browser ` +
|
|
19
|
+
'context — register one with `client.tools.setApprovalHandler(...)` before ' +
|
|
20
|
+
'dispatching a task that uses requireApproval-gated tools. Browser bundles have ' +
|
|
21
|
+
'no stdin to default to; deterministic-deny keeps the approval surface safe.',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=_readlineApprovalPrompt.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_readlineApprovalPrompt.browser.js","sourceRoot":"","sources":["../../../src/client/tools/_readlineApprovalPrompt.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,OAAe;IAEf,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,MAAM,EACJ,sBAAsB,QAAQ,kDAAkD;YAChF,4EAA4E;YAC5E,iFAAiF;YACjF,6EAA6E;KAChF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only readline prompt for the default approval handler. Lives
|
|
3
|
+
* in its own file so the browser bundle can swap it for a stub via
|
|
4
|
+
* package.json's `"browser"` field (mirroring the existing
|
|
5
|
+
* `transport.browser.ts` / `manager.browser.ts` pattern). Keeping
|
|
6
|
+
* the `readline` import in this file means the rest of
|
|
7
|
+
* `approval.ts` — types, normalization, annotation merging,
|
|
8
|
+
* `resolveApproval` — stays bundler-safe.
|
|
9
|
+
*
|
|
10
|
+
* The Node version reads `process.stdin` when `isTTY` is true and
|
|
11
|
+
* deterministic-denies otherwise. The browser stub
|
|
12
|
+
* (`_readlineApprovalPrompt.browser.ts`) always deterministic-denies
|
|
13
|
+
* with a message explaining that the consumer must register an
|
|
14
|
+
* explicit `ApprovalHandler`.
|
|
15
|
+
*/
|
|
16
|
+
import type { ApprovalDecision } from './approval.js';
|
|
17
|
+
/**
|
|
18
|
+
* Prompt for a yes/no approval on stdin. Returns the resolved
|
|
19
|
+
* {@link ApprovalDecision}. In non-TTY contexts (daemon, web worker,
|
|
20
|
+
* CI), returns `{ decision: 'deny' }` with a typed reason explaining
|
|
21
|
+
* how to register a custom handler.
|
|
22
|
+
*
|
|
23
|
+
* Concurrent invocations queue on a module-level mutex so multiple
|
|
24
|
+
* `requireApproval`-gated tools in one `tool.request` batch don't
|
|
25
|
+
* interleave on the shared stdin (see comment on `promptQueue`).
|
|
26
|
+
*
|
|
27
|
+
* The Node `readline` import is statically resolvable in this file —
|
|
28
|
+
* which is intentional: bundlers walking `approval.ts` see the
|
|
29
|
+
* import path (via the per-file alias in `package.json#browser`) and
|
|
30
|
+
* substitute the browser stub instead.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readlineApprovalPrompt(toolName: string, prompt: string): Promise<ApprovalDecision>;
|
|
33
|
+
//# sourceMappingURL=_readlineApprovalPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_readlineApprovalPrompt.d.ts","sourceRoot":"","sources":["../../../src/client/tools/_readlineApprovalPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAkBtD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only readline prompt for the default approval handler. Lives
|
|
3
|
+
* in its own file so the browser bundle can swap it for a stub via
|
|
4
|
+
* package.json's `"browser"` field (mirroring the existing
|
|
5
|
+
* `transport.browser.ts` / `manager.browser.ts` pattern). Keeping
|
|
6
|
+
* the `readline` import in this file means the rest of
|
|
7
|
+
* `approval.ts` — types, normalization, annotation merging,
|
|
8
|
+
* `resolveApproval` — stays bundler-safe.
|
|
9
|
+
*
|
|
10
|
+
* The Node version reads `process.stdin` when `isTTY` is true and
|
|
11
|
+
* deterministic-denies otherwise. The browser stub
|
|
12
|
+
* (`_readlineApprovalPrompt.browser.ts`) always deterministic-denies
|
|
13
|
+
* with a message explaining that the consumer must register an
|
|
14
|
+
* explicit `ApprovalHandler`.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Module-level mutex serializing concurrent stdin prompts.
|
|
18
|
+
*
|
|
19
|
+
* `FunctionToolRouter.dispatch` runs every per-call handler via
|
|
20
|
+
* `Promise.all`, which is correct for parallel side-effect tools —
|
|
21
|
+
* but the default approval flow uses readline on `process.stdin`,
|
|
22
|
+
* and concurrent readline interfaces over the same stdin interleave
|
|
23
|
+
* (multiple prompts visible at once, keystrokes routing
|
|
24
|
+
* non-deterministically to whichever interface read first). The
|
|
25
|
+
* fix is local to the default handler: chain promises so prompts
|
|
26
|
+
* run one-at-a-time on the shared stdin. Production override
|
|
27
|
+
* handlers (Slack, web UI) don't share stdin, so they don't need
|
|
28
|
+
* this — they bypass the mutex entirely.
|
|
29
|
+
*/
|
|
30
|
+
let promptQueue = Promise.resolve();
|
|
31
|
+
/**
|
|
32
|
+
* Prompt for a yes/no approval on stdin. Returns the resolved
|
|
33
|
+
* {@link ApprovalDecision}. In non-TTY contexts (daemon, web worker,
|
|
34
|
+
* CI), returns `{ decision: 'deny' }` with a typed reason explaining
|
|
35
|
+
* how to register a custom handler.
|
|
36
|
+
*
|
|
37
|
+
* Concurrent invocations queue on a module-level mutex so multiple
|
|
38
|
+
* `requireApproval`-gated tools in one `tool.request` batch don't
|
|
39
|
+
* interleave on the shared stdin (see comment on `promptQueue`).
|
|
40
|
+
*
|
|
41
|
+
* The Node `readline` import is statically resolvable in this file —
|
|
42
|
+
* which is intentional: bundlers walking `approval.ts` see the
|
|
43
|
+
* import path (via the per-file alias in `package.json#browser`) and
|
|
44
|
+
* substitute the browser stub instead.
|
|
45
|
+
*/
|
|
46
|
+
export async function readlineApprovalPrompt(toolName, prompt) {
|
|
47
|
+
// Chain on the queue tail so the next prompt only starts once
|
|
48
|
+
// the previous one resolves. Wrap so a thrown prompt doesn't
|
|
49
|
+
// poison the chain — `.catch(() => undefined)` keeps the next
|
|
50
|
+
// waiter unblocked.
|
|
51
|
+
const myTurn = promptQueue.catch(() => undefined).then(() => runPromptOnce(toolName, prompt));
|
|
52
|
+
promptQueue = myTurn;
|
|
53
|
+
return myTurn;
|
|
54
|
+
}
|
|
55
|
+
async function runPromptOnce(toolName, prompt) {
|
|
56
|
+
const stdin = typeof process !== 'undefined' && process.stdin
|
|
57
|
+
? process.stdin
|
|
58
|
+
: undefined;
|
|
59
|
+
if (stdin === undefined || stdin.isTTY !== true) {
|
|
60
|
+
return {
|
|
61
|
+
decision: 'deny',
|
|
62
|
+
reason: `defineFunctionTool(${toolName}): no \`ApprovalHandler\` registered and ` +
|
|
63
|
+
'stdin is not a TTY — register one with ' +
|
|
64
|
+
'`client.tools.setApprovalHandler(...)` before dispatching a task that uses ' +
|
|
65
|
+
'requireApproval-gated tools. Default behavior is deterministic-deny to keep ' +
|
|
66
|
+
'the approval surface safe by default.',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const readline = await import('readline');
|
|
70
|
+
const rl = readline.createInterface({
|
|
71
|
+
input: process.stdin,
|
|
72
|
+
output: process.stdout,
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
const answer = await new Promise((resolve) => {
|
|
76
|
+
rl.question(`${prompt} [y/N] `, (input) => {
|
|
77
|
+
resolve(input);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
const normalized = answer.trim().toLowerCase();
|
|
81
|
+
if (normalized === 'y' || normalized === 'yes') {
|
|
82
|
+
return { decision: 'approve' };
|
|
83
|
+
}
|
|
84
|
+
return { decision: 'deny', reason: 'approver said no' };
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
rl.close();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=_readlineApprovalPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_readlineApprovalPrompt.js","sourceRoot":"","sources":["../../../src/client/tools/_readlineApprovalPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;;;;;GAaG;AACH,IAAI,WAAW,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,MAAc;IAEd,8DAA8D;IAC9D,6DAA6D;IAC7D,8DAA8D;IAC9D,oBAAoB;IACpB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC1D,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAChC,CAAC;IACF,WAAW,GAAG,MAAM,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,MAAc;IAEd,MAAM,KAAK,GACT,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,KAAK;QAC7C,CAAC,CAAE,OAAO,CAAC,KAAsC;QACjD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,MAAM,EACJ,sBAAsB,QAAQ,2CAA2C;gBACzE,yCAAyC;gBACzC,6EAA6E;gBAC7E,8EAA8E;gBAC9E,uCAAuC;SAC1C,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnD,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,280 @@
|
|
|
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 type { JsonObject } from '../../qar/json.js';
|
|
42
|
+
import type { ToolCall, ToolResponseResult } from '../../qar/payloads.js';
|
|
43
|
+
import type { McpToolAnnotations } from '../../qar/specs.js';
|
|
44
|
+
/**
|
|
45
|
+
* Sensitivity tier carried on an {@link ApprovalConfig}. Picks the
|
|
46
|
+
* advisory annotation overlay applied to the produced
|
|
47
|
+
* `FunctionToolDef.function.annotations`:
|
|
48
|
+
*
|
|
49
|
+
* - `'low'` — no overlay. The flag still gates dispatch through the
|
|
50
|
+
* consumer's `ApprovalHandler`; advisory annotations remain at
|
|
51
|
+
* whatever the consumer passed in.
|
|
52
|
+
* - `'pii'` — adds `destructiveHint: true`. Signals "this tool sees
|
|
53
|
+
* user data; treat the call site carefully" to downstream filters.
|
|
54
|
+
* - `'secret'` — adds `destructiveHint: true` AND `openWorldHint:
|
|
55
|
+
* true`. Signals "this tool touches external state or secret-tier
|
|
56
|
+
* data". Equivalent (semantically) to QAR's
|
|
57
|
+
* `Sensitivity.SECRET` HITL classification — see
|
|
58
|
+
* `docs/sdk2/concepts/03-hitl.md` § Bubble routing.
|
|
59
|
+
*
|
|
60
|
+
* Sensitivity is purely the annotation overlay knob; it does NOT
|
|
61
|
+
* change SDK-side dispatch logic. The same approval flow fires
|
|
62
|
+
* regardless of tier — the tier is metadata for downstream consumers.
|
|
63
|
+
*/
|
|
64
|
+
export type ApprovalSensitivity = 'low' | 'pii' | 'secret';
|
|
65
|
+
/**
|
|
66
|
+
* UX shape requested at the approval surface. Mirrors the three
|
|
67
|
+
* `HITLBlock` kinds from `docs/sdk2/concepts/03-hitl.md`:
|
|
68
|
+
*
|
|
69
|
+
* - `'approval'` — yes/no decision. The {@link ApprovalDecision}'s
|
|
70
|
+
* `decision` discriminates `'approve'` vs `'deny'`; the optional
|
|
71
|
+
* `reason` carries free-form text. Default kind when
|
|
72
|
+
* `requireApproval: true` is set without an explicit
|
|
73
|
+
* {@link ApprovalConfig}.
|
|
74
|
+
* - `'choice'` — closed-set picker. The {@link ApprovalHandler}
|
|
75
|
+
* returns `{ decision: 'approve', selection: '<option-id>' }` when
|
|
76
|
+
* a positive option is chosen and `{ decision: 'deny' }` otherwise.
|
|
77
|
+
* S4 does not parameterize the option list — for a custom option
|
|
78
|
+
* set, drop down to the manual `onRequest` shape (full HITL
|
|
79
|
+
* control). `'choice'` here is a hint to the handler that the
|
|
80
|
+
* consumer expects a closed-set UI.
|
|
81
|
+
* - `'input'` — free-form text response. The handler returns
|
|
82
|
+
* `{ decision: 'approve', input: '<text>' }`; the text flows back
|
|
83
|
+
* to the underlying function-tool handler via the
|
|
84
|
+
* {@link ApprovalDecision.input} field so the handler can pass it
|
|
85
|
+
* forward when invoked.
|
|
86
|
+
*
|
|
87
|
+
* The kind is an authoring-time hint to the {@link ApprovalHandler} —
|
|
88
|
+
* it does not change the dispatch wire (no `HITLBlock` is synthesized
|
|
89
|
+
* onto QAR's envelope).
|
|
90
|
+
*/
|
|
91
|
+
export type ApprovalKind = 'approval' | 'choice' | 'input';
|
|
92
|
+
/**
|
|
93
|
+
* Configuration for a `requireApproval`-gated tool. Every field is
|
|
94
|
+
* optional; passing `requireApproval: true` (the boolean form) is
|
|
95
|
+
* equivalent to passing
|
|
96
|
+
* `{ kind: 'approval', sensitivity: 'low' }`.
|
|
97
|
+
*
|
|
98
|
+
* Fields are advisory hints to the {@link ApprovalHandler} the
|
|
99
|
+
* consumer registers via `client.tools.setApprovalHandler(...)`. The
|
|
100
|
+
* SDK passes the full {@link ApprovalConfig} through unchanged so
|
|
101
|
+
* production handlers can render richer UIs (custom prompts,
|
|
102
|
+
* deadline-driven escalation, sensitivity-keyed audit routing).
|
|
103
|
+
*/
|
|
104
|
+
export interface ApprovalConfig {
|
|
105
|
+
/**
|
|
106
|
+
* UX shape requested at the resolver. See {@link ApprovalKind}.
|
|
107
|
+
* Defaults to `'approval'`.
|
|
108
|
+
*/
|
|
109
|
+
readonly kind?: ApprovalKind;
|
|
110
|
+
/**
|
|
111
|
+
* Sensitivity tier. Drives the annotation overlay applied to the
|
|
112
|
+
* produced `FunctionToolDef.function.annotations` (advisory). Does
|
|
113
|
+
* not change SDK-side dispatch logic. Defaults to `'low'`.
|
|
114
|
+
*/
|
|
115
|
+
readonly sensitivity?: ApprovalSensitivity;
|
|
116
|
+
/**
|
|
117
|
+
* Soft deadline (ms) the handler should observe before escalating
|
|
118
|
+
* or auto-denying. The SDK does NOT enforce this timeout (a
|
|
119
|
+
* blocking stdin prompt happily blocks past it); the value is
|
|
120
|
+
* passed through to the handler so production overrides can wire
|
|
121
|
+
* their own timer.
|
|
122
|
+
*/
|
|
123
|
+
readonly deadlineMs?: number;
|
|
124
|
+
/**
|
|
125
|
+
* Human-facing prompt rendered at the resolver. Defaults to a
|
|
126
|
+
* canned string built from the tool name and arguments. Useful
|
|
127
|
+
* when the tool's `description` is too verbose for an approval UI.
|
|
128
|
+
*/
|
|
129
|
+
readonly prompt?: string;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Decision returned by an {@link ApprovalHandler}:
|
|
133
|
+
*
|
|
134
|
+
* - `{ decision: 'approve' }` — the handler runs with the original
|
|
135
|
+
* parsed args. Optional `input` is passed through to the handler
|
|
136
|
+
* on the per-call context for `'input'`-kind approvals.
|
|
137
|
+
* - `{ decision: 'deny' }` — the handler does NOT run; the SDK
|
|
138
|
+
* returns `{ outcome: 'denied' }` to QAR with the optional
|
|
139
|
+
* `reason` as the error message.
|
|
140
|
+
*
|
|
141
|
+
* Throwing from the handler is also valid — every throw maps to
|
|
142
|
+
* `outcome: 'denied'` (`ToolDeniedError`) or `outcome: 'error'` (any
|
|
143
|
+
* other Error). Use throws for "the resolver UI broke", returns for
|
|
144
|
+
* "the resolver decided".
|
|
145
|
+
*/
|
|
146
|
+
export type ApprovalDecision = {
|
|
147
|
+
readonly decision: 'approve';
|
|
148
|
+
/** Optional free-text input for `'input'`-kind approvals. */
|
|
149
|
+
readonly input?: string;
|
|
150
|
+
/** Optional selection identifier for `'choice'`-kind approvals. */
|
|
151
|
+
readonly selection?: string;
|
|
152
|
+
} | {
|
|
153
|
+
readonly decision: 'deny';
|
|
154
|
+
/** Optional rejection reason; surfaces as the `outcome: 'denied'` error message. */
|
|
155
|
+
readonly reason?: string;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Per-call payload passed to an {@link ApprovalHandler}. Carries
|
|
159
|
+
* everything the resolver needs to render the prompt: the requested
|
|
160
|
+
* UX shape ({@link ApprovalConfig}), the inbound `ToolCall`, and the
|
|
161
|
+
* originating graph node name.
|
|
162
|
+
*/
|
|
163
|
+
export interface ApprovalRequest {
|
|
164
|
+
/** The tool name being gated. Matches `FunctionToolDef.function.name`. */
|
|
165
|
+
readonly toolName: string;
|
|
166
|
+
/** The full approval configuration declared on the tool. */
|
|
167
|
+
readonly config: ApprovalConfig;
|
|
168
|
+
/** The inbound `ToolCall` (raw args, `tool_call_id`, optional HITL block). */
|
|
169
|
+
readonly call: ToolCall;
|
|
170
|
+
/**
|
|
171
|
+
* Zod-parsed argument bag — the same shape the function-tool
|
|
172
|
+
* handler would receive on approve. Reflects `.default()` /
|
|
173
|
+
* `.transform()` / `.refine()` chains applied by the consumer's
|
|
174
|
+
* schema, so the approver sees the canonical args the handler will
|
|
175
|
+
* actually run with (not the raw wire bag). The default
|
|
176
|
+
* {@link ApprovalRequest.prompt} renders against this when present;
|
|
177
|
+
* falls back to {@link ToolCall.arguments} only if Zod parsing
|
|
178
|
+
* isn't yet available (e.g. when `resolveApproval` is invoked
|
|
179
|
+
* outside the router for unit tests).
|
|
180
|
+
*/
|
|
181
|
+
readonly parsedArguments?: JsonObject;
|
|
182
|
+
/** Originating graph node name (echoed back on `tool.response`). */
|
|
183
|
+
readonly nodeName: string;
|
|
184
|
+
/**
|
|
185
|
+
* Pre-rendered human prompt — the `config.prompt` value when set,
|
|
186
|
+
* else a canned `"Approve <tool>(<args>)?"` string. Handlers can
|
|
187
|
+
* render this verbatim or build their own from the parts above.
|
|
188
|
+
*/
|
|
189
|
+
readonly prompt: string;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Handler signature for `client.tools.setApprovalHandler(...)`.
|
|
193
|
+
*
|
|
194
|
+
* Returns synchronously or asynchronously. Throws map to denials
|
|
195
|
+
* (`ToolDeniedError` → `outcome: 'denied'`) or errors (`outcome:
|
|
196
|
+
* 'error'`) per the function-tool handler contract.
|
|
197
|
+
*/
|
|
198
|
+
export type ApprovalHandler = (req: ApprovalRequest) => ApprovalDecision | Promise<ApprovalDecision>;
|
|
199
|
+
/**
|
|
200
|
+
* Default approval handler. Behavior:
|
|
201
|
+
*
|
|
202
|
+
* - If `process.stdin.isTTY` (interactive Node CLI) — prompt via
|
|
203
|
+
* `readline` with a yes/no question. `y` / `yes` → approve;
|
|
204
|
+
* anything else → deny. Useful for tutorials, scripts,
|
|
205
|
+
* `examples/usecases/*`.
|
|
206
|
+
* - Otherwise (non-TTY, daemon, web worker, browser bundle, CI) —
|
|
207
|
+
* deterministically deny with a typed error message so the
|
|
208
|
+
* consumer's stack trace points at the missing
|
|
209
|
+
* `setApprovalHandler` registration instead of getting a
|
|
210
|
+
* mysterious "tool denied" from QAR. Auto-approving in
|
|
211
|
+
* non-interactive contexts would silently defeat the gate — the
|
|
212
|
+
* wrong default for an approval surface.
|
|
213
|
+
*
|
|
214
|
+
* Override via `client.tools.setApprovalHandler(fn)`. Production
|
|
215
|
+
* apps that route approvals to Slack / a web UI / a pager should
|
|
216
|
+
* register an explicit handler at startup; the default is the
|
|
217
|
+
* "I have an stdin" fallback for the simplest cases.
|
|
218
|
+
*
|
|
219
|
+
* **Concurrency.** `FunctionToolRouter.dispatch` fires per-call
|
|
220
|
+
* handlers via `Promise.all`. Multiple `requireApproval`-gated
|
|
221
|
+
* calls in one `tool.request` batch would otherwise open multiple
|
|
222
|
+
* readline interfaces on the same `process.stdin` and interleave —
|
|
223
|
+
* see {@link readlineApprovalPrompt} for the module-level
|
|
224
|
+
* promise-chain mutex that serializes the default stdin prompts
|
|
225
|
+
* (regression test in `tests/require-approval.test.ts`
|
|
226
|
+
* § readlineApprovalPrompt mutex).
|
|
227
|
+
* Consumer-override handlers (Slack, web UI) don't share stdin and
|
|
228
|
+
* stay parallel by design — serializing them would hurt batch
|
|
229
|
+
* latency in production.
|
|
230
|
+
*/
|
|
231
|
+
export declare const defaultApprovalHandler: ApprovalHandler;
|
|
232
|
+
/**
|
|
233
|
+
* Resolve an approval request against the supplied handler. Maps
|
|
234
|
+
* thrown errors (handler bugs, denial-by-throw) to the wire
|
|
235
|
+
* `ToolResponseResult` shape:
|
|
236
|
+
*
|
|
237
|
+
* - Handler returns `{ decision: 'approve' }` → returns the
|
|
238
|
+
* {@link ApprovalDecision} so the caller can pass through the
|
|
239
|
+
* optional `input` / `selection` payload to the function-tool
|
|
240
|
+
* handler.
|
|
241
|
+
* - Handler returns `{ decision: 'deny' }` → returns the
|
|
242
|
+
* pre-formatted `{ outcome: 'denied' }` response item. The
|
|
243
|
+
* caller MUST NOT invoke the function-tool handler.
|
|
244
|
+
* - Handler throws `ToolDeniedError` → mapped to `outcome: 'denied'`.
|
|
245
|
+
* - Handler throws any other Error → mapped to `outcome: 'error'`
|
|
246
|
+
* with the error message (capped by the dispatcher's existing
|
|
247
|
+
* `MAX_ERROR_LEN` boundary).
|
|
248
|
+
*
|
|
249
|
+
* The two-arm return shape (`'approve' | { outcome: 'denied' | 'error' }`)
|
|
250
|
+
* lets the caller skip the function-tool handler invocation entirely
|
|
251
|
+
* on rejection — no need for an `if (decision === 'deny')` follow-up
|
|
252
|
+
* branch.
|
|
253
|
+
*/
|
|
254
|
+
export declare function resolveApproval(handler: ApprovalHandler, toolName: string, config: ApprovalConfig, call: ToolCall, nodeName: string, parsedArguments?: JsonObject): Promise<ApprovalDecision | {
|
|
255
|
+
readonly _denial: ToolResponseResult;
|
|
256
|
+
}>;
|
|
257
|
+
/**
|
|
258
|
+
* Merge the consumer-supplied `annotations` (if any) with the
|
|
259
|
+
* sensitivity-driven advisory overlay. Consumer values WIN on
|
|
260
|
+
* collision — `requireApproval` is a shorthand, not a forced
|
|
261
|
+
* override. Set sensitivity to opt into the overlay; leave
|
|
262
|
+
* `annotations` undefined to accept it verbatim.
|
|
263
|
+
*
|
|
264
|
+
* Returns `undefined` when neither side contributes a field
|
|
265
|
+
* (so the produced `FunctionToolDef` stays free of an empty
|
|
266
|
+
* `annotations: {}` object — every wire byte counts).
|
|
267
|
+
*/
|
|
268
|
+
export declare function mergeApprovalAnnotations(base: McpToolAnnotations | undefined, config: ApprovalConfig): McpToolAnnotations | undefined;
|
|
269
|
+
/**
|
|
270
|
+
* Normalize the consumer-facing `requireApproval` value into the
|
|
271
|
+
* internal {@link ApprovalConfig} shape. `true` → `{ kind:
|
|
272
|
+
* 'approval', sensitivity: 'low' }`; an explicit
|
|
273
|
+
* {@link ApprovalConfig} is returned as-is; `false` / `undefined`
|
|
274
|
+
* returns `undefined` (gate disabled).
|
|
275
|
+
*
|
|
276
|
+
* Centralizing the normalization here keeps `defineFunctionTool` and
|
|
277
|
+
* the router from re-implementing the boolean → object widening.
|
|
278
|
+
*/
|
|
279
|
+
export declare function normalizeApprovalConfig(value: boolean | ApprovalConfig | undefined): ApprovalConfig | undefined;
|
|
280
|
+
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/client/tools/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GACD;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,eAAe,KACjB,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,sBAAsB,EAAE,eACa,CAAC;AAmCnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,UAAU,GAC3B,OAAO,CAAC,gBAAgB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAwDtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS,CAoBhC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,GAC1C,cAAc,GAAG,SAAS,CAI5B"}
|