agentplane 0.1.9 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/assets/AGENTS.md +281 -70
- package/assets/agents/CODER.json +1 -0
- package/assets/agents/INTEGRATOR.json +1 -0
- package/assets/agents/ORCHESTRATOR.json +1 -0
- package/assets/agents/PLANNER.json +1 -0
- package/assets/agents/TESTER.json +1 -0
- package/dist/backends/task-backend/load.d.ts +13 -0
- package/dist/backends/task-backend/load.d.ts.map +1 -0
- package/dist/backends/task-backend/load.js +58 -0
- package/dist/backends/task-backend/local-backend.d.ts +28 -0
- package/dist/backends/task-backend/local-backend.d.ts.map +1 -0
- package/dist/backends/task-backend/local-backend.js +335 -0
- package/dist/backends/task-backend/redmine/client.d.ts +8 -0
- package/dist/backends/task-backend/redmine/client.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/client.js +60 -0
- package/dist/backends/task-backend/redmine/comments.d.ts +12 -0
- package/dist/backends/task-backend/redmine/comments.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/comments.js +54 -0
- package/dist/backends/task-backend/redmine/fields.d.ts +9 -0
- package/dist/backends/task-backend/redmine/fields.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/fields.js +38 -0
- package/dist/backends/task-backend/redmine/mapping.d.ts +20 -0
- package/dist/backends/task-backend/redmine/mapping.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/mapping.js +114 -0
- package/dist/backends/task-backend/redmine/parse.d.ts +3 -0
- package/dist/backends/task-backend/redmine/parse.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/parse.js +27 -0
- package/dist/backends/task-backend/redmine/remote.d.ts +19 -0
- package/dist/backends/task-backend/redmine/remote.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine/remote.js +82 -0
- package/dist/backends/task-backend/redmine-backend.d.ts +80 -0
- package/dist/backends/task-backend/redmine-backend.d.ts.map +1 -0
- package/dist/backends/task-backend/redmine-backend.js +505 -0
- package/dist/backends/task-backend/shared/concurrency.d.ts +3 -0
- package/dist/backends/task-backend/shared/concurrency.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/concurrency.js +21 -0
- package/dist/backends/task-backend/shared/constants.d.ts +4 -0
- package/dist/backends/task-backend/shared/constants.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/constants.js +4 -0
- package/dist/backends/task-backend/shared/doc.d.ts +11 -0
- package/dist/backends/task-backend/shared/doc.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/doc.js +78 -0
- package/dist/backends/task-backend/shared/errors.d.ts +10 -0
- package/dist/backends/task-backend/shared/errors.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/errors.js +18 -0
- package/dist/backends/task-backend/shared/events.d.ts +3 -0
- package/dist/backends/task-backend/shared/events.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/events.js +29 -0
- package/dist/backends/task-backend/shared/export.d.ts +15 -0
- package/dist/backends/task-backend/shared/export.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/export.js +60 -0
- package/dist/backends/task-backend/shared/id.d.ts +13 -0
- package/dist/backends/task-backend/shared/id.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/id.js +17 -0
- package/dist/backends/task-backend/shared/normalize.d.ts +8 -0
- package/dist/backends/task-backend/shared/normalize.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/normalize.js +54 -0
- package/dist/backends/task-backend/shared/record.d.ts +4 -0
- package/dist/backends/task-backend/shared/record.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/record.js +53 -0
- package/dist/backends/task-backend/shared/strings.d.ts +4 -0
- package/dist/backends/task-backend/shared/strings.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/strings.js +21 -0
- package/dist/backends/task-backend/shared/types.d.ts +84 -0
- package/dist/backends/task-backend/shared/types.d.ts.map +1 -0
- package/dist/backends/task-backend/shared/types.js +1 -0
- package/dist/backends/task-backend/shared.d.ts +11 -0
- package/dist/backends/task-backend/shared.d.ts.map +1 -0
- package/dist/backends/task-backend/shared.js +9 -0
- package/dist/backends/task-backend.d.ts +4 -204
- package/dist/backends/task-backend.d.ts.map +1 -1
- package/dist/backends/task-backend.js +4 -1366
- package/dist/backends/task-index.js +2 -2
- package/dist/cli/archive.d.ts +0 -2
- package/dist/cli/archive.d.ts.map +1 -1
- package/dist/cli/archive.js +1 -2
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +25 -8
- package/dist/cli/parse/lifecycle.d.ts +64 -0
- package/dist/cli/parse/lifecycle.d.ts.map +1 -0
- package/dist/cli/parse/lifecycle.js +280 -0
- package/dist/cli/run-cli/command-catalog.d.ts +16 -0
- package/dist/cli/run-cli/command-catalog.d.ts.map +1 -0
- package/dist/cli/run-cli/command-catalog.js +204 -0
- package/dist/cli/run-cli/commands/config.d.ts +20 -0
- package/dist/cli/run-cli/commands/config.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/config.js +130 -0
- package/dist/cli/run-cli/commands/core.d.ts +14 -0
- package/dist/cli/run-cli/commands/core.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/core.js +144 -0
- package/dist/cli/run-cli/commands/ide.d.ts +13 -0
- package/dist/cli/run-cli/commands/ide.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/ide.js +67 -0
- package/dist/cli/run-cli/commands/init/base-branch.d.ts +9 -0
- package/dist/cli/run-cli/commands/init/base-branch.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/base-branch.js +11 -0
- package/dist/cli/run-cli/commands/init/conflicts.d.ts +11 -0
- package/dist/cli/run-cli/commands/init/conflicts.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/conflicts.js +42 -0
- package/dist/cli/run-cli/commands/init/git.d.ts +8 -0
- package/dist/cli/run-cli/commands/init/git.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/git.js +12 -0
- package/dist/cli/run-cli/commands/init/ide-sync.d.ts +9 -0
- package/dist/cli/run-cli/commands/init/ide-sync.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/ide-sync.js +18 -0
- package/dist/cli/run-cli/commands/init/recipes.d.ts +2 -0
- package/dist/cli/run-cli/commands/init/recipes.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/recipes.js +11 -0
- package/dist/cli/run-cli/commands/init/write-agents.d.ts +11 -0
- package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/write-agents.js +30 -0
- package/dist/cli/run-cli/commands/init/write-config.d.ts +15 -0
- package/dist/cli/run-cli/commands/init/write-config.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/write-config.js +45 -0
- package/dist/cli/run-cli/commands/init.d.ts +21 -0
- package/dist/cli/run-cli/commands/init.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init.js +332 -0
- package/dist/cli/run-cli/registry.run.d.ts +4 -0
- package/dist/cli/run-cli/registry.run.d.ts.map +1 -0
- package/dist/cli/run-cli/registry.run.js +19 -0
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +182 -2463
- package/dist/cli/spec/docs-render.d.ts +3 -0
- package/dist/cli/spec/docs-render.d.ts.map +1 -0
- package/dist/cli/spec/docs-render.js +118 -0
- package/dist/cli/spec/errors.d.ts +9 -0
- package/dist/cli/spec/errors.d.ts.map +1 -0
- package/dist/cli/spec/errors.js +18 -0
- package/dist/cli/spec/help-render.d.ts +43 -0
- package/dist/cli/spec/help-render.d.ts.map +1 -0
- package/dist/cli/spec/help-render.js +185 -0
- package/dist/cli/spec/help.d.ts +10 -0
- package/dist/cli/spec/help.d.ts.map +1 -0
- package/dist/cli/spec/help.js +64 -0
- package/dist/cli/spec/parse.d.ts +8 -0
- package/dist/cli/spec/parse.d.ts.map +1 -0
- package/dist/cli/spec/parse.js +188 -0
- package/dist/cli/spec/registry.d.ts +12 -0
- package/dist/cli/spec/registry.d.ts.map +1 -0
- package/dist/cli/spec/registry.js +47 -0
- package/dist/cli/spec/spec.d.ts +76 -0
- package/dist/cli/spec/spec.d.ts.map +1 -0
- package/dist/cli/spec/spec.js +1 -0
- package/dist/cli/spec/suggest.d.ts +2 -0
- package/dist/cli/spec/suggest.d.ts.map +1 -0
- package/dist/cli/spec/suggest.js +45 -0
- package/dist/commands/backend/sync.command.d.ts +12 -0
- package/dist/commands/backend/sync.command.d.ts.map +1 -0
- package/dist/commands/backend/sync.command.js +79 -0
- package/dist/commands/backend.d.ts +21 -8
- package/dist/commands/backend.d.ts.map +1 -1
- package/dist/commands/backend.js +28 -165
- package/dist/commands/block.command.d.ts +19 -0
- package/dist/commands/block.command.d.ts.map +1 -0
- package/dist/commands/block.command.js +143 -0
- package/dist/commands/branch/base.command.d.ts +20 -0
- package/dist/commands/branch/base.command.d.ts.map +1 -0
- package/dist/commands/branch/base.command.js +110 -0
- package/dist/commands/branch/base.d.ts +19 -0
- package/dist/commands/branch/base.d.ts.map +1 -0
- package/dist/commands/branch/base.js +114 -0
- package/dist/commands/branch/cleanup-merged.d.ts +11 -0
- package/dist/commands/branch/cleanup-merged.d.ts.map +1 -0
- package/dist/commands/branch/cleanup-merged.js +141 -0
- package/dist/commands/branch/index.d.ts +6 -59
- package/dist/commands/branch/index.d.ts.map +1 -1
- package/dist/commands/branch/index.js +6 -513
- package/dist/commands/branch/internal/archive-pr.d.ts +2 -0
- package/dist/commands/branch/internal/archive-pr.d.ts.map +1 -0
- package/dist/commands/branch/internal/archive-pr.js +17 -0
- package/dist/commands/branch/internal/work-validate.d.ts +3 -0
- package/dist/commands/branch/internal/work-validate.d.ts.map +1 -0
- package/dist/commands/branch/internal/work-validate.js +27 -0
- package/dist/commands/branch/remove.command.d.ts +10 -0
- package/dist/commands/branch/remove.command.d.ts.map +1 -0
- package/dist/commands/branch/remove.command.js +63 -0
- package/dist/commands/branch/remove.d.ts +9 -0
- package/dist/commands/branch/remove.d.ts.map +1 -0
- package/dist/commands/branch/remove.js +65 -0
- package/dist/commands/branch/status.command.d.ts +8 -0
- package/dist/commands/branch/status.command.d.ts.map +1 -0
- package/dist/commands/branch/status.command.js +36 -0
- package/dist/commands/branch/status.d.ts +7 -0
- package/dist/commands/branch/status.d.ts.map +1 -0
- package/dist/commands/branch/status.js +60 -0
- package/dist/commands/branch/work-start.command.d.ts +11 -0
- package/dist/commands/branch/work-start.command.d.ts.map +1 -0
- package/dist/commands/branch/work-start.command.js +80 -0
- package/dist/commands/branch/work-start.d.ts +11 -0
- package/dist/commands/branch/work-start.d.ts.map +1 -0
- package/dist/commands/branch/work-start.js +120 -0
- package/dist/commands/cleanup/merged.command.d.ts +17 -0
- package/dist/commands/cleanup/merged.command.d.ts.map +1 -0
- package/dist/commands/cleanup/merged.command.js +75 -0
- package/dist/commands/commit.command.d.ts +6 -0
- package/dist/commands/commit.command.d.ts.map +1 -0
- package/dist/commands/commit.command.js +24 -0
- package/dist/commands/commit.spec.d.ts +18 -0
- package/dist/commands/commit.spec.d.ts.map +1 -0
- package/dist/commands/commit.spec.js +119 -0
- package/dist/commands/docs/cli.command.d.ts +9 -0
- package/dist/commands/docs/cli.command.d.ts.map +1 -0
- package/dist/commands/docs/cli.command.js +51 -0
- package/dist/commands/finish.command.d.ts +28 -0
- package/dist/commands/finish.command.d.ts.map +1 -0
- package/dist/commands/finish.command.js +237 -0
- package/dist/commands/guard/clean.command.d.ts +7 -0
- package/dist/commands/guard/clean.command.d.ts.map +1 -0
- package/dist/commands/guard/clean.command.js +14 -0
- package/dist/commands/guard/commit.command.d.ts +19 -0
- package/dist/commands/guard/commit.command.d.ts.map +1 -0
- package/dist/commands/guard/commit.command.js +132 -0
- package/dist/commands/guard/guard.command.d.ts +5 -0
- package/dist/commands/guard/guard.command.d.ts.map +1 -0
- package/dist/commands/guard/guard.command.js +21 -0
- package/dist/commands/guard/impl/allow.d.ts +18 -0
- package/dist/commands/guard/impl/allow.d.ts.map +1 -0
- package/dist/commands/guard/impl/allow.js +77 -0
- package/dist/commands/guard/impl/close-message.d.ts +16 -0
- package/dist/commands/guard/impl/close-message.d.ts.map +1 -0
- package/dist/commands/guard/impl/close-message.js +156 -0
- package/dist/commands/guard/impl/commands.d.ts +32 -0
- package/dist/commands/guard/impl/commands.d.ts.map +1 -0
- package/dist/commands/guard/impl/commands.js +191 -0
- package/dist/commands/guard/impl/comment-commit.d.ts +25 -0
- package/dist/commands/guard/impl/comment-commit.d.ts.map +1 -0
- package/dist/commands/guard/impl/comment-commit.js +137 -0
- package/dist/commands/guard/impl/env.d.ts +10 -0
- package/dist/commands/guard/impl/env.d.ts.map +1 -0
- package/dist/commands/guard/impl/env.js +12 -0
- package/dist/commands/guard/impl/policy.d.ts +19 -0
- package/dist/commands/guard/impl/policy.d.ts.map +1 -0
- package/dist/commands/guard/impl/policy.js +46 -0
- package/dist/commands/guard/index.d.ts +4 -87
- package/dist/commands/guard/index.d.ts.map +1 -1
- package/dist/commands/guard/index.js +4 -481
- package/dist/commands/guard/suggest-allow.command.d.ts +7 -0
- package/dist/commands/guard/suggest-allow.command.d.ts.map +1 -0
- package/dist/commands/guard/suggest-allow.command.js +28 -0
- package/dist/commands/hooks/hooks.command.d.ts +5 -0
- package/dist/commands/hooks/hooks.command.d.ts.map +1 -0
- package/dist/commands/hooks/hooks.command.js +18 -0
- package/dist/commands/hooks/index.d.ts.map +1 -1
- package/dist/commands/hooks/index.js +36 -81
- package/dist/commands/hooks/install.command.d.ts +7 -0
- package/dist/commands/hooks/install.command.d.ts.map +1 -0
- package/dist/commands/hooks/install.command.js +14 -0
- package/dist/commands/hooks/run.command.d.ts +9 -0
- package/dist/commands/hooks/run.command.d.ts.map +1 -0
- package/dist/commands/hooks/run.command.js +39 -0
- package/dist/commands/hooks/uninstall.command.d.ts +7 -0
- package/dist/commands/hooks/uninstall.command.d.ts.map +1 -0
- package/dist/commands/hooks/uninstall.command.js +16 -0
- package/dist/commands/integrate.command.d.ts +14 -0
- package/dist/commands/integrate.command.d.ts.map +1 -0
- package/dist/commands/integrate.command.js +61 -0
- package/dist/commands/pr/check.d.ts +8 -0
- package/dist/commands/pr/check.d.ts.map +1 -0
- package/dist/commands/pr/check.js +78 -0
- package/dist/commands/pr/index.d.ts +5 -45
- package/dist/commands/pr/index.d.ts.map +1 -1
- package/dist/commands/pr/index.js +5 -857
- package/dist/commands/pr/integrate/artifacts.d.ts +14 -0
- package/dist/commands/pr/integrate/artifacts.d.ts.map +1 -0
- package/dist/commands/pr/integrate/artifacts.js +45 -0
- package/dist/commands/pr/integrate/cmd.d.ts +14 -0
- package/dist/commands/pr/integrate/cmd.d.ts.map +1 -0
- package/dist/commands/pr/integrate/cmd.js +150 -0
- package/dist/commands/pr/integrate/internal/finalize.d.ts +25 -0
- package/dist/commands/pr/integrate/internal/finalize.d.ts.map +1 -0
- package/dist/commands/pr/integrate/internal/finalize.js +86 -0
- package/dist/commands/pr/integrate/internal/merge.d.ts +40 -0
- package/dist/commands/pr/integrate/internal/merge.d.ts.map +1 -0
- package/dist/commands/pr/integrate/internal/merge.js +138 -0
- package/dist/commands/pr/integrate/internal/prepare.d.ts +33 -0
- package/dist/commands/pr/integrate/internal/prepare.d.ts.map +1 -0
- package/dist/commands/pr/integrate/internal/prepare.js +142 -0
- package/dist/commands/pr/integrate/internal/worktree.d.ts +14 -0
- package/dist/commands/pr/integrate/internal/worktree.d.ts.map +1 -0
- package/dist/commands/pr/integrate/internal/worktree.js +51 -0
- package/dist/commands/pr/integrate/verify.d.ts +22 -0
- package/dist/commands/pr/integrate/verify.d.ts.map +1 -0
- package/dist/commands/pr/integrate/verify.js +60 -0
- package/dist/commands/pr/integrate.d.ts +2 -0
- package/dist/commands/pr/integrate.d.ts.map +1 -0
- package/dist/commands/pr/integrate.js +1 -0
- package/dist/commands/pr/internal/pr-paths.d.ts +29 -0
- package/dist/commands/pr/internal/pr-paths.d.ts.map +1 -0
- package/dist/commands/pr/internal/pr-paths.js +38 -0
- package/dist/commands/pr/internal/review-template.d.ts +9 -0
- package/dist/commands/pr/internal/review-template.d.ts.map +1 -0
- package/dist/commands/pr/internal/review-template.js +62 -0
- package/dist/commands/pr/note.d.ts +10 -0
- package/dist/commands/pr/note.d.ts.map +1 -0
- package/dist/commands/pr/note.js +50 -0
- package/dist/commands/pr/open.d.ts +10 -0
- package/dist/commands/pr/open.d.ts.map +1 -0
- package/dist/commands/pr/open.js +80 -0
- package/dist/commands/pr/pr.command.d.ts +33 -0
- package/dist/commands/pr/pr.command.d.ts.map +1 -0
- package/dist/commands/pr/pr.command.js +172 -0
- package/dist/commands/pr/update.d.ts +8 -0
- package/dist/commands/pr/update.d.ts.map +1 -0
- package/dist/commands/pr/update.js +103 -0
- package/dist/commands/ready.command.d.ts +8 -0
- package/dist/commands/ready.command.d.ts.map +1 -0
- package/dist/commands/ready.command.js +28 -0
- package/dist/commands/recipes/cache-prune.command.d.ts +6 -0
- package/dist/commands/recipes/cache-prune.command.d.ts.map +1 -0
- package/dist/commands/recipes/cache-prune.command.js +30 -0
- package/dist/commands/recipes/cache.command.d.ts +6 -0
- package/dist/commands/recipes/cache.command.d.ts.map +1 -0
- package/dist/commands/recipes/cache.command.js +37 -0
- package/dist/commands/recipes/explain.command.d.ts +7 -0
- package/dist/commands/recipes/explain.command.d.ts.map +1 -0
- package/dist/commands/recipes/explain.command.js +10 -0
- package/dist/commands/recipes/impl/apply.d.ts +16 -0
- package/dist/commands/recipes/impl/apply.d.ts.map +1 -0
- package/dist/commands/recipes/impl/apply.js +97 -0
- package/dist/commands/recipes/impl/archive.d.ts +2 -0
- package/dist/commands/recipes/impl/archive.d.ts.map +1 -0
- package/dist/commands/recipes/impl/archive.js +19 -0
- package/dist/commands/recipes/impl/commands/cache-prune.d.ts +7 -0
- package/dist/commands/recipes/impl/commands/cache-prune.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/cache-prune.js +94 -0
- package/dist/commands/recipes/impl/commands/explain.d.ts +6 -0
- package/dist/commands/recipes/impl/commands/explain.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/explain.js +88 -0
- package/dist/commands/recipes/impl/commands/info.d.ts +6 -0
- package/dist/commands/recipes/impl/commands/info.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/info.js +58 -0
- package/dist/commands/recipes/impl/commands/install.d.ts +11 -0
- package/dist/commands/recipes/impl/commands/install.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/install.js +212 -0
- package/dist/commands/recipes/impl/commands/list-remote.d.ts +7 -0
- package/dist/commands/recipes/impl/commands/list-remote.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/list-remote.js +53 -0
- package/dist/commands/recipes/impl/commands/list.d.ts +7 -0
- package/dist/commands/recipes/impl/commands/list.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/list.js +38 -0
- package/dist/commands/recipes/impl/commands/remove.d.ts +6 -0
- package/dist/commands/recipes/impl/commands/remove.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands/remove.js +35 -0
- package/dist/commands/recipes/impl/commands.d.ts +8 -0
- package/dist/commands/recipes/impl/commands.d.ts.map +1 -0
- package/dist/commands/recipes/impl/commands.js +7 -0
- package/dist/commands/recipes/impl/constants.d.ts +13 -0
- package/dist/commands/recipes/impl/constants.d.ts.map +1 -0
- package/dist/commands/recipes/impl/constants.js +16 -0
- package/dist/commands/recipes/impl/format.d.ts +2 -0
- package/dist/commands/recipes/impl/format.d.ts.map +1 -0
- package/dist/commands/recipes/impl/format.js +9 -0
- package/dist/commands/recipes/impl/index.d.ts +12 -0
- package/dist/commands/recipes/impl/index.d.ts.map +1 -0
- package/dist/commands/recipes/impl/index.js +150 -0
- package/dist/commands/recipes/impl/installed-recipes.d.ts +4 -0
- package/dist/commands/recipes/impl/installed-recipes.d.ts.map +1 -0
- package/dist/commands/recipes/impl/installed-recipes.js +58 -0
- package/dist/commands/recipes/impl/manifest.d.ts +4 -0
- package/dist/commands/recipes/impl/manifest.d.ts.map +1 -0
- package/dist/commands/recipes/impl/manifest.js +43 -0
- package/dist/commands/recipes/impl/normalize.d.ts +5 -0
- package/dist/commands/recipes/impl/normalize.d.ts.map +1 -0
- package/dist/commands/recipes/impl/normalize.js +50 -0
- package/dist/commands/recipes/impl/paths.d.ts +13 -0
- package/dist/commands/recipes/impl/paths.d.ts.map +1 -0
- package/dist/commands/recipes/impl/paths.js +27 -0
- package/dist/commands/recipes/impl/project.d.ts +8 -0
- package/dist/commands/recipes/impl/project.d.ts.map +1 -0
- package/dist/commands/recipes/impl/project.js +23 -0
- package/dist/commands/recipes/impl/scenario.d.ts +16 -0
- package/dist/commands/recipes/impl/scenario.d.ts.map +1 -0
- package/dist/commands/recipes/impl/scenario.js +128 -0
- package/dist/commands/recipes/impl/types.d.ts +107 -0
- package/dist/commands/recipes/impl/types.d.ts.map +1 -0
- package/dist/commands/recipes/impl/types.js +1 -0
- package/dist/commands/recipes/info.command.d.ts +7 -0
- package/dist/commands/recipes/info.command.d.ts.map +1 -0
- package/dist/commands/recipes/info.command.js +10 -0
- package/dist/commands/recipes/install.command.d.ts +12 -0
- package/dist/commands/recipes/install.command.d.ts.map +1 -0
- package/dist/commands/recipes/install.command.js +161 -0
- package/dist/commands/recipes/list-remote.command.d.ts +6 -0
- package/dist/commands/recipes/list-remote.command.d.ts.map +1 -0
- package/dist/commands/recipes/list-remote.command.js +46 -0
- package/dist/commands/recipes/list.command.d.ts +6 -0
- package/dist/commands/recipes/list.command.d.ts.map +1 -0
- package/dist/commands/recipes/list.command.js +39 -0
- package/dist/commands/recipes/recipes.command.d.ts +6 -0
- package/dist/commands/recipes/recipes.command.d.ts.map +1 -0
- package/dist/commands/recipes/recipes.command.js +45 -0
- package/dist/commands/recipes/remove.command.d.ts +7 -0
- package/dist/commands/recipes/remove.command.d.ts.map +1 -0
- package/dist/commands/recipes/remove.command.js +10 -0
- package/dist/commands/recipes.d.ts +7 -81
- package/dist/commands/recipes.d.ts.map +1 -1
- package/dist/commands/recipes.js +6 -1457
- package/dist/commands/scenario/impl/commands.d.ts +19 -0
- package/dist/commands/scenario/impl/commands.d.ts.map +1 -0
- package/dist/commands/scenario/impl/commands.js +336 -0
- package/dist/commands/scenario/impl/report.d.ts +30 -0
- package/dist/commands/scenario/impl/report.d.ts.map +1 -0
- package/dist/commands/scenario/impl/report.js +99 -0
- package/dist/commands/scenario/info.command.d.ts +8 -0
- package/dist/commands/scenario/info.command.d.ts.map +1 -0
- package/dist/commands/scenario/info.command.js +27 -0
- package/dist/commands/scenario/list.command.d.ts +5 -0
- package/dist/commands/scenario/list.command.d.ts.map +1 -0
- package/dist/commands/scenario/list.command.js +9 -0
- package/dist/commands/scenario/run.command.d.ts +8 -0
- package/dist/commands/scenario/run.command.d.ts.map +1 -0
- package/dist/commands/scenario/run.command.js +27 -0
- package/dist/commands/scenario/scenario.command.d.ts +6 -0
- package/dist/commands/scenario/scenario.command.d.ts.map +1 -0
- package/dist/commands/scenario/scenario.command.js +37 -0
- package/dist/commands/scenario.d.ts +1 -6
- package/dist/commands/scenario.d.ts.map +1 -1
- package/dist/commands/scenario.js +1 -501
- package/dist/commands/shared/git-context.d.ts +23 -0
- package/dist/commands/shared/git-context.d.ts.map +1 -0
- package/dist/commands/shared/git-context.js +140 -0
- package/dist/commands/shared/policy-deny.d.ts +3 -0
- package/dist/commands/shared/policy-deny.d.ts.map +1 -0
- package/dist/commands/shared/policy-deny.js +12 -0
- package/dist/commands/shared/task-backend.d.ts +17 -5
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/shared/task-backend.js +34 -5
- package/dist/commands/shared/task-store.d.ts +16 -0
- package/dist/commands/shared/task-store.d.ts.map +1 -0
- package/dist/commands/shared/task-store.js +142 -0
- package/dist/commands/start.command.d.ts +19 -0
- package/dist/commands/start.command.d.ts.map +1 -0
- package/dist/commands/start.command.js +143 -0
- package/dist/commands/sync.command.d.ts +6 -0
- package/dist/commands/sync.command.d.ts.map +1 -0
- package/dist/commands/sync.command.js +57 -0
- package/dist/commands/task/add.command.d.ts +18 -0
- package/dist/commands/task/add.command.d.ts.map +1 -0
- package/dist/commands/task/add.command.js +157 -0
- package/dist/commands/task/add.d.ts +13 -3
- package/dist/commands/task/add.d.ts.map +1 -1
- package/dist/commands/task/add.js +21 -126
- package/dist/commands/task/block.d.ts +2 -2
- package/dist/commands/task/block.d.ts.map +1 -1
- package/dist/commands/task/block.js +13 -9
- package/dist/commands/task/comment.command.d.ts +10 -0
- package/dist/commands/task/comment.command.d.ts.map +1 -0
- package/dist/commands/task/comment.command.js +57 -0
- package/dist/commands/task/comment.d.ts +2 -0
- package/dist/commands/task/comment.d.ts.map +1 -1
- package/dist/commands/task/comment.js +10 -7
- package/dist/commands/task/derive.command.d.ts +13 -0
- package/dist/commands/task/derive.command.d.ts.map +1 -0
- package/dist/commands/task/derive.command.js +94 -0
- package/dist/commands/task/derive.d.ts +13 -0
- package/dist/commands/task/derive.d.ts.map +1 -0
- package/dist/commands/task/derive.js +71 -0
- package/dist/commands/task/doc-set.command.d.ts +12 -0
- package/dist/commands/task/doc-set.command.d.ts.map +1 -0
- package/dist/commands/task/doc-set.command.js +82 -0
- package/dist/commands/task/doc-show.command.d.ts +10 -0
- package/dist/commands/task/doc-show.command.d.ts.map +1 -0
- package/dist/commands/task/doc-show.command.js +54 -0
- package/dist/commands/task/doc.command.d.ts +7 -0
- package/dist/commands/task/doc.command.d.ts.map +1 -0
- package/dist/commands/task/doc.command.js +22 -0
- package/dist/commands/task/doc.d.ts +9 -6
- package/dist/commands/task/doc.d.ts.map +1 -1
- package/dist/commands/task/doc.js +61 -113
- package/dist/commands/task/export.command.d.ts +6 -0
- package/dist/commands/task/export.command.d.ts.map +1 -0
- package/dist/commands/task/export.command.js +17 -0
- package/dist/commands/task/export.d.ts +2 -0
- package/dist/commands/task/export.d.ts.map +1 -1
- package/dist/commands/task/export.js +7 -9
- package/dist/commands/task/finish.d.ts +5 -4
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +50 -17
- package/dist/commands/task/index.d.ts +14 -13
- package/dist/commands/task/index.d.ts.map +1 -1
- package/dist/commands/task/index.js +13 -13
- package/dist/commands/task/lint.command.d.ts +5 -0
- package/dist/commands/task/lint.command.d.ts.map +1 -0
- package/dist/commands/task/lint.command.js +11 -0
- package/dist/commands/task/list.command.d.ts +9 -0
- package/dist/commands/task/list.command.d.ts.map +1 -0
- package/dist/commands/task/list.command.js +68 -0
- package/dist/commands/task/list.d.ts +6 -2
- package/dist/commands/task/list.d.ts.map +1 -1
- package/dist/commands/task/list.js +12 -15
- package/dist/commands/task/migrate-doc.command.d.ts +9 -0
- package/dist/commands/task/migrate-doc.command.d.ts.map +1 -0
- package/dist/commands/task/migrate-doc.command.js +65 -0
- package/dist/commands/task/migrate-doc.d.ts +3 -3
- package/dist/commands/task/migrate-doc.d.ts.map +1 -1
- package/dist/commands/task/migrate-doc.js +40 -47
- package/dist/commands/task/migrate.command.d.ts +10 -0
- package/dist/commands/task/migrate.command.d.ts.map +1 -0
- package/dist/commands/task/migrate.command.js +50 -0
- package/dist/commands/task/migrate.d.ts +5 -1
- package/dist/commands/task/migrate.d.ts.map +1 -1
- package/dist/commands/task/migrate.js +10 -44
- package/dist/commands/task/new.command.d.ts +6 -0
- package/dist/commands/task/new.command.d.ts.map +1 -0
- package/dist/commands/task/new.command.js +13 -0
- package/dist/commands/task/new.d.ts +13 -4
- package/dist/commands/task/new.d.ts.map +1 -1
- package/dist/commands/task/new.js +30 -92
- package/dist/commands/task/new.spec.d.ts +4 -0
- package/dist/commands/task/new.spec.d.ts.map +1 -0
- package/dist/commands/task/new.spec.js +79 -0
- package/dist/commands/task/next.command.d.ts +9 -0
- package/dist/commands/task/next.command.d.ts.map +1 -0
- package/dist/commands/task/next.command.js +89 -0
- package/dist/commands/task/next.d.ts +4 -1
- package/dist/commands/task/next.d.ts.map +1 -1
- package/dist/commands/task/next.js +15 -16
- package/dist/commands/task/normalize.command.d.ts +9 -0
- package/dist/commands/task/normalize.command.d.ts.map +1 -0
- package/dist/commands/task/normalize.command.js +39 -0
- package/dist/commands/task/normalize.d.ts +4 -1
- package/dist/commands/task/normalize.d.ts.map +1 -1
- package/dist/commands/task/normalize.js +18 -31
- package/dist/commands/task/plan-approve.command.d.ts +10 -0
- package/dist/commands/task/plan-approve.command.d.ts.map +1 -0
- package/dist/commands/task/plan-approve.command.js +54 -0
- package/dist/commands/task/plan-reject.command.d.ts +10 -0
- package/dist/commands/task/plan-reject.command.d.ts.map +1 -0
- package/dist/commands/task/plan-reject.command.js +59 -0
- package/dist/commands/task/plan-set.command.d.ts +11 -0
- package/dist/commands/task/plan-set.command.d.ts.map +1 -0
- package/dist/commands/task/plan-set.command.js +76 -0
- package/dist/commands/task/plan.d.ts +23 -10
- package/dist/commands/task/plan.d.ts.map +1 -1
- package/dist/commands/task/plan.js +182 -177
- package/dist/commands/task/ready.d.ts +2 -0
- package/dist/commands/task/ready.d.ts.map +1 -1
- package/dist/commands/task/ready.js +4 -6
- package/dist/commands/task/scaffold.command.d.ts +12 -0
- package/dist/commands/task/scaffold.command.d.ts.map +1 -0
- package/dist/commands/task/scaffold.command.js +73 -0
- package/dist/commands/task/scaffold.d.ts +7 -3
- package/dist/commands/task/scaffold.d.ts.map +1 -1
- package/dist/commands/task/scaffold.js +57 -67
- package/dist/commands/task/scrub.command.d.ts +11 -0
- package/dist/commands/task/scrub.command.d.ts.map +1 -0
- package/dist/commands/task/scrub.command.js +72 -0
- package/dist/commands/task/scrub.d.ts +6 -3
- package/dist/commands/task/scrub.d.ts.map +1 -1
- package/dist/commands/task/scrub.js +12 -68
- package/dist/commands/task/search.command.d.ts +11 -0
- package/dist/commands/task/search.command.d.ts.map +1 -0
- package/dist/commands/task/search.command.js +101 -0
- package/dist/commands/task/search.d.ts +5 -1
- package/dist/commands/task/search.d.ts.map +1 -1
- package/dist/commands/task/search.js +14 -23
- package/dist/commands/task/set-status.command.d.ts +21 -0
- package/dist/commands/task/set-status.command.d.ts.map +1 -0
- package/dist/commands/task/set-status.command.js +171 -0
- package/dist/commands/task/set-status.d.ts +2 -0
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +14 -8
- package/dist/commands/task/shared.d.ts +5 -0
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +50 -0
- package/dist/commands/task/show.command.d.ts +8 -0
- package/dist/commands/task/show.command.d.ts.map +1 -0
- package/dist/commands/task/show.command.js +19 -0
- package/dist/commands/task/show.d.ts +2 -0
- package/dist/commands/task/show.d.ts.map +1 -1
- package/dist/commands/task/show.js +5 -7
- package/dist/commands/task/start.d.ts +2 -2
- package/dist/commands/task/start.d.ts.map +1 -1
- package/dist/commands/task/start.js +48 -11
- package/dist/commands/task/update.command.d.ts +18 -0
- package/dist/commands/task/update.command.d.ts.map +1 -0
- package/dist/commands/task/update.command.js +141 -0
- package/dist/commands/task/update.d.ts +13 -3
- package/dist/commands/task/update.d.ts.map +1 -1
- package/dist/commands/task/update.js +31 -122
- package/dist/commands/task/verify-ok.command.d.ts +13 -0
- package/dist/commands/task/verify-ok.command.d.ts.map +1 -0
- package/dist/commands/task/verify-ok.command.js +83 -0
- package/dist/commands/task/verify-record.d.ts +30 -8
- package/dist/commands/task/verify-record.d.ts.map +1 -1
- package/dist/commands/task/verify-record.js +107 -117
- package/dist/commands/task/verify-rework.command.d.ts +13 -0
- package/dist/commands/task/verify-rework.command.d.ts.map +1 -0
- package/dist/commands/task/verify-rework.command.js +83 -0
- package/dist/commands/task/verify-show.command.d.ts +9 -0
- package/dist/commands/task/verify-show.command.d.ts.map +1 -0
- package/dist/commands/task/verify-show.command.js +38 -0
- package/dist/commands/task/verify.command.d.ts +7 -0
- package/dist/commands/task/verify.command.d.ts.map +1 -0
- package/dist/commands/task/verify.command.js +20 -0
- package/dist/commands/upgrade.command.d.ts +6 -0
- package/dist/commands/upgrade.command.d.ts.map +1 -0
- package/dist/commands/upgrade.command.js +104 -0
- package/dist/commands/upgrade.d.ts +19 -2
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +281 -85
- package/dist/commands/verify.command.d.ts +16 -0
- package/dist/commands/verify.command.d.ts.map +1 -0
- package/dist/commands/verify.command.js +113 -0
- package/dist/commands/workflow.d.ts +4 -6
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +4 -7
- package/dist/meta/release.d.ts +2 -0
- package/dist/meta/release.d.ts.map +1 -0
- package/dist/meta/release.js +50 -0
- package/dist/policy/evaluate.d.ts +3 -0
- package/dist/policy/evaluate.d.ts.map +1 -0
- package/dist/policy/evaluate.js +27 -0
- package/dist/policy/result.d.ts +7 -0
- package/dist/policy/result.d.ts.map +1 -0
- package/dist/policy/result.js +21 -0
- package/dist/policy/rules/allowlist.d.ts +3 -0
- package/dist/policy/rules/allowlist.d.ts.map +1 -0
- package/dist/policy/rules/allowlist.js +30 -0
- package/dist/policy/rules/branch-pr-base.d.ts +3 -0
- package/dist/policy/rules/branch-pr-base.d.ts.map +1 -0
- package/dist/policy/rules/branch-pr-base.js +43 -0
- package/dist/policy/rules/clean-tree.d.ts +3 -0
- package/dist/policy/rules/clean-tree.d.ts.map +1 -0
- package/dist/policy/rules/clean-tree.js +19 -0
- package/dist/policy/rules/commit-subject.d.ts +3 -0
- package/dist/policy/rules/commit-subject.d.ts.map +1 -0
- package/dist/policy/rules/commit-subject.js +33 -0
- package/dist/policy/rules/protected-paths.d.ts +3 -0
- package/dist/policy/rules/protected-paths.d.ts.map +1 -0
- package/dist/policy/rules/protected-paths.js +53 -0
- package/dist/policy/types.d.ts +38 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +1 -0
- package/dist/shared/write-if-changed.d.ts +3 -0
- package/dist/shared/write-if-changed.d.ts.map +1 -0
- package/dist/shared/write-if-changed.js +25 -0
- package/package.json +3 -3
- package/dist/cli/help.d.ts +0 -2
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.js +0 -127
- package/dist/commands/task/verify.d.ts +0 -2
- package/dist/commands/task/verify.d.ts.map +0 -1
- package/dist/commands/task/verify.js +0 -1
package/README.md
CHANGED
|
@@ -28,8 +28,8 @@ Create your first task and run the workflow:
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
agentplane task new --title "First task" --description "Describe the change" --priority med --owner ORCHESTRATOR --tag docs
|
|
31
|
-
agentplane verify <task-id>
|
|
32
|
-
agentplane finish <task-id>
|
|
31
|
+
agentplane verify <task-id> --ok --by ORCHESTRATOR --note "Verified"
|
|
32
|
+
agentplane finish <task-id> --author ORCHESTRATOR --body "Verified: done" --result "First task completed"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
Prefer `npx` instead of a global install?
|
|
@@ -90,8 +90,8 @@ agentplane quickstart
|
|
|
90
90
|
agentplane config show
|
|
91
91
|
agentplane task list
|
|
92
92
|
agentplane task new --title "..." --description "..." --priority med --owner ORCHESTRATOR --tag docs
|
|
93
|
-
agentplane verify <task-id>
|
|
94
|
-
agentplane finish <task-id>
|
|
93
|
+
agentplane verify <task-id> --ok --by ORCHESTRATOR --note "Verified"
|
|
94
|
+
agentplane finish <task-id> --author ORCHESTRATOR --body "Verified: done" --result "Task completed"
|
|
95
95
|
agentplane recipes list
|
|
96
96
|
```
|
|
97
97
|
|
package/assets/AGENTS.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
AGENTS_POLICY: prod-v1.
|
|
2
|
+
AGENTS_POLICY: prod-v1.1
|
|
3
3
|
repo_namespace: .agentplane
|
|
4
4
|
default_initiator: ORCHESTRATOR
|
|
5
5
|
-->
|
|
@@ -24,25 +24,44 @@ This policy is designed to be the single, authoritative instruction set the agen
|
|
|
24
24
|
|
|
25
25
|
If two sources conflict, prefer the higher-priority source.
|
|
26
26
|
|
|
27
|
+
## CLI invocation
|
|
28
|
+
|
|
29
|
+
All commands in this policy are written as `agentplane ...`.
|
|
30
|
+
|
|
31
|
+
- If you are working inside the agentplane repository checkout, prefer the **repo-local CLI entrypoint** over any system-installed binary.
|
|
32
|
+
- Otherwise (packaged install), `agentplane ...` refers to the available `agentplane` binary.
|
|
33
|
+
|
|
34
|
+
If the preferred entrypoint fails (missing deps/build), treat any bootstrap step (`bun install`, `npm install`, `bun run build`, etc.)
|
|
35
|
+
as **network and/or outside-repo** activity and request explicit approval before proceeding.
|
|
36
|
+
|
|
27
37
|
## Scope boundary
|
|
28
38
|
|
|
29
|
-
- All operations must remain within the repository unless explicitly approved (see
|
|
39
|
+
- All operations must remain within the repository unless explicitly approved (see Approval Gates + Overrides).
|
|
30
40
|
- Do not read/write global user files (`~`, `/etc`, keychains, ssh keys, global git config) unless explicitly approved and necessary.
|
|
31
41
|
|
|
32
42
|
## Agent roles (authority boundaries)
|
|
33
43
|
|
|
34
|
-
- **ORCHESTRATOR**: the only role allowed to initiate a run; owns plan + approval gates; may create exactly one top-level tracking task after plan
|
|
44
|
+
- **ORCHESTRATOR**: the only role allowed to initiate a run; owns user-facing plan + approval gates; may create exactly one top-level tracking task after the user approves the overall plan.
|
|
35
45
|
- **PLANNER**: the sole creator of downstream tasks; may reprioritize tasks; may adjust decomposition (within approved scope).
|
|
36
46
|
- **CREATOR**: creates a new specialized agent definition only when required by the approved plan.
|
|
37
47
|
- **INTEGRATOR**: the only role allowed to integrate/merge into base branch (for `branch_pr`), finish tasks on base, and run exports.
|
|
38
48
|
|
|
39
49
|
No other role may assume another role’s authority.
|
|
40
50
|
|
|
41
|
-
##
|
|
51
|
+
## Definitions (remove ambiguity)
|
|
52
|
+
|
|
53
|
+
- **Read-only inspection**: commands that may read repo state but must not change tracked files or commit history.
|
|
54
|
+
Examples: `agentplane config show`, `agentplane task list`, `agentplane task show`, `git status`, `git diff`, `cat`, `grep`.
|
|
55
|
+
- **Mutating action**: anything that can change tracked files, task state, commits, branches, or outside-repo state.
|
|
56
|
+
Examples: `agentplane task new/update/doc set/plan set/start/finish/verify`, `git commit`, `git checkout`, `bun install`.
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
If unsure whether an action mutates state, treat it as mutating.
|
|
59
|
+
|
|
60
|
+
## Truthfulness & safety (hard invariants)
|
|
61
|
+
|
|
62
|
+
- Never invent facts about repo state. Prefer inspection over guessing.
|
|
63
|
+
- Never modify `.agentplane/tasks.json` manually. It is an **export-only snapshot** generated via `agentplane task export`.
|
|
64
|
+
- Never expose raw internal chain-of-thought. Use structured artifacts instead (see OUTPUT CONTRACTS).
|
|
46
65
|
|
|
47
66
|
## Cleanliness & untracked files
|
|
48
67
|
|
|
@@ -51,63 +70,102 @@ No other role may assume another role’s authority.
|
|
|
51
70
|
- “Clean” means: **no tracked changes** (`git status --short --untracked-files=no` is empty).
|
|
52
71
|
- If untracked files interfere with verify/guardrails or fall inside the task scope paths, surface them as a risk and request approval before acting.
|
|
53
72
|
|
|
54
|
-
##
|
|
73
|
+
## Approval gates (network vs outside-repo)
|
|
74
|
+
|
|
75
|
+
### Network
|
|
55
76
|
|
|
56
|
-
|
|
77
|
+
If `.agentplane/config.json` sets `agents.approvals.require_network=true`:
|
|
57
78
|
|
|
58
|
-
|
|
79
|
+
- Network use is prohibited until the user explicitly approves it (per run or per command batch).
|
|
59
80
|
|
|
60
|
-
|
|
81
|
+
Network use includes (non-exhaustive):
|
|
61
82
|
|
|
62
83
|
- `pip`, `npm`, `bun install`, downloading binaries/models
|
|
63
84
|
- `curl`, `wget`
|
|
64
85
|
- `git fetch`, `git pull`
|
|
65
86
|
- calling external HTTP APIs or remote services
|
|
66
87
|
|
|
67
|
-
### Outside-repo
|
|
88
|
+
### Outside-repo
|
|
68
89
|
|
|
69
|
-
|
|
90
|
+
Outside-repo reading/writing is **always prohibited** unless the user explicitly approves it (regardless of `require_network`).
|
|
91
|
+
|
|
92
|
+
Outside-repo includes (non-exhaustive):
|
|
70
93
|
|
|
71
94
|
- reading/writing outside the repo (`~`, `/etc`, global configs)
|
|
72
|
-
- modifying keychains, ssh keys,
|
|
95
|
+
- modifying keychains, ssh keys, credential stores
|
|
73
96
|
- any tool that mutates outside-repo state
|
|
74
97
|
|
|
75
|
-
If approval is required, pause and ask before proceeding.
|
|
76
|
-
|
|
77
98
|
---
|
|
78
99
|
|
|
79
100
|
# NON-NEGOTIABLE PIPELINE
|
|
80
101
|
|
|
81
|
-
1. **Preflight** (ORCHESTRATOR, mandatory)
|
|
82
|
-
2. **Plan + decomposition**
|
|
83
|
-
3. **Explicit user approval**
|
|
84
|
-
4. **Create tracking task**
|
|
85
|
-
5. **
|
|
86
|
-
6. **
|
|
87
|
-
7. **
|
|
88
|
-
8. **
|
|
102
|
+
1. **Preflight** (ORCHESTRATOR, mandatory; read-only)
|
|
103
|
+
2. **Plan + decomposition** (no execution; read-only)
|
|
104
|
+
3. **Explicit user approval** (overall plan + any requested overrides)
|
|
105
|
+
4. **Create tracking task** (one top-level task)
|
|
106
|
+
5. **Create and plan downstream tasks** (PLANNER)
|
|
107
|
+
6. **Execute tasks under mode-specific workflow**
|
|
108
|
+
7. **Verify**
|
|
109
|
+
8. **Finish**
|
|
110
|
+
9. **Export** (if enabled / required)
|
|
111
|
+
|
|
112
|
+
No step may be skipped unless the user explicitly authorizes skipping it via the Override Protocol.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
# OUTPUT CONTRACTS (REASONING & EXPLAINABILITY)
|
|
117
|
+
|
|
118
|
+
## Do not expose raw internal chain-of-thought
|
|
119
|
+
|
|
120
|
+
Agents MUST NOT output raw internal chain-of-thought (token-level reasoning, scratchwork, discarded branches).
|
|
121
|
+
|
|
122
|
+
## Use structured, inspectable reasoning artifacts
|
|
123
|
+
|
|
124
|
+
Agents MUST express reasoning through explicit artifacts, as applicable:
|
|
125
|
+
|
|
126
|
+
- **Preflight Summary**
|
|
127
|
+
- **Plan**
|
|
128
|
+
- **Assumptions**
|
|
129
|
+
- **Decisions**
|
|
130
|
+
- **Trade-offs**
|
|
131
|
+
- **Verification criteria**
|
|
132
|
+
- **Inference trace** (brief, task-relevant links between inputs -> decisions -> outputs)
|
|
89
133
|
|
|
90
|
-
|
|
134
|
+
This is the required substitute for raw chain-of-thought.
|
|
91
135
|
|
|
92
136
|
---
|
|
93
137
|
|
|
94
138
|
# MANDATORY PREFLIGHT (ORCHESTRATOR)
|
|
95
139
|
|
|
140
|
+
Preflight is **read-only inspection**. It is allowed before user approval.
|
|
141
|
+
|
|
96
142
|
Before any planning or execution, ORCHESTRATOR must run:
|
|
97
143
|
|
|
98
144
|
1. `agentplane config show`
|
|
99
145
|
2. `agentplane quickstart` (CLI instructions)
|
|
100
146
|
3. `agentplane task list`
|
|
101
147
|
4. `git status --short --untracked-files=no`
|
|
148
|
+
5. `git rev-parse --abbrev-ref HEAD`
|
|
149
|
+
|
|
150
|
+
Then report a **Preflight Summary** (do not dump full config or quickstart text).
|
|
151
|
+
|
|
152
|
+
## Preflight Summary (required)
|
|
102
153
|
|
|
103
|
-
|
|
154
|
+
You MUST explicitly state:
|
|
104
155
|
|
|
105
|
-
- Config loaded
|
|
106
|
-
- CLI instructions loaded
|
|
107
|
-
- Task list loaded
|
|
108
|
-
-
|
|
156
|
+
- Config loaded: yes/no
|
|
157
|
+
- CLI instructions loaded: yes/no
|
|
158
|
+
- Task list loaded: yes/no
|
|
159
|
+
- Working tree clean (tracked-only): yes/no
|
|
160
|
+
- Current git branch: `<name>`
|
|
161
|
+
- `workflow_mode`: `direct` / `branch_pr` / unknown
|
|
162
|
+
- Approval gates (from config):
|
|
163
|
+
- `require_plan`: true/false/unknown
|
|
164
|
+
- `require_verify`: true/false/unknown
|
|
165
|
+
- `require_network`: true/false/unknown
|
|
166
|
+
- Outside-repo: not needed / needed (if needed, requires explicit user approval)
|
|
109
167
|
|
|
110
|
-
Do not output the contents of
|
|
168
|
+
Do not output the full contents of config or quickstart unless the user explicitly asks.
|
|
111
169
|
|
|
112
170
|
---
|
|
113
171
|
|
|
@@ -115,7 +173,9 @@ Do not output the contents of the config or CLI instructions unless the user exp
|
|
|
115
173
|
|
|
116
174
|
- Always begin work by engaging ORCHESTRATOR.
|
|
117
175
|
- ORCHESTRATOR starts by producing a top-level plan + task decomposition.
|
|
118
|
-
- **
|
|
176
|
+
- **Before explicit user approval, do not perform mutating actions.**
|
|
177
|
+
- Allowed: read-only inspection (including preflight).
|
|
178
|
+
- Prohibited: creating/updating tasks, editing files, starting/finishing tasks, commits, branching, verify runs that mutate task state, network use, outside-repo access.
|
|
119
179
|
|
|
120
180
|
---
|
|
121
181
|
|
|
@@ -123,55 +183,196 @@ Do not output the contents of the config or CLI instructions unless the user exp
|
|
|
123
183
|
|
|
124
184
|
## 1) Plan & decomposition (no execution)
|
|
125
185
|
|
|
126
|
-
ORCHESTRATOR:
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
186
|
+
ORCHESTRATOR MUST produce:
|
|
187
|
+
|
|
188
|
+
- **Scope**
|
|
189
|
+
- In-scope paths and artifacts
|
|
190
|
+
- Out-of-scope boundaries
|
|
191
|
+
- **Assumptions**
|
|
192
|
+
- Only if required; each assumption must be testable/confirmable
|
|
193
|
+
- **Steps**
|
|
194
|
+
- Ordered, executable steps
|
|
195
|
+
- **Decomposition**
|
|
196
|
+
- Atomic tasks assignable to existing agents
|
|
197
|
+
- **Approvals**
|
|
198
|
+
- Whether network and/or outside-repo actions will be needed
|
|
199
|
+
- Any requested overrides (see Override Protocol)
|
|
200
|
+
- **Verification criteria**
|
|
201
|
+
- What will be considered "done" + checks to run
|
|
202
|
+
- **Rollback plan**
|
|
203
|
+
- How to revert safely if verification fails
|
|
204
|
+
- **Drift triggers**
|
|
205
|
+
- Conditions that require re-approval (see DRIFT POLICY)
|
|
206
|
+
|
|
207
|
+
## 2) After user approval (tracking task is mandatory)
|
|
134
208
|
|
|
135
209
|
- ORCHESTRATOR creates exactly **one** top-level tracking task via agentplane.
|
|
136
210
|
- PLANNER creates any additional tasks from the approved decomposition.
|
|
137
211
|
- Task IDs are referenced in comments/notes for traceability.
|
|
138
212
|
|
|
139
|
-
**
|
|
213
|
+
**Task tracking is mandatory** for any work that changes repo state. Exceptions require explicit user approval (Override Protocol).
|
|
140
214
|
|
|
141
215
|
---
|
|
142
216
|
|
|
143
|
-
#
|
|
217
|
+
# OVERRIDE PROTOCOL (USER-APPROVED EXCEPTIONS)
|
|
218
|
+
|
|
219
|
+
Overrides exist to let the user intentionally relax guardrails **in a controlled, logged way**.
|
|
220
|
+
|
|
221
|
+
## Hard invariants (cannot be overridden)
|
|
222
|
+
|
|
223
|
+
- No fabricated repo facts.
|
|
224
|
+
- No raw chain-of-thought.
|
|
225
|
+
- No manual editing of `.agentplane/tasks.json` (exports are generated, not edited).
|
|
226
|
+
|
|
227
|
+
## What can be overridden (with explicit user approval)
|
|
228
|
+
|
|
229
|
+
Common overridable guardrails:
|
|
144
230
|
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
231
|
+
- **Network**: allow network access even when `require_network=true`.
|
|
232
|
+
- **Outside-repo**: allow reading/writing outside the repo (scoped).
|
|
233
|
+
- **Pipeline**: skip/relax steps (e.g., skip task tracking for analysis-only; skip exports).
|
|
234
|
+
- **Tooling**: allow direct `git` operations when no agentplane command exists (commit/push).
|
|
235
|
+
- **Force flags**: allow `--force` status transitions / dependency bypass.
|
|
236
|
+
|
|
237
|
+
## Required format (to remove ambiguity)
|
|
238
|
+
|
|
239
|
+
When requesting an override, the agent MUST:
|
|
240
|
+
|
|
241
|
+
1. State the exact override(s) requested (one line per override).
|
|
242
|
+
2. State why it is necessary.
|
|
243
|
+
3. State the exact commands/actions it enables.
|
|
244
|
+
4. State the scope and expiration (this task only / this run only).
|
|
245
|
+
|
|
246
|
+
The user must respond explicitly approving (or rejecting) the override(s).
|
|
247
|
+
|
|
248
|
+
## Logging (traceability requirement)
|
|
249
|
+
|
|
250
|
+
Any approved override MUST be recorded:
|
|
251
|
+
|
|
252
|
+
- In the top-level tracking task under `## Notes` → `### Approvals / Overrides`.
|
|
253
|
+
- And in the relevant task’s `## Notes` if the override affects execution of that task.
|
|
149
254
|
|
|
150
255
|
---
|
|
151
256
|
|
|
152
|
-
# TASKS & DOCUMENTATION
|
|
257
|
+
# TASKS & DOCUMENTATION (TRACEABILITY)
|
|
258
|
+
|
|
259
|
+
## Golden rule
|
|
260
|
+
|
|
261
|
+
If an agent changes repo state, that work must be traceable to a task ID and a filled task README.
|
|
153
262
|
|
|
154
|
-
##
|
|
263
|
+
## Scaffold is mandatory
|
|
155
264
|
|
|
156
|
-
|
|
265
|
+
Immediately after creating a task, run:
|
|
266
|
+
|
|
267
|
+
- `agentplane task scaffold <task-id>`
|
|
268
|
+
|
|
269
|
+
This ensures all standard sections exist and are normalized.
|
|
270
|
+
|
|
271
|
+
## Who fills the README
|
|
272
|
+
|
|
273
|
+
- ORCHESTRATOR/PLANNER may create tasks with a minimal description.
|
|
274
|
+
- The **agent that will execute the task** is responsible for filling the task README sections
|
|
275
|
+
(Plan + Verify Steps + Risks + Rollback + Notes) before starting work.
|
|
276
|
+
|
|
277
|
+
## Required sections (before finish)
|
|
278
|
+
|
|
279
|
+
Required sections are config-driven (`.agentplane/config.json` → `tasks.doc.required_sections`).
|
|
280
|
+
At minimum, every task MUST have non-empty content for:
|
|
157
281
|
|
|
158
282
|
- Summary
|
|
159
283
|
- Scope
|
|
284
|
+
- Plan
|
|
160
285
|
- Risks
|
|
161
|
-
-
|
|
286
|
+
- Verification
|
|
162
287
|
- Rollback Plan
|
|
163
288
|
|
|
289
|
+
**Policy addition for maximum traceability:**
|
|
290
|
+
|
|
291
|
+
- `Context` and `Notes` MUST be filled for all non-trivial tasks (anything beyond a typo/doc tweak).
|
|
292
|
+
- `Verify Steps` MUST be filled for tasks that require verify (default tags: `code`, `backend`, `frontend`) and for `spike`.
|
|
293
|
+
|
|
294
|
+
## Section content contract (practical)
|
|
295
|
+
|
|
296
|
+
Use `agentplane task doc set` / `agentplane task plan set` (no manual README edits).
|
|
297
|
+
|
|
298
|
+
### Summary
|
|
299
|
+
|
|
300
|
+
- What is being changed (one paragraph).
|
|
301
|
+
- What success looks like.
|
|
302
|
+
|
|
303
|
+
### Context
|
|
304
|
+
|
|
305
|
+
- Why the change is needed.
|
|
306
|
+
- Constraints, assumptions, related tasks/PRs/issues.
|
|
307
|
+
|
|
308
|
+
### Scope
|
|
309
|
+
|
|
310
|
+
- In-scope paths/files/components.
|
|
311
|
+
- Explicit out-of-scope items.
|
|
312
|
+
|
|
313
|
+
### Plan
|
|
314
|
+
|
|
315
|
+
- Ordered steps with implementation checkpoints.
|
|
316
|
+
- Any migration steps and rollback checkpoints.
|
|
317
|
+
|
|
318
|
+
### Risks
|
|
319
|
+
|
|
320
|
+
- Key risks + mitigations.
|
|
321
|
+
- Any potential breaking changes.
|
|
322
|
+
|
|
323
|
+
### Verify Steps
|
|
324
|
+
|
|
325
|
+
- Explicit commands and expected outcomes (pass criteria).
|
|
326
|
+
- Prefer reproducible checks (`bun run test`, `bun run typecheck`, `bun run lint`, `agentplane verify <task-id>`, etc.).
|
|
327
|
+
- If verification is manual, state the manual checklist and acceptance criteria.
|
|
328
|
+
|
|
329
|
+
### Rollback Plan
|
|
330
|
+
|
|
331
|
+
- How to revert safely (commands or steps).
|
|
332
|
+
|
|
333
|
+
### Notes (use structured subheadings)
|
|
334
|
+
|
|
335
|
+
Use `## Notes` to log:
|
|
336
|
+
|
|
337
|
+
- `### Approvals / Overrides` (if any)
|
|
338
|
+
- `### Decisions` (trade-offs, why X not Y)
|
|
339
|
+
- `### Implementation Notes` (what changed, file list, key diffs)
|
|
340
|
+
- `### Evidence / Links` (commit hashes, PR links, logs if needed)
|
|
341
|
+
|
|
342
|
+
## Plan approval per task (when required)
|
|
343
|
+
|
|
344
|
+
If config sets `agents.approvals.require_plan=true`:
|
|
345
|
+
|
|
346
|
+
- The implementer fills `## Plan` (use `agentplane task plan set <task-id> ...`) and `## Verify Steps`.
|
|
347
|
+
- ORCHESTRATOR approves with `agentplane task plan approve <task-id> --by ORCHESTRATOR [--note "..."]`.
|
|
348
|
+
- No one may `agentplane start <task-id>` until the plan is approved (unless explicitly overridden by user).
|
|
349
|
+
|
|
350
|
+
## Two-stage verification (Verify Steps -> Verification)
|
|
351
|
+
|
|
352
|
+
- `## Verify Steps` is the **ex-ante verification contract**: instructions and pass criteria addressed to the verifier.
|
|
353
|
+
- `## Verification` is the **ex-post verification log**: append-only entries written by `agentplane verify ...`.
|
|
354
|
+
- Do not hand-edit `## Verification` entries. Treat them as audit records.
|
|
355
|
+
- For tasks with verify-required tags (default: `code`, `backend`, `frontend`) and for `spike`, `agentplane task plan approve`
|
|
356
|
+
will block until `## Verify Steps` is filled (the placeholder `<!-- TODO: FILL VERIFY STEPS -->` is treated as empty).
|
|
357
|
+
- Use `agentplane task verify-show <task-id>` to print the current `## Verify Steps` to stdout.
|
|
358
|
+
|
|
359
|
+
## Spike -> implementation convention
|
|
360
|
+
|
|
361
|
+
- A spike task is identified by tag `spike` (schema-free).
|
|
362
|
+
- A spike must define clear exit criteria in `## Verify Steps` and must capture outcomes in `## Notes` (Findings/Decision/Next Steps).
|
|
363
|
+
- `agentplane task derive <spike-id> ...` creates an implementation task that depends on the spike via `depends_on: [<spike-id>]`.
|
|
364
|
+
|
|
164
365
|
## Updating task docs
|
|
165
366
|
|
|
166
367
|
- Workflow/task artifacts (task READMEs, PR artifacts, task exports) must be updated via `agentplane` commands, not manual edits.
|
|
167
|
-
- Task README updates must be done via `agentplane task doc set ...`
|
|
168
|
-
- Manual edits to `.agentplane/tasks/<task-id>/README.md` are prohibited.
|
|
368
|
+
- Task README updates must be done via `agentplane task doc set ...` / `agentplane task plan set ...`.
|
|
369
|
+
- Manual edits to `.agentplane/tasks/<task-id>/README.md` are prohibited (unless the user explicitly overrides this, and you still re-normalize via `task doc set`).
|
|
169
370
|
|
|
170
371
|
---
|
|
171
372
|
|
|
172
373
|
# COMMIT WORKFLOW
|
|
173
374
|
|
|
174
|
-
- Commits and pushes must go through `agentplane` commands (no direct `git commit`/`git push`)
|
|
375
|
+
- Commits and pushes must go through `agentplane` commands (no direct `git commit`/`git push`) unless explicitly overridden.
|
|
175
376
|
|
|
176
377
|
## Commit message semantics (canonical)
|
|
177
378
|
|
|
@@ -210,7 +411,7 @@ Recommended action/status emojis:
|
|
|
210
411
|
- `⛔` blocked / BLOCKED
|
|
211
412
|
- `✅` finish / DONE
|
|
212
413
|
|
|
213
|
-
Agents must not reinterpret `-m` as
|
|
414
|
+
Agents must not reinterpret `-m` as "body-only" or "comment-only". `-m` is a commit message.
|
|
214
415
|
|
|
215
416
|
## Allowlist staging (guardrails)
|
|
216
417
|
|
|
@@ -228,16 +429,19 @@ Always follow `workflow_mode` from `.agentplane/config.json`.
|
|
|
228
429
|
Rules:
|
|
229
430
|
|
|
230
431
|
- Do all work in the current checkout.
|
|
231
|
-
-
|
|
432
|
+
- Task branches are allowed in `direct` (single working directory). Note: `agentplane work start <task-id> --agent <ROLE> --slug <slug>` will create/checkout `task/<task-id>/<slug>` in-place.
|
|
433
|
+
- Do not use worktrees in `direct`. `agentplane work start ... --worktree` is `branch_pr`-only.
|
|
434
|
+
- If you only need artifacts/docs without switching branches, prefer `agentplane task scaffold <task-id>`.
|
|
232
435
|
|
|
233
436
|
Recommended cadence:
|
|
234
437
|
|
|
235
|
-
1.
|
|
236
|
-
2.
|
|
237
|
-
3.
|
|
238
|
-
4.
|
|
239
|
-
5.
|
|
240
|
-
6. `
|
|
438
|
+
1. Ensure task plan is approved (if required)
|
|
439
|
+
2. `start` task (status comment; no commit by default)
|
|
440
|
+
3. Implement changes
|
|
441
|
+
4. Run verify commands / `agentplane verify`
|
|
442
|
+
5. Commit via agentplane with tight allowlist
|
|
443
|
+
6. `finish` with `--commit <git-rev>` and a Verified body
|
|
444
|
+
7. `task export` (if required)
|
|
241
445
|
|
|
242
446
|
## B) branch_pr mode (parallel work)
|
|
243
447
|
|
|
@@ -273,16 +477,23 @@ Exports:
|
|
|
273
477
|
|
|
274
478
|
---
|
|
275
479
|
|
|
276
|
-
#
|
|
480
|
+
# DRIFT POLICY (WHEN TO RE-APPROVE)
|
|
481
|
+
|
|
482
|
+
Re-approval is required if any of the following becomes true:
|
|
277
483
|
|
|
278
|
-
|
|
484
|
+
- Scope expands beyond the approved in-scope paths/artifacts.
|
|
485
|
+
- New tasks are needed that were not in the approved decomposition.
|
|
486
|
+
- Any network or outside-repo access becomes necessary (and was not approved).
|
|
487
|
+
- Verification criteria change materially.
|
|
488
|
+
- Plan changes materially for an in-flight task (update plan -> plan approval returns to pending).
|
|
489
|
+
- Guardrails require `--force` to proceed.
|
|
490
|
+
- Verification fails and remediation would change scope or risk profile.
|
|
279
491
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
492
|
+
When drift is detected: stop, summarize the drift, propose an updated plan, and ask for explicit approval.
|
|
493
|
+
|
|
494
|
+
---
|
|
284
495
|
|
|
285
|
-
|
|
496
|
+
# CONFIG CHANGES
|
|
286
497
|
|
|
287
|
-
-
|
|
288
|
-
-
|
|
498
|
+
- Do not modify `.agentplane/config.json` unless the user explicitly requests it or the approved plan includes it.
|
|
499
|
+
- Any config changes must be captured in task docs (`## Notes` → `### Decisions` / `### Risks`) and verified.
|
package/assets/agents/CODER.json
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"Confirm task context and readiness before editing; keep diffs minimal and task-scoped.",
|
|
22
22
|
"Document edits with before/after snippets and cite the exact files touched.",
|
|
23
23
|
"Run necessary commands (tests/linters/formatters) and summarize key output lines only.",
|
|
24
|
+
"When writing verification notes (and any other approval/verification notes that include timestamps), use an ISO 8601 UTC timestamp with time, e.g. 2026-02-07T16:20:02.717Z; avoid date-only values like 2026-02-07.",
|
|
24
25
|
"Prefer declared verify commands; record ad-hoc results via PR notes or request PLANNER to update verify lists.",
|
|
25
26
|
"Coordinate handoffs to TESTER/REVIEWER/DOCS with task ID, changed files, and expected behavior.",
|
|
26
27
|
"Avoid task closure in branch_pr; keep commits task-scoped and update status via agentplane."
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"Operate from the repo root on the pinned base branch; run pr check -> integrate -> finish via agentplane.",
|
|
22
22
|
"Use configured base branch and task branch prefix when referencing branches; check config if uncertain.",
|
|
23
23
|
"Ensure verify commands are run/recorded; update PR artifacts and task README as needed.",
|
|
24
|
+
"When writing verification notes (and any other approval/verification notes that include timestamps), use an ISO 8601 UTC timestamp with time, e.g. 2026-02-07T16:20:02.717Z; avoid date-only values like 2026-02-07.",
|
|
24
25
|
"When closing multiple tasks, use batch finish so the same commit metadata and verification note apply.",
|
|
25
26
|
"Check `closure_commit_requires_approval` in .agentplane/config.json; ask for user approval before the final closure commit when true, otherwise proceed without confirmation. Optionally clean task branches/worktrees after closure."
|
|
26
27
|
]
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"workflow": [
|
|
16
16
|
"Follow shared workflow rules in AGENTS.md and `agentplane quickstart` / `agentplane role <ROLE>` output.",
|
|
17
17
|
"Before planning or execution, load .agentplane/config.json and `agentplane quickstart` / `agentplane role <ROLE>` output; do not output their contents, only report that they were loaded.",
|
|
18
|
+
"When writing plan approval notes (and any other approval/verification notes), use an ISO 8601 UTC timestamp with time, e.g. 2026-02-07T16:20:02.717Z; avoid date-only values like 2026-02-07.",
|
|
18
19
|
"Use `agentplane config show|set` for config changes (workflow_mode, branch/task settings); avoid manual edits.",
|
|
19
20
|
"Convert the first user message into a top-level plan; do not create tasks until the user approves it.",
|
|
20
21
|
"Restate the user goal and constraints, then draft a numbered top-level plan with agent assignments and expected outcomes.",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"workflow": [
|
|
19
19
|
"Follow shared workflow rules in AGENTS.md and `agentplane quickstart` / `agentplane role <ROLE>` output.",
|
|
20
20
|
"Review the backlog before changes to avoid duplicates or conflicts.",
|
|
21
|
+
"When writing plan approval notes, use an ISO 8601 UTC timestamp with time, e.g. 2026-02-07T16:20:02.717Z; avoid date-only values like 2026-02-07.",
|
|
21
22
|
"For each top-level user request, after the user approves task creation, create exactly one top-level task via agentplane unless the user explicitly opts out; reference plan items or downstream task IDs in its description or comments.",
|
|
22
23
|
"Decompose goals into atomic tasks with a single owner; set depends_on explicitly (use [] for none).",
|
|
23
24
|
"Assign each task to an existing agent ID or schedule CREATOR if no suitable agent exists.",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"Add the smallest set of high-value tests (happy path + edge/regression).",
|
|
23
23
|
"Keep tests deterministic and fast; avoid network calls and time-based flakiness.",
|
|
24
24
|
"Run targeted tests first and summarize only the key output lines.",
|
|
25
|
+
"When writing verification notes (and any other approval/verification notes that include timestamps), use an ISO 8601 UTC timestamp with time, e.g. 2026-02-07T16:20:02.717Z; avoid date-only values like 2026-02-07.",
|
|
25
26
|
"If test infrastructure is missing, document the blocker and request a PLANNER task."
|
|
26
27
|
]
|
|
27
28
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type AgentplaneConfig, type ResolvedProject } from "@agentplaneorg/core";
|
|
2
|
+
import { type TaskBackend } from "./shared.js";
|
|
3
|
+
export declare function loadTaskBackend(opts: {
|
|
4
|
+
cwd: string;
|
|
5
|
+
rootOverride?: string | null;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
backend: TaskBackend;
|
|
8
|
+
backendId: string;
|
|
9
|
+
resolved: ResolvedProject;
|
|
10
|
+
config: AgentplaneConfig;
|
|
11
|
+
backendConfigPath: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/backends/task-backend/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AA0C7D,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC,CAuBD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { loadConfig, resolveProject, } from "@agentplaneorg/core";
|
|
4
|
+
import { loadDotEnv } from "../../shared/env.js";
|
|
5
|
+
import { isRecord } from "../../shared/guards.js";
|
|
6
|
+
import { LocalBackend } from "./local-backend.js";
|
|
7
|
+
import { RedmineBackend } from "./redmine-backend.js";
|
|
8
|
+
import { toStringSafe } from "./shared.js";
|
|
9
|
+
async function loadBackendConfig(configPath) {
|
|
10
|
+
try {
|
|
11
|
+
const raw = JSON.parse(await readFile(configPath, "utf8"));
|
|
12
|
+
return isRecord(raw) ? raw : null;
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
const code = err?.code;
|
|
16
|
+
if (code === "ENOENT")
|
|
17
|
+
return null;
|
|
18
|
+
throw err;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function resolveMaybeRelative(root, input) {
|
|
22
|
+
if (!input)
|
|
23
|
+
return null;
|
|
24
|
+
const raw = toStringSafe(input).trim();
|
|
25
|
+
if (!raw)
|
|
26
|
+
return null;
|
|
27
|
+
return path.isAbsolute(raw) ? raw : path.join(root, raw);
|
|
28
|
+
}
|
|
29
|
+
function normalizeBackendConfig(raw) {
|
|
30
|
+
if (!isRecord(raw)) {
|
|
31
|
+
return { id: "local", version: 1, settings: {} };
|
|
32
|
+
}
|
|
33
|
+
const id = toStringSafe(raw.id).trim() || "local";
|
|
34
|
+
const version = typeof raw.version === "number" ? raw.version : 1;
|
|
35
|
+
const settings = isRecord(raw.settings) ? raw.settings : {};
|
|
36
|
+
return { id, version, settings };
|
|
37
|
+
}
|
|
38
|
+
export async function loadTaskBackend(opts) {
|
|
39
|
+
const resolved = await resolveProject({ cwd: opts.cwd, rootOverride: opts.rootOverride ?? null });
|
|
40
|
+
const loaded = await loadConfig(resolved.agentplaneDir);
|
|
41
|
+
const backendConfigPath = path.join(resolved.gitRoot, loaded.config.tasks_backend.config_path);
|
|
42
|
+
const backendConfig = await loadBackendConfig(backendConfigPath);
|
|
43
|
+
const normalized = normalizeBackendConfig(backendConfig);
|
|
44
|
+
const backendId = normalized.id;
|
|
45
|
+
const settings = normalized.settings;
|
|
46
|
+
if (backendId === "redmine") {
|
|
47
|
+
await loadDotEnv(resolved.gitRoot);
|
|
48
|
+
const cacheDirRaw = resolveMaybeRelative(resolved.gitRoot, settings.cache_dir);
|
|
49
|
+
const cacheDir = cacheDirRaw ?? path.join(resolved.gitRoot, loaded.config.paths.workflow_dir);
|
|
50
|
+
const cache = cacheDir ? new LocalBackend({ dir: cacheDir }) : null;
|
|
51
|
+
const redmine = new RedmineBackend(settings, { cache });
|
|
52
|
+
return { backend: redmine, backendId, resolved, config: loaded.config, backendConfigPath };
|
|
53
|
+
}
|
|
54
|
+
const localDir = resolveMaybeRelative(resolved.gitRoot, settings.dir) ??
|
|
55
|
+
path.join(resolved.gitRoot, loaded.config.paths.workflow_dir);
|
|
56
|
+
const local = new LocalBackend({ dir: localDir });
|
|
57
|
+
return { backend: local, backendId: "local", resolved, config: loaded.config, backendConfigPath };
|
|
58
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type TaskBackend, type TaskData } from "./shared.js";
|
|
2
|
+
export declare class LocalBackend implements TaskBackend {
|
|
3
|
+
id: string;
|
|
4
|
+
root: string;
|
|
5
|
+
updatedBy: string;
|
|
6
|
+
constructor(settings?: {
|
|
7
|
+
dir?: string;
|
|
8
|
+
updatedBy?: string;
|
|
9
|
+
});
|
|
10
|
+
generateTaskId(opts: {
|
|
11
|
+
length: number;
|
|
12
|
+
attempts: number;
|
|
13
|
+
}): Promise<string>;
|
|
14
|
+
listTasks(): Promise<TaskData[]>;
|
|
15
|
+
getTask(taskId: string): Promise<TaskData | null>;
|
|
16
|
+
getTasks(taskIds: string[]): Promise<(TaskData | null)[]>;
|
|
17
|
+
getTaskDoc(taskId: string): Promise<string>;
|
|
18
|
+
writeTask(task: TaskData): Promise<void>;
|
|
19
|
+
setTaskDoc(taskId: string, doc: string, updatedBy?: string): Promise<void>;
|
|
20
|
+
touchTaskDocMetadata(taskId: string, updatedBy?: string): Promise<void>;
|
|
21
|
+
writeTasks(tasks: TaskData[]): Promise<void>;
|
|
22
|
+
normalizeTasks(): Promise<{
|
|
23
|
+
scanned: number;
|
|
24
|
+
changed: number;
|
|
25
|
+
}>;
|
|
26
|
+
exportTasksJson(outputPath: string): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=local-backend.d.ts.map
|