@tea-agent/loop-agent 0.1.0-fe-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +114 -0
- package/CHANGELOG.md +2283 -0
- package/README.md +177 -0
- package/bin/agent-worker.js +22 -0
- package/bin/loop-agent.js +57 -0
- package/dist/adapters/aimax.js +91 -0
- package/dist/adapters/context.js +32 -0
- package/dist/adapters/index.js +29 -0
- package/dist/adapters/loop-agent.js +192 -0
- package/dist/adapters/types.js +1 -0
- package/dist/application/context-usage/skill-resolution-stats.js +263 -0
- package/dist/application/dag/args.js +486 -0
- package/dist/application/dag/generate-task-dag.js +408 -0
- package/dist/application/dag/report-dag.js +14 -0
- package/dist/application/dag/run-dag.js +109 -0
- package/dist/application/dag/validate-dag.js +166 -0
- package/dist/application/evaluation/alias.js +184 -0
- package/dist/application/evaluation/budget.js +192 -0
- package/dist/application/evaluation/campaign-hash.js +47 -0
- package/dist/application/evaluation/campaign-matrix.js +372 -0
- package/dist/application/evaluation/campaign-scorecard.js +135 -0
- package/dist/application/evaluation/campaign.js +370 -0
- package/dist/application/evaluation/candidate-hash.js +75 -0
- package/dist/application/evaluation/candidate.js +69 -0
- package/dist/application/evaluation/corpus-hash.js +38 -0
- package/dist/application/evaluation/corpus.js +56 -0
- package/dist/application/evaluation/experiment.js +294 -0
- package/dist/application/evaluation/ignition.js +198 -0
- package/dist/application/evaluation/integrity-audit.js +162 -0
- package/dist/application/evaluation/outer-loop.js +132 -0
- package/dist/application/evaluation/pi-cell-executor.js +39 -0
- package/dist/application/evaluation/private-verifier.js +46 -0
- package/dist/application/evaluation/promotion-policy.js +151 -0
- package/dist/application/evaluation/proposer.js +98 -0
- package/dist/application/evaluation/replay.js +289 -0
- package/dist/application/evaluation/types.js +652 -0
- package/dist/application/loop/run-action.js +19 -0
- package/dist/application/task-lifecycle/advance.js +1204 -0
- package/dist/application/task-lifecycle/gates.js +130 -0
- package/dist/application/task-lifecycle/index.js +7 -0
- package/dist/application/task-lifecycle/observe.js +424 -0
- package/dist/application/task-lifecycle/plan-transitions.js +251 -0
- package/dist/application/task-lifecycle/recommendations.js +180 -0
- package/dist/application/task-lifecycle/record.js +73 -0
- package/dist/application/task-lifecycle/types.js +1 -0
- package/dist/build-stamp.json +6 -0
- package/dist/cli/catalog.js +24 -0
- package/dist/cli/command-definitions.js +659 -0
- package/dist/cli/help.js +56 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/program.js +647 -0
- package/dist/cli/router.js +13 -0
- package/dist/cli/update/init-surface-notifier.js +167 -0
- package/dist/cli/update/notifier.js +117 -0
- package/dist/cli/update/npm-client.js +151 -0
- package/dist/cli/update/policy.js +92 -0
- package/dist/cli/update/runtime-activity.js +29 -0
- package/dist/cli/update/state.js +68 -0
- package/dist/cli-governance/active-residue-check.js +38 -0
- package/dist/cli.js +57 -0
- package/dist/commands/client-recovery.js +1373 -0
- package/dist/commands/closeout.js +13 -0
- package/dist/commands/coverage-audit.js +14 -0
- package/dist/commands/coverage-report.js +50 -0
- package/dist/commands/cursor-prompt.js +182 -0
- package/dist/commands/dag-approve.js +142 -0
- package/dist/commands/dag-final-verification.js +76 -0
- package/dist/commands/dag-init-hybrid.js +57 -0
- package/dist/commands/dag-reconcile-run.js +5 -0
- package/dist/commands/dag-reconcile-tasks.js +51 -0
- package/dist/commands/dag-reject.js +91 -0
- package/dist/commands/dag-report.js +76 -0
- package/dist/commands/dag-request-interrupt.js +20 -0
- package/dist/commands/dag-rerun-task.js +19 -0
- package/dist/commands/dag-rerun.js +111 -0
- package/dist/commands/dag-resume.js +35 -0
- package/dist/commands/dag-run-task.js +12 -0
- package/dist/commands/dag-validate.js +20 -0
- package/dist/commands/dag-workflow-compile.js +91 -0
- package/dist/commands/dag-workflow-plan.js +130 -0
- package/dist/commands/dag-workflow-validate.js +66 -0
- package/dist/commands/delegate.js +130 -0
- package/dist/commands/docs-archive.js +5 -0
- package/dist/commands/docs-audit.js +6 -0
- package/dist/commands/doctor.js +283 -0
- package/dist/commands/eval.js +1398 -0
- package/dist/commands/examples.js +90 -0
- package/dist/commands/goal.js +92 -0
- package/dist/commands/handoff-check.js +5 -0
- package/dist/commands/harvest.js +44 -0
- package/dist/commands/import-prd.js +81 -0
- package/dist/commands/init-upgrade.js +3085 -0
- package/dist/commands/init.js +3630 -0
- package/dist/commands/inspect.js +11 -0
- package/dist/commands/instructions.js +223 -0
- package/dist/commands/knowledge.js +162 -0
- package/dist/commands/loop-benchmark.js +72 -0
- package/dist/commands/loop.js +251 -0
- package/dist/commands/new-task.js +5 -0
- package/dist/commands/operator.js +44 -0
- package/dist/commands/pi-prompt.js +174 -0
- package/dist/commands/pi-reuse-benchmark.js +153 -0
- package/dist/commands/plan-list.js +5 -0
- package/dist/commands/plan.js +50 -0
- package/dist/commands/promote-run.js +29 -0
- package/dist/commands/reference-index.js +16 -0
- package/dist/commands/run-dag-progress.js +123 -0
- package/dist/commands/run-dag.js +22 -0
- package/dist/commands/spine.js +38 -0
- package/dist/commands/stats.js +113 -0
- package/dist/commands/status.js +57 -0
- package/dist/commands/study-init.js +192 -0
- package/dist/commands/task-advance.js +366 -0
- package/dist/commands/task-contract.js +269 -0
- package/dist/commands/task-source-prepare.js +479 -0
- package/dist/commands/task-status.js +133 -0
- package/dist/commands/workflow.js +259 -0
- package/dist/commands/worktree-create.js +31 -0
- package/dist/commands/worktree-list.js +5 -0
- package/dist/commands/worktree-remove.js +26 -0
- package/dist/executors/config-core.js +5 -0
- package/dist/executors/config.js +2 -0
- package/dist/executors/dag-pi-executor.js +1277 -0
- package/dist/executors/dag-static-executor.js +42 -0
- package/dist/executors/dag.js +3 -0
- package/dist/executors/index.js +6 -0
- package/dist/executors/model-routing.js +71 -0
- package/dist/executors/pi-defaults.js +9 -0
- package/dist/executors/pi-event-serializer.js +65 -0
- package/dist/executors/pi-executor.js +981 -0
- package/dist/executors/pi-playwright-cli-tool.js +1006 -0
- package/dist/executors/pi-prompt-transport.js +198 -0
- package/dist/executors/pi-reuse-benchmark.js +316 -0
- package/dist/executors/pi-runtime-reuse.js +29 -0
- package/dist/executors/pi-sdk-executor.js +722 -0
- package/dist/executors/pi-sdk.js +1 -0
- package/dist/executors/pi-writer-tool-policy.js +266 -0
- package/dist/executors/pi.js +3 -0
- package/dist/executors/playwright-cli-launcher.js +63 -0
- package/dist/executors/process-tree.js +33 -0
- package/dist/executors/shell-executor.js +3055 -0
- package/dist/executors/shell-presets.js +99 -0
- package/dist/executors/shell-verification.js +262 -0
- package/dist/executors/shell-write-guard.js +543 -0
- package/dist/executors/shell.js +3 -0
- package/dist/executors/static.js +1 -0
- package/dist/governance/checks.js +437 -0
- package/dist/governance/document-index-closure.js +164 -0
- package/dist/governance/exec-plans.js +549 -0
- package/dist/governance/harness.js +9 -0
- package/dist/governance/index.js +3 -0
- package/dist/governance/manifest-types.js +254 -0
- package/dist/governance/manifest.js +2 -0
- package/dist/governance/path-guard.js +69 -0
- package/dist/governance/path-guards.js +2 -0
- package/dist/governance/profiles.js +3 -0
- package/dist/governance/requirement-coverage.js +425 -0
- package/dist/governance/skill-safety.js +135 -0
- package/dist/governance/spine-audit.js +155 -0
- package/dist/infrastructure/evaluation/alias-store.js +199 -0
- package/dist/infrastructure/evaluation/campaign-store.js +154 -0
- package/dist/infrastructure/evaluation/candidate-store.js +439 -0
- package/dist/infrastructure/evaluation/corpus-store.js +181 -0
- package/dist/infrastructure/evaluation/experiment-store.js +124 -0
- package/dist/infrastructure/evaluation/ignition-store.js +82 -0
- package/dist/infrastructure/evaluation/private-verifier-store.js +145 -0
- package/dist/infrastructure/evaluation/proposer-store.js +78 -0
- package/dist/infrastructure/evaluation/store.js +40 -0
- package/dist/infrastructure/harness/active-residue-policy.js +73 -0
- package/dist/infrastructure/harness/artifact-store.js +72 -0
- package/dist/infrastructure/harness/atomic-write.js +50 -0
- package/dist/infrastructure/harness/completed-facts-guard.js +40 -0
- package/dist/infrastructure/harness/loop-action-store.js +20 -0
- package/dist/infrastructure/harness/loop-store.js +41 -0
- package/dist/infrastructure/harness/one-shot-run-store.js +94 -0
- package/dist/infrastructure/harness/task-store.js +108 -0
- package/dist/records/closeout.js +2 -0
- package/dist/records/harvest.js +215 -0
- package/dist/records/index.js +3 -0
- package/dist/records/one-shot-runs.js +386 -0
- package/dist/records/promotion.js +200 -0
- package/dist/shared/artifacts-core.js +107 -0
- package/dist/shared/artifacts.js +2 -0
- package/dist/shared/context-files.js +32 -0
- package/dist/shared/context.js +2 -0
- package/dist/shared/copy-dir.js +17 -0
- package/dist/shared/git-progress.js +172 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/logger.js +17 -0
- package/dist/shared/one-shot-prompt-args.js +98 -0
- package/dist/shared/openspec-spec.js +125 -0
- package/dist/shared/operator/capabilities.js +2659 -0
- package/dist/shared/operator/command-lifecycle.js +94 -0
- package/dist/shared/operator/envelope.js +59 -0
- package/dist/shared/operator/index.js +5 -0
- package/dist/shared/operator/registry.js +38 -0
- package/dist/shared/operator/types.js +5 -0
- package/dist/shared/output-truncation.js +37 -0
- package/dist/shared/package-metadata.js +530 -0
- package/dist/shared/path-refs.js +31 -0
- package/dist/shared/pi-retry-settings.js +23 -0
- package/dist/shared/playwright-cli-command-policy.js +41 -0
- package/dist/shared/preview.js +39 -0
- package/dist/shared/prompts.js +26 -0
- package/dist/shared/reference-context.js +264 -0
- package/dist/shared/resilient-git.js +133 -0
- package/dist/shared/runtime-activity.js +6 -0
- package/dist/shared/timeout-policy.js +24 -0
- package/dist/shared/timeout.js +1 -0
- package/dist/shared/types.js +5 -0
- package/dist/sidecars/cursor-prompt/executor.js +428 -0
- package/dist/sidecars/cursor-prompt/index.js +3 -0
- package/dist/sidecars/cursor-prompt/stream.js +121 -0
- package/dist/task/config-types.js +235 -0
- package/dist/task/config.js +2 -0
- package/dist/task/contract/adopt.js +166 -0
- package/dist/task/contract/apply.js +326 -0
- package/dist/task/contract/canonicalize.js +60 -0
- package/dist/task/contract/constants.js +30 -0
- package/dist/task/contract/diff.js +177 -0
- package/dist/task/contract/hash.js +42 -0
- package/dist/task/contract/import-revision.js +96 -0
- package/dist/task/contract/index.js +17 -0
- package/dist/task/contract/journal.js +155 -0
- package/dist/task/contract/lock.js +153 -0
- package/dist/task/contract/observe.js +296 -0
- package/dist/task/contract/paths.js +19 -0
- package/dist/task/contract/project.js +185 -0
- package/dist/task/contract/recover.js +312 -0
- package/dist/task/contract/request-ledger.js +37 -0
- package/dist/task/contract/schema.js +153 -0
- package/dist/task/contract/transaction.js +160 -0
- package/dist/task/contract/types.js +1 -0
- package/dist/task/contract/validate-draft.js +106 -0
- package/dist/task/dag-source-paths.js +50 -0
- package/dist/task/delegate.js +208 -0
- package/dist/task/frontend-preflight.js +131 -0
- package/dist/task/frontend-project-capability.js +570 -0
- package/dist/task/goal-audit.js +51 -0
- package/dist/task/goal-policy.js +8 -0
- package/dist/task/goal.js +3 -0
- package/dist/task/ids.js +1 -0
- package/dist/task/index.js +12 -0
- package/dist/task/lifecycle.js +1 -0
- package/dist/task/operator/capabilities.js +6 -0
- package/dist/task/operator/envelope.js +2 -0
- package/dist/task/operator/index.js +5 -0
- package/dist/task/operator/registry.js +2 -0
- package/dist/task/operator/types.js +1 -0
- package/dist/task/paths.js +1 -0
- package/dist/task/read-model.js +140 -0
- package/dist/task/runtime.js +708 -0
- package/dist/task/source-prepare/artifact-meta.js +137 -0
- package/dist/task/source-prepare/build-draft.js +232 -0
- package/dist/task/source-prepare/completeness.js +248 -0
- package/dist/task/source-prepare/index.js +10 -0
- package/dist/task/source-prepare/parse-intent.js +496 -0
- package/dist/task/source-prepare/path-policy.js +197 -0
- package/dist/task/source-prepare/placeholder-paths.js +77 -0
- package/dist/task/source-prepare/prepare.js +920 -0
- package/dist/task/source-prepare/reference-integrity.js +290 -0
- package/dist/task/source-prepare/semantic-intake.js +717 -0
- package/dist/task/source-prepare/types.js +7 -0
- package/dist/task/source-references.js +228 -0
- package/dist/task/source-state.js +1 -0
- package/dist/task/state.js +41 -0
- package/dist/task/subagent-guidance.js +1 -0
- package/dist/task/task-demand-routing.js +443 -0
- package/dist/task/workflow-state-types.js +92 -0
- package/dist/task/worktree-cleanup.js +140 -0
- package/dist/task/worktree.js +388 -0
- package/dist/verification/maven/cache.js +142 -0
- package/dist/verification/maven/index.js +120 -0
- package/dist/verification/maven/plan-commands.js +421 -0
- package/dist/verification/maven/pom-static.js +136 -0
- package/dist/verification/maven/scope-resolve.js +153 -0
- package/dist/verification/maven/stale.js +130 -0
- package/dist/verification/maven/types.js +23 -0
- package/dist/verification/maven/workspace-graph.js +322 -0
- package/dist/worker/cli.js +957 -0
- package/dist/worker/closeout/apply.js +73 -0
- package/dist/worker/closeout/preview.js +30 -0
- package/dist/worker/console/app-data.js +316 -0
- package/dist/worker/console/chat/artifact-card.js +30 -0
- package/dist/worker/console/chat/assistant-content.js +121 -0
- package/dist/worker/console/chat/chat-event-store.js +981 -0
- package/dist/worker/console/chat/chat-ui-policy.js +25 -0
- package/dist/worker/console/chat/compaction-errors.js +64 -0
- package/dist/worker/console/chat/composer-draft-store.js +45 -0
- package/dist/worker/console/chat/context-panel.js +54 -0
- package/dist/worker/console/chat/contract-apply-receipt-store.js +174 -0
- package/dist/worker/console/chat/explore-tools.js +299 -0
- package/dist/worker/console/chat/human-gate-card.js +45 -0
- package/dist/worker/console/chat/interview-adapter.js +149 -0
- package/dist/worker/console/chat/mcp-inventory.js +221 -0
- package/dist/worker/console/chat/model-resolver.js +215 -0
- package/dist/worker/console/chat/operation-card.js +92 -0
- package/dist/worker/console/chat/pi-console-config.js +376 -0
- package/dist/worker/console/chat/pi-runtime.js +2446 -0
- package/dist/worker/console/chat/repo-browser.js +140 -0
- package/dist/worker/console/chat/repo-walk.js +125 -0
- package/dist/worker/console/chat/resource-loader.js +59 -0
- package/dist/worker/console/chat/resource-preferences-store.js +152 -0
- package/dist/worker/console/chat/routes.js +3137 -0
- package/dist/worker/console/chat/runtime-context.js +102 -0
- package/dist/worker/console/chat/runtime-selection.js +96 -0
- package/dist/worker/console/chat/semantic-activity.js +489 -0
- package/dist/worker/console/chat/session-store.js +484 -0
- package/dist/worker/console/chat/shortcuts.js +217 -0
- package/dist/worker/console/chat/tool-adapter.js +131 -0
- package/dist/worker/console/chat/tool-preview.js +247 -0
- package/dist/worker/console/chat/tools.js +212 -0
- package/dist/worker/console/chat/turn-execution-registry.js +82 -0
- package/dist/worker/console/chat/turn-process.js +346 -0
- package/dist/worker/console/chat/usage.js +165 -0
- package/dist/worker/console/chat/workspace-landing.js +103 -0
- package/dist/worker/console/dag-confirmation.js +347 -0
- package/dist/worker/console/dag-execution-receipt.js +393 -0
- package/dist/worker/console/doctor.js +230 -0
- package/dist/worker/console/draft-store.js +158 -0
- package/dist/worker/console/harness-pi-model-matrix.js +137 -0
- package/dist/worker/console/human-gate-token.js +130 -0
- package/dist/worker/console/index.js +17 -0
- package/dist/worker/console/inspect-split.js +82 -0
- package/dist/worker/console/interview/assessment.js +67 -0
- package/dist/worker/console/interview/grill-me.js +277 -0
- package/dist/worker/console/interview/session.js +100 -0
- package/dist/worker/console/interview/tools.js +109 -0
- package/dist/worker/console/loopback.js +16 -0
- package/dist/worker/console/mutation-gate-receipt-store.js +184 -0
- package/dist/worker/console/night-aux-ticker.js +146 -0
- package/dist/worker/console/observe-health-match.js +179 -0
- package/dist/worker/console/observe-link.js +42 -0
- package/dist/worker/console/open-browser.js +134 -0
- package/dist/worker/console/operation-run-facts.js +190 -0
- package/dist/worker/console/operation-runner.js +353 -0
- package/dist/worker/console/operation-sse.js +184 -0
- package/dist/worker/console/operation-store.js +169 -0
- package/dist/worker/console/operation-wait.js +355 -0
- package/dist/worker/console/operator-actions.js +3768 -0
- package/dist/worker/console/operator-selection.js +105 -0
- package/dist/worker/console/operator-surface-health.js +24 -0
- package/dist/worker/console/operator-user-error.js +45 -0
- package/dist/worker/console/pi-readiness.js +288 -0
- package/dist/worker/console/prd-identity.js +102 -0
- package/dist/worker/console/prd-intake-bridge.js +441 -0
- package/dist/worker/console/prd-reference-discovery.js +124 -0
- package/dist/worker/console/recovery-cta.js +320 -0
- package/dist/worker/console/recovery-error-copy.js +198 -0
- package/dist/worker/console/recovery-selection.js +107 -0
- package/dist/worker/console/repo-fingerprint.js +35 -0
- package/dist/worker/console/resolve-dag-run-for-task.js +115 -0
- package/dist/worker/console/resource-loader.js +95 -0
- package/dist/worker/console/routes.js +475 -0
- package/dist/worker/console/security.js +170 -0
- package/dist/worker/console/server.js +357 -0
- package/dist/worker/console/sibling-controller.js +33 -0
- package/dist/worker/console/static/assets/abnfDiagram-N423BO3Z-BmOEx0gA.js +1 -0
- package/dist/worker/console/static/assets/arc-BGiVVe8b.js +1 -0
- package/dist/worker/console/static/assets/architectureDiagram-T3A2C74G-nDdu4rgJ.js +36 -0
- package/dist/worker/console/static/assets/blockDiagram-VBNYF7ZC-Bb5u0BWf.js +132 -0
- package/dist/worker/console/static/assets/c4Diagram-5PPSVZJV-BlhC0j94.js +10 -0
- package/dist/worker/console/static/assets/channel-Tl-FkUqr.js +1 -0
- package/dist/worker/console/static/assets/chunk-2GRJ4B5K-Ai8_qQXI.js +1 -0
- package/dist/worker/console/static/assets/chunk-2Q5K7J3B-B9gyCjqX.js +1 -0
- package/dist/worker/console/static/assets/chunk-5RXB4S5H-Bzbj3zGH.js +231 -0
- package/dist/worker/console/static/assets/chunk-5VM5RSS4-BT415PvT.js +15 -0
- package/dist/worker/console/static/assets/chunk-6Q2QTUOP-D_A5_5QL.js +88 -0
- package/dist/worker/console/static/assets/chunk-GF5L2VYU-srJkaP3f.js +206 -0
- package/dist/worker/console/static/assets/chunk-JWPE2WC7-UYGvEP4l.js +1 -0
- package/dist/worker/console/static/assets/chunk-KBJHAD2P-B8luBrrz.js +1 -0
- package/dist/worker/console/static/assets/chunk-RYQCIY6F-DN7wXZSq.js +1 -0
- package/dist/worker/console/static/assets/chunk-XXDRQBXY-DXKyMuKS.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BaehtRk4.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BaehtRk4.js +1 -0
- package/dist/worker/console/static/assets/cose-bilkent-JH36ORCC-dqvoynXj.js +1 -0
- package/dist/worker/console/static/assets/cynefin-VYW2F7L2--PcyL34A.js +166 -0
- package/dist/worker/console/static/assets/cynefinDiagram-MW4NZA55-DvWs_hTY.js +62 -0
- package/dist/worker/console/static/assets/cytoscape.esm-yzknjiTM.js +321 -0
- package/dist/worker/console/static/assets/dagre-VZM6K2ZE-DxeIxbyO.js +4 -0
- package/dist/worker/console/static/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/worker/console/static/assets/diagram-7IWD3JNH-DPCG61Of.js +30 -0
- package/dist/worker/console/static/assets/diagram-B4RE2ZJO-CmuU50-U.js +3 -0
- package/dist/worker/console/static/assets/diagram-LBJQPF4R-B61XLD_v.js +24 -0
- package/dist/worker/console/static/assets/diagram-Q27KOJAE-BB7HTRRY.js +24 -0
- package/dist/worker/console/static/assets/diagram-UB23O5K3-DvkboAIp.js +41 -0
- package/dist/worker/console/static/assets/ebnfDiagram-BXEA7PRR-BdJ_y1fL.js +1 -0
- package/dist/worker/console/static/assets/erDiagram-JOGREHBK-9bUBZTRi.js +85 -0
- package/dist/worker/console/static/assets/flowDiagram-UKHOOZJN-Dw4L4RBa.js +156 -0
- package/dist/worker/console/static/assets/ganttDiagram-PKOTCBZU-Jr82N_QP.js +292 -0
- package/dist/worker/console/static/assets/gitGraphDiagram-DS77QQ5N-DAz9wFLr.js +106 -0
- package/dist/worker/console/static/assets/graph-DOmOIIwC.js +1 -0
- package/dist/worker/console/static/assets/index-B7Y-0g3J.css +1 -0
- package/dist/worker/console/static/assets/index-DkCrqaYg.js +325 -0
- package/dist/worker/console/static/assets/infoDiagram-6WML65LV-CBB5Np7y.js +2 -0
- package/dist/worker/console/static/assets/init-Gi6I4Gst.js +1 -0
- package/dist/worker/console/static/assets/ishikawaDiagram-WSZJBQD7-D8IOp94y.js +70 -0
- package/dist/worker/console/static/assets/journeyDiagram-NVQOT4AX-Dgd3AHGG.js +139 -0
- package/dist/worker/console/static/assets/kanban-definition-27J2QSJJ-BmYOxLE9.js +89 -0
- package/dist/worker/console/static/assets/layout-D-LzfAck.js +1 -0
- package/dist/worker/console/static/assets/linear-DfYTEF6J.js +1 -0
- package/dist/worker/console/static/assets/map-DxJ2ADlA.js +1 -0
- package/dist/worker/console/static/assets/mermaid.core-BjuFPRqa.js +308 -0
- package/dist/worker/console/static/assets/mindmap-definition-FAOFIHXS-CLyUViGd.js +96 -0
- package/dist/worker/console/static/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/worker/console/static/assets/pegDiagram-VL7TDLO6-BvX2Di4-.js +1 -0
- package/dist/worker/console/static/assets/pieDiagram-7S7Q4E2Y-BFj0_OLv.js +39 -0
- package/dist/worker/console/static/assets/quadrantDiagram-CIZ2JOQS-BIUrD_hx.js +7 -0
- package/dist/worker/console/static/assets/railroadDiagram-AXF67PYL-CHBB48fj.js +1 -0
- package/dist/worker/console/static/assets/requirementDiagram-LRYGKXZP-sJrYw2Sf.js +84 -0
- package/dist/worker/console/static/assets/sankeyDiagram-W5VNT64P-BzHH6fPR.js +40 -0
- package/dist/worker/console/static/assets/sequenceDiagram-SI44F4Z6-7QCnelCt.js +162 -0
- package/dist/worker/console/static/assets/sizeCapture-X5ZJPWSS-sDYSxn72.js +1 -0
- package/dist/worker/console/static/assets/stateDiagram-OKZ733FA-XpiUdwzm.js +1 -0
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-eEhq2A8Y.js +1 -0
- package/dist/worker/console/static/assets/swimlanes-SLNWSIFB-DvqgNPzD.js +2 -0
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-la8AC7fo.js +8 -0
- package/dist/worker/console/static/assets/timeline-definition-Z64GVDOM-2TyOYNx0.js +120 -0
- package/dist/worker/console/static/assets/vennDiagram-T6HMQDX7-B-nM6wM2.js +34 -0
- package/dist/worker/console/static/assets/wardleyDiagram-T6FBY63Y-B86wPdbr.js +78 -0
- package/dist/worker/console/static/assets/xychartDiagram-ELKLHX3M-Dr1C4AQz.js +7 -0
- package/dist/worker/console/static/favicon.svg +37 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/worker/console/static/fonts/katex/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/worker/console/static/index.html +15 -0
- package/dist/worker/console/static-src/app/console-types.js +184 -0
- package/dist/worker/console/static-src/app/useConsoleShell.js +101 -0
- package/dist/worker/console/static-src/app/useOperatorActions.js +324 -0
- package/dist/worker/console/static-src/app/usePrdImport.js +172 -0
- package/dist/worker/console/static-src/app/useRecoveryActions.js +289 -0
- package/dist/worker/console/static-src/app/useRecoveryConsole.js +425 -0
- package/dist/worker/console/static-src/app/useTaskWizard.js +296 -0
- package/dist/worker/console/static-src/chat-markdown-security.js +38 -0
- package/dist/worker/console/static-src/chat-view-types.js +2 -0
- package/dist/worker/console/static-src/night/night-types.js +24 -0
- package/dist/worker/console/static-src/night/useNightBoard.js +94 -0
- package/dist/worker/console/static-src/night/useNightWizard.js +171 -0
- package/dist/worker/console/static-src/night-prepare-result.js +118 -0
- package/dist/worker/console/static-src/operator-chat/activity-journey.js +125 -0
- package/dist/worker/console/static-src/operator-chat/activity-rail-presentation.js +73 -0
- package/dist/worker/console/static-src/operator-chat/activity-references.js +20 -0
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +420 -0
- package/dist/worker/console/static-src/operator-chat/format.js +71 -0
- package/dist/worker/console/static-src/operator-chat/landing-density.js +23 -0
- package/dist/worker/console/static-src/operator-chat/mutation-gate.js +45 -0
- package/dist/worker/console/static-src/operator-chat/refs.js +86 -0
- package/dist/worker/console/static-src/operator-chat/resource-auto-invocation.js +91 -0
- package/dist/worker/console/static-src/operator-chat/resource-diagnostics.js +204 -0
- package/dist/worker/console/static-src/operator-chat/runtime-snapshot-store.js +257 -0
- package/dist/worker/console/static-src/operator-chat/session-title-watcher.js +128 -0
- package/dist/worker/console/static-src/operator-chat/sidebar-split.js +90 -0
- package/dist/worker/console/static-src/operator-chat/slash-palette-layout.js +24 -0
- package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +141 -0
- package/dist/worker/console/static-src/operator-chat/spatial-overlay.js +38 -0
- package/dist/worker/console/static-src/operator-chat/tools-catalog.js +77 -0
- package/dist/worker/console/static-src/operator-chat/turn-stream-controller.js +690 -0
- package/dist/worker/console/static-src/operator-chat/turn-submission.js +158 -0
- package/dist/worker/console/static-src/operator-chat/types.js +1 -0
- package/dist/worker/console/static-src/operator-chat/useActivityRailTransition.js +59 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +495 -0
- package/dist/worker/console/static-src/operator-chat/useChatStream.js +780 -0
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +280 -0
- package/dist/worker/console/static-src/operator-chat/useComposer.js +257 -0
- package/dist/worker/console/static-src/operator-chat/useInterview.js +108 -0
- package/dist/worker/console/static-src/operator-chat/useOverlayFocus.js +84 -0
- package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +148 -0
- package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +358 -0
- package/dist/worker/console/static-src/operator-chat/useRuntimeSnapshot.js +196 -0
- package/dist/worker/console/static-src/operator-chat/useWorkspaceLayout.js +58 -0
- package/dist/worker/console/static-src/operator-chat/workspace-layout-mode.js +35 -0
- package/dist/worker/console/static-src/prd-file-import.js +218 -0
- package/dist/worker/console/vite.config.js +27 -0
- package/dist/worker/console/workflow-kinds.js +46 -0
- package/dist/worker/delivery/final-verification.js +302 -0
- package/dist/worker/delivery/git-transaction.js +497 -0
- package/dist/worker/delivery/package.js +537 -0
- package/dist/worker/delivery/verification-bundle.js +544 -0
- package/dist/worker/feature/acceptance-policy.js +227 -0
- package/dist/worker/feature/advance.js +301 -0
- package/dist/worker/feature/decision-loader.js +99 -0
- package/dist/worker/feature/discover.js +14 -0
- package/dist/worker/feature/doctor.js +223 -0
- package/dist/worker/feature/fullstack-validate.js +337 -0
- package/dist/worker/feature/next-action.js +140 -0
- package/dist/worker/feature/profile-schema.js +47 -0
- package/dist/worker/feature/ready-plan-projection.js +82 -0
- package/dist/worker/feature/reducer.js +137 -0
- package/dist/worker/feature/review.js +678 -0
- package/dist/worker/feature/run.js +390 -0
- package/dist/worker/feature/scaffold.js +812 -0
- package/dist/worker/feature/types.js +1 -0
- package/dist/worker/follow-up/approve.js +273 -0
- package/dist/worker/follow-up/factory.js +234 -0
- package/dist/worker/follow-up/paths.js +25 -0
- package/dist/worker/follow-up/policy.js +26 -0
- package/dist/worker/follow-up/schema.js +93 -0
- package/dist/worker/follow-up/store.js +96 -0
- package/dist/worker/loop-agent/command-result.js +1 -0
- package/dist/worker/loop-agent/controller-protocol.js +143 -0
- package/dist/worker/loop-agent/loop-agent-client.js +489 -0
- package/dist/worker/loop-agent/parse-json.js +14 -0
- package/dist/worker/materialize/harness-task-lifecycle-probe.js +126 -0
- package/dist/worker/materialize/harness-task-lineage.js +220 -0
- package/dist/worker/materialize/harness-task-materializer.js +648 -0
- package/dist/worker/metrics/projector.js +139 -0
- package/dist/worker/observability/dag-execution-trajectory.js +591 -0
- package/dist/worker/observability/event-history.js +216 -0
- package/dist/worker/observability/event-store.js +83 -0
- package/dist/worker/observability/events.js +79 -0
- package/dist/worker/observability/interrupt-eligibility.js +264 -0
- package/dist/worker/observability/progress-composite.js +34 -0
- package/dist/worker/observability/read-model.js +2499 -0
- package/dist/worker/observability/snapshot-store.js +43 -0
- package/dist/worker/observability/types.js +1 -0
- package/dist/worker/observe/dag-node-execution-output.js +180 -0
- package/dist/worker/observe/dag-run-artifacts.js +90 -0
- package/dist/worker/observe/health.js +58 -0
- package/dist/worker/observe/night-jobs.js +104 -0
- package/dist/worker/observe/node-input.js +441 -0
- package/dist/worker/observe/paths.js +174 -0
- package/dist/worker/observe/routes.js +1077 -0
- package/dist/worker/observe/server.js +117 -0
- package/dist/worker/observe/spec-evidence.js +398 -0
- package/dist/worker/observe/static/api.js +117 -0
- package/dist/worker/observe/static/app.js +169 -0
- package/dist/worker/observe/static/constants.js +182 -0
- package/dist/worker/observe/static/copy.js +67 -0
- package/dist/worker/observe/static/custom-select.js +567 -0
- package/dist/worker/observe/static/dag-edge-routing.js +368 -0
- package/dist/worker/observe/static/dag-helpers.js +161 -0
- package/dist/worker/observe/static/dag-history-labels.js +95 -0
- package/dist/worker/observe/static/dag-layout.d.ts +36 -0
- package/dist/worker/observe/static/dag-layout.js +163 -0
- package/dist/worker/observe/static/dag-model.js +145 -0
- package/dist/worker/observe/static/dom.js +220 -0
- package/dist/worker/observe/static/favicon.svg +37 -0
- package/dist/worker/observe/static/format-pool.d.ts +71 -0
- package/dist/worker/observe/static/format-pool.js +153 -0
- package/dist/worker/observe/static/format.js +347 -0
- package/dist/worker/observe/static/index.html +409 -0
- package/dist/worker/observe/static/kpi.js +78 -0
- package/dist/worker/observe/static/markdown-render.js +124 -0
- package/dist/worker/observe/static/operator-chrome.css +517 -0
- package/dist/worker/observe/static/operator-chrome.d.ts +83 -0
- package/dist/worker/observe/static/operator-chrome.js +623 -0
- package/dist/worker/observe/static/relations.js +133 -0
- package/dist/worker/observe/static/router.js +156 -0
- package/dist/worker/observe/static/run-processing.js +148 -0
- package/dist/worker/observe/static/shell-chrome.js +65 -0
- package/dist/worker/observe/static/state.js +496 -0
- package/dist/worker/observe/static/styles.css +3567 -0
- package/dist/worker/observe/static/views/batch.js +227 -0
- package/dist/worker/observe/static/views/dag-graph.js +508 -0
- package/dist/worker/observe/static/views/dag-inspector.js +1722 -0
- package/dist/worker/observe/static/views/dag-trajectory.js +313 -0
- package/dist/worker/observe/static/views/dag.js +483 -0
- package/dist/worker/observe/static/views/dags.js +877 -0
- package/dist/worker/observe/static/views/dashboard.js +747 -0
- package/dist/worker/observe/static/views/failures.js +143 -0
- package/dist/worker/observe/static/views/feature.js +492 -0
- package/dist/worker/observe/static/views/night.js +201 -0
- package/dist/worker/observe/static/views/pool.js +708 -0
- package/dist/worker/observe/static/views/run.js +453 -0
- package/dist/worker/observe/static/views/session-timeline.js +771 -0
- package/dist/worker/observe/static/views/shell.js +7 -0
- package/dist/worker/observe/static/views/task.js +315 -0
- package/dist/worker/observe/static/views/timeline.js +163 -0
- package/dist/worker/outcomes/adapters.js +153 -0
- package/dist/worker/outcomes/declared-artifacts.js +103 -0
- package/dist/worker/outcomes/evidence-tokens.js +29 -0
- package/dist/worker/outcomes/gate.js +40 -0
- package/dist/worker/outcomes/projector.js +227 -0
- package/dist/worker/outcomes/registry.js +1 -0
- package/dist/worker/outcomes/store.js +131 -0
- package/dist/worker/outcomes/types.js +79 -0
- package/dist/worker/pool/attempt-identity.js +41 -0
- package/dist/worker/pool/attempt-lease.js +184 -0
- package/dist/worker/pool/attempt-transition.js +210 -0
- package/dist/worker/pool/begin-attempt-with-lease.js +26 -0
- package/dist/worker/pool/begin-attempt.js +35 -0
- package/dist/worker/pool/doctor.js +165 -0
- package/dist/worker/pool/failure-routing.js +182 -0
- package/dist/worker/pool/migrate-state.js +303 -0
- package/dist/worker/pool/reconcile.js +285 -0
- package/dist/worker/pool/recovery-decision.js +163 -0
- package/dist/worker/pool/run-owner-store.js +126 -0
- package/dist/worker/pool/run-store.js +360 -0
- package/dist/worker/pool/runtime-reconcile-inventory.js +127 -0
- package/dist/worker/pool/state-projection.js +57 -0
- package/dist/worker/pool/types.js +17 -0
- package/dist/worker/pool/validation.js +144 -0
- package/dist/worker/preflight.js +157 -0
- package/dist/worker/profile-mapping.js +76 -0
- package/dist/worker/progress-reporter.js +63 -0
- package/dist/worker/report/morning-report.js +155 -0
- package/dist/worker/repos/repo-resolver.js +23 -0
- package/dist/worker/run-task/execute-prepared-task.js +178 -0
- package/dist/worker/run-task/run-task.js +912 -0
- package/dist/worker/runner/run-ready.js +561 -0
- package/dist/worker/runner/single-task-attempt.js +176 -0
- package/dist/worker/scheduler/admission.js +547 -0
- package/dist/worker/scheduler/auto-followup.js +99 -0
- package/dist/worker/scheduler/cli.js +644 -0
- package/dist/worker/scheduler/clock-install/darwin-launchd.js +238 -0
- package/dist/worker/scheduler/clock-install/linux-systemd-user.js +224 -0
- package/dist/worker/scheduler/clock-install/types.js +1 -0
- package/dist/worker/scheduler/clock-install/win32-schtasks.js +227 -0
- package/dist/worker/scheduler/clock-install.js +284 -0
- package/dist/worker/scheduler/clock.js +420 -0
- package/dist/worker/scheduler/dispatcher.js +503 -0
- package/dist/worker/scheduler/doctor.js +431 -0
- package/dist/worker/scheduler/evidence.js +170 -0
- package/dist/worker/scheduler/git-base.js +90 -0
- package/dist/worker/scheduler/index.js +25 -0
- package/dist/worker/scheduler/lease.js +114 -0
- package/dist/worker/scheduler/lifecycle.js +348 -0
- package/dist/worker/scheduler/lock.js +80 -0
- package/dist/worker/scheduler/morning-window.js +191 -0
- package/dist/worker/scheduler/night-git-finalizer.js +114 -0
- package/dist/worker/scheduler/night-harvest.js +412 -0
- package/dist/worker/scheduler/paths.js +92 -0
- package/dist/worker/scheduler/prepared-attempt-recovery.js +471 -0
- package/dist/worker/scheduler/recovery.js +277 -0
- package/dist/worker/scheduler/reservation.js +146 -0
- package/dist/worker/scheduler/retry.js +199 -0
- package/dist/worker/scheduler/scheduler-loop.js +272 -0
- package/dist/worker/scheduler/store.js +275 -0
- package/dist/worker/scheduler/traceability.js +54 -0
- package/dist/worker/scheduler/trigger.js +258 -0
- package/dist/worker/scheduler/types.js +369 -0
- package/dist/worker/scheduler/workspace-adapter.js +128 -0
- package/dist/worker/task-graph/acceptance-schema.js +40 -0
- package/dist/worker/task-graph/ready-planner.js +267 -0
- package/dist/worker/task-graph/ready-queue.js +23 -0
- package/dist/worker/task-graph/task-graph-schema.js +59 -0
- package/dist/worker/task-graph/types.js +1 -0
- package/dist/worker/task-graph/validate.js +293 -0
- package/dist/worker/task-spec/complexity-mapping.js +8 -0
- package/dist/worker/task-spec/schema.js +125 -0
- package/dist/worker/task-spec/types.js +1 -0
- package/dist/worker/task-spec/validate.js +391 -0
- package/dist/worker/task-spec/workflow-routing.js +149 -0
- package/dist/workflows/dag/authoring.js +8 -0
- package/dist/workflows/dag/authority-surface.js +138 -0
- package/dist/workflows/dag/backend-test-analysis-contract.js +507 -0
- package/dist/workflows/dag/backend-test-case-coverage-analysis.js +1985 -0
- package/dist/workflows/dag/backend-test-case-manifest.js +638 -0
- package/dist/workflows/dag/backend-test-classification-contract.js +38 -0
- package/dist/workflows/dag/backend-test-contract-envelope.js +205 -0
- package/dist/workflows/dag/backend-test-coverage-contract.js +202 -0
- package/dist/workflows/dag/backend-test-execution-contract.js +715 -0
- package/dist/workflows/dag/backend-test-gap-fill.js +205 -0
- package/dist/workflows/dag/backend-test-intake-context.js +178 -0
- package/dist/workflows/dag/backend-test-layout.js +133 -0
- package/dist/workflows/dag/backend-test-markdown-workflow.js +1984 -0
- package/dist/workflows/dag/backend-test-module-stem.js +26 -0
- package/dist/workflows/dag/backend-test-pytest-collection.js +859 -0
- package/dist/workflows/dag/backend-test-result-contract.js +1030 -0
- package/dist/workflows/dag/backend-test-scenario-param.js +1670 -0
- package/dist/workflows/dag/backend-test-scenario-partitions.js +249 -0
- package/dist/workflows/dag/backend-test-semantic-review-contract.js +36 -0
- package/dist/workflows/dag/backend-test-stability-contract.js +57 -0
- package/dist/workflows/dag/backend-test-writer-completeness.js +1058 -0
- package/dist/workflows/dag/budget-enforcement.js +67 -0
- package/dist/workflows/dag/canvas-observer.js +474 -0
- package/dist/workflows/dag/context-policy.js +137 -0
- package/dist/workflows/dag/contract-output-registry.js +14 -0
- package/dist/workflows/dag/contract-validator-registrations.js +10 -0
- package/dist/workflows/dag/controller-identity.js +104 -0
- package/dist/workflows/dag/convergence/controller.js +596 -0
- package/dist/workflows/dag/decision-envelope.js +557 -0
- package/dist/workflows/dag/decision-evidence.js +153 -0
- package/dist/workflows/dag/decision-gates.js +1 -0
- package/dist/workflows/dag/dynamic-runtime/condition.js +48 -0
- package/dist/workflows/dag/dynamic-runtime/loop-until.js +161 -0
- package/dist/workflows/dag/dynamic-runtime/map.js +435 -0
- package/dist/workflows/dag/dynamic-runtime/reduction.js +72 -0
- package/dist/workflows/dag/dynamic-runtime/shared.js +203 -0
- package/dist/workflows/dag/event-observer.js +132 -0
- package/dist/workflows/dag/executor-registry.js +23 -0
- package/dist/workflows/dag/facts.js +4 -0
- package/dist/workflows/dag/failure-category.js +118 -0
- package/dist/workflows/dag/failure-routing.js +105 -0
- package/dist/workflows/dag/final-verification.js +180 -0
- package/dist/workflows/dag/frontend-implementation-contract.js +1911 -0
- package/dist/workflows/dag/frontend-lint-baseline.js +474 -0
- package/dist/workflows/dag/frontend-plan-render.js +90 -0
- package/dist/workflows/dag/frontend-prewrite-gate.js +1011 -0
- package/dist/workflows/dag/frontend-project-capability.js +1 -0
- package/dist/workflows/dag/frontend-recovery-plan.js +73 -0
- package/dist/workflows/dag/frontend-recovery-root-manifest.js +123 -0
- package/dist/workflows/dag/frontend-recovery-run.js +539 -0
- package/dist/workflows/dag/frontend-repair.js +541 -0
- package/dist/workflows/dag/frontend-review-context.js +116 -0
- package/dist/workflows/dag/frontend-risk.js +161 -0
- package/dist/workflows/dag/frontend-test-case-checklist.js +343 -0
- package/dist/workflows/dag/frontend-test-case-manifest.js +104 -0
- package/dist/workflows/dag/frontend-test-case-quality.js +105 -0
- package/dist/workflows/dag/frontend-test-html-report.js +174 -0
- package/dist/workflows/dag/frontend-test-l5-report.js +177 -0
- package/dist/workflows/dag/frontend-test-result-contract.js +487 -0
- package/dist/workflows/dag/frontend-verification-trace.js +275 -0
- package/dist/workflows/dag/frontend-worktree-diff.js +201 -0
- package/dist/workflows/dag/frontend-writer-recovery.js +106 -0
- package/dist/workflows/dag/frontend-writer-rollback.js +821 -0
- package/dist/workflows/dag/governance-constants.js +5 -0
- package/dist/workflows/dag/governance-profile.js +413 -0
- package/dist/workflows/dag/index.js +6 -0
- package/dist/workflows/dag/init-hybrid.js +7345 -0
- package/dist/workflows/dag/interrupt-request.js +559 -0
- package/dist/workflows/dag/knowledge-curator.js +165 -0
- package/dist/workflows/dag/l5-report-metrics.js +33 -0
- package/dist/workflows/dag/lifecycle.js +855 -0
- package/dist/workflows/dag/liveness-policy.js +251 -0
- package/dist/workflows/dag/node-execution.js +1081 -0
- package/dist/workflows/dag/observer-compose.js +52 -0
- package/dist/workflows/dag/output-protocol.js +356 -0
- package/dist/workflows/dag/project-governance-context.js +514 -0
- package/dist/workflows/dag/prompt-source.js +88 -0
- package/dist/workflows/dag/prompt.js +348 -0
- package/dist/workflows/dag/reconcile-run.js +145 -0
- package/dist/workflows/dag/reconcile-tasks.js +404 -0
- package/dist/workflows/dag/recovery-recommendation.js +329 -0
- package/dist/workflows/dag/repair-artifact.js +363 -0
- package/dist/workflows/dag/report.js +1229 -0
- package/dist/workflows/dag/rerun-plan.js +614 -0
- package/dist/workflows/dag/rerun-run.js +556 -0
- package/dist/workflows/dag/rerun-task.js +370 -0
- package/dist/workflows/dag/retry-policy.js +263 -0
- package/dist/workflows/dag/run-store.js +41 -0
- package/dist/workflows/dag/runner.js +1069 -0
- package/dist/workflows/dag/runtime-contract.js +87 -0
- package/dist/workflows/dag/runtime.js +5 -0
- package/dist/workflows/dag/scheduler.js +497 -0
- package/dist/workflows/dag/sdd-embedded.js +128 -0
- package/dist/workflows/dag/skill-instructions.js +478 -0
- package/dist/workflows/dag/skill-snapshot.js +553 -0
- package/dist/workflows/dag/skills.js +41 -0
- package/dist/workflows/dag/spec.js +3 -0
- package/dist/workflows/dag/task-contract-binding.js +138 -0
- package/dist/workflows/dag/task-demand-routing.js +1 -0
- package/dist/workflows/dag/topo.js +30 -0
- package/dist/workflows/dag/types.js +1145 -0
- package/dist/workflows/dag/upstream-artifacts.js +98 -0
- package/dist/workflows/dag/validate.js +998 -0
- package/dist/workflows/dag/workspace-checkpoint.js +186 -0
- package/dist/workflows/dynamic/artifacts.js +65 -0
- package/dist/workflows/dynamic/compile.js +371 -0
- package/dist/workflows/dynamic/compileTypes.js +1 -0
- package/dist/workflows/dynamic/errors.js +5 -0
- package/dist/workflows/dynamic/index.js +7 -0
- package/dist/workflows/dynamic/profiles.js +156 -0
- package/dist/workflows/dynamic/spec.js +115 -0
- package/dist/workflows/dynamic/validate.js +275 -0
- package/dist/workflows/loop/actions/dag-action.js +129 -0
- package/dist/workflows/loop/actions/pi-review.js +267 -0
- package/dist/workflows/loop/actions/shared.js +157 -0
- package/dist/workflows/loop/actions/shell-verify.js +82 -0
- package/dist/workflows/loop/actions/types.js +1 -0
- package/dist/workflows/loop/actions/workflow-action.js +255 -0
- package/dist/workflows/loop/actions.js +160 -0
- package/dist/workflows/loop/benchmark.js +510 -0
- package/dist/workflows/loop/closeout.js +135 -0
- package/dist/workflows/loop/context.js +47 -0
- package/dist/workflows/loop/events.js +26 -0
- package/dist/workflows/loop/hash.js +32 -0
- package/dist/workflows/loop/index.js +8 -0
- package/dist/workflows/loop/paths.js +17 -0
- package/dist/workflows/loop/policy/auto-policy.js +112 -0
- package/dist/workflows/loop/policy/path-patterns.js +13 -0
- package/dist/workflows/loop/rounds.js +81 -0
- package/dist/workflows/loop/signals.js +52 -0
- package/dist/workflows/loop/state.js +116 -0
- package/dist/workflows/loop/templates.js +54 -0
- package/dist/workflows/loop/types.js +28 -0
- package/docs/README.md +82 -0
- package/docs/architecture/README.md +35 -0
- package/docs/architecture/dag-execution.md +165 -0
- package/docs/architecture/evolution.md +108 -0
- package/docs/architecture/facts-and-state.md +74 -0
- package/docs/architecture/runtime-boundaries.md +226 -0
- package/docs/architecture/system-overview.md +100 -0
- package/docs/architecture/worker-and-feature.md +122 -0
- package/docs/governance/README.md +18 -0
- package/docs/governance/harness-methodology-debugging.md +177 -0
- package/docs/governance/harness-methodology-tdd.md +130 -0
- package/docs/governance/harness-methodology-verification.md +27 -0
- package/docs/init-surface.manifest.json +358 -0
- package/docs/operations/README.md +15 -0
- package/docs/operations/local-development-environment.md +77 -0
- package/docs/skills/README.md +7 -0
- package/docs/skills/vetted-skill-registry.md +49 -0
- package/docs/templates/README.md +67 -0
- package/docs/templates/adr.md +60 -0
- package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -0
- package/docs/templates/agent-dag-decision-envelope.schema.json +213 -0
- package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -0
- package/docs/templates/agent-dag-decision-gate.prompt.md +246 -0
- package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -0
- package/docs/templates/agent-dag-report.schema.json +473 -0
- package/docs/templates/agent-dag-review-verdict.prompt.md +68 -0
- package/docs/templates/agent-dag.base.json +190 -0
- package/docs/templates/agent-dag.final-verification.json +185 -0
- package/docs/templates/agent-dag.schema.json +590 -0
- package/docs/templates/agent-dag.supervised-implementation.json +640 -0
- package/docs/templates/agent-worker-production-readiness-checklist.md +47 -0
- package/docs/templates/backend-test-analysis.schema.json +37 -0
- package/docs/templates/backend-test-case-manifest.schema.json +223 -0
- package/docs/templates/backend-test-dag.classify.prompt.md +75 -0
- package/docs/templates/backend-test-dag.generate-pytest.prompt.md +41 -0
- package/docs/templates/backend-test-dag.json +671 -0
- package/docs/templates/backend-test-dag.retrospect.prompt.md +165 -0
- package/docs/templates/backend-test-dag.review-cases.prompt.md +36 -0
- package/docs/templates/backend-test-execution.schema.json +138 -0
- package/docs/templates/backend-test-result.schema.json +99 -0
- package/docs/templates/branch-merge-report.md +115 -0
- package/docs/templates/evaluation/agents-map-slim-v1.candidate.json +9 -0
- package/docs/templates/evaluation/agents-map-slim-v1.md +87 -0
- package/docs/templates/evaluation/agents-map-verbose-v0.candidate.json +9 -0
- package/docs/templates/evaluation/agents-map-verbose-v0.md +153 -0
- package/docs/templates/evaluation/campaign-budget-v1.json +12 -0
- package/docs/templates/evaluation/campaign-dogfood-v0.json +24 -0
- package/docs/templates/evaluation/campaign-evidence-v1.json +44 -0
- package/docs/templates/evaluation/context-policy-baseline-v1.json +17 -0
- package/docs/templates/evaluation/context-policy-role-specialized-v1.json +28 -0
- package/docs/templates/evaluation/corpus-dogfood-v0.manifest.json +118 -0
- package/docs/templates/evaluation/matrix-dag-dry-run-v1.json +21 -0
- package/docs/templates/evaluation/matrix-fixture-v1.json +10 -0
- package/docs/templates/evaluation/private-verifier-dogfood-v0.json +16 -0
- package/docs/templates/exec-plan.md +66 -0
- package/docs/templates/feature-spec.md +53 -0
- package/docs/templates/frontend-design-contract.md +68 -0
- package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -0
- package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -0
- package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -0
- package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -0
- package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -0
- package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -0
- package/docs/templates/frontend-eval/metrics.md +138 -0
- package/docs/templates/frontend-eval/smoke-targets.md +53 -0
- package/docs/templates/frontend-implementation-contract.schema.json +35 -0
- package/docs/templates/frontend-task-constraints.md +62 -0
- package/docs/templates/frontend-task-requirement.md +104 -0
- package/docs/templates/frontend-test-case-checklist.md +44 -0
- package/docs/templates/frontend-test-case.example.md +143 -0
- package/docs/templates/frontend-test-dag.generate-cases.prompt.md +63 -0
- package/docs/templates/frontend-test-dag.json +409 -0
- package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +21 -0
- package/docs/templates/frontend-test-dag.retrospect.prompt.md +5 -0
- package/docs/templates/frontend-test-dag.review-cases.prompt.md +5 -0
- package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -0
- package/docs/templates/frontend-test-standard-scenarios.v1.json +159 -0
- package/docs/templates/harness.schema.json +351 -0
- package/docs/templates/hybrid-dag.json +188 -0
- package/docs/templates/init-evolution-review.md +35 -0
- package/docs/templates/init-managed-agents.md +157 -0
- package/docs/templates/interactive-ui-round2-experiment.md +66 -0
- package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -0
- package/docs/templates/knowledge-sync-dag.json +178 -0
- package/docs/templates/knowledge-sync-draft.schema.json +71 -0
- package/docs/templates/product-line/AGENTS.md +9 -0
- package/docs/templates/product-line/README.md +42 -0
- package/docs/templates/product-line/acceptance.yaml +23 -0
- package/docs/templates/product-line/closeout.yaml +9 -0
- package/docs/templates/product-line/design.md +13 -0
- package/docs/templates/product-line/feature-scaffold-batch.example.yaml +31 -0
- package/docs/templates/product-line/feature.yaml +11 -0
- package/docs/templates/product-line/links.md +10 -0
- package/docs/templates/product-line/requirement.md +17 -0
- package/docs/templates/product-line/scaffold-samples/README.md +36 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/acceptance.yaml +16 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/design.md +14 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/feature.yaml +14 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/requirement.md +6 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/tasks/BE-IMPL-001.yaml +83 -0
- package/docs/templates/product-line/scaffold-samples/backend-only/tasks/task-graph.yaml +14 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/acceptance.yaml +18 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/design.md +18 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/feature.yaml +14 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/requirement.md +6 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/tasks/BE-IMPL-001.yaml +84 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/tasks/CONTRACT-001.yaml +84 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/tasks/FE-IMPL-001.yaml +86 -0
- package/docs/templates/product-line/scaffold-samples/fe-with-api/tasks/task-graph.yaml +40 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/acceptance.yaml +16 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/design.md +14 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/feature.yaml +14 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/requirement.md +6 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/tasks/FE-IMPL-001.yaml +85 -0
- package/docs/templates/product-line/scaffold-samples/frontend-only/tasks/task-graph.yaml +14 -0
- package/docs/templates/product-line/task-graph.yaml +23 -0
- package/docs/templates/product-line/task.yaml +68 -0
- package/docs/templates/product-line/test-plan.md +7 -0
- package/docs/templates/production-readiness-checklist.md +57 -0
- package/docs/templates/progress-log.md +27 -0
- package/docs/templates/project-start-checklist.md +9 -0
- package/docs/templates/qa-report.md +48 -0
- package/docs/templates/sprint-contract.md +29 -0
- package/docs/templates/worker-dogfood-evidence.md +80 -0
- package/docs/templates/worker-dogfood-setup.md +68 -0
- package/examples/decision-gate-agent-dag.json +177 -0
- package/examples/example-dag.json +46 -0
- package/examples/hybrid-loop-agent-dag.json +189 -0
- package/examples/l5-report-coms-process-definition.html +322 -0
- package/examples/l5-report-demo.html +79 -0
- package/harness.json +90 -0
- package/package.json +98 -0
- package/scripts/kb-bootstrap-init-skeleton.sh +241 -0
- package/scripts/kb-graph-incremental-prepare.mjs +386 -0
- package/scripts/kb-graph-materialize.mjs +105 -0
- package/scripts/kb-graph-promote.mjs +164 -0
- package/scripts/kb-query.mjs +554 -0
- package/skills/agent-worker/SKILL.md +48 -0
- package/skills/agent-worker/references/agent-worker-operator.md +159 -0
- package/skills/ai-engineering-context/SKILL.md +48 -0
- package/skills/analyze-product-dependencies/SKILL.md +108 -0
- package/skills/analyze-product-dependencies/references/api-documentation-schema.md +35 -0
- package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +38 -0
- package/skills/analyze-product-dependencies/references/example.md +76 -0
- package/skills/analyze-product-dependencies/references/forward-test-cases.md +110 -0
- package/skills/analyze-product-dependencies/references/input-contract.md +34 -0
- package/skills/analyze-product-dependencies/references/kb-integration.md +64 -0
- package/skills/analyze-product-dependencies/references/scouting-rules.md +76 -0
- package/skills/analyze-product-dependencies/scripts/test-validators.mjs +460 -0
- package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +194 -0
- package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +200 -0
- package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +90 -0
- package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +138 -0
- package/skills/analyze-product-requirements/SKILL.md +145 -0
- package/skills/analyze-product-requirements/references/acceptance-criteria.md +87 -0
- package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +70 -0
- package/skills/analyze-product-requirements/references/example.md +104 -0
- package/skills/analyze-product-requirements/references/forward-test-cases.md +144 -0
- package/skills/analyze-product-requirements/references/kb-integration.md +56 -0
- package/skills/analyze-product-requirements/references/product-analysis-schema.md +41 -0
- package/skills/analyze-product-requirements/references/product-requirement-schema.md +42 -0
- package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +66 -0
- package/skills/analyze-product-requirements/scripts/compute-source-identity.mjs +35 -0
- package/skills/analyze-product-requirements/scripts/test-validators.mjs +501 -0
- package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +100 -0
- package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +109 -0
- package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +109 -0
- package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +175 -0
- package/skills/browser-tools/SKILL.md +196 -0
- package/skills/browser-tools/browser-content.js +103 -0
- package/skills/browser-tools/browser-cookies.js +35 -0
- package/skills/browser-tools/browser-eval.js +53 -0
- package/skills/browser-tools/browser-hn-scraper.js +108 -0
- package/skills/browser-tools/browser-nav.js +44 -0
- package/skills/browser-tools/browser-pick.js +162 -0
- package/skills/browser-tools/browser-screenshot.js +34 -0
- package/skills/browser-tools/browser-start.js +86 -0
- package/skills/browser-tools/package-lock.json +2556 -0
- package/skills/browser-tools/package.json +19 -0
- package/skills/code-review-core/SKILL.md +20 -0
- package/skills/codebase-scout/SKILL.md +19 -0
- package/skills/frontend-bounded-implement/SKILL.md +53 -0
- package/skills/frontend-design-review/SKILL.md +79 -0
- package/skills/frontend-design-review/references/review-checklist.md +43 -0
- package/skills/frontend-implementation/SKILL.md +52 -0
- package/skills/frontend-implementation/references/code-standards.md +33 -0
- package/skills/frontend-implementation/references/design-spec.md +56 -0
- package/skills/frontend-implementation/references/node-contracts.md +31 -0
- package/skills/frontend-review/SKILL.md +55 -0
- package/skills/frontend-review/references/review-findings.md +50 -0
- package/skills/frontend-verification/SKILL.md +61 -0
- package/skills/frontend-verification/references/verification-checklist.md +48 -0
- package/skills/grill-me/SKILL.md +10 -0
- package/skills/grill-with-docs/SKILL.md +80 -0
- package/skills/grill-with-docs/adr-format.md +58 -0
- package/skills/grill-with-docs/context-format.md +52 -0
- package/skills/init-capability-evolution/SKILL.md +70 -0
- package/skills/local-jacoco-coverage/SKILL.md +281 -0
- package/skills/local-jacoco-coverage/references/requirement-to-source-mapping.md +85 -0
- package/skills/local-jacoco-coverage/references/runtime-alignment.md +106 -0
- package/skills/local-jacoco-coverage/scripts/run-coverage-analysis.sh +148 -0
- package/skills/local-jacoco-coverage/scripts/start-jacoco-agent.sh +110 -0
- package/skills/loop-agent/SKILL.md +68 -0
- package/skills/loop-agent/references/README.md +67 -0
- package/skills/loop-agent/references/command-reference.md +645 -0
- package/skills/loop-agent/references/docs-converge.md +126 -0
- package/skills/loop-agent/references/harness-policy.md +289 -0
- package/skills/loop-agent/references/hybrid-dag.md +245 -0
- package/skills/loop-agent/references/learned/README.md +21 -0
- package/skills/loop-agent/references/long-running-loop.md +57 -0
- package/skills/loop-agent/references/model-routing.md +45 -0
- package/skills/loop-agent/references/multi-worktree.md +54 -0
- package/skills/loop-agent/references/one-shot-runs.md +84 -0
- package/skills/loop-agent/references/orchestrator-and-interventions.md +175 -0
- package/skills/loop-agent/references/pi-prompt.md +23 -0
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -0
- package/skills/loop-agent/references/post-implementation-and-patterns.md +54 -0
- package/skills/loop-agent/references/source-and-plan-practice.md +169 -0
- package/skills/loop-agent/references/task-workflow.md +104 -0
- package/skills/loop-agent/references/verification-and-failure-handling.md +148 -0
- package/skills/playwright-cli/SKILL.md +93 -0
- package/skills/playwright-cli/references/element-attributes.md +23 -0
- package/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/skills/playwright-cli/references/request-mocking.md +87 -0
- package/skills/playwright-cli/references/running-code.md +241 -0
- package/skills/playwright-cli/references/session-management.md +225 -0
- package/skills/playwright-cli/references/storage-state.md +275 -0
- package/skills/playwright-cli/references/test-generation.md +433 -0
- package/skills/playwright-cli/references/tracing.md +5 -0
- package/skills/playwright-cli/references/video-recording.md +5 -0
- package/skills/playwright-cli-case-generator/SKILL.md +108 -0
- package/skills/requesting-code-review/SKILL.md +101 -0
- package/skills/requesting-code-review/code-reviewer.md +168 -0
- package/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/systematic-debugging/SKILL.md +312 -0
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/test-driven-development/SKILL.md +27 -0
- package/skills/using-git-worktrees/SKILL.md +215 -0
- package/skills/verification-before-completion/SKILL.md +154 -0
- package/skills/webapp-testing/SKILL.md +19 -0
|
@@ -0,0 +1,2659 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { OPERATOR_ERROR_CODES_V1, OPERATOR_OUTCOMES_V1 } from "./registry.js";
|
|
3
|
+
import { WORKER_ADAPTER_PROTOCOL_RANGE } from "../../worker/loop-agent/controller-protocol.js";
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const PACKAGE_VERSION = require("../../../package.json").version ?? "0.0.0";
|
|
6
|
+
/** Keep aligned with WORKER_CONTROLLER_REQUIREMENTS_V1 in controller-protocol.ts */
|
|
7
|
+
const CONTROLLER_PROTOCOL_CAPABILITIES = [
|
|
8
|
+
"task-advance-managed-contract-v2",
|
|
9
|
+
"worker-association-v1",
|
|
10
|
+
"events-jsonl-v1",
|
|
11
|
+
"document-index-closure-v1",
|
|
12
|
+
"worker-attempt-owner-v1",
|
|
13
|
+
"worker-attempt-revision-v1",
|
|
14
|
+
"recovery-decision-v2",
|
|
15
|
+
];
|
|
16
|
+
function officialModelCallable(coverage, _kind) {
|
|
17
|
+
if (coverage === "human-gated-required")
|
|
18
|
+
return "prepare-only";
|
|
19
|
+
// 2026-08-18: advanced actions (read or mutation) stay OUT of the model
|
|
20
|
+
// tool surface — low-frequency/forensic commands with generic args[] params
|
|
21
|
+
// diluted model attention. They remain dispatchable via UI capabilities.
|
|
22
|
+
if (coverage === "advanced")
|
|
23
|
+
return "never";
|
|
24
|
+
return "always";
|
|
25
|
+
}
|
|
26
|
+
const OFFICIAL_ACTION_DESCRIPTIONS = {
|
|
27
|
+
dagDecisionInspect: "Inspect a pending DAG decision envelope (inputs, options, chosen branch). Use before advising the operator on approve/reject; read-only.",
|
|
28
|
+
dagDecisionValidate: "Validate a DAG decision envelope against its schema. Use when a decision payload looks malformed or a writer emitted a suspect envelope; read-only.",
|
|
29
|
+
dagCloseoutDraft: "Draft the closeout handoff document for a finished DAG run. Use when the run is FINISHED and you need the handoff text; read-only.",
|
|
30
|
+
planList: "List execution plans in the repository. Use to discover plan ids before plan create/complete/check.",
|
|
31
|
+
planCreate: "Create an execution plan from a summary. Use to record the next work block before starting it.",
|
|
32
|
+
planComplete: "Mark an execution plan complete with a summary of what was delivered. Use after a work block is done and verified.",
|
|
33
|
+
planCheck: "Check execution-plan health and drift. Use to audit plan state without mutating anything.",
|
|
34
|
+
docsAudit: "Audit docs freshness and links (document catalog policy). Use when asked whether docs are stale or need review.",
|
|
35
|
+
handoffCheck: "Check handoff document completeness against the verification matrix. Use before claiming a task is fully handed off.",
|
|
36
|
+
handoffCoverage: "Show verification coverage across tests/docs/links for the repo. Use when asked what is verified and what is not.",
|
|
37
|
+
coverageReport: "Produce the verification coverage report. Use for a structured view of tests vs requirements.",
|
|
38
|
+
stats: "Repository workflow statistics (tasks, runs, durations). Use for quantitative status questions.",
|
|
39
|
+
promoteRun: "Task advance alias; passes a task id and flags through to task advance to promote a run. Does not pre-verify run state here — confirm with dagReport that the run is FINISHED before calling.",
|
|
40
|
+
closeoutTask: "Task advance alias; passes a task id and flags through to task advance to close out a task. Confirm the task's work is delivered and verified before calling.",
|
|
41
|
+
knowledgeCurate: "Generate knowledge-base curation proposals (may write a proposal file when --output is passed). Write-capable; use via the operator CLI, not as a model tool.",
|
|
42
|
+
knowledgeQuery: "Query the repository knowledge base. Use instead of re-reading files when a curated answer may exist.",
|
|
43
|
+
workerFeatureReview: "Review worker feature status and checkpoints (agent-worker). Use to see where a feature line stands.",
|
|
44
|
+
workerFeatureDoctor: "Diagnose worker feature health (agent-worker). Use when a feature line looks stuck or inconsistent.",
|
|
45
|
+
workerTaskValidate: "Validate a worker task spec (agent-worker). Use before queuing or when a task looks malformed.",
|
|
46
|
+
workerBatchPlanReady: "Show which batch tasks are ready to run (agent-worker). Use for queue triage before workerBatchRunReady.",
|
|
47
|
+
workerReportMorning: "Morning report for overnight worker activity (agent-worker). Use at the start of a session to catch overnight failures.",
|
|
48
|
+
workerReportMetrics: "Worker throughput and failure metrics (agent-worker). Use for quantitative worker questions.",
|
|
49
|
+
workerAdmissionShow: "Show night admission queue state (agent-worker). Use before night-scheduler mutations.",
|
|
50
|
+
workerSchedulerList: "List night-scheduler schedules (agent-worker). Use to discover schedule ids.",
|
|
51
|
+
workerSchedulerStatus: "Night-scheduler status overview (agent-worker). Use to check whether overnight jobs are healthy.",
|
|
52
|
+
workerSchedulerLedger: "Night-scheduler harvest ledger (agent-worker). Use to audit what overnight runs produced.",
|
|
53
|
+
workerSchedulerDoctor: "Diagnose night-scheduler health (agent-worker). Use when overnight jobs fail to fire or harvest.",
|
|
54
|
+
};
|
|
55
|
+
const officialAction = (action, cli, kind, coverage) => ({
|
|
56
|
+
action,
|
|
57
|
+
cli,
|
|
58
|
+
kind,
|
|
59
|
+
inputSchemaVersion: 1,
|
|
60
|
+
resultSchemaVersion: 1,
|
|
61
|
+
envelopeSchemaVersion: 1,
|
|
62
|
+
requiredErrorCodes: kind === "read"
|
|
63
|
+
? ["INVALID_INPUT", "NOT_FOUND"]
|
|
64
|
+
: [
|
|
65
|
+
"INVALID_INPUT",
|
|
66
|
+
"REQUEST_ID_REUSE_CONFLICT",
|
|
67
|
+
"REVISION_CONFLICT",
|
|
68
|
+
"OBSERVED_HASH_CONFLICT",
|
|
69
|
+
"LEASE_HELD",
|
|
70
|
+
"TRANSACTION_INCOMPLETE",
|
|
71
|
+
"NOT_FOUND",
|
|
72
|
+
],
|
|
73
|
+
description: OFFICIAL_ACTION_DESCRIPTIONS[action] ??
|
|
74
|
+
`Official CLI action coverage for ${cli}.`,
|
|
75
|
+
inputParams: [
|
|
76
|
+
{
|
|
77
|
+
name: "args",
|
|
78
|
+
type: "array",
|
|
79
|
+
itemsType: "string",
|
|
80
|
+
required: false,
|
|
81
|
+
description: "validated trailing CLI arguments",
|
|
82
|
+
},
|
|
83
|
+
...(coverage === "human-gated-required"
|
|
84
|
+
? [
|
|
85
|
+
{
|
|
86
|
+
name: "confirmationId",
|
|
87
|
+
type: "string",
|
|
88
|
+
required: true,
|
|
89
|
+
description: "human confirmation receipt id",
|
|
90
|
+
},
|
|
91
|
+
]
|
|
92
|
+
: []),
|
|
93
|
+
],
|
|
94
|
+
modelCallable: officialModelCallable(coverage, kind),
|
|
95
|
+
humanConfirmation: coverage === "human-gated-required" ? "required" : "none",
|
|
96
|
+
});
|
|
97
|
+
const OFFICIAL_ACTIONS = [
|
|
98
|
+
...[
|
|
99
|
+
[
|
|
100
|
+
"dagDecisionInspect",
|
|
101
|
+
"loop-agent dag decision inspect",
|
|
102
|
+
"read",
|
|
103
|
+
"model-callable",
|
|
104
|
+
],
|
|
105
|
+
[
|
|
106
|
+
"dagDecisionValidate",
|
|
107
|
+
"loop-agent dag decision validate",
|
|
108
|
+
"read",
|
|
109
|
+
"model-callable",
|
|
110
|
+
],
|
|
111
|
+
[
|
|
112
|
+
"dagCloseoutDraft",
|
|
113
|
+
"loop-agent dag closeout-draft",
|
|
114
|
+
"read",
|
|
115
|
+
"model-callable",
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"dagApprove",
|
|
119
|
+
"loop-agent dag approve",
|
|
120
|
+
"mutation",
|
|
121
|
+
"human-gated-required",
|
|
122
|
+
],
|
|
123
|
+
["dagReject", "loop-agent dag reject", "mutation", "human-gated-required"],
|
|
124
|
+
[
|
|
125
|
+
"dagResume",
|
|
126
|
+
"loop-agent dag resume",
|
|
127
|
+
"long-running",
|
|
128
|
+
"human-gated-required",
|
|
129
|
+
],
|
|
130
|
+
[
|
|
131
|
+
"dagReconcileRun",
|
|
132
|
+
"loop-agent dag reconcile-run",
|
|
133
|
+
"mutation",
|
|
134
|
+
"human-gated-required",
|
|
135
|
+
],
|
|
136
|
+
[
|
|
137
|
+
"dagReconcileTasks",
|
|
138
|
+
"loop-agent dag reconcile-tasks",
|
|
139
|
+
"mutation",
|
|
140
|
+
"human-gated-required",
|
|
141
|
+
],
|
|
142
|
+
[
|
|
143
|
+
"dagFinalVerification",
|
|
144
|
+
"loop-agent dag final-verification",
|
|
145
|
+
"long-running",
|
|
146
|
+
"human-gated-required",
|
|
147
|
+
],
|
|
148
|
+
["dagInitHybrid", "loop-agent dag init-hybrid", "mutation", "advanced"],
|
|
149
|
+
["dagWorkflowPlan", "loop-agent dag workflow-plan", "read", "advanced"],
|
|
150
|
+
[
|
|
151
|
+
"dagWorkflowValidate",
|
|
152
|
+
"loop-agent dag workflow-validate",
|
|
153
|
+
"read",
|
|
154
|
+
"advanced",
|
|
155
|
+
],
|
|
156
|
+
[
|
|
157
|
+
"dagWorkflowCompile",
|
|
158
|
+
"loop-agent dag workflow-compile",
|
|
159
|
+
"mutation",
|
|
160
|
+
"advanced",
|
|
161
|
+
],
|
|
162
|
+
["planList", "loop-agent plan list", "read", "model-callable"],
|
|
163
|
+
["planCreate", "loop-agent plan create", "mutation", "model-callable"],
|
|
164
|
+
["planComplete", "loop-agent plan complete", "mutation", "model-callable"],
|
|
165
|
+
["planCheck", "loop-agent plan check", "read", "model-callable"],
|
|
166
|
+
["docsAudit", "loop-agent docs audit", "read", "model-callable"],
|
|
167
|
+
["docsArchive", "loop-agent docs archive", "mutation", "advanced"],
|
|
168
|
+
["handoffCheck", "loop-agent handoff check", "read", "model-callable"],
|
|
169
|
+
[
|
|
170
|
+
"handoffCoverage",
|
|
171
|
+
"loop-agent handoff coverage",
|
|
172
|
+
"read",
|
|
173
|
+
"model-callable",
|
|
174
|
+
],
|
|
175
|
+
["coverageReport", "loop-agent coverage report", "read", "model-callable"],
|
|
176
|
+
["stats", "loop-agent stats", "read", "model-callable"],
|
|
177
|
+
[
|
|
178
|
+
"promoteRun",
|
|
179
|
+
"loop-agent task advance",
|
|
180
|
+
"mutation",
|
|
181
|
+
"model-callable",
|
|
182
|
+
],
|
|
183
|
+
[
|
|
184
|
+
"closeoutTask",
|
|
185
|
+
"loop-agent task advance",
|
|
186
|
+
"mutation",
|
|
187
|
+
"model-callable",
|
|
188
|
+
],
|
|
189
|
+
["piReuseBenchmark", "loop-agent pi-reuse-benchmark", "read", "advanced"],
|
|
190
|
+
["loopBenchmark", "loop-agent loop-benchmark", "read", "advanced"],
|
|
191
|
+
[
|
|
192
|
+
"knowledgeCurate",
|
|
193
|
+
"loop-agent knowledge curate",
|
|
194
|
+
"mutation",
|
|
195
|
+
"advanced",
|
|
196
|
+
],
|
|
197
|
+
["knowledgeQuery", "loop-agent knowledge query", "read", "model-callable"],
|
|
198
|
+
[
|
|
199
|
+
"knowledgeGraphInit",
|
|
200
|
+
"loop-agent knowledge graph-init",
|
|
201
|
+
"mutation",
|
|
202
|
+
"advanced",
|
|
203
|
+
],
|
|
204
|
+
[
|
|
205
|
+
"knowledgeGraphMaterialize",
|
|
206
|
+
"loop-agent knowledge graph-materialize",
|
|
207
|
+
"mutation",
|
|
208
|
+
"advanced",
|
|
209
|
+
],
|
|
210
|
+
[
|
|
211
|
+
"knowledgeGraphPromote",
|
|
212
|
+
"loop-agent knowledge graph-promote",
|
|
213
|
+
"mutation",
|
|
214
|
+
"advanced",
|
|
215
|
+
],
|
|
216
|
+
[
|
|
217
|
+
"knowledgeGraphIncrementalPrepare",
|
|
218
|
+
"loop-agent knowledge graph-incremental-prepare",
|
|
219
|
+
"mutation",
|
|
220
|
+
"advanced",
|
|
221
|
+
],
|
|
222
|
+
...["init", "status", "run", "record-round", "add-signal", "closeout"].map((leaf) => [
|
|
223
|
+
`loop${leaf.replace(/(^|-)(.)/g, (_m, _d, c) => c.toUpperCase())}`,
|
|
224
|
+
`loop-agent loop ${leaf}`,
|
|
225
|
+
leaf === "status" ? "read" : "mutation",
|
|
226
|
+
"advanced",
|
|
227
|
+
]),
|
|
228
|
+
...["list", "inspect", "save", "run", "diff", "replay"].map((leaf) => [
|
|
229
|
+
`workflow${leaf[0].toUpperCase()}${leaf.slice(1)}`,
|
|
230
|
+
`loop-agent workflow ${leaf}`,
|
|
231
|
+
["list", "inspect", "diff"].includes(leaf) ? "read" : "mutation",
|
|
232
|
+
"advanced",
|
|
233
|
+
]),
|
|
234
|
+
[
|
|
235
|
+
"workerFeatureReview",
|
|
236
|
+
"agent-worker feature review",
|
|
237
|
+
"read",
|
|
238
|
+
"model-callable",
|
|
239
|
+
],
|
|
240
|
+
[
|
|
241
|
+
"workerFeatureScaffold",
|
|
242
|
+
"agent-worker feature scaffold",
|
|
243
|
+
"mutation",
|
|
244
|
+
"advanced",
|
|
245
|
+
],
|
|
246
|
+
[
|
|
247
|
+
"workerFeatureRun",
|
|
248
|
+
"agent-worker feature run",
|
|
249
|
+
"long-running",
|
|
250
|
+
"human-gated-required",
|
|
251
|
+
],
|
|
252
|
+
[
|
|
253
|
+
"workerFeatureAdvance",
|
|
254
|
+
"agent-worker feature advance",
|
|
255
|
+
"long-running",
|
|
256
|
+
"human-gated-required",
|
|
257
|
+
],
|
|
258
|
+
[
|
|
259
|
+
"workerFeatureDoctor",
|
|
260
|
+
"agent-worker feature doctor",
|
|
261
|
+
"read",
|
|
262
|
+
"model-callable",
|
|
263
|
+
],
|
|
264
|
+
[
|
|
265
|
+
"workerFeatureVerifyFinal",
|
|
266
|
+
"agent-worker feature verify-final",
|
|
267
|
+
"long-running",
|
|
268
|
+
"human-gated-required",
|
|
269
|
+
],
|
|
270
|
+
[
|
|
271
|
+
"workerFeatureDelivery",
|
|
272
|
+
"agent-worker feature delivery",
|
|
273
|
+
"mutation",
|
|
274
|
+
"human-gated-required",
|
|
275
|
+
],
|
|
276
|
+
[
|
|
277
|
+
"workerFeatureCloseout",
|
|
278
|
+
"agent-worker feature closeout",
|
|
279
|
+
"mutation",
|
|
280
|
+
"human-gated-required",
|
|
281
|
+
],
|
|
282
|
+
[
|
|
283
|
+
"workerTaskValidate",
|
|
284
|
+
"agent-worker task validate",
|
|
285
|
+
"read",
|
|
286
|
+
"model-callable",
|
|
287
|
+
],
|
|
288
|
+
[
|
|
289
|
+
"workerTaskReconcile",
|
|
290
|
+
"agent-worker task reconcile",
|
|
291
|
+
"mutation",
|
|
292
|
+
"human-gated-required",
|
|
293
|
+
],
|
|
294
|
+
[
|
|
295
|
+
"workerTaskDraftFollowup",
|
|
296
|
+
"agent-worker task draft-followup",
|
|
297
|
+
"mutation",
|
|
298
|
+
"advanced",
|
|
299
|
+
],
|
|
300
|
+
[
|
|
301
|
+
"workerFeatureApproveFollowup",
|
|
302
|
+
"agent-worker feature approve-followup",
|
|
303
|
+
"mutation",
|
|
304
|
+
"advanced",
|
|
305
|
+
],
|
|
306
|
+
[
|
|
307
|
+
"workerBatchPlanReady",
|
|
308
|
+
"agent-worker batch plan-ready",
|
|
309
|
+
"read",
|
|
310
|
+
"model-callable",
|
|
311
|
+
],
|
|
312
|
+
[
|
|
313
|
+
"workerBatchRunReady",
|
|
314
|
+
"agent-worker batch run-ready",
|
|
315
|
+
"long-running",
|
|
316
|
+
"advanced",
|
|
317
|
+
],
|
|
318
|
+
[
|
|
319
|
+
"workerPoolMarkFailed",
|
|
320
|
+
"agent-worker pool mark-failed",
|
|
321
|
+
"mutation",
|
|
322
|
+
"human-gated-required",
|
|
323
|
+
],
|
|
324
|
+
[
|
|
325
|
+
"workerReportMorning",
|
|
326
|
+
"agent-worker report morning",
|
|
327
|
+
"read",
|
|
328
|
+
"model-callable",
|
|
329
|
+
],
|
|
330
|
+
[
|
|
331
|
+
"workerReportMetrics",
|
|
332
|
+
"agent-worker report metrics",
|
|
333
|
+
"read",
|
|
334
|
+
"model-callable",
|
|
335
|
+
],
|
|
336
|
+
// Night Scheduler (Phase 5) — read surfaces via official CLI coverage;
|
|
337
|
+
// mutations use dedicated capability entries below (mutation-gate).
|
|
338
|
+
[
|
|
339
|
+
"workerAdmissionShow",
|
|
340
|
+
"agent-worker admission show",
|
|
341
|
+
"read",
|
|
342
|
+
"model-callable",
|
|
343
|
+
],
|
|
344
|
+
[
|
|
345
|
+
"workerSchedulerList",
|
|
346
|
+
"agent-worker scheduler list",
|
|
347
|
+
"read",
|
|
348
|
+
"model-callable",
|
|
349
|
+
],
|
|
350
|
+
[
|
|
351
|
+
"workerSchedulerStatus",
|
|
352
|
+
"agent-worker scheduler status",
|
|
353
|
+
"read",
|
|
354
|
+
"model-callable",
|
|
355
|
+
],
|
|
356
|
+
[
|
|
357
|
+
"workerSchedulerLedger",
|
|
358
|
+
"agent-worker scheduler ledger",
|
|
359
|
+
"read",
|
|
360
|
+
"model-callable",
|
|
361
|
+
],
|
|
362
|
+
[
|
|
363
|
+
"workerSchedulerDoctor",
|
|
364
|
+
"agent-worker scheduler doctor",
|
|
365
|
+
"read",
|
|
366
|
+
"model-callable",
|
|
367
|
+
],
|
|
368
|
+
],
|
|
369
|
+
].map(([action, cli, kind, coverage]) => officialAction(action, cli, kind, coverage));
|
|
370
|
+
/**
|
|
371
|
+
* Action ids produced by the officialAction() factory (the generic CLI
|
|
372
|
+
* coverage tail). Derived from the same tuple table so dispatcher / gate
|
|
373
|
+
* checks do not string-match descriptions.
|
|
374
|
+
*/
|
|
375
|
+
export const OFFICIAL_TAIL_ACTION_IDS = new Set(OFFICIAL_ACTIONS.map((entry) => entry.action));
|
|
376
|
+
/** Shared constants so dag + dagSpecVersions cannot diverge. */
|
|
377
|
+
const DAG_SPEC_SUPPORTED_PARSE = [1, 2, 3, 4];
|
|
378
|
+
const DAG_SPEC_NEW_WRITER_DEFAULT = 4;
|
|
379
|
+
const DAG_SPEC_HISTORICAL_TERMINAL_READ_ONLY = [1, 2, 3];
|
|
380
|
+
const TASK_CONTRACT_BINDING_SCHEMA_VERSION = 1;
|
|
381
|
+
const REQUIRES_TASK_CONTRACT_BINDING = true;
|
|
382
|
+
const COMMON_MUTATION_ERRORS = [
|
|
383
|
+
"INVALID_INPUT",
|
|
384
|
+
"REQUEST_ID_REUSE_CONFLICT",
|
|
385
|
+
"REVISION_CONFLICT",
|
|
386
|
+
"OBSERVED_HASH_CONFLICT",
|
|
387
|
+
"LEASE_HELD",
|
|
388
|
+
"TRANSACTION_INCOMPLETE",
|
|
389
|
+
"NOT_FOUND",
|
|
390
|
+
];
|
|
391
|
+
export function buildOperatorCapabilitiesDocument() {
|
|
392
|
+
const actions = [
|
|
393
|
+
{
|
|
394
|
+
action: "operatorCapabilities",
|
|
395
|
+
cli: "loop-agent operator capabilities --json",
|
|
396
|
+
kind: "read",
|
|
397
|
+
inputSchemaVersion: 1,
|
|
398
|
+
resultSchemaVersion: 1,
|
|
399
|
+
envelopeSchemaVersion: 1,
|
|
400
|
+
requiredErrorCodes: ["UNSUPPORTED_SCHEMA_VERSION", "INVALID_INPUT"],
|
|
401
|
+
description: "Publish action/schema/error registry for Console negotiation.",
|
|
402
|
+
inputParams: [],
|
|
403
|
+
modelCallable: "always",
|
|
404
|
+
humanConfirmation: "none",
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
action: "operationGet",
|
|
408
|
+
cli: "console canonical operation read model (single operation)",
|
|
409
|
+
kind: "read",
|
|
410
|
+
inputSchemaVersion: 1,
|
|
411
|
+
resultSchemaVersion: 1,
|
|
412
|
+
resultPolicy: { readOnly: true, bounded: true, redacted: true },
|
|
413
|
+
envelopeSchemaVersion: 1,
|
|
414
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
415
|
+
description: "Read one canonical Console operation as a bounded redacted projection.",
|
|
416
|
+
inputParams: [
|
|
417
|
+
{
|
|
418
|
+
name: "operationId",
|
|
419
|
+
type: "string",
|
|
420
|
+
required: true,
|
|
421
|
+
description: "canonical operation id",
|
|
422
|
+
},
|
|
423
|
+
],
|
|
424
|
+
modelCallable: "always",
|
|
425
|
+
humanConfirmation: "none",
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
action: "operationList",
|
|
429
|
+
cli: "console canonical operation read model (bounded list)",
|
|
430
|
+
kind: "read",
|
|
431
|
+
inputSchemaVersion: 1,
|
|
432
|
+
resultSchemaVersion: 1,
|
|
433
|
+
resultPolicy: { readOnly: true, bounded: true, redacted: true },
|
|
434
|
+
envelopeSchemaVersion: 1,
|
|
435
|
+
requiredErrorCodes: ["INVALID_INPUT"],
|
|
436
|
+
description: "List canonical Console operations using bounded read-only filters.",
|
|
437
|
+
inputParams: [
|
|
438
|
+
{
|
|
439
|
+
name: "limit",
|
|
440
|
+
type: "number",
|
|
441
|
+
required: false,
|
|
442
|
+
description: "maximum results (1-50, default 20)",
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
name: "state",
|
|
446
|
+
type: "string",
|
|
447
|
+
required: false,
|
|
448
|
+
description: "optional operation state filter",
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
name: "action",
|
|
452
|
+
type: "string",
|
|
453
|
+
required: false,
|
|
454
|
+
description: "optional exact action filter",
|
|
455
|
+
},
|
|
456
|
+
],
|
|
457
|
+
modelCallable: "always",
|
|
458
|
+
humanConfirmation: "none",
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
action: "operationEventSummary",
|
|
462
|
+
cli: "console canonical operation event store (bounded summary)",
|
|
463
|
+
kind: "read",
|
|
464
|
+
inputSchemaVersion: 1,
|
|
465
|
+
resultSchemaVersion: 1,
|
|
466
|
+
resultPolicy: { readOnly: true, bounded: true, redacted: true },
|
|
467
|
+
envelopeSchemaVersion: 1,
|
|
468
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
469
|
+
description: "Read a bounded redacted summary from the canonical operation event ring.",
|
|
470
|
+
inputParams: [
|
|
471
|
+
{
|
|
472
|
+
name: "operationId",
|
|
473
|
+
type: "string",
|
|
474
|
+
required: true,
|
|
475
|
+
description: "canonical operation id",
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
name: "limit",
|
|
479
|
+
type: "number",
|
|
480
|
+
required: false,
|
|
481
|
+
description: "maximum newest events (1-100, default 20)",
|
|
482
|
+
},
|
|
483
|
+
],
|
|
484
|
+
modelCallable: "always",
|
|
485
|
+
humanConfirmation: "none",
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
action: "operationWait",
|
|
489
|
+
cli: "console canonical operation wait (read-only event-driven long poll)",
|
|
490
|
+
kind: "read",
|
|
491
|
+
inputSchemaVersion: 1,
|
|
492
|
+
resultSchemaVersion: 1,
|
|
493
|
+
resultPolicy: { readOnly: true, bounded: true, redacted: true },
|
|
494
|
+
envelopeSchemaVersion: 1,
|
|
495
|
+
requiredErrorCodes: [
|
|
496
|
+
"NOT_FOUND",
|
|
497
|
+
"INVALID_INPUT",
|
|
498
|
+
"EVENT_CURSOR_EXPIRED",
|
|
499
|
+
],
|
|
500
|
+
description: "Read-only event-driven wait on the canonical operation event ring. Default wakeOn=meaningful: heartbeats never settle the wait and are never returned as event payload (nextSeq still covers them); state/result/stdout/stderr/reconcile/error settle immediately; terminal or needs-reconcile flushes immediately. Every subsequent wait MUST pass afterSeq equal to the previous response nextSeq; omitting or reusing an older cursor replays already-consumed startup events. The response includes recommendedNextCall with the safe cursor. wakeOn=all (diagnostic compatibility) resolves on the first new event including heartbeats. maxWaitMs elapsing returns timedOut:true (a success summary, not a command failure).",
|
|
501
|
+
inputParams: [
|
|
502
|
+
{
|
|
503
|
+
name: "operationId",
|
|
504
|
+
type: "string",
|
|
505
|
+
required: true,
|
|
506
|
+
description: "canonical operation id",
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
name: "afterSeq",
|
|
510
|
+
type: "number",
|
|
511
|
+
required: false,
|
|
512
|
+
description: "event cursor; first wait may use 0, every later wait MUST use the previous response nextSeq (>= 0)",
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
name: "maxWaitMs",
|
|
516
|
+
type: "number",
|
|
517
|
+
required: false,
|
|
518
|
+
description: "bounded wait budget; clamped server-side (default 180000, floor 60000)",
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
name: "wakeOn",
|
|
522
|
+
type: "string",
|
|
523
|
+
required: false,
|
|
524
|
+
description: "wake policy: meaningful (default; heartbeats are cursor-only liveness) | all (first event settles, diagnostics)",
|
|
525
|
+
},
|
|
526
|
+
],
|
|
527
|
+
modelCallable: "always",
|
|
528
|
+
humanConfirmation: "none",
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
action: "contractShow",
|
|
532
|
+
cli: "loop-agent task status <taskId> --json",
|
|
533
|
+
kind: "read",
|
|
534
|
+
inputSchemaVersion: 1,
|
|
535
|
+
resultSchemaVersion: 1,
|
|
536
|
+
envelopeSchemaVersion: 1,
|
|
537
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
538
|
+
description: "Return TaskContractStateV1 + observed hashes.",
|
|
539
|
+
inputParams: [
|
|
540
|
+
{
|
|
541
|
+
name: "taskId",
|
|
542
|
+
type: "string",
|
|
543
|
+
required: true,
|
|
544
|
+
description: "task id",
|
|
545
|
+
},
|
|
546
|
+
],
|
|
547
|
+
modelCallable: "always",
|
|
548
|
+
humanConfirmation: "none",
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
action: "contractValidate",
|
|
552
|
+
cli: "loop-agent task status --task <id> --input <path> --json",
|
|
553
|
+
kind: "read",
|
|
554
|
+
inputSchemaVersion: 1,
|
|
555
|
+
resultSchemaVersion: 1,
|
|
556
|
+
envelopeSchemaVersion: 1,
|
|
557
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND", "PATH_OUTSIDE_REPO"],
|
|
558
|
+
description: "Schema/path/traceability validation for a Draft (read-only).",
|
|
559
|
+
// Dispatcher reads draftJson/inputText (a JSON string staged to a file),
|
|
560
|
+
// NOT a `draft` object. draftJson is optional — dispatcher falls back to
|
|
561
|
+
// the saved draft.
|
|
562
|
+
inputParams: [
|
|
563
|
+
{
|
|
564
|
+
name: "taskId",
|
|
565
|
+
type: "string",
|
|
566
|
+
required: true,
|
|
567
|
+
description: "task id",
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
name: "draftJson",
|
|
571
|
+
type: "string",
|
|
572
|
+
required: false,
|
|
573
|
+
description: "draft JSON string (optional; omit to validate the saved draft)",
|
|
574
|
+
},
|
|
575
|
+
],
|
|
576
|
+
modelCallable: "always",
|
|
577
|
+
humanConfirmation: "none",
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
action: "contractDiff",
|
|
581
|
+
cli: "loop-agent task status --task <id> --input <path> --json",
|
|
582
|
+
kind: "read",
|
|
583
|
+
inputSchemaVersion: 1,
|
|
584
|
+
resultSchemaVersion: 1,
|
|
585
|
+
envelopeSchemaVersion: 1,
|
|
586
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND", "PATH_OUTSIDE_REPO"],
|
|
587
|
+
description: "Risk-classified diff against current managed/legacy state.",
|
|
588
|
+
inputParams: [
|
|
589
|
+
{
|
|
590
|
+
name: "taskId",
|
|
591
|
+
type: "string",
|
|
592
|
+
required: true,
|
|
593
|
+
description: "task id",
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
name: "draftJson",
|
|
597
|
+
type: "string",
|
|
598
|
+
required: false,
|
|
599
|
+
description: "draft JSON string (optional; omit to diff the saved draft)",
|
|
600
|
+
},
|
|
601
|
+
],
|
|
602
|
+
modelCallable: "always",
|
|
603
|
+
humanConfirmation: "none",
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
action: "contractApply",
|
|
607
|
+
cli: "loop-agent task advance <id> --from-draft <path> --json",
|
|
608
|
+
kind: "mutation",
|
|
609
|
+
inputSchemaVersion: 1,
|
|
610
|
+
resultSchemaVersion: 1,
|
|
611
|
+
envelopeSchemaVersion: 1,
|
|
612
|
+
requiredErrorCodes: [...COMMON_MUTATION_ERRORS, "EXTERNALLY_MODIFIED"],
|
|
613
|
+
description: "Journaled apply of Draft to canonical task facts.",
|
|
614
|
+
inputParams: [
|
|
615
|
+
{
|
|
616
|
+
name: "taskId",
|
|
617
|
+
type: "string",
|
|
618
|
+
required: true,
|
|
619
|
+
description: "task id",
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
name: "assessmentId",
|
|
623
|
+
type: "string",
|
|
624
|
+
required: false,
|
|
625
|
+
description: "assessment id binding (defaults to the draft's bound assessment)",
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
name: "expectedRevision",
|
|
629
|
+
type: "string",
|
|
630
|
+
required: false,
|
|
631
|
+
description: "expected contract revision (defaults to live observed)",
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
name: "expectedObservedHash",
|
|
635
|
+
type: "string",
|
|
636
|
+
required: false,
|
|
637
|
+
description: "expected observed hash (defaults to live observed)",
|
|
638
|
+
},
|
|
639
|
+
],
|
|
640
|
+
modelCallable: "always",
|
|
641
|
+
humanConfirmation: "conditional",
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
action: "newTask",
|
|
645
|
+
cli: "loop-agent task advance <id> <title> --json",
|
|
646
|
+
kind: "mutation",
|
|
647
|
+
inputSchemaVersion: 1,
|
|
648
|
+
resultSchemaVersion: 1,
|
|
649
|
+
envelopeSchemaVersion: 1,
|
|
650
|
+
requiredErrorCodes: [...COMMON_MUTATION_ERRORS],
|
|
651
|
+
description: "Create a new task (lifecycle entry). Prefer taskAdvance for the standard flow (PRD import, taskKind, boundaries, DAG generation); newTask only bootstraps a task id + title.",
|
|
652
|
+
inputParams: [
|
|
653
|
+
{
|
|
654
|
+
name: "taskId",
|
|
655
|
+
type: "string",
|
|
656
|
+
required: true,
|
|
657
|
+
description: "task id",
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: "title",
|
|
661
|
+
type: "string",
|
|
662
|
+
required: false,
|
|
663
|
+
description: "task title (defaults to taskId)",
|
|
664
|
+
},
|
|
665
|
+
],
|
|
666
|
+
modelCallable: "always",
|
|
667
|
+
humanConfirmation: "none",
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
action: "importPrd",
|
|
671
|
+
cli: "loop-agent task advance <id> --prd <server-staged-path> --json (+ intake bridge)",
|
|
672
|
+
kind: "mutation",
|
|
673
|
+
inputSchemaVersion: 1,
|
|
674
|
+
resultSchemaVersion: 1,
|
|
675
|
+
envelopeSchemaVersion: 1,
|
|
676
|
+
requiredErrorCodes: [...COMMON_MUTATION_ERRORS, "PATH_OUTSIDE_REPO"],
|
|
677
|
+
description: "Archive PRD via task advance, run intake bridge (deterministic/semantic), rewrite Console draft.",
|
|
678
|
+
inputParams: [
|
|
679
|
+
{
|
|
680
|
+
name: "taskId",
|
|
681
|
+
type: "string",
|
|
682
|
+
required: true,
|
|
683
|
+
description: "task id",
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
name: "content",
|
|
687
|
+
type: "string",
|
|
688
|
+
required: true,
|
|
689
|
+
description: "PRD markdown content",
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: "taskKind",
|
|
693
|
+
type: "string",
|
|
694
|
+
required: false,
|
|
695
|
+
description: "workflow kind (human-selected)",
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
name: "allowedPaths",
|
|
699
|
+
type: "array",
|
|
700
|
+
required: false,
|
|
701
|
+
description: "optional engineering allowedPaths (human-confirmed)",
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
name: "forbiddenPaths",
|
|
705
|
+
type: "array",
|
|
706
|
+
required: false,
|
|
707
|
+
description: "optional engineering forbiddenPaths",
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
name: "verifyCommands",
|
|
711
|
+
type: "array",
|
|
712
|
+
required: false,
|
|
713
|
+
description: "optional verify commands (label:command or shell)",
|
|
714
|
+
},
|
|
715
|
+
],
|
|
716
|
+
modelCallable: "always",
|
|
717
|
+
humanConfirmation: "none",
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
action: "sourceInstructions",
|
|
721
|
+
cli: "loop-agent instructions source --task <id> --json",
|
|
722
|
+
kind: "read",
|
|
723
|
+
inputSchemaVersion: 1,
|
|
724
|
+
resultSchemaVersion: 1,
|
|
725
|
+
envelopeSchemaVersion: 1,
|
|
726
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
727
|
+
description: "Read the task's source instruction contract (需求.md/执行约束.md projection: requirements, constraints, allowed/forbidden paths). Use before drafting or revising a contract to stay aligned with the source.",
|
|
728
|
+
inputParams: [
|
|
729
|
+
{
|
|
730
|
+
name: "taskId",
|
|
731
|
+
type: "string",
|
|
732
|
+
required: true,
|
|
733
|
+
description: "task id",
|
|
734
|
+
},
|
|
735
|
+
],
|
|
736
|
+
modelCallable: "always",
|
|
737
|
+
humanConfirmation: "none",
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
action: "contractDraftSave",
|
|
741
|
+
cli: "console application-data draft save (non-canonical)",
|
|
742
|
+
kind: "mutation",
|
|
743
|
+
inputSchemaVersion: 1,
|
|
744
|
+
resultSchemaVersion: 1,
|
|
745
|
+
envelopeSchemaVersion: 1,
|
|
746
|
+
requiredErrorCodes: ["INVALID_INPUT"],
|
|
747
|
+
description: "Save TaskContractDraftV1 to Console application data only (not repo .harness).",
|
|
748
|
+
inputParams: [
|
|
749
|
+
{
|
|
750
|
+
name: "taskId",
|
|
751
|
+
type: "string",
|
|
752
|
+
required: false,
|
|
753
|
+
description: "task id (defaults to draft.taskId)",
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
name: "draft",
|
|
757
|
+
type: "object",
|
|
758
|
+
required: true,
|
|
759
|
+
description: "TaskContractDraftV1 object",
|
|
760
|
+
},
|
|
761
|
+
],
|
|
762
|
+
modelCallable: "always",
|
|
763
|
+
humanConfirmation: "none",
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
action: "prepareDagConfirmation",
|
|
767
|
+
cli: "console aggregate confirmation receipt (server-side)",
|
|
768
|
+
kind: "read",
|
|
769
|
+
inputSchemaVersion: 1,
|
|
770
|
+
resultSchemaVersion: 1,
|
|
771
|
+
envelopeSchemaVersion: 1,
|
|
772
|
+
requiredErrorCodes: [
|
|
773
|
+
"INVALID_INPUT",
|
|
774
|
+
"BINDING_DRIFT",
|
|
775
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
776
|
+
],
|
|
777
|
+
description: "Prepare server-side DagConfirmationV1 receipt for human challenge.",
|
|
778
|
+
inputParams: [
|
|
779
|
+
{
|
|
780
|
+
name: "taskId",
|
|
781
|
+
type: "string",
|
|
782
|
+
required: true,
|
|
783
|
+
description: "task id",
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
name: "dagPath",
|
|
787
|
+
type: "string",
|
|
788
|
+
required: false,
|
|
789
|
+
description: "staged DAG path (optional; resolved from the last dagRunTask result)",
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
name: "operatorAction",
|
|
793
|
+
type: "string",
|
|
794
|
+
required: false,
|
|
795
|
+
description: "required official action to bind to this single-use human confirmation receipt",
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
name: "operatorActionArgs",
|
|
799
|
+
type: "array",
|
|
800
|
+
itemsType: "string",
|
|
801
|
+
required: false,
|
|
802
|
+
description: "exact trailing CLI arguments bound to the official action receipt",
|
|
803
|
+
},
|
|
804
|
+
],
|
|
805
|
+
modelCallable: "always",
|
|
806
|
+
humanConfirmation: "none",
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
action: "prepareDagExecution",
|
|
810
|
+
cli: "console aggregate execution receipt (server-side G2 assessment)",
|
|
811
|
+
kind: "read",
|
|
812
|
+
inputSchemaVersion: 1,
|
|
813
|
+
resultSchemaVersion: 1,
|
|
814
|
+
envelopeSchemaVersion: 1,
|
|
815
|
+
requiredErrorCodes: [
|
|
816
|
+
"INVALID_INPUT",
|
|
817
|
+
"BINDING_DRIFT",
|
|
818
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
819
|
+
],
|
|
820
|
+
description: "Issue a session-bound single-use execution receipt after server-side G2 assessment (bounded writeSet ⊆ allowedPaths, no forbidden overlap, no broad/destructive risk, structured verification). The model never passes a raw DAG path.",
|
|
821
|
+
inputParams: [
|
|
822
|
+
{
|
|
823
|
+
name: "taskId",
|
|
824
|
+
type: "string",
|
|
825
|
+
required: true,
|
|
826
|
+
description: "task id",
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
name: "profile",
|
|
830
|
+
type: "string",
|
|
831
|
+
required: false,
|
|
832
|
+
description: "DAG profile (defaults to auto)",
|
|
833
|
+
},
|
|
834
|
+
],
|
|
835
|
+
modelCallable: "always",
|
|
836
|
+
humanConfirmation: "none",
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
action: "confirmDagConfirmation",
|
|
840
|
+
cli: "console aggregate confirmation human challenge (server-side)",
|
|
841
|
+
kind: "mutation",
|
|
842
|
+
inputSchemaVersion: 1,
|
|
843
|
+
resultSchemaVersion: 1,
|
|
844
|
+
envelopeSchemaVersion: 1,
|
|
845
|
+
requiredErrorCodes: [
|
|
846
|
+
"INVALID_INPUT",
|
|
847
|
+
"NOT_FOUND",
|
|
848
|
+
"CONFIRMATION_STALE",
|
|
849
|
+
"CONFIRMATION_EXPIRED",
|
|
850
|
+
"CONFIRMATION_CONSUMED",
|
|
851
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
852
|
+
],
|
|
853
|
+
description: "Human challenge confirm of DagConfirmationV1 using server-derived current bindings.",
|
|
854
|
+
// M0-B: confirmDagConfirmation is NEVER model-callable. It IS the human
|
|
855
|
+
// confirmation — the model cannot self-confirm (roadmap G03). The model
|
|
856
|
+
// only prepares via prepareDagConfirmation; the browser mutation gate
|
|
857
|
+
// executes the confirm with a server-signed confirmationToken.
|
|
858
|
+
inputParams: [
|
|
859
|
+
{
|
|
860
|
+
name: "confirmationId",
|
|
861
|
+
type: "string",
|
|
862
|
+
required: true,
|
|
863
|
+
description: "confirmation id from prepareDagConfirmation",
|
|
864
|
+
},
|
|
865
|
+
],
|
|
866
|
+
modelCallable: "never",
|
|
867
|
+
humanConfirmation: "required",
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
action: "observeLink",
|
|
871
|
+
cli: "console observe deep-link builder (read-only navigation)",
|
|
872
|
+
kind: "read",
|
|
873
|
+
inputSchemaVersion: 1,
|
|
874
|
+
resultSchemaVersion: 1,
|
|
875
|
+
envelopeSchemaVersion: 1,
|
|
876
|
+
requiredErrorCodes: ["INVALID_INPUT"],
|
|
877
|
+
description: "Build Observe deep link from stable object identity. Pass exactly one of dagRunId (preferred), taskId (resolves to latest run), featureId, or workerRunId; omit all for the Console home link.",
|
|
878
|
+
inputParams: [
|
|
879
|
+
{
|
|
880
|
+
name: "dagRunId",
|
|
881
|
+
type: "string",
|
|
882
|
+
required: false,
|
|
883
|
+
description: "dag run id; deep-links to #/dag/<runId> (preferred when known)",
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
name: "taskId",
|
|
887
|
+
type: "string",
|
|
888
|
+
required: false,
|
|
889
|
+
description: "task id; resolves to the latest dag run when one exists, else #/task/<taskId>",
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
name: "featureId",
|
|
893
|
+
type: "string",
|
|
894
|
+
required: false,
|
|
895
|
+
description: "feature line id; deep-links to the feature view",
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
name: "workerRunId",
|
|
899
|
+
type: "string",
|
|
900
|
+
required: false,
|
|
901
|
+
description: "worker run id; deep-links to the worker run view",
|
|
902
|
+
},
|
|
903
|
+
],
|
|
904
|
+
modelCallable: "always",
|
|
905
|
+
humanConfirmation: "none",
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
action: "inspect",
|
|
909
|
+
cli: "loop-agent inspect --json",
|
|
910
|
+
kind: "read",
|
|
911
|
+
inputSchemaVersion: 1,
|
|
912
|
+
resultSchemaVersion: 1,
|
|
913
|
+
envelopeSchemaVersion: 1,
|
|
914
|
+
requiredErrorCodes: ["INVALID_INPUT"],
|
|
915
|
+
description: "Preflight a repository for loop-agent: checks harness presence, task-pool layout, and reports what the Console can operate on. Use at session start on an unfamiliar repo, before init/upgrade decisions.",
|
|
916
|
+
inputParams: [],
|
|
917
|
+
modelCallable: "always",
|
|
918
|
+
humanConfirmation: "none",
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
action: "doctor",
|
|
922
|
+
cli: "loop-agent doctor --json",
|
|
923
|
+
kind: "read",
|
|
924
|
+
inputSchemaVersion: 1,
|
|
925
|
+
resultSchemaVersion: 1,
|
|
926
|
+
envelopeSchemaVersion: 1,
|
|
927
|
+
requiredErrorCodes: ["INVALID_INPUT", "OPERATION_NEEDS_RECONCILE"],
|
|
928
|
+
description: "Repo health doctor with machine-readable report and read-only context audit (--context).",
|
|
929
|
+
inputParams: [],
|
|
930
|
+
modelCallable: "always",
|
|
931
|
+
humanConfirmation: "none",
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
action: "statsContext",
|
|
935
|
+
cli: "loop-agent stats context --last 50 --json",
|
|
936
|
+
kind: "read",
|
|
937
|
+
inputSchemaVersion: 1,
|
|
938
|
+
resultSchemaVersion: 1,
|
|
939
|
+
envelopeSchemaVersion: 1,
|
|
940
|
+
requiredErrorCodes: ["INVALID_INPUT"],
|
|
941
|
+
description: "Bounded skill-resolution / node-outcome telemetry over recent DAG runs (not compliance rates).",
|
|
942
|
+
inputParams: [],
|
|
943
|
+
modelCallable: "always",
|
|
944
|
+
humanConfirmation: "none",
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
action: "dagReport",
|
|
948
|
+
cli: "loop-agent dag report --run-id <runId> --json",
|
|
949
|
+
kind: "read",
|
|
950
|
+
inputSchemaVersion: 1,
|
|
951
|
+
resultSchemaVersion: 1,
|
|
952
|
+
envelopeSchemaVersion: 1,
|
|
953
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
954
|
+
description: "DAG run handoff report by run id. On failure, read primaryFailure.nodeId + primaryRecovery first; prefer dagRerunPlan from that node before standaloneTaskRerun or a new task.",
|
|
955
|
+
inputParams: [
|
|
956
|
+
{
|
|
957
|
+
name: "runId",
|
|
958
|
+
type: "string",
|
|
959
|
+
required: true,
|
|
960
|
+
description: "dag run id",
|
|
961
|
+
},
|
|
962
|
+
],
|
|
963
|
+
modelCallable: "always",
|
|
964
|
+
humanConfirmation: "none",
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
action: "status",
|
|
968
|
+
cli: "loop-agent task status <taskId> --json",
|
|
969
|
+
kind: "read",
|
|
970
|
+
inputSchemaVersion: 1,
|
|
971
|
+
resultSchemaVersion: 1,
|
|
972
|
+
envelopeSchemaVersion: 1,
|
|
973
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
974
|
+
description: "Read one task's lifecycle status: state, blockers, gates, contract revision, run associations. Use for task-level questions; use dagStatus for a specific DAG run's live node/liveness.",
|
|
975
|
+
inputParams: [
|
|
976
|
+
{
|
|
977
|
+
name: "taskId",
|
|
978
|
+
type: "string",
|
|
979
|
+
required: true,
|
|
980
|
+
description: "task id",
|
|
981
|
+
},
|
|
982
|
+
],
|
|
983
|
+
modelCallable: "always",
|
|
984
|
+
humanConfirmation: "none",
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
action: "spineCheck",
|
|
988
|
+
cli: "loop-agent spine audit <taskId> --json",
|
|
989
|
+
kind: "read",
|
|
990
|
+
inputSchemaVersion: 1,
|
|
991
|
+
resultSchemaVersion: 1,
|
|
992
|
+
envelopeSchemaVersion: 1,
|
|
993
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
994
|
+
description: "Audit a task's minimal spec spine: source docs, path ownership, requirement ids, final verification coverage. Use before closing out a task to confirm every AC is verified.",
|
|
995
|
+
inputParams: [
|
|
996
|
+
{
|
|
997
|
+
name: "taskId",
|
|
998
|
+
type: "string",
|
|
999
|
+
required: true,
|
|
1000
|
+
description: "task id",
|
|
1001
|
+
},
|
|
1002
|
+
],
|
|
1003
|
+
modelCallable: "always",
|
|
1004
|
+
humanConfirmation: "none",
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
action: "taskAdvance",
|
|
1008
|
+
cli: "loop-agent task advance <taskId> [title] --task-kind <kind> --allowed-path <glob> --forbidden-path <glob> --verify <label:command> --json",
|
|
1009
|
+
kind: "long-running",
|
|
1010
|
+
inputSchemaVersion: 1,
|
|
1011
|
+
resultSchemaVersion: 1,
|
|
1012
|
+
envelopeSchemaVersion: 1,
|
|
1013
|
+
requiredErrorCodes: [
|
|
1014
|
+
...COMMON_MUTATION_ERRORS,
|
|
1015
|
+
"INVALID_INPUT",
|
|
1016
|
+
],
|
|
1017
|
+
description: "Canonical typed task advance mutation. Use after task creation/PRD import to apply explicit taskKind and engineering boundaries, generate + strict-validate the DAG, and stop at the writeSet gate. Never pass placeholder ids such as <id>. A successful child process may still return a blocked business outcome; inspect lifecycleState, blockers, gate, and next.",
|
|
1018
|
+
inputParams: [
|
|
1019
|
+
{
|
|
1020
|
+
name: "taskId",
|
|
1021
|
+
type: "string",
|
|
1022
|
+
required: true,
|
|
1023
|
+
description: "canonical YYYY-MM-DD-<slug> task id; placeholders are rejected",
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
name: "title",
|
|
1027
|
+
type: "string",
|
|
1028
|
+
required: false,
|
|
1029
|
+
description: "optional task title for create/first advance",
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
name: "taskKind",
|
|
1033
|
+
type: "string",
|
|
1034
|
+
required: false,
|
|
1035
|
+
description: "business DAG template; ordinary fixes/docs use standard",
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
name: "featureId",
|
|
1039
|
+
type: "string",
|
|
1040
|
+
required: false,
|
|
1041
|
+
description: "required only by feature-scoped task kinds such as knowledge-sync",
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
name: "profile",
|
|
1045
|
+
type: "string",
|
|
1046
|
+
required: false,
|
|
1047
|
+
description: "governance profile auto|minimal|standard|reviewed|supervised",
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
name: "allowedPaths",
|
|
1051
|
+
type: "array",
|
|
1052
|
+
itemsType: "string",
|
|
1053
|
+
required: false,
|
|
1054
|
+
description: "explicit writer boundary globs",
|
|
1055
|
+
},
|
|
1056
|
+
{
|
|
1057
|
+
name: "forbiddenPaths",
|
|
1058
|
+
type: "array",
|
|
1059
|
+
itemsType: "string",
|
|
1060
|
+
required: false,
|
|
1061
|
+
description: "explicit forbidden path globs",
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
name: "verifyCommands",
|
|
1065
|
+
type: "array",
|
|
1066
|
+
itemsType: "string",
|
|
1067
|
+
required: false,
|
|
1068
|
+
description: "verification entries as label:command strings",
|
|
1069
|
+
},
|
|
1070
|
+
],
|
|
1071
|
+
modelCallable: "always",
|
|
1072
|
+
humanConfirmation: "none",
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
action: "dagRunTask",
|
|
1076
|
+
cli: "loop-agent task advance <taskId> --profile auto --dag-output <path> --json",
|
|
1077
|
+
kind: "long-running",
|
|
1078
|
+
inputSchemaVersion: 1,
|
|
1079
|
+
resultSchemaVersion: 1,
|
|
1080
|
+
envelopeSchemaVersion: 1,
|
|
1081
|
+
requiredErrorCodes: [
|
|
1082
|
+
"NOT_MANAGED",
|
|
1083
|
+
"BINDING_DRIFT",
|
|
1084
|
+
"EXTERNALLY_MODIFIED",
|
|
1085
|
+
"INVALID_INPUT",
|
|
1086
|
+
],
|
|
1087
|
+
description: "Generate + strict-validate a task's DAG (via task advance, stops at the writeSet gate). Legacy entry; the standard flow is taskAdvance then prepareDagExecution + runDag.",
|
|
1088
|
+
inputParams: [
|
|
1089
|
+
{
|
|
1090
|
+
name: "taskId",
|
|
1091
|
+
type: "string",
|
|
1092
|
+
required: true,
|
|
1093
|
+
description: "task id to run as a DAG",
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
name: "profile",
|
|
1097
|
+
type: "string",
|
|
1098
|
+
required: false,
|
|
1099
|
+
description: "DAG profile (defaults to auto)",
|
|
1100
|
+
},
|
|
1101
|
+
],
|
|
1102
|
+
modelCallable: "always",
|
|
1103
|
+
humanConfirmation: "none",
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
action: "dagValidate",
|
|
1107
|
+
cli: "loop-agent dag validate --dag <path> --json",
|
|
1108
|
+
kind: "read",
|
|
1109
|
+
inputSchemaVersion: 1,
|
|
1110
|
+
resultSchemaVersion: 1,
|
|
1111
|
+
envelopeSchemaVersion: 1,
|
|
1112
|
+
requiredErrorCodes: ["INVALID_INPUT", "BINDING_DRIFT"],
|
|
1113
|
+
description: "Validate DAG including taskContractBinding drift checks.",
|
|
1114
|
+
inputParams: [
|
|
1115
|
+
{
|
|
1116
|
+
name: "dagPath",
|
|
1117
|
+
type: "string",
|
|
1118
|
+
required: true,
|
|
1119
|
+
description: "DAG file path to validate",
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
name: "taskId",
|
|
1123
|
+
type: "string",
|
|
1124
|
+
required: false,
|
|
1125
|
+
description: "spine task id (optional, for strict-governance spine check)",
|
|
1126
|
+
},
|
|
1127
|
+
],
|
|
1128
|
+
modelCallable: "always",
|
|
1129
|
+
humanConfirmation: "none",
|
|
1130
|
+
},
|
|
1131
|
+
{
|
|
1132
|
+
action: "runDag",
|
|
1133
|
+
cli: "loop-agent task advance <taskId> --approve-gate <id:digest> --json | dag execute --dag <staged-path>",
|
|
1134
|
+
kind: "long-running",
|
|
1135
|
+
inputSchemaVersion: 1,
|
|
1136
|
+
resultSchemaVersion: 1,
|
|
1137
|
+
envelopeSchemaVersion: 1,
|
|
1138
|
+
requiredErrorCodes: [
|
|
1139
|
+
"BINDING_DRIFT",
|
|
1140
|
+
"CONTROLLER_MISMATCH",
|
|
1141
|
+
"INVALID_INPUT",
|
|
1142
|
+
],
|
|
1143
|
+
description: "Consume a single-use executionId from prepareDagExecution and execute the reviewed DAG. Do not pass a DAG path and do not bash `task advance --approve-gate`. accepted/queued/running/operationId are NOT completion — supervise via operationGet/status/dagReport/dagDoctor/operationWait.",
|
|
1144
|
+
inputParams: [
|
|
1145
|
+
{
|
|
1146
|
+
name: "executionId",
|
|
1147
|
+
type: "string",
|
|
1148
|
+
required: true,
|
|
1149
|
+
description: "execution id (from prepareDagExecution) — raw dag path is never accepted from the model",
|
|
1150
|
+
},
|
|
1151
|
+
],
|
|
1152
|
+
// always: the model can invoke runDag with a server-issued executionId.
|
|
1153
|
+
// The server re-validates staged bytes/hash + bindings at consume time
|
|
1154
|
+
// (2026-08-11 autonomous DAG supervision; receipt replaces browser gate).
|
|
1155
|
+
modelCallable: "always",
|
|
1156
|
+
humanConfirmation: "none",
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
action: "dagRerunPlan",
|
|
1160
|
+
cli: "loop-agent dag rerun --run-id <id> --from-node <node> --plan --json",
|
|
1161
|
+
kind: "read",
|
|
1162
|
+
inputSchemaVersion: 1,
|
|
1163
|
+
resultSchemaVersion: 1,
|
|
1164
|
+
envelopeSchemaVersion: 1,
|
|
1165
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND"],
|
|
1166
|
+
description: "Read-only check: can this failed run continue from fromNode? Call after dagReport; pass primaryFailure.nodeId. Does not execute. eligible=true returns planHash for dagRerun. eligible=false: Worker/Task Pool Failed → workerTaskRetry; standalone Console run → standaloneTaskRerun after any required contract adopt. Do not call dagRerun or invent a new task.",
|
|
1167
|
+
inputParams: [
|
|
1168
|
+
{
|
|
1169
|
+
name: "runId",
|
|
1170
|
+
type: "string",
|
|
1171
|
+
required: true,
|
|
1172
|
+
description: "completed failed|partial_failed parent dag run id",
|
|
1173
|
+
},
|
|
1174
|
+
{
|
|
1175
|
+
name: "fromNode",
|
|
1176
|
+
type: "string",
|
|
1177
|
+
required: true,
|
|
1178
|
+
description: "node id to rerun from (prefer failed/attention node from dagReport primaryFailure.nodeId)",
|
|
1179
|
+
},
|
|
1180
|
+
],
|
|
1181
|
+
modelCallable: "always",
|
|
1182
|
+
humanConfirmation: "none",
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
action: "dagRerun",
|
|
1186
|
+
cli: "loop-agent dag rerun --run-id <id> --from-node <node> --plan-hash <hash> --request-id <id> --reason <text> --json",
|
|
1187
|
+
kind: "long-running",
|
|
1188
|
+
inputSchemaVersion: 1,
|
|
1189
|
+
resultSchemaVersion: 1,
|
|
1190
|
+
envelopeSchemaVersion: 1,
|
|
1191
|
+
requiredErrorCodes: [
|
|
1192
|
+
...COMMON_MUTATION_ERRORS,
|
|
1193
|
+
"BINDING_DRIFT",
|
|
1194
|
+
"INVALID_INPUT",
|
|
1195
|
+
],
|
|
1196
|
+
description: "Continue the same DAG from fromNode. Requires a fresh dagRerunPlan with eligible=true and that exact planHash. Prefer this for provider flake / safe downstream failures. Not a full task regenerate (that is standaloneTaskRerun). Server rejects stale planHash or binding drift.",
|
|
1197
|
+
inputParams: [
|
|
1198
|
+
{
|
|
1199
|
+
name: "runId",
|
|
1200
|
+
type: "string",
|
|
1201
|
+
required: true,
|
|
1202
|
+
description: "parent dag run id (same as dagRerunPlan)",
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
name: "fromNode",
|
|
1206
|
+
type: "string",
|
|
1207
|
+
required: true,
|
|
1208
|
+
description: "node id matching the planned dagRerunPlan",
|
|
1209
|
+
},
|
|
1210
|
+
{
|
|
1211
|
+
name: "planHash",
|
|
1212
|
+
type: "string",
|
|
1213
|
+
required: true,
|
|
1214
|
+
description: "sha256 plan hash from dagRerunPlan (must match exactly)",
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
name: "reason",
|
|
1218
|
+
type: "string",
|
|
1219
|
+
required: true,
|
|
1220
|
+
description: "why continue from this node (e.g. provider flake; resume from review-pi)",
|
|
1221
|
+
},
|
|
1222
|
+
],
|
|
1223
|
+
// always: fresh eligible dagRerun plans are model-callable (2026-08-11).
|
|
1224
|
+
// The CLI keeps enforcing parent lifecycle, fromNode, planHash,
|
|
1225
|
+
// binding/fingerprint and request idempotency.
|
|
1226
|
+
modelCallable: "always",
|
|
1227
|
+
humanConfirmation: "none",
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
action: "dagInterruptEligibility",
|
|
1231
|
+
cli: "console dag-interrupt-eligibility",
|
|
1232
|
+
kind: "read",
|
|
1233
|
+
inputSchemaVersion: 1,
|
|
1234
|
+
resultSchemaVersion: 1,
|
|
1235
|
+
envelopeSchemaVersion: 1,
|
|
1236
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND"],
|
|
1237
|
+
description: "Read-only eligibility for cooperative live-DAG interrupt. v1 only Console-owned active running operations. Worker-managed / unknown owner / orphaned / terminal runs return eligible=false with stable reasonCodes. Does not create a Human Gate receipt or mutate the run.",
|
|
1238
|
+
inputParams: [
|
|
1239
|
+
{
|
|
1240
|
+
name: "runId",
|
|
1241
|
+
type: "string",
|
|
1242
|
+
required: true,
|
|
1243
|
+
description: "active dag run id to inspect for interrupt eligibility",
|
|
1244
|
+
},
|
|
1245
|
+
],
|
|
1246
|
+
modelCallable: "always",
|
|
1247
|
+
humanConfirmation: "none",
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
action: "dagRequestInterrupt",
|
|
1251
|
+
cli: "loop-agent dag request-interrupt --run-id <id> --request-id <id> --target-operation-id <id> --reason-code <code> --reason <detail> --json",
|
|
1252
|
+
kind: "mutation",
|
|
1253
|
+
inputSchemaVersion: 1,
|
|
1254
|
+
resultSchemaVersion: 1,
|
|
1255
|
+
envelopeSchemaVersion: 1,
|
|
1256
|
+
requiredErrorCodes: [
|
|
1257
|
+
...COMMON_MUTATION_ERRORS,
|
|
1258
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1259
|
+
"RUN_NOT_ACTIVE",
|
|
1260
|
+
"RUN_NOT_CONSOLE_OWNED",
|
|
1261
|
+
"RUNNER_IDENTITY_MISMATCH",
|
|
1262
|
+
"INTERRUPT_ALREADY_PENDING",
|
|
1263
|
+
"RUN_ALREADY_TERMINAL",
|
|
1264
|
+
"INTERRUPT_NEEDS_RECONCILE",
|
|
1265
|
+
],
|
|
1266
|
+
description: "Request cooperative abort of a Console-owned running DAG. Success means interrupt.json is requested, not that the run has already stopped. Browser Human Gate only; model must not call this action.",
|
|
1267
|
+
inputParams: [
|
|
1268
|
+
{
|
|
1269
|
+
name: "runId",
|
|
1270
|
+
type: "string",
|
|
1271
|
+
required: true,
|
|
1272
|
+
description: "active dag run id",
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
name: "reasonCode",
|
|
1276
|
+
type: "string",
|
|
1277
|
+
required: true,
|
|
1278
|
+
description: "requirements-changed | suspected-runaway | resource-protection | operator-request | other",
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
name: "reasonDetail",
|
|
1282
|
+
type: "string",
|
|
1283
|
+
required: true,
|
|
1284
|
+
description: "10–500 character operator reason; do not auto-fill placeholders",
|
|
1285
|
+
},
|
|
1286
|
+
{
|
|
1287
|
+
name: "confirmationId",
|
|
1288
|
+
type: "string",
|
|
1289
|
+
required: true,
|
|
1290
|
+
description: "human confirmation receipt id from prepareMutationGate",
|
|
1291
|
+
},
|
|
1292
|
+
],
|
|
1293
|
+
modelCallable: "prepare-only",
|
|
1294
|
+
humanConfirmation: "required",
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
action: "prepareMutationGate",
|
|
1298
|
+
cli: "console prepare-mutation-gate",
|
|
1299
|
+
kind: "mutation",
|
|
1300
|
+
inputSchemaVersion: 1,
|
|
1301
|
+
resultSchemaVersion: 1,
|
|
1302
|
+
envelopeSchemaVersion: 1,
|
|
1303
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND"],
|
|
1304
|
+
description: "Prepare a one-shot Human Gate receipt for destructive reconcile, live DAG interrupt, and Night Scheduler mutations. Model may prepare; only the browser mutation gate may consume. Do not use for dagRerun / standaloneTaskRerun / workerTaskRetry.",
|
|
1305
|
+
inputParams: [
|
|
1306
|
+
{
|
|
1307
|
+
name: "action",
|
|
1308
|
+
type: "string",
|
|
1309
|
+
required: true,
|
|
1310
|
+
description: "target action: dagReconcileRun | dagRequestInterrupt | workerAdmissionPrepare | workerSchedulerAdd | workerSchedulerCancel | workerSchedulerHarvest | workerSchedulerDiscard. Not for standaloneTaskRerun / workerTaskRetry / dagRerun (those are autonomous).",
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
name: "actionParams",
|
|
1314
|
+
type: "object",
|
|
1315
|
+
required: true,
|
|
1316
|
+
description: "params that will be bound into the receipt hash",
|
|
1317
|
+
},
|
|
1318
|
+
],
|
|
1319
|
+
modelCallable: "always",
|
|
1320
|
+
humanConfirmation: "none",
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
action: "workerAdmissionPrepare",
|
|
1324
|
+
cli: 'agent-worker admission prepare --repo . --feature-dir <path> --task-id <id> --at "YYYY-MM-DD HH:mm" [--tz Asia/Shanghai] [--task-card <ref>]',
|
|
1325
|
+
kind: "long-running",
|
|
1326
|
+
inputSchemaVersion: 1,
|
|
1327
|
+
resultSchemaVersion: 1,
|
|
1328
|
+
envelopeSchemaVersion: 1,
|
|
1329
|
+
requiredErrorCodes: [
|
|
1330
|
+
...COMMON_MUTATION_ERRORS,
|
|
1331
|
+
"INVALID_INPUT",
|
|
1332
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1333
|
+
],
|
|
1334
|
+
description: "Daytime Night Scheduler admission prepare: freeze worktree + DAG writeSet gate receipt (no execute).",
|
|
1335
|
+
inputParams: [
|
|
1336
|
+
{
|
|
1337
|
+
name: "featureDir",
|
|
1338
|
+
type: "string",
|
|
1339
|
+
required: true,
|
|
1340
|
+
description: "feature directory path",
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
name: "taskId",
|
|
1344
|
+
type: "string",
|
|
1345
|
+
required: true,
|
|
1346
|
+
description: "task id",
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
name: "at",
|
|
1350
|
+
type: "string",
|
|
1351
|
+
required: true,
|
|
1352
|
+
description: 'local execute time "YYYY-MM-DD HH:mm"',
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
name: "tz",
|
|
1356
|
+
type: "string",
|
|
1357
|
+
required: false,
|
|
1358
|
+
description: "IANA timezone (default Asia/Shanghai)",
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
name: "taskCard",
|
|
1362
|
+
type: "string",
|
|
1363
|
+
required: false,
|
|
1364
|
+
description: "company task card / work item ref",
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
name: "confirmationId",
|
|
1368
|
+
type: "string",
|
|
1369
|
+
required: true,
|
|
1370
|
+
description: "mutation-gate receipt id from prepareMutationGate",
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
name: "humanGateToken",
|
|
1374
|
+
type: "object",
|
|
1375
|
+
required: true,
|
|
1376
|
+
description: "server-signed human-gate token from prepareMutationGate",
|
|
1377
|
+
},
|
|
1378
|
+
],
|
|
1379
|
+
modelCallable: "prepare-only",
|
|
1380
|
+
humanConfirmation: "required",
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
action: "workerSchedulerAdd",
|
|
1384
|
+
cli: "agent-worker scheduler add <schedule-id> --repo . --approve-gate <token>",
|
|
1385
|
+
kind: "mutation",
|
|
1386
|
+
inputSchemaVersion: 1,
|
|
1387
|
+
resultSchemaVersion: 1,
|
|
1388
|
+
envelopeSchemaVersion: 1,
|
|
1389
|
+
requiredErrorCodes: [
|
|
1390
|
+
...COMMON_MUTATION_ERRORS,
|
|
1391
|
+
"INVALID_INPUT",
|
|
1392
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1393
|
+
],
|
|
1394
|
+
description: "Approve frozen night admission gate and reserve Task Pool Queued (no DAG execute).",
|
|
1395
|
+
inputParams: [
|
|
1396
|
+
{
|
|
1397
|
+
name: "scheduleId",
|
|
1398
|
+
type: "string",
|
|
1399
|
+
required: true,
|
|
1400
|
+
description: "schedule id",
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
name: "approveGate",
|
|
1404
|
+
type: "string",
|
|
1405
|
+
required: true,
|
|
1406
|
+
description: "gate token from admission prepare review packet",
|
|
1407
|
+
},
|
|
1408
|
+
{
|
|
1409
|
+
name: "confirmationId",
|
|
1410
|
+
type: "string",
|
|
1411
|
+
required: true,
|
|
1412
|
+
description: "mutation-gate receipt id from prepareMutationGate",
|
|
1413
|
+
},
|
|
1414
|
+
{
|
|
1415
|
+
name: "humanGateToken",
|
|
1416
|
+
type: "object",
|
|
1417
|
+
required: true,
|
|
1418
|
+
description: "server-signed human-gate token from prepareMutationGate",
|
|
1419
|
+
},
|
|
1420
|
+
],
|
|
1421
|
+
modelCallable: "prepare-only",
|
|
1422
|
+
humanConfirmation: "required",
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
action: "workerSchedulerCancel",
|
|
1426
|
+
cli: "agent-worker scheduler cancel <schedule-id> --repo . [--reason <text>]",
|
|
1427
|
+
kind: "mutation",
|
|
1428
|
+
inputSchemaVersion: 1,
|
|
1429
|
+
resultSchemaVersion: 1,
|
|
1430
|
+
envelopeSchemaVersion: 1,
|
|
1431
|
+
requiredErrorCodes: [
|
|
1432
|
+
...COMMON_MUTATION_ERRORS,
|
|
1433
|
+
"INVALID_INPUT",
|
|
1434
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1435
|
+
],
|
|
1436
|
+
description: "Cancel a non-dispatched night schedule and release Task Pool Queued reservation when bound.",
|
|
1437
|
+
inputParams: [
|
|
1438
|
+
{
|
|
1439
|
+
name: "scheduleId",
|
|
1440
|
+
type: "string",
|
|
1441
|
+
required: true,
|
|
1442
|
+
description: "schedule id",
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
name: "reason",
|
|
1446
|
+
type: "string",
|
|
1447
|
+
required: false,
|
|
1448
|
+
description: "cancel reason",
|
|
1449
|
+
},
|
|
1450
|
+
{
|
|
1451
|
+
name: "confirmationId",
|
|
1452
|
+
type: "string",
|
|
1453
|
+
required: true,
|
|
1454
|
+
description: "mutation-gate receipt id from prepareMutationGate",
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
name: "humanGateToken",
|
|
1458
|
+
type: "object",
|
|
1459
|
+
required: true,
|
|
1460
|
+
description: "server-signed human-gate token from prepareMutationGate",
|
|
1461
|
+
},
|
|
1462
|
+
],
|
|
1463
|
+
modelCallable: "prepare-only",
|
|
1464
|
+
humanConfirmation: "required",
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
action: "workerSchedulerHarvest",
|
|
1468
|
+
cli: "agent-worker scheduler harvest <schedule-id> --repo .",
|
|
1469
|
+
kind: "mutation",
|
|
1470
|
+
inputSchemaVersion: 1,
|
|
1471
|
+
resultSchemaVersion: 1,
|
|
1472
|
+
envelopeSchemaVersion: 1,
|
|
1473
|
+
requiredErrorCodes: [
|
|
1474
|
+
...COMMON_MUTATION_ERRORS,
|
|
1475
|
+
"INVALID_INPUT",
|
|
1476
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1477
|
+
],
|
|
1478
|
+
description: "Morning harvest of a succeeded night branch via exact-base fast-forward only.",
|
|
1479
|
+
inputParams: [
|
|
1480
|
+
{
|
|
1481
|
+
name: "scheduleId",
|
|
1482
|
+
type: "string",
|
|
1483
|
+
required: true,
|
|
1484
|
+
description: "schedule id",
|
|
1485
|
+
},
|
|
1486
|
+
{
|
|
1487
|
+
name: "confirmationId",
|
|
1488
|
+
type: "string",
|
|
1489
|
+
required: true,
|
|
1490
|
+
description: "mutation-gate receipt id from prepareMutationGate",
|
|
1491
|
+
},
|
|
1492
|
+
{
|
|
1493
|
+
name: "humanGateToken",
|
|
1494
|
+
type: "object",
|
|
1495
|
+
required: true,
|
|
1496
|
+
description: "server-signed human-gate token from prepareMutationGate",
|
|
1497
|
+
},
|
|
1498
|
+
],
|
|
1499
|
+
modelCallable: "prepare-only",
|
|
1500
|
+
humanConfirmation: "required",
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
action: "workerSchedulerDiscard",
|
|
1504
|
+
cli: 'agent-worker scheduler discard <schedule-id> --repo . --reason "..." [--force]',
|
|
1505
|
+
kind: "mutation",
|
|
1506
|
+
inputSchemaVersion: 1,
|
|
1507
|
+
resultSchemaVersion: 1,
|
|
1508
|
+
envelopeSchemaVersion: 1,
|
|
1509
|
+
requiredErrorCodes: [
|
|
1510
|
+
...COMMON_MUTATION_ERRORS,
|
|
1511
|
+
"INVALID_INPUT",
|
|
1512
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1513
|
+
],
|
|
1514
|
+
description: "Discard night worktree/branch after retaining evidence; --force required for failed/human_required.",
|
|
1515
|
+
inputParams: [
|
|
1516
|
+
{
|
|
1517
|
+
name: "scheduleId",
|
|
1518
|
+
type: "string",
|
|
1519
|
+
required: true,
|
|
1520
|
+
description: "schedule id",
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
name: "reason",
|
|
1524
|
+
type: "string",
|
|
1525
|
+
required: true,
|
|
1526
|
+
description: "discard reason",
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
name: "force",
|
|
1530
|
+
type: "boolean",
|
|
1531
|
+
required: false,
|
|
1532
|
+
description: "force discard for failed/human_required",
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
name: "confirmationId",
|
|
1536
|
+
type: "string",
|
|
1537
|
+
required: true,
|
|
1538
|
+
description: "mutation-gate receipt id from prepareMutationGate",
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
name: "humanGateToken",
|
|
1542
|
+
type: "object",
|
|
1543
|
+
required: true,
|
|
1544
|
+
description: "server-signed human-gate token from prepareMutationGate",
|
|
1545
|
+
},
|
|
1546
|
+
],
|
|
1547
|
+
modelCallable: "prepare-only",
|
|
1548
|
+
humanConfirmation: "required",
|
|
1549
|
+
},
|
|
1550
|
+
{
|
|
1551
|
+
action: "standaloneTaskRerun",
|
|
1552
|
+
cli: "loop-agent dag rerun-task --run-id <id> --reason <text> --request-id <id> [--profile auto] [--task-id <id>] --json",
|
|
1553
|
+
kind: "long-running",
|
|
1554
|
+
inputSchemaVersion: 1,
|
|
1555
|
+
resultSchemaVersion: 1,
|
|
1556
|
+
envelopeSchemaVersion: 1,
|
|
1557
|
+
requiredErrorCodes: [
|
|
1558
|
+
...COMMON_MUTATION_ERRORS,
|
|
1559
|
+
"INVALID_INPUT",
|
|
1560
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1561
|
+
],
|
|
1562
|
+
description: "Regenerate the whole standalone DAG from the CURRENT contract, then validate and execute a new run (parent lineage kept). This is NOT continue-from-failed-node — that is dagRerun. Server rejects the call when dagRerunPlan is eligible, when primaryRecovery.humanRequired=true, or when run facts do not recommend rerun-task. Adopt contract changes before calling or the new DAG repeats the same failure.",
|
|
1563
|
+
inputParams: [
|
|
1564
|
+
{
|
|
1565
|
+
name: "runId",
|
|
1566
|
+
type: "string",
|
|
1567
|
+
required: true,
|
|
1568
|
+
description: "dag run id",
|
|
1569
|
+
},
|
|
1570
|
+
{
|
|
1571
|
+
name: "reason",
|
|
1572
|
+
type: "string",
|
|
1573
|
+
required: true,
|
|
1574
|
+
description: "rerun reason",
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
name: "profile",
|
|
1578
|
+
type: "string",
|
|
1579
|
+
required: false,
|
|
1580
|
+
description: "DAG profile (defaults to auto)",
|
|
1581
|
+
},
|
|
1582
|
+
{
|
|
1583
|
+
name: "taskId",
|
|
1584
|
+
type: "string",
|
|
1585
|
+
required: false,
|
|
1586
|
+
description: "original task id (must match the run's task binding; never invent a new task-id)",
|
|
1587
|
+
},
|
|
1588
|
+
],
|
|
1589
|
+
// always: the server gate is the read-only run-facts check (2026-08-11);
|
|
1590
|
+
// no browser Human Gate token is required for safe same-task rerun.
|
|
1591
|
+
modelCallable: "always",
|
|
1592
|
+
humanConfirmation: "none",
|
|
1593
|
+
},
|
|
1594
|
+
{
|
|
1595
|
+
action: "workerTaskRetry",
|
|
1596
|
+
cli: "agent-worker task retry <task-id> --feature-id <feature-id> --repo . --reason <text>",
|
|
1597
|
+
kind: "mutation",
|
|
1598
|
+
inputSchemaVersion: 1,
|
|
1599
|
+
resultSchemaVersion: 1,
|
|
1600
|
+
envelopeSchemaVersion: 1,
|
|
1601
|
+
requiredErrorCodes: [
|
|
1602
|
+
...COMMON_MUTATION_ERRORS,
|
|
1603
|
+
"INVALID_INPUT",
|
|
1604
|
+
"HUMAN_CONFIRMATION_REQUIRED",
|
|
1605
|
+
],
|
|
1606
|
+
description: "Requeue a Worker Task Pool task Failed → Ready. Not a DAG node rerun (use dagRerun) and not a standalone DAG regenerate (use standaloneTaskRerun). Confirm with workerPoolDoctor first; server accepts only Failed pool tasks. Pass featureId when known — it must match the pool record.",
|
|
1607
|
+
inputParams: [
|
|
1608
|
+
{
|
|
1609
|
+
name: "taskId",
|
|
1610
|
+
type: "string",
|
|
1611
|
+
required: true,
|
|
1612
|
+
description: "task id",
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
name: "featureId",
|
|
1616
|
+
type: "string",
|
|
1617
|
+
required: false,
|
|
1618
|
+
description: "feature id (canonical retry carries Feature identity; passed to the CLI as --feature-id when present)",
|
|
1619
|
+
},
|
|
1620
|
+
{
|
|
1621
|
+
name: "reason",
|
|
1622
|
+
type: "string",
|
|
1623
|
+
required: true,
|
|
1624
|
+
description: "retry reason",
|
|
1625
|
+
},
|
|
1626
|
+
],
|
|
1627
|
+
// always: the server gate is the read-only worker task facts check
|
|
1628
|
+
// (2026-08-11); no browser Human Gate token is required.
|
|
1629
|
+
modelCallable: "always",
|
|
1630
|
+
humanConfirmation: "none",
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
action: "dagDoctor",
|
|
1634
|
+
cli: "loop-agent dag doctor [--run-id <id>] --json",
|
|
1635
|
+
kind: "read",
|
|
1636
|
+
inputSchemaVersion: 1,
|
|
1637
|
+
resultSchemaVersion: 1,
|
|
1638
|
+
envelopeSchemaVersion: 1,
|
|
1639
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
1640
|
+
description: "Diagnose DAG run health. Omit runId for a repo-wide inventory (active/paused/completed + health issues). Pass runId for one run's liveness, heartbeat, failure node, and recovery hints. Use this to supervise stalls; it does not mutate the run.",
|
|
1641
|
+
inputParams: [
|
|
1642
|
+
{
|
|
1643
|
+
name: "runId",
|
|
1644
|
+
type: "string",
|
|
1645
|
+
required: false,
|
|
1646
|
+
description: "optional dag run id; omit to inventory all runs, pass to diagnose one run",
|
|
1647
|
+
},
|
|
1648
|
+
],
|
|
1649
|
+
modelCallable: "always",
|
|
1650
|
+
humanConfirmation: "none",
|
|
1651
|
+
},
|
|
1652
|
+
{
|
|
1653
|
+
action: "dagStatus",
|
|
1654
|
+
cli: "loop-agent dag status --run-id <id>",
|
|
1655
|
+
kind: "read",
|
|
1656
|
+
inputSchemaVersion: 1,
|
|
1657
|
+
resultSchemaVersion: 1,
|
|
1658
|
+
envelopeSchemaVersion: 1,
|
|
1659
|
+
requiredErrorCodes: ["NOT_FOUND", "INVALID_INPUT"],
|
|
1660
|
+
description: "Read one DAG run's live status, current node, and liveness. Requires runId. Complements dagReport (terminal handoff) and dagDoctor (health diagnosis). Does not mutate the run.",
|
|
1661
|
+
inputParams: [
|
|
1662
|
+
{
|
|
1663
|
+
name: "runId",
|
|
1664
|
+
type: "string",
|
|
1665
|
+
required: true,
|
|
1666
|
+
description: "dag run id",
|
|
1667
|
+
},
|
|
1668
|
+
],
|
|
1669
|
+
modelCallable: "always",
|
|
1670
|
+
humanConfirmation: "none",
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
action: "workerPoolDoctor",
|
|
1674
|
+
cli: "agent-worker pool doctor --repo . --json",
|
|
1675
|
+
kind: "read",
|
|
1676
|
+
inputSchemaVersion: 1,
|
|
1677
|
+
resultSchemaVersion: 1,
|
|
1678
|
+
envelopeSchemaVersion: 1,
|
|
1679
|
+
requiredErrorCodes: ["INVALID_INPUT", "NOT_FOUND"],
|
|
1680
|
+
description: "Read-only Task Pool inventory (legacy + v2). Use before workerTaskRetry to confirm the task exists and status is Failed. Optional taskId filters the returned inventory to that task.",
|
|
1681
|
+
inputParams: [
|
|
1682
|
+
{
|
|
1683
|
+
name: "taskId",
|
|
1684
|
+
type: "string",
|
|
1685
|
+
required: false,
|
|
1686
|
+
description: "optional task id to focus the inventory",
|
|
1687
|
+
},
|
|
1688
|
+
],
|
|
1689
|
+
modelCallable: "always",
|
|
1690
|
+
humanConfirmation: "none",
|
|
1691
|
+
},
|
|
1692
|
+
...OFFICIAL_ACTIONS,
|
|
1693
|
+
];
|
|
1694
|
+
return {
|
|
1695
|
+
schemaVersion: 1,
|
|
1696
|
+
envelopeSchemaVersion: 1,
|
|
1697
|
+
outcomes: OPERATOR_OUTCOMES_V1,
|
|
1698
|
+
errorCodes: OPERATOR_ERROR_CODES_V1,
|
|
1699
|
+
dagSpecVersions: {
|
|
1700
|
+
supportedParse: DAG_SPEC_SUPPORTED_PARSE,
|
|
1701
|
+
newWriterDefault: DAG_SPEC_NEW_WRITER_DEFAULT,
|
|
1702
|
+
historicalTerminalReadOnly: DAG_SPEC_HISTORICAL_TERMINAL_READ_ONLY,
|
|
1703
|
+
},
|
|
1704
|
+
dag: {
|
|
1705
|
+
supportedSpecVersions: DAG_SPEC_SUPPORTED_PARSE,
|
|
1706
|
+
generatedSpecVersion: DAG_SPEC_NEW_WRITER_DEFAULT,
|
|
1707
|
+
requiresTaskContractBinding: REQUIRES_TASK_CONTRACT_BINDING,
|
|
1708
|
+
taskContractBindingSchemaVersion: TASK_CONTRACT_BINDING_SCHEMA_VERSION,
|
|
1709
|
+
},
|
|
1710
|
+
taskContract: {
|
|
1711
|
+
draftSchemaVersion: 1,
|
|
1712
|
+
refSchemaVersion: 1,
|
|
1713
|
+
projectionVersion: 1,
|
|
1714
|
+
canonicalizerVersion: 1,
|
|
1715
|
+
taskConfigSchemaVersion: 1,
|
|
1716
|
+
},
|
|
1717
|
+
controllerProtocol: {
|
|
1718
|
+
schemaVersion: 1,
|
|
1719
|
+
controllerProtocolVersion: 1,
|
|
1720
|
+
workerAdapterProtocolRange: WORKER_ADAPTER_PROTOCOL_RANGE,
|
|
1721
|
+
capabilities: CONTROLLER_PROTOCOL_CAPABILITIES,
|
|
1722
|
+
packageVersion: PACKAGE_VERSION,
|
|
1723
|
+
},
|
|
1724
|
+
actions,
|
|
1725
|
+
};
|
|
1726
|
+
}
|
|
1727
|
+
export const OPERATOR_COMMAND_COVERAGE = Object.freeze([
|
|
1728
|
+
{
|
|
1729
|
+
command: "loop-agent inspect",
|
|
1730
|
+
coverage: "model-callable",
|
|
1731
|
+
action: "inspect",
|
|
1732
|
+
source: "loop-agent",
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
command: "loop-agent doctor",
|
|
1736
|
+
coverage: "model-callable",
|
|
1737
|
+
action: "doctor",
|
|
1738
|
+
source: "loop-agent",
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
command: "loop-agent task advance",
|
|
1742
|
+
coverage: "model-callable",
|
|
1743
|
+
action: "taskAdvance",
|
|
1744
|
+
source: "loop-agent",
|
|
1745
|
+
},
|
|
1746
|
+
{
|
|
1747
|
+
command: "loop-agent task status",
|
|
1748
|
+
coverage: "model-callable",
|
|
1749
|
+
action: "status",
|
|
1750
|
+
source: "loop-agent",
|
|
1751
|
+
},
|
|
1752
|
+
{
|
|
1753
|
+
command: "loop-agent pi-reuse-benchmark",
|
|
1754
|
+
coverage: "advanced",
|
|
1755
|
+
action: "piReuseBenchmark",
|
|
1756
|
+
source: "loop-agent",
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
command: "loop-agent loop-benchmark",
|
|
1760
|
+
coverage: "advanced",
|
|
1761
|
+
action: "loopBenchmark",
|
|
1762
|
+
source: "loop-agent",
|
|
1763
|
+
},
|
|
1764
|
+
{
|
|
1765
|
+
command: "loop-agent dag execute",
|
|
1766
|
+
coverage: "model-callable",
|
|
1767
|
+
action: "runDag",
|
|
1768
|
+
source: "loop-agent",
|
|
1769
|
+
note: "runDag consumes a server-issued single-use execution receipt (prepareDagExecution); browser Human Gate no longer required for bounded DAGs (2026-08-11).",
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
command: "loop-agent cursor-prompt",
|
|
1773
|
+
coverage: "excluded",
|
|
1774
|
+
action: null,
|
|
1775
|
+
source: "loop-agent",
|
|
1776
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1777
|
+
},
|
|
1778
|
+
{
|
|
1779
|
+
command: "loop-agent pi-prompt",
|
|
1780
|
+
coverage: "excluded",
|
|
1781
|
+
action: null,
|
|
1782
|
+
source: "loop-agent",
|
|
1783
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1784
|
+
},
|
|
1785
|
+
{
|
|
1786
|
+
command: "loop-agent delegate",
|
|
1787
|
+
coverage: "excluded",
|
|
1788
|
+
action: null,
|
|
1789
|
+
source: "loop-agent",
|
|
1790
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1791
|
+
},
|
|
1792
|
+
{
|
|
1793
|
+
command: "loop-agent harvest",
|
|
1794
|
+
coverage: "excluded",
|
|
1795
|
+
action: null,
|
|
1796
|
+
source: "loop-agent",
|
|
1797
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1798
|
+
},
|
|
1799
|
+
{
|
|
1800
|
+
command: "loop-agent goal",
|
|
1801
|
+
coverage: "excluded",
|
|
1802
|
+
action: null,
|
|
1803
|
+
source: "loop-agent",
|
|
1804
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
command: "loop-agent docs audit",
|
|
1808
|
+
coverage: "model-callable",
|
|
1809
|
+
action: "docsAudit",
|
|
1810
|
+
source: "loop-agent",
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
command: "loop-agent docs archive",
|
|
1814
|
+
coverage: "advanced",
|
|
1815
|
+
action: "docsArchive",
|
|
1816
|
+
source: "loop-agent",
|
|
1817
|
+
},
|
|
1818
|
+
{
|
|
1819
|
+
command: "loop-agent init instructions",
|
|
1820
|
+
coverage: "excluded",
|
|
1821
|
+
action: null,
|
|
1822
|
+
source: "loop-agent",
|
|
1823
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1824
|
+
},
|
|
1825
|
+
{
|
|
1826
|
+
command: "loop-agent init doctor",
|
|
1827
|
+
coverage: "excluded",
|
|
1828
|
+
action: null,
|
|
1829
|
+
source: "loop-agent",
|
|
1830
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
command: "loop-agent init check-update",
|
|
1834
|
+
coverage: "excluded",
|
|
1835
|
+
action: null,
|
|
1836
|
+
source: "loop-agent",
|
|
1837
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
command: "loop-agent init update",
|
|
1841
|
+
coverage: "excluded",
|
|
1842
|
+
action: null,
|
|
1843
|
+
source: "loop-agent",
|
|
1844
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
command: "loop-agent init reconcile",
|
|
1848
|
+
coverage: "excluded",
|
|
1849
|
+
action: null,
|
|
1850
|
+
source: "loop-agent",
|
|
1851
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1852
|
+
},
|
|
1853
|
+
{
|
|
1854
|
+
command: "loop-agent init upgrade",
|
|
1855
|
+
coverage: "excluded",
|
|
1856
|
+
action: null,
|
|
1857
|
+
source: "loop-agent",
|
|
1858
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1859
|
+
},
|
|
1860
|
+
{
|
|
1861
|
+
command: "loop-agent examples list",
|
|
1862
|
+
coverage: "excluded",
|
|
1863
|
+
action: null,
|
|
1864
|
+
source: "loop-agent",
|
|
1865
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1866
|
+
},
|
|
1867
|
+
{
|
|
1868
|
+
command: "loop-agent examples show",
|
|
1869
|
+
coverage: "excluded",
|
|
1870
|
+
action: null,
|
|
1871
|
+
source: "loop-agent",
|
|
1872
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1873
|
+
},
|
|
1874
|
+
{
|
|
1875
|
+
command: "loop-agent examples copy",
|
|
1876
|
+
coverage: "excluded",
|
|
1877
|
+
action: null,
|
|
1878
|
+
source: "loop-agent",
|
|
1879
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
command: "loop-agent eval replay",
|
|
1883
|
+
coverage: "excluded",
|
|
1884
|
+
action: null,
|
|
1885
|
+
source: "loop-agent",
|
|
1886
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
command: "loop-agent eval report",
|
|
1890
|
+
coverage: "excluded",
|
|
1891
|
+
action: null,
|
|
1892
|
+
source: "loop-agent",
|
|
1893
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1894
|
+
},
|
|
1895
|
+
{
|
|
1896
|
+
command: "loop-agent eval candidate",
|
|
1897
|
+
coverage: "excluded",
|
|
1898
|
+
action: null,
|
|
1899
|
+
source: "loop-agent",
|
|
1900
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
command: "loop-agent eval alias",
|
|
1904
|
+
coverage: "excluded",
|
|
1905
|
+
action: null,
|
|
1906
|
+
source: "loop-agent",
|
|
1907
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1908
|
+
},
|
|
1909
|
+
{
|
|
1910
|
+
command: "loop-agent eval promote",
|
|
1911
|
+
coverage: "excluded",
|
|
1912
|
+
action: null,
|
|
1913
|
+
source: "loop-agent",
|
|
1914
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
command: "loop-agent eval rollback",
|
|
1918
|
+
coverage: "excluded",
|
|
1919
|
+
action: null,
|
|
1920
|
+
source: "loop-agent",
|
|
1921
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1922
|
+
},
|
|
1923
|
+
{
|
|
1924
|
+
command: "loop-agent eval corpus",
|
|
1925
|
+
coverage: "excluded",
|
|
1926
|
+
action: null,
|
|
1927
|
+
source: "loop-agent",
|
|
1928
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1929
|
+
},
|
|
1930
|
+
{
|
|
1931
|
+
command: "loop-agent eval context-policy",
|
|
1932
|
+
coverage: "excluded",
|
|
1933
|
+
action: null,
|
|
1934
|
+
source: "loop-agent",
|
|
1935
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
command: "loop-agent eval budget",
|
|
1939
|
+
coverage: "excluded",
|
|
1940
|
+
action: null,
|
|
1941
|
+
source: "loop-agent",
|
|
1942
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1943
|
+
},
|
|
1944
|
+
{
|
|
1945
|
+
command: "loop-agent eval private-verifier",
|
|
1946
|
+
coverage: "excluded",
|
|
1947
|
+
action: null,
|
|
1948
|
+
source: "loop-agent",
|
|
1949
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
command: "loop-agent eval campaign",
|
|
1953
|
+
coverage: "excluded",
|
|
1954
|
+
action: null,
|
|
1955
|
+
source: "loop-agent",
|
|
1956
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1957
|
+
},
|
|
1958
|
+
{
|
|
1959
|
+
command: "loop-agent eval experiment",
|
|
1960
|
+
coverage: "excluded",
|
|
1961
|
+
action: null,
|
|
1962
|
+
source: "loop-agent",
|
|
1963
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
command: "loop-agent eval propose",
|
|
1967
|
+
coverage: "excluded",
|
|
1968
|
+
action: null,
|
|
1969
|
+
source: "loop-agent",
|
|
1970
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
command: "loop-agent eval outer-loop",
|
|
1974
|
+
coverage: "excluded",
|
|
1975
|
+
action: null,
|
|
1976
|
+
source: "loop-agent",
|
|
1977
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1978
|
+
},
|
|
1979
|
+
{
|
|
1980
|
+
command: "loop-agent eval ignition",
|
|
1981
|
+
coverage: "excluded",
|
|
1982
|
+
action: null,
|
|
1983
|
+
source: "loop-agent",
|
|
1984
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
command: "loop-agent plan list",
|
|
1988
|
+
coverage: "model-callable",
|
|
1989
|
+
action: "planList",
|
|
1990
|
+
source: "loop-agent",
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
command: "loop-agent plan create",
|
|
1994
|
+
coverage: "model-callable",
|
|
1995
|
+
action: "planCreate",
|
|
1996
|
+
source: "loop-agent",
|
|
1997
|
+
},
|
|
1998
|
+
{
|
|
1999
|
+
command: "loop-agent plan complete",
|
|
2000
|
+
coverage: "model-callable",
|
|
2001
|
+
action: "planComplete",
|
|
2002
|
+
source: "loop-agent",
|
|
2003
|
+
},
|
|
2004
|
+
{
|
|
2005
|
+
command: "loop-agent plan check",
|
|
2006
|
+
coverage: "model-callable",
|
|
2007
|
+
action: "planCheck",
|
|
2008
|
+
source: "loop-agent",
|
|
2009
|
+
},
|
|
2010
|
+
{
|
|
2011
|
+
command: "loop-agent spine audit",
|
|
2012
|
+
coverage: "model-callable",
|
|
2013
|
+
action: "spineCheck",
|
|
2014
|
+
source: "loop-agent",
|
|
2015
|
+
},
|
|
2016
|
+
{
|
|
2017
|
+
command: "loop-agent handoff check",
|
|
2018
|
+
coverage: "model-callable",
|
|
2019
|
+
action: "handoffCheck",
|
|
2020
|
+
source: "loop-agent",
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
command: "loop-agent handoff coverage",
|
|
2024
|
+
coverage: "model-callable",
|
|
2025
|
+
action: "handoffCoverage",
|
|
2026
|
+
source: "loop-agent",
|
|
2027
|
+
},
|
|
2028
|
+
{
|
|
2029
|
+
command: "loop-agent coverage report",
|
|
2030
|
+
coverage: "model-callable",
|
|
2031
|
+
action: "coverageReport",
|
|
2032
|
+
source: "loop-agent",
|
|
2033
|
+
},
|
|
2034
|
+
{
|
|
2035
|
+
command: "loop-agent reference index",
|
|
2036
|
+
coverage: "excluded",
|
|
2037
|
+
action: null,
|
|
2038
|
+
source: "loop-agent",
|
|
2039
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2040
|
+
},
|
|
2041
|
+
{
|
|
2042
|
+
command: "loop-agent study init",
|
|
2043
|
+
coverage: "excluded",
|
|
2044
|
+
action: null,
|
|
2045
|
+
source: "loop-agent",
|
|
2046
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
command: "loop-agent worktree create",
|
|
2050
|
+
coverage: "excluded",
|
|
2051
|
+
action: null,
|
|
2052
|
+
source: "loop-agent",
|
|
2053
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
command: "loop-agent worktree list",
|
|
2057
|
+
coverage: "excluded",
|
|
2058
|
+
action: null,
|
|
2059
|
+
source: "loop-agent",
|
|
2060
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2061
|
+
},
|
|
2062
|
+
{
|
|
2063
|
+
command: "loop-agent worktree remove",
|
|
2064
|
+
coverage: "excluded",
|
|
2065
|
+
action: null,
|
|
2066
|
+
source: "loop-agent",
|
|
2067
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2068
|
+
},
|
|
2069
|
+
{
|
|
2070
|
+
command: "loop-agent knowledge curate",
|
|
2071
|
+
coverage: "advanced",
|
|
2072
|
+
action: "knowledgeCurate",
|
|
2073
|
+
source: "loop-agent",
|
|
2074
|
+
note: "Writes knowledge proposals (conditional on --output); not model-callable.",
|
|
2075
|
+
},
|
|
2076
|
+
{ command: "loop-agent knowledge query",
|
|
2077
|
+
coverage: "model-callable",
|
|
2078
|
+
action: "knowledgeQuery",
|
|
2079
|
+
source: "loop-agent",
|
|
2080
|
+
},
|
|
2081
|
+
{
|
|
2082
|
+
command: "loop-agent knowledge graph-init",
|
|
2083
|
+
coverage: "advanced",
|
|
2084
|
+
action: "knowledgeGraphInit",
|
|
2085
|
+
source: "loop-agent",
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
command: "loop-agent knowledge graph-materialize",
|
|
2089
|
+
coverage: "advanced",
|
|
2090
|
+
action: "knowledgeGraphMaterialize",
|
|
2091
|
+
source: "loop-agent",
|
|
2092
|
+
},
|
|
2093
|
+
{
|
|
2094
|
+
command: "loop-agent knowledge graph-promote",
|
|
2095
|
+
coverage: "advanced",
|
|
2096
|
+
action: "knowledgeGraphPromote",
|
|
2097
|
+
source: "loop-agent",
|
|
2098
|
+
},
|
|
2099
|
+
{
|
|
2100
|
+
command: "loop-agent knowledge graph-incremental-prepare",
|
|
2101
|
+
coverage: "advanced",
|
|
2102
|
+
action: "knowledgeGraphIncrementalPrepare",
|
|
2103
|
+
source: "loop-agent",
|
|
2104
|
+
},
|
|
2105
|
+
{
|
|
2106
|
+
command: "loop-agent dag init-hybrid",
|
|
2107
|
+
coverage: "advanced",
|
|
2108
|
+
action: "dagInitHybrid",
|
|
2109
|
+
source: "loop-agent",
|
|
2110
|
+
},
|
|
2111
|
+
{
|
|
2112
|
+
command: "loop-agent dag validate",
|
|
2113
|
+
coverage: "model-callable",
|
|
2114
|
+
action: "dagValidate",
|
|
2115
|
+
source: "loop-agent",
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
command: "loop-agent dag workflow-plan",
|
|
2119
|
+
coverage: "advanced",
|
|
2120
|
+
action: "dagWorkflowPlan",
|
|
2121
|
+
source: "loop-agent",
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
command: "loop-agent dag workflow-validate",
|
|
2125
|
+
coverage: "advanced",
|
|
2126
|
+
action: "dagWorkflowValidate",
|
|
2127
|
+
source: "loop-agent",
|
|
2128
|
+
},
|
|
2129
|
+
{
|
|
2130
|
+
command: "loop-agent dag workflow-compile",
|
|
2131
|
+
coverage: "advanced",
|
|
2132
|
+
action: "dagWorkflowCompile",
|
|
2133
|
+
source: "loop-agent",
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
command: "loop-agent dag approve",
|
|
2137
|
+
coverage: "human-gated-required",
|
|
2138
|
+
action: "dagApprove",
|
|
2139
|
+
source: "loop-agent",
|
|
2140
|
+
},
|
|
2141
|
+
{
|
|
2142
|
+
command: "loop-agent dag reject",
|
|
2143
|
+
coverage: "human-gated-required",
|
|
2144
|
+
action: "dagReject",
|
|
2145
|
+
source: "loop-agent",
|
|
2146
|
+
},
|
|
2147
|
+
{
|
|
2148
|
+
command: "loop-agent dag resume",
|
|
2149
|
+
coverage: "human-gated-required",
|
|
2150
|
+
action: "dagResume",
|
|
2151
|
+
source: "loop-agent",
|
|
2152
|
+
},
|
|
2153
|
+
{
|
|
2154
|
+
command: "loop-agent dag status",
|
|
2155
|
+
coverage: "model-callable",
|
|
2156
|
+
action: "dagStatus",
|
|
2157
|
+
source: "loop-agent",
|
|
2158
|
+
},
|
|
2159
|
+
{
|
|
2160
|
+
command: "loop-agent dag doctor",
|
|
2161
|
+
coverage: "model-callable",
|
|
2162
|
+
action: "dagDoctor",
|
|
2163
|
+
source: "loop-agent",
|
|
2164
|
+
},
|
|
2165
|
+
{
|
|
2166
|
+
command: "loop-agent dag report",
|
|
2167
|
+
coverage: "model-callable",
|
|
2168
|
+
action: "dagReport",
|
|
2169
|
+
source: "loop-agent",
|
|
2170
|
+
},
|
|
2171
|
+
{
|
|
2172
|
+
command: "loop-agent dag closeout-draft",
|
|
2173
|
+
coverage: "model-callable",
|
|
2174
|
+
action: "dagCloseoutDraft",
|
|
2175
|
+
source: "loop-agent",
|
|
2176
|
+
},
|
|
2177
|
+
{
|
|
2178
|
+
command: "loop-agent dag reconcile-run",
|
|
2179
|
+
coverage: "human-gated-required",
|
|
2180
|
+
action: "dagReconcileRun",
|
|
2181
|
+
source: "loop-agent",
|
|
2182
|
+
},
|
|
2183
|
+
{
|
|
2184
|
+
command: "loop-agent dag request-interrupt",
|
|
2185
|
+
coverage: "human-gated-required",
|
|
2186
|
+
action: "dagRequestInterrupt",
|
|
2187
|
+
source: "loop-agent",
|
|
2188
|
+
},
|
|
2189
|
+
{
|
|
2190
|
+
command: "loop-agent dag rerun",
|
|
2191
|
+
coverage: "model-callable",
|
|
2192
|
+
action: "dagRerun",
|
|
2193
|
+
source: "loop-agent",
|
|
2194
|
+
note: "fresh eligible dagRerunPlan (planHash) is model-callable; the CLI still enforces plan/binding/fingerprint freshness (2026-08-11).",
|
|
2195
|
+
},
|
|
2196
|
+
{
|
|
2197
|
+
command: "loop-agent dag rerun-task",
|
|
2198
|
+
coverage: "model-callable",
|
|
2199
|
+
action: "standaloneTaskRerun",
|
|
2200
|
+
source: "loop-agent",
|
|
2201
|
+
note: "server-side read-only run-facts check (ineligible plan / explicit rerun-task recommendation) replaces the browser Human Gate (2026-08-11).",
|
|
2202
|
+
},
|
|
2203
|
+
{
|
|
2204
|
+
command: "loop-agent dag reconcile-tasks",
|
|
2205
|
+
coverage: "human-gated-required",
|
|
2206
|
+
action: "dagReconcileTasks",
|
|
2207
|
+
source: "loop-agent",
|
|
2208
|
+
},
|
|
2209
|
+
{
|
|
2210
|
+
command: "loop-agent dag final-verification",
|
|
2211
|
+
coverage: "human-gated-required",
|
|
2212
|
+
action: "dagFinalVerification",
|
|
2213
|
+
source: "loop-agent",
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
command: "loop-agent workflow list",
|
|
2217
|
+
coverage: "advanced",
|
|
2218
|
+
action: "workflowList",
|
|
2219
|
+
source: "loop-agent",
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
command: "loop-agent workflow inspect",
|
|
2223
|
+
coverage: "advanced",
|
|
2224
|
+
action: "workflowInspect",
|
|
2225
|
+
source: "loop-agent",
|
|
2226
|
+
},
|
|
2227
|
+
{
|
|
2228
|
+
command: "loop-agent workflow save",
|
|
2229
|
+
coverage: "advanced",
|
|
2230
|
+
action: "workflowSave",
|
|
2231
|
+
source: "loop-agent",
|
|
2232
|
+
},
|
|
2233
|
+
{
|
|
2234
|
+
command: "loop-agent workflow run",
|
|
2235
|
+
coverage: "advanced",
|
|
2236
|
+
action: "workflowRun",
|
|
2237
|
+
source: "loop-agent",
|
|
2238
|
+
},
|
|
2239
|
+
{
|
|
2240
|
+
command: "loop-agent workflow diff",
|
|
2241
|
+
coverage: "advanced",
|
|
2242
|
+
action: "workflowDiff",
|
|
2243
|
+
source: "loop-agent",
|
|
2244
|
+
},
|
|
2245
|
+
{
|
|
2246
|
+
command: "loop-agent workflow replay",
|
|
2247
|
+
coverage: "advanced",
|
|
2248
|
+
action: "workflowReplay",
|
|
2249
|
+
source: "loop-agent",
|
|
2250
|
+
},
|
|
2251
|
+
{
|
|
2252
|
+
command: "loop-agent loop init",
|
|
2253
|
+
coverage: "advanced",
|
|
2254
|
+
action: "loopInit",
|
|
2255
|
+
source: "loop-agent",
|
|
2256
|
+
},
|
|
2257
|
+
{
|
|
2258
|
+
command: "loop-agent loop status",
|
|
2259
|
+
coverage: "advanced",
|
|
2260
|
+
action: "loopStatus",
|
|
2261
|
+
source: "loop-agent",
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
command: "loop-agent loop run",
|
|
2265
|
+
coverage: "advanced",
|
|
2266
|
+
action: "loopRun",
|
|
2267
|
+
source: "loop-agent",
|
|
2268
|
+
},
|
|
2269
|
+
{
|
|
2270
|
+
command: "loop-agent loop record-round",
|
|
2271
|
+
coverage: "advanced",
|
|
2272
|
+
action: "loopRecordRound",
|
|
2273
|
+
source: "loop-agent",
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
command: "loop-agent loop add-signal",
|
|
2277
|
+
coverage: "advanced",
|
|
2278
|
+
action: "loopAddSignal",
|
|
2279
|
+
source: "loop-agent",
|
|
2280
|
+
},
|
|
2281
|
+
{
|
|
2282
|
+
command: "loop-agent loop closeout",
|
|
2283
|
+
coverage: "advanced",
|
|
2284
|
+
action: "loopCloseout",
|
|
2285
|
+
source: "loop-agent",
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
command: "loop-agent dag decision inspect",
|
|
2289
|
+
coverage: "model-callable",
|
|
2290
|
+
action: "dagDecisionInspect",
|
|
2291
|
+
source: "loop-agent",
|
|
2292
|
+
},
|
|
2293
|
+
{
|
|
2294
|
+
command: "loop-agent dag decision validate",
|
|
2295
|
+
coverage: "model-callable",
|
|
2296
|
+
action: "dagDecisionValidate",
|
|
2297
|
+
source: "loop-agent",
|
|
2298
|
+
},
|
|
2299
|
+
{
|
|
2300
|
+
command: "loop-agent operator capabilities",
|
|
2301
|
+
coverage: "model-callable",
|
|
2302
|
+
action: "operatorCapabilities",
|
|
2303
|
+
source: "loop-agent",
|
|
2304
|
+
},
|
|
2305
|
+
{
|
|
2306
|
+
command: "loop-agent instructions source",
|
|
2307
|
+
coverage: "model-callable",
|
|
2308
|
+
action: "sourceInstructions",
|
|
2309
|
+
source: "loop-agent",
|
|
2310
|
+
},
|
|
2311
|
+
{
|
|
2312
|
+
command: "loop-agent instructions dag-draft",
|
|
2313
|
+
coverage: "excluded",
|
|
2314
|
+
action: null,
|
|
2315
|
+
source: "loop-agent",
|
|
2316
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2317
|
+
},
|
|
2318
|
+
{
|
|
2319
|
+
command: "loop-agent instructions task-artifacts",
|
|
2320
|
+
coverage: "excluded",
|
|
2321
|
+
action: null,
|
|
2322
|
+
source: "loop-agent",
|
|
2323
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2324
|
+
},
|
|
2325
|
+
{
|
|
2326
|
+
command: "loop-agent instructions promotion",
|
|
2327
|
+
coverage: "excluded",
|
|
2328
|
+
action: null,
|
|
2329
|
+
source: "loop-agent",
|
|
2330
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2331
|
+
},
|
|
2332
|
+
{
|
|
2333
|
+
command: "loop-agent instructions closeout",
|
|
2334
|
+
coverage: "excluded",
|
|
2335
|
+
action: null,
|
|
2336
|
+
source: "loop-agent",
|
|
2337
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
command: "loop-agent stats",
|
|
2341
|
+
coverage: "model-callable",
|
|
2342
|
+
action: "stats",
|
|
2343
|
+
source: "loop-agent",
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
command: "loop-agent stats context",
|
|
2347
|
+
coverage: "model-callable",
|
|
2348
|
+
action: "statsContext",
|
|
2349
|
+
source: "loop-agent",
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
command: "agent-worker feature review",
|
|
2353
|
+
coverage: "model-callable",
|
|
2354
|
+
action: "workerFeatureReview",
|
|
2355
|
+
source: "agent-worker",
|
|
2356
|
+
},
|
|
2357
|
+
{
|
|
2358
|
+
command: "agent-worker feature scaffold",
|
|
2359
|
+
coverage: "advanced",
|
|
2360
|
+
action: "workerFeatureScaffold",
|
|
2361
|
+
source: "agent-worker",
|
|
2362
|
+
},
|
|
2363
|
+
{
|
|
2364
|
+
command: "agent-worker feature run",
|
|
2365
|
+
coverage: "human-gated-required",
|
|
2366
|
+
action: "workerFeatureRun",
|
|
2367
|
+
source: "agent-worker",
|
|
2368
|
+
},
|
|
2369
|
+
{
|
|
2370
|
+
command: "agent-worker feature advance",
|
|
2371
|
+
coverage: "human-gated-required",
|
|
2372
|
+
action: "workerFeatureAdvance",
|
|
2373
|
+
source: "agent-worker",
|
|
2374
|
+
},
|
|
2375
|
+
{
|
|
2376
|
+
command: "agent-worker feature doctor",
|
|
2377
|
+
coverage: "model-callable",
|
|
2378
|
+
action: "workerFeatureDoctor",
|
|
2379
|
+
source: "agent-worker",
|
|
2380
|
+
},
|
|
2381
|
+
{
|
|
2382
|
+
command: "agent-worker feature verify-final",
|
|
2383
|
+
coverage: "human-gated-required",
|
|
2384
|
+
action: "workerFeatureVerifyFinal",
|
|
2385
|
+
source: "agent-worker",
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
command: "agent-worker feature delivery",
|
|
2389
|
+
coverage: "human-gated-required",
|
|
2390
|
+
action: "workerFeatureDelivery",
|
|
2391
|
+
source: "agent-worker",
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
command: "agent-worker feature closeout",
|
|
2395
|
+
coverage: "human-gated-required",
|
|
2396
|
+
action: "workerFeatureCloseout",
|
|
2397
|
+
source: "agent-worker",
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
command: "agent-worker feature approve-followup",
|
|
2401
|
+
coverage: "advanced",
|
|
2402
|
+
action: "workerFeatureApproveFollowup",
|
|
2403
|
+
source: "agent-worker",
|
|
2404
|
+
},
|
|
2405
|
+
{
|
|
2406
|
+
command: "agent-worker task validate",
|
|
2407
|
+
coverage: "model-callable",
|
|
2408
|
+
action: "workerTaskValidate",
|
|
2409
|
+
source: "agent-worker",
|
|
2410
|
+
},
|
|
2411
|
+
{
|
|
2412
|
+
command: "agent-worker task explain-profile",
|
|
2413
|
+
coverage: "excluded",
|
|
2414
|
+
action: null,
|
|
2415
|
+
source: "agent-worker",
|
|
2416
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2417
|
+
},
|
|
2418
|
+
{
|
|
2419
|
+
command: "agent-worker task validate-feature",
|
|
2420
|
+
coverage: "excluded",
|
|
2421
|
+
action: null,
|
|
2422
|
+
source: "agent-worker",
|
|
2423
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2424
|
+
},
|
|
2425
|
+
{
|
|
2426
|
+
command: "agent-worker task reconcile",
|
|
2427
|
+
coverage: "human-gated-required",
|
|
2428
|
+
action: "workerTaskReconcile",
|
|
2429
|
+
source: "agent-worker",
|
|
2430
|
+
},
|
|
2431
|
+
{
|
|
2432
|
+
command: "agent-worker task retry",
|
|
2433
|
+
coverage: "model-callable",
|
|
2434
|
+
action: "workerTaskRetry",
|
|
2435
|
+
source: "agent-worker",
|
|
2436
|
+
note: "server-side read-only pool doctor facts check (Failed state) replaces the browser Human Gate (2026-08-11).",
|
|
2437
|
+
},
|
|
2438
|
+
{
|
|
2439
|
+
command: "agent-worker task draft-followup",
|
|
2440
|
+
coverage: "advanced",
|
|
2441
|
+
action: "workerTaskDraftFollowup",
|
|
2442
|
+
source: "agent-worker",
|
|
2443
|
+
},
|
|
2444
|
+
{
|
|
2445
|
+
command: "agent-worker batch plan-ready",
|
|
2446
|
+
coverage: "model-callable",
|
|
2447
|
+
action: "workerBatchPlanReady",
|
|
2448
|
+
source: "agent-worker",
|
|
2449
|
+
},
|
|
2450
|
+
{
|
|
2451
|
+
command: "agent-worker batch run-ready",
|
|
2452
|
+
coverage: "advanced",
|
|
2453
|
+
action: "workerBatchRunReady",
|
|
2454
|
+
source: "agent-worker",
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
command: "agent-worker pool mark-failed",
|
|
2458
|
+
coverage: "human-gated-required",
|
|
2459
|
+
action: "workerPoolMarkFailed",
|
|
2460
|
+
source: "agent-worker",
|
|
2461
|
+
},
|
|
2462
|
+
{
|
|
2463
|
+
command: "agent-worker pool doctor",
|
|
2464
|
+
coverage: "model-callable",
|
|
2465
|
+
action: "workerPoolDoctor",
|
|
2466
|
+
source: "agent-worker",
|
|
2467
|
+
},
|
|
2468
|
+
{
|
|
2469
|
+
command: "agent-worker pool migrate-state",
|
|
2470
|
+
coverage: "excluded",
|
|
2471
|
+
action: null,
|
|
2472
|
+
source: "agent-worker",
|
|
2473
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2474
|
+
},
|
|
2475
|
+
{
|
|
2476
|
+
command: "agent-worker feature git advance-checkpoint",
|
|
2477
|
+
coverage: "excluded",
|
|
2478
|
+
action: null,
|
|
2479
|
+
source: "agent-worker",
|
|
2480
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2481
|
+
},
|
|
2482
|
+
{
|
|
2483
|
+
command: "agent-worker report morning",
|
|
2484
|
+
coverage: "model-callable",
|
|
2485
|
+
action: "workerReportMorning",
|
|
2486
|
+
source: "agent-worker",
|
|
2487
|
+
},
|
|
2488
|
+
{
|
|
2489
|
+
command: "agent-worker report metrics",
|
|
2490
|
+
coverage: "model-callable",
|
|
2491
|
+
action: "workerReportMetrics",
|
|
2492
|
+
source: "agent-worker",
|
|
2493
|
+
},
|
|
2494
|
+
{
|
|
2495
|
+
command: "agent-worker admission prepare",
|
|
2496
|
+
coverage: "human-gated-required",
|
|
2497
|
+
action: "workerAdmissionPrepare",
|
|
2498
|
+
source: "agent-worker",
|
|
2499
|
+
},
|
|
2500
|
+
{
|
|
2501
|
+
command: "agent-worker admission show",
|
|
2502
|
+
coverage: "model-callable",
|
|
2503
|
+
action: "workerAdmissionShow",
|
|
2504
|
+
source: "agent-worker",
|
|
2505
|
+
},
|
|
2506
|
+
{
|
|
2507
|
+
command: "agent-worker scheduler list",
|
|
2508
|
+
coverage: "model-callable",
|
|
2509
|
+
action: "workerSchedulerList",
|
|
2510
|
+
source: "agent-worker",
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
command: "agent-worker scheduler status",
|
|
2514
|
+
coverage: "model-callable",
|
|
2515
|
+
action: "workerSchedulerStatus",
|
|
2516
|
+
source: "agent-worker",
|
|
2517
|
+
},
|
|
2518
|
+
{
|
|
2519
|
+
command: "agent-worker scheduler ledger",
|
|
2520
|
+
coverage: "model-callable",
|
|
2521
|
+
action: "workerSchedulerLedger",
|
|
2522
|
+
source: "agent-worker",
|
|
2523
|
+
},
|
|
2524
|
+
{
|
|
2525
|
+
command: "agent-worker scheduler doctor",
|
|
2526
|
+
coverage: "model-callable",
|
|
2527
|
+
action: "workerSchedulerDoctor",
|
|
2528
|
+
source: "agent-worker",
|
|
2529
|
+
},
|
|
2530
|
+
{
|
|
2531
|
+
command: "agent-worker scheduler add",
|
|
2532
|
+
coverage: "human-gated-required",
|
|
2533
|
+
action: "workerSchedulerAdd",
|
|
2534
|
+
source: "agent-worker",
|
|
2535
|
+
},
|
|
2536
|
+
{
|
|
2537
|
+
command: "agent-worker scheduler cancel",
|
|
2538
|
+
coverage: "human-gated-required",
|
|
2539
|
+
action: "workerSchedulerCancel",
|
|
2540
|
+
source: "agent-worker",
|
|
2541
|
+
},
|
|
2542
|
+
{
|
|
2543
|
+
command: "agent-worker scheduler harvest",
|
|
2544
|
+
coverage: "human-gated-required",
|
|
2545
|
+
action: "workerSchedulerHarvest",
|
|
2546
|
+
source: "agent-worker",
|
|
2547
|
+
},
|
|
2548
|
+
{
|
|
2549
|
+
command: "agent-worker scheduler discard",
|
|
2550
|
+
coverage: "human-gated-required",
|
|
2551
|
+
action: "workerSchedulerDiscard",
|
|
2552
|
+
source: "agent-worker",
|
|
2553
|
+
},
|
|
2554
|
+
{
|
|
2555
|
+
command: "agent-worker scheduler tick",
|
|
2556
|
+
coverage: "excluded",
|
|
2557
|
+
action: null,
|
|
2558
|
+
source: "agent-worker",
|
|
2559
|
+
exclusionReason: "Daemon/clock path; not exposed to Operator Chat (use CLI/cron).",
|
|
2560
|
+
},
|
|
2561
|
+
{
|
|
2562
|
+
command: "agent-worker scheduler clock install",
|
|
2563
|
+
coverage: "excluded",
|
|
2564
|
+
action: null,
|
|
2565
|
+
source: "agent-worker",
|
|
2566
|
+
exclusionReason: "OS timer install is CLI-only; Operator Console does not manage launchd/systemd/schtasks.",
|
|
2567
|
+
},
|
|
2568
|
+
{
|
|
2569
|
+
command: "agent-worker scheduler clock status",
|
|
2570
|
+
coverage: "excluded",
|
|
2571
|
+
action: null,
|
|
2572
|
+
source: "agent-worker",
|
|
2573
|
+
exclusionReason: "Clock status is CLI-only in MVP; use scheduler doctor for Console-facing health.",
|
|
2574
|
+
},
|
|
2575
|
+
{
|
|
2576
|
+
command: "agent-worker scheduler clock uninstall",
|
|
2577
|
+
coverage: "excluded",
|
|
2578
|
+
action: null,
|
|
2579
|
+
source: "agent-worker",
|
|
2580
|
+
exclusionReason: "OS timer uninstall is CLI-only; not exposed to Operator Chat.",
|
|
2581
|
+
},
|
|
2582
|
+
{
|
|
2583
|
+
command: "agent-worker scheduler submit",
|
|
2584
|
+
coverage: "excluded",
|
|
2585
|
+
action: null,
|
|
2586
|
+
source: "agent-worker",
|
|
2587
|
+
exclusionReason: "Low-level planning fact; use admission prepare.",
|
|
2588
|
+
},
|
|
2589
|
+
{
|
|
2590
|
+
command: "agent-worker scheduler transition",
|
|
2591
|
+
coverage: "excluded",
|
|
2592
|
+
action: null,
|
|
2593
|
+
source: "agent-worker",
|
|
2594
|
+
exclusionReason: "Internal lifecycle mutation; not Operator-facing.",
|
|
2595
|
+
},
|
|
2596
|
+
{
|
|
2597
|
+
command: "agent-worker observe serve",
|
|
2598
|
+
coverage: "excluded",
|
|
2599
|
+
action: null,
|
|
2600
|
+
source: "agent-worker",
|
|
2601
|
+
exclusionReason: "Removed (Wave 5): OBSERVE_SERVE_REMOVED + exit 2; use agent-worker console + /inspect/.",
|
|
2602
|
+
},
|
|
2603
|
+
{
|
|
2604
|
+
command: "agent-worker observe snapshot",
|
|
2605
|
+
coverage: "excluded",
|
|
2606
|
+
action: null,
|
|
2607
|
+
source: "agent-worker",
|
|
2608
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2609
|
+
},
|
|
2610
|
+
{
|
|
2611
|
+
command: "agent-worker console doctor",
|
|
2612
|
+
coverage: "excluded",
|
|
2613
|
+
action: null,
|
|
2614
|
+
source: "agent-worker",
|
|
2615
|
+
exclusionReason: "Not exposed to Operator Chat in M5.",
|
|
2616
|
+
},
|
|
2617
|
+
]);
|
|
2618
|
+
export function assertCoverageManifestConsistent() {
|
|
2619
|
+
const actions = new Map(buildOperatorCapabilitiesDocument().actions.map((entry) => [
|
|
2620
|
+
entry.action,
|
|
2621
|
+
entry,
|
|
2622
|
+
]));
|
|
2623
|
+
const seen = new Set();
|
|
2624
|
+
for (const entry of OPERATOR_COMMAND_COVERAGE) {
|
|
2625
|
+
if (seen.has(entry.command))
|
|
2626
|
+
throw new Error(`duplicate operator command coverage: ${entry.command}`);
|
|
2627
|
+
seen.add(entry.command);
|
|
2628
|
+
if (entry.action === null) {
|
|
2629
|
+
if (entry.coverage !== "excluded")
|
|
2630
|
+
throw new Error(`non-excluded command has no action: ${entry.command}`);
|
|
2631
|
+
continue;
|
|
2632
|
+
}
|
|
2633
|
+
const capability = actions.get(entry.action);
|
|
2634
|
+
if (!capability)
|
|
2635
|
+
throw new Error(`coverage references unknown action: ${entry.action}`);
|
|
2636
|
+
if (entry.coverage === "excluded" && capability.modelCallable !== "never")
|
|
2637
|
+
throw new Error(`excluded action is model-callable: ${entry.action}`);
|
|
2638
|
+
if (entry.coverage === "model-callable" &&
|
|
2639
|
+
(capability.modelCallable !== "always" ||
|
|
2640
|
+
capability.humanConfirmation !== "none"))
|
|
2641
|
+
throw new Error(`invalid model-callable classification: ${entry.action}`);
|
|
2642
|
+
if (entry.coverage === "human-gated-conditional" &&
|
|
2643
|
+
(capability.modelCallable !== "always" ||
|
|
2644
|
+
capability.humanConfirmation !== "conditional"))
|
|
2645
|
+
throw new Error(`invalid conditional gate classification: ${entry.action}`);
|
|
2646
|
+
if (entry.coverage === "human-gated-required" &&
|
|
2647
|
+
(capability.modelCallable !== "prepare-only" ||
|
|
2648
|
+
capability.humanConfirmation !== "required"))
|
|
2649
|
+
throw new Error(`invalid required gate classification: ${entry.action}`);
|
|
2650
|
+
if (entry.coverage === "advanced") {
|
|
2651
|
+
// 2026-08-18: advanced actions are never model-callable (read or
|
|
2652
|
+
// mutation) — see officialModelCallable. UI dispatch stays available.
|
|
2653
|
+
if (capability.modelCallable !== "never") {
|
|
2654
|
+
throw new Error(`invalid advanced classification: ${entry.action} (expected modelCallable=never)`);
|
|
2655
|
+
}
|
|
2656
|
+
}
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
assertCoverageManifestConsistent();
|