@qodo/sdk 0.13.4 → 2.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +31 -118
- package/README.md +133 -121
- package/bin/qodo-skills.mjs +13 -0
- package/bundled-skills/code-review/SKILL.md +41 -0
- package/bundled-skills/pr-summary/SKILL.md +59 -0
- package/bundled-skills/test-gen/SKILL.md +47 -0
- package/dist/auth/index.browser.d.ts +38 -0
- package/dist/auth/index.browser.d.ts.map +1 -0
- package/dist/auth/index.browser.js +62 -0
- package/dist/auth/index.browser.js.map +1 -0
- package/dist/auth/index.d.ts +44 -30
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +57 -110
- package/dist/auth/index.js.map +1 -1
- package/dist/client/AgentsClient.d.ts +33 -0
- package/dist/client/AgentsClient.d.ts.map +1 -0
- package/dist/client/AgentsClient.js +40 -0
- package/dist/client/AgentsClient.js.map +1 -0
- package/dist/client/ArtifactsClient.d.ts +43 -0
- package/dist/client/ArtifactsClient.d.ts.map +1 -0
- package/dist/client/ArtifactsClient.js +54 -0
- package/dist/client/ArtifactsClient.js.map +1 -0
- package/dist/client/BulletinClient.d.ts +45 -0
- package/dist/client/BulletinClient.d.ts.map +1 -0
- package/dist/client/BulletinClient.js +51 -0
- package/dist/client/BulletinClient.js.map +1 -0
- package/dist/client/InfoClient.d.ts +58 -0
- package/dist/client/InfoClient.d.ts.map +1 -0
- package/dist/client/InfoClient.js +135 -0
- package/dist/client/InfoClient.js.map +1 -0
- package/dist/client/PipelineClient.d.ts +162 -0
- package/dist/client/PipelineClient.d.ts.map +1 -0
- package/dist/client/PipelineClient.js +340 -0
- package/dist/client/PipelineClient.js.map +1 -0
- package/dist/client/QarRegistryClient.d.ts +396 -0
- package/dist/client/QarRegistryClient.d.ts.map +1 -0
- package/dist/client/QarRegistryClient.js +536 -0
- package/dist/client/QarRegistryClient.js.map +1 -0
- package/dist/client/QodoClient.d.ts +296 -0
- package/dist/client/QodoClient.d.ts.map +1 -0
- package/dist/client/QodoClient.js +803 -0
- package/dist/client/QodoClient.js.map +1 -0
- package/dist/client/SpecsClient.d.ts +121 -0
- package/dist/client/SpecsClient.d.ts.map +1 -0
- package/dist/client/SpecsClient.js +252 -0
- package/dist/client/SpecsClient.js.map +1 -0
- package/dist/client/StateClient.d.ts +35 -0
- package/dist/client/StateClient.d.ts.map +1 -0
- package/dist/client/StateClient.js +36 -0
- package/dist/client/StateClient.js.map +1 -0
- package/dist/client/TaskClient.d.ts +706 -0
- package/dist/client/TaskClient.d.ts.map +1 -0
- package/dist/client/TaskClient.js +2522 -0
- package/dist/client/TaskClient.js.map +1 -0
- package/dist/client/ToolClient.d.ts +278 -0
- package/dist/client/ToolClient.d.ts.map +1 -0
- package/dist/client/ToolClient.js +1115 -0
- package/dist/client/ToolClient.js.map +1 -0
- package/dist/client/a2a/index.d.ts +10 -0
- package/dist/client/a2a/index.d.ts.map +1 -0
- package/dist/client/a2a/index.js +9 -0
- package/dist/client/a2a/index.js.map +1 -0
- package/dist/client/a2a/registerA2A.d.ts +170 -0
- package/dist/client/a2a/registerA2A.d.ts.map +1 -0
- package/dist/client/a2a/registerA2A.js +85 -0
- package/dist/client/a2a/registerA2A.js.map +1 -0
- package/dist/client/connection.d.ts +800 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +2020 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/errors.d.ts +735 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +921 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +26 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +20 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/inlineGraph.d.ts +66 -0
- package/dist/client/inlineGraph.d.ts.map +1 -0
- package/dist/client/inlineGraph.js +500 -0
- package/dist/client/inlineGraph.js.map +1 -0
- package/dist/client/internal/thenable.d.ts +27 -0
- package/dist/client/internal/thenable.d.ts.map +1 -0
- package/dist/client/internal/thenable.js +31 -0
- package/dist/client/internal/thenable.js.map +1 -0
- package/dist/client/iterator.d.ts +32 -0
- package/dist/client/iterator.d.ts.map +1 -0
- package/dist/client/iterator.js +73 -0
- package/dist/client/iterator.js.map +1 -0
- package/dist/client/mcp/McpClientPool.browser.d.ts +76 -0
- package/dist/client/mcp/McpClientPool.browser.d.ts.map +1 -0
- package/dist/client/mcp/McpClientPool.browser.js +78 -0
- package/dist/client/mcp/McpClientPool.browser.js.map +1 -0
- package/dist/client/mcp/McpClientPool.d.ts +236 -0
- package/dist/client/mcp/McpClientPool.d.ts.map +1 -0
- package/dist/client/mcp/McpClientPool.js +585 -0
- package/dist/client/mcp/McpClientPool.js.map +1 -0
- package/dist/client/mcp/projection.d.ts +109 -0
- package/dist/client/mcp/projection.d.ts.map +1 -0
- package/dist/client/mcp/projection.js +446 -0
- package/dist/client/mcp/projection.js.map +1 -0
- package/dist/client/mcp/substituteEnv.browser.d.ts +18 -0
- package/dist/client/mcp/substituteEnv.browser.d.ts.map +1 -0
- package/dist/client/mcp/substituteEnv.browser.js +20 -0
- package/dist/client/mcp/substituteEnv.browser.js.map +1 -0
- package/dist/client/mcp/substituteEnv.d.ts +45 -0
- package/dist/client/mcp/substituteEnv.d.ts.map +1 -0
- package/dist/client/mcp/substituteEnv.js +63 -0
- package/dist/client/mcp/substituteEnv.js.map +1 -0
- package/dist/client/observers.d.ts +57 -0
- package/dist/client/observers.d.ts.map +1 -0
- package/dist/client/observers.js +203 -0
- package/dist/client/observers.js.map +1 -0
- package/dist/client/options.d.ts +269 -0
- package/dist/client/options.d.ts.map +1 -0
- package/dist/client/options.js +9 -0
- package/dist/client/options.js.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts +17 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.js +24 -0
- package/dist/client/tools/_readlineApprovalPrompt.browser.js.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.d.ts +33 -0
- package/dist/client/tools/_readlineApprovalPrompt.d.ts.map +1 -0
- package/dist/client/tools/_readlineApprovalPrompt.js +90 -0
- package/dist/client/tools/_readlineApprovalPrompt.js.map +1 -0
- package/dist/client/tools/approval.d.ts +280 -0
- package/dist/client/tools/approval.d.ts.map +1 -0
- package/dist/client/tools/approval.js +229 -0
- package/dist/client/tools/approval.js.map +1 -0
- package/dist/client/tools/bindFunctionToolDefs.d.ts +156 -0
- package/dist/client/tools/bindFunctionToolDefs.d.ts.map +1 -0
- package/dist/client/tools/bindFunctionToolDefs.js +360 -0
- package/dist/client/tools/bindFunctionToolDefs.js.map +1 -0
- package/dist/client/tools/defineFunctionTool.d.ts +277 -0
- package/dist/client/tools/defineFunctionTool.d.ts.map +1 -0
- package/dist/client/tools/defineFunctionTool.js +190 -0
- package/dist/client/tools/defineFunctionTool.js.map +1 -0
- package/dist/client/transport.browser.d.ts +20 -0
- package/dist/client/transport.browser.d.ts.map +1 -0
- package/dist/client/transport.browser.js +29 -0
- package/dist/client/transport.browser.js.map +1 -0
- package/dist/client/transport.d.ts +47 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +102 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/transport.shared.d.ts +30 -0
- package/dist/client/transport.shared.d.ts.map +1 -0
- package/dist/client/transport.shared.js +40 -0
- package/dist/client/transport.shared.js.map +1 -0
- package/dist/client/uuid.d.ts +32 -0
- package/dist/client/uuid.d.ts.map +1 -0
- package/dist/client/uuid.js +65 -0
- package/dist/client/uuid.js.map +1 -0
- package/dist/index.d.ts +88 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +166 -43
- package/dist/index.js.map +1 -1
- package/dist/observability/attributes.d.ts +136 -0
- package/dist/observability/attributes.d.ts.map +1 -0
- package/dist/observability/attributes.js +184 -0
- package/dist/observability/attributes.js.map +1 -0
- package/dist/observability/index.d.ts +14 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +11 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/resolveOTel.browser.d.ts +13 -0
- package/dist/observability/resolveOTel.browser.d.ts.map +1 -0
- package/dist/observability/resolveOTel.browser.js +14 -0
- package/dist/observability/resolveOTel.browser.js.map +1 -0
- package/dist/observability/resolveOTel.d.ts +28 -0
- package/dist/observability/resolveOTel.d.ts.map +1 -0
- package/dist/observability/resolveOTel.js +74 -0
- package/dist/observability/resolveOTel.js.map +1 -0
- package/dist/observability/spans.d.ts +198 -0
- package/dist/observability/spans.d.ts.map +1 -0
- package/dist/observability/spans.js +300 -0
- package/dist/observability/spans.js.map +1 -0
- package/dist/observability/traceContext.d.ts +51 -0
- package/dist/observability/traceContext.d.ts.map +1 -0
- package/dist/observability/traceContext.js +151 -0
- package/dist/observability/traceContext.js.map +1 -0
- package/dist/observability/transportMetrics.d.ts +58 -0
- package/dist/observability/transportMetrics.d.ts.map +1 -0
- package/dist/observability/transportMetrics.js +55 -0
- package/dist/observability/transportMetrics.js.map +1 -0
- package/dist/qar/agentSpec.d.ts +93 -0
- package/dist/qar/agentSpec.d.ts.map +1 -0
- package/dist/qar/agentSpec.js +184 -0
- package/dist/qar/agentSpec.js.map +1 -0
- package/dist/qar/clientEvents.d.ts +86 -0
- package/dist/qar/clientEvents.d.ts.map +1 -0
- package/dist/qar/clientEvents.js +36 -0
- package/dist/qar/clientEvents.js.map +1 -0
- package/dist/qar/envelopes.d.ts +227 -0
- package/dist/qar/envelopes.d.ts.map +1 -0
- package/dist/qar/envelopes.js +67 -0
- package/dist/qar/envelopes.js.map +1 -0
- package/dist/qar/generated/envelope.d.ts +332 -0
- package/dist/qar/generated/envelope.d.ts.map +1 -0
- package/dist/qar/generated/envelope.js +15 -0
- package/dist/qar/generated/envelope.js.map +1 -0
- package/dist/qar/generated/qar-info.d.ts +76 -0
- package/dist/qar/generated/qar-info.d.ts.map +1 -0
- package/dist/qar/generated/qar-info.js +15 -0
- package/dist/qar/generated/qar-info.js.map +1 -0
- package/dist/qar/generated/qodo-task-start-payload.d.ts +54 -0
- package/dist/qar/generated/qodo-task-start-payload.d.ts.map +1 -0
- package/dist/qar/generated/qodo-task-start-payload.js +15 -0
- package/dist/qar/generated/qodo-task-start-payload.js.map +1 -0
- package/dist/qar/ids.d.ts +19 -0
- package/dist/qar/ids.d.ts.map +1 -0
- package/dist/qar/ids.js +11 -0
- package/dist/qar/ids.js.map +1 -0
- package/dist/qar/index.d.ts +24 -0
- package/dist/qar/index.d.ts.map +1 -0
- package/dist/qar/index.js +16 -0
- package/dist/qar/index.js.map +1 -0
- package/dist/qar/info.d.ts +37 -0
- package/dist/qar/info.d.ts.map +1 -0
- package/dist/qar/info.js +17 -0
- package/dist/qar/info.js.map +1 -0
- package/dist/qar/json.d.ts +14 -0
- package/dist/qar/json.d.ts.map +1 -0
- package/dist/qar/json.js +9 -0
- package/dist/qar/json.js.map +1 -0
- package/dist/qar/payloads.d.ts +480 -0
- package/dist/qar/payloads.d.ts.map +1 -0
- package/dist/qar/payloads.js +37 -0
- package/dist/qar/payloads.js.map +1 -0
- package/dist/qar/specs.d.ts +604 -0
- package/dist/qar/specs.d.ts.map +1 -0
- package/dist/qar/specs.js +29 -0
- package/dist/qar/specs.js.map +1 -0
- package/dist/qar/taskEvents.d.ts +25 -0
- package/dist/qar/taskEvents.d.ts.map +1 -0
- package/dist/qar/taskEvents.js +22 -0
- package/dist/qar/taskEvents.js.map +1 -0
- package/dist/qar/trace.d.ts +12 -0
- package/dist/qar/trace.d.ts.map +1 -0
- package/dist/qar/trace.js +12 -0
- package/dist/qar/trace.js.map +1 -0
- package/dist/skills/activation.d.ts +177 -0
- package/dist/skills/activation.d.ts.map +1 -0
- package/dist/skills/activation.js +428 -0
- package/dist/skills/activation.js.map +1 -0
- package/dist/skills/cli/index.browser.d.ts +18 -0
- package/dist/skills/cli/index.browser.d.ts.map +1 -0
- package/dist/skills/cli/index.browser.js +27 -0
- package/dist/skills/cli/index.browser.js.map +1 -0
- package/dist/skills/cli/index.d.ts +37 -0
- package/dist/skills/cli/index.d.ts.map +1 -0
- package/dist/skills/cli/index.js +494 -0
- package/dist/skills/cli/index.js.map +1 -0
- package/dist/skills/events.d.ts +255 -0
- package/dist/skills/events.d.ts.map +1 -0
- package/dist/skills/events.js +224 -0
- package/dist/skills/events.js.map +1 -0
- package/dist/skills/index.d.ts +45 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +34 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/inject.d.ts +57 -0
- package/dist/skills/inject.d.ts.map +1 -0
- package/dist/skills/inject.js +162 -0
- package/dist/skills/inject.js.map +1 -0
- package/dist/skills/lockfile.browser.d.ts +56 -0
- package/dist/skills/lockfile.browser.d.ts.map +1 -0
- package/dist/skills/lockfile.browser.js +55 -0
- package/dist/skills/lockfile.browser.js.map +1 -0
- package/dist/skills/lockfile.d.ts +137 -0
- package/dist/skills/lockfile.d.ts.map +1 -0
- package/dist/skills/lockfile.js +423 -0
- package/dist/skills/lockfile.js.map +1 -0
- package/dist/skills/manager.browser.d.ts +94 -0
- package/dist/skills/manager.browser.d.ts.map +1 -0
- package/dist/skills/manager.browser.js +159 -0
- package/dist/skills/manager.browser.js.map +1 -0
- package/dist/skills/manager.d.ts +362 -0
- package/dist/skills/manager.d.ts.map +1 -0
- package/dist/skills/manager.js +1386 -0
- package/dist/skills/manager.js.map +1 -0
- package/dist/skills/mcp/index.d.ts +15 -0
- package/dist/skills/mcp/index.d.ts.map +1 -0
- package/dist/skills/mcp/index.js +12 -0
- package/dist/skills/mcp/index.js.map +1 -0
- package/dist/skills/mcp/path.browser.d.ts +27 -0
- package/dist/skills/mcp/path.browser.d.ts.map +1 -0
- package/dist/skills/mcp/path.browser.js +33 -0
- package/dist/skills/mcp/path.browser.js.map +1 -0
- package/dist/skills/mcp/path.d.ts +57 -0
- package/dist/skills/mcp/path.d.ts.map +1 -0
- package/dist/skills/mcp/path.js +150 -0
- package/dist/skills/mcp/path.js.map +1 -0
- package/dist/skills/mcp/server.browser.d.ts +32 -0
- package/dist/skills/mcp/server.browser.d.ts.map +1 -0
- package/dist/skills/mcp/server.browser.js +53 -0
- package/dist/skills/mcp/server.browser.js.map +1 -0
- package/dist/skills/mcp/server.d.ts +144 -0
- package/dist/skills/mcp/server.d.ts.map +1 -0
- package/dist/skills/mcp/server.js +841 -0
- package/dist/skills/mcp/server.js.map +1 -0
- package/dist/skills/mcp/types.d.ts +72 -0
- package/dist/skills/mcp/types.d.ts.map +1 -0
- package/dist/skills/mcp/types.js +20 -0
- package/dist/skills/mcp/types.js.map +1 -0
- package/dist/skills/mcp/wireDefs.d.ts +58 -0
- package/dist/skills/mcp/wireDefs.d.ts.map +1 -0
- package/dist/skills/mcp/wireDefs.js +141 -0
- package/dist/skills/mcp/wireDefs.js.map +1 -0
- package/dist/skills/parser.d.ts +63 -0
- package/dist/skills/parser.d.ts.map +1 -0
- package/dist/skills/parser.js +755 -0
- package/dist/skills/parser.js.map +1 -0
- package/dist/skills/prefilter.d.ts +104 -0
- package/dist/skills/prefilter.d.ts.map +1 -0
- package/dist/skills/prefilter.js +398 -0
- package/dist/skills/prefilter.js.map +1 -0
- package/dist/skills/preprocess.d.ts +169 -0
- package/dist/skills/preprocess.d.ts.map +1 -0
- package/dist/skills/preprocess.js +535 -0
- package/dist/skills/preprocess.js.map +1 -0
- package/dist/skills/render.d.ts +83 -0
- package/dist/skills/render.d.ts.map +1 -0
- package/dist/skills/render.js +397 -0
- package/dist/skills/render.js.map +1 -0
- package/dist/skills/sources/index.browser.d.ts +29 -0
- package/dist/skills/sources/index.browser.d.ts.map +1 -0
- package/dist/skills/sources/index.browser.js +16 -0
- package/dist/skills/sources/index.browser.js.map +1 -0
- package/dist/skills/sources/index.d.ts +59 -0
- package/dist/skills/sources/index.d.ts.map +1 -0
- package/dist/skills/sources/index.js +471 -0
- package/dist/skills/sources/index.js.map +1 -0
- package/dist/skills/sources/walk.browser.d.ts +17 -0
- package/dist/skills/sources/walk.browser.d.ts.map +1 -0
- package/dist/skills/sources/walk.browser.js +19 -0
- package/dist/skills/sources/walk.browser.js.map +1 -0
- package/dist/skills/sources/walk.d.ts +68 -0
- package/dist/skills/sources/walk.d.ts.map +1 -0
- package/dist/skills/sources/walk.js +264 -0
- package/dist/skills/sources/walk.js.map +1 -0
- package/dist/skills/substitute.d.ts +87 -0
- package/dist/skills/substitute.d.ts.map +1 -0
- package/dist/skills/substitute.js +322 -0
- package/dist/skills/substitute.js.map +1 -0
- package/dist/skills/testing/SkillKit.browser.d.ts +62 -0
- package/dist/skills/testing/SkillKit.browser.d.ts.map +1 -0
- package/dist/skills/testing/SkillKit.browser.js +41 -0
- package/dist/skills/testing/SkillKit.browser.js.map +1 -0
- package/dist/skills/testing/SkillKit.d.ts +130 -0
- package/dist/skills/testing/SkillKit.d.ts.map +1 -0
- package/dist/skills/testing/SkillKit.js +316 -0
- package/dist/skills/testing/SkillKit.js.map +1 -0
- package/dist/skills/testing/index.d.ts +9 -0
- package/dist/skills/testing/index.d.ts.map +1 -0
- package/dist/skills/testing/index.js +8 -0
- package/dist/skills/testing/index.js.map +1 -0
- package/dist/skills/trust.d.ts +72 -0
- package/dist/skills/trust.d.ts.map +1 -0
- package/dist/skills/trust.js +183 -0
- package/dist/skills/trust.js.map +1 -0
- package/dist/skills/types.d.ts +627 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +85 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validator.d.ts +95 -0
- package/dist/skills/validator.d.ts.map +1 -0
- package/dist/skills/validator.js +486 -0
- package/dist/skills/validator.js.map +1 -0
- package/dist/tracing/PipelineTracer.d.ts +35 -22
- package/dist/tracing/PipelineTracer.d.ts.map +1 -1
- package/dist/tracing/PipelineTracer.js +106 -61
- package/dist/tracing/PipelineTracer.js.map +1 -1
- package/dist/tracing/SdkTracer.d.ts +63 -61
- package/dist/tracing/SdkTracer.d.ts.map +1 -1
- package/dist/tracing/SdkTracer.js +185 -177
- package/dist/tracing/SdkTracer.js.map +1 -1
- package/dist/tracing/index.d.ts +10 -1
- package/dist/tracing/index.d.ts.map +1 -1
- package/dist/tracing/index.js +9 -0
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/types.d.ts +89 -16
- package/dist/tracing/types.d.ts.map +1 -1
- package/dist/tracing/types.js +17 -4
- package/dist/tracing/types.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +10 -20
- package/dist/version.js.map +1 -1
- package/package.json +53 -39
- package/.claude/skills/qodo-agent/SKILL.md +0 -974
- package/.claude/skills/qodo-agent/assets/programmatic-agent.ts +0 -407
- package/.claude/skills/qodo-agent/references/builtin-tools.md +0 -342
- package/.claude/skills/qodo-agent/references/common-issues.md +0 -537
- package/bin/rg +0 -0
- package/dist/api/agent.d.ts +0 -105
- package/dist/api/agent.d.ts.map +0 -1
- package/dist/api/agent.js +0 -963
- package/dist/api/agent.js.map +0 -1
- package/dist/api/analytics.d.ts +0 -43
- package/dist/api/analytics.d.ts.map +0 -1
- package/dist/api/analytics.js +0 -163
- package/dist/api/analytics.js.map +0 -1
- package/dist/api/http.d.ts +0 -5
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -62
- package/dist/api/http.js.map +0 -1
- package/dist/api/index.d.ts +0 -12
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -17
- package/dist/api/index.js.map +0 -1
- package/dist/api/taskTracking.d.ts +0 -54
- package/dist/api/taskTracking.d.ts.map +0 -1
- package/dist/api/taskTracking.js +0 -208
- package/dist/api/taskTracking.js.map +0 -1
- package/dist/api/types.d.ts +0 -93
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js +0 -2
- package/dist/api/types.js.map +0 -1
- package/dist/api/utils.d.ts +0 -8
- package/dist/api/utils.d.ts.map +0 -1
- package/dist/api/utils.js +0 -63
- package/dist/api/utils.js.map +0 -1
- package/dist/api/websocket.d.ts +0 -203
- package/dist/api/websocket.d.ts.map +0 -1
- package/dist/api/websocket.js +0 -1166
- package/dist/api/websocket.js.map +0 -1
- package/dist/bin/install-skill.d.ts +0 -14
- package/dist/bin/install-skill.d.ts.map +0 -1
- package/dist/bin/install-skill.js +0 -125
- package/dist/bin/install-skill.js.map +0 -1
- package/dist/bin/run-helpers.d.ts +0 -34
- package/dist/bin/run-helpers.d.ts.map +0 -1
- package/dist/bin/run-helpers.js +0 -186
- package/dist/bin/run-helpers.js.map +0 -1
- package/dist/bin/run.d.ts +0 -13
- package/dist/bin/run.d.ts.map +0 -1
- package/dist/bin/run.js +0 -57
- package/dist/bin/run.js.map +0 -1
- package/dist/clients/index.d.ts +0 -10
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/index.js +0 -8
- package/dist/clients/index.js.map +0 -1
- package/dist/clients/info/InfoClient.d.ts +0 -37
- package/dist/clients/info/InfoClient.d.ts.map +0 -1
- package/dist/clients/info/InfoClient.js +0 -69
- package/dist/clients/info/InfoClient.js.map +0 -1
- package/dist/clients/info/index.d.ts +0 -4
- package/dist/clients/info/index.d.ts.map +0 -1
- package/dist/clients/info/index.js +0 -2
- package/dist/clients/info/index.js.map +0 -1
- package/dist/clients/info/types.d.ts +0 -21
- package/dist/clients/info/types.d.ts.map +0 -1
- package/dist/clients/info/types.js +0 -2
- package/dist/clients/info/types.js.map +0 -1
- package/dist/clients/sessions/SessionsClient.d.ts +0 -34
- package/dist/clients/sessions/SessionsClient.d.ts.map +0 -1
- package/dist/clients/sessions/SessionsClient.js +0 -71
- package/dist/clients/sessions/SessionsClient.js.map +0 -1
- package/dist/clients/sessions/index.d.ts +0 -4
- package/dist/clients/sessions/index.d.ts.map +0 -1
- package/dist/clients/sessions/index.js +0 -2
- package/dist/clients/sessions/index.js.map +0 -1
- package/dist/clients/sessions/types.d.ts +0 -20
- package/dist/clients/sessions/types.d.ts.map +0 -1
- package/dist/clients/sessions/types.js +0 -2
- package/dist/clients/sessions/types.js.map +0 -1
- package/dist/clients/tools/ToolsClient.d.ts +0 -39
- package/dist/clients/tools/ToolsClient.d.ts.map +0 -1
- package/dist/clients/tools/ToolsClient.js +0 -95
- package/dist/clients/tools/ToolsClient.js.map +0 -1
- package/dist/clients/tools/index.d.ts +0 -4
- package/dist/clients/tools/index.d.ts.map +0 -1
- package/dist/clients/tools/index.js +0 -2
- package/dist/clients/tools/index.js.map +0 -1
- package/dist/clients/tools/types.d.ts +0 -14
- package/dist/clients/tools/types.d.ts.map +0 -1
- package/dist/clients/tools/types.js +0 -2
- package/dist/clients/tools/types.js.map +0 -1
- package/dist/config/ConfigManager.d.ts +0 -43
- package/dist/config/ConfigManager.d.ts.map +0 -1
- package/dist/config/ConfigManager.js +0 -472
- package/dist/config/ConfigManager.js.map +0 -1
- package/dist/config/index.d.ts +0 -6
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/config/index.js.map +0 -1
- package/dist/config/urlConfig.d.ts +0 -15
- package/dist/config/urlConfig.d.ts.map +0 -1
- package/dist/config/urlConfig.js +0 -75
- package/dist/config/urlConfig.js.map +0 -1
- package/dist/constants/errors.d.ts +0 -2
- package/dist/constants/errors.d.ts.map +0 -1
- package/dist/constants/errors.js +0 -2
- package/dist/constants/errors.js.map +0 -1
- package/dist/constants/index.d.ts +0 -7
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -11
- package/dist/constants/index.js.map +0 -1
- package/dist/constants/tools.d.ts +0 -4
- package/dist/constants/tools.d.ts.map +0 -1
- package/dist/constants/tools.js +0 -4
- package/dist/constants/tools.js.map +0 -1
- package/dist/constants/versions.d.ts +0 -2
- package/dist/constants/versions.d.ts.map +0 -1
- package/dist/constants/versions.js +0 -2
- package/dist/constants/versions.js.map +0 -1
- package/dist/context/buildUserContext.d.ts +0 -18
- package/dist/context/buildUserContext.d.ts.map +0 -1
- package/dist/context/buildUserContext.js +0 -34
- package/dist/context/buildUserContext.js.map +0 -1
- package/dist/context/index.d.ts +0 -9
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -9
- package/dist/context/index.js.map +0 -1
- package/dist/context/messageManager.d.ts +0 -42
- package/dist/context/messageManager.d.ts.map +0 -1
- package/dist/context/messageManager.js +0 -322
- package/dist/context/messageManager.js.map +0 -1
- package/dist/context/taskFocus.d.ts +0 -2
- package/dist/context/taskFocus.d.ts.map +0 -1
- package/dist/context/taskFocus.js +0 -26
- package/dist/context/taskFocus.js.map +0 -1
- package/dist/context/userInput.d.ts +0 -3
- package/dist/context/userInput.d.ts.map +0 -1
- package/dist/context/userInput.js +0 -20
- package/dist/context/userInput.js.map +0 -1
- package/dist/mcp/MCPManager.d.ts +0 -109
- package/dist/mcp/MCPManager.d.ts.map +0 -1
- package/dist/mcp/MCPManager.js +0 -592
- package/dist/mcp/MCPManager.js.map +0 -1
- package/dist/mcp/approvedTools.d.ts +0 -4
- package/dist/mcp/approvedTools.d.ts.map +0 -1
- package/dist/mcp/approvedTools.js +0 -19
- package/dist/mcp/approvedTools.js.map +0 -1
- package/dist/mcp/baseServer.d.ts +0 -75
- package/dist/mcp/baseServer.d.ts.map +0 -1
- package/dist/mcp/baseServer.js +0 -107
- package/dist/mcp/baseServer.js.map +0 -1
- package/dist/mcp/builtinServers.d.ts +0 -15
- package/dist/mcp/builtinServers.d.ts.map +0 -1
- package/dist/mcp/builtinServers.js +0 -141
- package/dist/mcp/builtinServers.js.map +0 -1
- package/dist/mcp/dynamicBEServer.d.ts +0 -20
- package/dist/mcp/dynamicBEServer.d.ts.map +0 -1
- package/dist/mcp/dynamicBEServer.js +0 -52
- package/dist/mcp/dynamicBEServer.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -18
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -23
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/mcpInitialization.d.ts +0 -2
- package/dist/mcp/mcpInitialization.d.ts.map +0 -1
- package/dist/mcp/mcpInitialization.js +0 -56
- package/dist/mcp/mcpInitialization.js.map +0 -1
- package/dist/mcp/servers/filesystem.d.ts +0 -44
- package/dist/mcp/servers/filesystem.d.ts.map +0 -1
- package/dist/mcp/servers/filesystem.js +0 -776
- package/dist/mcp/servers/filesystem.js.map +0 -1
- package/dist/mcp/servers/git.d.ts +0 -18
- package/dist/mcp/servers/git.d.ts.map +0 -1
- package/dist/mcp/servers/git.js +0 -441
- package/dist/mcp/servers/git.js.map +0 -1
- package/dist/mcp/servers/ripgrep.d.ts +0 -39
- package/dist/mcp/servers/ripgrep.d.ts.map +0 -1
- package/dist/mcp/servers/ripgrep.js +0 -550
- package/dist/mcp/servers/ripgrep.js.map +0 -1
- package/dist/mcp/servers/shell.d.ts +0 -20
- package/dist/mcp/servers/shell.d.ts.map +0 -1
- package/dist/mcp/servers/shell.js +0 -519
- package/dist/mcp/servers/shell.js.map +0 -1
- package/dist/mcp/serversRegistry.d.ts +0 -55
- package/dist/mcp/serversRegistry.d.ts.map +0 -1
- package/dist/mcp/serversRegistry.js +0 -416
- package/dist/mcp/serversRegistry.js.map +0 -1
- package/dist/mcp/toolProcessor.d.ts +0 -82
- package/dist/mcp/toolProcessor.d.ts.map +0 -1
- package/dist/mcp/toolProcessor.js +0 -392
- package/dist/mcp/toolProcessor.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -29
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -2
- package/dist/mcp/types.js.map +0 -1
- package/dist/messages/index.d.ts +0 -8
- package/dist/messages/index.d.ts.map +0 -1
- package/dist/messages/index.js +0 -7
- package/dist/messages/index.js.map +0 -1
- package/dist/messages/openai.d.ts +0 -26
- package/dist/messages/openai.d.ts.map +0 -1
- package/dist/messages/openai.js +0 -55
- package/dist/messages/openai.js.map +0 -1
- package/dist/messages/types.d.ts +0 -73
- package/dist/messages/types.d.ts.map +0 -1
- package/dist/messages/types.js +0 -78
- package/dist/messages/types.js.map +0 -1
- package/dist/parser/index.d.ts +0 -72
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -967
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/types.d.ts +0 -153
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/parser/types.js +0 -6
- package/dist/parser/types.js.map +0 -1
- package/dist/parser/utils.d.ts +0 -18
- package/dist/parser/utils.d.ts.map +0 -1
- package/dist/parser/utils.js +0 -64
- package/dist/parser/utils.js.map +0 -1
- package/dist/sdk/QodoSDK.d.ts +0 -218
- package/dist/sdk/QodoSDK.d.ts.map +0 -1
- package/dist/sdk/QodoSDK.js +0 -1115
- package/dist/sdk/QodoSDK.js.map +0 -1
- package/dist/sdk/artifacts.d.ts +0 -156
- package/dist/sdk/artifacts.d.ts.map +0 -1
- package/dist/sdk/artifacts.js +0 -166
- package/dist/sdk/artifacts.js.map +0 -1
- package/dist/sdk/bootstrap.d.ts +0 -16
- package/dist/sdk/bootstrap.d.ts.map +0 -1
- package/dist/sdk/bootstrap.js +0 -28
- package/dist/sdk/bootstrap.js.map +0 -1
- package/dist/sdk/builders.d.ts +0 -54
- package/dist/sdk/builders.d.ts.map +0 -1
- package/dist/sdk/builders.js +0 -117
- package/dist/sdk/builders.js.map +0 -1
- package/dist/sdk/defaults.d.ts +0 -11
- package/dist/sdk/defaults.d.ts.map +0 -1
- package/dist/sdk/defaults.js +0 -39
- package/dist/sdk/defaults.js.map +0 -1
- package/dist/sdk/discovery.d.ts +0 -2
- package/dist/sdk/discovery.d.ts.map +0 -1
- package/dist/sdk/discovery.js +0 -25
- package/dist/sdk/discovery.js.map +0 -1
- package/dist/sdk/events.d.ts +0 -269
- package/dist/sdk/events.d.ts.map +0 -1
- package/dist/sdk/events.js +0 -69
- package/dist/sdk/events.js.map +0 -1
- package/dist/sdk/exit-expression.d.ts +0 -13
- package/dist/sdk/exit-expression.d.ts.map +0 -1
- package/dist/sdk/exit-expression.js +0 -35
- package/dist/sdk/exit-expression.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -17
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js +0 -17
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/middleware.d.ts +0 -59
- package/dist/sdk/middleware.d.ts.map +0 -1
- package/dist/sdk/middleware.js +0 -69
- package/dist/sdk/middleware.js.map +0 -1
- package/dist/sdk/pipeline/PipelineBuilder.d.ts +0 -79
- package/dist/sdk/pipeline/PipelineBuilder.d.ts.map +0 -1
- package/dist/sdk/pipeline/PipelineBuilder.js +0 -129
- package/dist/sdk/pipeline/PipelineBuilder.js.map +0 -1
- package/dist/sdk/pipeline/PipelineRunner.d.ts +0 -28
- package/dist/sdk/pipeline/PipelineRunner.d.ts.map +0 -1
- package/dist/sdk/pipeline/PipelineRunner.js +0 -326
- package/dist/sdk/pipeline/PipelineRunner.js.map +0 -1
- package/dist/sdk/pipeline/compiler.d.ts +0 -24
- package/dist/sdk/pipeline/compiler.d.ts.map +0 -1
- package/dist/sdk/pipeline/compiler.js +0 -199
- package/dist/sdk/pipeline/compiler.js.map +0 -1
- package/dist/sdk/pipeline/declarative.d.ts +0 -34
- package/dist/sdk/pipeline/declarative.d.ts.map +0 -1
- package/dist/sdk/pipeline/declarative.js +0 -9
- package/dist/sdk/pipeline/declarative.js.map +0 -1
- package/dist/sdk/pipeline/index.d.ts +0 -20
- package/dist/sdk/pipeline/index.d.ts.map +0 -1
- package/dist/sdk/pipeline/index.js +0 -19
- package/dist/sdk/pipeline/index.js.map +0 -1
- package/dist/sdk/pipeline/types.d.ts +0 -93
- package/dist/sdk/pipeline/types.d.ts.map +0 -1
- package/dist/sdk/pipeline/types.js +0 -10
- package/dist/sdk/pipeline/types.js.map +0 -1
- package/dist/sdk/policies.d.ts +0 -163
- package/dist/sdk/policies.d.ts.map +0 -1
- package/dist/sdk/policies.js +0 -243
- package/dist/sdk/policies.js.map +0 -1
- package/dist/sdk/runner/AgentRunner.d.ts +0 -22
- package/dist/sdk/runner/AgentRunner.d.ts.map +0 -1
- package/dist/sdk/runner/AgentRunner.js +0 -222
- package/dist/sdk/runner/AgentRunner.js.map +0 -1
- package/dist/sdk/runner/finalize.d.ts +0 -56
- package/dist/sdk/runner/finalize.d.ts.map +0 -1
- package/dist/sdk/runner/finalize.js +0 -155
- package/dist/sdk/runner/finalize.js.map +0 -1
- package/dist/sdk/runner/formats.d.ts +0 -7
- package/dist/sdk/runner/formats.d.ts.map +0 -1
- package/dist/sdk/runner/formats.js +0 -76
- package/dist/sdk/runner/formats.js.map +0 -1
- package/dist/sdk/runner/index.d.ts +0 -9
- package/dist/sdk/runner/index.d.ts.map +0 -1
- package/dist/sdk/runner/index.js +0 -9
- package/dist/sdk/runner/index.js.map +0 -1
- package/dist/sdk/runner/progress.d.ts +0 -3
- package/dist/sdk/runner/progress.d.ts.map +0 -1
- package/dist/sdk/runner/progress.js +0 -16
- package/dist/sdk/runner/progress.js.map +0 -1
- package/dist/sdk/schemas.d.ts +0 -72
- package/dist/sdk/schemas.d.ts.map +0 -1
- package/dist/sdk/schemas.js +0 -282
- package/dist/sdk/schemas.js.map +0 -1
- package/dist/sdk/trigger-context.d.ts +0 -24
- package/dist/sdk/trigger-context.d.ts.map +0 -1
- package/dist/sdk/trigger-context.js +0 -136
- package/dist/sdk/trigger-context.js.map +0 -1
- package/dist/session/SessionContext.d.ts +0 -89
- package/dist/session/SessionContext.d.ts.map +0 -1
- package/dist/session/SessionContext.js +0 -410
- package/dist/session/SessionContext.js.map +0 -1
- package/dist/session/environment.d.ts +0 -52
- package/dist/session/environment.d.ts.map +0 -1
- package/dist/session/environment.js +0 -27
- package/dist/session/environment.js.map +0 -1
- package/dist/session/history.d.ts +0 -18
- package/dist/session/history.d.ts.map +0 -1
- package/dist/session/history.js +0 -68
- package/dist/session/history.js.map +0 -1
- package/dist/session/index.d.ts +0 -10
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -9
- package/dist/session/index.js.map +0 -1
- package/dist/session/serverData.d.ts +0 -38
- package/dist/session/serverData.d.ts.map +0 -1
- package/dist/session/serverData.js +0 -261
- package/dist/session/serverData.js.map +0 -1
- package/dist/tracing/pipelineHelpers.d.ts +0 -29
- package/dist/tracing/pipelineHelpers.d.ts.map +0 -1
- package/dist/tracing/pipelineHelpers.js +0 -224
- package/dist/tracing/pipelineHelpers.js.map +0 -1
- package/dist/tracking/Tracker.d.ts +0 -55
- package/dist/tracking/Tracker.d.ts.map +0 -1
- package/dist/tracking/Tracker.js +0 -217
- package/dist/tracking/Tracker.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -8
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -8
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/schemas.d.ts +0 -292
- package/dist/tracking/schemas.d.ts.map +0 -1
- package/dist/tracking/schemas.js +0 -91
- package/dist/tracking/schemas.js.map +0 -1
- package/dist/utils/extractSetFlags.d.ts +0 -6
- package/dist/utils/extractSetFlags.d.ts.map +0 -1
- package/dist/utils/extractSetFlags.js +0 -16
- package/dist/utils/extractSetFlags.js.map +0 -1
- package/dist/utils/formatTimeAgo.d.ts +0 -2
- package/dist/utils/formatTimeAgo.d.ts.map +0 -1
- package/dist/utils/formatTimeAgo.js +0 -20
- package/dist/utils/formatTimeAgo.js.map +0 -1
- package/dist/utils/index.d.ts +0 -12
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -12
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/machineId.d.ts +0 -14
- package/dist/utils/machineId.d.ts.map +0 -1
- package/dist/utils/machineId.js +0 -66
- package/dist/utils/machineId.js.map +0 -1
- package/dist/utils/pathUtils.d.ts +0 -22
- package/dist/utils/pathUtils.d.ts.map +0 -1
- package/dist/utils/pathUtils.js +0 -54
- package/dist/utils/pathUtils.js.map +0 -1
- package/scripts/download-ripgrep.js +0 -269
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-wire validation helpers for `task.start { agent: InlineAgentSpec }`
|
|
3
|
+
* (Pattern B). The wire types themselves live in `./specs.ts`; this
|
|
4
|
+
* module carries the SDK-side intake guard plus a re-export of the
|
|
5
|
+
* `InlineAgentSpec` symbol under the `AgentSpec` alias.
|
|
6
|
+
*
|
|
7
|
+
* **Why an SDK-side intake guard?** QAR's `validate_spec_payload` is the
|
|
8
|
+
* single source of truth for spec rule_ids; the SDK never tries to
|
|
9
|
+
* reimplement the full ruleset. But two classes of failure are worth
|
|
10
|
+
* catching client-side without paying the round-trip:
|
|
11
|
+
*
|
|
12
|
+
* 1. **Forbidden keys.** `custom_code: { ... }` and unknown top-level
|
|
13
|
+
* fields (`hooks`, `lifecycle`, anything not in the safe subset)
|
|
14
|
+
* are deterministically rejected by `D10-R1` / `D10-R3` / `D10-R5`.
|
|
15
|
+
* Catching them in TypeScript at intake means the consumer's stack
|
|
16
|
+
* trace points at their call site; QAR's per-rule `path` is
|
|
17
|
+
* preserved so the error message is identical to the wire envelope.
|
|
18
|
+
* 2. **Discriminator + required-field hygiene.** Missing
|
|
19
|
+
* `apiVersion` / `instructions` / `model` (the only required
|
|
20
|
+
* fields) gets a typed reject before the wire write so consumers
|
|
21
|
+
* don't see a `task.done(failed)` 200ms later for a typo they
|
|
22
|
+
* could have caught at edit time.
|
|
23
|
+
*
|
|
24
|
+
* Per-rule semantic checks (catalog name resolution, skill compatibility,
|
|
25
|
+
* spawnable agent registry lookups, etc.) stay server-side — they need
|
|
26
|
+
* tenant context the SDK doesn't have.
|
|
27
|
+
*/
|
|
28
|
+
import type { InlineAgentSpec } from './specs.js';
|
|
29
|
+
/**
|
|
30
|
+
* Pre-wire validation outcome — one entry per detected violation. Matches
|
|
31
|
+
* the per-rule shape QAR emits via `agent_spec_rejected` envelopes so
|
|
32
|
+
* consumers handling both paths can branch on the same `(rule_id, path,
|
|
33
|
+
* message)` triple.
|
|
34
|
+
*/
|
|
35
|
+
export interface InlineAgentSpecValidationIssue {
|
|
36
|
+
readonly rule_id: string;
|
|
37
|
+
/** JSON Pointer (RFC 6901) into the spec — `""` for root. */
|
|
38
|
+
readonly path: string;
|
|
39
|
+
readonly message: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Walk an `unknown` value asserted to be an `InlineAgentSpec`, returning
|
|
43
|
+
* the list of detected pre-wire violations. Empty list = pre-wire-clean
|
|
44
|
+
* (still subject to the server's per-rule pass at `task.start` and the
|
|
45
|
+
* pre-flight endpoint).
|
|
46
|
+
*
|
|
47
|
+
* Field-shape validation is intentionally shallow: we check the rules a
|
|
48
|
+
* dumb JSON walker can verify (forbidden keys, missing required scalars,
|
|
49
|
+
* `custom_code !== null`). Deeper composition rules (skill version
|
|
50
|
+
* resolution, spawnable agent registry, tool-name collisions) need
|
|
51
|
+
* tenant context and stay server-side under `validate_spec_payload`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function collectInlineAgentSpecPreWireIssues(spec: unknown): readonly InlineAgentSpecValidationIssue[];
|
|
54
|
+
/**
|
|
55
|
+
* Type-guard form of `collectInlineAgentSpecPreWireIssues`. Throws
|
|
56
|
+
* `QodoInlineAgentValidationError` from `../client/errors.js` when any
|
|
57
|
+
* pre-wire issue is detected. Caller is `TaskClient.start` —
|
|
58
|
+
* `assertInlineAgentSpecPreWire(payload.agent)` runs before any wire
|
|
59
|
+
* write so the consumer's stack trace points at the call site, not at a
|
|
60
|
+
* `task.done(failed)` arriving over the wire.
|
|
61
|
+
*
|
|
62
|
+
* Lives in this module (not in the central `errors.ts`) because circular
|
|
63
|
+
* imports are easier to avoid when the assertion sits next to the rule
|
|
64
|
+
* walker that produces its message body.
|
|
65
|
+
*/
|
|
66
|
+
export declare function assertInlineAgentSpecPreWire(spec: unknown): asserts spec is InlineAgentSpec;
|
|
67
|
+
/**
|
|
68
|
+
* Fill in the wire-canonical `kind: 'AgentSpec'` discriminator when the
|
|
69
|
+
* consumer's spec omits it. `InlineAgentSpec.kind` is optional in TypeScript
|
|
70
|
+
* — required server-side, but the SDK is permissive at the type level so
|
|
71
|
+
* consumers can write `{ apiVersion, instructions, model }` literally.
|
|
72
|
+
* Both `task.start` dispatch and `specs.validate` need the discriminator
|
|
73
|
+
* on the wire, so this normalizer runs at every wire boundary.
|
|
74
|
+
*
|
|
75
|
+
* Doesn't mutate the consumer's input object — returns the same reference if
|
|
76
|
+
* `kind` is already set so the spread cost is paid only when needed.
|
|
77
|
+
*/
|
|
78
|
+
export declare function normalizeInlineAgentSpec(spec: InlineAgentSpec): InlineAgentSpec;
|
|
79
|
+
/**
|
|
80
|
+
* The inline `AgentSpec` symbol — exported here so consumers can
|
|
81
|
+
* `import { AgentSpec }` for the wire shape, even though
|
|
82
|
+
* `QarRegistryClient.AgentSpec` (the local-registry shape) owns the
|
|
83
|
+
* unqualified `AgentSpec` export at the package index. Two layers, two
|
|
84
|
+
* types — see `./specs.ts` header for the longer rationale.
|
|
85
|
+
*
|
|
86
|
+
* Marked deprecated only as a hint that direct use should prefer
|
|
87
|
+
* `InlineAgentSpec` to keep the wire-vs-local distinction visible at the
|
|
88
|
+
* call site; the alias itself isn't going anywhere.
|
|
89
|
+
*
|
|
90
|
+
* @see {@link InlineAgentSpec}
|
|
91
|
+
*/
|
|
92
|
+
export type AgentSpec = InlineAgentSpec;
|
|
93
|
+
//# sourceMappingURL=agentSpec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSpec.d.ts","sourceRoot":"","sources":["../../src/qar/agentSpec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmClD;;;;;GAKG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,OAAO,GACZ,SAAS,8BAA8B,EAAE,CAsF3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,IAAI,eAAe,CAIjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAG/E;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-wire validation helpers for `task.start { agent: InlineAgentSpec }`
|
|
3
|
+
* (Pattern B). The wire types themselves live in `./specs.ts`; this
|
|
4
|
+
* module carries the SDK-side intake guard plus a re-export of the
|
|
5
|
+
* `InlineAgentSpec` symbol under the `AgentSpec` alias.
|
|
6
|
+
*
|
|
7
|
+
* **Why an SDK-side intake guard?** QAR's `validate_spec_payload` is the
|
|
8
|
+
* single source of truth for spec rule_ids; the SDK never tries to
|
|
9
|
+
* reimplement the full ruleset. But two classes of failure are worth
|
|
10
|
+
* catching client-side without paying the round-trip:
|
|
11
|
+
*
|
|
12
|
+
* 1. **Forbidden keys.** `custom_code: { ... }` and unknown top-level
|
|
13
|
+
* fields (`hooks`, `lifecycle`, anything not in the safe subset)
|
|
14
|
+
* are deterministically rejected by `D10-R1` / `D10-R3` / `D10-R5`.
|
|
15
|
+
* Catching them in TypeScript at intake means the consumer's stack
|
|
16
|
+
* trace points at their call site; QAR's per-rule `path` is
|
|
17
|
+
* preserved so the error message is identical to the wire envelope.
|
|
18
|
+
* 2. **Discriminator + required-field hygiene.** Missing
|
|
19
|
+
* `apiVersion` / `instructions` / `model` (the only required
|
|
20
|
+
* fields) gets a typed reject before the wire write so consumers
|
|
21
|
+
* don't see a `task.done(failed)` 200ms later for a typo they
|
|
22
|
+
* could have caught at edit time.
|
|
23
|
+
*
|
|
24
|
+
* Per-rule semantic checks (catalog name resolution, skill compatibility,
|
|
25
|
+
* spawnable agent registry lookups, etc.) stay server-side — they need
|
|
26
|
+
* tenant context the SDK doesn't have.
|
|
27
|
+
*/
|
|
28
|
+
import { QodoInlineAgentValidationError } from '../client/errors.js';
|
|
29
|
+
/** Allowed top-level field set. Anything else triggers `D10-R5`. */
|
|
30
|
+
const ALLOWED_AGENT_SPEC_FIELDS = new Set([
|
|
31
|
+
'apiVersion',
|
|
32
|
+
'kind',
|
|
33
|
+
'name',
|
|
34
|
+
'instructions',
|
|
35
|
+
'model',
|
|
36
|
+
'tools',
|
|
37
|
+
'use_managed_tools',
|
|
38
|
+
'excluded_tools',
|
|
39
|
+
'output_schema',
|
|
40
|
+
'deps_schema',
|
|
41
|
+
'skills',
|
|
42
|
+
'spawnable_agents',
|
|
43
|
+
'custom_code',
|
|
44
|
+
// Content-trust policy. Threads through to QAR's
|
|
45
|
+
// `AgentSpec.content_trust` field.
|
|
46
|
+
'content_trust',
|
|
47
|
+
// Chat-mode primitive. Boolean, default `false`. Pre-wire validator
|
|
48
|
+
// accepts the field; QAR's `validate_spec_payload` is the canonical
|
|
49
|
+
// type check (rejects non-bool via Pydantic `value_error.bool_type`).
|
|
50
|
+
'auto_pause_on_turn_end',
|
|
51
|
+
// MCP tool auto-discovery — SDK-only fields. The projection layer at
|
|
52
|
+
// `tasks.startWithAgent` / `tasks.startWithGraph` resolves `mcpTools`
|
|
53
|
+
// against the live `McpClientPool` catalog and strips both fields
|
|
54
|
+
// before the wire write so QAR never sees them. The pre-wire
|
|
55
|
+
// validator accepts them here so consumers writing the consumer-side
|
|
56
|
+
// ergonomic don't trip on the AgentSpec extra-field rule for an
|
|
57
|
+
// SDK-only surface.
|
|
58
|
+
'mcpTools',
|
|
59
|
+
'mcpToolOverrides',
|
|
60
|
+
]);
|
|
61
|
+
/**
|
|
62
|
+
* Walk an `unknown` value asserted to be an `InlineAgentSpec`, returning
|
|
63
|
+
* the list of detected pre-wire violations. Empty list = pre-wire-clean
|
|
64
|
+
* (still subject to the server's per-rule pass at `task.start` and the
|
|
65
|
+
* pre-flight endpoint).
|
|
66
|
+
*
|
|
67
|
+
* Field-shape validation is intentionally shallow: we check the rules a
|
|
68
|
+
* dumb JSON walker can verify (forbidden keys, missing required scalars,
|
|
69
|
+
* `custom_code !== null`). Deeper composition rules (skill version
|
|
70
|
+
* resolution, spawnable agent registry, tool-name collisions) need
|
|
71
|
+
* tenant context and stay server-side under `validate_spec_payload`.
|
|
72
|
+
*/
|
|
73
|
+
export function collectInlineAgentSpecPreWireIssues(spec) {
|
|
74
|
+
const issues = [];
|
|
75
|
+
if (typeof spec !== 'object' || spec === null || Array.isArray(spec)) {
|
|
76
|
+
issues.push({
|
|
77
|
+
rule_id: 'D10-R5',
|
|
78
|
+
path: '',
|
|
79
|
+
message: 'AgentSpec must be a JSON object',
|
|
80
|
+
});
|
|
81
|
+
return issues;
|
|
82
|
+
}
|
|
83
|
+
const obj = spec;
|
|
84
|
+
// D10-R1 — `custom_code` reserved; only `null` is acceptable. Any
|
|
85
|
+
// truthy value (string, object, boolean) is rejected.
|
|
86
|
+
if ('custom_code' in obj && obj.custom_code !== null && obj.custom_code !== undefined) {
|
|
87
|
+
issues.push({
|
|
88
|
+
rule_id: 'D10-R1',
|
|
89
|
+
path: '/custom_code',
|
|
90
|
+
message: 'custom_code is reserved-and-rejected until the sandboxed-execution ADR ships; set to null or omit',
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// D10-R5 — unknown top-level fields. Catches `hooks` / `lifecycle`
|
|
94
|
+
// (D10-R3 in practice — both shapes are rejected as unknown
|
|
95
|
+
// top-level fields under QAR's `extra="forbid"` Pydantic config) and
|
|
96
|
+
// the legacy 1.x `customPythonAgentPath` shape.
|
|
97
|
+
for (const key of Object.keys(obj)) {
|
|
98
|
+
if (!ALLOWED_AGENT_SPEC_FIELDS.has(key)) {
|
|
99
|
+
issues.push({
|
|
100
|
+
rule_id: key === 'hooks' || key === 'lifecycle' ? 'D10-R3' : 'D10-R5',
|
|
101
|
+
path: `/${key}`,
|
|
102
|
+
message: `AgentSpec contains forbidden top-level field "${key}"`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Required-field hygiene. Pydantic on the server reports these as
|
|
107
|
+
// `value_error.missing`; the SDK's pre-wire form gives them a
|
|
108
|
+
// `D10-SHAPE` synthetic rule_id so consumers can branch on
|
|
109
|
+
// structural vs semantic failures uniformly. Distinct prefix
|
|
110
|
+
// (`D10-SHAPE-*`) keeps them out of the wire `D10-R*` namespace QAR
|
|
111
|
+
// owns — we don't want SDK pre-wire ids drifting into QAR's
|
|
112
|
+
// documented ruleset.
|
|
113
|
+
if (typeof obj.apiVersion !== 'string' || obj.apiVersion.length === 0) {
|
|
114
|
+
issues.push({
|
|
115
|
+
rule_id: 'D10-SHAPE-APIVERSION',
|
|
116
|
+
path: '/apiVersion',
|
|
117
|
+
message: 'AgentSpec.apiVersion is required; set to "qar/v1"',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else if (obj.apiVersion !== 'qar/v1') {
|
|
121
|
+
issues.push({
|
|
122
|
+
rule_id: 'D10-SHAPE-APIVERSION',
|
|
123
|
+
path: '/apiVersion',
|
|
124
|
+
message: `AgentSpec.apiVersion must be "qar/v1"; got ${JSON.stringify(obj.apiVersion)}`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if ('kind' in obj && obj.kind !== 'AgentSpec' && obj.kind !== undefined) {
|
|
128
|
+
issues.push({
|
|
129
|
+
rule_id: 'D10-SHAPE-KIND',
|
|
130
|
+
path: '/kind',
|
|
131
|
+
message: `AgentSpec.kind must be "AgentSpec" or omitted; got ${JSON.stringify(obj.kind)}`,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (obj.instructions === undefined || obj.instructions === null) {
|
|
135
|
+
issues.push({
|
|
136
|
+
rule_id: 'D10-SHAPE-INSTRUCTIONS',
|
|
137
|
+
path: '/instructions',
|
|
138
|
+
message: 'AgentSpec.instructions is required (string or { preset: "qodo-default", append? })',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (typeof obj.model !== 'string' || obj.model.length === 0) {
|
|
142
|
+
issues.push({
|
|
143
|
+
rule_id: 'D10-SHAPE-MODEL',
|
|
144
|
+
path: '/model',
|
|
145
|
+
message: 'AgentSpec.model is required (non-empty litellm:<provider>:<model> slug)',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return issues;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Type-guard form of `collectInlineAgentSpecPreWireIssues`. Throws
|
|
152
|
+
* `QodoInlineAgentValidationError` from `../client/errors.js` when any
|
|
153
|
+
* pre-wire issue is detected. Caller is `TaskClient.start` —
|
|
154
|
+
* `assertInlineAgentSpecPreWire(payload.agent)` runs before any wire
|
|
155
|
+
* write so the consumer's stack trace points at the call site, not at a
|
|
156
|
+
* `task.done(failed)` arriving over the wire.
|
|
157
|
+
*
|
|
158
|
+
* Lives in this module (not in the central `errors.ts`) because circular
|
|
159
|
+
* imports are easier to avoid when the assertion sits next to the rule
|
|
160
|
+
* walker that produces its message body.
|
|
161
|
+
*/
|
|
162
|
+
export function assertInlineAgentSpecPreWire(spec) {
|
|
163
|
+
const issues = collectInlineAgentSpecPreWireIssues(spec);
|
|
164
|
+
if (issues.length === 0)
|
|
165
|
+
return;
|
|
166
|
+
throw new QodoInlineAgentValidationError(issues);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Fill in the wire-canonical `kind: 'AgentSpec'` discriminator when the
|
|
170
|
+
* consumer's spec omits it. `InlineAgentSpec.kind` is optional in TypeScript
|
|
171
|
+
* — required server-side, but the SDK is permissive at the type level so
|
|
172
|
+
* consumers can write `{ apiVersion, instructions, model }` literally.
|
|
173
|
+
* Both `task.start` dispatch and `specs.validate` need the discriminator
|
|
174
|
+
* on the wire, so this normalizer runs at every wire boundary.
|
|
175
|
+
*
|
|
176
|
+
* Doesn't mutate the consumer's input object — returns the same reference if
|
|
177
|
+
* `kind` is already set so the spread cost is paid only when needed.
|
|
178
|
+
*/
|
|
179
|
+
export function normalizeInlineAgentSpec(spec) {
|
|
180
|
+
if (spec.kind === 'AgentSpec')
|
|
181
|
+
return spec;
|
|
182
|
+
return { ...spec, kind: 'AgentSpec' };
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=agentSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSpec.js","sourceRoot":"","sources":["../../src/qar/agentSpec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-internal lifecycle events surfaced on the canonical `TaskEvent` iterator
|
|
3
|
+
* and on `client.receive()`.
|
|
4
|
+
*
|
|
5
|
+
* These are NOT QAR envelope kinds — the `qar.client.*` namespace makes them
|
|
6
|
+
* unambiguously SDK-side so a stray server-side discriminant can never collide
|
|
7
|
+
* with one. They have no `message_id`, no `session_id`, no `payload` shape.
|
|
8
|
+
*
|
|
9
|
+
* The current set: `qar.client.reconnecting` / `qar.client.reconnected`
|
|
10
|
+
* / `qar.client.reconnect_failed` for transport-loss recovery, plus
|
|
11
|
+
* `qar.client.cancel_acked` synthesized from inbound `task.canceling`
|
|
12
|
+
* envelopes so consumers can render the "cancel acknowledged, awaiting
|
|
13
|
+
* terminal" intermediate state without expanding the `TaskEvent`
|
|
14
|
+
* switch. `kind` is the stable forward-compatible discriminator.
|
|
15
|
+
*/
|
|
16
|
+
import type { TaskId } from './ids.js';
|
|
17
|
+
/** A reconnect attempt is about to fire. Emitted before the backoff sleep. */
|
|
18
|
+
export interface ClientReconnectingEvent {
|
|
19
|
+
readonly kind: 'qar.client.reconnecting';
|
|
20
|
+
/** 1-based attempt counter — `1` is the first retry after the drop. */
|
|
21
|
+
readonly attempt: number;
|
|
22
|
+
/** Delay in milliseconds before this attempt fires. */
|
|
23
|
+
readonly delayMs: number;
|
|
24
|
+
/** Best-effort cause describing why we're reconnecting (close code, error message). */
|
|
25
|
+
readonly cause?: string;
|
|
26
|
+
}
|
|
27
|
+
/** A reconnect attempt succeeded. Emitted before any replayed envelopes flow. */
|
|
28
|
+
export interface ClientReconnectedEvent {
|
|
29
|
+
readonly kind: 'qar.client.reconnected';
|
|
30
|
+
/** 1-based attempt counter that succeeded. */
|
|
31
|
+
readonly attempt: number;
|
|
32
|
+
}
|
|
33
|
+
/** Reconnect attempts exhausted. Subscriptions error out after this. */
|
|
34
|
+
export interface ClientReconnectFailedEvent {
|
|
35
|
+
readonly kind: 'qar.client.reconnect_failed';
|
|
36
|
+
/** Total attempts made before giving up — same as `ClientReconnectOptions.maxAttempts`. */
|
|
37
|
+
readonly attempts: number;
|
|
38
|
+
/** Best-effort message from the last failed attempt. */
|
|
39
|
+
readonly lastError?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Cancellation acknowledged by the SDK.
|
|
43
|
+
*
|
|
44
|
+
* Synthesized one-to-one from an inbound `task.canceling` envelope on the
|
|
45
|
+
* wire — the SDK converts the envelope's payload fields into this client
|
|
46
|
+
* event before broadcasting to subscriptions. Surfaces on the canonical
|
|
47
|
+
* `AsyncIterable<TaskEvent>` so a consumer waiting on the iterator can
|
|
48
|
+
* render the "cancel ack received, waiting for terminal `task.done`"
|
|
49
|
+
* intermediate state.
|
|
50
|
+
*
|
|
51
|
+
* Informational only — terminal status still arrives as `task.done
|
|
52
|
+
* { status: 'canceled' | 'failed' }`. Do not branch business logic on
|
|
53
|
+
* the pod identifiers; they're best-effort and may change between
|
|
54
|
+
* deployments.
|
|
55
|
+
*
|
|
56
|
+
* Surfaced as a synthetic client event rather than a first-class
|
|
57
|
+
* `TaskEvent` variant — keeps the consumer `switch (event.kind)`
|
|
58
|
+
* surface stable; consumers who don't care about cancel-ack just don't
|
|
59
|
+
* add the case.
|
|
60
|
+
*/
|
|
61
|
+
export interface ClientCancelAckedEvent {
|
|
62
|
+
readonly kind: 'qar.client.cancel_acked';
|
|
63
|
+
/** Task whose cancellation was acknowledged (always populated). */
|
|
64
|
+
readonly task_id: TaskId;
|
|
65
|
+
/** Pod that initially received the `task.cancel`. Opaque; advisory. */
|
|
66
|
+
readonly receivedByPod?: string;
|
|
67
|
+
/** Pod that owns the task right now. Opaque; advisory. */
|
|
68
|
+
readonly owningPod?: string;
|
|
69
|
+
/** Echo of the original `TaskCancelPayload.reason`, if any. */
|
|
70
|
+
readonly cancelReason?: string;
|
|
71
|
+
/** Best-effort SLO hint for time until terminal `task.done` arrives. Advisory. */
|
|
72
|
+
readonly expectedTerminalWithinS?: number;
|
|
73
|
+
}
|
|
74
|
+
export type ClientEvent = ClientReconnectingEvent | ClientReconnectedEvent | ClientReconnectFailedEvent | ClientCancelAckedEvent;
|
|
75
|
+
/** Discriminator literal type covering every `ClientEvent` variant. */
|
|
76
|
+
export type ClientEventKind = ClientEvent['kind'];
|
|
77
|
+
/**
|
|
78
|
+
* Type guard: `true` for `qar.client.*` synthetic events.
|
|
79
|
+
*
|
|
80
|
+
* Accepts `unknown` so JS callers (or callers feeding raw deserialized JSON)
|
|
81
|
+
* can drop arbitrary values in without crashing on `null` / `undefined` /
|
|
82
|
+
* primitives. Only objects with a string `kind` matching one of the
|
|
83
|
+
* synthetic kinds return `true`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isClientEvent(value: unknown): value is ClientEvent;
|
|
86
|
+
//# sourceMappingURL=clientEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientEvents.d.ts","sourceRoot":"","sources":["../../src/qar/clientEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wEAAwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,MAAM,WAAW,GACnB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,GAC1B,sBAAsB,CAAC;AAE3B,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AASlD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAIlE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-internal lifecycle events surfaced on the canonical `TaskEvent` iterator
|
|
3
|
+
* and on `client.receive()`.
|
|
4
|
+
*
|
|
5
|
+
* These are NOT QAR envelope kinds — the `qar.client.*` namespace makes them
|
|
6
|
+
* unambiguously SDK-side so a stray server-side discriminant can never collide
|
|
7
|
+
* with one. They have no `message_id`, no `session_id`, no `payload` shape.
|
|
8
|
+
*
|
|
9
|
+
* The current set: `qar.client.reconnecting` / `qar.client.reconnected`
|
|
10
|
+
* / `qar.client.reconnect_failed` for transport-loss recovery, plus
|
|
11
|
+
* `qar.client.cancel_acked` synthesized from inbound `task.canceling`
|
|
12
|
+
* envelopes so consumers can render the "cancel acknowledged, awaiting
|
|
13
|
+
* terminal" intermediate state without expanding the `TaskEvent`
|
|
14
|
+
* switch. `kind` is the stable forward-compatible discriminator.
|
|
15
|
+
*/
|
|
16
|
+
const CLIENT_EVENT_KINDS = new Set([
|
|
17
|
+
'qar.client.reconnecting',
|
|
18
|
+
'qar.client.reconnected',
|
|
19
|
+
'qar.client.reconnect_failed',
|
|
20
|
+
'qar.client.cancel_acked',
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Type guard: `true` for `qar.client.*` synthetic events.
|
|
24
|
+
*
|
|
25
|
+
* Accepts `unknown` so JS callers (or callers feeding raw deserialized JSON)
|
|
26
|
+
* can drop arbitrary values in without crashing on `null` / `undefined` /
|
|
27
|
+
* primitives. Only objects with a string `kind` matching one of the
|
|
28
|
+
* synthetic kinds return `true`.
|
|
29
|
+
*/
|
|
30
|
+
export function isClientEvent(value) {
|
|
31
|
+
if (typeof value !== 'object' || value === null)
|
|
32
|
+
return false;
|
|
33
|
+
const kind = value.kind;
|
|
34
|
+
return typeof kind === 'string' && CLIENT_EVENT_KINDS.has(kind);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=clientEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientEvents.js","sourceRoot":"","sources":["../../src/qar/clientEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0EH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAkB;IACvE,yBAAyB;IACzB,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;CAC1B,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,IAAI,GAAI,KAAqC,CAAC,IAAI,CAAC;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QAR envelope discriminated union — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Backed by the codegen output in `./generated/envelope.ts` (regenerated from
|
|
5
|
+
* `schemas/qar/envelope.json` via `npm run codegen:qar`). This file is the
|
|
6
|
+
* curated overlay: it re-exports the codegen variants under both their
|
|
7
|
+
* QAR-native names (`TaskStart`, `TaskContinue`, …) and the SDK-2.0
|
|
8
|
+
* `…Envelope` aliases, and it sharpens the codegen output where the wire
|
|
9
|
+
* is stricter than the schema can express:
|
|
10
|
+
*
|
|
11
|
+
* - `kind` is required (Pydantic exports it with a default, which makes
|
|
12
|
+
* json-schema-to-typescript emit it optional). On the wire it is always
|
|
13
|
+
* present and acts as the discriminator.
|
|
14
|
+
* - `envelope_version` is the literal `1` (same Pydantic-default reason).
|
|
15
|
+
* - `message_id` / `session_id` / `parent_message_id` are branded UUID
|
|
16
|
+
* strings (`MessageId` / `SessionId`) so callers cannot accidentally
|
|
17
|
+
* swap them at API boundaries — a property the JSON Schema can't
|
|
18
|
+
* express but the SDK relies on.
|
|
19
|
+
*
|
|
20
|
+
* The direction whitelists below stay hand-written: they're an SDK-side
|
|
21
|
+
* projection of QAR's `protocol/envelopes.py` taxonomy.
|
|
22
|
+
*/
|
|
23
|
+
import type { TaskStart, TaskContinue, TaskCancel, TaskResubscribe, TaskDelta, TaskDone, ToolRequest, ToolResponse, StateUpdate, AgentSpawn, BulletinPost, ArtifactAdd, FlowPause, FlowResume, ErrorEnv } from './generated/envelope.js';
|
|
24
|
+
import type { MessageId, SessionId } from './ids.js';
|
|
25
|
+
import type { TaskCancelingPayload, TaskForceResumePayload, TaskForceResumedPayload, TaskStartedPayload, TaskStartPayload, ToolRequestPayload, ToolResponsePayload } from './payloads.js';
|
|
26
|
+
/** Envelope-version literal. QAR bumps this on any breaking schema change. */
|
|
27
|
+
export type EnvelopeVersion = 1;
|
|
28
|
+
/**
|
|
29
|
+
* Sharpens a codegen ONGOING envelope variant: marks `kind` +
|
|
30
|
+
* `envelope_version` required, brands the UUID id fields. Generic so we
|
|
31
|
+
* apply it once per variant without duplicating the field list.
|
|
32
|
+
*
|
|
33
|
+
* Corresponds to `_OngoingEnvelopeBase` — every kind EXCEPT
|
|
34
|
+
* `task.start` carries `session_id` on the wire. The companion
|
|
35
|
+
* {@link SharpenStart} is the `_StartEnvelopeBase` shape (no
|
|
36
|
+
* `session_id`); the SDK's start encoder strips the field at emit-time,
|
|
37
|
+
* but the public wire overlay must mirror the omission so raw senders
|
|
38
|
+
* via {@link QodoClient.send} can't compile an invalid `task.start`.
|
|
39
|
+
*/
|
|
40
|
+
type Sharpen<T extends {
|
|
41
|
+
kind?: string;
|
|
42
|
+
}> = Omit<T, 'kind' | 'envelope_version' | 'message_id' | 'session_id' | 'parent_message_id'> & {
|
|
43
|
+
readonly kind: NonNullable<T['kind']>;
|
|
44
|
+
readonly envelope_version: EnvelopeVersion;
|
|
45
|
+
readonly message_id: MessageId;
|
|
46
|
+
readonly session_id: SessionId;
|
|
47
|
+
readonly parent_message_id?: MessageId | null;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Sharpens a `_StartEnvelopeBase` codegen variant — same as
|
|
51
|
+
* {@link Sharpen} but WITHOUT `session_id`. The `task.start` envelope
|
|
52
|
+
* does not carry `session_id` on the wire; the server derives it from
|
|
53
|
+
* `(tenant_id, payload.idempotency_key)` during the ingress
|
|
54
|
+
* bind-and-derive phase. QAR's Pydantic model has `extra="forbid"`, so
|
|
55
|
+
* any stray `session_id` on a `task.start` would fail server-side
|
|
56
|
+
* parsing.
|
|
57
|
+
*/
|
|
58
|
+
type SharpenStart<T extends {
|
|
59
|
+
kind?: string;
|
|
60
|
+
}> = Omit<T, 'kind' | 'envelope_version' | 'message_id' | 'session_id' | 'parent_message_id'> & {
|
|
61
|
+
readonly kind: NonNullable<T['kind']>;
|
|
62
|
+
readonly envelope_version: EnvelopeVersion;
|
|
63
|
+
readonly message_id: MessageId;
|
|
64
|
+
readonly parent_message_id?: MessageId | null;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* `task.start` envelope — `payload` is the discriminated union
|
|
68
|
+
* (`{ agent_id, ... } | { agent, ... } | { graph, ... }`) rather than
|
|
69
|
+
* the pre-amendment single-variant codegen shape. The generated
|
|
70
|
+
* `TaskStart.payload` still carries the original
|
|
71
|
+
* `{ agent_id, input, skill? }` shape; the `Omit<…, 'payload'> & { payload:
|
|
72
|
+
* TaskStartPayload }` swap masks it until QAR's schema export catches
|
|
73
|
+
* up.
|
|
74
|
+
*
|
|
75
|
+
* Built on {@link SharpenStart} (not {@link Sharpen}) so the type has
|
|
76
|
+
* NO `session_id` field — `task.start` is QAR's `_StartEnvelopeBase`,
|
|
77
|
+
* and the server-side `extra="forbid"` Pydantic config rejects a stray
|
|
78
|
+
* `session_id`. The SDK's encoder (`Connection.sendEnvelope` for
|
|
79
|
+
* `kind === 'task.start'`) strips the field at emit-time; the type
|
|
80
|
+
* narrowing here ensures raw senders via {@link QodoClient.send} can't
|
|
81
|
+
* compile an invalid envelope either.
|
|
82
|
+
*/
|
|
83
|
+
export type TaskStartEnvelope = Omit<SharpenStart<TaskStart>, 'payload'> & {
|
|
84
|
+
readonly payload: TaskStartPayload;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* `task.started` envelope — admission-commit ack.
|
|
88
|
+
*
|
|
89
|
+
* Hand-rolled `EnvelopeBase + { kind, payload }` shape because the
|
|
90
|
+
* variant is not yet in the vendored schema bundle. Same pattern the
|
|
91
|
+
* parallel-batched tool envelopes use while their schema bump is in
|
|
92
|
+
* flight; when the schema is bumped and `npm run codegen:qar`
|
|
93
|
+
* regenerates `./generated/envelope.ts`, fold this back into a
|
|
94
|
+
* `Sharpen<>` over the codegen variant.
|
|
95
|
+
*
|
|
96
|
+
* Per the QAR wire `_OngoingEnvelopeBase.parent_message_id` narrowing
|
|
97
|
+
* for this kind: the field is **required and non-nullable** — it equals
|
|
98
|
+
* the originating `task.start.message_id` and the SDK uses it for
|
|
99
|
+
* correlation. The SDK's `parseEnvelope` does NOT enforce the
|
|
100
|
+
* narrowing (the codegen base allows nullable), but the routing logic
|
|
101
|
+
* in `TaskSubscription.consider` matches on `parent_message_id` so a
|
|
102
|
+
* spec-violating server emit with `parent_message_id = null` would fail
|
|
103
|
+
* to route — surfaces as an absent ack from the consumer's POV (the
|
|
104
|
+
* `sessionId` promise never resolves), not a silent miss.
|
|
105
|
+
*/
|
|
106
|
+
export interface TaskStartedEnvelope extends EnvelopeBase {
|
|
107
|
+
readonly kind: 'task.started';
|
|
108
|
+
readonly parent_message_id: MessageId;
|
|
109
|
+
readonly payload: TaskStartedPayload;
|
|
110
|
+
}
|
|
111
|
+
export type TaskContinueEnvelope = Sharpen<TaskContinue>;
|
|
112
|
+
export type TaskCancelEnvelope = Sharpen<TaskCancel>;
|
|
113
|
+
/**
|
|
114
|
+
* `task.canceling` envelope — cancel-ack surface.
|
|
115
|
+
*
|
|
116
|
+
* Carried as a hand-rolled `EnvelopeBase + { kind, payload }` shape
|
|
117
|
+
* because the variant is not yet in the vendored schema bundle. When
|
|
118
|
+
* the schema is bumped and `npm run codegen:qar` regenerates
|
|
119
|
+
* `./generated/envelope.ts`, fold this back into a `Sharpen<>` over the
|
|
120
|
+
* codegen variant.
|
|
121
|
+
*/
|
|
122
|
+
export interface TaskCancelingEnvelope extends EnvelopeBase {
|
|
123
|
+
readonly kind: 'task.canceling';
|
|
124
|
+
readonly payload: TaskCancelingPayload;
|
|
125
|
+
}
|
|
126
|
+
export type TaskResubscribeEnvelope = Sharpen<TaskResubscribe>;
|
|
127
|
+
export type TaskDeltaEnvelope = Sharpen<TaskDelta>;
|
|
128
|
+
export type TaskDoneEnvelope = Sharpen<TaskDone>;
|
|
129
|
+
/**
|
|
130
|
+
* `task.forceResume` envelope — stuck-session recovery primitive (C→S).
|
|
131
|
+
* Hand-rolled because the variant is not yet in the vendored schema
|
|
132
|
+
* bundle; same pattern `task.started` uses.
|
|
133
|
+
*
|
|
134
|
+
* Built on {@link SharpenStart} (no `session_id` on the wire) because
|
|
135
|
+
* forceResume operates on the consumer's `idempotency_key` rather than
|
|
136
|
+
* an already-bound session UUID — the consumer is typically recovering
|
|
137
|
+
* a session whose UUID it has lost (process restart). QAR derives the
|
|
138
|
+
* session UUID server-side via the same `uuidv5(QAR_NS_V1, tenant_id +
|
|
139
|
+
* ":" + idempotency_key)` derivation as `task.start` admission.
|
|
140
|
+
*/
|
|
141
|
+
export interface TaskForceResumeEnvelope extends Omit<EnvelopeBase, 'session_id'> {
|
|
142
|
+
readonly kind: 'task.forceResume';
|
|
143
|
+
readonly payload: TaskForceResumePayload;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* `task.force_resumed` envelope — ack for `task.forceResume` (S→C).
|
|
147
|
+
*
|
|
148
|
+
* Carries the derived `session_id` (so the SDK can pin the session for
|
|
149
|
+
* subsequent `task.continue` calls) plus the payload's `task_id` +
|
|
150
|
+
* `state`. Hand-rolled mirror of `task.started`.
|
|
151
|
+
*/
|
|
152
|
+
export interface TaskForceResumedEnvelope extends EnvelopeBase {
|
|
153
|
+
readonly kind: 'task.force_resumed';
|
|
154
|
+
readonly parent_message_id: MessageId;
|
|
155
|
+
readonly payload: TaskForceResumedPayload;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* `tool.request` envelope — `payload` is the parallel-batched overlay
|
|
159
|
+
* (`calls: ToolCall[]`, required `node_name`) rather than the
|
|
160
|
+
* pre-amendment codegen shape. Until the schema is bumped, the
|
|
161
|
+
* generated `ToolRequest['payload']` is still the single-call form;
|
|
162
|
+
* the `Omit<…, 'payload'> & { payload: ToolRequestPayload }` swap masks
|
|
163
|
+
* it.
|
|
164
|
+
*/
|
|
165
|
+
export type ToolRequestEnvelope = Omit<Sharpen<ToolRequest>, 'payload'> & {
|
|
166
|
+
readonly payload: ToolRequestPayload;
|
|
167
|
+
};
|
|
168
|
+
/** `tool.response` envelope — `payload` is the parallel-batched overlay. */
|
|
169
|
+
export type ToolResponseEnvelope = Omit<Sharpen<ToolResponse>, 'payload'> & {
|
|
170
|
+
readonly payload: ToolResponsePayload;
|
|
171
|
+
};
|
|
172
|
+
export type StateUpdateEnvelope = Sharpen<StateUpdate>;
|
|
173
|
+
export type AgentSpawnEnvelope = Sharpen<AgentSpawn>;
|
|
174
|
+
export type BulletinPostEnvelope = Sharpen<BulletinPost>;
|
|
175
|
+
export type ArtifactAddEnvelope = Sharpen<ArtifactAdd>;
|
|
176
|
+
export type FlowPauseEnvelope = Sharpen<FlowPause>;
|
|
177
|
+
export type FlowResumeEnvelope = Sharpen<FlowResume>;
|
|
178
|
+
export type ErrorEnvelope = Sharpen<ErrorEnv>;
|
|
179
|
+
/**
|
|
180
|
+
* Common fields on every envelope. Derived from the shape `Sharpen` produces
|
|
181
|
+
* (intersection of required base fields). Hand-written declaration so the
|
|
182
|
+
* exported interface is grokable in API docs without chasing the helper.
|
|
183
|
+
*/
|
|
184
|
+
export interface EnvelopeBase {
|
|
185
|
+
readonly envelope_version: EnvelopeVersion;
|
|
186
|
+
readonly message_id: MessageId;
|
|
187
|
+
readonly parent_message_id?: MessageId | null;
|
|
188
|
+
readonly session_id: SessionId;
|
|
189
|
+
readonly trace_context: import('./generated/envelope.js').TraceContext;
|
|
190
|
+
readonly ts: string;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The 15-kind envelope discriminated union. Every QAR-side wire message lands here.
|
|
194
|
+
*
|
|
195
|
+
* Use `switch (env.kind)` to narrow; `kind` is the single source of truth (no
|
|
196
|
+
* payload-level discriminator, no two-level nesting).
|
|
197
|
+
*/
|
|
198
|
+
export type Envelope = TaskStartEnvelope | TaskStartedEnvelope | TaskContinueEnvelope | TaskCancelEnvelope | TaskCancelingEnvelope | TaskResubscribeEnvelope | TaskDeltaEnvelope | TaskDoneEnvelope | TaskForceResumeEnvelope | TaskForceResumedEnvelope | ToolRequestEnvelope | ToolResponseEnvelope | StateUpdateEnvelope | AgentSpawnEnvelope | BulletinPostEnvelope | ArtifactAddEnvelope | FlowPauseEnvelope | FlowResumeEnvelope | ErrorEnvelope;
|
|
199
|
+
/** All envelope `kind` values, as a string-literal union. */
|
|
200
|
+
export type EnvelopeKind = Envelope['kind'];
|
|
201
|
+
/** Direction whitelists — kept in sync with QAR's `protocol/envelopes.py` taxonomy. */
|
|
202
|
+
export declare const CLIENT_TO_SERVER_KINDS: readonly ["task.start", "task.continue", "task.cancel", "task.resubscribe", "task.forceResume", "tool.response"];
|
|
203
|
+
export declare const SERVER_TO_CLIENT_KINDS: readonly ["task.started", "task.delta", "task.done", "task.canceling", "task.force_resumed", "tool.request", "agent.spawn", "bulletin.post", "flow.pause", "flow.resume", "error"];
|
|
204
|
+
/**
|
|
205
|
+
* Kinds the wire allows in both directions. Mirrors QAR's
|
|
206
|
+
* `protocol/envelopes.BIDIRECTIONAL_KINDS = {"state.update", "artifact.add"}`.
|
|
207
|
+
*
|
|
208
|
+
* **`artifact.add`** is on the QAR-side bidirectional whitelist so a future
|
|
209
|
+
* SDK client-emitted artifact path (a tool handler attaching a file, a skill
|
|
210
|
+
* pushing a structured record) can land without a wire-contract change. The
|
|
211
|
+
* SDK currently does not emit `artifact.add` — `ArtifactsClient` is
|
|
212
|
+
* observer-only and the outbound-payload union (`OutboundPayload` in
|
|
213
|
+
* `connection.ts`) does not include `artifact.add`. Aligning the taxonomy
|
|
214
|
+
* here matches the cross-repo wire contract (per the 2026-05-13 retro) so
|
|
215
|
+
* the SDK never rejects an inbound `artifact.add` for direction reasons.
|
|
216
|
+
* Same precedent as `state.update`: bidirectional on the wire, observer-only
|
|
217
|
+
* on the public surface today.
|
|
218
|
+
*
|
|
219
|
+
* If you're auditing where SDK-side emission lands: ArtifactsClient.onArtifact
|
|
220
|
+
* is the read path; emit lives in a future ticket.
|
|
221
|
+
*/
|
|
222
|
+
export declare const BIDIRECTIONAL_KINDS: readonly ["state.update", "artifact.add"];
|
|
223
|
+
export type ClientToServerKind = (typeof CLIENT_TO_SERVER_KINDS)[number];
|
|
224
|
+
export type ServerToClientKind = (typeof SERVER_TO_CLIENT_KINDS)[number];
|
|
225
|
+
export type BidirectionalKind = (typeof BIDIRECTIONAL_KINDS)[number];
|
|
226
|
+
export {};
|
|
227
|
+
//# sourceMappingURL=envelopes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelopes.d.ts","sourceRoot":"","sources":["../../src/qar/envelopes.ts"],"names":[],"mappings":"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"}
|