@fitlab-ai/agent-infra 0.8.5 → 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 +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/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 +36 -22
- 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/index.js +6 -6
- package/dist/lib/sandbox/mounts.js +36 -0
- package/dist/lib/sandbox/recovery.js +562 -0
- 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 +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/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/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/{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/capture.ts +29 -3
- package/lib/sandbox/commands/create.ts +43 -25
- 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/index.ts +6 -6
- package/lib/sandbox/mounts.ts +55 -0
- package/lib/sandbox/recovery.ts +828 -0
- 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 +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} +17 -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} +199 -406
- 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/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/review-handshake.en.md +8 -5
- package/templates/.agents/rules/review-handshake.zh-CN.md +8 -5
- 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 +1 -9
- 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 +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 +11 -7
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +11 -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-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/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 +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.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
|
@@ -1,155 +1,20 @@
|
|
|
1
1
|
# Issue 字段
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Issue Type 与 pinned fields 统一由 `platform-issue` intent 动态读取组织 schema 并同步:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- 如果 `has_push=false`,跳过直接字段写入并继续流程。
|
|
9
|
-
- 每次写入前都读取组织当前 Issue Type schema;不要硬编码字段集合。
|
|
10
|
-
- 缺失、空值或无法解析的值直接跳过。字段写入是 best-effort,不应阻断工作流。
|
|
11
|
-
|
|
12
|
-
## 支持的 task.md frontmatter
|
|
5
|
+
```bash
|
|
6
|
+
agent-infra-internal platform-issue sync {task-id} --agent {agent} --issue-type --fields
|
|
7
|
+
```
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
## 支持字段
|
|
15
10
|
|
|
16
11
|
| task.md 字段 | Issue 字段 | 值格式 |
|
|
17
12
|
|---|---|---|
|
|
18
|
-
| `priority` | `Priority` | `Urgent`、`High`、`Medium
|
|
19
|
-
| `effort` | `Effort` | `High`、`Medium
|
|
13
|
+
| `priority` | `Priority` | `Urgent`、`High`、`Medium`、`Low`,支持紧急/高/中/低本地化输入 |
|
|
14
|
+
| `effort` | `Effort` | `High`、`Medium`、`Low`,支持高/中/低本地化输入 |
|
|
20
15
|
| `start_date` | `Start date` | `YYYY-MM-DD` |
|
|
21
16
|
| `target_date` | `Target date` | `YYYY-MM-DD` |
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| 输入 | 写入选项 |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `紧急` | `Urgent` |
|
|
28
|
-
| `高` | `High` |
|
|
29
|
-
| `中` | `Medium` |
|
|
30
|
-
| `低` | `Low` |
|
|
31
|
-
|
|
32
|
-
AI agent 在创建或修订任务时可根据标题与描述推断 `priority` 和 `effort`。日期字段为事实值、不估算:`start_date` 由 analyze 阶段写入(= 分析开始日),`target_date` 由 complete 阶段写入(= 完成日)。`task.md` 中人工填写的值优先。
|
|
33
|
-
|
|
34
|
-
## GraphQL 参考
|
|
35
|
-
|
|
36
|
-
读取 Issue Type pinned fields:
|
|
37
|
-
|
|
38
|
-
```graphql
|
|
39
|
-
query($owner:String!){
|
|
40
|
-
organization(login:$owner){ issueTypes(first:20){ nodes{
|
|
41
|
-
id name
|
|
42
|
-
pinnedFields{
|
|
43
|
-
__typename
|
|
44
|
-
... on IssueFieldSingleSelect{ id name options{ id name } }
|
|
45
|
-
... on IssueFieldDate{ id name }
|
|
46
|
-
... on IssueFieldText{ id name }
|
|
47
|
-
... on IssueFieldNumber{ id name }
|
|
48
|
-
}
|
|
49
|
-
} } }
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
读取单个 Issue 的当前 type 与字段值:
|
|
54
|
-
|
|
55
|
-
```graphql
|
|
56
|
-
query($owner:String!,$name:String!,$number:Int!){
|
|
57
|
-
repository(owner:$owner,name:$name){ issue(number:$number){
|
|
58
|
-
id
|
|
59
|
-
issueType{ name pinnedFields{
|
|
60
|
-
__typename
|
|
61
|
-
... on IssueFieldSingleSelect{ id name options{ id name } }
|
|
62
|
-
... on IssueFieldDate{ id name }
|
|
63
|
-
... on IssueFieldText{ id name }
|
|
64
|
-
... on IssueFieldNumber{ id name }
|
|
65
|
-
} }
|
|
66
|
-
issueFieldValues(first:50){ nodes{
|
|
67
|
-
__typename
|
|
68
|
-
... on IssueFieldSingleSelectValue{ name optionId field{ ... on IssueFieldSingleSelect{ name } } }
|
|
69
|
-
... on IssueFieldDateValue{ value field{ ... on IssueFieldDate{ name } } }
|
|
70
|
-
... on IssueFieldTextValue{ value field{ ... on IssueFieldText{ name } } }
|
|
71
|
-
... on IssueFieldNumberValue{ value field{ ... on IssueFieldNumber{ name } } }
|
|
72
|
-
} }
|
|
73
|
-
} }
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
写入或清空字段,以及更新 Issue Type:
|
|
78
|
-
|
|
79
|
-
```graphql
|
|
80
|
-
mutation($issueId:ID!,$issueFields:[IssueFieldCreateOrUpdateInput!]!){
|
|
81
|
-
setIssueFieldValue(input:{issueId:$issueId,issueFields:$issueFields}){ issue{ id } }
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
mutation($issueId:ID!,$issueTypeId:ID){
|
|
85
|
-
updateIssueIssueType(input:{issueId:$issueId,issueTypeId:$issueTypeId}){ issue{ id } }
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`IssueFieldCreateOrUpdateInput` 支持 `fieldId`、`singleSelectOptionId`、`dateValue`、`textValue`、`numberValue` 和 `delete`。
|
|
90
|
-
|
|
91
|
-
最小命令壳:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
gh api graphql \
|
|
95
|
-
-f query='query($owner:String!){organization(login:$owner){issueTypes(first:20){nodes{id name pinnedFields{__typename ... on IssueFieldSingleSelect{id name options{id name}} ... on IssueFieldDate{id name} ... on IssueFieldText{id name} ... on IssueFieldNumber{id name}}}}}}' \
|
|
96
|
-
-F owner="{owner}"
|
|
97
|
-
|
|
98
|
-
gh api graphql \
|
|
99
|
-
-f query='query($owner:String!,$name:String!,$number:Int!){repository(owner:$owner,name:$name){issue(number:$number){id issueType{name pinnedFields{__typename ... on IssueFieldSingleSelect{id name options{id name}} ... on IssueFieldDate{id name} ... on IssueFieldText{id name} ... on IssueFieldNumber{id name}}} issueFieldValues(first:50){nodes{__typename ... on IssueFieldSingleSelectValue{name optionId field{... on IssueFieldSingleSelect{name}}} ... on IssueFieldDateValue{value field{... on IssueFieldDate{name}}} ... on IssueFieldTextValue{value field{... on IssueFieldText{name}}} ... on IssueFieldNumberValue{value field{... on IssueFieldNumber{name}}}}}}}}' \
|
|
100
|
-
-F owner="{owner}" -F name="{repo}" -F number="{issue-number}"
|
|
101
|
-
|
|
102
|
-
gh api graphql --input - <<'JSON'
|
|
103
|
-
{
|
|
104
|
-
"query": "mutation($issueId:ID!,$issueFields:[IssueFieldCreateOrUpdateInput!]!){setIssueFieldValue(input:{issueId:$issueId,issueFields:$issueFields}){issue{id}}}",
|
|
105
|
-
"variables": {
|
|
106
|
-
"issueId": "{issue-id}",
|
|
107
|
-
"issueFields": [
|
|
108
|
-
{ "fieldId": "{field-id}", "singleSelectOptionId": "{option-id}" },
|
|
109
|
-
{ "fieldId": "{date-field-id}", "dateValue": "YYYY-MM-DD" },
|
|
110
|
-
{ "fieldId": "{old-field-id}", "delete": true }
|
|
111
|
-
]
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
JSON
|
|
115
|
-
|
|
116
|
-
gh api graphql --input - <<'JSON'
|
|
117
|
-
{
|
|
118
|
-
"query": "mutation($issueId:ID!,$issueTypeId:ID){updateIssueIssueType(input:{issueId:$issueId,issueTypeId:$issueTypeId}){issue{id}}}",
|
|
119
|
-
"variables": {
|
|
120
|
-
"issueId": "{issue-id}",
|
|
121
|
-
"issueTypeId": "{issue-type-id}"
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
JSON
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
未列入本地化映射表的值会按字面量 option name 处理;这是为了支持规范英文输入。
|
|
128
|
-
|
|
129
|
-
## 流程 A:创建 Issue 后写入字段
|
|
130
|
-
|
|
131
|
-
1. 如果 `has_push` 不是 `true`,停止本流程。
|
|
132
|
-
2. 从 `$upstream_repo` 解析 `{owner}`,查询 `organization.issueTypes`。
|
|
133
|
-
3. 选择目标 Issue Type 的 `pinnedFields`。
|
|
134
|
-
4. 从 `task.md` 读取非空的 `priority`、`effort`、`start_date` 和 `target_date`。
|
|
135
|
-
5. 对每个值:
|
|
136
|
-
- 目标 type 未 pin 同名字段时跳过。
|
|
137
|
-
- single-select 字段先规范化本地化输入,再按 option name 匹配。
|
|
138
|
-
- date 字段只写入 `YYYY-MM-DD` 值。
|
|
139
|
-
6. 用所有已解析 input 一次性提交 `setIssueFieldValue` mutation。没有 input 时跳过。
|
|
140
|
-
|
|
141
|
-
## 流程 B:设置 Type 并迁移字段
|
|
142
|
-
|
|
143
|
-
现有 Issue Type 发生变更时使用本流程。
|
|
144
|
-
|
|
145
|
-
1. 如果 `has_push` 不是 `true`,停止本流程。
|
|
146
|
-
2. 读取 Issue id、当前 Issue Type、pinned fields 和当前字段值。
|
|
147
|
-
3. 查询组织 Issue Type 列表,解析目标 Issue Type id。
|
|
148
|
-
4. 用目标 Issue Type id 执行 `updateIssueIssueType`。
|
|
149
|
-
5. 解析目标 type 的 pinned fields。
|
|
150
|
-
6. 对每个旧字段值:
|
|
151
|
-
- 目标 type 有同名字段时重新写入该值。single-select 值按 option name 在目标 type 中重新解析 option id。
|
|
152
|
-
- 目标 type 没有同名字段时,对旧字段发送 `{ fieldId, delete: true }`。
|
|
153
|
-
7. 用所有迁移 input 一次性提交 `setIssueFieldValue` mutation。迁移 input 为空时跳过。
|
|
18
|
+
适配层每次从组织读取当前 Issue Type schema,不硬编码 Type、field 或 option ID。Type 变化时按字段名迁移仍受支持的值,并清理目标 Type 不再支持的旧字段。个人仓库或 `push=false` 时只跳过 Type/fields operations,其他同步继续。
|
|
154
19
|
|
|
155
|
-
|
|
20
|
+
调用方只声明业务时机,不直接拼 GraphQL;结果和错误处理遵循 `.agents/rules/issue-sync.md`。
|
|
@@ -1,5 +1,45 @@
|
|
|
1
|
-
#
|
|
1
|
+
# PR Platform Intents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
PR lookup, creation, binding, and metadata synchronization go through typed internal intents. Skills decide branches and write titles/bodies; they do not assemble platform commands.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Inspect
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent-infra-internal platform-pr inspect {task-id}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Create or recover
|
|
12
|
+
|
|
13
|
+
Write the title and body to files, then run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
agent-infra-internal platform-pr create {task-id} \
|
|
17
|
+
--agent {agent} --base {target-branch} --head {current-branch} \
|
|
18
|
+
--title-file {title-file} --body-file {body-file}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The core performs exact upstream/head/base lookup first. One match is reused, zero creates, and multiple matches fail closed. Unknown create outcomes are reconciled by the same exact identity rather than retried blindly. `--dry-run` returns only the plan.
|
|
22
|
+
|
|
23
|
+
## Bind
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
agent-infra-internal platform-pr bind {task-id} --pr {pr-number} --agent {agent}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Conflicting bindings fail without changing `task.md`.
|
|
30
|
+
|
|
31
|
+
## Synchronize metadata
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
agent-infra-internal platform-pr sync {task-id} \
|
|
35
|
+
--agent {agent} --metadata --closing-issue
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The core copies type / `in:` labels, assignee, a specific milestone, and the closing association from the linked Issue. Permission-bound operations report `skipped` under top-level `degraded`; the Issue is never updated in reverse.
|
|
39
|
+
|
|
40
|
+
## Status contract
|
|
41
|
+
|
|
42
|
+
- `planned|applied|no-op|degraded`: exit 0.
|
|
43
|
+
- `failed`: exit 1.
|
|
44
|
+
- `blocked`: exit 2 for authentication, network, or unknown outcome.
|
|
45
|
+
- Metadata or summary failures never roll back an already-created PR.
|
|
@@ -1,237 +1,32 @@
|
|
|
1
|
-
#
|
|
1
|
+
# PR Platform Intents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
PR lookup, creation, binding, and metadata synchronization go through typed internal intents. Skills decide branches and write titles/bodies; they do not assemble platform commands.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
Verify that GitHub CLI is available and authenticated:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
gh auth status
|
|
11
|
-
gh repo view --json nameWithOwner
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
If either command fails, stop or degrade according to the calling skill.
|
|
15
|
-
|
|
16
|
-
## Upstream Repository and Permission Detection
|
|
17
|
-
|
|
18
|
-
Before any later `gh issue` or `gh api "repos/..."` call, follow `.agents/rules/issue-sync.md` to resolve `upstream_repo`, `has_triage`, and `has_push`.
|
|
19
|
-
|
|
20
|
-
- every later `gh issue` command must use `-R "$upstream_repo"`
|
|
21
|
-
- every later repository-scoped `gh api` command must use `"repos/$upstream_repo/..."`
|
|
22
|
-
- keep `gh pr *` commands on the current repository without adding `-R`
|
|
23
|
-
- keep organization-scoped commands such as `gh api "orgs/{owner}/..."` unchanged
|
|
24
|
-
|
|
25
|
-
## Issue Template Detection
|
|
26
|
-
|
|
27
|
-
Detect GitHub Issue Forms with:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
rg --files .github/ISSUE_TEMPLATE -g '*.yml' -g '!config.yml'
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Read matching form files locally before creating the Issue. If the directory is missing or no form matches the task, use the caller's fallback body format.
|
|
34
|
-
|
|
35
|
-
Typical candidate templates:
|
|
36
|
-
- `bug_report.yml` for bug work
|
|
37
|
-
- `question.yml` for question or investigation work
|
|
38
|
-
- `feature_request.yml` for feature work
|
|
39
|
-
- `documentation.yml` for documentation work
|
|
40
|
-
- `other.yml` as the general fallback
|
|
41
|
-
|
|
42
|
-
For GitHub Issue Forms, inspect the matched form's:
|
|
43
|
-
- `name`
|
|
44
|
-
- `type:`
|
|
45
|
-
- `labels:`
|
|
46
|
-
- `body:`
|
|
47
|
-
|
|
48
|
-
Field handling rules:
|
|
49
|
-
- `textarea` and `input`: use `attributes.label` as the markdown heading and fill values from task.md
|
|
50
|
-
- `markdown`: skip template explanation prose
|
|
51
|
-
- `dropdown` and `checkboxes`: skip
|
|
52
|
-
- when task.md lacks a suitable value, write `N/A`
|
|
53
|
-
|
|
54
|
-
Suggested field mapping:
|
|
55
|
-
|
|
56
|
-
| Template field hint | task.md source |
|
|
57
|
-
|---|---|
|
|
58
|
-
| `summary`, `title` | task title |
|
|
59
|
-
| `description`, `problem`, `what happened`, `issue-description`, `current-content` | task description |
|
|
60
|
-
| `solution`, `requirements`, `steps`, `suggested-content`, `impact`, `context`, `alternatives`, `expected` | requirements list |
|
|
61
|
-
| other `textarea` / `input` fields | task description, otherwise `N/A` |
|
|
62
|
-
|
|
63
|
-
## Read and Create Issues
|
|
64
|
-
|
|
65
|
-
Read an Issue:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
gh issue view {issue-number} -R "$upstream_repo" --json number,title,body,labels,state,milestone,url
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Create an Issue:
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
gh issue create -R "$upstream_repo" --title "{title}" --body "{body}" --assignee @me {label-args} {milestone-arg}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
- expand `{label-args}` into repeated `--label` flags from the validated label list
|
|
78
|
-
- pass `{label-args}` only when `has_triage=true`; otherwise omit it and continue
|
|
79
|
-
- omit all `--label` flags when nothing valid remains
|
|
80
|
-
- pass `{milestone-arg}` only when `has_triage=true`; otherwise omit it and continue
|
|
81
|
-
- omit `{milestone-arg}` entirely when no milestone should be set
|
|
82
|
-
|
|
83
|
-
Set the Issue Type:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
owner_type=$(gh api "repos/$upstream_repo" --jq '.owner.type // empty' 2>/dev/null || true)
|
|
87
|
-
if [ "$owner_type" = "Organization" ]; then
|
|
88
|
-
owner=${upstream_repo%%/*}
|
|
89
|
-
gh api "orgs/$owner/issue-types" --jq '.[].name'
|
|
90
|
-
gh api "repos/$upstream_repo/issues/{issue-number}" -X PATCH -f type="{issue-type}" --silent
|
|
91
|
-
fi
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
- set the Issue Type only when `has_push=true`; otherwise skip and continue
|
|
95
|
-
- query and set Issue Type only when the owner type is `Organization`; skip and continue for user repositories or failed owner type probes
|
|
96
|
-
- when changing an existing Issue Type, read `.agents/rules/issue-fields.md` and use Flow B so same-name pinned fields are migrated and fields absent from the new type are cleared
|
|
97
|
-
|
|
98
|
-
## Update Issues
|
|
99
|
-
|
|
100
|
-
Use this shape when updating titles, labels, assignees, or milestones:
|
|
5
|
+
## Inspect
|
|
101
6
|
|
|
102
7
|
```bash
|
|
103
|
-
|
|
8
|
+
agent-infra-internal platform-pr inspect {task-id}
|
|
104
9
|
```
|
|
105
10
|
|
|
106
|
-
|
|
107
|
-
- `--title "{title}"`
|
|
108
|
-
- `--add-label "{label}"` (only when `has_triage=true`)
|
|
109
|
-
- `--remove-label "{label}"` (only when `has_triage=true`)
|
|
110
|
-
- `--add-assignee @me`
|
|
111
|
-
- `--milestone "{milestone}"` (only when `has_triage=true`)
|
|
112
|
-
|
|
113
|
-
Do not pre-check assignee permissions. If the assignee command fails, silently skip it per the caller's contract.
|
|
114
|
-
|
|
115
|
-
Close an Issue:
|
|
11
|
+
## Create or recover
|
|
116
12
|
|
|
117
13
|
```bash
|
|
118
|
-
|
|
14
|
+
agent-infra-internal platform-pr create {task-id} \
|
|
15
|
+
--agent {agent} --base {target-branch} --head {current-branch} \
|
|
16
|
+
--title-file {title-file} --body-file {body-file}
|
|
119
17
|
```
|
|
120
18
|
|
|
121
|
-
|
|
19
|
+
The core performs exact upstream/head/base lookup. One match is reused, zero creates, and multiple matches fail closed. Unknown create outcomes are reconciled by exact identity. `--dry-run` returns only the plan.
|
|
122
20
|
|
|
123
|
-
|
|
21
|
+
## Bind and synchronize
|
|
124
22
|
|
|
125
23
|
```bash
|
|
126
|
-
|
|
127
|
-
```
|
|
24
|
+
agent-infra-internal platform-pr bind {task-id} --pr {pr-number} --agent {agent}
|
|
128
25
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
`find-existing-task.js` only consumes stdin and does not call `gh` directly. The AI selects the pipeline command for the host OS.
|
|
132
|
-
|
|
133
|
-
POSIX (bash / zsh):
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
set -o pipefail
|
|
137
|
-
gh api "repos/$upstream_repo/issues/{issue-number}/comments" \
|
|
138
|
-
--paginate --jq '.[] | @json' \
|
|
139
|
-
| node .agents/scripts/find-existing-task.js
|
|
26
|
+
agent-infra-internal platform-pr sync {task-id} \
|
|
27
|
+
--agent {agent} --metadata --closing-issue
|
|
140
28
|
```
|
|
141
29
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
```powershell
|
|
145
|
-
$ErrorActionPreference = 'Stop'
|
|
146
|
-
gh api "repos/$upstream_repo/issues/{issue-number}/comments" `
|
|
147
|
-
--paginate --jq '.[] | @json' |
|
|
148
|
-
node .agents/scripts/find-existing-task.js
|
|
149
|
-
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
On PowerShell 5.1, explicitly enable UTF-8 stdio first; otherwise the pipe may corrupt multibyte characters:
|
|
153
|
-
|
|
154
|
-
```powershell
|
|
155
|
-
[Console]::OutputEncoding = $OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
## PR Template and Metadata Helpers
|
|
159
|
-
|
|
160
|
-
Read a repository PR template when present:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
cat .github/PULL_REQUEST_TEMPLATE.md
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Review recent merged PRs for style:
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
gh pr list --limit 3 --state merged --json number,title,body
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Verify that standard type labels exist before PR metadata sync:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
gh label list --search "type:" --limit 1 --json name --jq 'length'
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
If the result is `0`, run `init-labels` before retrying PR metadata sync.
|
|
179
|
-
|
|
180
|
-
## Read and Create PRs
|
|
181
|
-
|
|
182
|
-
Read a PR:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
gh pr view {pr-number} --json number,title,body,labels,state,milestone,url,files
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
List PRs:
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
gh pr list --state {state} --base {base-branch} --json number,title,url,headRefName,baseRefName
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Find the open PR whose head is the current branch (used by the `commit` push wrap-up):
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
gh pr list --head "{branch}" --state open --json number,url --jq '.[0].url // empty'
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Create a PR:
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
gh pr create --base "{target-branch}" --title "{title}" --assignee @me \
|
|
204
|
-
{label-args} {milestone-arg} \
|
|
205
|
-
--body "$(cat <<'EOF'
|
|
206
|
-
{pr-body}
|
|
207
|
-
EOF
|
|
208
|
-
)"
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
- expand `{label-args}` into repeated `--label "{label}"` flags from the validated label list
|
|
212
|
-
- pass `{label-args}` only when `has_triage=true`; otherwise omit it and continue
|
|
213
|
-
- omit all `--label` flags when nothing valid remains
|
|
214
|
-
- expand `{milestone-arg}` into `--milestone "{milestone}"`
|
|
215
|
-
- pass `{milestone-arg}` only when `has_triage=true`; otherwise omit it and continue
|
|
216
|
-
- omit `{milestone-arg}` entirely when no milestone should be set
|
|
217
|
-
|
|
218
|
-
## Update PRs
|
|
219
|
-
|
|
220
|
-
Update PR titles, labels, or milestones with:
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
gh pr edit {pr-number} {edit-args}
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Common arguments:
|
|
227
|
-
- `--title "{title}"`
|
|
228
|
-
- `--add-label "{label}"`
|
|
229
|
-
- `--remove-label "{label}"`
|
|
230
|
-
- `--milestone "{milestone}"`
|
|
231
|
-
|
|
232
|
-
## Error Handling
|
|
30
|
+
Conflicting bindings do not change `task.md`. Metadata comes from the linked Issue, permission-bound items degrade independently, and an already-created PR is never rolled back.
|
|
233
31
|
|
|
234
|
-
-
|
|
235
|
-
- update failures: warn and continue when the caller marks the action as best-effort
|
|
236
|
-
- insufficient permission: skip direct writes according to the `has_triage` / `has_push` branch and continue
|
|
237
|
-
- `@me` is resolved by `gh` CLI to the authenticated user
|
|
32
|
+
Statuses `planned|applied|no-op|degraded` exit 0, `failed` exits 1, and `blocked` exits 2.
|