@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,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `BulletinClient` — observer for QAR's `bulletin.post` envelopes.
|
|
3
|
+
*
|
|
4
|
+
* Bulletins are the wire shape behind multi-agent coordination: agents
|
|
5
|
+
* publish findings on a shared board so peers can react without coupling
|
|
6
|
+
* directly. The SDK side is read-only — consumers (Studio, dashboards) opt
|
|
7
|
+
* into the stream; agents do not push bulletins from the client.
|
|
8
|
+
*
|
|
9
|
+
* The payload is `JsonObject`-shaped (the upstream type tightens once
|
|
10
|
+
* QAR's bulletin work tightens). The filter helper below matches
|
|
11
|
+
* against the two well-known fields QAR's runtime emits today
|
|
12
|
+
* (`topic`, `agent_id`); they're optional and best-effort — a bulletin
|
|
13
|
+
* lacking the field never matches the filter.
|
|
14
|
+
*/
|
|
15
|
+
import type { BulletinPostEnvelope } from '../qar/envelopes.js';
|
|
16
|
+
import { KindObserverClient } from './observers.js';
|
|
17
|
+
import type { EventSubscription } from './observers.js';
|
|
18
|
+
/**
|
|
19
|
+
* Best-effort filter for `bulletin.post` envelopes. Each field, when set,
|
|
20
|
+
* must equal the same-named field in the envelope payload. Bulletins whose
|
|
21
|
+
* payload omits a filtered field do not match.
|
|
22
|
+
*/
|
|
23
|
+
export interface BulletinFilter {
|
|
24
|
+
/** Match against `payload.topic` (QAR convention for board partitioning). */
|
|
25
|
+
readonly topic?: string;
|
|
26
|
+
/** Match against `payload.agent_id` (the agent that posted the finding). */
|
|
27
|
+
readonly agent_id?: string;
|
|
28
|
+
}
|
|
29
|
+
export type BulletinHandler = (env: BulletinPostEnvelope) => void;
|
|
30
|
+
export declare class BulletinClient extends KindObserverClient<'bulletin.post', BulletinPostEnvelope> {
|
|
31
|
+
/**
|
|
32
|
+
* Register a handler invoked for every inbound `bulletin.post` envelope.
|
|
33
|
+
*
|
|
34
|
+
* Multiple handlers per client are allowed; they fire in registration order.
|
|
35
|
+
* A handler that throws is logged and the dispatch loop continues — the WS
|
|
36
|
+
* stream is not affected. The returned `EventSubscription`'s `close()`
|
|
37
|
+
* deregisters the handler.
|
|
38
|
+
*
|
|
39
|
+
* The two-arg overload accepts a `BulletinFilter`; only envelopes whose
|
|
40
|
+
* payload matches every set field invoke the handler.
|
|
41
|
+
*/
|
|
42
|
+
onFinding(handler: BulletinHandler): EventSubscription;
|
|
43
|
+
onFinding(filter: BulletinFilter, handler: BulletinHandler): EventSubscription;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=BulletinClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulletinClient.d.ts","sourceRoot":"","sources":["../../src/client/BulletinClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAElE,qBAAa,cAAe,SAAQ,kBAAkB,CAAC,eAAe,EAAE,oBAAoB,CAAC;IAM3F;;;;;;;;;;OAUG;IACI,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,iBAAiB;CActF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `BulletinClient` — observer for QAR's `bulletin.post` envelopes.
|
|
3
|
+
*
|
|
4
|
+
* Bulletins are the wire shape behind multi-agent coordination: agents
|
|
5
|
+
* publish findings on a shared board so peers can react without coupling
|
|
6
|
+
* directly. The SDK side is read-only — consumers (Studio, dashboards) opt
|
|
7
|
+
* into the stream; agents do not push bulletins from the client.
|
|
8
|
+
*
|
|
9
|
+
* The payload is `JsonObject`-shaped (the upstream type tightens once
|
|
10
|
+
* QAR's bulletin work tightens). The filter helper below matches
|
|
11
|
+
* against the two well-known fields QAR's runtime emits today
|
|
12
|
+
* (`topic`, `agent_id`); they're optional and best-effort — a bulletin
|
|
13
|
+
* lacking the field never matches the filter.
|
|
14
|
+
*/
|
|
15
|
+
import { KindObserverClient } from './observers.js';
|
|
16
|
+
export class BulletinClient extends KindObserverClient {
|
|
17
|
+
/** @internal — instantiated by `QodoClient`. */
|
|
18
|
+
constructor() {
|
|
19
|
+
super('bulletin.post');
|
|
20
|
+
}
|
|
21
|
+
onFinding(filterOrHandler, maybeHandler) {
|
|
22
|
+
if (typeof filterOrHandler === 'function') {
|
|
23
|
+
return this.register(filterOrHandler);
|
|
24
|
+
}
|
|
25
|
+
if (maybeHandler === undefined) {
|
|
26
|
+
throw new Error('BulletinClient.onFinding: handler is required when a filter is supplied');
|
|
27
|
+
}
|
|
28
|
+
const filter = filterOrHandler;
|
|
29
|
+
return this.register(maybeHandler, (env) => bulletinMatches(env, filter));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function bulletinMatches(env, filter) {
|
|
33
|
+
// Filter helpers are best-effort — a malformed payload (null, primitive,
|
|
34
|
+
// array) or a hostile property getter must behave like a non-match rather
|
|
35
|
+
// than throwing inside the predicate and getting logged as a handler error.
|
|
36
|
+
try {
|
|
37
|
+
const payload = env.payload;
|
|
38
|
+
if (payload === null || typeof payload !== 'object')
|
|
39
|
+
return false;
|
|
40
|
+
const obj = payload;
|
|
41
|
+
if (filter.topic !== undefined && obj.topic !== filter.topic)
|
|
42
|
+
return false;
|
|
43
|
+
if (filter.agent_id !== undefined && obj.agent_id !== filter.agent_id)
|
|
44
|
+
return false;
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=BulletinClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulletinClient.js","sourceRoot":"","sources":["../../src/client/BulletinClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAiBpD,MAAM,OAAO,cAAe,SAAQ,kBAAyD;IAC3F,gDAAgD;IAChD;QACE,KAAK,CAAC,eAAe,CAAC,CAAC;IACzB,CAAC;IAeM,SAAS,CACd,eAAiD,EACjD,YAA8B;QAE9B,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,SAAS,eAAe,CAAC,GAAyB,EAAE,MAAsB;IACxE,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAkB,CAAC;QACvC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClE,MAAM,GAAG,GAAG,OAAkC,CAAC;QAC/C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC3E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `InfoClient` — backed by `GET /v1/info` and `GET /v1/auth/me` on QAR.
|
|
3
|
+
*
|
|
4
|
+
* Both surfaces are HTTP-not-WS: the consumer can call them before opening a
|
|
5
|
+
* WebSocket (e.g. to discover the bootstrap document, or to confirm identity
|
|
6
|
+
* before kicking off a task). The implementation reuses the bearer resolved
|
|
7
|
+
* by `AuthProvider` so Studio / IDE-extension consumers don't have to thread
|
|
8
|
+
* the token themselves.
|
|
9
|
+
*
|
|
10
|
+
* No caching at this layer — consumers that want it (Studio's tool inventory
|
|
11
|
+
* panel) wrap the call themselves. The wire-level rate-limit policy lives on
|
|
12
|
+
* `QARInfo.rate_limits` as a per-route map.
|
|
13
|
+
*/
|
|
14
|
+
import type { QARInfo, LeanPrincipal } from '../qar/info.js';
|
|
15
|
+
export declare class InfoClient {
|
|
16
|
+
private readonly baseUrl;
|
|
17
|
+
private readonly allowInsecureTransport;
|
|
18
|
+
private readonly authProvider;
|
|
19
|
+
private readonly extraHeaders;
|
|
20
|
+
private readonly fetchImpl;
|
|
21
|
+
private cachedHttpBase;
|
|
22
|
+
/**
|
|
23
|
+
* Fetch the bootstrap document. Calls `GET <baseUrl>/v1/info`.
|
|
24
|
+
*
|
|
25
|
+
* The result is intentionally not cached at this layer — consumers who want
|
|
26
|
+
* caching wrap the call themselves. Rate-limit data lives on
|
|
27
|
+
* `QARInfo.rate_limits` as a per-route map.
|
|
28
|
+
*
|
|
29
|
+
* Throws `QodoAuthError` on 401/403 (with the auth source named in the
|
|
30
|
+
* message), and a plain `Error` on any other non-2xx response.
|
|
31
|
+
*/
|
|
32
|
+
get(): Promise<QARInfo>;
|
|
33
|
+
/**
|
|
34
|
+
* Fetch the resolved principal via `GET <baseUrl>/v1/auth/me`.
|
|
35
|
+
*
|
|
36
|
+
* Bearer-token auth flows here unchanged from 1.x — the same path, the same
|
|
37
|
+
* `LeanPrincipal` shape. Throws `QodoAuthError` on 401/403.
|
|
38
|
+
*/
|
|
39
|
+
me(): Promise<LeanPrincipal>;
|
|
40
|
+
private request;
|
|
41
|
+
/**
|
|
42
|
+
* URL parsing is lazy on purpose: `QodoClient.validateOptions` only checks
|
|
43
|
+
* `baseUrl` is a non-empty string. Eager derivation would change behavior
|
|
44
|
+
* for callers who construct a client with an invalid scheme but never call
|
|
45
|
+
* any HTTP method. Cache the result so repeated calls don't re-parse.
|
|
46
|
+
*/
|
|
47
|
+
private requireHttpBase;
|
|
48
|
+
private static readBodySafely;
|
|
49
|
+
/**
|
|
50
|
+
* Map the consumer-supplied `baseUrl` (typically `https://qar.qodo.ai` or
|
|
51
|
+
* `wss://qar.qodo.ai`) onto the HTTP origin used for `/v1/info` and
|
|
52
|
+
* `/v1/auth/me`. Symmetric with `QodoClient.deriveWsUrl`: trailing slashes
|
|
53
|
+
* are stripped, `wss://` → `https://`, `ws://` → `http://` (gated by
|
|
54
|
+
* `allowInsecureTransport`).
|
|
55
|
+
*/
|
|
56
|
+
private static deriveHttpBaseUrl;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=InfoClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfoClient.d.ts","sourceRoot":"","sources":["../../src/client/InfoClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAe7D,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,cAAc,CAAuB;IAW7C;;;;;;;;;OASG;IACU,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC;;;;;OAKG;IACU,EAAE,IAAI,OAAO,CAAC,aAAa,CAAC;YAI3B,OAAO;IAwBrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;mBASF,cAAc;IAUnC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAgCjC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `InfoClient` — backed by `GET /v1/info` and `GET /v1/auth/me` on QAR.
|
|
3
|
+
*
|
|
4
|
+
* Both surfaces are HTTP-not-WS: the consumer can call them before opening a
|
|
5
|
+
* WebSocket (e.g. to discover the bootstrap document, or to confirm identity
|
|
6
|
+
* before kicking off a task). The implementation reuses the bearer resolved
|
|
7
|
+
* by `AuthProvider` so Studio / IDE-extension consumers don't have to thread
|
|
8
|
+
* the token themselves.
|
|
9
|
+
*
|
|
10
|
+
* No caching at this layer — consumers that want it (Studio's tool inventory
|
|
11
|
+
* panel) wrap the call themselves. The wire-level rate-limit policy lives on
|
|
12
|
+
* `QARInfo.rate_limits` as a per-route map.
|
|
13
|
+
*/
|
|
14
|
+
import { QodoClientOptionsError } from './errors.js';
|
|
15
|
+
export class InfoClient {
|
|
16
|
+
baseUrl;
|
|
17
|
+
allowInsecureTransport;
|
|
18
|
+
authProvider;
|
|
19
|
+
extraHeaders;
|
|
20
|
+
fetchImpl;
|
|
21
|
+
cachedHttpBase = null;
|
|
22
|
+
/** @internal — constructed by `QodoClient`. */
|
|
23
|
+
constructor(deps) {
|
|
24
|
+
this.baseUrl = deps.baseUrl;
|
|
25
|
+
this.allowInsecureTransport = deps.allowInsecureTransport ?? false;
|
|
26
|
+
this.authProvider = deps.authProvider;
|
|
27
|
+
this.extraHeaders = deps.headers ?? {};
|
|
28
|
+
this.fetchImpl = deps.fetchImpl ?? ((input, init) => fetch(input, init));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fetch the bootstrap document. Calls `GET <baseUrl>/v1/info`.
|
|
32
|
+
*
|
|
33
|
+
* The result is intentionally not cached at this layer — consumers who want
|
|
34
|
+
* caching wrap the call themselves. Rate-limit data lives on
|
|
35
|
+
* `QARInfo.rate_limits` as a per-route map.
|
|
36
|
+
*
|
|
37
|
+
* Throws `QodoAuthError` on 401/403 (with the auth source named in the
|
|
38
|
+
* message), and a plain `Error` on any other non-2xx response.
|
|
39
|
+
*/
|
|
40
|
+
async get() {
|
|
41
|
+
return this.request('/v1/info');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fetch the resolved principal via `GET <baseUrl>/v1/auth/me`.
|
|
45
|
+
*
|
|
46
|
+
* Bearer-token auth flows here unchanged from 1.x — the same path, the same
|
|
47
|
+
* `LeanPrincipal` shape. Throws `QodoAuthError` on 401/403.
|
|
48
|
+
*/
|
|
49
|
+
async me() {
|
|
50
|
+
return this.request('/v1/auth/me');
|
|
51
|
+
}
|
|
52
|
+
async request(path) {
|
|
53
|
+
this.authProvider.validate();
|
|
54
|
+
const { token } = this.authProvider.getAuthConfig();
|
|
55
|
+
const url = `${this.requireHttpBase()}${path}`;
|
|
56
|
+
const response = await this.fetchImpl(url, {
|
|
57
|
+
method: 'GET',
|
|
58
|
+
headers: {
|
|
59
|
+
...this.extraHeaders,
|
|
60
|
+
Authorization: `Bearer ${token}`,
|
|
61
|
+
Accept: 'application/json',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
if (response.status === 401 || response.status === 403) {
|
|
65
|
+
this.authProvider.handle401Error();
|
|
66
|
+
}
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
const body = await InfoClient.readBodySafely(response);
|
|
69
|
+
throw new Error(`GET ${path} failed: ${response.status} ${response.statusText}${body ? ` — ${body}` : ''}`);
|
|
70
|
+
}
|
|
71
|
+
return (await response.json());
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* URL parsing is lazy on purpose: `QodoClient.validateOptions` only checks
|
|
75
|
+
* `baseUrl` is a non-empty string. Eager derivation would change behavior
|
|
76
|
+
* for callers who construct a client with an invalid scheme but never call
|
|
77
|
+
* any HTTP method. Cache the result so repeated calls don't re-parse.
|
|
78
|
+
*/
|
|
79
|
+
requireHttpBase() {
|
|
80
|
+
if (this.cachedHttpBase !== null)
|
|
81
|
+
return this.cachedHttpBase;
|
|
82
|
+
this.cachedHttpBase = InfoClient.deriveHttpBaseUrl(this.baseUrl, this.allowInsecureTransport);
|
|
83
|
+
return this.cachedHttpBase;
|
|
84
|
+
}
|
|
85
|
+
static async readBodySafely(response) {
|
|
86
|
+
try {
|
|
87
|
+
const text = await response.text();
|
|
88
|
+
return text.length > 512 ? `${text.slice(0, 512)}…` : text;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Body read errors are non-actionable here — caller already has status / statusText.
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Map the consumer-supplied `baseUrl` (typically `https://qar.qodo.ai` or
|
|
97
|
+
* `wss://qar.qodo.ai`) onto the HTTP origin used for `/v1/info` and
|
|
98
|
+
* `/v1/auth/me`. Symmetric with `QodoClient.deriveWsUrl`: trailing slashes
|
|
99
|
+
* are stripped, `wss://` → `https://`, `ws://` → `http://` (gated by
|
|
100
|
+
* `allowInsecureTransport`).
|
|
101
|
+
*/
|
|
102
|
+
static deriveHttpBaseUrl(baseUrl, allowInsecureTransport) {
|
|
103
|
+
let end = baseUrl.length;
|
|
104
|
+
while (end > 0 && baseUrl.charCodeAt(end - 1) === 0x2f /* '/' */) {
|
|
105
|
+
end -= 1;
|
|
106
|
+
}
|
|
107
|
+
const trimmed = baseUrl.slice(0, end);
|
|
108
|
+
let httpBase;
|
|
109
|
+
let insecure = false;
|
|
110
|
+
if (trimmed.startsWith('https://')) {
|
|
111
|
+
httpBase = trimmed;
|
|
112
|
+
}
|
|
113
|
+
else if (trimmed.startsWith('http://')) {
|
|
114
|
+
httpBase = trimmed;
|
|
115
|
+
insecure = true;
|
|
116
|
+
}
|
|
117
|
+
else if (trimmed.startsWith('wss://')) {
|
|
118
|
+
httpBase = `https://${trimmed.slice('wss://'.length)}`;
|
|
119
|
+
}
|
|
120
|
+
else if (trimmed.startsWith('ws://')) {
|
|
121
|
+
httpBase = `http://${trimmed.slice('ws://'.length)}`;
|
|
122
|
+
insecure = true;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
throw new QodoClientOptionsError(`ClientOptions.baseUrl must use http(s):// or ws(s)://; got "${baseUrl}"`);
|
|
126
|
+
}
|
|
127
|
+
if (insecure && allowInsecureTransport !== true) {
|
|
128
|
+
throw new QodoClientOptionsError(`ClientOptions.baseUrl uses an insecure scheme ("${baseUrl}") which would transmit ` +
|
|
129
|
+
`the bearer token in plaintext. Use https:// or wss:// in production, or set ` +
|
|
130
|
+
`allowInsecureTransport: true to opt in for local development.`);
|
|
131
|
+
}
|
|
132
|
+
return httpBase;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=InfoClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfoClient.js","sourceRoot":"","sources":["../../src/client/InfoClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `PipelineClient` — pipeline DSL surface, refactored against the SDK 2.0 task primitive.
|
|
3
|
+
*
|
|
4
|
+
* The pipeline DSL chains user lambdas that typically call
|
|
5
|
+
* `client.tasks.start(...)` under the hood. The 1.x pipeline runner
|
|
6
|
+
* (which wrapped `QodoSDK.run`) is gone.
|
|
7
|
+
*
|
|
8
|
+
* The DSL is intentionally pure orchestration — each step is a TypeScript async
|
|
9
|
+
* function. Steps that want to talk to QAR call `client.tasks.start(...)`
|
|
10
|
+
* (exposed on the step context) and await the result. No new wire shape;
|
|
11
|
+
* the pipeline runner is a state machine over a sequence of immutable
|
|
12
|
+
* entries.
|
|
13
|
+
*
|
|
14
|
+
* The builder is immutable on each chain call so consumers can fork a
|
|
15
|
+
* partial pipeline safely.
|
|
16
|
+
*/
|
|
17
|
+
import type { JsonObject } from '../qar/json.js';
|
|
18
|
+
import type { QodoClient } from './QodoClient.js';
|
|
19
|
+
/**
|
|
20
|
+
* One step in a pipeline. The closure receives a typed context carrying the
|
|
21
|
+
* accumulated state, the execution id, the step name, and the owning
|
|
22
|
+
* {@link QodoClient}. Returning a JSON-shaped object patches the state for
|
|
23
|
+
* downstream steps; returning `undefined` (or an empty object) leaves state
|
|
24
|
+
* unchanged.
|
|
25
|
+
*
|
|
26
|
+
* Strict typing on the return is deliberate: pipeline state is a public
|
|
27
|
+
* concept that consumer code inspects, so we don't widen to `any`.
|
|
28
|
+
*/
|
|
29
|
+
export type PipelineStepFn = (ctx: PipelineStepContext) => JsonObject | void | Promise<JsonObject | void>;
|
|
30
|
+
/** Context passed to each step's closure. */
|
|
31
|
+
export interface PipelineStepContext {
|
|
32
|
+
/** Accumulated state from prior steps. */
|
|
33
|
+
readonly state: JsonObject;
|
|
34
|
+
/** The pipeline's per-execution correlation id (UUIDv7-shaped). */
|
|
35
|
+
readonly executionId: string;
|
|
36
|
+
/** Step name, set by the builder. */
|
|
37
|
+
readonly stepName: string;
|
|
38
|
+
/**
|
|
39
|
+
* The {@link QodoClient} the pipeline was built from. Exposed so step
|
|
40
|
+
* closures can call `client.tasks.start(...)` (or any other sub-client)
|
|
41
|
+
* without closing over an external variable. Matches the 1.x DSL convention
|
|
42
|
+
* (`{ sdk, state }`).
|
|
43
|
+
*/
|
|
44
|
+
readonly client: QodoClient;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A gate predicate evaluated between steps. The return value is coerced with
|
|
48
|
+
* `Boolean(...)` — anything truthy continues the pipeline, anything falsy
|
|
49
|
+
* stops it. Sync or async.
|
|
50
|
+
*
|
|
51
|
+
* Widened past `boolean` so consumers can write the natural JS shape
|
|
52
|
+
* `gate(name, (s) => s.issues.length)` (a number) or
|
|
53
|
+
* `gate(name, (s) => s.issues)` (an array) without an extra `!!` or
|
|
54
|
+
* `=== true` cast.
|
|
55
|
+
*/
|
|
56
|
+
export type PipelineGateFn = (state: JsonObject) => unknown;
|
|
57
|
+
/**
|
|
58
|
+
* Per-step error strategy.
|
|
59
|
+
*
|
|
60
|
+
* - `fail-fast` (default) — step throws → `execute()` rethrows.
|
|
61
|
+
* - `continue` — step throws → error is recorded on the step log and the
|
|
62
|
+
* pipeline keeps going; state is not mutated by the failed step.
|
|
63
|
+
* - `collect` — same as `continue`, plus the aggregated errors are exposed on
|
|
64
|
+
* {@link PipelineResult.errors} for the caller to inspect after the run
|
|
65
|
+
* completes.
|
|
66
|
+
*/
|
|
67
|
+
export type PipelineErrorStrategy = 'fail-fast' | 'continue' | 'collect';
|
|
68
|
+
/** Final result returned by `PipelineBuilder.execute()`. */
|
|
69
|
+
export interface PipelineResult {
|
|
70
|
+
/** Final accumulated state after the last step ran (or the gate short-circuited). */
|
|
71
|
+
readonly state: JsonObject;
|
|
72
|
+
/** Per-entry log in execution order. Parallel groups produce one entry per branch. */
|
|
73
|
+
readonly steps: readonly PipelineStepLog[];
|
|
74
|
+
/**
|
|
75
|
+
* Errors collected under `collect` strategy, keyed by step name. Empty
|
|
76
|
+
* array if no step failed or the strategy was `fail-fast` / `continue`.
|
|
77
|
+
*/
|
|
78
|
+
readonly errors: readonly PipelineStepError[];
|
|
79
|
+
/**
|
|
80
|
+
* True if a gate predicate returned falsy and short-circuited execution.
|
|
81
|
+
* Consumers can distinguish "gate stopped us" from "ran to completion".
|
|
82
|
+
*/
|
|
83
|
+
readonly gated: boolean;
|
|
84
|
+
}
|
|
85
|
+
/** Per-step execution record. */
|
|
86
|
+
export interface PipelineStepLog {
|
|
87
|
+
readonly name: string;
|
|
88
|
+
readonly success: boolean;
|
|
89
|
+
readonly durationMs: number;
|
|
90
|
+
readonly error?: string;
|
|
91
|
+
}
|
|
92
|
+
/** Collected-mode error record. */
|
|
93
|
+
export interface PipelineStepError {
|
|
94
|
+
readonly name: string;
|
|
95
|
+
readonly error: string;
|
|
96
|
+
}
|
|
97
|
+
/** Symbol key for the hook-bearing internal execute path. */
|
|
98
|
+
export declare const PIPELINE_TRACE_HOOKS: unique symbol;
|
|
99
|
+
/**
|
|
100
|
+
* Fluent builder. Each chain method returns a new instance — the builder is
|
|
101
|
+
* structurally immutable so a consumer can fan out a base pipeline into
|
|
102
|
+
* multiple variants.
|
|
103
|
+
*/
|
|
104
|
+
export declare class PipelineBuilder {
|
|
105
|
+
/**
|
|
106
|
+
* Reach this via {@link PipelineClient.build} — that's the public entry
|
|
107
|
+
* point. The constructor signature stays exported (not strip-tagged) so
|
|
108
|
+
* the published `.d.ts` carries a real `(client)` signature; without it,
|
|
109
|
+
* the strip-tag compiler step would synthesize an implicit no-arg
|
|
110
|
+
* `new PipelineBuilder()` for consumers, and pipelines built that way
|
|
111
|
+
* would see `ctx.client === undefined`. The multi-arg chain-extension
|
|
112
|
+
* shape lives on the private `cloneWith` helper so the internal
|
|
113
|
+
* `PipelineEntry` type doesn't leak into the published declarations.
|
|
114
|
+
*/
|
|
115
|
+
constructor(client: QodoClient);
|
|
116
|
+
/** Build a new builder that shares this builder's client but swaps in the supplied chain state. */
|
|
117
|
+
private cloneWith;
|
|
118
|
+
/** Append a sequential step. */
|
|
119
|
+
step(name: string, fn: PipelineStepFn): PipelineBuilder;
|
|
120
|
+
/**
|
|
121
|
+
* Run a group of steps in parallel. Every branch sees the same input state;
|
|
122
|
+
* branches that succeed contribute their returned patches to the merged
|
|
123
|
+
* state in declaration order (later in the array wins on key conflicts).
|
|
124
|
+
* Branch failures are governed by the *currently active* error strategy.
|
|
125
|
+
*/
|
|
126
|
+
parallel(steps: ReadonlyArray<{
|
|
127
|
+
readonly name: string;
|
|
128
|
+
readonly fn: PipelineStepFn;
|
|
129
|
+
}>): PipelineBuilder;
|
|
130
|
+
/**
|
|
131
|
+
* Insert a gate predicate. Falsy → pipeline short-circuits and `execute()`
|
|
132
|
+
* resolves with `gated: true` and the current accumulated state. Truthy →
|
|
133
|
+
* continue.
|
|
134
|
+
*/
|
|
135
|
+
gate(name: string, fn: PipelineGateFn): PipelineBuilder;
|
|
136
|
+
/**
|
|
137
|
+
* Set the per-step error strategy for subsequent steps. Doesn't retroactively
|
|
138
|
+
* change strategies on entries already in the chain — each entry records the
|
|
139
|
+
* strategy in effect at the moment it was appended.
|
|
140
|
+
*/
|
|
141
|
+
onError(strategy: PipelineErrorStrategy): PipelineBuilder;
|
|
142
|
+
/** Execute the pipeline against the given initial state. */
|
|
143
|
+
execute(initialState?: JsonObject): Promise<PipelineResult>;
|
|
144
|
+
private executeInternal;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Entry point for the pipeline DSL. Reachable via `client.pipeline.build()`.
|
|
148
|
+
*/
|
|
149
|
+
export declare class PipelineClient {
|
|
150
|
+
/**
|
|
151
|
+
* Construction is intended for use by `QodoClient`; consumers reach a live
|
|
152
|
+
* instance via `client.pipeline`. The constructor signature is kept
|
|
153
|
+
* undecorated so the strip-tag compiler step doesn't erase it from the
|
|
154
|
+
* published `.d.ts` — otherwise a synthesized no-arg constructor would let
|
|
155
|
+
* consumers build a `PipelineClient` with no client reference, producing
|
|
156
|
+
* pipelines whose steps see `ctx.client === undefined`.
|
|
157
|
+
*/
|
|
158
|
+
constructor(client: QodoClient);
|
|
159
|
+
/** Construct a fresh `PipelineBuilder` bound to this client. */
|
|
160
|
+
build(): PipelineBuilder;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=PipelineClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineClient.d.ts","sourceRoot":"","sources":["../../src/client/PipelineClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,mBAAmB,KACrB,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEzE,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAuCD,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAAoD,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,eAAe;IAQ1B;;;;;;;;;OASG;gBACgB,MAAM,EAAE,UAAU;IAWrC,mGAAmG;IACnG,OAAO,CAAC,SAAS;IAcjB,gCAAgC;IACzB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,eAAe;IAa9D;;;;;OAKG;IACI,QAAQ,CACb,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAA;KAAE,CAAC,GAC3E,eAAe;IAiClB;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,eAAe;IAa9D;;;;OAIG;IACI,OAAO,CAAC,QAAQ,EAAE,qBAAqB,GAAG,eAAe;IAShE,4DAA4D;IAC/C,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;YAiB1D,eAAe;CAoI9B;AAED;;GAEG;AACH,qBAAa,cAAc;IAIzB;;;;;;;OAOG;gBACgB,MAAM,EAAE,UAAU;IASrC,gEAAgE;IACzD,KAAK,IAAI,eAAe;CAGhC"}
|