agentplane 0.3.7 → 0.3.8
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/assets/AGENTS.md +11 -1
- package/assets/RUNNER.md +17 -0
- package/bin/agentplane.js +16 -7
- package/bin/framework-dev-contract.d.ts +6 -0
- package/bin/framework-dev-contract.js +13 -0
- package/bin/stale-dist-policy.js +6 -1
- package/dist/.build-manifest.json +694 -339
- package/dist/adapters/task-backend/task-backend-adapter.d.ts +3 -1
- package/dist/adapters/task-backend/task-backend-adapter.d.ts.map +1 -1
- package/dist/adapters/task-backend/task-backend-adapter.js +13 -0
- package/dist/backends/task-backend/local-backend-doc.d.ts +5 -0
- package/dist/backends/task-backend/local-backend-doc.d.ts.map +1 -0
- package/dist/backends/task-backend/local-backend-doc.js +98 -0
- package/dist/backends/task-backend/local-backend-read.d.ts +7 -0
- package/dist/backends/task-backend/local-backend-read.d.ts.map +1 -0
- package/dist/backends/task-backend/local-backend-read.js +186 -0
- package/dist/backends/task-backend/local-backend-state.d.ts +17 -0
- package/dist/backends/task-backend/local-backend-state.d.ts.map +1 -0
- package/dist/backends/task-backend/local-backend-state.js +50 -0
- package/dist/backends/task-backend/local-backend-write.d.ts +15 -0
- package/dist/backends/task-backend/local-backend-write.d.ts.map +1 -0
- package/dist/backends/task-backend/local-backend-write.js +254 -0
- package/dist/backends/task-backend/local-backend.d.ts +4 -2
- package/dist/backends/task-backend/local-backend.d.ts.map +1 -1
- package/dist/backends/task-backend/local-backend.js +26 -403
- package/dist/backends/task-backend/redmine/backend-cache-doc.d.ts +40 -0
- package/dist/backends/task-backend/redmine/backend-cache-doc.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/backend-cache-doc.js +178 -0
- package/dist/backends/task-backend/redmine/backend-report.d.ts +10 -0
- package/dist/backends/task-backend/redmine/backend-report.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/backend-report.js +43 -0
- package/dist/backends/task-backend/redmine/backend-sync.d.ts +67 -0
- package/dist/backends/task-backend/redmine/backend-sync.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/backend-sync.js +367 -0
- package/dist/backends/task-backend/redmine/mapping.d.ts +2 -1
- package/dist/backends/task-backend/redmine/mapping.d.ts.map +1 -1
- package/dist/backends/task-backend/redmine/mapping.js +12 -2
- package/dist/backends/task-backend/redmine/parse.d.ts +2 -1
- package/dist/backends/task-backend/redmine/parse.d.ts.map +1 -1
- package/dist/backends/task-backend/redmine/parse.js +5 -3
- package/dist/backends/task-backend/redmine/state.d.ts +2 -0
- package/dist/backends/task-backend/redmine/state.d.ts.map +1 -1
- package/dist/backends/task-backend/redmine/state.js +15 -1
- package/dist/backends/task-backend/redmine-backend.d.ts +5 -2
- package/dist/backends/task-backend/redmine-backend.d.ts.map +1 -1
- package/dist/backends/task-backend/redmine-backend.js +88 -536
- package/dist/backends/task-backend/shared/constants.d.ts +2 -1
- package/dist/backends/task-backend/shared/constants.d.ts.map +1 -1
- package/dist/backends/task-backend/shared/doc.d.ts.map +1 -1
- package/dist/backends/task-backend/shared/doc.js +25 -39
- package/dist/backends/task-backend/shared/export.d.ts +2 -9
- package/dist/backends/task-backend/shared/export.d.ts.map +1 -1
- package/dist/backends/task-backend/shared/export.js +73 -8
- package/dist/backends/task-backend/shared/normalize.d.ts +5 -1
- package/dist/backends/task-backend/shared/normalize.d.ts.map +1 -1
- package/dist/backends/task-backend/shared/normalize.js +166 -0
- package/dist/backends/task-backend/shared/record.d.ts +1 -1
- package/dist/backends/task-backend/shared/record.d.ts.map +1 -1
- package/dist/backends/task-backend/shared/record.js +7 -2
- package/dist/backends/task-backend/shared/types.d.ts +38 -36
- package/dist/backends/task-backend/shared/types.d.ts.map +1 -1
- package/dist/backends/task-backend/shared.d.ts +2 -2
- package/dist/backends/task-backend/shared.d.ts.map +1 -1
- package/dist/backends/task-backend/shared.js +1 -1
- package/dist/backends/task-backend.d.ts +1 -1
- package/dist/backends/task-backend.d.ts.map +1 -1
- package/dist/backends/task-backend.js +1 -1
- package/dist/backends/task-index.d.ts +2 -2
- package/dist/backends/task-index.d.ts.map +1 -1
- package/dist/backends/task-index.js +9 -6
- package/dist/cli/bootstrap-guide.d.ts +2 -2
- package/dist/cli/bootstrap-guide.d.ts.map +1 -1
- package/dist/cli/bootstrap-guide.js +10 -10
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +11 -9
- package/dist/cli/command-invocations.d.ts +4 -0
- package/dist/cli/command-invocations.d.ts.map +1 -0
- package/dist/cli/command-invocations.js +35 -0
- package/dist/cli/command-snippets.d.ts +12 -8
- package/dist/cli/command-snippets.d.ts.map +1 -1
- package/dist/cli/command-snippets.js +14 -8
- package/dist/cli/exit-codes.d.ts.map +1 -1
- package/dist/cli/exit-codes.js +1 -0
- package/dist/cli/group-command.d.ts +18 -0
- package/dist/cli/group-command.d.ts.map +1 -0
- package/dist/cli/group-command.js +45 -0
- package/dist/cli/output.d.ts +29 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +76 -0
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +5 -1
- package/dist/cli/run-cli/command-catalog/core.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog/core.js +38 -29
- package/dist/cli/run-cli/command-catalog/lifecycle.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog/lifecycle.js +9 -6
- package/dist/cli/run-cli/command-catalog/project.d.ts +1 -1
- package/dist/cli/run-cli/command-catalog/project.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog/project.js +8 -6
- package/dist/cli/run-cli/command-catalog/shared.d.ts +12 -3
- package/dist/cli/run-cli/command-catalog/shared.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog/shared.js +6 -3
- package/dist/cli/run-cli/command-catalog/task.d.ts +1 -1
- package/dist/cli/run-cli/command-catalog/task.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog/task.js +46 -11
- package/dist/cli/run-cli/command-catalog.d.ts +11 -1
- package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog.js +29 -0
- package/dist/cli/run-cli/commands/config.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/config.js +52 -6
- package/dist/cli/run-cli/commands/core/agent-profiles.d.ts +34 -0
- package/dist/cli/run-cli/commands/core/agent-profiles.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core/agent-profiles.js +97 -0
- package/dist/cli/run-cli/commands/core/agents.d.ts +7 -0
- package/dist/cli/run-cli/commands/core/agents.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core/agents.js +97 -0
- package/dist/cli/run-cli/commands/core/preflight.d.ts +10 -0
- package/dist/cli/run-cli/commands/core/preflight.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core/preflight.js +286 -0
- package/dist/cli/run-cli/commands/core/quickstart.d.ts +8 -0
- package/dist/cli/run-cli/commands/core/quickstart.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core/quickstart.js +43 -0
- package/dist/cli/run-cli/commands/core/role.d.ts +9 -0
- package/dist/cli/run-cli/commands/core/role.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core/role.js +128 -0
- package/dist/cli/run-cli/commands/core.d.ts +4 -24
- package/dist/cli/run-cli/commands/core.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/core.js +4 -630
- package/dist/cli/run-cli/error-guidance.js +10 -0
- package/dist/cli/run-cli/globals.d.ts +5 -2
- package/dist/cli/run-cli/globals.d.ts.map +1 -1
- package/dist/cli/run-cli/globals.js +82 -86
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +137 -100
- package/dist/cli/run-cli.test-helpers.d.ts +21 -0
- package/dist/cli/run-cli.test-helpers.d.ts.map +1 -1
- package/dist/cli/run-cli.test-helpers.js +88 -4
- package/dist/cli/spec/help.d.ts +10 -2
- package/dist/cli/spec/help.d.ts.map +1 -1
- package/dist/cli/spec/help.js +7 -5
- package/dist/cli/spec/registry.d.ts +27 -1
- package/dist/cli/spec/registry.d.ts.map +1 -1
- package/dist/cli/spec/registry.js +98 -25
- package/dist/commands/backend/sync.command.d.ts +3 -5
- package/dist/commands/backend/sync.command.d.ts.map +1 -1
- package/dist/commands/backend/sync.command.js +9 -12
- package/dist/commands/backend.d.ts.map +1 -1
- package/dist/commands/backend.js +8 -7
- package/dist/commands/branch/base.command.d.ts +2 -3
- package/dist/commands/branch/base.command.d.ts.map +1 -1
- package/dist/commands/branch/base.command.js +8 -12
- package/dist/commands/branch/base.d.ts.map +1 -1
- package/dist/commands/branch/base.js +11 -7
- package/dist/commands/branch/cleanup-merged.d.ts.map +1 -1
- package/dist/commands/branch/cleanup-merged.js +9 -8
- package/dist/commands/branch/remove.d.ts.map +1 -1
- package/dist/commands/branch/remove.js +4 -3
- package/dist/commands/branch/status.d.ts.map +1 -1
- package/dist/commands/branch/status.js +4 -3
- package/dist/commands/branch/work-start.d.ts.map +1 -1
- package/dist/commands/branch/work-start.js +48 -5
- package/dist/commands/cleanup/merged.command.d.ts +2 -3
- package/dist/commands/cleanup/merged.command.d.ts.map +1 -1
- package/dist/commands/cleanup/merged.command.js +8 -12
- package/dist/commands/docs/cli.command.js +2 -2
- package/dist/commands/doctor/runtime.js +1 -1
- package/dist/commands/doctor/workflow.d.ts.map +1 -1
- package/dist/commands/doctor/workflow.js +10 -1
- package/dist/commands/finish.spec.d.ts.map +1 -1
- package/dist/commands/finish.spec.js +7 -0
- package/dist/commands/guard/guard.command.d.ts +3 -3
- package/dist/commands/guard/guard.command.d.ts.map +1 -1
- package/dist/commands/guard/guard.command.js +9 -14
- package/dist/commands/guard/impl/commands.d.ts +2 -0
- package/dist/commands/guard/impl/commands.d.ts.map +1 -1
- package/dist/commands/guard/impl/commands.js +55 -7
- package/dist/commands/guard/impl/policy.d.ts +1 -0
- package/dist/commands/guard/impl/policy.d.ts.map +1 -1
- package/dist/commands/guard/impl/policy.js +9 -6
- package/dist/commands/hooks/hooks.command.d.ts +3 -3
- package/dist/commands/hooks/hooks.command.d.ts.map +1 -1
- package/dist/commands/hooks/hooks.command.js +9 -11
- package/dist/commands/pr/check.d.ts.map +1 -1
- package/dist/commands/pr/check.js +90 -18
- package/dist/commands/pr/integrate/cmd.d.ts.map +1 -1
- package/dist/commands/pr/integrate/cmd.js +31 -3
- package/dist/commands/pr/integrate/internal/cleanup.d.ts +12 -0
- package/dist/commands/pr/integrate/internal/cleanup.d.ts.map +1 -0
- package/dist/commands/pr/integrate/internal/cleanup.js +46 -0
- package/dist/commands/pr/integrate/internal/finalize.d.ts +4 -0
- package/dist/commands/pr/integrate/internal/finalize.d.ts.map +1 -1
- package/dist/commands/pr/integrate/internal/finalize.js +34 -40
- package/dist/commands/pr/integrate/internal/merge.d.ts +6 -0
- package/dist/commands/pr/integrate/internal/merge.d.ts.map +1 -1
- package/dist/commands/pr/integrate/internal/merge.js +92 -0
- package/dist/commands/pr/integrate/internal/prepare.d.ts +1 -0
- package/dist/commands/pr/integrate/internal/prepare.d.ts.map +1 -1
- package/dist/commands/pr/integrate/internal/prepare.js +1 -0
- package/dist/commands/pr/integrate/verify.d.ts.map +1 -1
- package/dist/commands/pr/integrate/verify.js +4 -3
- package/dist/commands/pr/note.d.ts.map +1 -1
- package/dist/commands/pr/note.js +3 -2
- package/dist/commands/pr/open.d.ts.map +1 -1
- package/dist/commands/pr/open.js +9 -12
- package/dist/commands/pr/pr.command.d.ts +3 -4
- package/dist/commands/pr/pr.command.d.ts.map +1 -1
- package/dist/commands/pr/pr.command.js +6 -11
- package/dist/commands/pr/update.d.ts.map +1 -1
- package/dist/commands/pr/update.js +5 -10
- package/dist/commands/recipes/cache.command.d.ts +3 -4
- package/dist/commands/recipes/cache.command.d.ts.map +1 -1
- package/dist/commands/recipes/cache.command.js +8 -26
- package/dist/commands/recipes/impl/apply.d.ts +1 -1
- package/dist/commands/recipes/impl/apply.d.ts.map +1 -1
- package/dist/commands/recipes/impl/apply.js +1 -1
- package/dist/commands/recipes/impl/commands/explain.js +1 -1
- package/dist/commands/recipes/impl/commands/install.d.ts.map +1 -1
- package/dist/commands/recipes/impl/commands/install.js +1 -2
- package/dist/commands/recipes/impl/installed-recipes.d.ts +1 -1
- package/dist/commands/recipes/impl/installed-recipes.d.ts.map +1 -1
- package/dist/commands/recipes/impl/installed-recipes.js +1 -2
- package/dist/commands/recipes/impl/manifest.d.ts.map +1 -1
- package/dist/commands/recipes/impl/manifest.js +0 -10
- package/dist/commands/recipes/impl/project-installed-recipes.d.ts +1 -1
- package/dist/commands/recipes/impl/project-installed-recipes.d.ts.map +1 -1
- package/dist/commands/recipes/impl/project-installed-recipes.js +1 -2
- package/dist/commands/recipes/impl/resolver.d.ts +1 -1
- package/dist/commands/recipes/impl/resolver.d.ts.map +1 -1
- package/dist/commands/recipes/impl/resolver.js +26 -16
- package/dist/commands/recipes/impl/scenario.d.ts.map +1 -1
- package/dist/commands/recipes/impl/scenario.js +80 -0
- package/dist/commands/recipes/impl/types.d.ts +27 -13
- package/dist/commands/recipes/impl/types.d.ts.map +1 -1
- package/dist/commands/recipes/recipes.command.d.ts +3 -4
- package/dist/commands/recipes/recipes.command.d.ts.map +1 -1
- package/dist/commands/recipes/recipes.command.js +8 -34
- package/dist/commands/recipes.d.ts +4 -4
- package/dist/commands/recipes.d.ts.map +1 -1
- package/dist/commands/recipes.js +3 -3
- package/dist/commands/recipes.test-helpers.d.ts +17 -0
- package/dist/commands/recipes.test-helpers.d.ts.map +1 -1
- package/dist/commands/recipes.test-helpers.js +56 -2
- package/dist/commands/release/apply.command.d.ts.map +1 -1
- package/dist/commands/release/apply.command.js +77 -56
- package/dist/commands/release/plan.command.d.ts.map +1 -1
- package/dist/commands/release/plan.command.js +7 -3
- package/dist/commands/release/release.command.d.ts +3 -3
- package/dist/commands/release/release.command.d.ts.map +1 -1
- package/dist/commands/release/release.command.js +9 -11
- package/dist/commands/release.test-helpers.d.ts +20 -0
- package/dist/commands/release.test-helpers.d.ts.map +1 -0
- package/dist/commands/release.test-helpers.js +37 -0
- package/dist/commands/runtime.command.d.ts +7 -7
- package/dist/commands/runtime.command.d.ts.map +1 -1
- package/dist/commands/runtime.command.js +29 -33
- package/dist/commands/scenario/execute.command.d.ts +8 -0
- package/dist/commands/scenario/execute.command.d.ts.map +1 -0
- package/dist/commands/scenario/execute.command.js +117 -0
- package/dist/commands/scenario/impl/commands.d.ts.map +1 -1
- package/dist/commands/scenario/impl/commands.js +45 -32
- package/dist/commands/scenario/run.command.js +2 -2
- package/dist/commands/scenario/scenario.command.d.ts +3 -4
- package/dist/commands/scenario/scenario.command.d.ts.map +1 -1
- package/dist/commands/scenario/scenario.command.js +8 -26
- package/dist/commands/shared/git-context.d.ts +1 -0
- package/dist/commands/shared/git-context.d.ts.map +1 -1
- package/dist/commands/shared/git-context.js +4 -2
- package/dist/commands/shared/git-ops.d.ts +1 -0
- package/dist/commands/shared/git-ops.d.ts.map +1 -1
- package/dist/commands/shared/git-ops.js +13 -0
- package/dist/commands/shared/operator-pipeline.d.ts +10 -0
- package/dist/commands/shared/operator-pipeline.d.ts.map +1 -0
- package/dist/commands/shared/operator-pipeline.js +16 -0
- package/dist/commands/shared/pr-meta.d.ts +32 -12
- package/dist/commands/shared/pr-meta.d.ts.map +1 -1
- package/dist/commands/shared/pr-meta.js +49 -14
- package/dist/commands/shared/reconcile-check.d.ts.map +1 -1
- package/dist/commands/shared/reconcile-check.js +28 -3
- package/dist/commands/shared/task-backend.d.ts +10 -6
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/shared/task-backend.js +99 -25
- package/dist/commands/shared/task-handoff.d.ts +64 -0
- package/dist/commands/shared/task-handoff.d.ts.map +1 -0
- package/dist/commands/shared/task-handoff.js +151 -0
- package/dist/commands/shared/task-mutation.d.ts +36 -0
- package/dist/commands/shared/task-mutation.d.ts.map +1 -0
- package/dist/commands/shared/task-mutation.js +67 -0
- package/dist/commands/shared/task-store.d.ts +5 -1
- package/dist/commands/shared/task-store.d.ts.map +1 -1
- package/dist/commands/shared/task-store.js +72 -92
- package/dist/commands/task/add.d.ts.map +1 -1
- package/dist/commands/task/add.js +41 -39
- package/dist/commands/task/block.d.ts.map +1 -1
- package/dist/commands/task/block.js +31 -110
- package/dist/commands/task/close-duplicate.d.ts.map +1 -1
- package/dist/commands/task/close-duplicate.js +0 -7
- package/dist/commands/task/close-noop.d.ts.map +1 -1
- package/dist/commands/task/close-noop.js +0 -21
- package/dist/commands/task/close-shared.d.ts +0 -2
- package/dist/commands/task/close-shared.d.ts.map +1 -1
- package/dist/commands/task/close-shared.js +25 -55
- package/dist/commands/task/comment.d.ts.map +1 -1
- package/dist/commands/task/comment.js +48 -37
- package/dist/commands/task/derive.d.ts.map +1 -1
- package/dist/commands/task/derive.js +14 -7
- package/dist/commands/task/doc.command.d.ts.map +1 -1
- package/dist/commands/task/doc.command.js +7 -6
- package/dist/commands/task/doc.d.ts.map +1 -1
- package/dist/commands/task/doc.js +58 -62
- package/dist/commands/task/finish-shared.d.ts +60 -0
- package/dist/commands/task/finish-shared.d.ts.map +1 -0
- package/dist/commands/task/finish-shared.js +181 -0
- package/dist/commands/task/finish.d.ts +1 -0
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +79 -210
- package/dist/commands/task/handoff-record.command.d.ts +17 -0
- package/dist/commands/task/handoff-record.command.d.ts.map +1 -0
- package/dist/commands/task/handoff-record.command.js +140 -0
- package/dist/commands/task/handoff-show.command.d.ts +8 -0
- package/dist/commands/task/handoff-show.command.d.ts.map +1 -0
- package/dist/commands/task/handoff-show.command.js +77 -0
- package/dist/commands/task/handoff.command.d.ts +7 -0
- package/dist/commands/task/handoff.command.d.ts.map +1 -0
- package/dist/commands/task/handoff.command.js +21 -0
- package/dist/commands/task/handoff.shared.d.ts +39 -0
- package/dist/commands/task/handoff.shared.d.ts.map +1 -0
- package/dist/commands/task/handoff.shared.js +134 -0
- package/dist/commands/task/hosted-close.command.d.ts +9 -0
- package/dist/commands/task/hosted-close.command.d.ts.map +1 -0
- package/dist/commands/task/hosted-close.command.js +190 -0
- package/dist/commands/task/hosted-merge-sync.d.ts +40 -0
- package/dist/commands/task/hosted-merge-sync.d.ts.map +1 -0
- package/dist/commands/task/hosted-merge-sync.js +277 -0
- package/dist/commands/task/list.d.ts.map +1 -1
- package/dist/commands/task/list.js +7 -24
- package/dist/commands/task/new.d.ts.map +1 -1
- package/dist/commands/task/new.js +26 -6
- package/dist/commands/task/next.d.ts.map +1 -1
- package/dist/commands/task/next.js +10 -28
- package/dist/commands/task/normalize.command.d.ts +1 -0
- package/dist/commands/task/normalize.command.d.ts.map +1 -1
- package/dist/commands/task/normalize.command.js +12 -0
- package/dist/commands/task/normalize.d.ts +1 -0
- package/dist/commands/task/normalize.d.ts.map +1 -1
- package/dist/commands/task/normalize.js +21 -9
- package/dist/commands/task/plan.command.d.ts +3 -4
- package/dist/commands/task/plan.command.d.ts.map +1 -1
- package/dist/commands/task/plan.command.js +6 -12
- package/dist/commands/task/plan.d.ts.map +1 -1
- package/dist/commands/task/plan.js +96 -103
- package/dist/commands/task/reclaim.command.d.ts +11 -0
- package/dist/commands/task/reclaim.command.d.ts.map +1 -0
- package/dist/commands/task/reclaim.command.js +102 -0
- package/dist/commands/task/resume-context.command.d.ts +9 -0
- package/dist/commands/task/resume-context.command.d.ts.map +1 -0
- package/dist/commands/task/resume-context.command.js +60 -0
- package/dist/commands/task/run-cancel.command.d.ts +6 -0
- package/dist/commands/task/run-cancel.command.d.ts.map +1 -0
- package/dist/commands/task/run-cancel.command.js +45 -0
- package/dist/commands/task/run-cancel.spec.d.ts +7 -0
- package/dist/commands/task/run-cancel.spec.d.ts.map +1 -0
- package/dist/commands/task/run-cancel.spec.js +20 -0
- package/dist/commands/task/run-resume.command.d.ts +6 -0
- package/dist/commands/task/run-resume.command.d.ts.map +1 -0
- package/dist/commands/task/run-resume.command.js +55 -0
- package/dist/commands/task/run-resume.spec.d.ts +7 -0
- package/dist/commands/task/run-resume.spec.d.ts.map +1 -0
- package/dist/commands/task/run-resume.spec.js +20 -0
- package/dist/commands/task/run-retry.command.d.ts +6 -0
- package/dist/commands/task/run-retry.command.d.ts.map +1 -0
- package/dist/commands/task/run-retry.command.js +56 -0
- package/dist/commands/task/run-retry.spec.d.ts +7 -0
- package/dist/commands/task/run-retry.spec.d.ts.map +1 -0
- package/dist/commands/task/run-retry.spec.js +20 -0
- package/dist/commands/task/run-show.command.d.ts +6 -0
- package/dist/commands/task/run-show.command.d.ts.map +1 -0
- package/dist/commands/task/run-show.command.js +133 -0
- package/dist/commands/task/run-show.spec.d.ts +8 -0
- package/dist/commands/task/run-show.spec.d.ts.map +1 -0
- package/dist/commands/task/run-show.spec.js +44 -0
- package/dist/commands/task/run-tail.command.d.ts +6 -0
- package/dist/commands/task/run-tail.command.d.ts.map +1 -0
- package/dist/commands/task/run-tail.command.js +26 -0
- package/dist/commands/task/run-tail.spec.d.ts +8 -0
- package/dist/commands/task/run-tail.spec.d.ts.map +1 -0
- package/dist/commands/task/run-tail.spec.js +51 -0
- package/dist/commands/task/run-trace.command.d.ts +6 -0
- package/dist/commands/task/run-trace.command.d.ts.map +1 -0
- package/dist/commands/task/run-trace.command.js +25 -0
- package/dist/commands/task/run-trace.spec.d.ts +7 -0
- package/dist/commands/task/run-trace.spec.d.ts.map +1 -0
- package/dist/commands/task/run-trace.spec.js +31 -0
- package/dist/commands/task/run.command.d.ts +6 -0
- package/dist/commands/task/run.command.d.ts.map +1 -0
- package/dist/commands/task/run.command.js +74 -0
- package/dist/commands/task/run.spec.d.ts +7 -0
- package/dist/commands/task/run.spec.d.ts.map +1 -0
- package/dist/commands/task/run.spec.js +26 -0
- package/dist/commands/task/scaffold.d.ts.map +1 -1
- package/dist/commands/task/scaffold.js +4 -2
- package/dist/commands/task/scrub.d.ts.map +1 -1
- package/dist/commands/task/scrub.js +27 -24
- package/dist/commands/task/search.d.ts.map +1 -1
- package/dist/commands/task/search.js +21 -31
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +36 -152
- package/dist/commands/task/shared/dependencies.d.ts +4 -4
- package/dist/commands/task/shared/dependencies.d.ts.map +1 -1
- package/dist/commands/task/shared/dependencies.js +10 -2
- package/dist/commands/task/shared/docs.d.ts +6 -1
- package/dist/commands/task/shared/docs.d.ts.map +1 -1
- package/dist/commands/task/shared/docs.js +13 -0
- package/dist/commands/task/shared/listing.d.ts +16 -2
- package/dist/commands/task/shared/listing.d.ts.map +1 -1
- package/dist/commands/task/shared/listing.js +56 -0
- package/dist/commands/task/shared/transition-command.d.ts +15 -0
- package/dist/commands/task/shared/transition-command.d.ts.map +1 -0
- package/dist/commands/task/shared/transition-command.js +43 -0
- package/dist/commands/task/shared/transitions.d.ts +39 -0
- package/dist/commands/task/shared/transitions.d.ts.map +1 -1
- package/dist/commands/task/shared/transitions.js +62 -1
- package/dist/commands/task/shared/workflow-transition-service.d.ts +75 -0
- package/dist/commands/task/shared/workflow-transition-service.d.ts.map +1 -0
- package/dist/commands/task/shared/workflow-transition-service.js +226 -0
- package/dist/commands/task/shared.d.ts +5 -3
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +5 -3
- package/dist/commands/task/show.d.ts.map +1 -1
- package/dist/commands/task/show.js +37 -3
- package/dist/commands/task/start.d.ts.map +1 -1
- package/dist/commands/task/start.js +33 -119
- package/dist/commands/task/task.command.d.ts +3 -4
- package/dist/commands/task/task.command.d.ts.map +1 -1
- package/dist/commands/task/task.command.js +22 -37
- package/dist/commands/task/verify-record.d.ts.map +1 -1
- package/dist/commands/task/verify-record.js +16 -141
- package/dist/commands/task/verify.command.d.ts.map +1 -1
- package/dist/commands/task/verify.command.js +7 -6
- package/dist/commands/task.test-helpers.d.ts +13 -0
- package/dist/commands/task.test-helpers.d.ts.map +1 -0
- package/dist/commands/task.test-helpers.js +65 -0
- package/dist/commands/upgrade/materialize.d.ts +28 -0
- package/dist/commands/upgrade/materialize.d.ts.map +1 -0
- package/dist/commands/upgrade/materialize.js +154 -0
- package/dist/commands/upgrade/plan.d.ts +18 -0
- package/dist/commands/upgrade/plan.d.ts.map +1 -0
- package/dist/commands/upgrade/plan.js +219 -0
- package/dist/commands/upgrade/policy.d.ts +24 -0
- package/dist/commands/upgrade/policy.d.ts.map +1 -0
- package/dist/commands/upgrade/policy.js +182 -0
- package/dist/commands/upgrade/report.d.ts.map +1 -1
- package/dist/commands/upgrade/report.js +7 -5
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +154 -642
- package/dist/commands/workflow.command.d.ts +3 -4
- package/dist/commands/workflow.command.d.ts.map +1 -1
- package/dist/commands/workflow.command.js +8 -25
- package/dist/ports/task-backend-port.d.ts +3 -1
- package/dist/ports/task-backend-port.d.ts.map +1 -1
- package/dist/runner/adapters/codex.d.ts +9 -0
- package/dist/runner/adapters/codex.d.ts.map +1 -0
- package/dist/runner/adapters/codex.js +414 -0
- package/dist/runner/adapters/custom.d.ts +12 -0
- package/dist/runner/adapters/custom.d.ts.map +1 -0
- package/dist/runner/adapters/custom.js +512 -0
- package/dist/runner/adapters/index.d.ts +8 -0
- package/dist/runner/adapters/index.d.ts.map +1 -0
- package/dist/runner/adapters/index.js +15 -0
- package/dist/runner/adapters/recipe-run-profile.d.ts +8 -0
- package/dist/runner/adapters/recipe-run-profile.d.ts.map +1 -0
- package/dist/runner/adapters/recipe-run-profile.js +53 -0
- package/dist/runner/adapters/shared.d.ts +45 -0
- package/dist/runner/adapters/shared.d.ts.map +1 -0
- package/dist/runner/adapters/shared.js +58 -0
- package/dist/runner/artifacts.d.ts +31 -0
- package/dist/runner/artifacts.d.ts.map +1 -0
- package/dist/runner/artifacts.js +153 -0
- package/dist/runner/codex-approval-probe.d.ts +23 -0
- package/dist/runner/codex-approval-probe.d.ts.map +1 -0
- package/dist/runner/codex-approval-probe.js +55 -0
- package/dist/runner/codex-smoke.d.ts +11 -0
- package/dist/runner/codex-smoke.d.ts.map +1 -0
- package/dist/runner/codex-smoke.js +45 -0
- package/dist/runner/config.d.ts +6 -0
- package/dist/runner/config.d.ts.map +1 -0
- package/dist/runner/config.js +15 -0
- package/dist/runner/context/base-prompts.d.ts +10 -0
- package/dist/runner/context/base-prompts.d.ts.map +1 -0
- package/dist/runner/context/base-prompts.js +255 -0
- package/dist/runner/context/recipe-context.d.ts +17 -0
- package/dist/runner/context/recipe-context.d.ts.map +1 -0
- package/dist/runner/context/recipe-context.js +48 -0
- package/dist/runner/context/task-context.d.ts +24 -0
- package/dist/runner/context/task-context.d.ts.map +1 -0
- package/dist/runner/context/task-context.js +266 -0
- package/dist/runner/index.d.ts +12 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +11 -0
- package/dist/runner/policy-decision.d.ts +12 -0
- package/dist/runner/policy-decision.d.ts.map +1 -0
- package/dist/runner/policy-decision.js +89 -0
- package/dist/runner/policy-display.d.ts +4 -0
- package/dist/runner/policy-display.d.ts.map +1 -0
- package/dist/runner/policy-display.js +41 -0
- package/dist/runner/process-supervision.d.ts +48 -0
- package/dist/runner/process-supervision.d.ts.map +1 -0
- package/dist/runner/process-supervision.js +490 -0
- package/dist/runner/result-manifest-policy.d.ts +9 -0
- package/dist/runner/result-manifest-policy.d.ts.map +1 -0
- package/dist/runner/result-manifest-policy.js +96 -0
- package/dist/runner/result-manifest.d.ts +30 -0
- package/dist/runner/result-manifest.d.ts.map +1 -0
- package/dist/runner/result-manifest.js +322 -0
- package/dist/runner/run-id.d.ts +2 -0
- package/dist/runner/run-id.d.ts.map +1 -0
- package/dist/runner/run-id.js +3 -0
- package/dist/runner/run-repository.d.ts +51 -0
- package/dist/runner/run-repository.d.ts.map +1 -0
- package/dist/runner/run-repository.js +222 -0
- package/dist/runner/task-run-paths.d.ts +19 -0
- package/dist/runner/task-run-paths.d.ts.map +1 -0
- package/dist/runner/task-run-paths.js +25 -0
- package/dist/runner/task-state.d.ts +9 -0
- package/dist/runner/task-state.d.ts.map +1 -0
- package/dist/runner/task-state.js +354 -0
- package/dist/runner/test-helpers.d.ts +30 -0
- package/dist/runner/test-helpers.d.ts.map +1 -0
- package/dist/runner/test-helpers.js +97 -0
- package/dist/runner/trace-artifacts.d.ts +14 -0
- package/dist/runner/trace-artifacts.d.ts.map +1 -0
- package/dist/runner/trace-artifacts.js +80 -0
- package/dist/runner/trace.d.ts +10 -0
- package/dist/runner/trace.d.ts.map +1 -0
- package/dist/runner/trace.js +37 -0
- package/dist/runner/types.d.ts +317 -0
- package/dist/runner/types.d.ts.map +1 -0
- package/dist/runner/types.js +3 -0
- package/dist/runner/usecases/scenario-materialize-task.d.ts +29 -0
- package/dist/runner/usecases/scenario-materialize-task.d.ts.map +1 -0
- package/dist/runner/usecases/scenario-materialize-task.js +151 -0
- package/dist/runner/usecases/task-run-inspect.d.ts +41 -0
- package/dist/runner/usecases/task-run-inspect.d.ts.map +1 -0
- package/dist/runner/usecases/task-run-inspect.js +74 -0
- package/dist/runner/usecases/task-run-lifecycle-cancel.d.ts +10 -0
- package/dist/runner/usecases/task-run-lifecycle-cancel.d.ts.map +1 -0
- package/dist/runner/usecases/task-run-lifecycle-cancel.js +172 -0
- package/dist/runner/usecases/task-run-lifecycle-replay.d.ts +18 -0
- package/dist/runner/usecases/task-run-lifecycle-replay.d.ts.map +1 -0
- package/dist/runner/usecases/task-run-lifecycle-replay.js +128 -0
- package/dist/runner/usecases/task-run-lifecycle-shared.d.ts +45 -0
- package/dist/runner/usecases/task-run-lifecycle-shared.d.ts.map +1 -0
- package/dist/runner/usecases/task-run-lifecycle-shared.js +172 -0
- package/dist/runner/usecases/task-run-lifecycle.d.ts +4 -0
- package/dist/runner/usecases/task-run-lifecycle.d.ts.map +1 -0
- package/dist/runner/usecases/task-run-lifecycle.js +2 -0
- package/dist/runner/usecases/task-run.d.ts +32 -0
- package/dist/runner/usecases/task-run.d.ts.map +1 -0
- package/dist/runner/usecases/task-run.js +278 -0
- package/dist/shared/agent-emoji.d.ts.map +1 -1
- package/dist/shared/agent-emoji.js +1 -0
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/guards.d.ts.map +1 -1
- package/dist/shared/guards.js +1 -0
- package/dist/shared/repo-cli-version.d.ts.map +1 -1
- package/dist/shared/repo-cli-version.js +7 -5
- package/dist/shared/task-doc-conflicts.d.ts +12 -0
- package/dist/shared/task-doc-conflicts.d.ts.map +1 -0
- package/dist/shared/task-doc-conflicts.js +40 -0
- package/dist/shared/task-doc-state.d.ts +10 -0
- package/dist/shared/task-doc-state.d.ts.map +1 -0
- package/dist/shared/task-doc-state.js +15 -0
- package/dist/test-helpers/fs.d.ts +2 -0
- package/dist/test-helpers/fs.d.ts.map +1 -0
- package/dist/test-helpers/fs.js +9 -0
- package/dist/usecases/context/resolve-context.d.ts +2 -0
- package/dist/usecases/context/resolve-context.d.ts.map +1 -1
- package/dist/usecases/context/resolve-context.js +4 -1
- package/dist/usecases/task/task-list-usecase.d.ts.map +1 -1
- package/dist/usecases/task/task-list-usecase.js +2 -8
- package/dist/workflow-runtime/fix.d.ts +9 -1
- package/dist/workflow-runtime/fix.d.ts.map +1 -1
- package/dist/workflow-runtime/fix.js +9 -1
- package/package.json +3 -2
- package/dist/backends/task-backend.test-helpers.d.ts +0 -4
- package/dist/backends/task-backend.test-helpers.d.ts.map +0 -1
- package/dist/backends/task-backend.test-helpers.js +0 -33
- package/dist/cli/run-cli/catalog.d.ts +0 -7
- package/dist/cli/run-cli/catalog.d.ts.map +0 -1
- package/dist/cli/run-cli/catalog.js +0 -22
- package/dist/cli/run-cli.core.pr-flow.test-helpers.d.ts +0 -3
- package/dist/cli/run-cli.core.pr-flow.test-helpers.d.ts.map +0 -1
- package/dist/cli/run-cli.core.pr-flow.test-helpers.js +0 -41
- package/dist/cli/run-cli.core.tasks.test-helpers.d.ts +0 -2
- package/dist/cli/run-cli.core.tasks.test-helpers.d.ts.map +0 -1
- package/dist/cli/run-cli.core.tasks.test-helpers.js +0 -6
- package/dist/commands/block.command.d.ts +0 -4
- package/dist/commands/block.command.d.ts.map +0 -1
- package/dist/commands/block.command.js +0 -2
- package/dist/commands/doctor.command.d.ts +0 -3
- package/dist/commands/doctor.command.d.ts.map +0 -1
- package/dist/commands/doctor.command.js +0 -2
- package/dist/commands/finish.command.d.ts +0 -4
- package/dist/commands/finish.command.d.ts.map +0 -1
- package/dist/commands/finish.command.js +0 -2
- package/dist/commands/recipes/install.command.d.ts +0 -3
- package/dist/commands/recipes/install.command.d.ts.map +0 -1
- package/dist/commands/recipes/install.command.js +0 -2
- package/dist/commands/start.command.d.ts +0 -4
- package/dist/commands/start.command.d.ts.map +0 -1
- package/dist/commands/start.command.js +0 -2
- package/dist/commands/task/list.command.d.ts +0 -4
- package/dist/commands/task/list.command.d.ts.map +0 -1
- package/dist/commands/task/list.command.js +0 -2
- package/dist/commands/task/next.command.d.ts +0 -4
- package/dist/commands/task/next.command.d.ts.map +0 -1
- package/dist/commands/task/next.command.js +0 -2
- package/dist/commands/task/search.command.d.ts +0 -4
- package/dist/commands/task/search.command.d.ts.map +0 -1
- package/dist/commands/task/search.command.js +0 -2
- package/dist/commands/task/show.command.d.ts +0 -4
- package/dist/commands/task/show.command.d.ts.map +0 -1
- package/dist/commands/task/show.command.js +0 -2
- package/dist/commands/verify.command.d.ts +0 -4
- package/dist/commands/verify.command.d.ts.map +0 -1
- package/dist/commands/verify.command.js +0 -2
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { suggestOne } from "../../cli/spec/suggest.js";
|
|
3
|
-
const TASK_PLAN_SUBCOMMANDS = ["set", "approve", "reject"];
|
|
1
|
+
import { loadDirectSubcommandNames, parseGroupCommand, throwGroupCommandUsage, } from "../../cli/group-command.js";
|
|
4
2
|
export const taskPlanSpec = {
|
|
5
3
|
id: ["task", "plan"],
|
|
6
4
|
group: "Task",
|
|
@@ -21,17 +19,13 @@ export const taskPlanSpec = {
|
|
|
21
19
|
why: "Reject the current task plan with a note.",
|
|
22
20
|
},
|
|
23
21
|
],
|
|
24
|
-
parse: (raw) => (
|
|
22
|
+
parse: (raw) => parseGroupCommand(raw),
|
|
25
23
|
};
|
|
26
|
-
export const runTaskPlan = (_ctx, p) => {
|
|
27
|
-
|
|
28
|
-
const suggestion = suggestOne(input, [...TASK_PLAN_SUBCOMMANDS]);
|
|
29
|
-
const suffix = suggestion ? ` Did you mean: ${suggestion}?` : "";
|
|
30
|
-
const message = p.cmd.length === 0 ? "Missing subcommand." : `Unknown subcommand: ${p.cmd[0]}.`;
|
|
31
|
-
throw usageError({
|
|
24
|
+
export const runTaskPlan = async (_ctx, p) => {
|
|
25
|
+
throwGroupCommandUsage({
|
|
32
26
|
spec: taskPlanSpec,
|
|
27
|
+
cmd: p.cmd,
|
|
28
|
+
subcommands: await loadDirectSubcommandNames(["task", "plan"]),
|
|
33
29
|
command: "task plan",
|
|
34
|
-
message: `${message}${suffix}`,
|
|
35
|
-
context: { command: "task plan" },
|
|
36
30
|
});
|
|
37
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/task/plan.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/task/plan.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AA8InC,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuHlB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CAgElB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAuElB"}
|
|
@@ -5,17 +5,13 @@ import { mapBackendError, mapCoreError } from "../../cli/error-map.js";
|
|
|
5
5
|
import { backendNotSupportedMessage } from "../../cli/output.js";
|
|
6
6
|
import { CliError } from "../../shared/errors.js";
|
|
7
7
|
import { loadCommandContext, loadTaskFromContext, } from "../shared/task-backend.js";
|
|
8
|
-
import {
|
|
8
|
+
import { applyTaskMutation, withTaskMutationStorage } from "../shared/task-mutation.js";
|
|
9
|
+
import { setTaskFieldsIntent, setTaskSectionIntent, touchTaskDocMetaIntent, } from "../shared/task-store.js";
|
|
9
10
|
import { decodeEscapedTaskTextNewlines, ensureAgentFilledRequiredDocSections, extractDocSection, extractTaskObservationSection, isVerifyStepsFilled, nowIso, normalizeTaskDocVersion, taskObservationSectionName, requiresVerifyStepsByPrimary, toStringArray, } from "./shared.js";
|
|
10
|
-
async function
|
|
11
|
+
async function loadPlanBackend(opts) {
|
|
11
12
|
const ctx = opts.ctx ??
|
|
12
13
|
(await loadCommandContext({ cwd: opts.cwd, rootOverride: opts.rootOverride ?? null }));
|
|
13
14
|
const backend = ctx.taskBackend;
|
|
14
|
-
const useStore = backendIsLocalFileBackend(ctx);
|
|
15
|
-
const store = useStore ? getTaskStore(ctx) : null;
|
|
16
|
-
const task = useStore
|
|
17
|
-
? await store.get(opts.taskId)
|
|
18
|
-
: await loadTaskFromContext({ ctx, taskId: opts.taskId });
|
|
19
15
|
if (!backend.getTaskDoc || !backend.writeTask) {
|
|
20
16
|
throw new CliError({
|
|
21
17
|
exitCode: 2,
|
|
@@ -23,7 +19,7 @@ async function loadPlanTask(opts) {
|
|
|
23
19
|
message: backendNotSupportedMessage("task docs"),
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
|
-
return { ctx, backend: backend
|
|
22
|
+
return { ctx, backend: backend };
|
|
27
23
|
}
|
|
28
24
|
function normalizeForComparison(text) {
|
|
29
25
|
return text.replaceAll("\r\n", "\n").trim();
|
|
@@ -92,11 +88,10 @@ function assertPlanCanBeApproved(opts) {
|
|
|
92
88
|
}
|
|
93
89
|
export async function cmdTaskPlanSet(opts) {
|
|
94
90
|
try {
|
|
95
|
-
const { ctx, backend
|
|
91
|
+
const { ctx, backend } = await loadPlanBackend({
|
|
96
92
|
ctx: opts.ctx,
|
|
97
93
|
cwd: opts.cwd,
|
|
98
94
|
rootOverride: opts.rootOverride,
|
|
99
|
-
taskId: opts.taskId,
|
|
100
95
|
});
|
|
101
96
|
const config = ctx.config;
|
|
102
97
|
const resolved = ctx.resolvedProject;
|
|
@@ -133,12 +128,15 @@ export async function cmdTaskPlanSet(opts) {
|
|
|
133
128
|
throw mapCoreError(err, { command: "task plan set", filePath: opts.file ?? "" });
|
|
134
129
|
}
|
|
135
130
|
}
|
|
136
|
-
const readmePath = path.join(resolved.gitRoot, config.paths.workflow_dir,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
131
|
+
const readmePath = path.join(resolved.gitRoot, config.paths.workflow_dir, opts.taskId, "README.md");
|
|
132
|
+
await applyTaskMutation({
|
|
133
|
+
ctx,
|
|
134
|
+
taskId: opts.taskId,
|
|
135
|
+
build: async (current) => {
|
|
136
|
+
const currentDocRaw = (typeof current.doc === "string" ? current.doc : "") ||
|
|
137
|
+
(await backend.getTaskDoc(current.id));
|
|
140
138
|
const { currentPlan, nextPlan, planChanged, docChanged } = buildPlanDocUpdate({
|
|
141
|
-
currentDocRaw
|
|
139
|
+
currentDocRaw,
|
|
142
140
|
text,
|
|
143
141
|
requiredSections: config.tasks.doc.required_sections,
|
|
144
142
|
});
|
|
@@ -146,67 +144,52 @@ export async function cmdTaskPlanSet(opts) {
|
|
|
146
144
|
return null;
|
|
147
145
|
if (!docChanged) {
|
|
148
146
|
return {
|
|
147
|
+
intents: [
|
|
148
|
+
...(planChanged
|
|
149
|
+
? [
|
|
150
|
+
setTaskFieldsIntent({
|
|
151
|
+
plan_approval: {
|
|
152
|
+
state: "pending",
|
|
153
|
+
updated_at: null,
|
|
154
|
+
updated_by: null,
|
|
155
|
+
note: null,
|
|
156
|
+
},
|
|
157
|
+
}),
|
|
158
|
+
]
|
|
159
|
+
: []),
|
|
160
|
+
...(updatedBy ? [touchTaskDocMetaIntent({ updatedBy })] : []),
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
intents: [
|
|
166
|
+
setTaskSectionIntent({
|
|
167
|
+
section: "Plan",
|
|
168
|
+
text: nextPlan,
|
|
169
|
+
requiredSections: config.tasks.doc.required_sections,
|
|
170
|
+
expectedCurrentText: currentPlan,
|
|
171
|
+
}),
|
|
149
172
|
...(planChanged
|
|
150
|
-
?
|
|
151
|
-
|
|
173
|
+
? [
|
|
174
|
+
setTaskFieldsIntent({
|
|
152
175
|
plan_approval: {
|
|
153
176
|
state: "pending",
|
|
154
177
|
updated_at: null,
|
|
155
178
|
updated_by: null,
|
|
156
179
|
note: null,
|
|
157
180
|
},
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
:
|
|
161
|
-
...(updatedBy ? {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
doc: {
|
|
167
|
-
kind: "set-section",
|
|
168
|
-
section: "Plan",
|
|
169
|
-
text: nextPlan,
|
|
170
|
-
requiredSections: config.tasks.doc.required_sections,
|
|
171
|
-
expectedCurrentText: expectedCurrentPlan,
|
|
181
|
+
}),
|
|
182
|
+
]
|
|
183
|
+
: []),
|
|
184
|
+
...(updatedBy ? [touchTaskDocMetaIntent({ updatedBy })] : []),
|
|
185
|
+
],
|
|
186
|
+
writeOptions: {
|
|
187
|
+
expectedCurrentText: currentPlan,
|
|
188
|
+
expectedSection: "Plan",
|
|
172
189
|
},
|
|
173
|
-
...(planChanged
|
|
174
|
-
? {
|
|
175
|
-
task: {
|
|
176
|
-
plan_approval: {
|
|
177
|
-
state: "pending",
|
|
178
|
-
updated_at: null,
|
|
179
|
-
updated_by: null,
|
|
180
|
-
note: null,
|
|
181
|
-
},
|
|
182
|
-
},
|
|
183
|
-
}
|
|
184
|
-
: {}),
|
|
185
|
-
...(updatedBy ? { docMeta: { updatedBy } } : {}),
|
|
186
190
|
};
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
const existingDoc = (typeof task.doc === "string" ? task.doc : "") || (await backend.getTaskDoc(task.id));
|
|
191
|
-
const { planChanged, docChanged, nextDoc } = buildPlanDocUpdate({
|
|
192
|
-
currentDocRaw: existingDoc,
|
|
193
|
-
text,
|
|
194
|
-
requiredSections: config.tasks.doc.required_sections,
|
|
195
|
-
});
|
|
196
|
-
if (!planChanged && !docChanged && !updatedBy) {
|
|
197
|
-
process.stdout.write(`${readmePath}\n`);
|
|
198
|
-
return 0;
|
|
199
|
-
}
|
|
200
|
-
const nextTask = {
|
|
201
|
-
...task,
|
|
202
|
-
doc: nextDoc,
|
|
203
|
-
...(planChanged
|
|
204
|
-
? { plan_approval: { state: "pending", updated_at: null, updated_by: null, note: null } }
|
|
205
|
-
: {}),
|
|
206
|
-
...(updatedBy ? { doc_updated_by: updatedBy } : {}),
|
|
207
|
-
};
|
|
208
|
-
await backend.writeTask(nextTask);
|
|
209
|
-
}
|
|
191
|
+
},
|
|
192
|
+
});
|
|
210
193
|
process.stdout.write(`${readmePath}\n`);
|
|
211
194
|
return 0;
|
|
212
195
|
}
|
|
@@ -218,11 +201,10 @@ export async function cmdTaskPlanSet(opts) {
|
|
|
218
201
|
}
|
|
219
202
|
export async function cmdTaskPlanApprove(opts) {
|
|
220
203
|
try {
|
|
221
|
-
const { ctx, backend
|
|
204
|
+
const { ctx, backend } = await loadPlanBackend({
|
|
222
205
|
ctx: opts.ctx,
|
|
223
206
|
cwd: opts.cwd,
|
|
224
207
|
rootOverride: opts.rootOverride,
|
|
225
|
-
taskId: opts.taskId,
|
|
226
208
|
});
|
|
227
209
|
const config = ctx.config;
|
|
228
210
|
const by = String(opts.by ?? "").trim();
|
|
@@ -235,22 +217,27 @@ export async function cmdTaskPlanApprove(opts) {
|
|
|
235
217
|
}
|
|
236
218
|
const note = typeof opts.note === "string" ? opts.note.trim() : "";
|
|
237
219
|
const approvedAt = nowIso();
|
|
238
|
-
await (
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
220
|
+
await withTaskMutationStorage({
|
|
221
|
+
ctx,
|
|
222
|
+
local: async (store) => {
|
|
223
|
+
await store.get(opts.taskId);
|
|
224
|
+
await store.patch(opts.taskId, (current) => {
|
|
225
|
+
const currentDoc = ensureDocSections(String(current.doc ?? ""), config.tasks.doc.required_sections);
|
|
226
|
+
assertPlanCanBeApproved({ task: current, config, doc: currentDoc });
|
|
227
|
+
return {
|
|
228
|
+
task: {
|
|
229
|
+
plan_approval: {
|
|
230
|
+
state: "approved",
|
|
231
|
+
updated_at: approvedAt,
|
|
232
|
+
updated_by: by,
|
|
233
|
+
note: note || null,
|
|
234
|
+
},
|
|
249
235
|
},
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
:
|
|
236
|
+
};
|
|
237
|
+
});
|
|
238
|
+
},
|
|
239
|
+
remote: async () => {
|
|
240
|
+
const task = await loadTaskFromContext({ ctx, taskId: opts.taskId });
|
|
254
241
|
const existingDoc = (typeof task.doc === "string" ? task.doc : "") || (await backend.getTaskDoc(task.id));
|
|
255
242
|
const baseDoc = ensureDocSections(existingDoc ?? "", config.tasks.doc.required_sections);
|
|
256
243
|
assertPlanCanBeApproved({ task, config, doc: baseDoc });
|
|
@@ -263,7 +250,8 @@ export async function cmdTaskPlanApprove(opts) {
|
|
|
263
250
|
note: note || null,
|
|
264
251
|
},
|
|
265
252
|
});
|
|
266
|
-
}
|
|
253
|
+
},
|
|
254
|
+
});
|
|
267
255
|
return 0;
|
|
268
256
|
}
|
|
269
257
|
catch (err) {
|
|
@@ -274,11 +262,10 @@ export async function cmdTaskPlanApprove(opts) {
|
|
|
274
262
|
}
|
|
275
263
|
export async function cmdTaskPlanReject(opts) {
|
|
276
264
|
try {
|
|
277
|
-
const { ctx, backend
|
|
265
|
+
const { ctx, backend } = await loadPlanBackend({
|
|
278
266
|
ctx: opts.ctx,
|
|
279
267
|
cwd: opts.cwd,
|
|
280
268
|
rootOverride: opts.rootOverride,
|
|
281
|
-
taskId: opts.taskId,
|
|
282
269
|
});
|
|
283
270
|
const config = ctx.config;
|
|
284
271
|
const by = String(opts.by ?? "").trim();
|
|
@@ -298,22 +285,27 @@ export async function cmdTaskPlanReject(opts) {
|
|
|
298
285
|
});
|
|
299
286
|
}
|
|
300
287
|
const rejectedAt = nowIso();
|
|
301
|
-
await (
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
288
|
+
await withTaskMutationStorage({
|
|
289
|
+
ctx,
|
|
290
|
+
local: async (store) => {
|
|
291
|
+
await store.get(opts.taskId);
|
|
292
|
+
await store.patch(opts.taskId, (current) => {
|
|
293
|
+
const currentDoc = ensureDocSections(String(current.doc ?? ""), config.tasks.doc.required_sections);
|
|
294
|
+
assertPlanSectionPresent(current.id, currentDoc, "reject");
|
|
295
|
+
return {
|
|
296
|
+
task: {
|
|
297
|
+
plan_approval: {
|
|
298
|
+
state: "rejected",
|
|
299
|
+
updated_at: rejectedAt,
|
|
300
|
+
updated_by: by,
|
|
301
|
+
note: note || null,
|
|
302
|
+
},
|
|
312
303
|
},
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
:
|
|
304
|
+
};
|
|
305
|
+
});
|
|
306
|
+
},
|
|
307
|
+
remote: async () => {
|
|
308
|
+
const task = await loadTaskFromContext({ ctx, taskId: opts.taskId });
|
|
317
309
|
const existingDoc = (typeof task.doc === "string" ? task.doc : "") || (await backend.getTaskDoc(task.id));
|
|
318
310
|
const baseDoc = ensureDocSections(existingDoc ?? "", config.tasks.doc.required_sections);
|
|
319
311
|
assertPlanSectionPresent(task.id, baseDoc, "reject");
|
|
@@ -326,7 +318,8 @@ export async function cmdTaskPlanReject(opts) {
|
|
|
326
318
|
note: note || null,
|
|
327
319
|
},
|
|
328
320
|
});
|
|
329
|
-
}
|
|
321
|
+
},
|
|
322
|
+
});
|
|
330
323
|
return 0;
|
|
331
324
|
}
|
|
332
325
|
catch (err) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommandCtx, CommandSpec } from "../../cli/spec/spec.js";
|
|
2
|
+
export type TaskReclaimParsed = {
|
|
3
|
+
taskId: string;
|
|
4
|
+
author: string;
|
|
5
|
+
reason: string;
|
|
6
|
+
force: boolean;
|
|
7
|
+
json: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const taskReclaimSpec: CommandSpec<TaskReclaimParsed>;
|
|
10
|
+
export declare const runTaskReclaim: (ctx: CommandCtx, parsed: TaskReclaimParsed) => Promise<number>;
|
|
11
|
+
//# sourceMappingURL=reclaim.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reclaim.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/reclaim.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAiD1D,CAAC;AAIF,eAAO,MAAM,cAAc,GAAU,KAAK,UAAU,EAAE,QAAQ,iBAAiB,oBA+C9E,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { usageError } from "../../cli/spec/errors.js";
|
|
2
|
+
import { createCliEmitter, infoMessage } from "../../cli/output.js";
|
|
3
|
+
import { buildRecordedTaskHandoff, buildTaskResumeContext } from "./handoff.shared.js";
|
|
4
|
+
import { resolveTaskHandoffPaths, writeTaskHandoff } from "../shared/task-handoff.js";
|
|
5
|
+
export const taskReclaimSpec = {
|
|
6
|
+
id: ["task", "reclaim"],
|
|
7
|
+
group: "Task",
|
|
8
|
+
summary: "Claim an interrupted task and persist a recovery handoff snapshot.",
|
|
9
|
+
args: [{ name: "task-id", required: true, valueHint: "<task-id>" }],
|
|
10
|
+
options: [
|
|
11
|
+
{
|
|
12
|
+
kind: "string",
|
|
13
|
+
name: "author",
|
|
14
|
+
valueHint: "<role>",
|
|
15
|
+
description: "Role reclaiming the task.",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
kind: "string",
|
|
19
|
+
name: "reason",
|
|
20
|
+
valueHint: "<text>",
|
|
21
|
+
description: "Why the task is being reclaimed.",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
kind: "boolean",
|
|
25
|
+
name: "force",
|
|
26
|
+
default: false,
|
|
27
|
+
description: "Allow reclaim even when the latest run still appears alive.",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
kind: "boolean",
|
|
31
|
+
name: "json",
|
|
32
|
+
default: false,
|
|
33
|
+
description: "Emit the persisted reclaim handoff as JSON.",
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
validateRaw: (raw) => {
|
|
37
|
+
for (const key of ["author", "reason"]) {
|
|
38
|
+
const value = raw.opts[key];
|
|
39
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
40
|
+
throw usageError({
|
|
41
|
+
spec: taskReclaimSpec,
|
|
42
|
+
message: `Missing required option: --${key}.`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
parse: (raw) => ({
|
|
48
|
+
taskId: String(raw.args["task-id"]),
|
|
49
|
+
author: String(raw.opts.author),
|
|
50
|
+
reason: String(raw.opts.reason),
|
|
51
|
+
force: raw.opts.force === true,
|
|
52
|
+
json: raw.opts.json === true,
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
const emitter = createCliEmitter();
|
|
56
|
+
export const runTaskReclaim = async (ctx, parsed) => {
|
|
57
|
+
const resume = await buildTaskResumeContext({
|
|
58
|
+
cwd: ctx.cwd,
|
|
59
|
+
rootOverride: ctx.rootOverride ?? null,
|
|
60
|
+
task_id: parsed.taskId,
|
|
61
|
+
});
|
|
62
|
+
if (resume.runner.next_action === "wait" && !parsed.force) {
|
|
63
|
+
throw usageError({
|
|
64
|
+
spec: taskReclaimSpec,
|
|
65
|
+
message: `Refusing to reclaim ${parsed.taskId}: the latest runner still appears alive. ` +
|
|
66
|
+
`Use --force only if the handoff really is orphaned.`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const built = await buildRecordedTaskHandoff({
|
|
70
|
+
cwd: ctx.cwd,
|
|
71
|
+
rootOverride: ctx.rootOverride ?? null,
|
|
72
|
+
task_id: parsed.taskId,
|
|
73
|
+
from_role: resume.latest_handoff?.to_role ?? resume.latest_handoff?.from_role ?? "UNASSIGNED",
|
|
74
|
+
to_role: parsed.author,
|
|
75
|
+
reason: parsed.reason,
|
|
76
|
+
next_actions: [
|
|
77
|
+
`Reclaim by ${parsed.author}: follow runner_next_action=${resume.runner.next_action ?? "none"}.`,
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
const paths = resolveTaskHandoffPaths({
|
|
81
|
+
git_root: built.ctx.resolvedProject.gitRoot,
|
|
82
|
+
workflow_dir: built.ctx.config.paths.workflow_dir,
|
|
83
|
+
task_id: parsed.taskId,
|
|
84
|
+
});
|
|
85
|
+
await writeTaskHandoff({ paths, handoff: built.handoff });
|
|
86
|
+
if (parsed.json) {
|
|
87
|
+
emitter.json(built.handoff);
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
const entries = [
|
|
91
|
+
{ label: "author", value: parsed.author },
|
|
92
|
+
{ label: "runner_next_action", value: built.handoff.runner?.next_action ?? "none" },
|
|
93
|
+
];
|
|
94
|
+
if (built.handoff.runner?.next_command) {
|
|
95
|
+
entries.push({ label: "runner_next_command", value: built.handoff.runner.next_command });
|
|
96
|
+
}
|
|
97
|
+
entries.push({ label: "latest", value: paths.latest_path });
|
|
98
|
+
emitter.report(entries, {
|
|
99
|
+
header: infoMessage(`task reclaimed: ${parsed.taskId}`),
|
|
100
|
+
});
|
|
101
|
+
return 0;
|
|
102
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CommandCtx, CommandSpec } from "../../cli/spec/spec.js";
|
|
2
|
+
export type TaskResumeContextParsed = {
|
|
3
|
+
taskId: string;
|
|
4
|
+
runId?: string;
|
|
5
|
+
json: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const taskResumeContextSpec: CommandSpec<TaskResumeContextParsed>;
|
|
8
|
+
export declare const runTaskResumeContext: (ctx: CommandCtx, parsed: TaskResumeContextParsed) => Promise<number>;
|
|
9
|
+
//# sourceMappingURL=resume-context.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-context.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/resume-context.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKtE,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,uBAAuB,CAqBtE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,KAAK,UAAU,EAAE,QAAQ,uBAAuB,oBAiC1F,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { infoMessage } from "../../cli/output.js";
|
|
2
|
+
import { buildTaskResumeContext } from "./handoff.shared.js";
|
|
3
|
+
export const taskResumeContextSpec = {
|
|
4
|
+
id: ["task", "resume-context"],
|
|
5
|
+
group: "Task",
|
|
6
|
+
summary: "Print deterministic recovery context for continuing a task after interruption.",
|
|
7
|
+
args: [
|
|
8
|
+
{ name: "task-id", required: true, valueHint: "<task-id>" },
|
|
9
|
+
{ name: "run-id", required: false, valueHint: "[run-id]" },
|
|
10
|
+
],
|
|
11
|
+
options: [
|
|
12
|
+
{
|
|
13
|
+
kind: "boolean",
|
|
14
|
+
name: "json",
|
|
15
|
+
default: false,
|
|
16
|
+
description: "Emit machine-readable resume context JSON.",
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
parse: (raw) => ({
|
|
20
|
+
taskId: String(raw.args["task-id"]),
|
|
21
|
+
runId: typeof raw.args["run-id"] === "string" ? raw.args["run-id"] : undefined,
|
|
22
|
+
json: raw.opts.json === true,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
export const runTaskResumeContext = async (ctx, parsed) => {
|
|
26
|
+
const resume = await buildTaskResumeContext({
|
|
27
|
+
cwd: ctx.cwd,
|
|
28
|
+
rootOverride: ctx.rootOverride ?? null,
|
|
29
|
+
task_id: parsed.taskId,
|
|
30
|
+
run_id: parsed.runId,
|
|
31
|
+
});
|
|
32
|
+
if (parsed.json) {
|
|
33
|
+
process.stdout.write(`${JSON.stringify(resume, null, 2)}\n`);
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
process.stdout.write(`${infoMessage(`task resume-context: ${parsed.taskId}`)}\n`);
|
|
37
|
+
process.stdout.write(`task_status: ${resume.task_status}\n`);
|
|
38
|
+
process.stdout.write(`branch: ${resume.branch ?? "<unknown>"}\n`);
|
|
39
|
+
process.stdout.write(`base_branch: ${resume.base_branch ?? "<unknown>"}\n`);
|
|
40
|
+
process.stdout.write(`head_sha: ${resume.head_sha ?? "<unknown>"}\n`);
|
|
41
|
+
if (resume.pr_branch)
|
|
42
|
+
process.stdout.write(`pr_branch: ${resume.pr_branch}\n`);
|
|
43
|
+
process.stdout.write(`runner_status: ${resume.runner.status ?? "none"}\n`);
|
|
44
|
+
process.stdout.write(`runner_next_action: ${resume.runner.next_action ?? "none"}\n`);
|
|
45
|
+
if (resume.runner.next_command)
|
|
46
|
+
process.stdout.write(`runner_next_command: ${resume.runner.next_command}\n`);
|
|
47
|
+
if (resume.runner.resume_command)
|
|
48
|
+
process.stdout.write(`runner_resume_command: ${resume.runner.resume_command}\n`);
|
|
49
|
+
if (resume.runner.retry_command)
|
|
50
|
+
process.stdout.write(`runner_retry_command: ${resume.runner.retry_command}\n`);
|
|
51
|
+
if (resume.latest_handoff) {
|
|
52
|
+
process.stdout.write(`handoff_from: ${resume.latest_handoff.from_role}\n`);
|
|
53
|
+
process.stdout.write(`handoff_to: ${resume.latest_handoff.to_role ?? "unassigned"}\n`);
|
|
54
|
+
process.stdout.write(`handoff_reason: ${resume.latest_handoff.reason}\n`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
process.stdout.write("handoff: none\n");
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { TaskRunCancelParsed } from "./run-cancel.spec.js";
|
|
3
|
+
export { taskRunCancelSpec } from "./run-cancel.spec.js";
|
|
4
|
+
export type { TaskRunCancelParsed } from "./run-cancel.spec.js";
|
|
5
|
+
export declare const runTaskRunCancel: CommandHandler<TaskRunCancelParsed>;
|
|
6
|
+
//# sourceMappingURL=run-cancel.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cancel.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/run-cancel.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,mBAAmB,CAsChE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { mapBackendError } from "../../cli/error-map.js";
|
|
2
|
+
import { createCliEmitter, infoMessage } from "../../cli/output.js";
|
|
3
|
+
import { loadCommandContext } from "../shared/task-backend.js";
|
|
4
|
+
import { CliError } from "../../shared/errors.js";
|
|
5
|
+
import { cancelTaskRunnerExecution } from "../../runner/usecases/task-run-lifecycle.js";
|
|
6
|
+
export { taskRunCancelSpec } from "./run-cancel.spec.js";
|
|
7
|
+
const emitter = createCliEmitter();
|
|
8
|
+
export const runTaskRunCancel = async (ctx, parsed) => {
|
|
9
|
+
try {
|
|
10
|
+
const commandCtx = await loadCommandContext({
|
|
11
|
+
cwd: ctx.cwd,
|
|
12
|
+
rootOverride: ctx.rootOverride ?? null,
|
|
13
|
+
});
|
|
14
|
+
const cancelled = await cancelTaskRunnerExecution({
|
|
15
|
+
ctx: commandCtx,
|
|
16
|
+
cwd: ctx.cwd,
|
|
17
|
+
rootOverride: ctx.rootOverride ?? null,
|
|
18
|
+
task_id: parsed.taskId,
|
|
19
|
+
run_id: parsed.runId,
|
|
20
|
+
});
|
|
21
|
+
const entries = [
|
|
22
|
+
{ label: "run_id", value: parsed.runId },
|
|
23
|
+
{ label: "previous_status", value: cancelled.previous_status },
|
|
24
|
+
{ label: "state", value: cancelled.invocation.state_path },
|
|
25
|
+
{ label: "events", value: cancelled.invocation.events_path },
|
|
26
|
+
{ label: "status", value: cancelled.state.status },
|
|
27
|
+
];
|
|
28
|
+
if (!cancelled.changed) {
|
|
29
|
+
entries.push({ label: "note", value: "run was already cancelled" });
|
|
30
|
+
}
|
|
31
|
+
emitter.report(entries, {
|
|
32
|
+
header: infoMessage(`task run cancelled: ${parsed.taskId}`),
|
|
33
|
+
});
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
if (err instanceof CliError)
|
|
38
|
+
throw err;
|
|
39
|
+
throw mapBackendError(err, {
|
|
40
|
+
command: "task run cancel",
|
|
41
|
+
task_id: parsed.taskId,
|
|
42
|
+
run_id: parsed.runId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cancel.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/task/run-cancel.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAoB9D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const taskRunCancelSpec = {
|
|
2
|
+
id: ["task", "run", "cancel"],
|
|
3
|
+
group: "Task",
|
|
4
|
+
summary: "Cancel an existing runner run and stop the supervised process when present.",
|
|
5
|
+
description: "Loads an existing runner run from its artifacts, sends a termination signal to a live supervised process when one is recorded, and persists the resulting cancelled state for later resume or retry decisions.",
|
|
6
|
+
args: [
|
|
7
|
+
{ name: "task-id", required: true, valueHint: "<task-id>" },
|
|
8
|
+
{ name: "run-id", required: true, valueHint: "<run-id>" },
|
|
9
|
+
],
|
|
10
|
+
examples: [
|
|
11
|
+
{
|
|
12
|
+
cmd: "agentplane task run cancel 202602030608-F1Q8AB run_20260323_abc123",
|
|
13
|
+
why: "Cancel a prepared run or send a termination signal to a live supervised run.",
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
parse: (raw) => ({
|
|
17
|
+
taskId: String(raw.args["task-id"]),
|
|
18
|
+
runId: String(raw.args["run-id"]),
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { TaskRunResumeParsed } from "./run-resume.spec.js";
|
|
3
|
+
export { taskRunResumeSpec } from "./run-resume.spec.js";
|
|
4
|
+
export type { TaskRunResumeParsed } from "./run-resume.spec.js";
|
|
5
|
+
export declare const runTaskRunResume: CommandHandler<TaskRunResumeParsed>;
|
|
6
|
+
//# sourceMappingURL=run-resume.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-resume.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/run-resume.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAUzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,mBAAmB,CA+ChE,CAAC"}
|