@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
|
@@ -11,7 +11,7 @@ This file defines four **independent** rules for a skill's "notify-user / Next s
|
|
|
11
11
|
|
|
12
12
|
| Placeholder | Meaning | Rendered form |
|
|
13
13
|
|-------------|---------|---------------|
|
|
14
|
-
| `{task-ref}` | Current task **short id** |
|
|
14
|
+
| `{task-ref}` | Current task **short id** | Zero-padded bare digits, e.g. `15`; falls back to the full `TASK-id` when unavailable |
|
|
15
15
|
| `{task-id}` | Current task **full id** | `TASK-YYYYMMDD-HHMMSS` |
|
|
16
16
|
|
|
17
17
|
## Scope
|
|
@@ -24,7 +24,7 @@ This file defines four **independent** rules for a skill's "notify-user / Next s
|
|
|
24
24
|
|
|
25
25
|
The single source of truth for short ids is the registry `.agents/workspace/active/.short-ids.json` (via `task-short-id.js`). **Never** read the `short_id` field from task.md frontmatter (that field is not authoritative).
|
|
26
26
|
|
|
27
|
-
Once the full `$task_id` is resolved, use the snippet below to look up the short id; it returns
|
|
27
|
+
Once the full `$task_id` is resolved, use the snippet below to look up the short id; it returns bare `NN` on hit and falls back to the full `TASK-id` on miss:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
task_ref=$(node -e '
|
|
@@ -33,9 +33,9 @@ const out=cp.execSync("node .agents/scripts/task-short-id.js list",{encoding:"ut
|
|
|
33
33
|
const ids=(JSON.parse(out).ids)||{};
|
|
34
34
|
const full=process.argv[1];
|
|
35
35
|
const hit=Object.entries(ids).find(([,v])=>v===full);
|
|
36
|
-
process.stdout.write(hit?
|
|
36
|
+
process.stdout.write(hit?hit[0]:full);
|
|
37
37
|
' "$task_id")
|
|
38
|
-
# Example: $task_id=TASK-20260613-225809 -> task_ref
|
|
38
|
+
# Example: $task_id=TASK-20260613-225809 -> task_ref=15
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
## Fallback conditions
|
|
@@ -47,9 +47,9 @@ process.stdout.write(hit?("#"+hit[0]):full);
|
|
|
47
47
|
|
|
48
48
|
`restore-task` re-allocates a short id when restoring a task (possibly different from before); the snippet picks up the new short id.
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## Bare digits and shell safety
|
|
51
51
|
|
|
52
|
-
Short ids are always rendered
|
|
52
|
+
Short ids are always rendered as zero-padded bare digits `NN`. The removed `#NN` syntax must neither be generated nor accepted, avoiding bash comment interpretation.
|
|
53
53
|
|
|
54
54
|
## Agent output trailing line (Completed at)
|
|
55
55
|
|
|
@@ -83,7 +83,7 @@ This section is a **third standalone rule, co-equal with the two above**, used o
|
|
|
83
83
|
`{h}` has the same meaning as the count line in each review skill's `reference/output-templates.md`: the number of rows in task.md `## 审查分歧账本` (Review Disagreement Ledger) for **this stage** (`stage ∈ {analysis|plan|code}`) whose `status = needs-human-decision` — **pending items only, excluding rows already `human-decided`**.
|
|
84
84
|
|
|
85
85
|
- **`{h} = 0`**: do not emit this block; render "Next steps" exactly as the selected output-templates scenario.
|
|
86
|
-
- **`{h} > 0`**: insert the block below **before** the selected scenario's "Next steps - <stage>" commands
|
|
86
|
+
- **`{h} > 0`**: insert the block below **before** the selected scenario's "Next steps - <stage>" commands. This round may list only current-artifact revision and re-review commands, never cross-stage commands.
|
|
87
87
|
|
|
88
88
|
```text
|
|
89
89
|
⚠️ Pending human decisions ({h}) — please rule on each before continuing to the next stage:
|
|
@@ -93,13 +93,14 @@ This section is a **third standalone rule, co-equal with the two above**, used o
|
|
|
93
93
|
|
|
94
94
|
View details:
|
|
95
95
|
- All pending decisions: ai task decisions {task-ref}
|
|
96
|
-
- A single item's full background/options/impact/recommendation: ai task decisions {task-ref} <ordinal|
|
|
96
|
+
- A single item's full background/options/impact/recommendation: ai task decisions {task-ref} <ordinal|ledger-id>
|
|
97
97
|
|
|
98
98
|
To resolve:
|
|
99
|
-
|
|
100
|
-
2. Flip the status of the matching row in `## 审查分歧账本` from `needs-human-decision` to `human-decided`.
|
|
99
|
+
- ai decide {task-ref} <ordinal|ledger-id> <decision and rationale>
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
This command atomically creates the `HDR-N` ruling record, flips the target ledger row to `human-decided`, and updates evidence and the activity log; do not manually edit only part of the transaction.
|
|
102
|
+
|
|
103
|
+
Note: until all those rows are flipped to `human-decided`, the stage gate blocks advancement (`needs-human-decision` is non-terminal). After the decisions, rerun the current review and let its new `stage-status` decide whether next-stage commands may be shown.
|
|
103
104
|
```
|
|
104
105
|
|
|
105
106
|
Field values: `{ledger-id}` / `{stage}` / `{severity}` / `{evidence}` come from the same-named columns of the matching `## 审查分歧账本` row; `{summary}` comes from the artifact anchor referenced by `{evidence}` (e.g. the decision title at `plan.md#HD-1`), falling back to a one-line summary of the finding when no anchor title exists.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
| 占位符 | 含义 | 渲染形态 |
|
|
13
13
|
|--------|------|----------|
|
|
14
|
-
| `{task-ref}` | 当前任务**短号** |
|
|
14
|
+
| `{task-ref}` | 当前任务**短号** | 零填充裸数字,如 `15`;取不到时回退完整 `TASK-id` |
|
|
15
15
|
| `{task-id}` | 当前任务**完整 ID** | `TASK-YYYYMMDD-HHMMSS` |
|
|
16
16
|
|
|
17
17
|
## 适用范围
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
短号唯一真源是注册表 `.agents/workspace/active/.short-ids.json`(经 `task-short-id.js`)。**禁止**读取 task.md frontmatter 的 `short_id` 字段(该字段不可信)。
|
|
26
26
|
|
|
27
|
-
在已解析出完整 `$task_id`
|
|
27
|
+
在已解析出完整 `$task_id` 后,用以下片段反查短号;命中返回裸数字 `NN`,未命中自动回退完整 `TASK-id`:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
task_ref=$(node -e '
|
|
@@ -33,9 +33,9 @@ const out=cp.execSync("node .agents/scripts/task-short-id.js list",{encoding:"ut
|
|
|
33
33
|
const ids=(JSON.parse(out).ids)||{};
|
|
34
34
|
const full=process.argv[1];
|
|
35
35
|
const hit=Object.entries(ids).find(([,v])=>v===full);
|
|
36
|
-
process.stdout.write(hit?
|
|
36
|
+
process.stdout.write(hit?hit[0]:full);
|
|
37
37
|
' "$task_id")
|
|
38
|
-
# 示例:$task_id=TASK-20260613-225809 -> task_ref
|
|
38
|
+
# 示例:$task_id=TASK-20260613-225809 -> task_ref=15
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
## 回退条件
|
|
@@ -47,9 +47,9 @@ process.stdout.write(hit?("#"+hit[0]):full);
|
|
|
47
47
|
|
|
48
48
|
`restore-task` 恢复任务时会重新分配短号(可能与历史不同),片段会取到新短号。
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## 裸数字与 shell 安全
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
短号统一渲染为零填充裸数字 `NN`。已移除的 `#NN` 语法不得生成或接受,避免 bash 将其解释为注释。
|
|
53
53
|
|
|
54
54
|
## Agent 输出收尾行(Completed at)
|
|
55
55
|
|
|
@@ -83,7 +83,7 @@ Completed at: YYYY-MM-DD HH:mm:ss
|
|
|
83
83
|
`{h}` 含义与各 review 技能 `reference/output-templates.md` 计数行一致:task.md `## 审查分歧账本` 中**本阶段**(`stage ∈ {analysis|plan|code}`)`status = needs-human-decision` 的行数——**只含待裁决项,不含已 `human-decided`**。
|
|
84
84
|
|
|
85
85
|
- **`{h} = 0`**:不输出本块,「下一步」按 output-templates 选定场景原样渲染。
|
|
86
|
-
- **`{h} > 0`**:在选定场景的「下一步 -
|
|
86
|
+
- **`{h} > 0`**:在选定场景的「下一步 - <阶段>」命令**之前**插入下面的块;本轮只能列当前产物的修订与复审路径,不得列跨阶段命令。
|
|
87
87
|
|
|
88
88
|
```text
|
|
89
89
|
⚠️ 待人工裁决({h} 项)—— 请先逐项裁决,再继续下一阶段:
|
|
@@ -93,13 +93,14 @@ Completed at: YYYY-MM-DD HH:mm:ss
|
|
|
93
93
|
|
|
94
94
|
查看详情:
|
|
95
95
|
- 全部待裁决项:ai task decisions {task-ref}
|
|
96
|
-
- 单项完整背景/选项/影响/建议:ai task decisions {task-ref}
|
|
96
|
+
- 单项完整背景/选项/影响/建议:ai task decisions {task-ref} <序号|账本ID>
|
|
97
97
|
|
|
98
98
|
完成裁决:
|
|
99
|
-
|
|
100
|
-
2. 把 `## 审查分歧账本` 中对应行的 status 由 `needs-human-decision` 翻为 `human-decided`。
|
|
99
|
+
- ai decide {task-ref} <序号|账本ID> <裁决内容与理由>
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
该命令原子写入 `HDR-N` 裁定记录、把目标账本行翻为 `human-decided`、更新 evidence 与活动日志;不要手工只修改其中一部分。
|
|
102
|
+
|
|
103
|
+
说明:在上述行全部翻为 `human-decided` 之前,阶段 gate 会拦截推进(`needs-human-decision` 为非终态);裁决完成后重新执行当前 review,由新的 `stage-status` 结果决定是否展示下一阶段命令。
|
|
103
104
|
```
|
|
104
105
|
|
|
105
106
|
字段取值:`{ledger-id}` / `{stage}` / `{severity}` / `{evidence}` 直接取自 `## 审查分歧账本` 对应行的同名列;`{摘要}` 取自 `{evidence}` 指向的产物锚点条目(如 `plan.md#HD-1` 的决策标题),无锚点标题时用该 finding 的一句话概述。
|
|
@@ -57,8 +57,8 @@ For every SKILL execution context not covered by any exemption above, the defaul
|
|
|
57
57
|
|
|
58
58
|
When an open question is a key design decision that needs human judgment, the executor must:
|
|
59
59
|
|
|
60
|
-
1. Write
|
|
61
|
-
2.
|
|
60
|
+
1. 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]`; ordinary assumptions / open questions still go under `## Assumptions` / `## Open Questions` (`## 假设` / `## 未决问题`), and `## Open Questions` may keep a one-line pointer to the matching `### HD-N`.
|
|
61
|
+
2. Run `agent-infra-internal task-ledger {task-id} decision-next-id` to obtain the globally unique `HD-N`; after writing the detail block, run `decision-upsert --id {HD-N} --stage {stage} --artifact {artifact}`. The core writes the task.md ledger row and validates its evidence anchor; the model must not scan ids or assemble table rows.
|
|
62
62
|
|
|
63
63
|
Use these checks together:
|
|
64
64
|
|
|
@@ -76,7 +76,7 @@ A mandatory human review checkpoint means:
|
|
|
76
76
|
- Stop after producing the artifact: once the skill finishes an artifact such as `plan.md`, end the current invocation and wait for the user to explicitly trigger the next skill command
|
|
77
77
|
- Do not pause mid-process to ask for input: do not insert interruptions such as "Do you prefer option A or B?" between execution steps
|
|
78
78
|
|
|
79
|
-
If a key decision needs human judgment during execution, follow the
|
|
79
|
+
If a key decision needs human judgment during execution, follow the rule above and register the detail identity through the structured `decision-next-id` / `decision-upsert` commands for the user to address at the review checkpoint; ordinary open questions still go to `## Open Questions` / `未决问题`.
|
|
80
80
|
|
|
81
81
|
## Anchor Location
|
|
82
82
|
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
|
|
58
58
|
当未决问题属于需要人工裁定的关键设计决策时,执行方必须:
|
|
59
59
|
|
|
60
|
-
1.
|
|
61
|
-
2.
|
|
60
|
+
1. 按 `.agents/rules/human-decision-context.md` 写出自足的详情块,放入产物的 `## 人工裁决待办` 段,标题形如 `### HD-N:<标题> [needs-human-decision]`;普通假设 / 未决问题仍分别写 `## 假设` / `## 未决问题`(`## Assumptions` / `## Open Questions`),`## 未决问题` 可保留一行指针指向对应 `### HD-N`。
|
|
61
|
+
2. 先调用 `agent-infra-internal task-ledger {task-id} decision-next-id` 取得全局唯一 `HD-N`,写出详情块后调用 `decision-upsert --id {HD-N} --stage {stage} --artifact {artifact}`;由核心写入 task.md 账本并校验证据锚点,模型不得扫描编号或拼表格行。
|
|
62
62
|
|
|
63
63
|
判定时同时使用以下检查:
|
|
64
64
|
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
- **产出后停止**:技能完成产物(如 `plan.md`)后立即结束本轮调用,等待用户主动触发下一个技能命令
|
|
77
77
|
- **不是过程中暂停征求意见**:不允许在执行步骤之间插入「请问您倾向 A 还是 B?」之类的中断
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
如果在执行过程中发现需要用户裁定的关键决策,按上文「关键设计决策标记与落账」处理:通过 `decision-next-id` / `decision-upsert` 结构化命令登记详情块与账本身份,由用户在审查检查点统一回应;普通未决问题仍写 `## 未决问题` / `Open Questions`。
|
|
80
80
|
|
|
81
81
|
## 锚点位置
|
|
82
82
|
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Required-checks Platform Intents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Typed intents own required-only selection, polling deadlines, run/job resolution, and log retrieval. The skill/model owns failure classification, root-cause analysis, minimum fixes, tests, and authorized commit/push actions.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```bash
|
|
6
|
+
agent-infra-internal platform-checks inspect {task-id}
|
|
7
|
+
|
|
8
|
+
agent-infra-internal platform-checks watch {task-id} \
|
|
9
|
+
--interval-seconds 30 --deadline-seconds 1800
|
|
10
|
+
|
|
11
|
+
agent-infra-internal platform-checks resolve-run {task-id} \
|
|
12
|
+
--check-name {check-name} [--details-url {details-url}]
|
|
13
|
+
|
|
14
|
+
agent-infra-internal platform-checks logs {task-id} \
|
|
15
|
+
--run {run-id} [--job {job-id}]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`checks.state` is `passed|failed|pending|timed-out|cancelled|no-required`. Green/no-required exits 0; definite failure/cancellation exits 1; pending, timeout, or network blocking exits 2. Each platform adapter validates its own dependencies before operations and preserves dependency or deterministic platform errors without compatibility degradation. Run resolution prefers a validated details URL and otherwise requires one exact PR-head/check-name match. Platform intents never edit business code or push.
|
|
@@ -1,62 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Required-checks Platform Intents
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Current Branch PR / Repository Info
|
|
3
|
+
The GitHub adapter requires `gh >= 2.16.0`. Platform context checks this dependency before any GitHub API, PR, or checks operation. Projects that do not select GitHub neither probe nor depend on `gh`.
|
|
6
4
|
|
|
7
5
|
```bash
|
|
8
|
-
|
|
9
|
-
gh pr view {pr#} --json headRefOid -q .headRefOid # PR head SHA
|
|
10
|
-
gh repo view --json nameWithOwner -q .nameWithOwner # {owner}/{repo}
|
|
11
|
-
```
|
|
6
|
+
agent-infra-internal platform-checks inspect {task-id}
|
|
12
7
|
|
|
13
|
-
|
|
8
|
+
agent-infra-internal platform-checks watch {task-id} \
|
|
9
|
+
--interval-seconds 30 --deadline-seconds 1800
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
agent-infra-internal platform-checks resolve-run {task-id} \
|
|
12
|
+
--check-name {check-name} [--details-url {details-url}]
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
--json name,bucket,link,workflow
|
|
14
|
+
agent-infra-internal platform-checks logs {task-id} \
|
|
15
|
+
--run {run-id} [--job {job-id}]
|
|
20
16
|
```
|
|
21
17
|
|
|
22
|
-
-
|
|
23
|
-
- `--watch`: block until those checks finish; `--fail-fast`: exit watch on the first failure.
|
|
24
|
-
- `-i 30`: poll every 30 seconds (backoff). **Overall time cap default 30 minutes (1800 seconds)**: use the timeout mechanism that matches the execution environment; on timeout, treat as "pending" (exit code 8).
|
|
25
|
-
- POSIX shell: `timeout 1800 gh pr checks {pr#} --required --watch --fail-fast -i 30 …`
|
|
26
|
-
- PowerShell (Windows): use a job timeout —
|
|
27
|
-
```powershell
|
|
28
|
-
$job = Start-Job { gh pr checks {pr#} --required --watch --fail-fast -i 30 }
|
|
29
|
-
if (Wait-Job $job -Timeout 1800) { Receive-Job $job } else { Stop-Job $job; <treat as "pending"> }
|
|
30
|
-
```
|
|
31
|
-
- Platform-neutral fallback (no external timeout tool): record the start time, loop `gh pr checks {pr#} --required --json name,bucket,link,workflow` **without** `--watch`, sleeping `-i` seconds each round and checking whether any `bucket` is still `pending`; if the elapsed time reaches 1800 seconds without finishing, exit the loop and treat as "pending".
|
|
32
|
-
- The `bucket` field of `--json` classifies each check as `pass` / `fail` / `pending` / `skipping` / `cancel`.
|
|
33
|
-
|
|
34
|
-
Exit code semantics:
|
|
35
|
-
|
|
36
|
-
| Exit code | Meaning | Outcome class |
|
|
37
|
-
|-----------|---------|---------------|
|
|
38
|
-
| 0 | all required checks passed | all green |
|
|
39
|
-
| 1 | at least one failed / errored | failure |
|
|
40
|
-
| 8 | still pending (watch timed out or was cut off by `timeout`) | pending |
|
|
41
|
-
|
|
42
|
-
Old `gh` (< 2.93) without `--required`: fall back to `gh pr checks {pr#} --watch --fail-fast` (i.e. "all checks must succeed"), and note this degradation in the help/report and suggest upgrading `gh`.
|
|
43
|
-
|
|
44
|
-
## Resolve a Failing Run id and Pull Logs
|
|
45
|
-
|
|
46
|
-
`gh pr checks --json` does not return a run id directly, but it returns each failing check's `link` (a URL to the run/job). Resolve in this deterministic order:
|
|
47
|
-
|
|
48
|
-
1. Extract from the failing check's `link` via regex: `https://github.com/{owner}/{repo}/actions/runs/(\d+)(?:/job/(\d+))?` → group 1 is the run id (optional group 2 is the job id).
|
|
49
|
-
2. When `link` is not a run URL or cannot be parsed, query check-runs by head SHA:
|
|
50
|
-
```bash
|
|
51
|
-
sha=$(gh pr view {pr#} --json headRefOid -q .headRefOid)
|
|
52
|
-
gh api "repos/{owner}/{repo}/commits/$sha/check-runs" \
|
|
53
|
-
--jq '.check_runs[] | select(.name=="{failed-check-name}") | .details_url'
|
|
54
|
-
```
|
|
55
|
-
then extract the run id from `details_url` the same way.
|
|
56
|
-
3. If neither path yields a run id → treat as "unlocatable" and use the skill's help exit; do not self-heal blindly.
|
|
57
|
-
|
|
58
|
-
Once the run id is known, pull the failure logs:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
gh run view {run-id} --log-failed
|
|
62
|
-
```
|
|
18
|
+
The core owns required-only selection, deadlines, exact run/job resolution, and faithful logs. Green/no-required exits 0; definite failure exits 1; pending, timeout, or network blocking exits 2. Missing dependencies, unsupported versions, and deterministic platform failures preserve their structured errors without compatibility degradation. The skill/model still owns diagnosis, fixes, tests, and authorized commit/push actions.
|
|
@@ -1,62 +1,34 @@
|
|
|
1
|
-
# PR
|
|
1
|
+
# PR required checks 平台意图
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
required checks 的筛选、轮询 deadline、失败 run/job 定位和日志获取统一由 typed internal intent 执行。SKILL/模型只负责失败分类、根因分析、最小修复和授权后的提交推送。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
GitHub adapter 要求 `gh >= 2.16.0`。平台上下文会在任何 GitHub API、PR 或 checks 操作前检查该依赖;未选择 GitHub 平台时不探测也不依赖 `gh`。
|
|
6
|
+
|
|
7
|
+
## 快照与监控
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
agent-infra-internal platform-checks inspect {task-id}
|
|
11
|
+
|
|
12
|
+
agent-infra-internal platform-checks watch {task-id} \
|
|
13
|
+
--interval-seconds 30 --deadline-seconds 1800
|
|
11
14
|
```
|
|
12
15
|
|
|
13
|
-
`
|
|
16
|
+
结构化 `checks.state` 为 `passed|failed|pending|timed-out|cancelled|no-required`。`passed|no-required` 退出 0;确定失败/取消退出 1;pending、timeout 或网络阻塞退出 2。依赖缺失、版本过低和确定性平台错误直接返回其原始结构化错误,不执行兼容降级。
|
|
14
17
|
|
|
15
|
-
##
|
|
18
|
+
## 定位失败 run/job
|
|
16
19
|
|
|
17
20
|
```bash
|
|
18
|
-
|
|
19
|
-
--
|
|
21
|
+
agent-infra-internal platform-checks resolve-run {task-id} \
|
|
22
|
+
--check-name {check-name} [--details-url {details-url}]
|
|
20
23
|
```
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
- `--watch`:阻塞直到这些 checks 全部跑完;`--fail-fast`:出现首个失败即退出 watch。
|
|
24
|
-
- `-i 30`:轮询间隔 30 秒(退避)。**总时长上限默认 30 分钟(1800 秒)**:按执行环境选用对应的超时方式,超时即按「挂起」处理(退出码 8)。
|
|
25
|
-
- POSIX shell:`timeout 1800 gh pr checks {pr#} --required --watch --fail-fast -i 30 …`
|
|
26
|
-
- PowerShell(Windows):用作业超时——
|
|
27
|
-
```powershell
|
|
28
|
-
$job = Start-Job { gh pr checks {pr#} --required --watch --fail-fast -i 30 }
|
|
29
|
-
if (Wait-Job $job -Timeout 1800) { Receive-Job $job } else { Stop-Job $job; <按「挂起」处理> }
|
|
30
|
-
```
|
|
31
|
-
- 平台中立回退(无外部超时工具时):记录开始时间,循环执行**不带** `--watch` 的 `gh pr checks {pr#} --required --json name,bucket,link,workflow`,每轮 sleep `-i` 秒并检查 `bucket` 是否仍有 `pending`;累计时长 ≥ 1800 秒仍未结束 → 退出循环按「挂起」处理。
|
|
32
|
-
- `--json` 的 `bucket` 字段把每个 check 归类为 `pass` / `fail` / `pending` / `skipping` / `cancel`。
|
|
33
|
-
|
|
34
|
-
退出码语义:
|
|
35
|
-
|
|
36
|
-
| 退出码 | 含义 | 结果分类 |
|
|
37
|
-
|--------|------|----------|
|
|
38
|
-
| 0 | 全部 required checks 通过 | 全绿 |
|
|
39
|
-
| 1 | 至少一个失败 / 出错 | 失败 |
|
|
40
|
-
| 8 | 仍有 pending(watch 超时或被 `timeout` 截断) | 挂起 |
|
|
41
|
-
|
|
42
|
-
旧版 `gh`(< 2.93)若不支持 `--required`:回退为 `gh pr checks {pr#} --watch --fail-fast`(即「所有 check 必须 success」),并在求助/报告中注明该降级、建议升级 `gh`。
|
|
25
|
+
core 优先验证详情链接;否则按 PR head SHA 与 exact check name 查询。零个或多个候选均 fail closed,不选择其他 run。
|
|
43
26
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
`gh pr checks --json` 不直接返回 run id,但返回失败 check 的 `link`(指向 run/job 的 URL)。按确定性顺序解析:
|
|
47
|
-
|
|
48
|
-
1. 从失败 check 的 `link` 用正则提取:`https://github.com/{owner}/{repo}/actions/runs/(\d+)(?:/job/(\d+))?` → 第 1 组为 run id(可选第 2 组为 job id)。
|
|
49
|
-
2. `link` 非 run URL 或无法解析时,用 head SHA 查 check-runs:
|
|
50
|
-
```bash
|
|
51
|
-
sha=$(gh pr view {pr#} --json headRefOid -q .headRefOid)
|
|
52
|
-
gh api "repos/{owner}/{repo}/commits/$sha/check-runs" \
|
|
53
|
-
--jq '.check_runs[] | select(.name=="{failed-check-name}") | .details_url'
|
|
54
|
-
```
|
|
55
|
-
再从 `details_url` 同法提取 run id。
|
|
56
|
-
3. 两路都拿不到 run id → 视为「不可定位」,按技能的求助出口处理,不盲目自愈。
|
|
57
|
-
|
|
58
|
-
拿到 run id 后拉失败日志:
|
|
27
|
+
## 获取失败日志
|
|
59
28
|
|
|
60
29
|
```bash
|
|
61
|
-
|
|
30
|
+
agent-infra-internal platform-checks logs {task-id} \
|
|
31
|
+
--run {run-id} [--job {job-id}]
|
|
62
32
|
```
|
|
33
|
+
|
|
34
|
+
日志结果保真返回;缺失、权限、网络和资源不存在使用稳定错误码区分。平台 intent 不修改业务代码、不测试、不提交也不推送。
|
|
@@ -1,5 +1,32 @@
|
|
|
1
|
-
# PR
|
|
1
|
+
# PR required checks 平台意图
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
required checks 的筛选、轮询 deadline、失败 run/job 定位和日志获取统一由 typed internal intent 执行。SKILL/模型只负责失败分类、根因分析、最小修复和授权后的提交推送。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 快照与监控
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-checks inspect {task-id}
|
|
9
|
+
|
|
10
|
+
agent-infra-internal platform-checks watch {task-id} \
|
|
11
|
+
--interval-seconds 30 --deadline-seconds 1800
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
结构化 `checks.state` 为 `passed|failed|pending|timed-out|cancelled|no-required`。`passed|no-required` 退出 0;确定失败/取消退出 1;pending、timeout 或网络阻塞退出 2。平台 adapter 必须在操作前验证自身依赖;依赖或确定性平台错误直接透传,不执行兼容降级。
|
|
15
|
+
|
|
16
|
+
## 定位失败 run/job
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
agent-infra-internal platform-checks resolve-run {task-id} \
|
|
20
|
+
--check-name {check-name} [--details-url {details-url}]
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
core 优先验证详情链接;否则按 PR head SHA 与 exact check name 查询。零个或多个候选均 fail closed,不选择其他 run。
|
|
24
|
+
|
|
25
|
+
## 获取失败日志
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
agent-infra-internal platform-checks logs {task-id} \
|
|
29
|
+
--run {run-id} [--job {job-id}]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
日志结果保真返回;缺失、权限、网络和资源不存在使用稳定错误码区分。平台 intent 不修改业务代码、不测试、不提交也不推送。
|
|
@@ -1,5 +1,32 @@
|
|
|
1
|
-
# PR
|
|
1
|
+
# PR Summary Synchronization
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The model writes the semantic reviewer summary. Typed core owns canonical artifact selection, the marker, current HEAD, paginated comment lookup, and create/update/no-op reconciliation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Inputs
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr summary-context {task-id}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use only the returned latest canonical `plan*`, `review-plan*`, `code*`, `review-code*`, and `manual-validation*`. The summary covers scope, tests, review history, and exactly one manual-validation state.
|
|
12
|
+
|
|
13
|
+
## Publish
|
|
14
|
+
|
|
15
|
+
Write only the summary body to a file, without marker or SHA:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
19
|
+
--agent {agent} --body-file {summary-body-file}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The core wraps `<!-- sync-pr:{task-id}:summary -->` and current `<!-- last-commit: ... -->`, then creates, updates in place, or returns no-op. Duplicate markers fail deterministically. Callers never assemble shell/heredoc comment commands.
|
|
23
|
+
|
|
24
|
+
`create-pr` does not roll back the PR on summary failure; `commit` records a warning without rolling back; manual validation refreshes after its canonical artifact is written.
|
|
25
|
+
|
|
26
|
+
For a linked task, the caller records a structured warning:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
agent-infra-internal task-warning {task-id} add --step {step} --severity WARNING \
|
|
30
|
+
--code COMMENT_SYNC_FAILED --target pr-summary --message "{reason}" \
|
|
31
|
+
--action "Restore comment permission or connectivity and rerun this step"
|
|
32
|
+
```
|
|
@@ -1,135 +1,32 @@
|
|
|
1
|
-
# PR Summary
|
|
1
|
+
# PR Summary Synchronization
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The model writes the semantic reviewer summary. Typed core owns canonical artifact selection, marker/HEAD wrapping, paginated comment lookup, and reconciliation.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Current callers:
|
|
8
|
-
- `create-pr`: create or update the summary comment when the PR is opened
|
|
9
|
-
- `commit`: refresh the summary comment on an existing PR when needed
|
|
10
|
-
- `complete-manual-validation`: update the summary comment in place after manual validation passes, and write a validation artifact that later aggregation can reuse
|
|
11
|
-
|
|
12
|
-
If another skill needs to refresh the PR summary later, point that skill's reference file at this rule first, then document only the skill-specific trigger and failure behavior there.
|
|
13
|
-
|
|
14
|
-
## Hidden Marker
|
|
15
|
-
|
|
16
|
-
Use this hidden marker:
|
|
5
|
+
```bash
|
|
6
|
+
agent-infra-internal platform-pr summary-context {task-id}
|
|
17
7
|
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
9
|
+
--agent {agent} --body-file {summary-body-file}
|
|
20
10
|
```
|
|
21
11
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
## Aggregation Inputs
|
|
25
|
-
|
|
26
|
-
Aggregate the latest artifacts in the task directory:
|
|
27
|
-
- `plan.md` or the latest `plan-r{N}.md`
|
|
28
|
-
- `code.md` or the latest `code-r{N}.md`
|
|
29
|
-
- `review-code.md` or the latest `review-code-r{N}.md`
|
|
30
|
-
- `manual-validation.md` or the latest `manual-validation-r{N}.md`
|
|
31
|
-
|
|
32
|
-
Aggregation rules:
|
|
33
|
-
- extract 2-4 self-contained technical decisions from `plan*`
|
|
34
|
-
- build the review-history table from `review-code*` and `code*`
|
|
35
|
-
- extract the test summary from `code*`
|
|
36
|
-
- if the latest `manual-validation*` artifact has a passed verdict, render the manual-validation section first as `### ✅ Manual Validation Passed`, with a concise validation time, scope, and notes summary
|
|
37
|
-
- if one artifact class is missing, treat it as "no data for this stage" and continue
|
|
38
|
-
- Manual verification section: include only post-code-stage checks that still require a human to execute or judge and that the AI cannot close on its own.
|
|
39
|
-
- **Admission boundary**: the verification result depends on a real environment, permissions, account, external system, or human judgment, and cannot be closed by an agent rerunning tests, adding checks, or continuing the fix loop.
|
|
40
|
-
- **Sources**: `review-code*` "Manual Validation Items", plus `code*` items that satisfy the boundary above.
|
|
41
|
-
- **Wording**: each retained item must state at least "what to verify + location (file/change/scope) + why only a human can verify it".
|
|
42
|
-
- **Rendering priority**:
|
|
43
|
-
1. the latest `manual-validation*` artifact has a passed verdict -> heading `### ✅ Manual Validation Passed` + validation summary.
|
|
44
|
-
2. no passed artifact and retained items exist -> heading `### ⚠️ Manual Verification Required` + item list.
|
|
45
|
-
3. no passed artifact and no retained items -> heading `### ✅ No Manual Verification Needed` and a single line `No items in this change require manual confirmation.`, with no item list.
|
|
12
|
+
Use only canonical inputs returned by the context command. Write the plain body without marker or SHA. The core owns `<!-- sync-pr:{task-id}:summary -->`, current `<!-- last-commit: ... -->`, create/update/no-op behavior, and duplicate-marker conflicts. Summary failure never rolls back a PR or commit.
|
|
46
13
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Use this canonical comment body template:
|
|
14
|
+
The canonical comment envelope produced by the core is:
|
|
50
15
|
|
|
51
16
|
```markdown
|
|
52
17
|
<!-- sync-pr:{task-id}:summary -->
|
|
53
18
|
<!-- last-commit: {git-head-sha} -->
|
|
54
19
|
## Review Summary
|
|
55
|
-
|
|
56
|
-
> **{agent}** · {task-id}
|
|
57
|
-
|
|
58
|
-
**Updated At**: {current-time}
|
|
59
|
-
|
|
60
20
|
{manual-validation-section}
|
|
61
|
-
|
|
62
21
|
### Key Technical Decisions
|
|
63
|
-
|
|
64
|
-
- {decision-1}
|
|
65
|
-
- {decision-2}
|
|
66
|
-
|
|
67
22
|
### Review History
|
|
68
|
-
|
|
69
|
-
| Round | Verdict | Finding Counts | Fix Status |
|
|
70
|
-
|-------|---------|----------------|------------|
|
|
71
|
-
| Round 1 | Pending | N/A | N/A |
|
|
72
|
-
|
|
73
23
|
### Test Results
|
|
74
|
-
|
|
75
|
-
- {test-summary}
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
*Generated by {agent} · Internal tracking: {task-id}*
|
|
79
24
|
```
|
|
80
25
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## Comment Lookup And Update
|
|
84
|
-
|
|
85
|
-
Fetch existing comments through the Issues comments API, not the dedicated PR comments API.
|
|
86
|
-
|
|
87
|
-
Before this section runs, the caller must resolve `upstream_repo` by following `.agents/rules/issue-pr-commands.md` / `.agents/rules/issue-sync.md`.
|
|
88
|
-
|
|
89
|
-
Process:
|
|
90
|
-
1. Fetch existing PR comments and locate the comment ID that starts with `<!-- sync-pr:{task-id}:summary -->`
|
|
91
|
-
2. When rendering the body, always write the current `git rev-parse HEAD` result into `<!-- last-commit: {git-head-sha} -->`
|
|
92
|
-
3. If it does not exist, create it once as a fallback
|
|
93
|
-
4. If it exists and the body is identical, skip the write
|
|
94
|
-
5. If it exists and the body changed, PATCH it in place
|
|
95
|
-
|
|
96
|
-
When updating an existing comment, use:
|
|
26
|
+
Canonical inputs include `manual-validation.md`. The manual-validation section is one of `### ✅ Manual Validation Passed`, `### ⚠️ Manual Verification Required`, or `### ✅ No Manual Verification Needed`; `complete-manual-validation` refreshes the same summary in place.
|
|
97
27
|
|
|
98
28
|
```bash
|
|
99
|
-
|
|
100
|
-
{
|
|
101
|
-
|
|
102
|
-
)"
|
|
29
|
+
agent-infra-internal task-warning {task-id} add --step {step} --severity WARNING \
|
|
30
|
+
--code COMMENT_SYNC_FAILED --target pr-summary --message "{reason}" \
|
|
31
|
+
--action "Restore comment permission or connectivity and rerun this step"
|
|
103
32
|
```
|
|
104
|
-
|
|
105
|
-
## Shell Safety Rules
|
|
106
|
-
|
|
107
|
-
1. Read local artifact content first, then inline the actual text into a `<<'EOF'` heredoc.
|
|
108
|
-
2. Do not use command substitution or variable expansion inside the heredoc.
|
|
109
|
-
3. Do not use `echo` to construct bodies that contain `<!-- -->`; use `cat <<'EOF'` or `printf '%s\n'`.
|
|
110
|
-
|
|
111
|
-
## Error Handling
|
|
112
|
-
|
|
113
|
-
| Failure Point | Handling |
|
|
114
|
-
|--------|------|
|
|
115
|
-
| `task.md` cannot be read | skip sync and let the later verification gate report it |
|
|
116
|
-
| aggregation input is missing | warn and continue with the available data |
|
|
117
|
-
| `gh api` GET/PATCH/POST fails | warn and continue; whether the current skill should block is decided by the caller |
|
|
118
|
-
| `pr_number` points to a missing PR | warn with `PR #{pr-number} not found` and continue |
|
|
119
|
-
|
|
120
|
-
When the caller has a `{task-id}` / task directory and GET/PATCH/POST fails, record a Workflow Warning:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
node .agents/scripts/workflow-warnings.js add .agents/workspace/active/{task-id} \
|
|
124
|
-
--step pr-sync --severity ACTION_REQUIRED --code COMMENT_SYNC_FAILED \
|
|
125
|
-
--target "pr-summary" --message "{reason}" \
|
|
126
|
-
--action "Fix GitHub API / network issues and rerun the workflow step that triggers PR summary sync"
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Result Reporting
|
|
130
|
-
|
|
131
|
-
Return one of these normalized results so callers can reuse it in Activity Log entries or user output:
|
|
132
|
-
- `summary created`
|
|
133
|
-
- `summary updated`
|
|
134
|
-
- `summary skipped (no diff)`
|
|
135
|
-
- `summary failed: <reason>`
|