@fitlab-ai/agent-infra 0.8.4 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.ts +2 -2
- package/dist/bin/cli.js +2 -2
- package/dist/bin/internal-cli.js +98 -0
- package/dist/lib/decide.js +81 -90
- package/dist/lib/defaults.json +9 -0
- package/dist/lib/git/review-snapshot.js +79 -0
- package/dist/lib/git/workflow.js +101 -0
- package/dist/lib/init.js +5 -0
- package/dist/lib/internal/git-workflow.js +42 -0
- package/dist/lib/internal/platform-checks.js +119 -0
- package/dist/lib/internal/platform-comment.js +129 -0
- package/dist/lib/internal/platform-context.js +46 -0
- package/dist/lib/internal/platform-issue.js +142 -0
- package/dist/lib/internal/platform-pr.js +146 -0
- package/dist/lib/internal/release-workflow.js +217 -0
- package/dist/lib/internal/task-artifact.js +67 -0
- package/dist/lib/internal/task-context.js +43 -0
- package/dist/lib/internal/task-event.js +70 -0
- package/dist/lib/internal/task-ledger.js +114 -0
- package/dist/lib/internal/task-lifecycle.js +58 -0
- package/dist/lib/internal/task-short-id.js +83 -0
- package/dist/lib/internal/task-snapshot.js +47 -0
- package/dist/lib/internal/task-verify.js +50 -0
- package/dist/lib/internal/task-warning.js +74 -0
- package/dist/lib/platform/adapters.js +14 -0
- package/dist/lib/platform/context.js +146 -0
- package/dist/lib/platform/github-client.js +124 -0
- package/dist/lib/platform/issue-comments.js +409 -0
- package/dist/lib/platform/issue-metadata.js +183 -0
- package/dist/lib/platform/issues.js +617 -0
- package/dist/lib/platform/metadata-labels.js +28 -0
- package/dist/lib/platform/pr-checks.js +216 -0
- package/dist/lib/platform/pr-summary.js +88 -0
- package/dist/lib/platform/pull-request-metadata.js +38 -0
- package/dist/lib/platform/pull-requests.js +338 -0
- package/dist/lib/platform/releases.js +82 -0
- package/dist/lib/platform/types.js +22 -0
- package/dist/lib/platform/verification-required.js +78 -0
- package/dist/lib/platform/verification-sync.js +1014 -0
- package/dist/lib/platform/verification.js +6 -0
- package/dist/lib/release/channels.js +31 -0
- package/dist/lib/release/workflow.js +32 -0
- package/dist/lib/render.js +3 -2
- package/dist/lib/run/index.js +24 -7
- package/dist/lib/sandbox/capture.js +25 -3
- package/dist/lib/sandbox/commands/create.js +66 -26
- package/dist/lib/sandbox/commands/enter.js +34 -11
- package/dist/lib/sandbox/commands/list-running.js +10 -8
- package/dist/lib/sandbox/commands/show.js +2 -2
- package/dist/lib/sandbox/commands/start.js +53 -15
- package/dist/lib/sandbox/engine.js +33 -3
- package/dist/lib/sandbox/engines/colima.js +2 -2
- package/dist/lib/sandbox/index.js +6 -6
- package/dist/lib/sandbox/mounts.js +36 -0
- package/dist/lib/sandbox/recovery.js +562 -0
- package/dist/lib/sandbox/runtimes/base.dockerfile +4 -0
- package/dist/lib/sandbox/task-resolver.js +5 -1
- package/dist/lib/sandbox/tools.js +19 -0
- package/dist/lib/server/daemon.js +9 -0
- package/dist/lib/server/process-control.js +66 -73
- package/dist/lib/server/process-state.js +168 -0
- package/dist/lib/server/protocol.js +5 -5
- package/dist/lib/task/activity-log.js +61 -0
- package/dist/lib/task/artifact-lifecycle.js +427 -0
- package/dist/lib/task/command-options.js +30 -0
- package/dist/lib/task/commands/cat.js +36 -6
- package/dist/lib/task/commands/decisions.js +80 -46
- package/dist/lib/task/commands/files.js +21 -7
- package/dist/lib/task/commands/grep.js +55 -7
- package/dist/lib/task/commands/issue-body.js +23 -14
- package/dist/lib/task/commands/log.js +27 -70
- package/dist/lib/task/commands/show.js +20 -7
- package/dist/lib/task/commands/status.js +18 -8
- package/dist/lib/task/decision-intents.js +154 -0
- package/dist/lib/task/decision-items.js +53 -0
- package/dist/lib/task/events.js +318 -0
- package/dist/lib/task/frontmatter.js +159 -1
- package/dist/lib/task/implementation-inputs.js +117 -0
- package/dist/lib/task/index.js +12 -9
- package/dist/lib/task/issue-form.js +19 -6
- package/dist/lib/task/ledger-intents.js +185 -0
- package/dist/lib/task/ledger.js +65 -35
- package/dist/lib/task/lifecycle.js +484 -0
- package/dist/lib/task/resolve-ref.js +152 -32
- package/dist/lib/task/review-artifacts.js +101 -0
- package/dist/lib/task/review-fingerprint.js +46 -0
- package/dist/lib/task/sections.js +358 -4
- package/dist/lib/task/short-id.js +292 -7
- package/dist/lib/task/snapshot.js +95 -0
- package/dist/lib/task/verification-checks.js +8 -0
- package/dist/lib/task/verification-config.js +14 -0
- package/dist/lib/task/verification-engine.js +906 -0
- package/dist/lib/task/verification-review.js +3 -0
- package/dist/lib/task/verification-types.js +2 -0
- package/dist/lib/task/verification.js +113 -0
- package/dist/lib/task/workflow-warning-intents.js +131 -0
- package/dist/lib/task/workflow-warnings.js +10 -78
- package/dist/lib/task/write.js +241 -0
- package/dist/lib/update.js +2 -0
- package/lib/decide.ts +57 -97
- package/lib/defaults.json +9 -0
- package/lib/git/review-snapshot.ts +73 -0
- package/lib/git/workflow.ts +101 -0
- package/lib/init.ts +9 -0
- package/lib/internal/git-workflow.ts +37 -0
- package/lib/internal/platform-checks.ts +101 -0
- package/lib/internal/platform-comment.ts +99 -0
- package/lib/internal/platform-context.ts +33 -0
- package/lib/internal/platform-issue.ts +116 -0
- package/lib/internal/platform-pr.ts +119 -0
- package/lib/internal/release-workflow.ts +186 -0
- package/lib/internal/task-artifact.ts +47 -0
- package/lib/internal/task-context.ts +35 -0
- package/lib/internal/task-event.ts +51 -0
- package/lib/internal/task-ledger.ts +86 -0
- package/lib/internal/task-lifecycle.ts +41 -0
- package/lib/internal/task-short-id.ts +55 -0
- package/lib/internal/task-snapshot.ts +32 -0
- package/lib/internal/task-verify.ts +33 -0
- package/lib/internal/task-warning.ts +50 -0
- package/lib/platform/adapters.ts +30 -0
- package/lib/platform/context.ts +164 -0
- package/lib/platform/github-client.ts +146 -0
- package/lib/platform/issue-comments.ts +479 -0
- package/lib/platform/issue-metadata.ts +250 -0
- package/lib/platform/issues.ts +691 -0
- package/lib/platform/metadata-labels.ts +33 -0
- package/lib/platform/pr-checks.ts +246 -0
- package/lib/platform/pr-summary.ts +90 -0
- package/lib/platform/pull-request-metadata.ts +69 -0
- package/lib/platform/pull-requests.ts +380 -0
- package/lib/platform/releases.ts +71 -0
- package/lib/platform/types.ts +74 -0
- package/lib/platform/verification-required.ts +83 -0
- package/{templates/.agents/scripts/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +221 -363
- package/lib/platform/verification.ts +11 -0
- package/lib/release/channels.ts +30 -0
- package/lib/release/workflow.ts +31 -0
- package/lib/render.ts +3 -2
- package/lib/run/index.ts +25 -7
- package/lib/sandbox/capture.ts +29 -3
- package/lib/sandbox/commands/create.ts +75 -28
- package/lib/sandbox/commands/enter.ts +38 -11
- package/lib/sandbox/commands/list-running.ts +10 -8
- package/lib/sandbox/commands/show.ts +2 -2
- package/lib/sandbox/commands/start.ts +50 -16
- package/lib/sandbox/engine.ts +37 -3
- package/lib/sandbox/engines/colima.ts +2 -2
- package/lib/sandbox/index.ts +6 -6
- package/lib/sandbox/mounts.ts +55 -0
- package/lib/sandbox/recovery.ts +828 -0
- package/lib/sandbox/runtimes/base.dockerfile +4 -0
- package/lib/sandbox/task-resolver.ts +5 -1
- package/lib/sandbox/tools.ts +31 -0
- package/lib/server/daemon.ts +9 -0
- package/lib/server/process-control.ts +70 -71
- package/lib/server/process-state.ts +183 -0
- package/lib/server/protocol.ts +5 -5
- package/lib/task/activity-log.ts +62 -0
- package/lib/task/artifact-lifecycle.ts +484 -0
- package/lib/task/command-options.ts +32 -0
- package/lib/task/commands/cat.ts +22 -9
- package/lib/task/commands/decisions.ts +49 -47
- package/lib/task/commands/files.ts +14 -6
- package/lib/task/commands/grep.ts +34 -7
- package/lib/task/commands/issue-body.ts +16 -16
- package/lib/task/commands/log.ts +17 -70
- package/lib/task/commands/show.ts +14 -6
- package/lib/task/commands/status.ts +17 -7
- package/lib/task/decision-intents.ts +163 -0
- package/lib/task/decision-items.ts +64 -0
- package/lib/task/events.ts +320 -0
- package/lib/task/frontmatter.ts +202 -2
- package/lib/task/implementation-inputs.ts +137 -0
- package/lib/task/index.ts +12 -9
- package/lib/task/issue-form.ts +20 -6
- package/lib/task/ledger-intents.ts +201 -0
- package/lib/task/ledger.ts +77 -31
- package/lib/task/lifecycle.ts +458 -0
- package/lib/task/resolve-ref.ts +197 -36
- package/{templates/.agents/scripts/lib/review-artifacts.js → lib/task/review-artifacts.ts} +11 -12
- package/{templates/.agents/scripts/lib/post-review-commit.js → lib/task/review-fingerprint.ts} +20 -10
- package/lib/task/sections.ts +486 -4
- package/lib/task/short-id.ts +403 -9
- package/lib/task/snapshot.ts +143 -0
- package/lib/task/verification-checks.ts +9 -0
- package/lib/task/verification-config.ts +20 -0
- package/{templates/.agents/scripts/validate-artifact.js → lib/task/verification-engine.ts} +257 -451
- package/lib/task/verification-review.ts +9 -0
- package/lib/task/verification-types.ts +29 -0
- package/lib/task/verification.ts +156 -0
- package/lib/task/workflow-warning-intents.ts +142 -0
- package/lib/task/workflow-warnings.ts +10 -78
- package/lib/task/write.ts +468 -0
- package/lib/update.ts +6 -0
- package/package.json +5 -2
- package/templates/.agents/README.en.md +6 -3
- package/templates/.agents/README.zh-CN.md +6 -3
- package/templates/.agents/rules/README.en.md +6 -5
- package/templates/.agents/rules/README.zh-CN.md +6 -5
- package/templates/.agents/rules/create-issue.en.md +1 -1
- package/templates/.agents/rules/create-issue.github.en.md +5 -184
- package/templates/.agents/rules/create-issue.github.zh-CN.md +12 -178
- package/templates/.agents/rules/create-issue.zh-CN.md +1 -1
- package/templates/.agents/rules/human-decision-context.en.md +36 -0
- package/templates/.agents/rules/human-decision-context.zh-CN.md +36 -0
- package/templates/.agents/rules/issue-fields.github.en.md +4 -148
- package/templates/.agents/rules/issue-fields.github.zh-CN.md +9 -144
- package/templates/.agents/rules/issue-pr-commands.en.md +43 -3
- package/templates/.agents/rules/issue-pr-commands.github.en.md +15 -220
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +23 -213
- package/templates/.agents/rules/issue-pr-commands.zh-CN.md +45 -3
- package/templates/.agents/rules/issue-sync.en.md +1 -1
- package/templates/.agents/rules/issue-sync.github.en.md +14 -301
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +36 -287
- package/templates/.agents/rules/issue-sync.zh-CN.md +1 -1
- package/templates/.agents/rules/milestone-inference.en.md +1 -1
- package/templates/.agents/rules/milestone-inference.github.en.md +7 -119
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +8 -108
- package/templates/.agents/rules/milestone-inference.zh-CN.md +1 -1
- package/templates/.agents/rules/next-step-output.en.md +12 -11
- package/templates/.agents/rules/next-step-output.zh-CN.md +12 -11
- package/templates/.agents/rules/no-mid-flow-questions.en.md +3 -3
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +3 -3
- package/templates/.agents/rules/pr-checks-commands.en.md +16 -3
- package/templates/.agents/rules/pr-checks-commands.github.en.md +10 -54
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +19 -47
- package/templates/.agents/rules/pr-checks-commands.zh-CN.md +30 -3
- package/templates/.agents/rules/pr-sync.en.md +30 -3
- package/templates/.agents/rules/pr-sync.github.en.md +12 -115
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +26 -104
- package/templates/.agents/rules/pr-sync.zh-CN.md +43 -3
- package/templates/.agents/rules/review-handshake.en.md +13 -9
- package/templates/.agents/rules/review-handshake.zh-CN.md +13 -9
- package/templates/.agents/rules/task-management.en.md +11 -2
- package/templates/.agents/rules/task-management.zh-CN.md +11 -3
- package/templates/.agents/rules/task-short-id.en.md +25 -29
- package/templates/.agents/rules/task-short-id.zh-CN.md +20 -23
- package/templates/.agents/scripts/lib/agent-infra-package.js +141 -0
- package/templates/.agents/scripts/task-short-id.js +71 -533
- package/templates/.agents/skills/analyze-task/SKILL.en.md +22 -55
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +26 -59
- package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/block-task/SKILL.en.md +21 -47
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +23 -47
- package/templates/.agents/skills/block-task/config/verify.json +1 -2
- package/templates/.agents/skills/cancel-task/SKILL.en.md +16 -45
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +16 -45
- package/templates/.agents/skills/cancel-task/config/verify.json +1 -2
- package/templates/.agents/skills/check-task/SKILL.en.md +6 -3
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/code-task/SKILL.en.md +22 -35
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +28 -44
- package/templates/.agents/skills/code-task/config/verify.en.json +3 -3
- package/templates/.agents/skills/code-task/config/verify.zh-CN.json +3 -3
- package/templates/.agents/skills/code-task/reference/dual-mode.en.md +13 -9
- package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +13 -9
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +1 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/report-template.en.md +11 -1
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +11 -1
- package/templates/.agents/skills/commit/SKILL.en.md +18 -14
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +18 -14
- package/templates/.agents/skills/commit/config/verify.json +1 -2
- package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -11
- package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -11
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +4 -8
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +4 -8
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +6 -18
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +5 -17
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +42 -2
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +42 -2
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +10 -54
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +10 -79
- package/templates/.agents/skills/complete-task/SKILL.en.md +59 -63
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +59 -63
- package/templates/.agents/skills/complete-task/config/verify.en.json +11 -6
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +11 -6
- package/templates/.agents/skills/create-pr/SKILL.en.md +19 -44
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +19 -43
- package/templates/.agents/skills/create-pr/config/verify.json +1 -2
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +8 -12
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +7 -11
- package/templates/.agents/skills/create-task/SKILL.en.md +12 -13
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +12 -13
- package/templates/.agents/skills/create-task/config/verify.json +1 -2
- package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-codescan/config/verify.json +1 -2
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-dependabot/config/verify.json +1 -2
- package/templates/.agents/skills/import-issue/SKILL.en.md +9 -13
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -14
- package/templates/.agents/skills/import-issue/config/verify.json +1 -2
- package/templates/.agents/skills/init-milestones/SKILL.en.md +2 -2
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/init-milestones/scripts/init-milestones.github.sh +5 -4
- package/templates/.agents/skills/plan-task/SKILL.en.md +17 -42
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +22 -49
- package/templates/.agents/skills/plan-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/post-release/SKILL.en.md +11 -81
- package/templates/.agents/skills/post-release/SKILL.zh-CN.md +8 -78
- package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
- package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/release/SKILL.en.md +16 -163
- package/templates/.agents/skills/release/SKILL.zh-CN.md +15 -162
- package/templates/.agents/skills/restore-task/SKILL.en.md +11 -29
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +11 -29
- package/templates/.agents/skills/restore-task/config/verify.json +1 -2
- package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +22 -36
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +23 -41
- package/templates/.agents/skills/review-code/config/verify.en.json +5 -5
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +5 -5
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +56 -18
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +56 -18
- package/templates/.agents/skills/review-code/reference/report-template.en.md +12 -4
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +12 -4
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-plan/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +6 -3
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +177 -151
- package/templates/.agents/skills/watch-pr/SKILL.en.md +24 -14
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +25 -15
- package/templates/.agents/skills/watch-pr/config/verify.json +1 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
- package/templates/.agents/templates/task.en.md +6 -1
- package/templates/.agents/templates/task.zh-CN.md +6 -1
- package/templates/.claude/commands/analyze-task.en.md +1 -1
- package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.claude/commands/block-task.en.md +1 -1
- package/templates/.claude/commands/block-task.zh-CN.md +1 -1
- package/templates/.claude/commands/cancel-task.en.md +1 -1
- package/templates/.claude/commands/cancel-task.zh-CN.md +1 -1
- package/templates/.claude/commands/check-task.en.md +1 -1
- package/templates/.claude/commands/check-task.zh-CN.md +1 -1
- package/templates/.claude/commands/code-task.en.md +1 -1
- package/templates/.claude/commands/code-task.zh-CN.md +1 -1
- package/templates/.claude/commands/commit.en.md +1 -0
- package/templates/.claude/commands/commit.zh-CN.md +1 -0
- package/templates/.claude/commands/complete-manual-validation.en.md +1 -1
- package/templates/.claude/commands/complete-manual-validation.zh-CN.md +1 -1
- package/templates/.claude/commands/complete-task.en.md +1 -1
- package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
- package/templates/.claude/commands/create-pr.en.md +1 -1
- package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
- package/templates/.claude/commands/plan-task.en.md +1 -1
- package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
- package/templates/.claude/commands/review-analysis.en.md +1 -1
- package/templates/.claude/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.claude/commands/review-code.en.md +1 -1
- package/templates/.claude/commands/review-code.zh-CN.md +1 -1
- package/templates/.claude/commands/review-plan.en.md +1 -1
- package/templates/.claude/commands/review-plan.zh-CN.md +1 -1
- package/templates/.claude/commands/watch-pr.en.md +1 -1
- package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
- package/templates/.gemini/commands/_project_/analyze-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/commit.en.toml +4 -0
- package/templates/.gemini/commands/_project_/commit.zh-CN.toml +4 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +2 -0
- package/templates/.git-hooks/check-large-files.cjs +92 -0
- package/templates/.git-hooks/check-version-format.sh +5 -1
- package/templates/.git-hooks/pre-commit +1 -0
- package/templates/.opencode/commands/analyze-task.en.md +1 -1
- package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/check-task.en.md +1 -1
- package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/code-task.en.md +1 -1
- package/templates/.opencode/commands/code-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/commit.en.md +2 -0
- package/templates/.opencode/commands/commit.zh-CN.md +2 -0
- package/templates/.opencode/commands/complete-task.en.md +1 -1
- package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/plan-task.en.md +1 -1
- package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-analysis.en.md +1 -1
- package/templates/.opencode/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-code.en.md +1 -1
- package/templates/.opencode/commands/review-code.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-plan.en.md +1 -1
- package/templates/.opencode/commands/review-plan.zh-CN.md +1 -1
- package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
- package/templates/.agents/scripts/review-diff-fingerprint.js +0 -99
- package/templates/.agents/scripts/workflow-warnings.js +0 -290
- package/templates/.agents/skills/code-task/scripts/detect-mode.js +0 -257
- package/templates/.agents/skills/release/scripts/manage-milestones.github.sh +0 -80
- package/templates/.agents/skills/release/scripts/manage-milestones.sh +0 -6
|
@@ -1,135 +1,57 @@
|
|
|
1
1
|
# PR 摘要同步
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
PR 摘要的语义聚合由模型完成;canonical 产物选择、marker、当前 HEAD、分页评论查找和 create/update/no-op 由 typed core 负责。
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
当前调用方:
|
|
8
|
-
- `create-pr`:首次创建或更新 PR 摘要评论
|
|
9
|
-
- `commit`:在已有 PR 上按需刷新摘要评论
|
|
10
|
-
- `complete-manual-validation`:人工验证完成后原地更新摘要评论,并写入可被后续聚合复用的验证产物
|
|
11
|
-
|
|
12
|
-
如果后续 skill 也需要刷新 PR 摘要,先在对应 skill 的 reference 中引用本 rule,再补充该 skill 自身的触发条件和失败语义。
|
|
13
|
-
|
|
14
|
-
## 隐藏标记
|
|
15
|
-
|
|
16
|
-
统一使用以下隐藏标记:
|
|
5
|
+
## 聚合输入
|
|
17
6
|
|
|
18
|
-
```
|
|
19
|
-
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr summary-context {task-id}
|
|
20
9
|
```
|
|
21
10
|
|
|
22
|
-
|
|
11
|
+
只使用返回的 canonical latest `plan*`、`review-plan*`、`code*`、`review-code*`、`manual-validation*`(包括 `manual-validation.md`)。模型据此生成 reviewer 摘要正文,至少包含:
|
|
23
12
|
|
|
24
|
-
|
|
13
|
+
- 变更摘要与实现范围
|
|
14
|
+
- 测试结果
|
|
15
|
+
- 审查历程与当前结论
|
|
16
|
+
- 人工校验三态:`### ⚠️ 需人工校验`、`### ✅ 人工验证已通过` 或 `### ✅ 无需人工校验`
|
|
17
|
+
|
|
18
|
+
保留人工校验项时,每条写明校验内容、定位和只能人工完成的原因。
|
|
25
19
|
|
|
26
|
-
|
|
27
|
-
- `plan.md` 或最新 `plan-r{N}.md`
|
|
28
|
-
- `code.md` 或最新 `code-r{N}.md`
|
|
29
|
-
- `review-code.md` 或最新 `review-code-r{N}.md`
|
|
30
|
-
- `manual-validation.md` 或最新 `manual-validation-r{N}.md`
|
|
31
|
-
|
|
32
|
-
聚合规则:
|
|
33
|
-
- 从 `plan*` 提取 2-4 条自包含的关键技术决策
|
|
34
|
-
- 用 `review-code*` 与 `code*` 构建审查历程表
|
|
35
|
-
- 从 `code*` 提取测试结果摘要
|
|
36
|
-
- 如果最新 `manual-validation*` 产物结论为通过,需人工校验段落优先渲染为 `### ✅ 人工验证已通过`,并摘要验证时间、验证范围和验证说明
|
|
37
|
-
- 某一类产物缺失时,按“无该阶段数据”处理并继续生成
|
|
38
|
-
- 需人工校验段落:只收进入 code 阶段后仍需人实际执行或判断、AI 无法自行关闭的校验点。
|
|
39
|
-
- **准入边界**:校验结论依赖真实环境、权限、账号、外部系统或人工判断,且无法通过 agent 重跑测试、补充检查或继续修复自行关闭。
|
|
40
|
-
- **来源**:`review-code*` 的「人工校验项」,以及 `code*` 中满足上述边界的校验点。
|
|
41
|
-
- **写法**:每条保留项至少写明「校验什么 + 定位(文件/改动/范围)+ 为什么只能由人校验」。
|
|
42
|
-
- **渲染优先级**:
|
|
43
|
-
1. 最新 `manual-validation*` 产物结论为通过 -> 标题 `### ✅ 人工验证已通过` + 验证摘要。
|
|
44
|
-
2. 没有通过产物且有保留项 -> 标题 `### ⚠️ 需人工校验` + 条目列表。
|
|
45
|
-
3. 没有通过产物且无保留项 -> 标题 `### ✅ 无需人工校验`,正文一行 `本次改动无需人工确认事项。`,不带条目列表。
|
|
46
|
-
|
|
47
|
-
## 评论体模板
|
|
48
|
-
|
|
49
|
-
评论正文使用以下唯一权威模板:
|
|
20
|
+
core 最终包装出的 canonical 评论结构为:
|
|
50
21
|
|
|
51
22
|
```markdown
|
|
52
23
|
<!-- sync-pr:{task-id}:summary -->
|
|
53
24
|
<!-- last-commit: {git-head-sha} -->
|
|
54
25
|
## 审查摘要
|
|
55
|
-
|
|
56
|
-
> **{agent}** · {task-id}
|
|
57
|
-
|
|
58
|
-
**更新时间**:{当前时间}
|
|
59
|
-
|
|
60
26
|
{manual-validation-section}
|
|
61
|
-
|
|
62
27
|
### 关键技术决策
|
|
63
|
-
|
|
64
|
-
- {decision-1}
|
|
65
|
-
- {decision-2}
|
|
66
|
-
|
|
67
28
|
### 审查历程
|
|
68
|
-
|
|
69
|
-
| 轮次 | 结论 | 问题统计 | 修复状态 |
|
|
70
|
-
|------|------|----------|----------|
|
|
71
|
-
| Round 1 | Pending | N/A | N/A |
|
|
72
|
-
|
|
73
29
|
### 测试结果
|
|
74
|
-
|
|
75
|
-
- {test-summary}
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
*由 {agent} 自动生成 · 内部追踪:{task-id}*
|
|
79
30
|
```
|
|
80
31
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## 评论查找与更新
|
|
84
|
-
|
|
85
|
-
已有评论必须通过 Issues comments API 获取,而不是单独的 PR comments API。
|
|
32
|
+
## 发布
|
|
86
33
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
处理顺序:
|
|
90
|
-
1. 获取 PR 上现有 comments,查找以 `<!-- sync-pr:{task-id}:summary -->` 开头的评论 ID
|
|
91
|
-
2. 渲染评论正文时,始终写入当前 `git rev-parse HEAD` 的结果到 `<!-- last-commit: {git-head-sha} -->`
|
|
92
|
-
3. 不存在时,POST 创建一条新评论作为兜底
|
|
93
|
-
4. 已存在且正文完全相同时,跳过写入
|
|
94
|
-
5. 已存在且正文有变化时,PATCH 原地更新
|
|
95
|
-
|
|
96
|
-
更新已有评论时,使用如下模式:
|
|
34
|
+
把聚合后的纯正文写入 `{summary-body-file}`,不要自行添加 marker 或 commit SHA:
|
|
97
35
|
|
|
98
36
|
```bash
|
|
99
|
-
|
|
100
|
-
{
|
|
101
|
-
EOF
|
|
102
|
-
)"
|
|
37
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
38
|
+
--agent {agent} --body-file {summary-body-file}
|
|
103
39
|
```
|
|
104
40
|
|
|
105
|
-
|
|
41
|
+
core 会包装唯一 `<!-- sync-pr:{task-id}:summary -->` 和当前 `<!-- last-commit: ... -->`,分页查找 PR 普通评论:不存在则创建、正文变化则原地更新、无差异则 no-op、重复 marker 则稳定失败。正文通过文件输入,调用方不得拼 shell/heredoc。
|
|
106
42
|
|
|
107
|
-
|
|
108
|
-
2. 禁止在 heredoc 中使用命令替换或变量展开。
|
|
109
|
-
3. 构造含 `<!-- -->` 的正文时禁止使用 `echo`,统一使用 `cat <<'EOF'` 或 `printf '%s\n'`。
|
|
43
|
+
## 结果回传
|
|
110
44
|
|
|
111
|
-
|
|
45
|
+
- `applied`:`summary created` 或 `summary updated`
|
|
46
|
+
- `no-op`:`summary skipped (no diff)`
|
|
47
|
+
- `failed|blocked`:`summary failed: {error.code}: {error.message}`
|
|
112
48
|
|
|
113
|
-
|
|
114
|
-
|--------|------|
|
|
115
|
-
| `task.md` 无法读取 | 跳过同步,交由后续 verification gate 报错 |
|
|
116
|
-
| 聚合输入缺失 | 记警告并按现有数据继续生成 |
|
|
117
|
-
| `gh api` GET/PATCH/POST 失败 | 输出警告并继续;是否阻塞当前 skill 由调用方决定 |
|
|
118
|
-
| `pr_number` 指向的 PR 不存在 | 输出 `PR #{pr-number} not found` 警告并继续 |
|
|
49
|
+
`create-pr` 中摘要失败不回滚已创建 PR;`commit` 中只记 warning,不回滚 commit;`complete-manual-validation` 在 canonical artifact 落盘后调用同一 intent 原地刷新。
|
|
119
50
|
|
|
120
|
-
|
|
51
|
+
关联任务的摘要失败由调用方登记结构化告警:
|
|
121
52
|
|
|
122
53
|
```bash
|
|
123
|
-
|
|
124
|
-
--
|
|
125
|
-
--
|
|
126
|
-
--action "修复 GitHub API / 网络问题后重跑触发 PR 摘要同步的 workflow 步骤"
|
|
54
|
+
agent-infra-internal task-warning {task-id} add --step {step} --severity WARNING \
|
|
55
|
+
--code COMMENT_SYNC_FAILED --target pr-summary --message "{reason}" \
|
|
56
|
+
--action "修复评论权限或平台连接后重跑当前步骤"
|
|
127
57
|
```
|
|
128
|
-
|
|
129
|
-
## 结果回传
|
|
130
|
-
|
|
131
|
-
统一回传以下结果之一,供调用方在 Activity Log 或用户输出中复用:
|
|
132
|
-
- `summary created`
|
|
133
|
-
- `summary updated`
|
|
134
|
-
- `summary skipped (no diff)`
|
|
135
|
-
- `summary failed: <reason>`
|
|
@@ -1,5 +1,45 @@
|
|
|
1
|
-
# PR
|
|
1
|
+
# PR 摘要同步
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
PR 摘要的语义聚合由模型完成;canonical 产物选择、marker、当前 HEAD、分页评论查找和 create/update/no-op 由 typed core 负责。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 聚合输入
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr summary-context {task-id}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
只使用返回的 canonical latest `plan*`、`review-plan*`、`code*`、`review-code*`、`manual-validation*`。模型据此生成 reviewer 摘要正文,至少包含:
|
|
12
|
+
|
|
13
|
+
- 变更摘要与实现范围
|
|
14
|
+
- 测试结果
|
|
15
|
+
- 审查历程与当前结论
|
|
16
|
+
- 人工校验三态:`### ⚠️ 需人工校验`、`### ✅ 人工验证已通过` 或 `### ✅ 无需人工校验`
|
|
17
|
+
|
|
18
|
+
保留人工校验项时,每条写明校验内容、定位和只能人工完成的原因。
|
|
19
|
+
|
|
20
|
+
## 发布
|
|
21
|
+
|
|
22
|
+
把聚合后的纯正文写入 `{summary-body-file}`,不要自行添加 marker 或 commit SHA:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
26
|
+
--agent {agent} --body-file {summary-body-file}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
core 会包装唯一 `<!-- sync-pr:{task-id}:summary -->` 和当前 `<!-- last-commit: ... -->`,分页查找 PR 普通评论:不存在则创建、正文变化则原地更新、无差异则 no-op、重复 marker 则稳定失败。正文通过文件输入,调用方不得拼 shell/heredoc。
|
|
30
|
+
|
|
31
|
+
## 结果回传
|
|
32
|
+
|
|
33
|
+
- `applied`:`summary created` 或 `summary updated`
|
|
34
|
+
- `no-op`:`summary skipped (no diff)`
|
|
35
|
+
- `failed|blocked`:`summary failed: {error.code}: {error.message}`
|
|
36
|
+
|
|
37
|
+
`create-pr` 中摘要失败不回滚已创建 PR;`commit` 中只记 warning,不回滚 commit;`complete-manual-validation` 在 canonical artifact 落盘后调用同一 intent 原地刷新。
|
|
38
|
+
|
|
39
|
+
关联任务的摘要失败由调用方登记结构化告警:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
agent-infra-internal task-warning {task-id} add --step {step} --severity WARNING \
|
|
43
|
+
--code COMMENT_SYNC_FAILED --target pr-summary --message "{reason}" \
|
|
44
|
+
--action "修复评论权限或平台连接后重跑当前步骤"
|
|
45
|
+
```
|
|
@@ -62,33 +62,37 @@ The single source of truth for disagreement state is the fixed `## 审查分歧
|
|
|
62
62
|
- `stage` ∈ `{analysis, plan, code}` (plus the reserved value `post-review-commit`, used only for post-review exemption rows).
|
|
63
63
|
- `status` legal enum: `open` / `accepted` / `adjusted` / `refuted` / `cannot-judge` / `confirmed` / `needs-human-decision` / `closed` / `human-decided`.
|
|
64
64
|
- **Terminal set (gate passes)**: `{confirmed, closed, human-decided}`; everything else is blocking.
|
|
65
|
-
- **
|
|
65
|
+
- **Same-round fix-and-close**: only when the reviewer fixes a `minor` finding during the current review round may `finding-review` move that row directly from `open` to `closed`. This transition does not increment `round`, and `evidence` must point to the fix in the current review artifact; it does not apply to `blocker` or `major` findings.
|
|
66
|
+
- **Severity is independent from advancement**: `blocker` / `major` / `minor` express impact only. Every formal finding blocks approval until terminal. After all writes, review verdicts, event counts, and next steps must be derived from `task-ledger stage-status --stage {stage}`.
|
|
67
|
+
- **Non-blocking advisories**: only future optimizations that do not affect the current artifact's completeness, correctness, or acceptance. Advisories stay in a separate report section and never enter this ledger, finding counts, or verdict; manual-validation remains a separate category.
|
|
68
|
+
- **Write responsibility**: callers submit structured intents only; they do not scan ids, assemble table rows, or decide mechanical transitions. `review-*` uses `agent-infra-internal task-ledger {task-id} finding-upsert|finding-review ...`; `*-task` uses `finding-respond ...`; `ai decide` applies human rulings atomically. The core validates and commits each intent through one task write.
|
|
66
69
|
- **Backward compatible**: when task.md has no such section the gate treats it as no open disagreements and passes.
|
|
67
70
|
|
|
68
71
|
### Executor-raised human-ruling rows
|
|
69
72
|
|
|
70
|
-
When an executor judges an item to be a key design decision that needs human ruling, it must write
|
|
73
|
+
When an executor judges an item to be a key design decision that needs human ruling, it must write a self-contained detail block per `.agents/rules/human-decision-context.md` into the artifact's `## 人工裁决待办` (Pending Human Decisions) section with a heading like `### HD-N:<title> [needs-human-decision]`, and upsert the matching `HD-` row in task.md `## Review Disagreement Ledger`:
|
|
71
74
|
|
|
72
75
|
```markdown
|
|
73
76
|
| HD-1 | plan | - | decision | needs-human-decision | plan.md#HD-1 |
|
|
74
77
|
```
|
|
75
78
|
|
|
76
|
-
- `id`: the `HD-N` number is **globally unique**.
|
|
79
|
+
- `id`: the `HD-N` number is **globally unique**. First run `agent-infra-internal task-ledger {task-id} decision-next-id` and read `entityId`; after writing the stable artifact heading, run `decision-upsert --id {HD-N} --stage {stage} --artifact {artifact}`. The model must not scan or allocate ids.
|
|
77
80
|
- `stage` is the stage where the decision arose: `analysis` / `plan` / `code`.
|
|
78
81
|
- `round` is `-` because this is not a review-finding handshake round.
|
|
79
82
|
- `severity` is always `decision`.
|
|
80
83
|
- `status` starts as `needs-human-decision`, so the existing gate blocks it.
|
|
81
84
|
- `evidence` points to the stable anchor `<artifact>#HD-N` (e.g. `plan-r2.md#HD-1`), not a drift-prone line number.
|
|
82
|
-
-
|
|
85
|
+
- A human records the ruling with `ai decide <task-ref> <ordinal|ledger-id> <decision>`; the command flips the target row to `human-decided` and points `evidence` to an independent `HDR-N` ruling record.
|
|
83
86
|
|
|
84
|
-
>
|
|
87
|
+
> Viewing, deciding, and typed verification share the `lib/task/ledger.ts` domain semantics.
|
|
85
88
|
|
|
86
89
|
## post-review commit gate (code stage only)
|
|
87
90
|
|
|
88
|
-
- `review-code` captures
|
|
89
|
-
- `commit` reads only the highest-round `review-code` artifact.
|
|
90
|
-
-
|
|
91
|
-
-
|
|
91
|
+
- `review-code` captures the review baseline `R` (diff base), full-worktree diff fingerprint `F`, and normalized snapshot tree `T`. An Approved clean snapshot may set `B=R`; an Approved snapshot with uncommitted changes clears or omits `B`.
|
|
92
|
+
- `commit` reads only the highest-round Approved `review-code` artifact. Before committing it requires `pre_head == R`, complete worktree tree `W == T`, and normalized staged tree `S == T`; any mismatch blocks before `git commit` and reports added, missing, and different paths for both comparisons.
|
|
93
|
+
- After a successful commit it sets `B=last_reviewed_commit=<new_head>`; B means only a reviewed snapshot anchored to a Git commit.
|
|
94
|
+
- The `complete-task` `post-review-commit` gate uses only B. When B is absent, malformed, or missing as a Git object, it reports `reviewed snapshot was not anchored` and never falls back to R.
|
|
95
|
+
- If new commits touch code / rule paths after B, the gate blocks and requires a fresh `review-code`.
|
|
92
96
|
- **Exemption**: append a ledger row `| PRC-1 | post-review-commit | - | - | human-decided | <ruling note> |` recording that a human explicitly allowed those commits without re-review.
|
|
93
97
|
|
|
94
98
|
## Gate behavior cheat sheet
|
|
@@ -62,33 +62,37 @@
|
|
|
62
62
|
- `stage` ∈ `{analysis, plan, code}`(外加保留值 `post-review-commit`,仅用于 post-review 豁免行)。
|
|
63
63
|
- `status` 合法枚举:`open` / `accepted` / `adjusted` / `refuted` / `cannot-judge` / `confirmed` / `needs-human-decision` / `closed` / `human-decided`。
|
|
64
64
|
- **终态集合(gate 放行)**:`{confirmed, closed, human-decided}`;其余为阻塞态。
|
|
65
|
-
-
|
|
65
|
+
- **同轮 fix-and-close**:仅当检视方在当前审查轮当场修复 `minor` finding 时,可通过 `finding-review` 将该行从 `open` 直接置为 `closed`。此转换不增加 `round`,`evidence` 必须指向当前 review 产物中的修复证据;`blocker` / `major` 不适用。
|
|
66
|
+
- **severity 与推进解耦**:`blocker` / `major` / `minor` 只表示影响大小。任何正式 finding 只要尚未进入终态就阻止当前阶段通过;review 结论、事件计数与下一步必须在全部写入后通过 `task-ledger stage-status --stage {stage}` 从同一语义导出。
|
|
67
|
+
- **非阻塞 advisory**:仅限不影响当前产物完整性、正确性和验收的后续优化。advisory 只写入报告的独立段落,不进入本账本、不进入 finding 计数、不影响 verdict;manual-validation 仍是独立分类。
|
|
68
|
+
- **写入责任**:调用方只提交结构化意图,不扫描编号、不拼表格行、不自行判断机械状态迁移。`review-*` 用 `agent-infra-internal task-ledger {task-id} finding-upsert|finding-review ...`;`*-task` 用 `finding-respond ...`;人工裁决由 `ai decide` 原子完成。核心统一校验并通过一次任务写入提交。
|
|
66
69
|
- **向后兼容**:task.md 无此段时,gate 视为无未决分歧而放行。
|
|
67
70
|
|
|
68
71
|
### 执行方自提人工裁决行
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
当执行方判定某项为需人工裁定的关键设计决策时,必须按 `.agents/rules/human-decision-context.md` 把自足详情块写入产物的 `## 人工裁决待办` 段,标题形如 `### HD-N:<标题> [needs-human-decision]`,并在 task.md `## 审查分歧账本` upsert 对应 `HD-` 行:
|
|
71
74
|
|
|
72
75
|
```markdown
|
|
73
76
|
| HD-1 | plan | - | decision | needs-human-decision | plan.md#HD-1 |
|
|
74
77
|
```
|
|
75
78
|
|
|
76
|
-
- `id`:`HD-N`
|
|
79
|
+
- `id`:`HD-N` 编号**全局唯一**。先调用 `agent-infra-internal task-ledger {task-id} decision-next-id` 取得 `entityId`,产出稳定标题后调用 `decision-upsert --id {HD-N} --stage {stage} --artifact {artifact}`;不得由模型扫描或分配编号。
|
|
77
80
|
- `stage` 填该决策产生的阶段:`analysis` / `plan` / `code`。
|
|
78
81
|
- `round` 填 `-`,因为它不是 review finding 的握手轮次。
|
|
79
82
|
- `severity` 固定填 `decision`。
|
|
80
83
|
- `status` 初始填 `needs-human-decision`,因此会被现有 gate 阻塞。
|
|
81
84
|
- `evidence` 指向稳定锚点 `<artifact>#HD-N`(如 `plan-r2.md#HD-1`),不依赖易漂移的行号。
|
|
82
|
-
-
|
|
85
|
+
- 人工使用 `ai decide <task-ref> <序号|账本ID> <裁决内容>` 记录裁定;命令把目标行翻为 `human-decided`,并让 `evidence` 指向独立 `HDR-N` 裁定记录。
|
|
83
86
|
|
|
84
|
-
>
|
|
87
|
+
> 查看、裁决与 typed verification 共用 `lib/task/ledger.ts` 的领域语义。
|
|
85
88
|
|
|
86
89
|
## post-review commit 门禁(仅 code 阶段)
|
|
87
90
|
|
|
88
|
-
- `review-code`
|
|
89
|
-
- `commit` 只读取最高轮 `review-code`
|
|
90
|
-
-
|
|
91
|
-
-
|
|
91
|
+
- `review-code` 一次性捕获审查基线 `R`(diff base)、完整工作区差异指纹 `F` 与规范化快照树 `T`;Approved 且快照干净时可令 `B=R`,Approved 且含未提交差异时清除/不写 `B`。
|
|
92
|
+
- `commit` 只读取最高轮 Approved `review-code` 产物;提交前比较 `pre_head == R`、完整工作区树 `W == T`、规范化暂存树 `S == T`,任一失配都在 `git commit` 前阻断并报告两组 added/missing/different 路径。
|
|
93
|
+
- 成功提交后令 `B=last_reviewed_commit=<new_head>`;`B` 只表示已经落到 Git commit 的审查锚点。
|
|
94
|
+
- `complete-task` 的 `post-review-commit` gate 只使用 B;B 缺失、畸形或对象不存在时报告 `reviewed snapshot was not anchored`,不得回退 R。
|
|
95
|
+
- 若 B 之后代码 / 规则路径出现新提交,gate 会拦截,要求重新 `review-code`。
|
|
92
96
|
- **豁免**:在账本追加一行 `| PRC-1 | post-review-commit | - | - | human-decided | <裁定说明> |`,记录人工明确允许该批提交免复审。
|
|
93
97
|
|
|
94
98
|
## gate 行为速查
|
|
@@ -19,6 +19,13 @@ Map user intent to the corresponding workflow command:
|
|
|
19
19
|
- Before updating `agent_infra_version`, read `.agents/rules/version-stamp.md`
|
|
20
20
|
- Activity Log entries are append-only and must never overwrite history
|
|
21
21
|
|
|
22
|
+
## State Snapshot and Completion Verification Entrypoints
|
|
23
|
+
|
|
24
|
+
- Runtime skills that record git, task-directory, and task.md tail evidence must call `agent-infra-internal task-snapshot {task-id} --format text`; they must not resolve short ids, scan workspaces, or reconstruct the three observations themselves.
|
|
25
|
+
- Runtime skills that execute completion gates must call `agent-infra-internal task-verify {task-id} <verification-event> [--artifact <artifact>] --format text`; the typed verification catalog is the sole mapping from business event to skill, workspace, gate/check order, and artifact family.
|
|
26
|
+
- `task-verify` executes the typed catalog/check registry in-process; skills declare business events only.
|
|
27
|
+
- Both entrypoints are read-only. Verification exits remain `0=pass`, `1=fail`, and `2=blocked`; network or platform blocking must never be downgraded to success.
|
|
28
|
+
|
|
22
29
|
## Required State Updates by Command
|
|
23
30
|
|
|
24
31
|
- `create-task`: create `branch`, `workflow`, `status`, `created_at`, `updated_at`, `assigned_to`, `agent_infra_version`
|
|
@@ -40,9 +47,11 @@ Map user intent to the corresponding workflow command:
|
|
|
40
47
|
|
|
41
48
|
## Activity Log started / done dual-marker convention (single source of truth)
|
|
42
49
|
|
|
43
|
-
|
|
50
|
+
`analyze-task`, `review-analysis`, `plan-task`, `review-plan`, `code-task`, and `review-code` must declare business events through `agent-infra-internal task-event`. The event core generates `current_step`, `assigned_to`, `updated_at`, `agent_infra_version`, and the log text below. Other lifecycle skills not yet migrated continue to follow this textual protocol.
|
|
51
|
+
|
|
52
|
+
> This section is authoritative for skills, the renderer, and typed verification checks.
|
|
44
53
|
|
|
45
|
-
**Line grammar is unchanged
|
|
54
|
+
**Line grammar is unchanged** and shared by the log renderer and verification activity parser.
|
|
46
55
|
|
|
47
56
|
- **started line** (written when the step begins): the action suffixes the existing base with ` [started]`, note is `started`:
|
|
48
57
|
`- {time} — **{base} [started]** by {agent} — started`
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
- 更新 `agent_infra_version` 前,先读取 `.agents/rules/version-stamp.md`
|
|
20
20
|
- Activity Log 只能追加,不能覆盖历史记录
|
|
21
21
|
|
|
22
|
+
## 状态快照与完成验证入口
|
|
23
|
+
|
|
24
|
+
- 运行时 SKILL 需要记录 git、任务目录和 task.md tail 证据时,统一调用 `agent-infra-internal task-snapshot {task-id} --format text`;不得自行解析短号、扫描 workspace 或重新拼接三段状态命令。
|
|
25
|
+
- 运行时 SKILL 需要执行完成门禁时,统一调用 `agent-infra-internal task-verify {task-id} <verification-event> [--artifact <artifact>] --format text`;业务事件到 skill、workspace、gate/check 顺序和产物族的映射由 typed verification catalog 唯一维护。
|
|
26
|
+
- `task-verify` 在进程内执行 typed catalog/check registry;SKILL 只声明业务事件,不传 task-dir、skill 名或特殊 check 序列。
|
|
27
|
+
- 两个入口均保持只读;验证退出码固定为 `0=pass`、`1=fail`、`2=blocked`,网络或平台阻塞不得降格为成功。
|
|
28
|
+
|
|
22
29
|
## 常见命令的状态更新要求
|
|
23
30
|
|
|
24
31
|
- `create-task`:创建 `branch`、`workflow`、`status`、`created_at`、`updated_at`、`assigned_to`、`agent_infra_version`
|
|
@@ -40,12 +47,13 @@
|
|
|
40
47
|
|
|
41
48
|
## Activity Log started / done 双标记约定(单一事实源)
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
`analyze-task`、`review-analysis`、`plan-task`、`review-plan`、`code-task`、`review-code` 必须通过 `agent-infra-internal task-event` 声明业务事件;事件核心统一生成 `current_step`、`assigned_to`、`updated_at`、`agent_infra_version` 和下述日志文本。其余尚未迁移的生命周期 SKILL 继续遵循本节文本协议。
|
|
51
|
+
|
|
52
|
+
> 本节是 started/done 双标记的唯一权威定义。各 SKILL、渲染器与 typed verification check 都以本节为准。
|
|
45
53
|
|
|
46
54
|
**行语法不变**:started 与 done 都沿用既有条目语法
|
|
47
55
|
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **{action}** by {agent} — {note}`,因此解析正则
|
|
48
|
-
(`log.ts:ENTRY_RE` 与
|
|
56
|
+
(`log.ts:ENTRY_RE` 与 verification activity parser)无需改动。
|
|
49
57
|
|
|
50
58
|
- **started 行**(步骤开始时写):action 在既有基名末尾加后缀 ` [started]`,note 用 `started`:
|
|
51
59
|
`- {time} — **{基名} [started]** by {agent} — started`
|
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
# Task short id
|
|
2
2
|
|
|
3
3
|
Task short ids let mobile-style SKILL invocations replace the full 22-char
|
|
4
|
-
`TASK-YYYYMMDD-HHMMSS` with bare numeric `N`
|
|
5
|
-
task is active.
|
|
4
|
+
`TASK-YYYYMMDD-HHMMSS` with bare numeric `N` while a task is active.
|
|
6
5
|
|
|
7
6
|
## Syntax
|
|
8
7
|
|
|
9
|
-
-
|
|
10
|
-
- **Bare numeric `N`** (recommended; no shell quoting needed): e.g. `1`, `7`, `42`.
|
|
11
|
-
- **`#`-prefixed `#N` / `#NN`** (also accepted; bash needs `'...'` quoting): e.g. `#1`, `#01`, `#42`.
|
|
8
|
+
- Only **bare numeric `N`** is accepted (no shell quoting needed): e.g. `1`, `7`, `42`.
|
|
12
9
|
- Resolution: drop leading zeros and take the numeric value `n`; if `n == 0`,
|
|
13
10
|
reject (reserved); if `n > 10^shortIdLength - 1`, reject (over capacity);
|
|
14
|
-
otherwise canonicalize to
|
|
11
|
+
otherwise canonicalize to `${n.padStart(shortIdLength, '0')}` as the
|
|
15
12
|
registry key.
|
|
16
13
|
- With the default `shortIdLength=2`, capacity is `n ∈ [1, 99]`; registry keys
|
|
17
14
|
look like `01`, `07`, `42`.
|
|
18
|
-
-
|
|
15
|
+
- `00` (or `0` when `shortIdLength=1`) is reserved and never allocated; digits
|
|
19
16
|
only, no letters.
|
|
20
|
-
- The plain `TASK-…` form keeps working everywhere; bare numeric
|
|
21
|
-
|
|
17
|
+
- The plain `TASK-…` form keeps working everywhere; bare numeric is an alias,
|
|
18
|
+
not the persisted task id.
|
|
19
|
+
- Removed `#N` / `#NN` syntax is consistently rejected as an invalid task ref.
|
|
22
20
|
|
|
23
21
|
## Lifecycle
|
|
24
22
|
|
|
25
23
|
| Action | When | Effect on registry |
|
|
26
24
|
|------------|-----------------------------------------------------------------------|---------------------------------------------------------------|
|
|
27
|
-
| alloc | `create-task`, `import-issue`, `import-codescan`, `import-dependabot` | Assigns lowest free
|
|
28
|
-
| resolve | Lifecycle SKILLs (`analyze-task`, `plan-task`, `code-task`, …) | Looks up
|
|
25
|
+
| alloc | `create-task`, `import-issue`, `import-codescan`, `import-dependabot` | Assigns lowest free `NN` in the registry. |
|
|
26
|
+
| resolve | Lifecycle SKILLs (`analyze-task`, `plan-task`, `code-task`, …) | Looks up `NN` → full task id. Does not allocate. |
|
|
29
27
|
| release | `complete-task`, `cancel-task`, `block-task`, `close-codescan`, `close-dependabot` | Removes the registry entry. |
|
|
30
|
-
| re-alloc | `restore-task` | Re-allocates a (possibly new)
|
|
28
|
+
| re-alloc | `restore-task` | Re-allocates a (possibly new) `NN` in the registry. |
|
|
31
29
|
|
|
32
30
|
Short ids are valid only while a task lives in `.agents/workspace/active/`.
|
|
33
|
-
Once it is moved to `completed/`, `blocked/`, or `archive/`, the
|
|
31
|
+
Once it is moved to `completed/`, `blocked/`, or `archive/`, the `NN` slot is
|
|
34
32
|
freed and may be reused by a new task.
|
|
35
33
|
|
|
36
34
|
## Configuration
|
|
@@ -39,7 +37,7 @@ freed and may be reused by a new task.
|
|
|
39
37
|
// .agents/.airc.json
|
|
40
38
|
{
|
|
41
39
|
"task": {
|
|
42
|
-
"shortIdLength": 2 // default; capacity = 99 (
|
|
40
|
+
"shortIdLength": 2 // default; capacity = 99 (01–99). Set to 3 for 001–999.
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
```
|
|
@@ -49,12 +47,12 @@ error suggesting either archiving some tasks or raising `task.shortIdLength`.
|
|
|
49
47
|
There is no silent extension or truncation. Changing `shortIdLength` requires
|
|
50
48
|
archiving all active tasks first (the registry key width depends on it).
|
|
51
49
|
|
|
52
|
-
##
|
|
50
|
+
## Short-id resolution scope (split by entrypoint)
|
|
53
51
|
|
|
54
52
|
| Entrypoint | Hit | Miss |
|
|
55
53
|
|-------------------------------------------------------------|----------------------|------------------------------------------------------|
|
|
56
54
|
| SKILL parameter resolver (lifecycle SKILLs) | resolve to full id | **strict error** — short id not found / invalid |
|
|
57
|
-
| `ai sandbox exec <N
|
|
55
|
+
| `ai sandbox exec <N>` / `ai sandbox create <N>` | resolve to full id, then read `branch` from task.md | **strict error** — no ls-index fallback, no literal-branch fallback; hint the user to pass a short id / `TASK-id` / branch name |
|
|
58
56
|
|
|
59
57
|
`list --verify` is strictly read-only: it reports discrepancies between the
|
|
60
58
|
active dir and the registry, but never writes.
|
|
@@ -64,10 +62,10 @@ active dir and the registry, but never writes.
|
|
|
64
62
|
Any SKILL (alloc / resolve / release / re-alloc lifecycle entry-points) that
|
|
65
63
|
receives a `{task-id}` argument must follow this contract:
|
|
66
64
|
|
|
67
|
-
1. If `{task-id}` matches `^[
|
|
65
|
+
1. If `{task-id}` matches `^[0-9]+$` (bare numeric `N`):
|
|
68
66
|
|
|
69
67
|
```bash
|
|
70
|
-
if [[ "{task-id}" =~ ^[
|
|
68
|
+
if [[ "{task-id}" =~ ^[0-9]+$ ]]; then
|
|
71
69
|
# The script writes the full error message (covering reserved / exceeds
|
|
72
70
|
# shortIdLength capacity / malformed input) to stderr; callers only forward
|
|
73
71
|
# the exit.
|
|
@@ -102,7 +100,7 @@ Short ids are pure local state, persisted only in the registry
|
|
|
102
100
|
registry entry is deleted immediately and the short id may be reused; archived
|
|
103
101
|
tasks are referenced by their full `TASK-…` id.
|
|
104
102
|
|
|
105
|
-
`resolve(<N
|
|
103
|
+
`resolve(<N>)` workflow: ① validate arg matches `^[0-9]+$` →
|
|
106
104
|
② strip leading zeros and take the numeric value `n`; classify as reserved
|
|
107
105
|
(`n == 0`) / over capacity (`n > 10^shortIdLength - 1`) / normal → ③ on
|
|
108
106
|
normal, use `n.padStart(shortIdLength, '0')` as the registry `ids` key
|
|
@@ -116,18 +114,16 @@ repair hint.
|
|
|
116
114
|
wrong. Exit code 1.
|
|
117
115
|
- **Registry corruption** (duplicate registry entries for the same task id, or
|
|
118
116
|
the JSON is unparsable): exit code 2; manual cleanup required.
|
|
119
|
-
- **Reserved key**: the resolved `n == 0` (inputs like `0`,
|
|
117
|
+
- **Reserved key**: the resolved `n == 0` (inputs like `0`, `00`). Exit code 1.
|
|
120
118
|
- **Over capacity**: the resolved `n > 10^shortIdLength - 1` (e.g. `100` or
|
|
121
|
-
|
|
122
|
-
- **Parameter format error**: input matches neither `^[
|
|
123
|
-
`TASK-id` (e.g. `#abc`, `#`, `5.5`). Exit code 1.
|
|
119
|
+
`100` when `shortIdLength=2`). Exit code 1.
|
|
120
|
+
- **Parameter format error**: input matches neither `^[0-9]+$` nor a
|
|
121
|
+
`TASK-id` (e.g. `#1`, `#abc`, `#`, `5.5`). Exit code 1.
|
|
124
122
|
|
|
125
|
-
## Cross-TUI
|
|
123
|
+
## Cross-TUI use
|
|
126
124
|
|
|
127
|
-
Bare numeric `N` is safe in every shell and TUI without quoting
|
|
125
|
+
Bare numeric `N` is safe in every shell and TUI without quoting:
|
|
128
126
|
`ai sandbox exec 11 'npm test'`, `/review-analysis 11`.
|
|
129
127
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Claude Code / Codex / Gemini CLI / OpenCode all forward `#NN` to SKILL
|
|
133
|
-
`ARGUMENTS` literally when quoted.
|
|
128
|
+
Starting with the next major version, migrate the old `#NN` form to `NN`;
|
|
129
|
+
even a quoted value delivered intact to the CLI is rejected.
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
# 任务短号
|
|
2
2
|
|
|
3
|
-
短号让所有 SKILL 在 active
|
|
3
|
+
短号让所有 SKILL 在 active 任务生命周期内可以用裸数字 `N` 替代
|
|
4
4
|
完整的 22 字符 `TASK-YYYYMMDD-HHMMSS`。
|
|
5
5
|
|
|
6
6
|
## 语法
|
|
7
7
|
|
|
8
|
-
-
|
|
9
|
-
- **裸数字 `N`**(推荐,无需 shell 引号):如 `1`、`7`、`42`。
|
|
10
|
-
- **`#`-前缀 `#N` / `#NN`**(也接受;但 bash 需 `'...'` 引号):如 `#1`、`#01`、`#42`。
|
|
8
|
+
- 只接受**裸数字 `N`**(无需 shell 引号):如 `1`、`7`、`42`。
|
|
11
9
|
- 解析规则:去前导零后取数值 `n`,若 `n == 0` 报错(保留);若 `n > 10^shortIdLength - 1`
|
|
12
|
-
报错(超容量);否则归一化为
|
|
10
|
+
报错(超容量);否则归一化为 `${n.padStart(shortIdLength, '0')}`,作为注册表 key。
|
|
13
11
|
- 默认 `shortIdLength=2` 时容量 `n ∈ [1, 99]`,注册表 key 形如 `01`、`07`、`42`。
|
|
14
|
-
-
|
|
15
|
-
- 完整 `TASK-…`
|
|
12
|
+
- `00`(或 `shortIdLength=1` 时 `0`)保留、永不分配;纯数字、不引入字母。
|
|
13
|
+
- 完整 `TASK-…` 入参在所有路径下行为与现状等价;裸数字只是别名,不是持久化任务 ID。
|
|
14
|
+
- 已移除的 `#N` / `#NN` 语法作为无效任务引用稳定拒绝。
|
|
16
15
|
|
|
17
16
|
## 生命周期
|
|
18
17
|
|
|
19
18
|
| 动作 | 触发时机 | 注册表效应 |
|
|
20
19
|
|-----------|---------------------------------------------------------------------------------------------|------------------------------------------------------------------|
|
|
21
|
-
| alloc | `create-task`、`import-issue`、`import-codescan`、`import-dependabot` | 分配最小可用
|
|
22
|
-
| resolve | 生命周期 SKILL(`analyze-task` / `plan-task` / `code-task` / `review-*` / `commit` / …) |
|
|
20
|
+
| alloc | `create-task`、`import-issue`、`import-codescan`、`import-dependabot` | 分配最小可用 `NN`,写入注册表。 |
|
|
21
|
+
| resolve | 生命周期 SKILL(`analyze-task` / `plan-task` / `code-task` / `review-*` / `commit` / …) | `NN` → 完整 task id 查询,不分配。 |
|
|
23
22
|
| release | `complete-task`、`cancel-task`、`block-task`、`close-codescan`、`close-dependabot` | 从注册表移除。 |
|
|
24
23
|
| re-alloc | `restore-task` | 重新分配(可能与历史不同),写入注册表。 |
|
|
25
24
|
|
|
@@ -32,7 +31,7 @@
|
|
|
32
31
|
// .agents/.airc.json
|
|
33
32
|
{
|
|
34
33
|
"task": {
|
|
35
|
-
"shortIdLength": 2 // 默认;容量 = 99
|
|
34
|
+
"shortIdLength": 2 // 默认;容量 = 99(01–99)。改为 3 时容量 = 001–999。
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
```
|
|
@@ -41,12 +40,12 @@
|
|
|
41
40
|
`task.shortIdLength`」两种修复路径;不静默扩位、不静默截断。
|
|
42
41
|
切换 `shortIdLength` 配置需要先归档所有 active 任务(注册表 key 宽度依赖配置)。
|
|
43
42
|
|
|
44
|
-
##
|
|
43
|
+
## 短号解析作用域(按入口二分)
|
|
45
44
|
|
|
46
45
|
| 入口 | 注册表命中 | 注册表未命中 |
|
|
47
46
|
|-----------------------------------------------------------|----------------------|--------------------------------------------------------|
|
|
48
47
|
| SKILL 入参解析器(生命周期 SKILL) | 解析为完整 task id | **严格报错** —— 短号不存在 / 格式错误 |
|
|
49
|
-
| `ai sandbox exec <N
|
|
48
|
+
| `ai sandbox exec <N>` / `ai sandbox create <N>` | 解析为完整 task id 后查 task.md 取 `branch` | **严格报错** —— 不再回退到 ls 行号或字面分支名;提示用任务短号 / `TASK-id` / 分支名 |
|
|
50
49
|
|
|
51
50
|
`list --verify` 严格只读:报告 active 目录 / 注册表 两者差异,但不修改任何状态。
|
|
52
51
|
|
|
@@ -55,10 +54,10 @@
|
|
|
55
54
|
任意 SKILL(含 alloc / resolve / release / re-alloc 四类生命周期入口)在收到
|
|
56
55
|
`{task-id}` 入参后,必须按以下契约处理:
|
|
57
56
|
|
|
58
|
-
1. 如果 `{task-id}` 字面匹配 `^[
|
|
57
|
+
1. 如果 `{task-id}` 字面匹配 `^[0-9]+$`(裸数字 `N`):
|
|
59
58
|
|
|
60
59
|
```bash
|
|
61
|
-
if [[ "{task-id}" =~ ^[
|
|
60
|
+
if [[ "{task-id}" =~ ^[0-9]+$ ]]; then
|
|
62
61
|
# 脚本本身已输出完整错误(含 reserved / exceeds shortIdLength capacity 等场景);
|
|
63
62
|
# 调用方只需透传退出码
|
|
64
63
|
task_id=$(node .agents/scripts/task-short-id.js resolve "{task-id}") || exit 1
|
|
@@ -82,7 +81,7 @@ fi
|
|
|
82
81
|
- 短号只由显式 `alloc`(`create-task` / `import-*` / `restore-task`)分配;`resolve` / `list` / `release` 不分配,仅在执行时自动清理指向非 active 任务的 stale entry
|
|
83
82
|
- 归档(complete-task / cancel-task / block-task / close-*)后注册表 entry 立即删除,短号可被新任务复用;归档后引用任务一律用完整 `TASK-…` id
|
|
84
83
|
|
|
85
|
-
`resolve(<N
|
|
84
|
+
`resolve(<N>)` 工作流:① 校验入参匹配 `^[0-9]+$` → ② 去前导零取
|
|
86
85
|
数值 `n`,按 `n` 是否 `== 0`(保留)/ `> 10^shortIdLength - 1`(超容量)/
|
|
87
86
|
正常 三类处理 → ③ 正常时以 `n.padStart(shortIdLength, '0')` 作为 key 查
|
|
88
87
|
注册表 `ids` → ④ 命中返回完整 task id,未命中按 `list --verify` 给出修复指引退出 1。
|
|
@@ -91,15 +90,13 @@ fi
|
|
|
91
90
|
|
|
92
91
|
- **短号不存在**:注册表中无对应 key。可能是任务已归档(短号已释放)或输入错误。退出码 1。
|
|
93
92
|
- **注册表损坏**(同一 taskId 出现多次或 JSON 无法解析):退出码 2,需人工处理。
|
|
94
|
-
- **保留键**:解析后 `n == 0`(输入如 `0
|
|
95
|
-
- **超容量**:解析后 `n > 10^shortIdLength - 1`(如 `shortIdLength=2` 下 `100
|
|
96
|
-
- **参数格式错误**:入参既不是 `^[
|
|
93
|
+
- **保留键**:解析后 `n == 0`(输入如 `0`、`00`)。退出码 1。
|
|
94
|
+
- **超容量**:解析后 `n > 10^shortIdLength - 1`(如 `shortIdLength=2` 下 `100`)。退出码 1。
|
|
95
|
+
- **参数格式错误**:入参既不是 `^[0-9]+$` 也不是 `TASK-id`(如 `#1`、`#abc`、`#`、`5.5`)。退出码 1。
|
|
97
96
|
|
|
98
|
-
## 跨 TUI
|
|
97
|
+
## 跨 TUI 使用
|
|
99
98
|
|
|
100
|
-
裸数字 `N` 在所有 shell 与 TUI
|
|
99
|
+
裸数字 `N` 在所有 shell 与 TUI 中都安全无需引号:
|
|
101
100
|
`ai sandbox exec 11 'npm test'`、`/review-analysis 11`。
|
|
102
101
|
|
|
103
|
-
|
|
104
|
-
`ai sandbox exec '#03' 'npm test'`。Claude Code / Codex / Gemini CLI / OpenCode
|
|
105
|
-
在加引号时都能把 `#NN` 字面传递到 SKILL 的 `ARGUMENTS`。
|
|
102
|
+
从下一个大版本起,原 `#NN` 写法必须迁移为 `NN`;即使引用后完整传入 CLI 也会被拒绝。
|