@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.
Files changed (467) hide show
  1. package/README.md +6 -1
  2. package/README.zh-CN.md +5 -1
  3. package/bin/cli.ts +2 -2
  4. package/dist/bin/cli.js +2 -2
  5. package/dist/bin/internal-cli.js +103 -0
  6. package/dist/lib/decide.js +81 -90
  7. package/dist/lib/defaults.json +1 -0
  8. package/dist/lib/git/review-snapshot.js +79 -0
  9. package/dist/lib/git/workflow.js +101 -0
  10. package/dist/lib/internal/git-workflow.js +42 -0
  11. package/dist/lib/internal/platform-checks.js +119 -0
  12. package/dist/lib/internal/platform-comment.js +129 -0
  13. package/dist/lib/internal/platform-context.js +46 -0
  14. package/dist/lib/internal/platform-issue.js +142 -0
  15. package/dist/lib/internal/platform-pr.js +146 -0
  16. package/dist/lib/internal/platform-release-notes.js +53 -0
  17. package/dist/lib/internal/release-workflow.js +320 -0
  18. package/dist/lib/internal/task-artifact.js +67 -0
  19. package/dist/lib/internal/task-context.js +43 -0
  20. package/dist/lib/internal/task-event.js +70 -0
  21. package/dist/lib/internal/task-ledger.js +114 -0
  22. package/dist/lib/internal/task-lifecycle.js +58 -0
  23. package/dist/lib/internal/task-short-id.js +83 -0
  24. package/dist/lib/internal/task-snapshot.js +47 -0
  25. package/dist/lib/internal/task-verify.js +50 -0
  26. package/dist/lib/internal/task-warning.js +74 -0
  27. package/dist/lib/platform/adapters.js +14 -0
  28. package/dist/lib/platform/context.js +146 -0
  29. package/dist/lib/platform/github-client.js +124 -0
  30. package/dist/lib/platform/github-release-notes.js +96 -0
  31. package/dist/lib/platform/issue-comments.js +409 -0
  32. package/dist/lib/platform/issue-metadata.js +183 -0
  33. package/dist/lib/platform/issues.js +619 -0
  34. package/dist/lib/platform/merged-pr-equivalence.js +54 -0
  35. package/dist/lib/platform/metadata-labels.js +28 -0
  36. package/dist/lib/platform/pr-checks.js +216 -0
  37. package/dist/lib/platform/pr-summary.js +88 -0
  38. package/dist/lib/platform/pull-request-metadata.js +38 -0
  39. package/dist/lib/platform/pull-requests.js +340 -0
  40. package/dist/lib/platform/release-notes.js +143 -0
  41. package/dist/lib/platform/releases.js +82 -0
  42. package/dist/lib/platform/types.js +22 -0
  43. package/dist/lib/platform/verification-required.js +102 -0
  44. package/dist/lib/platform/verification-sync.js +1014 -0
  45. package/dist/lib/platform/verification.js +6 -0
  46. package/dist/lib/release/channels.js +31 -0
  47. package/dist/lib/release/workflow.js +32 -0
  48. package/dist/lib/render.js +3 -2
  49. package/dist/lib/run/index.js +24 -7
  50. package/dist/lib/sandbox/build-proxy.js +63 -0
  51. package/dist/lib/sandbox/capture.js +25 -3
  52. package/dist/lib/sandbox/commands/create.js +93 -31
  53. package/dist/lib/sandbox/commands/enter.js +34 -11
  54. package/dist/lib/sandbox/commands/list-running.js +10 -8
  55. package/dist/lib/sandbox/commands/rebuild.js +24 -7
  56. package/dist/lib/sandbox/commands/show.js +2 -2
  57. package/dist/lib/sandbox/commands/start.js +53 -15
  58. package/dist/lib/sandbox/image-build.js +2 -1
  59. package/dist/lib/sandbox/index.js +6 -6
  60. package/dist/lib/sandbox/mounts.js +36 -0
  61. package/dist/lib/sandbox/recovery.js +562 -0
  62. package/dist/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  63. package/dist/lib/sandbox/runtimes/base.dockerfile +8 -1
  64. package/dist/lib/sandbox/runtimes/java17.dockerfile +8 -1
  65. package/dist/lib/sandbox/runtimes/java21.dockerfile +8 -1
  66. package/dist/lib/sandbox/runtimes/node20.dockerfile +8 -1
  67. package/dist/lib/sandbox/runtimes/node22.dockerfile +8 -1
  68. package/dist/lib/sandbox/runtimes/python3.dockerfile +8 -1
  69. package/dist/lib/sandbox/shell.js +2 -1
  70. package/dist/lib/sandbox/task-resolver.js +5 -1
  71. package/dist/lib/sandbox/tools.js +19 -0
  72. package/dist/lib/server/protocol.js +5 -5
  73. package/dist/lib/task/activity-log.js +61 -0
  74. package/dist/lib/task/artifact-lifecycle.js +427 -0
  75. package/dist/lib/task/command-options.js +30 -0
  76. package/dist/lib/task/commands/cat.js +36 -6
  77. package/dist/lib/task/commands/decisions.js +80 -46
  78. package/dist/lib/task/commands/files.js +21 -7
  79. package/dist/lib/task/commands/grep.js +55 -7
  80. package/dist/lib/task/commands/issue-body.js +33 -19
  81. package/dist/lib/task/commands/log.js +27 -70
  82. package/dist/lib/task/commands/show.js +20 -7
  83. package/dist/lib/task/commands/status.js +18 -8
  84. package/dist/lib/task/decision-intents.js +154 -0
  85. package/dist/lib/task/decision-items.js +53 -0
  86. package/dist/lib/task/events.js +318 -0
  87. package/dist/lib/task/frontmatter.js +159 -1
  88. package/dist/lib/task/implementation-inputs.js +117 -0
  89. package/dist/lib/task/index.js +12 -9
  90. package/dist/lib/task/issue-form.js +21 -6
  91. package/dist/lib/task/ledger-intents.js +185 -0
  92. package/dist/lib/task/ledger.js +65 -35
  93. package/dist/lib/task/lifecycle.js +484 -0
  94. package/dist/lib/task/resolve-ref.js +152 -32
  95. package/dist/lib/task/review-artifacts.js +101 -0
  96. package/dist/lib/task/review-fingerprint.js +55 -0
  97. package/dist/lib/task/sections.js +358 -4
  98. package/dist/lib/task/short-id.js +292 -7
  99. package/dist/lib/task/snapshot.js +95 -0
  100. package/dist/lib/task/verification-checks.js +8 -0
  101. package/dist/lib/task/verification-config.js +14 -0
  102. package/dist/lib/task/verification-engine.js +923 -0
  103. package/dist/lib/task/verification-review.js +3 -0
  104. package/dist/lib/task/verification-types.js +2 -0
  105. package/dist/lib/task/verification.js +113 -0
  106. package/dist/lib/task/workflow-warning-intents.js +131 -0
  107. package/dist/lib/task/workflow-warnings.js +10 -78
  108. package/dist/lib/task/write.js +241 -0
  109. package/lib/decide.ts +57 -97
  110. package/lib/defaults.json +1 -0
  111. package/lib/git/review-snapshot.ts +73 -0
  112. package/lib/git/workflow.ts +101 -0
  113. package/lib/internal/git-workflow.ts +37 -0
  114. package/lib/internal/platform-checks.ts +101 -0
  115. package/lib/internal/platform-comment.ts +99 -0
  116. package/lib/internal/platform-context.ts +33 -0
  117. package/lib/internal/platform-issue.ts +116 -0
  118. package/lib/internal/platform-pr.ts +119 -0
  119. package/lib/internal/platform-release-notes.ts +55 -0
  120. package/lib/internal/release-workflow.ts +288 -0
  121. package/lib/internal/task-artifact.ts +47 -0
  122. package/lib/internal/task-context.ts +35 -0
  123. package/lib/internal/task-event.ts +51 -0
  124. package/lib/internal/task-ledger.ts +86 -0
  125. package/lib/internal/task-lifecycle.ts +41 -0
  126. package/lib/internal/task-short-id.ts +55 -0
  127. package/lib/internal/task-snapshot.ts +32 -0
  128. package/lib/internal/task-verify.ts +33 -0
  129. package/lib/internal/task-warning.ts +50 -0
  130. package/lib/platform/adapters.ts +30 -0
  131. package/lib/platform/context.ts +164 -0
  132. package/lib/platform/github-client.ts +146 -0
  133. package/lib/platform/github-release-notes.ts +132 -0
  134. package/lib/platform/issue-comments.ts +479 -0
  135. package/lib/platform/issue-metadata.ts +250 -0
  136. package/lib/platform/issues.ts +693 -0
  137. package/lib/platform/merged-pr-equivalence.ts +70 -0
  138. package/lib/platform/metadata-labels.ts +33 -0
  139. package/lib/platform/pr-checks.ts +247 -0
  140. package/lib/platform/pr-summary.ts +90 -0
  141. package/lib/platform/pull-request-metadata.ts +69 -0
  142. package/lib/platform/pull-requests.ts +386 -0
  143. package/lib/platform/release-notes.ts +167 -0
  144. package/lib/platform/releases.ts +71 -0
  145. package/lib/platform/types.ts +74 -0
  146. package/lib/platform/verification-required.ts +109 -0
  147. package/{runtime/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +198 -367
  148. package/lib/platform/verification.ts +11 -0
  149. package/lib/release/channels.ts +30 -0
  150. package/lib/release/workflow.ts +31 -0
  151. package/lib/render.ts +3 -2
  152. package/lib/run/index.ts +25 -7
  153. package/lib/sandbox/build-proxy.ts +94 -0
  154. package/lib/sandbox/capture.ts +29 -3
  155. package/lib/sandbox/commands/create.ts +120 -36
  156. package/lib/sandbox/commands/enter.ts +38 -11
  157. package/lib/sandbox/commands/list-running.ts +10 -8
  158. package/lib/sandbox/commands/rebuild.ts +29 -7
  159. package/lib/sandbox/commands/show.ts +2 -2
  160. package/lib/sandbox/commands/start.ts +50 -16
  161. package/lib/sandbox/image-build.ts +4 -1
  162. package/lib/sandbox/index.ts +6 -6
  163. package/lib/sandbox/mounts.ts +55 -0
  164. package/lib/sandbox/recovery.ts +828 -0
  165. package/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  166. package/lib/sandbox/runtimes/base.dockerfile +8 -1
  167. package/lib/sandbox/runtimes/java17.dockerfile +8 -1
  168. package/lib/sandbox/runtimes/java21.dockerfile +8 -1
  169. package/lib/sandbox/runtimes/node20.dockerfile +8 -1
  170. package/lib/sandbox/runtimes/node22.dockerfile +8 -1
  171. package/lib/sandbox/runtimes/python3.dockerfile +8 -1
  172. package/lib/sandbox/shell.ts +3 -1
  173. package/lib/sandbox/task-resolver.ts +5 -1
  174. package/lib/sandbox/tools.ts +31 -0
  175. package/lib/server/protocol.ts +5 -5
  176. package/lib/task/activity-log.ts +62 -0
  177. package/lib/task/artifact-lifecycle.ts +484 -0
  178. package/lib/task/command-options.ts +32 -0
  179. package/lib/task/commands/cat.ts +22 -9
  180. package/lib/task/commands/decisions.ts +49 -47
  181. package/lib/task/commands/files.ts +14 -6
  182. package/lib/task/commands/grep.ts +34 -7
  183. package/lib/task/commands/issue-body.ts +26 -21
  184. package/lib/task/commands/log.ts +17 -70
  185. package/lib/task/commands/show.ts +14 -6
  186. package/lib/task/commands/status.ts +17 -7
  187. package/lib/task/decision-intents.ts +163 -0
  188. package/lib/task/decision-items.ts +64 -0
  189. package/lib/task/events.ts +320 -0
  190. package/lib/task/frontmatter.ts +202 -2
  191. package/lib/task/implementation-inputs.ts +137 -0
  192. package/lib/task/index.ts +12 -9
  193. package/lib/task/issue-form.ts +24 -6
  194. package/lib/task/ledger-intents.ts +201 -0
  195. package/lib/task/ledger.ts +77 -31
  196. package/lib/task/lifecycle.ts +458 -0
  197. package/lib/task/resolve-ref.ts +197 -36
  198. package/{templates/.agents/scripts/lib/review-artifacts.js → lib/task/review-artifacts.ts} +11 -12
  199. package/{templates/.agents/scripts/lib/post-review-commit.js → lib/task/review-fingerprint.ts} +26 -12
  200. package/lib/task/sections.ts +486 -4
  201. package/lib/task/short-id.ts +403 -9
  202. package/lib/task/snapshot.ts +143 -0
  203. package/lib/task/verification-checks.ts +9 -0
  204. package/lib/task/verification-config.ts +20 -0
  205. package/{templates/.agents/scripts/validate-artifact.js → lib/task/verification-engine.ts} +230 -421
  206. package/lib/task/verification-review.ts +10 -0
  207. package/lib/task/verification-types.ts +29 -0
  208. package/lib/task/verification.ts +156 -0
  209. package/lib/task/workflow-warning-intents.ts +142 -0
  210. package/lib/task/workflow-warnings.ts +10 -78
  211. package/lib/task/write.ts +468 -0
  212. package/package.json +4 -2
  213. package/templates/.agents/README.en.md +4 -3
  214. package/templates/.agents/README.zh-CN.md +4 -3
  215. package/templates/.agents/rules/README.en.md +6 -5
  216. package/templates/.agents/rules/README.zh-CN.md +6 -5
  217. package/templates/.agents/rules/create-issue.en.md +1 -1
  218. package/templates/.agents/rules/create-issue.github.en.md +5 -184
  219. package/templates/.agents/rules/create-issue.github.zh-CN.md +12 -178
  220. package/templates/.agents/rules/create-issue.zh-CN.md +1 -1
  221. package/templates/.agents/rules/human-decision-context.en.md +36 -0
  222. package/templates/.agents/rules/human-decision-context.zh-CN.md +36 -0
  223. package/templates/.agents/rules/issue-fields.github.en.md +4 -148
  224. package/templates/.agents/rules/issue-fields.github.zh-CN.md +9 -144
  225. package/templates/.agents/rules/issue-pr-commands.en.md +43 -3
  226. package/templates/.agents/rules/issue-pr-commands.github.en.md +15 -220
  227. package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +23 -213
  228. package/templates/.agents/rules/issue-pr-commands.zh-CN.md +45 -3
  229. package/templates/.agents/rules/issue-sync.en.md +1 -1
  230. package/templates/.agents/rules/issue-sync.github.en.md +14 -301
  231. package/templates/.agents/rules/issue-sync.github.zh-CN.md +36 -287
  232. package/templates/.agents/rules/issue-sync.zh-CN.md +1 -1
  233. package/templates/.agents/rules/milestone-inference.en.md +1 -1
  234. package/templates/.agents/rules/milestone-inference.github.en.md +7 -119
  235. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +8 -108
  236. package/templates/.agents/rules/milestone-inference.zh-CN.md +1 -1
  237. package/templates/.agents/rules/next-step-output.en.md +12 -11
  238. package/templates/.agents/rules/next-step-output.zh-CN.md +12 -11
  239. package/templates/.agents/rules/no-mid-flow-questions.en.md +3 -3
  240. package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +3 -3
  241. package/templates/.agents/rules/pr-checks-commands.en.md +16 -3
  242. package/templates/.agents/rules/pr-checks-commands.github.en.md +10 -54
  243. package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +19 -47
  244. package/templates/.agents/rules/pr-checks-commands.zh-CN.md +30 -3
  245. package/templates/.agents/rules/pr-sync.en.md +30 -3
  246. package/templates/.agents/rules/pr-sync.github.en.md +12 -115
  247. package/templates/.agents/rules/pr-sync.github.zh-CN.md +26 -104
  248. package/templates/.agents/rules/pr-sync.zh-CN.md +43 -3
  249. package/templates/.agents/rules/release-commands.en.md +2 -2
  250. package/templates/.agents/rules/release-commands.github.en.md +10 -40
  251. package/templates/.agents/rules/release-commands.github.zh-CN.md +9 -39
  252. package/templates/.agents/rules/release-commands.zh-CN.md +2 -2
  253. package/templates/.agents/rules/review-handshake.en.md +10 -6
  254. package/templates/.agents/rules/review-handshake.zh-CN.md +10 -6
  255. package/templates/.agents/rules/task-management.en.md +11 -2
  256. package/templates/.agents/rules/task-management.zh-CN.md +11 -3
  257. package/templates/.agents/rules/task-short-id.en.md +25 -29
  258. package/templates/.agents/rules/task-short-id.zh-CN.md +20 -23
  259. package/templates/.agents/rules/testing-discipline.en.md +20 -2
  260. package/templates/.agents/rules/testing-discipline.zh-CN.md +20 -2
  261. package/templates/.agents/scripts/lib/agent-infra-package.js +1 -9
  262. package/templates/.agents/scripts/task-short-id.js +71 -533
  263. package/templates/.agents/skills/analyze-task/SKILL.en.md +26 -56
  264. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +30 -60
  265. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -3
  266. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -3
  267. package/templates/.agents/skills/block-task/SKILL.en.md +21 -47
  268. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +23 -47
  269. package/templates/.agents/skills/block-task/config/verify.json +1 -2
  270. package/templates/.agents/skills/cancel-task/SKILL.en.md +16 -45
  271. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +16 -45
  272. package/templates/.agents/skills/cancel-task/config/verify.json +1 -2
  273. package/templates/.agents/skills/check-task/SKILL.en.md +6 -3
  274. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +6 -3
  275. package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -24
  276. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -24
  277. package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -24
  278. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -24
  279. package/templates/.agents/skills/code-task/SKILL.en.md +22 -35
  280. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +28 -44
  281. package/templates/.agents/skills/code-task/config/verify.en.json +3 -3
  282. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +3 -3
  283. package/templates/.agents/skills/code-task/reference/dual-mode.en.md +13 -9
  284. package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +13 -9
  285. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +1 -1
  286. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +1 -1
  287. package/templates/.agents/skills/code-task/reference/report-template.en.md +11 -1
  288. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +11 -1
  289. package/templates/.agents/skills/commit/SKILL.en.md +13 -11
  290. package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -11
  291. package/templates/.agents/skills/commit/config/verify.json +1 -2
  292. package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -11
  293. package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -11
  294. package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +4 -8
  295. package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +4 -8
  296. package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +6 -18
  297. package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +5 -17
  298. package/templates/.agents/skills/commit/reference/task-status-update.en.md +13 -0
  299. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +13 -0
  300. package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +13 -36
  301. package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +13 -36
  302. package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -3
  303. package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -3
  304. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +10 -54
  305. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +10 -79
  306. package/templates/.agents/skills/complete-task/SKILL.en.md +59 -63
  307. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +59 -63
  308. package/templates/.agents/skills/complete-task/config/verify.en.json +10 -7
  309. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +10 -7
  310. package/templates/.agents/skills/create-pr/SKILL.en.md +19 -44
  311. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +19 -43
  312. package/templates/.agents/skills/create-pr/config/verify.json +1 -2
  313. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +8 -12
  314. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +7 -11
  315. package/templates/.agents/skills/create-release-note/SKILL.en.md +17 -38
  316. package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +16 -37
  317. package/templates/.agents/skills/create-task/SKILL.en.md +16 -13
  318. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +16 -13
  319. package/templates/.agents/skills/create-task/config/verify.json +1 -2
  320. package/templates/.agents/skills/create-task/reference/context-capture.en.md +29 -0
  321. package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +29 -0
  322. package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
  323. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +2 -2
  324. package/templates/.agents/skills/import-codescan/config/verify.json +1 -2
  325. package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
  326. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +2 -2
  327. package/templates/.agents/skills/import-dependabot/config/verify.json +1 -2
  328. package/templates/.agents/skills/import-issue/SKILL.en.md +9 -13
  329. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -14
  330. package/templates/.agents/skills/import-issue/config/verify.json +1 -2
  331. package/templates/.agents/skills/plan-task/SKILL.en.md +17 -42
  332. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +22 -49
  333. package/templates/.agents/skills/plan-task/config/verify.en.json +1 -3
  334. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -3
  335. package/templates/.agents/skills/post-release/SKILL.en.md +11 -81
  336. package/templates/.agents/skills/post-release/SKILL.zh-CN.md +8 -78
  337. package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
  338. package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
  339. package/templates/.agents/skills/release/SKILL.en.md +16 -163
  340. package/templates/.agents/skills/release/SKILL.zh-CN.md +15 -162
  341. package/templates/.agents/skills/restore-task/SKILL.en.md +11 -29
  342. package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +11 -29
  343. package/templates/.agents/skills/restore-task/config/verify.json +1 -2
  344. package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -25
  345. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +13 -33
  346. package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -4
  347. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -4
  348. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +9 -12
  349. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +9 -12
  350. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +9 -2
  351. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +9 -2
  352. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +7 -0
  353. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +7 -0
  354. package/templates/.agents/skills/review-code/SKILL.en.md +22 -36
  355. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +23 -41
  356. package/templates/.agents/skills/review-code/config/verify.en.json +3 -4
  357. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -4
  358. package/templates/.agents/skills/review-code/reference/output-templates.en.md +56 -18
  359. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +56 -18
  360. package/templates/.agents/skills/review-code/reference/report-template.en.md +11 -4
  361. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +11 -4
  362. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +7 -0
  363. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +7 -0
  364. package/templates/.agents/skills/review-plan/SKILL.en.md +13 -25
  365. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +13 -33
  366. package/templates/.agents/skills/review-plan/config/verify.en.json +3 -4
  367. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -4
  368. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +9 -12
  369. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +9 -12
  370. package/templates/.agents/skills/review-plan/reference/report-template.en.md +9 -2
  371. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +9 -2
  372. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +7 -0
  373. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +7 -0
  374. package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -2
  375. package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -2
  376. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -15
  377. package/templates/.agents/skills/watch-pr/SKILL.en.md +24 -14
  378. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +25 -15
  379. package/templates/.agents/skills/watch-pr/config/verify.json +1 -2
  380. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
  381. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
  382. package/templates/.agents/templates/task.en.md +24 -1
  383. package/templates/.agents/templates/task.zh-CN.md +24 -1
  384. package/templates/.claude/commands/analyze-task.en.md +1 -1
  385. package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
  386. package/templates/.claude/commands/block-task.en.md +1 -1
  387. package/templates/.claude/commands/block-task.zh-CN.md +1 -1
  388. package/templates/.claude/commands/cancel-task.en.md +1 -1
  389. package/templates/.claude/commands/cancel-task.zh-CN.md +1 -1
  390. package/templates/.claude/commands/check-task.en.md +1 -1
  391. package/templates/.claude/commands/check-task.zh-CN.md +1 -1
  392. package/templates/.claude/commands/code-task.en.md +1 -1
  393. package/templates/.claude/commands/code-task.zh-CN.md +1 -1
  394. package/templates/.claude/commands/commit.en.md +1 -0
  395. package/templates/.claude/commands/commit.zh-CN.md +1 -0
  396. package/templates/.claude/commands/complete-manual-validation.en.md +1 -1
  397. package/templates/.claude/commands/complete-manual-validation.zh-CN.md +1 -1
  398. package/templates/.claude/commands/complete-task.en.md +1 -1
  399. package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
  400. package/templates/.claude/commands/create-pr.en.md +1 -1
  401. package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
  402. package/templates/.claude/commands/plan-task.en.md +1 -1
  403. package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
  404. package/templates/.claude/commands/review-analysis.en.md +1 -1
  405. package/templates/.claude/commands/review-analysis.zh-CN.md +1 -1
  406. package/templates/.claude/commands/review-code.en.md +1 -1
  407. package/templates/.claude/commands/review-code.zh-CN.md +1 -1
  408. package/templates/.claude/commands/review-plan.en.md +1 -1
  409. package/templates/.claude/commands/review-plan.zh-CN.md +1 -1
  410. package/templates/.claude/commands/watch-pr.en.md +1 -1
  411. package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
  412. package/templates/.gemini/commands/_project_/analyze-task.en.toml +2 -0
  413. package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +2 -0
  414. package/templates/.gemini/commands/_project_/block-task.en.toml +2 -0
  415. package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +2 -0
  416. package/templates/.gemini/commands/_project_/cancel-task.en.toml +2 -0
  417. package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +2 -0
  418. package/templates/.gemini/commands/_project_/check-task.en.toml +2 -0
  419. package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +2 -0
  420. package/templates/.gemini/commands/_project_/code-task.en.toml +2 -0
  421. package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +2 -0
  422. package/templates/.gemini/commands/_project_/commit.en.toml +4 -0
  423. package/templates/.gemini/commands/_project_/commit.zh-CN.toml +4 -0
  424. package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +2 -0
  425. package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +2 -0
  426. package/templates/.gemini/commands/_project_/complete-task.en.toml +2 -0
  427. package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +2 -0
  428. package/templates/.gemini/commands/_project_/create-pr.en.toml +2 -0
  429. package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +2 -0
  430. package/templates/.gemini/commands/_project_/plan-task.en.toml +2 -0
  431. package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +2 -0
  432. package/templates/.gemini/commands/_project_/review-analysis.en.toml +2 -0
  433. package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +2 -0
  434. package/templates/.gemini/commands/_project_/review-code.en.toml +2 -0
  435. package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +2 -0
  436. package/templates/.gemini/commands/_project_/review-plan.en.toml +2 -0
  437. package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +2 -0
  438. package/templates/.gemini/commands/_project_/watch-pr.en.toml +2 -0
  439. package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +2 -0
  440. package/templates/.git-hooks/check-large-files.cjs +92 -0
  441. package/templates/.git-hooks/check-version-format.sh +5 -1
  442. package/templates/.git-hooks/pre-commit +1 -0
  443. package/templates/.opencode/commands/analyze-task.en.md +1 -1
  444. package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
  445. package/templates/.opencode/commands/check-task.en.md +1 -1
  446. package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
  447. package/templates/.opencode/commands/code-task.en.md +1 -1
  448. package/templates/.opencode/commands/code-task.zh-CN.md +1 -1
  449. package/templates/.opencode/commands/commit.en.md +2 -0
  450. package/templates/.opencode/commands/commit.zh-CN.md +2 -0
  451. package/templates/.opencode/commands/complete-task.en.md +1 -1
  452. package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
  453. package/templates/.opencode/commands/plan-task.en.md +1 -1
  454. package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
  455. package/templates/.opencode/commands/review-analysis.en.md +1 -1
  456. package/templates/.opencode/commands/review-analysis.zh-CN.md +1 -1
  457. package/templates/.opencode/commands/review-code.en.md +1 -1
  458. package/templates/.opencode/commands/review-code.zh-CN.md +1 -1
  459. package/templates/.opencode/commands/review-plan.en.md +1 -1
  460. package/templates/.opencode/commands/review-plan.zh-CN.md +1 -1
  461. package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +0 -40
  462. package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
  463. package/templates/.agents/scripts/review-diff-fingerprint.js +0 -170
  464. package/templates/.agents/scripts/workflow-warnings.js +0 -290
  465. package/templates/.agents/skills/code-task/scripts/detect-mode.js +0 -257
  466. package/templates/.agents/skills/release/scripts/manage-milestones.github.sh +0 -80
  467. package/templates/.agents/skills/release/scripts/manage-milestones.sh +0 -6
@@ -1,155 +1,20 @@
1
1
  # Issue 字段
2
2
 
3
- 写入或校验 Issue Type pinned custom fields 前先读取本文件。
3
+ Issue Type 与 pinned fields 统一由 `platform-issue` intent 动态读取组织 schema 并同步:
4
4
 
5
- ## 边界
6
-
7
- - 仅在已知 `upstream_repo`、`has_push` 和 Issue 编号后使用本规则。
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` 或 `Low` |
19
- | `effort` | `Effort` | `High`、`Medium` 或 `Low` |
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
- # Issue and PR Commands
1
+ # PR Platform Intents
2
2
 
3
- This code platform does not provide built-in issue or pull request commands.
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
- Platform-specific automation is skipped for custom platforms unless you provide matching `.{platform}.en.md` rule templates. Keep local task artifacts as the source of truth, or install a platform-specific template pack before running the workflow.
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
- # Issue / PR Platform Commands
1
+ # PR Platform Intents
2
2
 
3
- Read this file before verifying platform authentication, reading Issues / PRs, or creating and updating Issues / PRs.
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
- ## Authentication and Repository Info
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
- gh issue edit {issue-number} -R "$upstream_repo" {edit-args}
8
+ agent-infra-internal platform-pr inspect {task-id}
104
9
  ```
105
10
 
106
- Common arguments:
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
- gh issue close {issue-number} -R "$upstream_repo" --reason "{reason}"
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
- ## Read Issue Comments
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
- Read Issue comments or search for existing hidden markers:
21
+ ## Bind and synchronize
124
22
 
125
23
  ```bash
126
- gh api "repos/$upstream_repo/issues/{issue-number}/comments" --paginate
127
- ```
24
+ agent-infra-internal platform-pr bind {task-id} --pr {pr-number} --agent {agent}
128
25
 
129
- ## Historical Task Comment Scan
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
- Windows (PowerShell 7+ / pwsh):
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
- - read failures: stop or skip based on the calling skill
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.