@qodo/sdk 0.13.4 → 2.0.0-next.1
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 +1139 -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 +893 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +2189 -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,360 @@
|
|
|
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 { getFunctionToolHandler, } from './defineFunctionTool.js';
|
|
62
|
+
import { resolveApproval, } from './approval.js';
|
|
63
|
+
import { ToolDeniedError } from '../errors.js';
|
|
64
|
+
/**
|
|
65
|
+
* Per-client registry of `defineFunctionTool` handlers. One instance
|
|
66
|
+
* per `QodoClient`; shared across every `tasks.startWith*` call so the
|
|
67
|
+
* same handler stays installed even as the consumer dispatches multiple
|
|
68
|
+
* tasks.
|
|
69
|
+
*
|
|
70
|
+
* Exposed as a class (not a module-level Map) so each client gets an
|
|
71
|
+
* isolated table — multi-client test harnesses don't see cross-talk.
|
|
72
|
+
*/
|
|
73
|
+
export class FunctionToolRouter {
|
|
74
|
+
bags = new Map();
|
|
75
|
+
subscription = null;
|
|
76
|
+
/**
|
|
77
|
+
* Resolver invoked when a `requireApproval`-gated tool is about to
|
|
78
|
+
* dispatch. Owned by the parent `ToolClient` (consumer registers via
|
|
79
|
+
* `client.tools.setApprovalHandler(...)`); the router holds a
|
|
80
|
+
* getter so an override registered AFTER `attach()` still applies
|
|
81
|
+
* to subsequent inbound batches.
|
|
82
|
+
*/
|
|
83
|
+
getApprovalHandler = () => {
|
|
84
|
+
// Lazy module import to keep the default handler off the
|
|
85
|
+
// bundle's eager graph (it pulls `process.stdin` references).
|
|
86
|
+
// Default-injected at `attach` time below.
|
|
87
|
+
throw new Error('FunctionToolRouter: approval handler getter not initialized — call attach() first');
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Predicate read by {@link runOne} AFTER an approval resolves
|
|
91
|
+
* `approve` and BEFORE the function-tool handler is invoked. When
|
|
92
|
+
* the wire has died during the approval round-trip (auto-reconnect
|
|
93
|
+
* exhausted, `failHardAndCleanup` ran, or an explicit
|
|
94
|
+
* `client.disconnect()` raced the resolver), this returns `false`
|
|
95
|
+
* and the router synthesizes a per-call
|
|
96
|
+
* `outcome: 'error'` — the handler does NOT execute, so no
|
|
97
|
+
* real-world side effect occurs that we wouldn't be able to
|
|
98
|
+
* acknowledge on the wire.
|
|
99
|
+
*
|
|
100
|
+
* Defaulted to a permissive `true` so the router stays
|
|
101
|
+
* functionally identical before `attach()` (unit tests construct
|
|
102
|
+
* the router directly + drive `dispatch` without ever calling
|
|
103
|
+
* `attach`).
|
|
104
|
+
*/
|
|
105
|
+
isConnectionLive = () => true;
|
|
106
|
+
/**
|
|
107
|
+
* Register every `defineFunctionTool`-produced entry in `tools` with
|
|
108
|
+
* the router. Hand-authored `FunctionToolDef` literals (no symbol
|
|
109
|
+
* handler attached) are skipped. Returns the number of newly
|
|
110
|
+
* registered names — useful for tests + breadcrumb logging.
|
|
111
|
+
*
|
|
112
|
+
* If `tools` is empty / `null` / `undefined`, the router is left
|
|
113
|
+
* alone — no auto-attach, no error.
|
|
114
|
+
*/
|
|
115
|
+
register(tools) {
|
|
116
|
+
if (tools === undefined || tools === null || tools.length === 0) {
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
let count = 0;
|
|
120
|
+
for (const tool of tools) {
|
|
121
|
+
const bag = getFunctionToolHandler(tool);
|
|
122
|
+
if (bag !== undefined) {
|
|
123
|
+
this.bags.set(bag.name, bag);
|
|
124
|
+
count += 1;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return count;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Lazy attach. The single fallback handler is registered the first
|
|
131
|
+
* time the router is asked to attach against a `ToolClient`; later
|
|
132
|
+
* calls are no-ops as long as the subscription remains live. The
|
|
133
|
+
* router does NOT auto-detach on `client.disconnect()` — re-binding
|
|
134
|
+
* after reconnect is the consumer's responsibility (the existing
|
|
135
|
+
* subscription becomes stale; the dispatcher's own `attachDispatcher`
|
|
136
|
+
* handles re-attachment).
|
|
137
|
+
*
|
|
138
|
+
* Attaches via `_attachFallbackHandler` so the dispatcher's
|
|
139
|
+
* deterministic-deny path stays intact for unregistered tool names
|
|
140
|
+
* (see the module header for rationale).
|
|
141
|
+
*/
|
|
142
|
+
attach(client) {
|
|
143
|
+
// Always (re)bind the approval-handler getter — the consumer may
|
|
144
|
+
// have called `client.tools.setApprovalHandler(...)` between
|
|
145
|
+
// construction and the first `attach`. Capturing the function
|
|
146
|
+
// rather than the value lets a LATER `setApprovalHandler` still
|
|
147
|
+
// take effect for in-flight batches.
|
|
148
|
+
this.getApprovalHandler = () => client._getApprovalHandler();
|
|
149
|
+
// Re-bind the wire-live predicate alongside the approval handler.
|
|
150
|
+
// Captured as a closure so `runOne`'s post-approval gate observes
|
|
151
|
+
// the CURRENT connection state, not a snapshot at attach time (a
|
|
152
|
+
// `Connection` re-bind via `_bindConnection` re-points
|
|
153
|
+
// `_isConnectionLive` to the new instance transparently).
|
|
154
|
+
this.isConnectionLive = () => client._isConnectionLive();
|
|
155
|
+
if (this.subscription !== null)
|
|
156
|
+
return;
|
|
157
|
+
this.subscription = client._attachFallbackHandler((req) => this.dispatch(req));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Detach the underlying `onRequest` subscription. Used in tests + by
|
|
161
|
+
* `QodoClient.disconnect()` so a client teardown cleanly drops the
|
|
162
|
+
* router-installed handler.
|
|
163
|
+
*/
|
|
164
|
+
detach() {
|
|
165
|
+
if (this.subscription !== null) {
|
|
166
|
+
try {
|
|
167
|
+
this.subscription.unsubscribe();
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// best-effort — `onRequest`'s unsubscribe is documented as
|
|
171
|
+
// never throwing; the swallow exists purely so a future
|
|
172
|
+
// subscription-impl regression doesn't take the disconnect
|
|
173
|
+
// path with it.
|
|
174
|
+
}
|
|
175
|
+
this.subscription = null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @internal — exposed for unit tests. Returns a snapshot of the
|
|
180
|
+
* registered tool names. Consumer code should not depend on this; it
|
|
181
|
+
* lives behind an underscore-prefixed name.
|
|
182
|
+
*/
|
|
183
|
+
_registeredNames() {
|
|
184
|
+
return [...this.bags.keys()];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The actual dispatch handler — wired as the body of the single
|
|
188
|
+
* `onRequest` subscription.
|
|
189
|
+
*
|
|
190
|
+
* Returns `undefined` (fall-through) when:
|
|
191
|
+
*
|
|
192
|
+
* - The router has no handlers registered (rare — only if `attach`
|
|
193
|
+
* was called before any `register`).
|
|
194
|
+
* - Any call in the inbound batch has a name not in the table —
|
|
195
|
+
* defers to the next handler so mixed surfaces still work.
|
|
196
|
+
*
|
|
197
|
+
* Otherwise, invokes every handler in parallel
|
|
198
|
+
* (`Promise.all([...])`) and returns the positional result array.
|
|
199
|
+
* Exceptions per-handler are mapped to per-call response shapes.
|
|
200
|
+
*/
|
|
201
|
+
dispatch = async (req) => {
|
|
202
|
+
if (this.bags.size === 0)
|
|
203
|
+
return undefined;
|
|
204
|
+
const { calls, node_name: nodeName } = req.payload;
|
|
205
|
+
// Pre-flight: every call name must be in the table, else
|
|
206
|
+
// return undefined and let the next handler in the stack
|
|
207
|
+
// claim the batch.
|
|
208
|
+
for (const call of calls) {
|
|
209
|
+
if (!this.bags.has(call.name))
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const results = await Promise.all(calls.map((call) => this.runOne(this.bags.get(call.name), call, nodeName)));
|
|
213
|
+
return results;
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Invoke a single handler. Catches throws and maps them to a
|
|
217
|
+
* per-call `ToolResponseResult`. `ToolDeniedError` becomes `outcome:
|
|
218
|
+
* 'denied'`; everything else becomes `outcome: 'error'`. Mirrors the
|
|
219
|
+
* mapping logic in `ToolClient.dispatchInner` so consumers see the
|
|
220
|
+
* same semantics whether they use `defineFunctionTool` or the manual
|
|
221
|
+
* `onRequest` surface.
|
|
222
|
+
*/
|
|
223
|
+
async runOne(bag, call, nodeName) {
|
|
224
|
+
// Zod-parse the inbound arguments BEFORE invoking the handler so
|
|
225
|
+
// the handler's typed `args: z.infer<TSchema>` parameter matches
|
|
226
|
+
// runtime reality — defaults applied, transforms run, refinements
|
|
227
|
+
// validated. Parse failures (e.g., the model emitted a number
|
|
228
|
+
// where the schema demands a string) surface as a per-call
|
|
229
|
+
// `outcome: 'error'` with the formatted Zod issue list; the
|
|
230
|
+
// handler never runs.
|
|
231
|
+
//
|
|
232
|
+
// `safeParse` is preferred over `parse` so we don't widen the
|
|
233
|
+
// try/catch's failure mode. The handler's own throws still
|
|
234
|
+
// route through the catch below.
|
|
235
|
+
const parsed = bag.parameters.safeParse(call.arguments);
|
|
236
|
+
if (!parsed.success) {
|
|
237
|
+
const issues = parsed.error.issues
|
|
238
|
+
.map((i) => {
|
|
239
|
+
const path = i.path.length > 0 ? i.path.join('.') : '(root)';
|
|
240
|
+
return `${path}: ${i.message}`;
|
|
241
|
+
})
|
|
242
|
+
.join('; ');
|
|
243
|
+
return {
|
|
244
|
+
outcome: 'error',
|
|
245
|
+
error: `defineFunctionTool(${bag.name}): argument validation failed — ${issues}`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
// S4 — `requireApproval` gate. When the consumer marked the tool
|
|
249
|
+
// with `requireApproval`, run the consumer-registered approval
|
|
250
|
+
// handler BEFORE invoking the function-tool handler. A denied
|
|
251
|
+
// approval returns `outcome: 'denied'` without invoking the
|
|
252
|
+
// function-tool handler at all — the LLM sees the denial as a
|
|
253
|
+
// normal tool response (denial is a recoverable error, not a
|
|
254
|
+
// pipeline-fatal one).
|
|
255
|
+
//
|
|
256
|
+
// Approval runs AFTER Zod-parse so the approval surface sees the
|
|
257
|
+
// canonical args bag (defaults applied, transforms run) — keeps
|
|
258
|
+
// the prompt UX consistent with what the handler would actually
|
|
259
|
+
// receive on approve. We pass `parsed.data` as `parsedArguments`
|
|
260
|
+
// so `buildPrompt` renders the canonical bag.
|
|
261
|
+
let approvalDecision;
|
|
262
|
+
if (bag.approval !== undefined) {
|
|
263
|
+
let resolved;
|
|
264
|
+
try {
|
|
265
|
+
resolved = await resolveApproval(this.getApprovalHandler(), bag.name, bag.approval, call, nodeName, parsed.data);
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
// resolveApproval itself maps handler throws to `_denial`; an
|
|
269
|
+
// escape here means the approval-handler getter blew up
|
|
270
|
+
// (e.g., the consumer's getter throws). Map to per-call
|
|
271
|
+
// error so one bad approval-handler can't poison the whole
|
|
272
|
+
// batch (the router would otherwise propagate the rejection
|
|
273
|
+
// up and tank dispatch).
|
|
274
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
275
|
+
return { outcome: 'error', error: message };
|
|
276
|
+
}
|
|
277
|
+
if ('_denial' in resolved) {
|
|
278
|
+
return resolved._denial;
|
|
279
|
+
}
|
|
280
|
+
approvalDecision = resolved;
|
|
281
|
+
// Post-approval pre-flight: if the wire died while the resolver
|
|
282
|
+
// was parked (auto-reconnect exhausted, explicit `disconnect()`,
|
|
283
|
+
// or the owning task already `task.done`-swept
|
|
284
|
+
// `toolCallSessions`), the function-tool handler MUST NOT run.
|
|
285
|
+
// The previous behavior was to invoke the handler — its
|
|
286
|
+
// real-world side effect would occur (DB write, API call,
|
|
287
|
+
// refund, …) and the subsequent `sendResponse` would throw
|
|
288
|
+
// `QodoColdAddressError`, swallowed by
|
|
289
|
+
// `ToolClient.attachDispatcher`'s send-fallback at
|
|
290
|
+
// `ToolClient.ts:524-544`. The consumer had no signal that the
|
|
291
|
+
// side effect ran; QAR's agent loop saw a tool-response timeout
|
|
292
|
+
// and surfaced a generic failure. By gating here we keep
|
|
293
|
+
// approve→side-effect coupled to approve→response-deliverable.
|
|
294
|
+
//
|
|
295
|
+
// The synthesized `outcome: 'error'` still routes through the
|
|
296
|
+
// dispatcher's send path and will (correctly) be swallowed if
|
|
297
|
+
// the wire stays dead — but the load-bearing invariant is that
|
|
298
|
+
// the function-tool handler never executes. See
|
|
299
|
+
// `docs/sdk2/concepts/03-hitl.md` for the post-fix contract +
|
|
300
|
+
// consumer guidance (observe `qar.client.reconnect_failed` and
|
|
301
|
+
// treat any in-flight approval as "handler will not run").
|
|
302
|
+
if (!this.isConnectionLive()) {
|
|
303
|
+
return {
|
|
304
|
+
outcome: 'error',
|
|
305
|
+
error: `defineFunctionTool(${bag.name}): connection lost before approval ` +
|
|
306
|
+
'resolved; function handler skipped to avoid an un-acknowledgeable side effect.',
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Build the per-call context AFTER approval so the `approval`
|
|
311
|
+
// field can be set without breaking the `readonly` contract on
|
|
312
|
+
// FunctionToolHandlerContext. The conditional spread keeps
|
|
313
|
+
// `approval` off the ctx entirely when the tool has no gate —
|
|
314
|
+
// consumers reading `ctx.approval` see `undefined` either way,
|
|
315
|
+
// but `JSON.stringify(ctx)` stays clean for the no-gate case.
|
|
316
|
+
const ctx = {
|
|
317
|
+
toolCallId: call.tool_call_id,
|
|
318
|
+
nodeName,
|
|
319
|
+
call,
|
|
320
|
+
...(approvalDecision !== undefined ? { approval: approvalDecision } : {}),
|
|
321
|
+
};
|
|
322
|
+
try {
|
|
323
|
+
const handler = bag.handler;
|
|
324
|
+
// `parsed.data` is the OUTPUT type of the Zod schema — the
|
|
325
|
+
// same shape `z.infer<TSchema>` declares at the type level.
|
|
326
|
+
const raw = await handler(parsed.data, ctx);
|
|
327
|
+
return coerceHandlerReturn(raw);
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
if (err instanceof ToolDeniedError) {
|
|
331
|
+
return { outcome: 'denied', error: err.message };
|
|
332
|
+
}
|
|
333
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
334
|
+
return { outcome: 'error', error: message };
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Normalize a handler return into the SDK's `ToolResponseResult`
|
|
340
|
+
* discriminated-union shape. Plain `JsonObject` returns are wrapped in
|
|
341
|
+
* `{ outcome: 'success', result }`; `ToolResponseResult` literals pass
|
|
342
|
+
* through. Anything else throws — the wire validator rejects malformed
|
|
343
|
+
* responses and we'd rather fail at the handler than ship garbage.
|
|
344
|
+
*/
|
|
345
|
+
function coerceHandlerReturn(raw) {
|
|
346
|
+
if (raw === null || typeof raw !== 'object') {
|
|
347
|
+
throw new TypeError('defineFunctionTool: handler must return a JsonObject or ToolResponseResult.');
|
|
348
|
+
}
|
|
349
|
+
const maybeResult = raw;
|
|
350
|
+
if (typeof maybeResult.outcome === 'string') {
|
|
351
|
+
// Looks like a ToolResponseResult literal — pass through. The
|
|
352
|
+
// dispatcher's `isValidToolResponseResult` runtime guard re-checks
|
|
353
|
+
// the shape on the wire boundary, so we don't duplicate the
|
|
354
|
+
// validation here.
|
|
355
|
+
return raw;
|
|
356
|
+
}
|
|
357
|
+
// Plain JsonObject — wrap.
|
|
358
|
+
return { outcome: 'success', result: raw };
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=bindFunctionToolDefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindFunctionToolDefs.js","sourceRoot":"","sources":["../../../src/client/tools/bindFunctionToolDefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineFunctionTool(opts)` — Zod-schema → OpenAI function-tool helper.
|
|
3
|
+
*
|
|
4
|
+
* Closes the parity gap identified by the 2026-05-21 ADK comparison
|
|
5
|
+
* (see `docs/sdk2/research/2026-05-21-google-adk-vs-qodo-ts-sdk.md`,
|
|
6
|
+
* Opportunity 4 — auto-derive JSON Schema from a Zod schema instead of
|
|
7
|
+
* hand-authoring it on every `FunctionToolDef`). Google ADK's
|
|
8
|
+
* `FunctionTool(func)` derives the schema from Python type hints
|
|
9
|
+
* (`tools/function_tool.py:42-150`); qodo-ts-sdk's pre-S3 surface
|
|
10
|
+
* required the consumer to ship the full `parameters: { type: 'object',
|
|
11
|
+
* properties: {…} }` blob inline.
|
|
12
|
+
*
|
|
13
|
+
* The helper does three things in one call:
|
|
14
|
+
*
|
|
15
|
+
* 1. Converts the supplied Zod schema to JSON Schema via Zod 4's
|
|
16
|
+
* built-in `z.toJSONSchema()`. (`zod-to-json-schema` was the
|
|
17
|
+
* pre-2025 path but the package was deprecated in November 2025;
|
|
18
|
+
* Zod 4 ships the same capability natively, so we use the built-in
|
|
19
|
+
* and avoid a redundant dependency.) Targets `draft-07` — the
|
|
20
|
+
* OpenAI-compatible JSON Schema dialect; the produced body drops
|
|
21
|
+
* directly into the function-tool wire shape with no further
|
|
22
|
+
* shimming.
|
|
23
|
+
* 2. Returns a fully-formed `FunctionToolDef` that drops into
|
|
24
|
+
* `InlineAgentSpec.tools[]` with zero further wiring.
|
|
25
|
+
* 3. Attaches the runtime `handler` on a symbol-keyed property so
|
|
26
|
+
* `JSON.stringify` / structural cloning / spread ignore it (wire
|
|
27
|
+
* serialization stays clean — the handler is SDK-local) and the
|
|
28
|
+
* SDK can route inbound `tool.request` envelopes for this tool's
|
|
29
|
+
* `name` to the right callback automatically at
|
|
30
|
+
* `tasks.startWithAgent` / `tasks.startWithGraph` time.
|
|
31
|
+
*
|
|
32
|
+
* The handler's `args` parameter is statically typed against
|
|
33
|
+
* `z.infer<typeof parameters>`, so the consumer gets compile-time
|
|
34
|
+
* checking against the schema shape — mismatched destructures fail at
|
|
35
|
+
* the call site rather than at runtime when QAR sends the call. The
|
|
36
|
+
* router also Zod-parses inbound args before invoking the handler, so
|
|
37
|
+
* `.default()` values are applied and `.transform()` / `.refine()`
|
|
38
|
+
* chains run as written; argument-validation failures map to per-call
|
|
39
|
+
* `outcome: 'error'` without the handler running.
|
|
40
|
+
*
|
|
41
|
+
* Backward compatibility: pre-S3 hand-authored `FunctionToolDef`
|
|
42
|
+
* literals continue to work unchanged. The helper is purely additive —
|
|
43
|
+
* `InlineAgentSpec.tools[]` accepts both shapes, and the SDK's
|
|
44
|
+
* auto-bind step (see `ToolClient.bindFunctionToolDefs`) is a no-op for
|
|
45
|
+
* tools that don't carry the handler symbol.
|
|
46
|
+
*/
|
|
47
|
+
import { z } from 'zod';
|
|
48
|
+
import { type ApprovalConfig } from './approval.js';
|
|
49
|
+
import type { JsonObject } from '../../qar/json.js';
|
|
50
|
+
import type { FunctionToolDef, McpToolAnnotations } from '../../qar/specs.js';
|
|
51
|
+
import type { ToolCall, ToolResponseResult } from '../../qar/payloads.js';
|
|
52
|
+
/**
|
|
53
|
+
* Symbol used to attach the SDK-local handler bag to a
|
|
54
|
+
* `FunctionToolDef` produced by {@link defineFunctionTool}. Symbol-keyed
|
|
55
|
+
* so:
|
|
56
|
+
*
|
|
57
|
+
* - `JSON.stringify` ignores the property (the wire-serialized spec
|
|
58
|
+
* stays clean without an explicit strip step at every wire
|
|
59
|
+
* boundary).
|
|
60
|
+
* - Object spread / `structuredClone` don't carry the handler across
|
|
61
|
+
* unless the runtime is opted into symbols (clones drop the handler
|
|
62
|
+
* — defensive; consumers building wire payloads via `{ ...tool }`
|
|
63
|
+
* don't accidentally try to ship a function).
|
|
64
|
+
* - Property-name lookups via dot/bracket access don't collide with a
|
|
65
|
+
* consumer-authored field.
|
|
66
|
+
*
|
|
67
|
+
* Exported (named) so the SDK's own bind step and unit tests can read
|
|
68
|
+
* it; consumer code rarely needs to touch it directly —
|
|
69
|
+
* {@link getFunctionToolHandler} is the safer accessor.
|
|
70
|
+
*/
|
|
71
|
+
export declare const FUNCTION_TOOL_HANDLER_KEY: unique symbol;
|
|
72
|
+
/**
|
|
73
|
+
* Context passed alongside the parsed `args` to a function-tool handler.
|
|
74
|
+
* Carries the per-call metadata the runtime delivered on the inbound
|
|
75
|
+
* envelope — useful for logging, tracing, or routing per-call HITL
|
|
76
|
+
* decisions.
|
|
77
|
+
*/
|
|
78
|
+
export interface FunctionToolHandlerContext {
|
|
79
|
+
/** The `tool_call_id` of the inbound call this handler is responding to. */
|
|
80
|
+
readonly toolCallId: string;
|
|
81
|
+
/** The originating node name (`payload.node_name`). */
|
|
82
|
+
readonly nodeName: string;
|
|
83
|
+
/** The full `ToolCall` from the inbound envelope (HITL block, raw args, etc.). */
|
|
84
|
+
readonly call: ToolCall;
|
|
85
|
+
/**
|
|
86
|
+
* Approval decision payload from the S4 `requireApproval` flow.
|
|
87
|
+
* Present only when the tool carried `requireApproval` AND the
|
|
88
|
+
* resolver returned `decision: 'approve'`. Carries the optional
|
|
89
|
+
* `input` (`'input'`-kind approvals) and `selection`
|
|
90
|
+
* (`'choice'`-kind approvals) the resolver attached — handlers
|
|
91
|
+
* can read these to thread the approver's free-text justification
|
|
92
|
+
* or choice down into the tool's effect.
|
|
93
|
+
*
|
|
94
|
+
* Always `undefined` for tools without `requireApproval` — the
|
|
95
|
+
* field exists so consumers can read it without an unsafe cast
|
|
96
|
+
* when the gate IS engaged.
|
|
97
|
+
*/
|
|
98
|
+
readonly approval?: import('./approval.js').ApprovalDecision;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Allowed return shape from a function-tool handler:
|
|
102
|
+
*
|
|
103
|
+
* - Plain `JsonObject` — wrapped into `{ outcome: 'success', result }`.
|
|
104
|
+
* - Full `ToolResponseResult` — passed through (lets the consumer
|
|
105
|
+
* reply `denied` / `error` without throwing).
|
|
106
|
+
*
|
|
107
|
+
* `void` / `undefined` is intentionally NOT supported — the SDK auto-
|
|
108
|
+
* dispatcher needs every matched call to produce a concrete response
|
|
109
|
+
* item. If the consumer wants "I'll respond later" semantics, they
|
|
110
|
+
* should NOT use `defineFunctionTool`; the manual
|
|
111
|
+
* `client.tools.onRequest` surface still applies.
|
|
112
|
+
*/
|
|
113
|
+
export type FunctionToolHandlerReturn = JsonObject | ToolResponseResult | Promise<JsonObject | ToolResponseResult>;
|
|
114
|
+
/**
|
|
115
|
+
* The function-tool handler signature. `args` is the parsed-and-typed
|
|
116
|
+
* payload derived from the consumer's Zod schema; `ctx` carries the
|
|
117
|
+
* per-call envelope metadata.
|
|
118
|
+
*
|
|
119
|
+
* Throws are caught by the SDK dispatcher and mapped to a per-call
|
|
120
|
+
* `outcome: 'error'` response (mirrors the
|
|
121
|
+
* `ToolClient.onRequest` behaviour); `ToolDeniedError` maps to
|
|
122
|
+
* `outcome: 'denied'`.
|
|
123
|
+
*/
|
|
124
|
+
export type FunctionToolHandler<TArgs> = (args: TArgs, ctx: FunctionToolHandlerContext) => FunctionToolHandlerReturn;
|
|
125
|
+
/**
|
|
126
|
+
* Internal handler-bag attached to a `FunctionToolDef` via the
|
|
127
|
+
* {@link FUNCTION_TOOL_HANDLER_KEY} symbol. The `parameters` reference
|
|
128
|
+
* is kept so unit tests + observability can re-validate / re-print the
|
|
129
|
+
* schema without round-tripping through JSON.
|
|
130
|
+
*/
|
|
131
|
+
export interface FunctionToolHandlerBag {
|
|
132
|
+
readonly name: string;
|
|
133
|
+
readonly handler: FunctionToolHandler<unknown>;
|
|
134
|
+
readonly parameters: z.ZodType;
|
|
135
|
+
/**
|
|
136
|
+
* Normalized approval configuration when the consumer set
|
|
137
|
+
* `requireApproval` on the tool. Undefined when the tool has no
|
|
138
|
+
* approval gate — the common case. The router reads this at
|
|
139
|
+
* dispatch time; presence (not value) drives the gate.
|
|
140
|
+
*/
|
|
141
|
+
readonly approval?: ApprovalConfig;
|
|
142
|
+
}
|
|
143
|
+
/** Options accepted by {@link defineFunctionTool}. */
|
|
144
|
+
export interface DefineFunctionToolOptions<TSchema extends z.ZodType> {
|
|
145
|
+
/**
|
|
146
|
+
* Tool name as the model will call it. Matches the `function.name` on
|
|
147
|
+
* the produced `FunctionToolDef`. Subject to the same constraints
|
|
148
|
+
* QAR's tool registry enforces — keep it `[a-zA-Z0-9_-]` and ≤ 64
|
|
149
|
+
* chars; the SDK doesn't lint here, the wire validator does on
|
|
150
|
+
* dispatch.
|
|
151
|
+
*/
|
|
152
|
+
readonly name: string;
|
|
153
|
+
/**
|
|
154
|
+
* Human-readable description shown to the model. Surfaced verbatim on
|
|
155
|
+
* the produced `function.description`. Skip — or pass an empty
|
|
156
|
+
* string — to omit.
|
|
157
|
+
*/
|
|
158
|
+
readonly description?: string;
|
|
159
|
+
/**
|
|
160
|
+
* Zod schema describing the tool's argument bag. The handler's `args`
|
|
161
|
+
* parameter is inferred from this schema via `z.infer<TSchema>` so
|
|
162
|
+
* a destructure typo fails at compile time, not at runtime.
|
|
163
|
+
*
|
|
164
|
+
* Use `z.object({...})` at the top level — Zod 4's `toJSONSchema()`
|
|
165
|
+
* produces the `{ type: 'object', properties: {...}, required: [...] }`
|
|
166
|
+
* shape OpenAI function tools expect. Non-object top-level schemas
|
|
167
|
+
* (e.g. `z.string()`) work but produce a schema the LLM may struggle
|
|
168
|
+
* to invoke correctly; the helper doesn't enforce object-ness so
|
|
169
|
+
* consumers building thin shim tools (e.g. `z.union(...)`) can still
|
|
170
|
+
* opt in.
|
|
171
|
+
*/
|
|
172
|
+
readonly parameters: TSchema;
|
|
173
|
+
/**
|
|
174
|
+
* OpenAI strict-mode flag forwarded onto the produced
|
|
175
|
+
* `function.strict`. Defaults to `undefined` (lets the server pick its
|
|
176
|
+
* default — currently `true`). Pass `false` to opt out of strict
|
|
177
|
+
* argument validation; rarely useful, mostly here for parity with the
|
|
178
|
+
* pre-S3 hand-authored shape.
|
|
179
|
+
*/
|
|
180
|
+
readonly strict?: boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Advisory MCP `Tool.annotations` forwarded onto the produced
|
|
183
|
+
* `function.annotations`. Useful for non-MCP-backed tools that want
|
|
184
|
+
* to carry the same advisory hints (e.g. `readOnlyHint: true`) the
|
|
185
|
+
* SDK propagates through the MCP projection layer.
|
|
186
|
+
*/
|
|
187
|
+
readonly annotations?: McpToolAnnotations;
|
|
188
|
+
/**
|
|
189
|
+
* Runtime callback invoked when QAR sends a `tool.request` envelope
|
|
190
|
+
* naming this tool. The first arg is the parsed-and-typed payload
|
|
191
|
+
* derived from `parameters`; the second is the per-call envelope
|
|
192
|
+
* metadata.
|
|
193
|
+
*/
|
|
194
|
+
readonly handler: FunctionToolHandler<z.infer<TSchema>>;
|
|
195
|
+
/**
|
|
196
|
+
* Ergonomic HITL shorthand (S4 — closes the ADK `require_confirmation`
|
|
197
|
+
* gap; see `docs/sdk2/research/2026-05-21-google-adk-vs-qodo-ts-sdk.md`
|
|
198
|
+
* § Opp 5). When set, the SDK gates dispatch on a consumer-side
|
|
199
|
+
* approval flow before invoking `handler`:
|
|
200
|
+
*
|
|
201
|
+
* - **`true`** — shortcut for `{ kind: 'approval', sensitivity: 'low' }`.
|
|
202
|
+
* Synthesizes a yes/no approval prompt at dispatch time. On
|
|
203
|
+
* approve, the handler runs with the original parsed args; on
|
|
204
|
+
* deny, the SDK returns `{ outcome: 'denied' }` to QAR without
|
|
205
|
+
* invoking the handler.
|
|
206
|
+
* - **`ApprovalConfig`** — richer config: `kind` picks the resolver
|
|
207
|
+
* UX shape (`'approval'` yes/no, `'choice'` closed-set,
|
|
208
|
+
* `'input'` free-form); `sensitivity` drives an advisory
|
|
209
|
+
* annotation overlay on the produced `FunctionToolDef`; `prompt`
|
|
210
|
+
* overrides the default human-facing prompt; `deadlineMs` is
|
|
211
|
+
* passed through to the handler.
|
|
212
|
+
* - **`false` / `undefined`** — no approval gate. Default — the
|
|
213
|
+
* handler runs immediately on every inbound call (the pre-S4
|
|
214
|
+
* behavior).
|
|
215
|
+
*
|
|
216
|
+
* Override the resolver via `client.tools.setApprovalHandler(fn)`.
|
|
217
|
+
* The default handler prompts on stdin when `process.stdin.isTTY`
|
|
218
|
+
* is true; in non-interactive contexts it auto-denies with a typed
|
|
219
|
+
* error message pointing at the missing registration. See
|
|
220
|
+
* `src/client/tools/approval.ts` for the full handler contract.
|
|
221
|
+
*
|
|
222
|
+
* Composes with the existing manual `client.tools.onRequest`
|
|
223
|
+
* surface: the manual primary stack runs first, so a consumer who
|
|
224
|
+
* wants per-batch policy on top of per-tool `requireApproval` still
|
|
225
|
+
* has the explicit shape available. See
|
|
226
|
+
* `docs/sdk2/concepts/03-hitl.md` for the three-layer HITL model
|
|
227
|
+
* `requireApproval` composes onto.
|
|
228
|
+
*/
|
|
229
|
+
readonly requireApproval?: boolean | ApprovalConfig;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* `FunctionToolDef` with the SDK-local handler bag attached. Assignable
|
|
233
|
+
* to `FunctionToolDef[]` (e.g. `InlineAgentSpec.tools`) without
|
|
234
|
+
* narrowing — the symbol-keyed property is opaque to structural typing
|
|
235
|
+
* at the call site.
|
|
236
|
+
*/
|
|
237
|
+
export type DefinedFunctionToolDef = FunctionToolDef & {
|
|
238
|
+
readonly [FUNCTION_TOOL_HANDLER_KEY]: FunctionToolHandlerBag;
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* Read the SDK-local handler bag off a `FunctionToolDef`. Returns
|
|
242
|
+
* `undefined` for hand-authored literals that don't carry the symbol —
|
|
243
|
+
* the SDK's bind step uses this to skip tools that don't auto-route.
|
|
244
|
+
*/
|
|
245
|
+
export declare function getFunctionToolHandler(def: FunctionToolDef): FunctionToolHandlerBag | undefined;
|
|
246
|
+
/**
|
|
247
|
+
* Derive a `FunctionToolDef` from a Zod schema + handler.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* import { defineFunctionTool } from '@qodo/sdk';
|
|
251
|
+
* import { z } from 'zod';
|
|
252
|
+
*
|
|
253
|
+
* const getCurrentTime = defineFunctionTool({
|
|
254
|
+
* name: 'get_current_time',
|
|
255
|
+
* description: 'Returns the current time in ISO 8601 format.',
|
|
256
|
+
* parameters: z.object({
|
|
257
|
+
* timezone: z
|
|
258
|
+
* .string()
|
|
259
|
+
* .describe('IANA timezone, defaults to UTC.')
|
|
260
|
+
* .default('UTC'),
|
|
261
|
+
* }),
|
|
262
|
+
* handler: async ({ timezone }) => ({
|
|
263
|
+
* time: new Date().toLocaleString('en-US', { timeZone: timezone }),
|
|
264
|
+
* }),
|
|
265
|
+
* });
|
|
266
|
+
*
|
|
267
|
+
* const stream = client.tasks.startWithAgent({
|
|
268
|
+
* agent: {
|
|
269
|
+
* apiVersion: 'qar/v1',
|
|
270
|
+
* instructions: 'Answer with the current time on request.',
|
|
271
|
+
* model: 'gpt-4o',
|
|
272
|
+
* tools: [getCurrentTime],
|
|
273
|
+
* },
|
|
274
|
+
* });
|
|
275
|
+
*/
|
|
276
|
+
export declare function defineFunctionTool<TSchema extends z.ZodType>(opts: DefineFunctionToolOptions<TSchema>): DefinedFunctionToolDef;
|
|
277
|
+
//# sourceMappingURL=defineFunctionTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineFunctionTool.d.ts","sourceRoot":"","sources":["../../../src/client/tools/defineFunctionTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,yBAAyB,EAAE,OAAO,MAE9C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,eAAe,EAAE,gBAAgB,CAAC;CAC9D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,kBAAkB,GAClB,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,CAAC,KAAK,IAAI,CACvC,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,0BAA0B,KAC5B,yBAAyB,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACpC;AAED,sDAAsD;AACtD,MAAM,WAAW,yBAAyB,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO;IAClE;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;CACrD;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAAG;IACrD,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;CAC9D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,GACnB,sBAAsB,GAAG,SAAS,CAEpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EAC1D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACvC,sBAAsB,CAuDxB"}
|