@fitlab-ai/agent-infra 0.8.5 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/README.zh-CN.md +5 -1
- package/bin/cli.ts +2 -2
- package/dist/bin/cli.js +2 -2
- package/dist/bin/internal-cli.js +103 -0
- package/dist/lib/decide.js +81 -90
- package/dist/lib/defaults.json +1 -0
- package/dist/lib/git/review-snapshot.js +79 -0
- package/dist/lib/git/workflow.js +101 -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/platform-release-notes.js +53 -0
- package/dist/lib/internal/release-workflow.js +320 -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/github-release-notes.js +96 -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 +619 -0
- package/dist/lib/platform/merged-pr-equivalence.js +54 -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 +340 -0
- package/dist/lib/platform/release-notes.js +143 -0
- package/dist/lib/platform/releases.js +82 -0
- package/dist/lib/platform/types.js +22 -0
- package/dist/lib/platform/verification-required.js +102 -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/build-proxy.js +63 -0
- package/dist/lib/sandbox/capture.js +25 -3
- package/dist/lib/sandbox/commands/create.js +93 -31
- package/dist/lib/sandbox/commands/enter.js +34 -11
- package/dist/lib/sandbox/commands/list-running.js +10 -8
- package/dist/lib/sandbox/commands/rebuild.js +24 -7
- package/dist/lib/sandbox/commands/show.js +2 -2
- package/dist/lib/sandbox/commands/start.js +53 -15
- package/dist/lib/sandbox/image-build.js +2 -1
- 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/ai-tools.dockerfile +24 -3
- package/dist/lib/sandbox/runtimes/base.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/java17.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/java21.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/node20.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/node22.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/python3.dockerfile +8 -1
- package/dist/lib/sandbox/shell.js +2 -1
- package/dist/lib/sandbox/task-resolver.js +5 -1
- package/dist/lib/sandbox/tools.js +19 -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 +33 -19
- 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 +21 -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 +55 -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 +923 -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/lib/decide.ts +57 -97
- package/lib/defaults.json +1 -0
- package/lib/git/review-snapshot.ts +73 -0
- package/lib/git/workflow.ts +101 -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/platform-release-notes.ts +55 -0
- package/lib/internal/release-workflow.ts +288 -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/github-release-notes.ts +132 -0
- package/lib/platform/issue-comments.ts +479 -0
- package/lib/platform/issue-metadata.ts +250 -0
- package/lib/platform/issues.ts +693 -0
- package/lib/platform/merged-pr-equivalence.ts +70 -0
- package/lib/platform/metadata-labels.ts +33 -0
- package/lib/platform/pr-checks.ts +247 -0
- package/lib/platform/pr-summary.ts +90 -0
- package/lib/platform/pull-request-metadata.ts +69 -0
- package/lib/platform/pull-requests.ts +386 -0
- package/lib/platform/release-notes.ts +167 -0
- package/lib/platform/releases.ts +71 -0
- package/lib/platform/types.ts +74 -0
- package/lib/platform/verification-required.ts +109 -0
- package/{runtime/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +198 -367
- 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/build-proxy.ts +94 -0
- package/lib/sandbox/capture.ts +29 -3
- package/lib/sandbox/commands/create.ts +120 -36
- package/lib/sandbox/commands/enter.ts +38 -11
- package/lib/sandbox/commands/list-running.ts +10 -8
- package/lib/sandbox/commands/rebuild.ts +29 -7
- package/lib/sandbox/commands/show.ts +2 -2
- package/lib/sandbox/commands/start.ts +50 -16
- package/lib/sandbox/image-build.ts +4 -1
- 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/ai-tools.dockerfile +24 -3
- package/lib/sandbox/runtimes/base.dockerfile +8 -1
- package/lib/sandbox/runtimes/java17.dockerfile +8 -1
- package/lib/sandbox/runtimes/java21.dockerfile +8 -1
- package/lib/sandbox/runtimes/node20.dockerfile +8 -1
- package/lib/sandbox/runtimes/node22.dockerfile +8 -1
- package/lib/sandbox/runtimes/python3.dockerfile +8 -1
- package/lib/sandbox/shell.ts +3 -1
- package/lib/sandbox/task-resolver.ts +5 -1
- package/lib/sandbox/tools.ts +31 -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 +26 -21
- 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 +24 -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} +26 -12
- 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} +230 -421
- package/lib/task/verification-review.ts +10 -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/package.json +4 -2
- package/templates/.agents/README.en.md +4 -3
- package/templates/.agents/README.zh-CN.md +4 -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/release-commands.en.md +2 -2
- package/templates/.agents/rules/release-commands.github.en.md +10 -40
- package/templates/.agents/rules/release-commands.github.zh-CN.md +9 -39
- package/templates/.agents/rules/release-commands.zh-CN.md +2 -2
- package/templates/.agents/rules/review-handshake.en.md +10 -6
- package/templates/.agents/rules/review-handshake.zh-CN.md +10 -6
- 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/rules/testing-discipline.en.md +20 -2
- package/templates/.agents/rules/testing-discipline.zh-CN.md +20 -2
- package/templates/.agents/scripts/lib/agent-infra-package.js +1 -9
- package/templates/.agents/scripts/task-short-id.js +71 -533
- package/templates/.agents/skills/analyze-task/SKILL.en.md +26 -56
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +30 -60
- 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 +13 -11
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -11
- 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 +13 -0
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +13 -0
- 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 +10 -7
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +10 -7
- 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-release-note/SKILL.en.md +17 -38
- package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +16 -37
- package/templates/.agents/skills/create-task/SKILL.en.md +16 -13
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +16 -13
- package/templates/.agents/skills/create-task/config/verify.json +1 -2
- package/templates/.agents/skills/create-task/reference/context-capture.en.md +29 -0
- package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +29 -0
- 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/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 +3 -4
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -4
- 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 +11 -4
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +11 -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 +1 -2
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -2
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -15
- 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 +24 -1
- package/templates/.agents/templates/task.zh-CN.md +24 -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.github.js +0 -40
- package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
- package/templates/.agents/scripts/review-diff-fingerprint.js +0 -170
- 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
|
@@ -19,25 +19,29 @@
|
|
|
19
19
|
"require_target_date": true
|
|
20
20
|
},
|
|
21
21
|
"activity-log": {
|
|
22
|
-
"expected_action_pattern": "(Complete Task|Completed)"
|
|
23
|
-
"freshness_minutes": 30
|
|
22
|
+
"expected_action_pattern": "(Complete Task|Completed)"
|
|
24
23
|
},
|
|
25
24
|
"completion-checklist": {
|
|
26
25
|
"require_all_checked": true
|
|
27
26
|
},
|
|
28
27
|
"review-ledger": {},
|
|
29
28
|
"post-review-commit": {},
|
|
30
|
-
"platform-sync": {
|
|
29
|
+
"platform-sync-preflight": {
|
|
31
30
|
"when": "issue_number_exists",
|
|
32
31
|
"expected_comment_marker": "<!-- sync-issue:{task-id}:summary -->",
|
|
33
|
-
"verify_task_comment_content":
|
|
32
|
+
"verify_task_comment_content": false,
|
|
34
33
|
"sync_checked_requirements": true,
|
|
35
34
|
"verify_issue_type": true,
|
|
36
35
|
"verify_issue_fields": false,
|
|
37
36
|
"verify_milestone": true,
|
|
38
|
-
"verify_closed_issue_has_no_status_labels":
|
|
37
|
+
"verify_closed_issue_has_no_status_labels": false,
|
|
39
38
|
"expected_comment_marker_key": "summary"
|
|
40
39
|
},
|
|
40
|
+
"platform-sync": {
|
|
41
|
+
"when": "issue_number_exists",
|
|
42
|
+
"verify_task_comment_content": true,
|
|
43
|
+
"verify_closed_issue_has_no_status_labels": true
|
|
44
|
+
},
|
|
41
45
|
"artifact": {
|
|
42
46
|
"file_pattern": "task.md",
|
|
43
47
|
"required_sections": [
|
|
@@ -45,8 +49,7 @@
|
|
|
45
49
|
],
|
|
46
50
|
"required_patterns": [
|
|
47
51
|
"^\\$ "
|
|
48
|
-
]
|
|
49
|
-
"freshness_minutes": 30
|
|
52
|
+
]
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
}
|
|
@@ -19,25 +19,29 @@
|
|
|
19
19
|
"require_target_date": true
|
|
20
20
|
},
|
|
21
21
|
"activity-log": {
|
|
22
|
-
"expected_action_pattern": "(Complete Task|Completed)"
|
|
23
|
-
"freshness_minutes": 30
|
|
22
|
+
"expected_action_pattern": "(Complete Task|Completed)"
|
|
24
23
|
},
|
|
25
24
|
"completion-checklist": {
|
|
26
25
|
"require_all_checked": true
|
|
27
26
|
},
|
|
28
27
|
"review-ledger": {},
|
|
29
28
|
"post-review-commit": {},
|
|
30
|
-
"platform-sync": {
|
|
29
|
+
"platform-sync-preflight": {
|
|
31
30
|
"when": "issue_number_exists",
|
|
32
31
|
"expected_comment_marker": "<!-- sync-issue:{task-id}:summary -->",
|
|
33
|
-
"verify_task_comment_content":
|
|
32
|
+
"verify_task_comment_content": false,
|
|
34
33
|
"sync_checked_requirements": true,
|
|
35
34
|
"verify_issue_type": true,
|
|
36
35
|
"verify_issue_fields": false,
|
|
37
36
|
"verify_milestone": true,
|
|
38
|
-
"verify_closed_issue_has_no_status_labels":
|
|
37
|
+
"verify_closed_issue_has_no_status_labels": false,
|
|
39
38
|
"expected_comment_marker_key": "summary"
|
|
40
39
|
},
|
|
40
|
+
"platform-sync": {
|
|
41
|
+
"when": "issue_number_exists",
|
|
42
|
+
"verify_task_comment_content": true,
|
|
43
|
+
"verify_closed_issue_has_no_status_labels": true
|
|
44
|
+
},
|
|
41
45
|
"artifact": {
|
|
42
46
|
"file_pattern": "task.md",
|
|
43
47
|
"required_sections": [
|
|
@@ -45,8 +49,7 @@
|
|
|
45
49
|
],
|
|
46
50
|
"required_patterns": [
|
|
47
51
|
"^\\$ "
|
|
48
|
-
]
|
|
49
|
-
"freshness_minutes": 30
|
|
52
|
+
]
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
}
|
|
@@ -13,19 +13,13 @@ Create a Pull Request and, when task-related, sync the essential metadata and re
|
|
|
13
13
|
|
|
14
14
|
Version stamp rule: when creating or updating `task.md` frontmatter, read `.agents/rules/version-stamp.md` first and write or refresh `agent_infra_version`.
|
|
15
15
|
|
|
16
|
-
## Task
|
|
16
|
+
## Task Context Resolution
|
|
17
17
|
|
|
18
|
-
>
|
|
18
|
+
> The entry point may omit the task ref and also accepts a legacy positional ref or `--task <ref>` / `-t <ref>`. Separate task scope from the full arguments while preserving every business operand, then call `agent-infra-internal task-context resolve {task-scope}` where `{task-scope}` is empty, one positional ref, or one task flag. Read only `taskId` from the structured result and bind `{task-id}` to that full `TASK-YYYYMMDD-HHMMSS` for downstream commands. Pass through resolution failures without scanning tasks locally.
|
|
19
19
|
|
|
20
|
-
## Step Start:
|
|
20
|
+
## Step Start: started Marker
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Create PR [started]** by {agent} — started
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`ai task log` pairs it with the done entry written on completion onto one row (in progress → done). See the "Activity Log started / done dual-marker convention" in `.agents/rules/task-management.md`.
|
|
22
|
+
On a real `platform-pr create`, the typed core idempotently records `Create PR [started]` before the remote write. Dry-run does not record it, and the caller must not append a duplicate entry.
|
|
29
23
|
|
|
30
24
|
## Execution Flow
|
|
31
25
|
|
|
@@ -68,24 +62,17 @@ Read the PR template through `.agents/rules/issue-pr-commands.md`, review recent
|
|
|
68
62
|
|
|
69
63
|
### 4. Check Remote Branch State
|
|
70
64
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### 5. Create the PR
|
|
65
|
+
Use `agent-infra-internal git-workflow inspect` for upstream/remote facts and `git-workflow push` for a verified push.
|
|
74
66
|
|
|
75
|
-
|
|
67
|
+
### 5. Create or Recover the PR
|
|
76
68
|
|
|
77
|
-
Read `.agents/rules/issue-pr-commands.md
|
|
69
|
+
Read `.agents/rules/issue-pr-commands.md`, write the title and body to temporary files, then invoke its `platform-pr create` intent. The core first performs exact head/base lookup: one existing PR is reused and bound, zero creates, and multiple matches fail deterministically. Replays must not create duplicate PRs.
|
|
78
70
|
|
|
79
71
|
If `{task-id}` is available and the related task provides `issue_number`, keep `Closes #{issue-number}` in the PR body.
|
|
80
72
|
|
|
81
73
|
### 6. Sync PR Metadata
|
|
82
74
|
|
|
83
|
-
|
|
84
|
-
- query standard labels, Issue metadata, and PR metadata via `.agents/rules/issue-pr-commands.md`
|
|
85
|
-
- apply the mapped type label by following the PR update commands and permission-degradation rules in `.agents/rules/issue-pr-commands.md`
|
|
86
|
-
- copy the current Issue `in:` labels to the PR without recomputing them and without writing back to the Issue
|
|
87
|
-
- reuse the Issue milestone by following "Phase 3: `create-pr`" and its permission rules in `.agents/rules/milestone-inference.md`
|
|
88
|
-
- keep Development linking in the PR body with `Closes #{issue-number}` when applicable
|
|
75
|
+
Run `agent-infra-internal platform-pr sync {task-id} --agent {agent} --metadata --closing-issue`. The core copies type / `in:` labels, assignee, and a specific milestone from the Issue and maintains the closing association. Permission-bound items degrade independently, and the Issue is never updated in reverse.
|
|
89
76
|
|
|
90
77
|
### 7. Publish the Review Summary
|
|
91
78
|
|
|
@@ -93,29 +80,18 @@ Read the latest context artifacts when they exist: `plan.md` / `plan-r{N}.md`, `
|
|
|
93
80
|
|
|
94
81
|
Aggregate a reviewer-facing summary from those artifacts and maintain a single idempotent summary comment via the hidden marker.
|
|
95
82
|
|
|
96
|
-
>
|
|
97
|
-
>
|
|
98
|
-
> **Shell safety rules** (required before publishing the comment):
|
|
99
|
-
> 1. Replace `{comment-body}` with the actual inline text. Read files first, then paste the full content into the heredoc body. Do **not** use `$(cat ...)`, `$(< ...)`, `$(...)`, or `${...}` inside `<<'EOF'`.
|
|
100
|
-
> 2. Do **not** use `echo` when constructing strings that contain `<!-- -->`. Use `cat <<'EOF'` heredoc or `printf '%s\n'` instead.
|
|
101
|
-
> 3. The same constraints are restated in `.agents/rules/pr-sync.md`; once that rule is loaded, do not duplicate another copy of the template rules.
|
|
83
|
+
> Canonical context, aggregation, and the `summary-sync` call live in `reference/comment-publish.md`, which points to `.agents/rules/pr-sync.md`. Read that reference before publishing.
|
|
102
84
|
|
|
103
|
-
### 8.
|
|
104
|
-
|
|
105
|
-
Get the current time:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
109
|
-
```
|
|
85
|
+
### 8. Confirm Task Status
|
|
110
86
|
|
|
111
|
-
|
|
87
|
+
After a PR is created or uniquely recovered, `platform-pr create` atomically updates `pr_number`, `pr_status`, canonical time/version metadata, and the Create PR completion log through the task write core. The caller verifies the structured result and does not edit those fields again.
|
|
112
88
|
|
|
113
89
|
### 9. Verification Gate
|
|
114
90
|
|
|
115
91
|
If this operation is associated with `{task-id}`, run the verification gate to confirm task metadata and sync state. If there is no task context, skip this step.
|
|
116
92
|
|
|
117
93
|
```bash
|
|
118
|
-
|
|
94
|
+
agent-infra-internal task-verify {task-id} create-pr.completed --format text
|
|
119
95
|
```
|
|
120
96
|
|
|
121
97
|
Handle the result as follows:
|
|
@@ -129,9 +105,9 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
|
|
|
129
105
|
|
|
130
106
|
> Execute this step only after the verification gate passes.
|
|
131
107
|
|
|
132
|
-
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id
|
|
108
|
+
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id `NN` (falling back to the full TASK-id when unallocated or released); (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
|
|
133
109
|
|
|
134
|
-
Explain the created PR URL, summarize metadata sync and summary-comment results, and recommend watching the PR's checks next (render `{task-ref}` as the short id
|
|
110
|
+
Explain the created PR URL, summarize metadata sync and summary-comment results, and recommend watching the PR's checks next (render `{task-ref}` as the short id `NN` per `.agents/rules/next-step-output.md`):
|
|
135
111
|
|
|
136
112
|
```
|
|
137
113
|
Next step - Watch PR checks (auto self-heal until required checks are green):
|
|
@@ -140,23 +116,22 @@ Next step - Watch PR checks (auto self-heal until required checks are green):
|
|
|
140
116
|
- Codex CLI: $watch-pr {task-ref}
|
|
141
117
|
```
|
|
142
118
|
|
|
143
|
-
Alternatively, to skip
|
|
119
|
+
Alternatively, to skip active monitoring and attempt completion immediately, use `complete-task`; its required-checks hard gate still fails closed for pending/failed checks or head mismatch:
|
|
144
120
|
|
|
145
121
|
```
|
|
146
|
-
Next step (alternative) - Skip monitoring and
|
|
122
|
+
Next step (alternative) - Skip active monitoring and attempt completion:
|
|
147
123
|
- Claude Code / OpenCode: /complete-task {task-ref}
|
|
148
124
|
- Gemini CLI: /{{project}}:complete-task {task-ref}
|
|
149
125
|
- Codex CLI: $complete-task {task-ref}
|
|
150
126
|
```
|
|
151
127
|
|
|
152
|
-
`watch-pr` is the primary path
|
|
128
|
+
`watch-pr` is the primary path. The alternative `complete-task` block skips active polling only; it never skips required checks and does not guarantee immediate archival.
|
|
153
129
|
|
|
154
130
|
## Notes
|
|
155
131
|
|
|
156
132
|
- Review every commit in the branch, not only the latest one
|
|
157
133
|
- `create-pr` must not defer type-label mapping to another skill; inline the mapping here when `{task-id}` is available
|
|
158
|
-
-
|
|
159
|
-
- If the current branch already has a PR, show its URL and stop without repeating sync work
|
|
134
|
+
- The summary marker and current HEAD are wrapped by `platform-pr summary-sync`
|
|
160
135
|
- When metadata inheritance from the Issue fails, continue with task.md and branch-based fallbacks
|
|
161
136
|
|
|
162
137
|
## Error Handling
|
|
@@ -165,5 +140,5 @@ Next step (alternative) - Skip monitoring and archive the task directly:
|
|
|
165
140
|
- Push rejected: suggest `git pull --rebase`
|
|
166
141
|
- Existing PR found: show the current PR URL and stop
|
|
167
142
|
- Inaccessible Issue metadata: skip inheritance and continue
|
|
168
|
-
- PR creation failed with an associated `{task-id}`: run `
|
|
143
|
+
- PR creation failed with an associated `{task-id}`: run `agent-infra-internal task-warning {task-id} add --step create-pr --severity ACTION_REQUIRED --code PR_CREATE_FAILED --target pr --message "{reason}" --action "Fix push, permission, or platform issues and rerun create-pr"` to submit a structured warning intent, and do not write `pr_number`
|
|
169
144
|
- PR summary comment failed with an associated `{task-id}`: record a `COMMENT_SYNC_FAILED` warning per `.agents/rules/pr-sync.md`, without rolling back an already-created PR
|
|
@@ -13,19 +13,13 @@ description: >
|
|
|
13
13
|
|
|
14
14
|
版本戳规则:创建或更新 `task.md` frontmatter 时,先读取 `.agents/rules/version-stamp.md`,并写入或刷新 `agent_infra_version`。
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 任务上下文解析
|
|
17
17
|
|
|
18
|
-
>
|
|
18
|
+
> 入口允许省略 task ref,也接受旧位置 task ref 或 `--task <ref>` / `-t <ref>`。先从完整参数中分离 task scope 并原样保留其他业务操作数,再调用 `agent-infra-internal task-context resolve {task-scope}`;`{task-scope}` 为空、位置 ref 或 task flag 之一。只读取结构化结果的 `taskId`,后续把 `{task-id}` 绑定为该完整 `TASK-YYYYMMDD-HHMMSS`。解析失败时透传非零退出码,不自行扫描任务。
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## 步骤开始:started 标记
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Create PR [started]** by {agent} — started
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`ai task log` 会把它与完成时写入的 done 条目配对成一行(进行中 → 已完成)。约定见 `.agents/rules/task-management.md` 的「Activity Log started / done 双标记约定」。
|
|
22
|
+
真实执行 `platform-pr create` 时由 typed core 在远端写入前幂等登记 `Create PR [started]`;dry-run 不登记。调用方不得重复手写该条目。
|
|
29
23
|
|
|
30
24
|
## 执行流程
|
|
31
25
|
|
|
@@ -68,24 +62,17 @@ description: >
|
|
|
68
62
|
|
|
69
63
|
### 4. 检查远程分支状态
|
|
70
64
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### 5. 创建 PR
|
|
65
|
+
调用 `agent-infra-internal git-workflow inspect` 检查 upstream/remote branch;必要时通过 `git-workflow push` 推送并复核。
|
|
74
66
|
|
|
75
|
-
|
|
67
|
+
### 5. 创建或恢复 PR
|
|
76
68
|
|
|
77
|
-
执行前先读取 `.agents/rules/issue-pr-commands.md
|
|
69
|
+
执行前先读取 `.agents/rules/issue-pr-commands.md`,把标题和正文写入临时文件,并调用其中的 `platform-pr create` intent。core 先按 head/base 精确定位:唯一既有 PR 会复用并绑定,零个才创建,多个稳定失败;重放不得产生重复 PR。
|
|
78
70
|
|
|
79
71
|
如果获取到 `{task-id}` 且对应任务提供了 `issue_number`,必须在 PR 正文中保留 `Closes #{issue-number}`。
|
|
80
72
|
|
|
81
73
|
### 6. 同步 PR 元数据
|
|
82
74
|
|
|
83
|
-
|
|
84
|
-
- 按 `.agents/rules/issue-pr-commands.md` 查询标准 label / Issue / PR 元数据
|
|
85
|
-
- 按 `.agents/rules/issue-pr-commands.md` 的 PR 更新命令和权限降级规则处理 type label
|
|
86
|
-
- 将 Issue 当前的 `in:` labels 复制到 PR(不重新计算,不反向更新 Issue)
|
|
87
|
-
- 按 `.agents/rules/milestone-inference.md` 的「阶段 3:`create-pr`」及其权限规则复用 Issue milestone
|
|
88
|
-
- 通过 `Closes #{issue-number}` 保持 Development 关联
|
|
75
|
+
调用 `agent-infra-internal platform-pr sync {task-id} --agent {agent} --metadata --closing-issue`。core 从 Issue 复制 type / `in:` labels、assignee 和具体 milestone,并维护 Development 关联;逐项权限不足返回 degraded,不反向更新 Issue。
|
|
89
76
|
|
|
90
77
|
### 7. 发布审查摘要
|
|
91
78
|
|
|
@@ -93,29 +80,18 @@ description: >
|
|
|
93
80
|
|
|
94
81
|
基于这些产物聚合 reviewer 摘要,并使用隐藏标记维护唯一且幂等的摘要评论。
|
|
95
82
|
|
|
96
|
-
>
|
|
97
|
-
>
|
|
98
|
-
> **Shell 安全规则**(发布评论前必读):
|
|
99
|
-
> 1. `{comment-body}` 必须替换为**实际的内联文本**。先读取文件,再将全文粘贴到 heredoc body 中。**禁止**在 `<<'EOF'` 内部使用 `$(cat ...)`、`$(< ...)`、`$(...)`、`${...}`。
|
|
100
|
-
> 2. 构造含 `<!-- -->` 的字符串时,**禁止使用 `echo`**。统一使用 `cat <<'EOF'` heredoc 或 `printf '%s\n'` 构造。
|
|
101
|
-
> 3. 同样的安全约束已在 `.agents/rules/pr-sync.md` 中重述,调用该 rule 后无需重复补充另一份模板规则。
|
|
83
|
+
> canonical context、摘要聚合和 `summary-sync` 调用见 `reference/comment-publish.md`(其引用 `.agents/rules/pr-sync.md`)。发布摘要前先读取该 reference。
|
|
102
84
|
|
|
103
|
-
### 8.
|
|
104
|
-
|
|
105
|
-
获取当前时间:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
109
|
-
```
|
|
85
|
+
### 8. 确认任务状态
|
|
110
86
|
|
|
111
|
-
|
|
87
|
+
`platform-pr create` 在成功创建或恢复唯一远端身份后,通过任务写入内核原子更新 `pr_number`、`pr_status`、规范时间/版本和 Create PR 完成日志。调用方只核对结构化结果,不再次编辑这些字段。
|
|
112
88
|
|
|
113
89
|
### 9. 完成校验
|
|
114
90
|
|
|
115
91
|
如果本次操作关联了 `{task-id}`,运行完成校验,确认任务元数据和同步状态符合规范;如果没有任务上下文,跳过本步骤。
|
|
116
92
|
|
|
117
93
|
```bash
|
|
118
|
-
|
|
94
|
+
agent-infra-internal task-verify {task-id} create-pr.completed --format text
|
|
119
95
|
```
|
|
120
96
|
|
|
121
97
|
处理结果:
|
|
@@ -129,9 +105,9 @@ node .agents/scripts/validate-artifact.js gate create-pr .agents/workspace/activ
|
|
|
129
105
|
|
|
130
106
|
> 仅在校验通过后执行本步骤。
|
|
131
107
|
|
|
132
|
-
> **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染最终输出前,先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令把 `{task-ref}` 渲染为短号
|
|
108
|
+
> **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染最终输出前,先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令把 `{task-ref}` 渲染为短号 `NN`(未分配/已释放时回退完整 TASK-id);(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
|
|
133
109
|
|
|
134
|
-
说明 PR URL、元数据同步结果、摘要评论结果,并推荐下一步进入 PR 监控(按 `.agents/rules/next-step-output.md` 把 `{task-ref}` 渲染为短号
|
|
110
|
+
说明 PR URL、元数据同步结果、摘要评论结果,并推荐下一步进入 PR 监控(按 `.agents/rules/next-step-output.md` 把 `{task-ref}` 渲染为短号 `NN`):
|
|
135
111
|
|
|
136
112
|
```
|
|
137
113
|
下一步 - 监控 PR 检查(required checks 全绿前自动自愈):
|
|
@@ -140,22 +116,22 @@ node .agents/scripts/validate-artifact.js gate create-pr .agents/workspace/activ
|
|
|
140
116
|
- Codex CLI:$watch-pr {task-ref}
|
|
141
117
|
```
|
|
142
118
|
|
|
143
|
-
|
|
119
|
+
或者,若想跳过主动监控并立即尝试完成,改用 `complete-task`;其 required-checks 硬门禁仍会对 pending/failed/head mismatch fail-closed:
|
|
144
120
|
|
|
145
121
|
```
|
|
146
|
-
下一步(备选)-
|
|
122
|
+
下一步(备选)- 跳过主动监控并尝试完成:
|
|
147
123
|
- Claude Code / OpenCode:/complete-task {task-ref}
|
|
148
124
|
- Gemini CLI:/{{project}}:complete-task {task-ref}
|
|
149
125
|
- Codex CLI:$complete-task {task-ref}
|
|
150
126
|
```
|
|
151
127
|
|
|
152
|
-
`watch-pr`
|
|
128
|
+
`watch-pr` 为主路径;上面的 `complete-task` 备选块只跳过主动轮询,不跳过 required checks,也不保证立即归档。
|
|
153
129
|
|
|
154
130
|
## 注意事项
|
|
155
131
|
|
|
156
132
|
- 必须检查分支中的全部提交,而不是只看最后一个
|
|
157
133
|
- `create-pr` 不能把 type label 映射委托给其他技能,必须在获取到 `{task-id}` 时于本技能内内联处理
|
|
158
|
-
-
|
|
134
|
+
- summary marker 与当前 HEAD 由 `platform-pr summary-sync` 统一包装
|
|
159
135
|
- 如果当前分支已存在 PR,直接告知用户 PR URL 并结束,不做重复同步
|
|
160
136
|
- 如果从 Issue 继承元数据失败,继续使用 task.md 和分支推断兜底
|
|
161
137
|
|
|
@@ -165,5 +141,5 @@ node .agents/scripts/validate-artifact.js gate create-pr .agents/workspace/activ
|
|
|
165
141
|
- 推送被拒绝:建议执行 `git pull --rebase`
|
|
166
142
|
- 已存在 PR:直接输出当前 PR URL 并结束
|
|
167
143
|
- 无法访问 Issue 元数据:跳过继承并继续
|
|
168
|
-
- PR 创建失败且已关联 `{task-id}`:调用 `
|
|
144
|
+
- PR 创建失败且已关联 `{task-id}`:调用 `agent-infra-internal task-warning {task-id} add --step create-pr --severity ACTION_REQUIRED --code PR_CREATE_FAILED --target pr --message "{reason}" --action "修复推送、权限或平台问题后重跑 create-pr"` 提交结构化 warning 意图,不写 `pr_number`
|
|
169
145
|
- PR 摘要评论失败且已关联 `{task-id}`:按 `.agents/rules/pr-sync.md` 记录 `COMMENT_SYNC_FAILED` 告警,不回滚已创建 PR
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
# PR Summary Comment
|
|
1
|
+
# Publish the PR Summary Comment
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
After PR creation, run `agent-infra-internal platform-pr summary-context {task-id}` and aggregate the reviewer summary only from its canonical artifacts according to `.agents/rules/pr-sync.md`.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Write the plain summary body to a temporary file, then run:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
9
|
+
--agent {agent} --body-file {summary-body-file}
|
|
10
|
+
```
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
- When a matching summary comment already exists, PATCH only when the body changed; otherwise skip the write
|
|
11
|
-
- In this skill, summary sync failures follow the existing `create-pr` error handling and must not roll back an already-created PR
|
|
12
|
-
- Populate `{manual-validation-section}` per the aggregation rules in `.agents/rules/pr-sync.md`: include only post-code-stage checks that the AI cannot close on its own and that require a human to execute or judge; sources are `review-code*` "Manual Validation Items" plus `code*` items that satisfy the admission boundary; each item must state "what to verify + location + why only a human can verify it". Render in two branches: **with retained items** → `### ⚠️ Manual Verification Required` heading + item list; **with none** → `### ✅ No Manual Verification Needed` heading + a single line (no ⚠️, no old list placeholder)
|
|
13
|
-
|
|
14
|
-
## Result Reporting
|
|
15
|
-
|
|
16
|
-
Reuse the normalized result string from `.agents/rules/pr-sync.md` in this skill's user output or `Create PR` Activity Log.
|
|
12
|
+
The caller does not add markers, HEAD metadata, or comment API parameters. A summary failure records the existing `create-pr` warning and does not roll back the PR.
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
# PR 摘要评论发布
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
创建 PR 后先调用 `agent-infra-internal platform-pr summary-context {task-id}`,只根据返回的 canonical 产物按 `.agents/rules/pr-sync.md` 聚合 reviewer 摘要。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
把纯摘要正文写入临时文件,再调用:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr summary-sync {task-id} \
|
|
9
|
+
--agent {agent} --body-file {summary-body-file}
|
|
10
|
+
```
|
|
8
11
|
|
|
9
|
-
-
|
|
10
|
-
- PR 已存在同标记评论时,只在正文变化时 PATCH;否则跳过写入
|
|
11
|
-
- 本 skill 中,摘要同步失败沿用 `create-pr` 的现有错误处理,不回滚已经创建的 PR
|
|
12
|
-
- 按 `.agents/rules/pr-sync.md` 的聚合规则填充 `{manual-validation-section}`:只收进入 code 阶段后 AI 无法自行关闭、需要人实际执行或判断的校验点;来源为 `review-code*` 的「人工校验项」以及 `code*` 中满足准入边界的校验点;每条写明「校验什么 + 定位 + 为什么只能由人校验」。按两分支渲染:**有保留项** → `### ⚠️ 需人工校验` 标题 + 条目列表;**无保留项** → `### ✅ 无需人工校验` 标题 + 单行说明(不带 ⚠️、不写旧的列表占位)
|
|
13
|
-
|
|
14
|
-
## 结果回传
|
|
15
|
-
|
|
16
|
-
将 `.agents/rules/pr-sync.md` 中的结果回传字符串用于当前 skill 的用户输出或 `Create PR` Activity Log 复用。
|
|
12
|
+
调用方不添加 marker、HEAD 或评论 API 参数。摘要失败沿用 `create-pr` 错误处理并记录 warning,不回滚已创建 PR。结果映射沿用 `.agents/rules/pr-sync.md`。
|
|
@@ -35,12 +35,14 @@ git rev-parse v<prev-version>
|
|
|
35
35
|
|
|
36
36
|
### 3. Reference Historical Release Notes Format and Categories
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Load one typed release-note context, then use a predefined complete category list:
|
|
39
39
|
|
|
40
40
|
Read `.agents/rules/release-commands.md` before this step.
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
|
|
43
|
+
agent-infra-internal platform-release-notes context \
|
|
44
|
+
--from-tag "v<prev-version>" --to-tag "v<version>" \
|
|
45
|
+
--branch "<base-branch>" --history-limit 3
|
|
44
46
|
```
|
|
45
47
|
|
|
46
48
|
**Part B: Complete Category List**
|
|
@@ -58,38 +60,11 @@ Read `.agents/rules/release-commands.md` before this step.
|
|
|
58
60
|
|
|
59
61
|
### 4. Collect Merged PRs and Contributors
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Get tag dates
|
|
65
|
-
git log v<prev-version> --format=%aI -1
|
|
66
|
-
git log v<version> --format=%aI -1
|
|
67
|
-
|
|
68
|
-
# Get merged PRs in range by following the merged-PR query command in `.agents/rules/release-commands.md`
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Also collect direct commits without PRs:
|
|
72
|
-
```bash
|
|
73
|
-
git log v<prev-version>..v<version> --format="%H %s" --no-merges
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Collect collaborative contributors from commit `Co-authored-by` trailers:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
git log v<prev-version>..v<version> \
|
|
80
|
-
--no-merges \
|
|
81
|
-
--format='%(trailers:key=Co-authored-by,valueonly,unfold)' \
|
|
82
|
-
| grep -v '^$' | sort | uniq -c | sort -rn
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Each output line is `Name <email>` and `uniq -c` provides the number of commits where that identity appeared as a co-author within the range.
|
|
63
|
+
Use `pullRequests` and `commits` from Step 3. Each commit's `authors` are normalized platform facts containing the git author and co-authors; the skill does not interpret raw platform fields or email rules.
|
|
86
64
|
|
|
87
65
|
### 5. Collect Related Issues
|
|
88
66
|
|
|
89
|
-
|
|
90
|
-
- Match patterns: `Closes #N`, `Fixes #N`, `Resolves #N` (case-insensitive)
|
|
91
|
-
|
|
92
|
-
Read linked Issues by following `.agents/rules/release-commands.md`.
|
|
67
|
+
Use each PR's `closingIssues` from Step 3. Do not parse platform-specific reference syntax in this generic skill.
|
|
93
68
|
|
|
94
69
|
### 6. Classify Changes
|
|
95
70
|
|
|
@@ -130,14 +105,13 @@ If no historical release notes exist, use the following default Markdown format:
|
|
|
130
105
|
3. Description: Use PR title, remove `type(scope):` prefix, capitalize first letter
|
|
131
106
|
4. **Contributor collection**:
|
|
132
107
|
- **Data sources**:
|
|
133
|
-
- PR authors
|
|
134
|
-
- Commit co-authors from
|
|
135
|
-
- Issue reporters from
|
|
108
|
+
- PR authors from the typed context
|
|
109
|
+
- Commit co-authors from the typed context's commit `authors`
|
|
110
|
+
- Issue reporters from typed `closingIssues[].author`
|
|
136
111
|
- **Contribution count**: `PR count + co-authored commit count` for the same identity, merged across both sources
|
|
137
112
|
- **Name -> `@login` mapping**:
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
- Otherwise use a Name heuristic: take the first token before a space and lowercase it, for example `Claude Opus 4.6 (1M context)` -> `@claude`, `Codex` -> `@codex`, `Gemini` -> `@gemini`
|
|
113
|
+
- For `platform-user` or `platform-noreply`, use the lowercased `login`
|
|
114
|
+
- Only for `unresolved`, use the Name heuristic: take the first token before a space and lowercase it
|
|
141
115
|
- If the login already appears in the PR author list, merge counts into that login so `Claude` and `@claude` do not become separate entries
|
|
142
116
|
- Merge all Name variants that map to the same login before counting and sorting; for example, `Claude` and `Claude Opus 4.6 (1M context)` should both collapse into `@claude`
|
|
143
117
|
- Preserve bot identities as-is, for example `dependabot[bot]`
|
|
@@ -170,7 +144,12 @@ NOTES_FILE="$(mktemp "${TMPDIR:-/tmp}/agent-infra-release-notes.XXXXXX")"
|
|
|
170
144
|
|
|
171
145
|
Write the notes content to `$NOTES_FILE`.
|
|
172
146
|
|
|
173
|
-
9.2
|
|
147
|
+
9.2 Call the typed publish intent (use `$NOTES_FILE` for `{notes-file}`); it updates an existing Release or creates a missing one:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
agent-infra-internal platform-release-notes publish \
|
|
151
|
+
--tag "v<version>" --title "v<version>" --notes-file "$NOTES_FILE"
|
|
152
|
+
```
|
|
174
153
|
|
|
175
154
|
9.3 Remove the temp file whether publishing succeeds or fails:
|
|
176
155
|
|
|
@@ -35,12 +35,14 @@ git rev-parse v<prev-version>
|
|
|
35
35
|
|
|
36
36
|
### 3. 参考历史发布说明格式与分类
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
读取一次 typed 发布说明上下文,并参考预定义的完整分类清单:
|
|
39
39
|
|
|
40
40
|
执行前先读取 `.agents/rules/release-commands.md`。
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
|
|
43
|
+
agent-infra-internal platform-release-notes context \
|
|
44
|
+
--from-tag "v<prev-version>" --to-tag "v<version>" \
|
|
45
|
+
--branch "<base-branch>" --history-limit 3
|
|
44
46
|
```
|
|
45
47
|
|
|
46
48
|
**Part B:完整分类清单**
|
|
@@ -58,38 +60,11 @@ git rev-parse v<prev-version>
|
|
|
58
60
|
|
|
59
61
|
### 4. 收集已合并的 PR 与贡献者
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# 获取标签日期
|
|
65
|
-
git log v<prev-version> --format=%aI -1
|
|
66
|
-
git log v<version> --format=%aI -1
|
|
67
|
-
|
|
68
|
-
# 获取范围内已合并的 PR(按 `.agents/rules/release-commands.md` 的 merged PR 查询命令执行)
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
同时收集没有 PR 的直接提交:
|
|
72
|
-
```bash
|
|
73
|
-
git log v<prev-version>..v<version> --format="%H %s" --no-merges
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
从 commit `Co-authored-by` trailer 中收集协作贡献者:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
git log v<prev-version>..v<version> \
|
|
80
|
-
--no-merges \
|
|
81
|
-
--format='%(trailers:key=Co-authored-by,valueonly,unfold)' \
|
|
82
|
-
| grep -v '^$' | sort | uniq -c | sort -rn
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
输出每行一个 `Name <email>`(`uniq -c` 给出该身份在范围内作为 co-author 的 commit 数)。
|
|
63
|
+
使用步骤 3 返回的 `pullRequests` 与 `commits`。每个 commit 的 `authors` 已按平台事实规范化并包含 git author 与 co-author;技能不读取平台原始字段或邮箱规则。
|
|
86
64
|
|
|
87
65
|
### 5. 收集关联 Issue
|
|
88
66
|
|
|
89
|
-
|
|
90
|
-
- 匹配模式:`Closes #N`、`Fixes #N`、`Resolves #N`(不区分大小写)
|
|
91
|
-
|
|
92
|
-
按 `.agents/rules/release-commands.md` 的关联 Issue 查询命令读取。
|
|
67
|
+
使用步骤 3 中每个 PR 的 `closingIssues`,不在通用技能中解析平台专有引用语法。
|
|
93
68
|
|
|
94
69
|
### 6. 分类变更
|
|
95
70
|
|
|
@@ -131,13 +106,12 @@ git log v<prev-version>..v<version> \
|
|
|
131
106
|
4. **贡献者搜集**:
|
|
132
107
|
- **数据源**:
|
|
133
108
|
- PR author:来自 `.agents/rules/release-commands.md` 中已合并 PR 查询规则
|
|
134
|
-
- Commit co-authors:来自步骤
|
|
135
|
-
- Issue reporters:来自步骤
|
|
109
|
+
- Commit co-authors:来自步骤 3 typed context 的 commit `authors`
|
|
110
|
+
- Issue reporters:来自步骤 3 typed context 的 `closingIssues[].author`
|
|
136
111
|
- **贡献数定义**:`该人的 PR 数 + 该人作为 co-author 的 commit 数`(同一身份跨来源合并计数)
|
|
137
112
|
- **Name → `@login` 映射**:
|
|
138
|
-
- `
|
|
139
|
-
-
|
|
140
|
-
- 否则按 Name 启发式:取首个空格前的 token 并转为小写(例如 `Claude Opus 4.6 (1M context)` → `@claude`、`Codex` → `@codex`、`Gemini` → `@gemini`)
|
|
113
|
+
- `resolution` 为 `platform-user` 或 `platform-noreply` 时直接采用小写 `login`
|
|
114
|
+
- 仅当 `resolution` 为 `unresolved` 时按 Name 启发式:取首个空格前的 token 并转为小写
|
|
141
115
|
- 已出现在 PR author 列表中的 login,必须按该 login 合并计数,避免把 `Claude` 和 `@claude` 拆成两个条目
|
|
142
116
|
- 同一 login 的所有 Name 变体都必须归并后再计数与排序;例如 `Claude` 与 `Claude Opus 4.6 (1M context)` 都映射到 `@claude` 时,应先合并为同一个贡献者
|
|
143
117
|
- Bot 身份保留原样(如 `dependabot[bot]`)
|
|
@@ -170,7 +144,12 @@ NOTES_FILE="$(mktemp "${TMPDIR:-/tmp}/agent-infra-release-notes.XXXXXX")"
|
|
|
170
144
|
|
|
171
145
|
把 notes 内容写入 `$NOTES_FILE`。
|
|
172
146
|
|
|
173
|
-
9.2
|
|
147
|
+
9.2 调用 typed publish intent(命令中的 `{notes-file}` 用 `$NOTES_FILE`);它会更新已存在的 Release,不存在时创建:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
agent-infra-internal platform-release-notes publish \
|
|
151
|
+
--tag "v<version>" --title "v<version>" --notes-file "$NOTES_FILE"
|
|
152
|
+
```
|
|
174
153
|
|
|
175
154
|
9.3 无论发布成功或失败,都删除临时文件:
|
|
176
155
|
|