@probelabs/visor 0.1.106 → 0.1.111
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/README.md +71 -2
- package/action.yml +1 -1
- package/defaults/code-refiner.yaml +114 -0
- package/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/defaults/override.yaml +52 -0
- package/defaults/task-refinement.yaml +624 -0
- package/defaults/visor.tests.yaml +685 -0
- package/defaults/visor.yaml +483 -0
- package/dist/action-cli-bridge.d.ts +11 -82
- package/dist/action-cli-bridge.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts +28 -9
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts +19 -331
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/cron-scheduler.d.ts +3 -3
- package/dist/cron-scheduler.d.ts.map +1 -1
- package/dist/debug-visualizer/ws-server.d.ts +7 -1
- package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
- package/dist/defaults/code-refiner.yaml +114 -0
- package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/dist/defaults/override.yaml +52 -0
- package/dist/defaults/task-refinement.yaml +624 -0
- package/dist/defaults/visor.tests.yaml +685 -0
- package/dist/defaults/visor.yaml +483 -0
- package/dist/docs/DEPLOYMENT.md +118 -0
- package/dist/docs/GITHUB_CHECKS.md +280 -0
- package/dist/docs/NPM_USAGE.md +208 -0
- package/dist/docs/action-reference.md +19 -0
- package/dist/docs/advanced-ai.md +237 -0
- package/dist/docs/ai-configuration.md +535 -0
- package/dist/docs/ai-custom-tools-usage.md +261 -0
- package/dist/docs/ai-custom-tools.md +392 -0
- package/dist/docs/author-permissions.md +610 -0
- package/dist/docs/bot-transports-rfc.md +23 -0
- package/dist/docs/ci-cli-mode.md +34 -0
- package/dist/docs/claude-code.md +74 -0
- package/dist/docs/command-provider.md +559 -0
- package/dist/docs/commands.md +8 -0
- package/dist/docs/configuration.md +324 -0
- package/dist/docs/custom-tools.md +424 -0
- package/dist/docs/dashboards/README.md +23 -0
- package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
- package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
- package/dist/docs/debug-visualizer-progress.md +572 -0
- package/dist/docs/debug-visualizer-rfc.md +691 -0
- package/dist/docs/debug-visualizer.md +114 -0
- package/dist/docs/debugging.md +636 -0
- package/dist/docs/default-output-schema.md +28 -0
- package/dist/docs/dependencies.md +369 -0
- package/dist/docs/dev-playbook.md +9 -0
- package/dist/docs/engine-pause-resume-rfc.md +192 -0
- package/dist/docs/engine-state-machine-plan.md +333 -0
- package/dist/docs/event-driven-github-integration-rfc.md +743 -0
- package/dist/docs/event-triggers.md +292 -0
- package/dist/docs/execution-statistics-rfc.md +290 -0
- package/dist/docs/fact-validator-gap-analysis.md +178 -0
- package/dist/docs/fact-validator-implementation-plan.md +1235 -0
- package/dist/docs/fail-if.md +95 -0
- package/dist/docs/failure-conditions-implementation.md +271 -0
- package/dist/docs/failure-conditions-schema.md +173 -0
- package/dist/docs/failure-routing-rfc.md +193 -0
- package/dist/docs/failure-routing.md +507 -0
- package/dist/docs/foreach-dependency-propagation.md +473 -0
- package/dist/docs/github-ops.md +89 -0
- package/dist/docs/goto-forward-run-plan.md +113 -0
- package/dist/docs/guides/criticality-modes.md +332 -0
- package/dist/docs/guides/fault-management-and-contracts.md +738 -0
- package/dist/docs/guides/workflow-style-guide.md +224 -0
- package/dist/docs/http.md +299 -0
- package/dist/docs/human-input-provider.md +372 -0
- package/dist/docs/lifecycle-hooks.md +253 -0
- package/dist/docs/limits.md +64 -0
- package/dist/docs/liquid-templates.md +490 -0
- package/dist/docs/loop-routing-refactor.md +89 -0
- package/dist/docs/mcp-provider.md +557 -0
- package/dist/docs/mcp.md +124 -0
- package/dist/docs/memory.md +903 -0
- package/dist/docs/observability.md +12 -0
- package/dist/docs/output-formats.md +20 -0
- package/dist/docs/output-formatting.md +29 -0
- package/dist/docs/output-history.md +383 -0
- package/dist/docs/performance.md +6 -0
- package/dist/docs/pluggable.md +124 -0
- package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
- package/dist/docs/providers/git-checkout.md +589 -0
- package/dist/docs/recipes.md +474 -0
- package/dist/docs/rfc/git-checkout-step.md +601 -0
- package/dist/docs/rfc/on_init-hook.md +1294 -0
- package/dist/docs/rfc/workspace-isolation.md +216 -0
- package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
- package/dist/docs/router-patterns.md +339 -0
- package/dist/docs/schema-next-pr.md +10 -0
- package/dist/docs/schema-templates.md +68 -0
- package/dist/docs/script.md +34 -0
- package/dist/docs/sdk.md +222 -0
- package/dist/docs/security.md +7 -0
- package/dist/docs/suppressions.md +89 -0
- package/dist/docs/tag-filtering.md +258 -0
- package/dist/docs/telemetry-setup.md +119 -0
- package/dist/docs/telemetry-tracing-rfc.md +275 -0
- package/dist/docs/test-framework-rfc.md +680 -0
- package/dist/docs/testing/assertions.md +85 -0
- package/dist/docs/testing/ci.md +44 -0
- package/dist/docs/testing/cli.md +41 -0
- package/dist/docs/testing/cookbook.md +172 -0
- package/dist/docs/testing/dsl-reference.md +199 -0
- package/dist/docs/testing/fixtures-and-mocks.md +91 -0
- package/dist/docs/testing/flows.md +92 -0
- package/dist/docs/testing/getting-started.md +93 -0
- package/dist/docs/testing/troubleshooting.md +55 -0
- package/dist/docs/timeouts.md +50 -0
- package/dist/docs/troubleshooting.md +7 -0
- package/dist/docs/visor-sdk-rfc.md +186 -0
- package/dist/docs/workflows.md +569 -0
- package/dist/engine/on-finish/orchestrator.d.ts +19 -0
- package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
- package/dist/engine/on-finish/utils.d.ts +44 -0
- package/dist/engine/on-finish/utils.d.ts.map +1 -0
- package/dist/event-bus/event-bus.d.ts +13 -0
- package/dist/event-bus/event-bus.d.ts.map +1 -0
- package/dist/event-bus/types.d.ts +71 -0
- package/dist/event-bus/types.d.ts.map +1 -0
- package/dist/examples/.claude/agents/code-reviewer.md +69 -0
- package/dist/examples/.mcp.json +34 -0
- package/dist/examples/CALCULATOR-SDK.md +364 -0
- package/dist/examples/README.md +384 -0
- package/dist/examples/ai-custom-tools-example.yaml +206 -0
- package/dist/examples/ai-custom-tools-simple.yaml +76 -0
- package/dist/examples/ai-retry-fallback-config.yaml +180 -0
- package/dist/examples/ai-with-bash.yaml +126 -0
- package/dist/examples/ai-with-mcp.yaml +82 -0
- package/dist/examples/basic-human-input.yaml +15 -0
- package/dist/examples/bedrock-config.yaml +77 -0
- package/dist/examples/calculator-config.yaml +133 -0
- package/dist/examples/calculator-json-output-guide.md +311 -0
- package/dist/examples/calculator-sdk-automated.ts +340 -0
- package/dist/examples/calculator-sdk-example.ts +275 -0
- package/dist/examples/calculator-sdk-json.ts +331 -0
- package/dist/examples/calculator-sdk-real.ts +374 -0
- package/dist/examples/calculator-sdk-test.ts +148 -0
- package/dist/examples/claude-code-config.yaml +191 -0
- package/dist/examples/cron-webhook-config.yaml +215 -0
- package/dist/examples/custom-template.liquid +57 -0
- package/dist/examples/custom-tools-example.yaml +281 -0
- package/dist/examples/enhanced-config.yaml +165 -0
- package/dist/examples/environments/visor.base.yaml +92 -0
- package/dist/examples/environments/visor.dev.yaml +33 -0
- package/dist/examples/environments/visor.prod.yaml +95 -0
- package/dist/examples/environments/visor.staging.yaml +46 -0
- package/dist/examples/fact-validator.yaml +361 -0
- package/dist/examples/fail-if-simple.yaml +90 -0
- package/dist/examples/failure-conditions-advanced.yaml +136 -0
- package/dist/examples/failure-conditions-basic.yaml +48 -0
- package/dist/examples/failure-conditions-github-style.yaml +119 -0
- package/dist/examples/failure-conditions-migration.yaml +74 -0
- package/dist/examples/for-loop-example.yaml +176 -0
- package/dist/examples/forEach-example.yaml +120 -0
- package/dist/examples/git-checkout-basic.yaml +32 -0
- package/dist/examples/git-checkout-compare.yaml +59 -0
- package/dist/examples/git-checkout-cross-repo.yaml +76 -0
- package/dist/examples/github-workflow-with-tags.yml +163 -0
- package/dist/examples/http-integration-config.yaml +240 -0
- package/dist/examples/https-server-config.yaml +209 -0
- package/dist/examples/human-input-example.yaml +63 -0
- package/dist/examples/if-conditions.yaml +173 -0
- package/dist/examples/jira-simple-example.yaml +56 -0
- package/dist/examples/jira-single-issue-workflow.yaml +166 -0
- package/dist/examples/jira-workflow-mcp.yaml +182 -0
- package/dist/examples/mcp/analyzer.py +119 -0
- package/dist/examples/mcp-provider-example.yaml +301 -0
- package/dist/examples/memory-counter.yaml +99 -0
- package/dist/examples/memory-error-collection.yaml +104 -0
- package/dist/examples/memory-exec-js.yaml +247 -0
- package/dist/examples/memory-namespace-isolation.yaml +184 -0
- package/dist/examples/memory-retry-counter.yaml +65 -0
- package/dist/examples/memory-state-machine.yaml +170 -0
- package/dist/examples/on-init-import-demo.yaml +179 -0
- package/dist/examples/outputs-raw-basic.yaml +26 -0
- package/dist/examples/project-with-tools.yaml +174 -0
- package/dist/examples/prompts/architecture-analysis.liquid +116 -0
- package/dist/examples/prompts/security-comprehensive.liquid +107 -0
- package/dist/examples/quick-start-tags.yaml +53 -0
- package/dist/examples/reusable-tools.yaml +92 -0
- package/dist/examples/reusable-workflows.yaml +88 -0
- package/dist/examples/routing-basic.yaml +35 -0
- package/dist/examples/routing-dynamic-js.yaml +46 -0
- package/dist/examples/routing-foreach.yaml +34 -0
- package/dist/examples/routing-goto-event.yaml +34 -0
- package/dist/examples/routing-on-success.yaml +25 -0
- package/dist/examples/run-calculator-demo.sh +71 -0
- package/dist/examples/sdk-basic.mjs +10 -0
- package/dist/examples/sdk-cjs.cjs +10 -0
- package/dist/examples/sdk-comprehensive.mjs +175 -0
- package/dist/examples/sdk-manual-config.mjs +65 -0
- package/dist/examples/sdk-typescript.js +81 -0
- package/dist/examples/sdk-typescript.ts +92 -0
- package/dist/examples/session-reuse-config.yaml +151 -0
- package/dist/examples/session-reuse-self.yaml +81 -0
- package/dist/examples/slack-simple-chat.yaml +775 -0
- package/dist/examples/templates/security-report.liquid +137 -0
- package/dist/examples/tools-library.yaml +281 -0
- package/dist/examples/transform-example.yaml +199 -0
- package/dist/examples/visor-with-tags.yaml +198 -0
- package/dist/examples/webhook-pipeline-config.yaml +218 -0
- package/dist/examples/workflows/calculator-workflow.yaml +163 -0
- package/dist/examples/workflows/code-quality.yaml +222 -0
- package/dist/examples/workflows/quick-pr-check.yaml +90 -0
- package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
- package/dist/failure-condition-evaluator.d.ts +3 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/github-frontend.d.ts +58 -0
- package/dist/frontends/github-frontend.d.ts.map +1 -0
- package/dist/frontends/host.d.ts +47 -0
- package/dist/frontends/host.d.ts.map +1 -0
- package/dist/frontends/ndjson-sink.d.ts +12 -0
- package/dist/frontends/ndjson-sink.d.ts.map +1 -0
- package/dist/frontends/slack-frontend.d.ts +58 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -0
- package/dist/generated/config-schema.d.ts +967 -57
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +1033 -56
- package/dist/github-check-service.d.ts +4 -6
- package/dist/github-check-service.d.ts.map +1 -1
- package/dist/github-comments.d.ts +2 -4
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +134327 -99004
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/memory-store.d.ts +6 -0
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/output/assistant-json/template.liquid +0 -0
- package/dist/output/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
- package/dist/output/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
- package/dist/output-formatters.d.ts +1 -1
- package/dist/output-formatters.d.ts.map +1 -1
- package/dist/providers/ai-check-provider.d.ts +12 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider-registry.d.ts +6 -0
- package/dist/providers/check-provider-registry.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +43 -1
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/custom-tool-executor.d.ts +61 -0
- package/dist/providers/custom-tool-executor.d.ts.map +1 -0
- package/dist/providers/git-checkout-provider.d.ts +25 -0
- package/dist/providers/git-checkout-provider.d.ts.map +1 -0
- package/dist/providers/github-ops-provider.d.ts.map +1 -1
- package/dist/providers/http-client-provider.d.ts +4 -4
- package/dist/providers/http-client-provider.d.ts.map +1 -1
- package/dist/providers/human-input-check-provider.d.ts +5 -0
- package/dist/providers/human-input-check-provider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/log-check-provider.d.ts +2 -5
- package/dist/providers/log-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts +10 -4
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +66 -0
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -0
- package/dist/providers/memory-check-provider.d.ts +2 -8
- package/dist/providers/memory-check-provider.d.ts.map +1 -1
- package/dist/providers/script-check-provider.d.ts +25 -0
- package/dist/providers/script-check-provider.d.ts.map +1 -0
- package/dist/providers/workflow-check-provider.d.ts +56 -0
- package/dist/providers/workflow-check-provider.d.ts.map +1 -0
- package/dist/reviewer.d.ts +2 -1
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/sdk/check-provider-registry-534KL5HT.mjs +27 -0
- package/dist/sdk/chunk-23L3QRYX.mjs +16872 -0
- package/dist/sdk/chunk-23L3QRYX.mjs.map +1 -0
- package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-3OMWVM6J.mjs} +11 -1
- package/dist/sdk/chunk-3OMWVM6J.mjs.map +1 -0
- package/dist/sdk/chunk-7UK3NIIT.mjs +482 -0
- package/dist/sdk/chunk-7UK3NIIT.mjs.map +1 -0
- package/dist/sdk/chunk-AGIZJ4UZ.mjs +173 -0
- package/dist/sdk/chunk-AGIZJ4UZ.mjs.map +1 -0
- package/dist/sdk/chunk-AIVFBIS4.mjs +1371 -0
- package/dist/sdk/chunk-AIVFBIS4.mjs.map +1 -0
- package/dist/sdk/chunk-AK6BVWIT.mjs +426 -0
- package/dist/sdk/chunk-AK6BVWIT.mjs.map +1 -0
- package/dist/sdk/chunk-AUT26LHW.mjs +139 -0
- package/dist/sdk/chunk-AUT26LHW.mjs.map +1 -0
- package/dist/sdk/chunk-BOVFH3LI.mjs +232 -0
- package/dist/sdk/chunk-BOVFH3LI.mjs.map +1 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
- package/dist/sdk/chunk-HTOKWMPO.mjs +157 -0
- package/dist/sdk/chunk-HTOKWMPO.mjs.map +1 -0
- package/dist/sdk/chunk-NAW3DB3I.mjs +197 -0
- package/dist/sdk/chunk-NAW3DB3I.mjs.map +1 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
- package/dist/sdk/chunk-QR7MOMJH.mjs +558 -0
- package/dist/sdk/chunk-QR7MOMJH.mjs.map +1 -0
- package/dist/sdk/chunk-QY2XYPEV.mjs +3556 -0
- package/dist/sdk/chunk-QY2XYPEV.mjs.map +1 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
- package/dist/sdk/chunk-SIWNBRTK.mjs +800 -0
- package/dist/sdk/chunk-SIWNBRTK.mjs.map +1 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
- package/dist/sdk/command-executor-TYUV6HUS.mjs +14 -0
- package/dist/sdk/config-YNC2EOOT.mjs +16 -0
- package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
- package/dist/sdk/failure-condition-evaluator-YGTF2GHG.mjs +17 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
- package/dist/sdk/github-frontend-SIAEOCON.mjs +1420 -0
- package/dist/sdk/github-frontend-SIAEOCON.mjs.map +1 -0
- package/dist/sdk/host-DXUYTNMU.mjs +52 -0
- package/dist/sdk/host-DXUYTNMU.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-PKWCKK7E.mjs} +8 -2
- package/dist/sdk/memory-store-XGBB7LX7.mjs +12 -0
- package/dist/sdk/memory-store-XGBB7LX7.mjs.map +1 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs.map +1 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
- package/dist/sdk/prompt-state-YRJY6QAL.mjs +16 -0
- package/dist/sdk/prompt-state-YRJY6QAL.mjs.map +1 -0
- package/dist/sdk/renderer-schema-LPKN5UJS.mjs +51 -0
- package/dist/sdk/renderer-schema-LPKN5UJS.mjs.map +1 -0
- package/dist/sdk/routing-6N45MJ4F.mjs +24 -0
- package/dist/sdk/routing-6N45MJ4F.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +541 -22
- package/dist/sdk/sdk.d.ts +541 -22
- package/dist/sdk/sdk.js +27963 -16505
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +1116 -2169
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-4E6YRQ77.mjs +10 -0
- package/dist/sdk/session-registry-4E6YRQ77.mjs.map +1 -0
- package/dist/sdk/slack-frontend-BVKW3GD5.mjs +735 -0
- package/dist/sdk/slack-frontend-BVKW3GD5.mjs.map +1 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
- package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-GSLPPLCD.mjs} +2 -2
- package/dist/sdk/tracer-init-GSLPPLCD.mjs.map +1 -0
- package/dist/sdk/workflow-registry-R6KSACFR.mjs +12 -0
- package/dist/sdk/workflow-registry-R6KSACFR.mjs.map +1 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/slack/adapter.d.ts +36 -0
- package/dist/slack/adapter.d.ts.map +1 -0
- package/dist/slack/cache-prewarmer.d.ts +31 -0
- package/dist/slack/cache-prewarmer.d.ts.map +1 -0
- package/dist/slack/client.d.ts +77 -0
- package/dist/slack/client.d.ts.map +1 -0
- package/dist/slack/markdown.d.ts +45 -0
- package/dist/slack/markdown.d.ts.map +1 -0
- package/dist/slack/prompt-state.d.ts +33 -0
- package/dist/slack/prompt-state.d.ts.map +1 -0
- package/dist/slack/rate-limiter.d.ts +56 -0
- package/dist/slack/rate-limiter.d.ts.map +1 -0
- package/dist/slack/signature.d.ts +2 -0
- package/dist/slack/signature.d.ts.map +1 -0
- package/dist/slack/socket-runner.d.ts +42 -0
- package/dist/slack/socket-runner.d.ts.map +1 -0
- package/dist/slack/thread-cache.d.ts +51 -0
- package/dist/slack/thread-cache.d.ts.map +1 -0
- package/dist/snapshot-store.d.ts +59 -0
- package/dist/snapshot-store.d.ts.map +1 -0
- package/dist/state-machine/context/build-engine-context.d.ts +17 -0
- package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
- package/dist/state-machine/dispatch/on-init-handlers.d.ts +43 -0
- package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
- package/dist/state-machine/execution/summary.d.ts +8 -0
- package/dist/state-machine/execution/summary.d.ts.map +1 -0
- package/dist/state-machine/runner.d.ts +79 -0
- package/dist/state-machine/runner.d.ts.map +1 -0
- package/dist/state-machine/states/check-running.d.ts +14 -0
- package/dist/state-machine/states/check-running.d.ts.map +1 -0
- package/dist/state-machine/states/completed.d.ts +12 -0
- package/dist/state-machine/states/completed.d.ts.map +1 -0
- package/dist/state-machine/states/error.d.ts +11 -0
- package/dist/state-machine/states/error.d.ts.map +1 -0
- package/dist/state-machine/states/init.d.ts +11 -0
- package/dist/state-machine/states/init.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts +17 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
- package/dist/state-machine/states/plan-ready.d.ts +12 -0
- package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
- package/dist/state-machine/states/routing.d.ts +52 -0
- package/dist/state-machine/states/routing.d.ts.map +1 -0
- package/dist/state-machine/states/wave-planning.d.ts +14 -0
- package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
- package/dist/state-machine/workflow-projection.d.ts +47 -0
- package/dist/state-machine/workflow-projection.d.ts.map +1 -0
- package/dist/state-machine-execution-engine.d.ts +159 -0
- package/dist/state-machine-execution-engine.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -1
- package/dist/telemetry/state-capture.d.ts +5 -0
- package/dist/telemetry/state-capture.d.ts.map +1 -1
- package/dist/test-runner/assertions.d.ts +59 -0
- package/dist/test-runner/assertions.d.ts.map +1 -0
- package/dist/test-runner/core/environment.d.ts +8 -0
- package/dist/test-runner/core/environment.d.ts.map +1 -0
- package/dist/test-runner/core/fixture.d.ts +3 -0
- package/dist/test-runner/core/fixture.d.ts.map +1 -0
- package/dist/test-runner/core/flow-stage.d.ts +32 -0
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
- package/dist/test-runner/core/mocks.d.ts +8 -0
- package/dist/test-runner/core/mocks.d.ts.map +1 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
- package/dist/test-runner/evaluators.d.ts +45 -0
- package/dist/test-runner/evaluators.d.ts.map +1 -0
- package/dist/test-runner/fixture-loader.d.ts +30 -0
- package/dist/test-runner/fixture-loader.d.ts.map +1 -0
- package/dist/test-runner/index.d.ts +127 -0
- package/dist/test-runner/index.d.ts.map +1 -0
- package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
- package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
- package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
- package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
- package/dist/test-runner/recorders/slack-recorder.d.ts +17 -0
- package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -0
- package/dist/test-runner/utils/selectors.d.ts +2 -0
- package/dist/test-runner/utils/selectors.d.ts.map +1 -0
- package/dist/test-runner/validator.d.ts +8 -0
- package/dist/test-runner/validator.d.ts.map +1 -0
- package/dist/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
- package/dist/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
- package/dist/types/bot.d.ts +109 -0
- package/dist/types/bot.d.ts.map +1 -0
- package/dist/types/cli.d.ts +8 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +459 -9
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +177 -0
- package/dist/types/engine.d.ts.map +1 -0
- package/dist/types/execution.d.ts +73 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/git-checkout.d.ts +76 -0
- package/dist/types/git-checkout.d.ts.map +1 -0
- package/dist/types/github.d.ts +51 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/workflow.d.ts +237 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/utils/command-executor.d.ts +43 -0
- package/dist/utils/command-executor.d.ts.map +1 -0
- package/dist/utils/comment-metadata.d.ts +21 -0
- package/dist/utils/comment-metadata.d.ts.map +1 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-merger.d.ts.map +1 -1
- package/dist/utils/env-exposure.d.ts +3 -0
- package/dist/utils/env-exposure.d.ts.map +1 -0
- package/dist/utils/file-exclusion.d.ts.map +1 -1
- package/dist/utils/interactive-prompt.d.ts +1 -1
- package/dist/utils/interactive-prompt.d.ts.map +1 -1
- package/dist/utils/json-text-extractor.d.ts +17 -0
- package/dist/utils/json-text-extractor.d.ts.map +1 -0
- package/dist/utils/sandbox.d.ts +10 -0
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/dist/utils/script-memory-ops.d.ts +21 -0
- package/dist/utils/script-memory-ops.d.ts.map +1 -0
- package/dist/utils/template-context.d.ts +8 -0
- package/dist/utils/template-context.d.ts.map +1 -0
- package/dist/utils/tracer-init.d.ts.map +1 -1
- package/dist/utils/workspace-manager.d.ts +118 -0
- package/dist/utils/workspace-manager.d.ts.map +1 -0
- package/dist/utils/worktree-cleanup.d.ts +33 -0
- package/dist/utils/worktree-cleanup.d.ts.map +1 -0
- package/dist/utils/worktree-manager.d.ts +153 -0
- package/dist/utils/worktree-manager.d.ts.map +1 -0
- package/dist/webhook-server.d.ts +3 -3
- package/dist/webhook-server.d.ts.map +1 -1
- package/dist/workflow-executor.d.ts +81 -0
- package/dist/workflow-executor.d.ts.map +1 -0
- package/dist/workflow-registry.d.ts +79 -0
- package/dist/workflow-registry.d.ts.map +1 -0
- package/package.json +12 -5
- package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
- package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
- package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
- package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
- package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
- package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
- package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
- package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
- package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
- package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
- package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
- package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
- package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
- package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
- package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
- package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
- package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
- package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
- package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
- package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → check-provider-registry-534KL5HT.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → command-executor-TYUV6HUS.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → config-YNC2EOOT.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → failure-condition-evaluator-YGTF2GHG.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → liquid-extensions-PKWCKK7E.mjs.map} +0 -0
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
|
|
3
|
+
# Slack integration config (schema version marker for Socket Mode/Webhook helpers)
|
|
4
|
+
slack:
|
|
5
|
+
version: "v1"
|
|
6
|
+
|
|
7
|
+
# Simple agent: task-refinement
|
|
8
|
+
# - Collects user input, refines it with AI (skip code context), and loops until refined.
|
|
9
|
+
# - Returns final refined text via the `finish` step output.
|
|
10
|
+
|
|
11
|
+
steps:
|
|
12
|
+
ask:
|
|
13
|
+
type: human-input
|
|
14
|
+
group: task-refinement
|
|
15
|
+
# Allow multiple turns in the refinement loop; do not guard with an `if`
|
|
16
|
+
# No explicit event trigger; run in CLI by default but guard via if
|
|
17
|
+
prompt: |
|
|
18
|
+
{% assign last_refine = outputs_history.refine | last %}
|
|
19
|
+
{% if last_refine and last_refine.refined == false %}
|
|
20
|
+
{{ last_refine.text }}
|
|
21
|
+
{% else %}
|
|
22
|
+
Provide the task you want to accomplish. Be specific about constraints
|
|
23
|
+
(inputs, outputs, environment, success criteria).
|
|
24
|
+
{% endif %}
|
|
25
|
+
multiline: false
|
|
26
|
+
allow_empty: false
|
|
27
|
+
# No on_success.goto required — refine depends_on ask
|
|
28
|
+
|
|
29
|
+
refine:
|
|
30
|
+
type: ai
|
|
31
|
+
group: task-refinement
|
|
32
|
+
# Run only after 'ask' — dependency drives ordering
|
|
33
|
+
depends_on: [ask]
|
|
34
|
+
# Allow re-execution in loop turns (no if guard)
|
|
35
|
+
ai:
|
|
36
|
+
skip_code_context: true
|
|
37
|
+
disableTools: true
|
|
38
|
+
system_prompt: |
|
|
39
|
+
You are a helpful, precise task refinement assistant (role: requirements-analyst).
|
|
40
|
+
Your goal is to get to an agreed, testable task definition and clear acceptance criteria.
|
|
41
|
+
- Refine the user's task into an unambiguous, executable description with minimal assumptions.
|
|
42
|
+
- Define how correctness will be validated (objective success criteria and measurables).
|
|
43
|
+
- If information is missing, set refined=false and ask_user=true and put a single, specific
|
|
44
|
+
clarification question in the "text" field (one question at a time).
|
|
45
|
+
- If everything is sufficient, set refined=true and put the final refined wording in "text".
|
|
46
|
+
- Be succinct and concrete. Prefer measurable outcomes over vague phrasing.
|
|
47
|
+
- You can't mark plan as refined until explicit user confirmation/agreement is implied.
|
|
48
|
+
# Schema ensures the agent either finalizes or asks to clarify
|
|
49
|
+
schema:
|
|
50
|
+
type: object
|
|
51
|
+
additionalProperties: false
|
|
52
|
+
properties:
|
|
53
|
+
refined: { type: boolean, description: "true if the task is fully specified and accepted" }
|
|
54
|
+
text: { type: string, description: "final refined task or question to user" }
|
|
55
|
+
required: [refined, text]
|
|
56
|
+
prompt: |
|
|
57
|
+
<history>
|
|
58
|
+
{% assign umsgs = outputs_history.ask | default: [] %}
|
|
59
|
+
{% assign amsgs = outputs_history.refine | default: [] %}
|
|
60
|
+
{% assign merged = umsgs | concat: amsgs | sort: 'ts' %}
|
|
61
|
+
{% for m in merged %}
|
|
62
|
+
{% if m.refined != nil %}
|
|
63
|
+
<assistant>{{ m.text }}</assistant>
|
|
64
|
+
{% else %}
|
|
65
|
+
<user>{{ m.text }}</user>
|
|
66
|
+
{% endif %}
|
|
67
|
+
{% endfor %}
|
|
68
|
+
</history>
|
|
69
|
+
|
|
70
|
+
<input>
|
|
71
|
+
{{ outputs['ask'].text }}
|
|
72
|
+
</input>
|
|
73
|
+
|
|
74
|
+
# Loop control using fail_if + on_fail (no goto_js)
|
|
75
|
+
fail_if: "output['refined'] !== true"
|
|
76
|
+
on_fail:
|
|
77
|
+
goto: ask
|
|
78
|
+
|
|
79
|
+
plan-commands:
|
|
80
|
+
type: ai
|
|
81
|
+
group: task-refinement
|
|
82
|
+
depends_on: [refine]
|
|
83
|
+
reuse_ai_session: refine
|
|
84
|
+
session_mode: clone
|
|
85
|
+
ai:
|
|
86
|
+
# Allow tools so the model can inspect the repo context if needed
|
|
87
|
+
disableTools: false
|
|
88
|
+
skip_code_context: true
|
|
89
|
+
system_prompt: |
|
|
90
|
+
You are a Task Validation Planner.
|
|
91
|
+
Produce a deterministic, minimal list of shell commands that, when executed in order,
|
|
92
|
+
validate that the refined task is complete for THIS repository/local env.
|
|
93
|
+
Constraints:
|
|
94
|
+
- Commands must be safe and non-destructive. Do not delete files or push to remotes.
|
|
95
|
+
- Prefer read-only checks and standard project commands (build, lint, test) when present.
|
|
96
|
+
- Each item is a single shell line; you may use && or || inside a line if necessary.
|
|
97
|
+
- Favor idempotent commands. Avoid interactive prompts.
|
|
98
|
+
- Detect package manager/tooling pragmatically (npm/pnpm/yarn/bun, eslint/biome, jest/vitest, etc.).
|
|
99
|
+
Return JSON with an array of strings under "commands" and optional "notes".
|
|
100
|
+
schema:
|
|
101
|
+
type: object
|
|
102
|
+
additionalProperties: false
|
|
103
|
+
properties:
|
|
104
|
+
commands:
|
|
105
|
+
type: array
|
|
106
|
+
minItems: 1
|
|
107
|
+
items: { type: string, minLength: 1 }
|
|
108
|
+
notes: { type: string }
|
|
109
|
+
required: [commands]
|
|
110
|
+
prompt: |
|
|
111
|
+
Refined task:
|
|
112
|
+
{{ outputs['refine'].text }}
|
|
113
|
+
|
|
114
|
+
If the repository has build/lint/test, include them. Otherwise propose basic checks that still
|
|
115
|
+
demonstrate completion (e.g., typecheck, compile, format verification, smoke run).
|
|
116
|
+
|
|
117
|
+
{% assign prev_conf_hist = outputs_history['confirm-interpret'] | default: [] %}
|
|
118
|
+
{% assign prev_run_hist = outputs_history['run-commands'] | default: [] %}
|
|
119
|
+
{% assign last_failed = nil %}
|
|
120
|
+
{% for r in prev_run_hist %}
|
|
121
|
+
{% if r.failed and r.failed > 0 %}
|
|
122
|
+
{% assign last_failed = r %}
|
|
123
|
+
{% endif %}
|
|
124
|
+
{% endfor %}
|
|
125
|
+
{% assign last_conf = prev_conf_hist | last %}
|
|
126
|
+
{% assign prev_run_count = prev_run_hist | size %}
|
|
127
|
+
{% assign last_run = prev_run_hist | last %}
|
|
128
|
+
{% if last_failed or prev_run_count > 0 %}
|
|
129
|
+
Previous attempt failed. Here are the details to learn from:
|
|
130
|
+
- Previous commands: {{ last_conf.commands | to_json }}
|
|
131
|
+
- Run results: {{ last_failed | default: last_run | to_json }}
|
|
132
|
+
Please revise the commands to address failures. Keep the list minimal and deterministic.
|
|
133
|
+
{% endif %}
|
|
134
|
+
|
|
135
|
+
Output strictly JSON per schema. No prose around it.
|
|
136
|
+
# No on_success routing needed; dependents naturally follow in the DAG
|
|
137
|
+
|
|
138
|
+
ask-confirm:
|
|
139
|
+
type: human-input
|
|
140
|
+
group: task-refinement
|
|
141
|
+
depends_on: [plan-commands]
|
|
142
|
+
prompt: |
|
|
143
|
+
Here is the proposed validation command list (to run sequentially):
|
|
144
|
+
{% for c in outputs['plan-commands'].commands %}
|
|
145
|
+
{{ forloop.index }}. {{ c }}
|
|
146
|
+
{% endfor %}
|
|
147
|
+
|
|
148
|
+
Confirm running these? Reply "yes" to accept, or provide edits:
|
|
149
|
+
- JSON array of commands, e.g. ["npm ci", "npm test"], or
|
|
150
|
+
- Plain text with one command per line.
|
|
151
|
+
placeholder: "yes | or paste modified list..."
|
|
152
|
+
multiline: true
|
|
153
|
+
allow_empty: true
|
|
154
|
+
default: "yes"
|
|
155
|
+
|
|
156
|
+
confirm-interpret:
|
|
157
|
+
type: ai
|
|
158
|
+
group: task-refinement
|
|
159
|
+
depends_on: [plan-commands, ask-confirm]
|
|
160
|
+
ai:
|
|
161
|
+
skip_code_context: true
|
|
162
|
+
disableTools: true
|
|
163
|
+
system_prompt: |
|
|
164
|
+
You are a confirmation interpreter. Given the planned command list and the user's reply,
|
|
165
|
+
decide whether to proceed to execution with a normalized list of shell commands, or
|
|
166
|
+
return for replanning.
|
|
167
|
+
- If the user says yes/approve, set proceed=true and provide commands as-is.
|
|
168
|
+
- If the user supplied edits (JSON array or one per line), parse, trim, dedupe, and set proceed=true with commands.
|
|
169
|
+
- If the reply indicates high-level changes (not runnable commands), set proceed=false and include a short reason.
|
|
170
|
+
Output strictly JSON per schema.
|
|
171
|
+
schema:
|
|
172
|
+
type: object
|
|
173
|
+
additionalProperties: false
|
|
174
|
+
properties:
|
|
175
|
+
proceed: { type: boolean }
|
|
176
|
+
commands:
|
|
177
|
+
type: array
|
|
178
|
+
items: { type: string, minLength: 1 }
|
|
179
|
+
reason: { type: string }
|
|
180
|
+
required: [proceed]
|
|
181
|
+
prompt: |
|
|
182
|
+
Planned commands:
|
|
183
|
+
{{ outputs['plan-commands'].commands | to_json }}
|
|
184
|
+
|
|
185
|
+
User reply:
|
|
186
|
+
{{ outputs['ask-confirm'].text }}
|
|
187
|
+
|
|
188
|
+
Return JSON per schema. If proceed=true, commands must be a non-empty array of shell lines.
|
|
189
|
+
fail_if: "output && output.proceed !== true"
|
|
190
|
+
on_fail:
|
|
191
|
+
goto: plan-commands
|
|
192
|
+
|
|
193
|
+
run-commands:
|
|
194
|
+
type: command
|
|
195
|
+
criticality: internal
|
|
196
|
+
group: task-refinement
|
|
197
|
+
depends_on: [confirm-interpret]
|
|
198
|
+
assume:
|
|
199
|
+
- "outputs['confirm-interpret']?.proceed === true"
|
|
200
|
+
- "(outputs['confirm-interpret']?.commands?.length ?? 0) > 0"
|
|
201
|
+
exec: |
|
|
202
|
+
node <<'NODE'
|
|
203
|
+
const { spawn } = require('child_process');
|
|
204
|
+
const cmds = {{ outputs['confirm-interpret'] | to_json }}.commands || [];
|
|
205
|
+
const results = [];
|
|
206
|
+
const runOne = (cmd) => new Promise((resolve) => {
|
|
207
|
+
const child = spawn('bash', ['-lc', cmd], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
208
|
+
let out = '', err = '';
|
|
209
|
+
const started = Date.now();
|
|
210
|
+
child.stdout.on('data', d => (out += d.toString()));
|
|
211
|
+
child.stderr.on('data', d => (err += d.toString()));
|
|
212
|
+
child.on('close', code => {
|
|
213
|
+
results.push({ cmd, code, stdout: out, stderr: err, durationMs: Date.now() - started });
|
|
214
|
+
resolve();
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
(async () => {
|
|
218
|
+
for (const c of cmds) { await runOne(c); }
|
|
219
|
+
const failed = results.filter(r => Number(r.code||0) !== 0).length;
|
|
220
|
+
process.stdout.write(JSON.stringify({ failed, results }));
|
|
221
|
+
})().catch(e => { process.stdout.write(JSON.stringify({ failed: 1, error: String(e) })); process.exit(0); });
|
|
222
|
+
NODE
|
|
223
|
+
output_format: json
|
|
224
|
+
schema:
|
|
225
|
+
type: object
|
|
226
|
+
additionalProperties: true
|
|
227
|
+
properties:
|
|
228
|
+
failed: { type: number }
|
|
229
|
+
results:
|
|
230
|
+
type: array
|
|
231
|
+
items:
|
|
232
|
+
type: object
|
|
233
|
+
additionalProperties: true
|
|
234
|
+
properties:
|
|
235
|
+
cmd: { type: string }
|
|
236
|
+
code: {}
|
|
237
|
+
stdout: { type: string }
|
|
238
|
+
stderr: { type: string }
|
|
239
|
+
durationMs: { type: number }
|
|
240
|
+
required: [cmd, code]
|
|
241
|
+
required: [failed]
|
|
242
|
+
fail_if: "output && Number(output.failed||0) > 0"
|
|
243
|
+
on_fail:
|
|
244
|
+
goto: plan-commands
|
|
245
|
+
|
|
246
|
+
finish:
|
|
247
|
+
type: log
|
|
248
|
+
group: task-refinement
|
|
249
|
+
depends_on: [run-commands]
|
|
250
|
+
if: "(outputs && outputs['run-commands'] && Number((outputs['run-commands'].failed||0)) === 0) && !(outputs && outputs['finish'])"
|
|
251
|
+
message: |
|
|
252
|
+
✅ Refined Task:
|
|
253
|
+
{{ outputs['refine'].text }}
|
|
254
|
+
|
|
255
|
+
✅ Validation commands (final):
|
|
256
|
+
{% for c in outputs['confirm-interpret'].commands %}
|
|
257
|
+
- {{ c }}
|
|
258
|
+
{% endfor %}
|
|
259
|
+
level: info
|
|
260
|
+
include_pr_context: false
|
|
261
|
+
include_dependencies: false
|
|
262
|
+
include_metadata: false
|
|
263
|
+
|
|
264
|
+
tests:
|
|
265
|
+
defaults:
|
|
266
|
+
strict: true
|
|
267
|
+
ai_provider: mock
|
|
268
|
+
cases:
|
|
269
|
+
- name: one-pass-refinement
|
|
270
|
+
description: Single turn; AI is happy and returns refined text.
|
|
271
|
+
event: manual
|
|
272
|
+
fixture: local.minimal
|
|
273
|
+
mocks:
|
|
274
|
+
ask: "Build a small Node CLI that prints \"hello\""
|
|
275
|
+
refine:
|
|
276
|
+
refined: true
|
|
277
|
+
text: "Create a Node.js CLI (using Node >=18) that prints 'hello' when run; include usage example and exit code 0."
|
|
278
|
+
plan-commands:
|
|
279
|
+
commands: ["echo hello-build", "echo hello-lint", "echo hello-test"]
|
|
280
|
+
ask-confirm: "yes"
|
|
281
|
+
confirm-interpret:
|
|
282
|
+
proceed: true
|
|
283
|
+
commands: ["echo hello-build","echo hello-lint","echo hello-test"]
|
|
284
|
+
run-commands:
|
|
285
|
+
stdout: '{"failed":0,"results":[{"cmd":"echo hello-build","code":0},{"cmd":"echo hello-lint","code":0},{"cmd":"echo hello-test","code":0}]}'
|
|
286
|
+
expect:
|
|
287
|
+
calls:
|
|
288
|
+
- step: plan-commands
|
|
289
|
+
exactly: 1
|
|
290
|
+
- step: ask-confirm
|
|
291
|
+
exactly: 1
|
|
292
|
+
- step: confirm-interpret
|
|
293
|
+
exactly: 1
|
|
294
|
+
- step: run-commands
|
|
295
|
+
exactly: 1
|
|
296
|
+
- step: ask
|
|
297
|
+
exactly: 1
|
|
298
|
+
- step: refine
|
|
299
|
+
exactly: 1
|
|
300
|
+
- step: finish
|
|
301
|
+
exactly: 1
|
|
302
|
+
outputs:
|
|
303
|
+
- step: run-commands
|
|
304
|
+
path: failed
|
|
305
|
+
equals: 0
|
|
306
|
+
|
|
307
|
+
- name: multi-turn-refinement-loop
|
|
308
|
+
description: Two clarifying turns followed by a final refinement; manual-only chat.
|
|
309
|
+
event: manual
|
|
310
|
+
fixture: local.minimal
|
|
311
|
+
mocks:
|
|
312
|
+
ask[]:
|
|
313
|
+
- "Create a CI job"
|
|
314
|
+
- "GitHub Actions; run on push to main"
|
|
315
|
+
- "Use Node 18 and npm ci + npm test"
|
|
316
|
+
refine[]:
|
|
317
|
+
- { refined: false, ask_user: true, text: "Which CI platform and trigger conditions?" }
|
|
318
|
+
- { refined: false, ask_user: true, text: "What Node version and commands should run?" }
|
|
319
|
+
- { refined: true, text: "Set up GitHub Actions workflow: on push to main, use Node 18.x, cache npm, run npm ci && npm test." }
|
|
320
|
+
plan-commands:
|
|
321
|
+
commands: ["echo build", "echo lint", "echo test"]
|
|
322
|
+
ask-confirm: "yes"
|
|
323
|
+
confirm-interpret:
|
|
324
|
+
proceed: true
|
|
325
|
+
commands: ["echo build","echo lint","echo test"]
|
|
326
|
+
run-commands:
|
|
327
|
+
stdout: '{"failed":0,"results":[{"cmd":"echo build","code":0},{"cmd":"echo lint","code":0},{"cmd":"echo test","code":0}]}'
|
|
328
|
+
expect:
|
|
329
|
+
calls:
|
|
330
|
+
- step: ask
|
|
331
|
+
exactly: 3
|
|
332
|
+
- step: refine
|
|
333
|
+
exactly: 3
|
|
334
|
+
- step: plan-commands
|
|
335
|
+
exactly: 1
|
|
336
|
+
- step: ask-confirm
|
|
337
|
+
exactly: 1
|
|
338
|
+
- step: confirm-interpret
|
|
339
|
+
exactly: 1
|
|
340
|
+
- step: run-commands
|
|
341
|
+
exactly: 1
|
|
342
|
+
- step: finish
|
|
343
|
+
exactly: 1
|
|
344
|
+
prompts:
|
|
345
|
+
# Ask prompt should surface the last refine clarification
|
|
346
|
+
- step: ask
|
|
347
|
+
index: 1
|
|
348
|
+
contains:
|
|
349
|
+
- "Which CI platform and trigger conditions?"
|
|
350
|
+
- step: ask
|
|
351
|
+
index: last
|
|
352
|
+
contains:
|
|
353
|
+
- "What Node version and commands should run?"
|
|
354
|
+
- step: refine
|
|
355
|
+
index: last
|
|
356
|
+
contains:
|
|
357
|
+
- "Which CI platform and trigger conditions?"
|
|
358
|
+
- "Use Node 18 and npm ci + npm test"
|
|
359
|
+
- "What Node version and commands should run?"
|
|
360
|
+
# Keep prompt assertions resilient to minor formatting changes by using 'contains'
|
|
361
|
+
# instead of a single large regex.
|
|
362
|
+
outputs:
|
|
363
|
+
# Ensure the final successful refinement carries a timestamp and expected text
|
|
364
|
+
- step: refine
|
|
365
|
+
where: { path: refined, equals: true }
|
|
366
|
+
path: ts
|
|
367
|
+
matches: "^\\d{10,}$"
|
|
368
|
+
- step: refine
|
|
369
|
+
where: { path: refined, equals: true }
|
|
370
|
+
path: text
|
|
371
|
+
matches: "(?is).*GitHub Actions.*Node 18.*npm ci.*npm test.*"
|
|
372
|
+
- step: run-commands
|
|
373
|
+
path: failed
|
|
374
|
+
equals: 0
|
|
375
|
+
|
|
376
|
+
- name: plan-and-run-success
|
|
377
|
+
description: Plans commands, user confirms, runs successfully, finishes.
|
|
378
|
+
event: manual
|
|
379
|
+
fixture: local.minimal
|
|
380
|
+
mocks:
|
|
381
|
+
ask: "Add CI to run build, lint, and tests"
|
|
382
|
+
refine:
|
|
383
|
+
refined: true
|
|
384
|
+
text: "Ensure project builds, lints, and tests pass via CI"
|
|
385
|
+
plan-commands:
|
|
386
|
+
commands: ["echo build", "echo lint", "echo test"]
|
|
387
|
+
ask-confirm: "yes"
|
|
388
|
+
confirm-interpret:
|
|
389
|
+
proceed: true
|
|
390
|
+
commands: ["echo build","echo lint","echo test"]
|
|
391
|
+
run-commands:
|
|
392
|
+
stdout: '{"failed":0,"results":[{"cmd":"echo build","code":0},{"cmd":"echo lint","code":0},{"cmd":"echo test","code":0}]}'
|
|
393
|
+
expect:
|
|
394
|
+
calls:
|
|
395
|
+
- step: ask
|
|
396
|
+
exactly: 1
|
|
397
|
+
- step: refine
|
|
398
|
+
exactly: 1
|
|
399
|
+
- step: plan-commands
|
|
400
|
+
exactly: 1
|
|
401
|
+
- step: ask-confirm
|
|
402
|
+
exactly: 1
|
|
403
|
+
- step: confirm-interpret
|
|
404
|
+
exactly: 1
|
|
405
|
+
- step: run-commands
|
|
406
|
+
exactly: 1
|
|
407
|
+
- step: finish
|
|
408
|
+
exactly: 1
|
|
409
|
+
outputs:
|
|
410
|
+
- step: run-commands
|
|
411
|
+
path: failed
|
|
412
|
+
equals: 0
|
|
413
|
+
|
|
414
|
+
- name: plan-run-fail-then-refine
|
|
415
|
+
description: First run fails, planner adjusts, second run passes, finish.
|
|
416
|
+
event: manual
|
|
417
|
+
fixture: local.minimal
|
|
418
|
+
mocks:
|
|
419
|
+
ask: "Verify app passes tests"
|
|
420
|
+
refine:
|
|
421
|
+
refined: true
|
|
422
|
+
text: "Run tests to verify app correctness"
|
|
423
|
+
plan-commands[]:
|
|
424
|
+
- { commands: ["node -e \"process.exit(1)\""] }
|
|
425
|
+
- { commands: ["node -e \"process.exit(0)\""] }
|
|
426
|
+
ask-confirm[]:
|
|
427
|
+
- "yes"
|
|
428
|
+
- "yes"
|
|
429
|
+
confirm-interpret:
|
|
430
|
+
proceed: true
|
|
431
|
+
commands: ["node -e \"process.exit(1)\""]
|
|
432
|
+
run-commands[]:
|
|
433
|
+
- { stdout: '{"failed":1,"results":[{"cmd":"node -e \\"process.exit(1)\\"","code":1,"stderr":"fail"}]}' , exit_code: 1 }
|
|
434
|
+
- { stdout: '{"failed":0,"results":[{"cmd":"node -e \\"process.exit(0)\\"","code":0}]}' }
|
|
435
|
+
expect:
|
|
436
|
+
calls:
|
|
437
|
+
- step: ask
|
|
438
|
+
at_least: 1
|
|
439
|
+
- step: refine
|
|
440
|
+
at_least: 1
|
|
441
|
+
- step: plan-commands
|
|
442
|
+
exactly: 2
|
|
443
|
+
- step: ask-confirm
|
|
444
|
+
exactly: 2
|
|
445
|
+
- step: confirm-interpret
|
|
446
|
+
exactly: 2
|
|
447
|
+
- step: run-commands
|
|
448
|
+
exactly: 2
|
|
449
|
+
- step: finish
|
|
450
|
+
exactly: 1
|
|
451
|
+
prompts:
|
|
452
|
+
- step: plan-commands
|
|
453
|
+
index: last
|
|
454
|
+
contains:
|
|
455
|
+
- "Previous attempt failed"
|
|
456
|
+
- "Run results"
|
|
457
|
+
|
|
458
|
+
- name: confirm-amend-json
|
|
459
|
+
description: User pastes JSON array of edited commands; interpreter parses and proceeds.
|
|
460
|
+
event: manual
|
|
461
|
+
fixture: local.minimal
|
|
462
|
+
mocks:
|
|
463
|
+
ask: "Make sure project installs deps and runs tests"
|
|
464
|
+
refine:
|
|
465
|
+
refined: true
|
|
466
|
+
text: "Install dependencies and run tests"
|
|
467
|
+
plan-commands:
|
|
468
|
+
commands: ["npm test"]
|
|
469
|
+
ask-confirm: '["npm ci","npm test"]'
|
|
470
|
+
confirm-interpret:
|
|
471
|
+
proceed: true
|
|
472
|
+
commands: ["npm ci","npm test"]
|
|
473
|
+
run-commands:
|
|
474
|
+
stdout: '{"failed":0,"results":[{"cmd":"npm ci","code":0},{"cmd":"npm test","code":0}]}'
|
|
475
|
+
expect:
|
|
476
|
+
calls:
|
|
477
|
+
- step: ask
|
|
478
|
+
exactly: 1
|
|
479
|
+
- step: refine
|
|
480
|
+
exactly: 1
|
|
481
|
+
- step: plan-commands
|
|
482
|
+
exactly: 1
|
|
483
|
+
- step: ask-confirm
|
|
484
|
+
exactly: 1
|
|
485
|
+
- step: confirm-interpret
|
|
486
|
+
exactly: 1
|
|
487
|
+
- step: run-commands
|
|
488
|
+
exactly: 1
|
|
489
|
+
- step: finish
|
|
490
|
+
exactly: 1
|
|
491
|
+
outputs:
|
|
492
|
+
- step: confirm-interpret
|
|
493
|
+
path: proceed
|
|
494
|
+
equals: true
|
|
495
|
+
- step: confirm-interpret
|
|
496
|
+
path: commands.length
|
|
497
|
+
equals: 2
|
|
498
|
+
|
|
499
|
+
- name: confirm-amend-lines
|
|
500
|
+
description: User pastes multi-line commands with duplicates; interpreter dedupes and proceeds.
|
|
501
|
+
event: manual
|
|
502
|
+
fixture: local.minimal
|
|
503
|
+
mocks:
|
|
504
|
+
ask: "Run lint and tests"
|
|
505
|
+
refine:
|
|
506
|
+
refined: true
|
|
507
|
+
text: "Run lint and tests"
|
|
508
|
+
plan-commands:
|
|
509
|
+
commands: ["npm run lint","npm test"]
|
|
510
|
+
ask-confirm: |
|
|
511
|
+
npm test\nnpm test\n npm run lint
|
|
512
|
+
confirm-interpret:
|
|
513
|
+
proceed: true
|
|
514
|
+
commands: ["npm test","npm run lint"]
|
|
515
|
+
run-commands:
|
|
516
|
+
stdout: '{"failed":0,"results":[{"cmd":"npm test","code":0},{"cmd":"npm run lint","code":0}]}'
|
|
517
|
+
expect:
|
|
518
|
+
calls:
|
|
519
|
+
- step: ask
|
|
520
|
+
exactly: 1
|
|
521
|
+
- step: refine
|
|
522
|
+
exactly: 1
|
|
523
|
+
- step: plan-commands
|
|
524
|
+
exactly: 1
|
|
525
|
+
- step: ask-confirm
|
|
526
|
+
exactly: 1
|
|
527
|
+
- step: confirm-interpret
|
|
528
|
+
exactly: 1
|
|
529
|
+
- step: run-commands
|
|
530
|
+
exactly: 1
|
|
531
|
+
- step: finish
|
|
532
|
+
exactly: 1
|
|
533
|
+
outputs:
|
|
534
|
+
- step: confirm-interpret
|
|
535
|
+
path: proceed
|
|
536
|
+
equals: true
|
|
537
|
+
- step: confirm-interpret
|
|
538
|
+
path: commands.length
|
|
539
|
+
equals: 2
|
|
540
|
+
|
|
541
|
+
- name: user-declines-replan-then-accept
|
|
542
|
+
description: User declines; interpreter routes to replan; user then accepts; run succeeds.
|
|
543
|
+
event: manual
|
|
544
|
+
fixture: local.minimal
|
|
545
|
+
mocks:
|
|
546
|
+
ask: "Set up lint and test checks"
|
|
547
|
+
refine:
|
|
548
|
+
refined: true
|
|
549
|
+
text: "Ensure lint and tests run"
|
|
550
|
+
plan-commands[]:
|
|
551
|
+
- { commands: ["npm test"] }
|
|
552
|
+
- { commands: ["npm run lint","npm test"] }
|
|
553
|
+
ask-confirm[]:
|
|
554
|
+
- "No, add lint too"
|
|
555
|
+
- "yes"
|
|
556
|
+
confirm-interpret[]:
|
|
557
|
+
- { proceed: false, reason: "needs lint" }
|
|
558
|
+
- { proceed: true, commands: ["npm run lint","npm test"] }
|
|
559
|
+
run-commands:
|
|
560
|
+
stdout: '{"failed":0,"results":[{"cmd":"npm run lint","code":0},{"cmd":"npm test","code":0}]}'
|
|
561
|
+
expect:
|
|
562
|
+
calls:
|
|
563
|
+
- step: ask
|
|
564
|
+
at_least: 1
|
|
565
|
+
- step: refine
|
|
566
|
+
at_least: 1
|
|
567
|
+
- step: plan-commands
|
|
568
|
+
exactly: 2
|
|
569
|
+
- step: ask-confirm
|
|
570
|
+
exactly: 2
|
|
571
|
+
- step: confirm-interpret
|
|
572
|
+
exactly: 2
|
|
573
|
+
- step: run-commands
|
|
574
|
+
exactly: 1
|
|
575
|
+
- step: finish
|
|
576
|
+
exactly: 1
|
|
577
|
+
outputs:
|
|
578
|
+
- step: confirm-interpret
|
|
579
|
+
index: last
|
|
580
|
+
path: proceed
|
|
581
|
+
equals: true
|
|
582
|
+
|
|
583
|
+
- name: run-fail-then-success-loop
|
|
584
|
+
description: First run fails; planner sees history; second run succeeds; prompt shows failure context.
|
|
585
|
+
event: manual
|
|
586
|
+
strict: false
|
|
587
|
+
fixture: local.minimal
|
|
588
|
+
mocks:
|
|
589
|
+
ask: "Verify app tests pass"
|
|
590
|
+
refine:
|
|
591
|
+
refined: true
|
|
592
|
+
text: "Run tests to verify app correctness"
|
|
593
|
+
plan-commands[]:
|
|
594
|
+
- { commands: ["node -e \"process.exit(1)\""] }
|
|
595
|
+
- { commands: ["echo ok"] }
|
|
596
|
+
ask-confirm[]:
|
|
597
|
+
- "yes"
|
|
598
|
+
- "yes"
|
|
599
|
+
confirm-interpret[]:
|
|
600
|
+
- { proceed: true, commands: ["node -e \"process.exit(1)\""] }
|
|
601
|
+
- { proceed: true, commands: ["echo ok"] }
|
|
602
|
+
run-commands[]:
|
|
603
|
+
- { stdout: '{"failed":1,"results":[{"cmd":"node -e \\"process.exit(1)\\"","code":1,"stderr":"fail"}]}' , exit_code: 1 }
|
|
604
|
+
- { stdout: '{"failed":0,"results":[{"cmd":"echo ok","code":0}]}' }
|
|
605
|
+
expect:
|
|
606
|
+
calls:
|
|
607
|
+
- step: ask
|
|
608
|
+
at_least: 1
|
|
609
|
+
- step: refine
|
|
610
|
+
at_least: 1
|
|
611
|
+
- step: plan-commands
|
|
612
|
+
exactly: 2
|
|
613
|
+
- step: ask-confirm
|
|
614
|
+
exactly: 2
|
|
615
|
+
- step: confirm-interpret
|
|
616
|
+
exactly: 2
|
|
617
|
+
- step: run-commands
|
|
618
|
+
exactly: 2
|
|
619
|
+
prompts:
|
|
620
|
+
- step: plan-commands
|
|
621
|
+
index: last
|
|
622
|
+
contains:
|
|
623
|
+
- "Previous attempt failed"
|
|
624
|
+
- "Run results"
|