@fitlab-ai/agent-infra 0.9.12 → 0.9.14

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 (402) hide show
  1. package/README.md +11 -11
  2. package/README.zh-CN.md +11 -11
  3. package/bin/cli.ts +26 -9
  4. package/dist/bin/cli.js +173 -157
  5. package/dist/bin/internal-cli.js +66 -40
  6. package/dist/lib/agent-client.js +5 -0
  7. package/dist/lib/agent-clients/next-steps.js +6 -1
  8. package/dist/lib/decide.js +3 -3
  9. package/dist/lib/internal/agent-client.js +5 -2
  10. package/dist/lib/internal/cli-route-inventory.js +152 -0
  11. package/dist/lib/internal/codex-lifecycle.js +9 -6
  12. package/dist/lib/internal/codex-sandbox-controller.js +8 -2
  13. package/dist/lib/internal/git-workflow.js +10 -6
  14. package/dist/lib/internal/platform-checks.js +19 -7
  15. package/dist/lib/internal/platform-comment.js +25 -13
  16. package/dist/lib/internal/platform-context.js +6 -3
  17. package/dist/lib/internal/platform-issue.js +20 -13
  18. package/dist/lib/internal/platform-metadata.js +88 -0
  19. package/dist/lib/internal/platform-pr-review.js +26 -13
  20. package/dist/lib/internal/platform-pr.js +84 -31
  21. package/dist/lib/internal/platform-release-notes.js +9 -6
  22. package/dist/lib/internal/platform-security.js +93 -0
  23. package/dist/lib/internal/pr-review-grade.js +25 -12
  24. package/dist/lib/internal/release-workflow.js +23 -9
  25. package/dist/lib/internal/sandbox-control.js +50 -7
  26. package/dist/lib/internal/task-activity.js +16 -7
  27. package/dist/lib/internal/task-artifact.js +235 -24
  28. package/dist/lib/internal/task-context.js +4 -1
  29. package/dist/lib/internal/task-create.js +50 -17
  30. package/dist/lib/internal/task-delivery.js +4 -1
  31. package/dist/lib/internal/task-event.js +10 -4
  32. package/dist/lib/internal/task-finalization.js +6 -3
  33. package/dist/lib/internal/task-invalidation.js +63 -0
  34. package/dist/lib/internal/task-ledger.js +20 -6
  35. package/dist/lib/internal/task-lifecycle.js +6 -3
  36. package/dist/lib/internal/task-operation-registry.js +421 -0
  37. package/dist/lib/internal/task-orchestration.js +12 -0
  38. package/dist/lib/internal/task-override.js +14 -7
  39. package/dist/lib/internal/task-qualification.js +90 -0
  40. package/dist/lib/internal/task-review.js +7 -4
  41. package/dist/lib/internal/task-short-id.js +11 -1
  42. package/dist/lib/internal/task-snapshot.js +4 -1
  43. package/dist/lib/internal/task-validate.js +7 -2
  44. package/dist/lib/internal/task-verify.js +11 -7
  45. package/dist/lib/internal/task-warning.js +11 -4
  46. package/dist/lib/platform/adapters.js +1 -3
  47. package/dist/lib/platform/change-request-git-evidence.js +27 -7
  48. package/dist/lib/platform/comment-safety.js +226 -0
  49. package/dist/lib/platform/completion-backfill.js +6 -5
  50. package/dist/lib/platform/context.js +70 -130
  51. package/dist/lib/platform/github-client.js +1 -1
  52. package/dist/lib/platform/github-provider.js +1130 -0
  53. package/dist/lib/platform/in-label-sync.js +143 -0
  54. package/dist/lib/platform/issue-comments.js +237 -72
  55. package/dist/lib/platform/issues.js +335 -189
  56. package/dist/lib/platform/metadata-labels.js +6 -2
  57. package/dist/lib/platform/none-provider.js +28 -0
  58. package/dist/lib/platform/pr-change-report.js +545 -0
  59. package/dist/lib/platform/pr-checks.js +119 -104
  60. package/dist/lib/platform/pr-review.js +88 -72
  61. package/dist/lib/platform/pr-summary.js +541 -50
  62. package/dist/lib/platform/provider-bridge.js +45 -0
  63. package/dist/lib/platform/provider-contract.d.ts +553 -0
  64. package/dist/lib/platform/provider-contract.js +99 -0
  65. package/dist/lib/platform/provider-loader.js +251 -0
  66. package/dist/lib/platform/provider-validation.js +577 -0
  67. package/dist/lib/platform/pull-request-metadata.js +8 -6
  68. package/dist/lib/platform/pull-requests.js +734 -543
  69. package/dist/lib/platform/release-notes.js +78 -55
  70. package/dist/lib/platform/releases.js +79 -50
  71. package/dist/lib/platform/repository-metadata.js +377 -0
  72. package/dist/lib/platform/resource-identity.d.ts +26 -0
  73. package/dist/lib/platform/resource-identity.js +92 -0
  74. package/dist/lib/platform/security-alerts.js +155 -0
  75. package/dist/lib/platform/task-identities.js +31 -0
  76. package/dist/lib/platform/verification-required.js +11 -12
  77. package/dist/lib/platform/verification-sync.js +129 -248
  78. package/dist/lib/pr-review/evidence-grading.js +19 -6
  79. package/dist/lib/process-data/index.js +7 -0
  80. package/dist/lib/run/index.js +68 -23
  81. package/dist/lib/sandbox/commands/control-status.js +22 -0
  82. package/dist/lib/sandbox/commands/create.js +32 -6
  83. package/dist/lib/sandbox/commands/ls.js +5 -0
  84. package/dist/lib/sandbox/commands/rm.js +827 -120
  85. package/dist/lib/sandbox/commands/show.js +16 -0
  86. package/dist/lib/sandbox/control/client.js +174 -19
  87. package/dist/lib/sandbox/control/completed-reentry.js +85 -0
  88. package/dist/lib/sandbox/control/container-identity.js +28 -31
  89. package/dist/lib/sandbox/control/executor.js +151 -16
  90. package/dist/lib/sandbox/control/lifecycle.js +621 -127
  91. package/dist/lib/sandbox/control/native-file-lock.js +177 -0
  92. package/dist/lib/sandbox/control/protocol.js +77 -0
  93. package/dist/lib/sandbox/control/server.js +677 -34
  94. package/dist/lib/sandbox/control/state.js +209 -4
  95. package/dist/lib/sandbox/control/task-view.js +183 -0
  96. package/dist/lib/sandbox/engines/authority.js +289 -0
  97. package/dist/lib/sandbox/engines/docker-exact-discovery.js +97 -0
  98. package/dist/lib/sandbox/index.js +5 -0
  99. package/dist/lib/sandbox/recovery.js +21 -1
  100. package/dist/lib/sandbox/workspace-view.js +2 -1
  101. package/dist/lib/sandbox/worktree-safety.js +4 -1
  102. package/dist/lib/server/index.js +8 -0
  103. package/dist/lib/server/protocol.js +38 -1
  104. package/dist/lib/task/activity-log.js +8 -1
  105. package/dist/lib/task/artifact-lifecycle.js +75 -18
  106. package/dist/lib/task/artifact-operations.js +520 -0
  107. package/dist/lib/task/artifact-repair-intent.js +59 -0
  108. package/dist/lib/task/artifact-schema.js +135 -0
  109. package/dist/lib/task/capabilities.js +310 -0
  110. package/dist/lib/task/commands/status.js +32 -0
  111. package/dist/lib/task/commit-operation.js +12 -1
  112. package/dist/lib/task/control-authority.js +12 -5
  113. package/dist/lib/task/create-service.js +111 -12
  114. package/dist/lib/task/create.js +25 -0
  115. package/dist/lib/task/current-contract.js +5 -1
  116. package/dist/lib/task/decision-details.js +1 -1
  117. package/dist/lib/task/events.js +416 -17
  118. package/dist/lib/task/finalization.js +37 -13
  119. package/dist/lib/task/human-override.js +58 -36
  120. package/dist/lib/task/index.js +11 -3
  121. package/dist/lib/task/invalidation-command.js +86 -0
  122. package/dist/lib/task/invalidation.js +260 -0
  123. package/dist/lib/task/ledger-intents.js +37 -0
  124. package/dist/lib/task/local-artifact-finalization.js +299 -0
  125. package/dist/lib/task/orchestration.js +240 -144
  126. package/dist/lib/task/pr-delivery-fact.js +102 -101
  127. package/dist/lib/task/qualification-audit.js +490 -0
  128. package/dist/lib/task/qualification-confirmation.js +109 -0
  129. package/dist/lib/task/qualification-intents.js +148 -0
  130. package/dist/lib/task/review-artifacts.js +22 -23
  131. package/dist/lib/task/review-finalization.js +121 -4
  132. package/dist/lib/task/review-fingerprint.js +24 -2
  133. package/dist/lib/task/rework-intent.js +138 -0
  134. package/dist/lib/task/sections.js +6 -4
  135. package/dist/lib/task/skill-scope.js +23 -0
  136. package/dist/lib/task/task-execution-lock.js +27 -17
  137. package/dist/lib/task/verification-config.js +11 -0
  138. package/dist/lib/task/verification-engine.js +93 -16
  139. package/dist/lib/task/verification.js +3 -3
  140. package/dist/lib/task/workflow-warning-intents.js +1 -1
  141. package/dist/lib/task/write.js +11 -0
  142. package/dist/lib/version.js +11 -1
  143. package/dist/lifecycle-build-manifest.json +3 -3
  144. package/lib/agent-client.ts +9 -0
  145. package/lib/agent-clients/next-steps.ts +6 -1
  146. package/lib/decide.ts +3 -3
  147. package/lib/init.ts +1 -1
  148. package/lib/internal/agent-client.ts +4 -2
  149. package/lib/internal/cli-route-inventory.ts +140 -0
  150. package/lib/internal/codex-lifecycle.ts +8 -6
  151. package/lib/internal/codex-sandbox-controller.ts +7 -2
  152. package/lib/internal/git-workflow.ts +9 -6
  153. package/lib/internal/platform-checks.ts +14 -6
  154. package/lib/internal/platform-comment.ts +20 -12
  155. package/lib/internal/platform-context.ts +5 -3
  156. package/lib/internal/platform-issue.ts +17 -11
  157. package/lib/internal/platform-metadata.ts +70 -0
  158. package/lib/internal/platform-pr-review.ts +23 -12
  159. package/lib/internal/platform-pr.ts +65 -27
  160. package/lib/internal/platform-release-notes.ts +8 -6
  161. package/lib/internal/platform-security.ts +83 -0
  162. package/lib/internal/pr-review-grade.ts +20 -11
  163. package/lib/internal/release-workflow.ts +21 -9
  164. package/lib/internal/sandbox-control.ts +44 -6
  165. package/lib/internal/task-activity.ts +15 -7
  166. package/lib/internal/task-artifact.ts +204 -22
  167. package/lib/internal/task-context.ts +3 -1
  168. package/lib/internal/task-create.ts +78 -17
  169. package/lib/internal/task-delivery.ts +3 -1
  170. package/lib/internal/task-event.ts +9 -4
  171. package/lib/internal/task-finalization.ts +6 -4
  172. package/lib/internal/task-invalidation.ts +41 -0
  173. package/lib/internal/task-ledger.ts +21 -8
  174. package/lib/internal/task-lifecycle.ts +5 -3
  175. package/lib/internal/task-operation-registry.ts +482 -0
  176. package/lib/internal/task-orchestration.ts +12 -0
  177. package/lib/internal/task-override.ts +15 -9
  178. package/lib/internal/task-qualification.ts +61 -0
  179. package/lib/internal/task-review.ts +6 -4
  180. package/lib/internal/task-short-id.ts +10 -1
  181. package/lib/internal/task-snapshot.ts +3 -1
  182. package/lib/internal/task-validate.ts +6 -2
  183. package/lib/internal/task-verify.ts +10 -7
  184. package/lib/internal/task-warning.ts +10 -4
  185. package/lib/platform/adapters.ts +3 -2
  186. package/lib/platform/change-request-git-evidence.ts +36 -9
  187. package/lib/platform/comment-safety.ts +250 -0
  188. package/lib/platform/completion-backfill.ts +9 -8
  189. package/lib/platform/context.ts +97 -134
  190. package/lib/platform/github-client.ts +2 -2
  191. package/lib/platform/github-provider.ts +1132 -0
  192. package/lib/platform/in-label-sync.ts +208 -0
  193. package/lib/platform/issue-comments.ts +255 -80
  194. package/lib/platform/issues.ts +344 -174
  195. package/lib/platform/metadata-labels.ts +5 -2
  196. package/lib/platform/none-provider.ts +35 -0
  197. package/lib/platform/pr-change-report.ts +639 -0
  198. package/lib/platform/pr-checks.ts +126 -106
  199. package/lib/platform/pr-review.ts +88 -85
  200. package/lib/platform/pr-summary.ts +581 -53
  201. package/lib/platform/provider-bridge.ts +82 -0
  202. package/lib/platform/provider-contract.ts +611 -0
  203. package/lib/platform/provider-loader.ts +307 -0
  204. package/lib/platform/provider-validation.ts +611 -0
  205. package/lib/platform/pull-request-metadata.ts +10 -7
  206. package/lib/platform/pull-requests.ts +781 -550
  207. package/lib/platform/release-notes.ts +76 -59
  208. package/lib/platform/releases.ts +77 -43
  209. package/lib/platform/repository-metadata.ts +453 -0
  210. package/lib/platform/resource-identity.ts +121 -0
  211. package/lib/platform/security-alerts.ts +191 -0
  212. package/lib/platform/task-identities.ts +40 -0
  213. package/lib/platform/types.ts +4 -2
  214. package/lib/platform/verification-required.ts +11 -13
  215. package/lib/platform/verification-sync.ts +128 -304
  216. package/lib/pr-review/evidence-grading.ts +25 -8
  217. package/lib/process-data/index.ts +7 -0
  218. package/lib/run/index.ts +62 -22
  219. package/lib/sandbox/commands/control-status.ts +26 -0
  220. package/lib/sandbox/commands/create.ts +46 -6
  221. package/lib/sandbox/commands/ls.ts +7 -0
  222. package/lib/sandbox/commands/rm.ts +1000 -87
  223. package/lib/sandbox/commands/show.ts +16 -0
  224. package/lib/sandbox/control/client.ts +203 -19
  225. package/lib/sandbox/control/completed-reentry.ts +98 -0
  226. package/lib/sandbox/control/container-identity.ts +27 -43
  227. package/lib/sandbox/control/executor.ts +180 -15
  228. package/lib/sandbox/control/lifecycle.ts +629 -17
  229. package/lib/sandbox/control/native-file-lock.ts +209 -0
  230. package/lib/sandbox/control/protocol.ts +118 -2
  231. package/lib/sandbox/control/server.ts +724 -34
  232. package/lib/sandbox/control/state.ts +257 -4
  233. package/lib/sandbox/control/task-view.ts +240 -0
  234. package/lib/sandbox/engines/authority.ts +365 -0
  235. package/lib/sandbox/engines/docker-exact-discovery.ts +132 -0
  236. package/lib/sandbox/index.ts +7 -0
  237. package/lib/sandbox/recovery.ts +21 -1
  238. package/lib/sandbox/workspace-view.ts +9 -3
  239. package/lib/sandbox/worktree-safety.ts +4 -1
  240. package/lib/server/index.ts +10 -0
  241. package/lib/server/protocol.ts +36 -1
  242. package/lib/task/activity-log.ts +8 -0
  243. package/lib/task/artifact-lifecycle.ts +70 -22
  244. package/lib/task/artifact-operations.ts +626 -0
  245. package/lib/task/artifact-repair-intent.ts +71 -0
  246. package/lib/task/artifact-schema.ts +192 -0
  247. package/lib/task/capabilities.ts +331 -0
  248. package/lib/task/commands/status.ts +38 -0
  249. package/lib/task/commit-operation.ts +12 -1
  250. package/lib/task/control-authority.ts +22 -9
  251. package/lib/task/create-service.ts +139 -14
  252. package/lib/task/create.ts +27 -0
  253. package/lib/task/current-contract.ts +6 -1
  254. package/lib/task/decision-details.ts +6 -2
  255. package/lib/task/events.ts +392 -16
  256. package/lib/task/finalization.ts +50 -14
  257. package/lib/task/human-override.ts +70 -46
  258. package/lib/task/index.ts +16 -3
  259. package/lib/task/invalidation-command.ts +86 -0
  260. package/lib/task/invalidation.ts +332 -0
  261. package/lib/task/ledger-intents.ts +35 -1
  262. package/lib/task/local-artifact-finalization.ts +432 -0
  263. package/lib/task/orchestration.ts +223 -133
  264. package/lib/task/pr-delivery-fact.ts +131 -148
  265. package/lib/task/qualification-audit.ts +599 -0
  266. package/lib/task/qualification-confirmation.ts +117 -0
  267. package/lib/task/qualification-intents.ts +150 -0
  268. package/lib/task/review-artifacts.ts +21 -22
  269. package/lib/task/review-finalization.ts +133 -4
  270. package/lib/task/review-fingerprint.ts +23 -2
  271. package/lib/task/rework-intent.ts +165 -0
  272. package/lib/task/sections.ts +6 -4
  273. package/lib/task/skill-scope.ts +24 -0
  274. package/lib/task/task-execution-lock.ts +23 -14
  275. package/lib/task/verification-config.ts +12 -0
  276. package/lib/task/verification-engine.ts +103 -17
  277. package/lib/task/verification.ts +4 -4
  278. package/lib/task/workflow-warning-intents.ts +1 -1
  279. package/lib/task/write.ts +19 -0
  280. package/lib/update.ts +1 -1
  281. package/lib/version.ts +15 -1
  282. package/package.json +12 -1
  283. package/templates/.agents/rules/README.en.md +3 -1
  284. package/templates/.agents/rules/README.zh-CN.md +3 -1
  285. package/templates/.agents/rules/decision-qualification.en.md +22 -0
  286. package/templates/.agents/rules/decision-qualification.zh-CN.md +22 -0
  287. package/templates/.agents/rules/evidence-reporting.en.md +28 -0
  288. package/templates/.agents/rules/evidence-reporting.zh-CN.md +28 -0
  289. package/templates/.agents/rules/issue-pr-commands.en.md +1 -1
  290. package/templates/.agents/rules/issue-pr-commands.zh-CN.md +1 -1
  291. package/templates/.agents/rules/issue-sync.en.md +2 -0
  292. package/templates/.agents/rules/issue-sync.zh-CN.md +2 -0
  293. package/templates/.agents/rules/label-milestone-setup.en.md +7 -7
  294. package/templates/.agents/rules/label-milestone-setup.zh-CN.md +7 -7
  295. package/templates/.agents/rules/local-artifact-repair.en.md +13 -2
  296. package/templates/.agents/rules/local-artifact-repair.zh-CN.md +13 -2
  297. package/templates/.agents/rules/pr-sync.en.md +10 -4
  298. package/templates/.agents/rules/pr-sync.zh-CN.md +17 -4
  299. package/templates/.agents/rules/security-alerts.en.md +8 -8
  300. package/templates/.agents/rules/security-alerts.zh-CN.md +8 -8
  301. package/templates/.agents/rules/task-short-id.en.md +1 -4
  302. package/templates/.agents/rules/task-short-id.zh-CN.md +1 -3
  303. package/templates/.agents/skills/analyze-task/SKILL.en.md +28 -5
  304. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +29 -5
  305. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -12
  306. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -12
  307. package/templates/.agents/skills/check-task/SKILL.en.md +16 -37
  308. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +16 -37
  309. package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
  310. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
  311. package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
  312. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
  313. package/templates/.agents/skills/code-task/SKILL.en.md +41 -9
  314. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +43 -11
  315. package/templates/.agents/skills/code-task/config/verify.en.json +6 -14
  316. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +6 -14
  317. package/templates/.agents/skills/code-task/reference/code-rules.en.md +5 -4
  318. package/templates/.agents/skills/code-task/reference/code-rules.zh-CN.md +5 -4
  319. package/templates/.agents/skills/code-task/reference/dual-mode.en.md +1 -1
  320. package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +1 -1
  321. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +3 -1
  322. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +3 -1
  323. package/templates/.agents/skills/code-task/reference/report-template.en.md +42 -15
  324. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +39 -12
  325. package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +2 -0
  326. package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +2 -0
  327. package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +3 -3
  328. package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +3 -3
  329. package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +10 -4
  330. package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +10 -4
  331. package/templates/.agents/skills/complete-manual-validation/reference/report-template.en.md +2 -0
  332. package/templates/.agents/skills/complete-manual-validation/reference/report-template.zh-CN.md +2 -0
  333. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +4 -3
  334. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +4 -3
  335. package/templates/.agents/skills/complete-task/SKILL.en.md +26 -21
  336. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +25 -21
  337. package/templates/.agents/skills/create-pr/SKILL.en.md +7 -6
  338. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +7 -7
  339. package/templates/.agents/skills/create-pr/config/verify.json +1 -0
  340. package/templates/.agents/skills/create-pr/reference/change-report.en.md +16 -4
  341. package/templates/.agents/skills/create-pr/reference/change-report.zh-CN.md +16 -4
  342. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +5 -3
  343. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +5 -3
  344. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +1 -1
  345. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +1 -1
  346. package/templates/.agents/skills/create-pr/scripts/change-report.mjs +3 -0
  347. package/templates/.agents/skills/create-task/SKILL.en.md +8 -0
  348. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +7 -0
  349. package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
  350. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
  351. package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
  352. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
  353. package/templates/.agents/skills/init-labels/SKILL.en.md +8 -8
  354. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +8 -8
  355. package/templates/.agents/skills/init-milestones/SKILL.en.md +9 -11
  356. package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +9 -11
  357. package/templates/.agents/skills/plan-task/SKILL.en.md +27 -4
  358. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +26 -4
  359. package/templates/.agents/skills/plan-task/config/verify.en.json +4 -14
  360. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +4 -14
  361. package/templates/.agents/skills/review-analysis/SKILL.en.md +17 -4
  362. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +17 -4
  363. package/templates/.agents/skills/review-analysis/config/verify.en.json +1 -18
  364. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +1 -18
  365. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +50 -23
  366. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +45 -18
  367. package/templates/.agents/skills/review-code/SKILL.en.md +18 -5
  368. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +18 -5
  369. package/templates/.agents/skills/review-code/config/verify.en.json +1 -23
  370. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +1 -23
  371. package/templates/.agents/skills/review-code/reference/report-template.en.md +49 -22
  372. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +45 -18
  373. package/templates/.agents/skills/review-plan/SKILL.en.md +17 -4
  374. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +17 -4
  375. package/templates/.agents/skills/review-plan/config/verify.en.json +1 -18
  376. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +1 -18
  377. package/templates/.agents/skills/review-plan/reference/report-template.en.md +49 -22
  378. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +45 -18
  379. package/templates/.agents/skills/review-pr/SKILL.en.md +5 -1
  380. package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +5 -1
  381. package/templates/.agents/skills/review-pr/reference/report-template.en.md +4 -3
  382. package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +4 -3
  383. package/templates/.agents/skills/run-manual-validation/SKILL.en.md +9 -3
  384. package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +9 -3
  385. package/templates/.agents/skills/run-manual-validation/reference/report-template.en.md +3 -1
  386. package/templates/.agents/skills/run-manual-validation/reference/report-template.zh-CN.md +3 -1
  387. package/templates/.agents/skills/test/SKILL.en.md +13 -2
  388. package/templates/.agents/skills/test/SKILL.zh-CN.md +13 -2
  389. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +14 -0
  390. package/templates/.agents/skills/watch-pr/SKILL.en.md +2 -2
  391. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +2 -2
  392. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +6 -0
  393. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +6 -0
  394. package/templates/.agents/templates/task.en.md +24 -1
  395. package/templates/.agents/templates/task.zh-CN.md +24 -1
  396. package/templates/.github/workflows/pr-label.yml +7 -26
  397. package/templates/.agents/scripts/security-alerts.github.sh +0 -151
  398. package/templates/.agents/scripts/security-alerts.sh +0 -31
  399. package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +0 -146
  400. package/templates/.agents/skills/init-labels/scripts/init-labels.sh +0 -32
  401. package/templates/.agents/skills/init-milestones/scripts/init-milestones.github.sh +0 -294
  402. package/templates/.agents/skills/init-milestones/scripts/init-milestones.sh +0 -6
package/lib/run/index.ts CHANGED
@@ -7,6 +7,7 @@ import { loadShortIdByTaskId, normalizeShortIdInput } from '../task/short-id.ts'
7
7
  import { buildTuiCommand, renderPrompt, selectTui } from './tui.ts';
8
8
  import { getSkillRunSpec } from './skills.ts';
9
9
  import { runHostCommand, type RunProcessResult } from './host.ts';
10
+ import { PUBLIC_CLI_ROUTE_SELECTORS } from '../internal/cli-route-inventory.ts';
10
11
 
11
12
  export type ParsedRunArgs = {
12
13
  skill: string;
@@ -38,54 +39,94 @@ export type RunSkillOptions = {
38
39
  writeStderr?: (chunk: string) => void;
39
40
  };
40
41
 
41
- const USAGE = `Usage: ai run <skill> [task-ref] [args...] [--tui <name>] [--recreate]
42
+ const USAGE = `Usage: ai run --skill <skill> [--task <task-ref>] [--tui <name>] [--recreate] [-- <skill-args...>]
42
43
 
43
44
  Task skills are scheduled inside the sandbox tmux session; ai run returns once
44
45
  the tmux window is created. --recreate authorizes container-only replacement
45
46
  when in-place sandbox recovery fails; it is not included in the TUI prompt.
46
47
 
47
48
  Examples:
48
- ai run create-task "describe the task" --tui codex
49
- ai run code-task #7 --tui codex --recreate`;
49
+ ai run --skill create-task "describe the task" --tui codex
50
+ ai run --skill code-task --task 7 --tui codex --recreate`;
50
51
 
51
- function extractTui(args: string[]): { rest: string[]; tui: string | null } {
52
- const rest: string[] = [];
52
+ function optionValue(args: string[], index: number, option: string): string {
53
+ const value = args[index + 1];
54
+ if (!value || value.startsWith('--')) throw new Error(`${option} requires a value`);
55
+ return value;
56
+ }
57
+
58
+ function extractHostOptions(args: string[]): {
59
+ positionals: string[];
60
+ forwarded: string[];
61
+ skill: string | null;
62
+ taskRef: string | null;
63
+ tui: string | null;
64
+ recreate: boolean;
65
+ } {
66
+ const positionals: string[] = [];
67
+ const forwarded: string[] = [];
68
+ let skill: string | null = null;
69
+ let taskRef: string | null = null;
53
70
  let tui: string | null = null;
71
+ let recreate = false;
72
+ let separator = false;
54
73
  for (let i = 0; i < args.length; i += 1) {
55
74
  const arg = args[i] as string;
56
- if (arg === '--tui') {
57
- const value = args[i + 1];
58
- if (!value) throw new Error('--tui requires a value');
59
- tui = value;
75
+ if (separator) {
76
+ forwarded.push(arg);
77
+ } else if (arg === '--') {
78
+ separator = true;
79
+ } else if (arg === '--skill') {
80
+ if (skill !== null) throw new Error("duplicate option '--skill'");
81
+ skill = optionValue(args, i, '--skill');
82
+ i += 1;
83
+ } else if (arg === '--task') {
84
+ if (taskRef !== null) throw new Error("duplicate option '--task'");
85
+ taskRef = optionValue(args, i, '--task');
60
86
  i += 1;
61
- continue;
87
+ } else if (arg === '--tui') {
88
+ if (tui !== null) throw new Error("duplicate option '--tui'");
89
+ tui = optionValue(args, i, '--tui');
90
+ i += 1;
91
+ } else if (arg === '--recreate') {
92
+ if (recreate) throw new Error("duplicate option '--recreate'");
93
+ recreate = true;
94
+ } else if (arg.startsWith('-')) {
95
+ throw new Error(`Unknown option '${arg}'`);
96
+ } else {
97
+ positionals.push(arg);
62
98
  }
63
- rest.push(arg);
64
99
  }
65
- return { rest, tui };
100
+ return { positionals, forwarded, skill, taskRef, tui, recreate };
66
101
  }
67
102
 
68
103
  export function parseRunArgs(args: string[]): ParsedRunArgs {
69
104
  if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
70
105
  throw new Error(USAGE);
71
106
  }
72
- const { rest: withRecoveryFlags, tui } = extractTui(args);
73
- const recreate = withRecoveryFlags.includes('--recreate');
74
- const rest = withRecoveryFlags.filter((arg) => arg !== '--recreate');
75
- const [skill = '', maybeTaskRef, ...remaining] = rest;
107
+ const { positionals, forwarded, skill, taskRef, tui, recreate } = extractHostOptions(args);
108
+ if (!skill) throw new Error("option '--skill' is required");
76
109
  const spec = getSkillRunSpec(skill);
77
110
  if (!spec) throw new Error(`Unknown skill '${skill}'`);
111
+ const routeSelector = spec.kind === 'create' ? 'create-task' : recreate ? 'recreate' : 'task-skill';
112
+ if (!PUBLIC_CLI_ROUTE_SELECTORS.run.includes(routeSelector as typeof PUBLIC_CLI_ROUTE_SELECTORS.run[number])) {
113
+ throw new Error(`Unsupported run route '${routeSelector}'`);
114
+ }
78
115
  if (spec.kind === 'create') {
116
+ if (taskRef !== null) throw new Error("create-task does not accept '--task'");
79
117
  if (recreate) throw new Error('--recreate is only valid for sandbox task runs');
80
- const createArgs = rest.slice(1);
118
+ const createArgs = [...positionals, ...forwarded];
81
119
  if (createArgs.length === 0) throw new Error('create-task requires a description');
82
120
  return { skill, taskRef: null, args: createArgs, tui };
83
121
  }
84
- if (!maybeTaskRef) throw new Error(`${skill} requires a task-ref`);
122
+ if (positionals.length > 0) {
123
+ throw new Error('ai run requires --skill and --task; positional host arguments are not supported');
124
+ }
125
+ if (taskRef === null) throw new Error(`${skill} requires a task-ref`);
85
126
  return {
86
127
  skill,
87
- taskRef: maybeTaskRef,
88
- args: remaining,
128
+ taskRef,
129
+ args: forwarded,
89
130
  tui,
90
131
  ...(recreate ? { recreate: true as const } : {})
91
132
  };
@@ -200,8 +241,7 @@ export async function runSkill(args: string[], options: RunSkillOptions = {}): P
200
241
  const commandConfig = options.command ?? config?.command ?? {};
201
242
  assertAllowedByConfig(parsed.skill, commandConfig);
202
243
  const tui = selectTui(parsed.skill, { cliTui: parsed.tui, command: commandConfig });
203
- const promptArgs = parsed.taskRef === null ? parsed.args : [parsed.taskRef, ...parsed.args];
204
- const prompt = renderPrompt({ tui, skill: parsed.skill, args: promptArgs });
244
+ const prompt = renderPrompt({ tui, skill: parsed.skill, args: parsed.args });
205
245
  const [file, argv] = buildTuiCommand(tui, prompt);
206
246
  const command = [file, ...argv];
207
247
 
@@ -0,0 +1,26 @@
1
+ import type { SandboxConfig } from '../config.ts';
2
+ import { readSandboxControlStatus } from '../control/state.ts';
3
+ import type { SandboxControlStatus } from '../control/protocol.ts';
4
+ import { sandboxControlPaths } from '../workspace-view.ts';
5
+ import type { SandboxRow } from './list-running.ts';
6
+
7
+ export function readSandboxControlStatusForRow(
8
+ config: SandboxConfig,
9
+ row: Pick<SandboxRow, 'name' | 'workspaceMode' | 'taskId'>
10
+ ): SandboxControlStatus | null {
11
+ if (!row.workspaceMode || row.workspaceMode === 'legacy-invalid') return null;
12
+ const identity = row.workspaceMode === 'task-bound' && row.taskId
13
+ ? { mode: 'task-bound' as const, taskId: row.taskId }
14
+ : { mode: 'branch-only' as const };
15
+ const control = sandboxControlPaths({
16
+ base: config.controlBase,
17
+ project: config.project,
18
+ container: row.name,
19
+ identity
20
+ });
21
+ try {
22
+ return readSandboxControlStatus(control.statusDir);
23
+ } catch {
24
+ return null;
25
+ }
26
+ }
@@ -92,6 +92,12 @@ import {
92
92
  } from '../workspace-view.ts';
93
93
  import { clipboardHostDir, CONTAINER_CLIPBOARD_MOUNT } from '../clipboard/paths.ts';
94
94
  import { validateSelinuxDisableEnv } from '../engines/selinux.ts';
95
+ import {
96
+ captureSandboxAuthority,
97
+ commandForSandboxAuthority,
98
+ verifySandboxAuthority,
99
+ type SandboxAuthorityEvidenceV1
100
+ } from '../engines/authority.ts';
95
101
  import { dotfilesCacheDir, materializeDotfiles } from '../dotfiles.ts';
96
102
  import { ensureSandboxDiscoveryReadmes } from '../readme-scaffold.ts';
97
103
  import { removeDirRecursive } from '../../remove-dir.ts';
@@ -923,6 +929,24 @@ function runEngineTaskCommand(engine: string, cmd: string, args: string[], opts:
923
929
  return runTaskCommand(command.cmd, command.args, opts);
924
930
  }
925
931
 
932
+ function runSandboxAuthorityTaskCommand(
933
+ authority: SandboxAuthorityEvidenceV1,
934
+ cmd: string,
935
+ args: string[],
936
+ opts: { cwd?: string } = {}
937
+ ): string {
938
+ const command = commandForSandboxAuthority(authority, cmd, args);
939
+ return runTaskCommand(command.cmd, command.args, opts);
940
+ }
941
+
942
+ function runSandboxAuthoritySafeCommand(
943
+ authority: SandboxAuthorityEvidenceV1,
944
+ args: string[]
945
+ ): string {
946
+ const command = commandForSandboxAuthority(authority, 'docker', args);
947
+ return runSafe(command.cmd, command.args);
948
+ }
949
+
926
950
  // `docker run` args for mounting a tool's containerMount as an in-container
927
951
  // tmpfs. containerMount is an in-container path, so it is NOT engine-converted.
928
952
  export function buildTmpfsRunArgs(containerMount: string, tmpfs: { size?: string }): string[] {
@@ -1481,8 +1505,11 @@ export async function create(args: string[]): Promise<void> {
1481
1505
  const tzFlags = hostTz ? ['-e', `TZ=${hostTz}`] : [];
1482
1506
 
1483
1507
  let createdContainerRef: string | null = null;
1508
+ let creationAuthority: SandboxAuthorityEvidenceV1 | null = null;
1484
1509
  try {
1485
- const dockerRunId = runEngineTaskCommand(engine, 'docker', [
1510
+ creationAuthority = captureSandboxAuthority(engine);
1511
+ commandForSandboxAuthority(creationAuthority, 'docker');
1512
+ const dockerRunId = runSandboxAuthorityTaskCommand(creationAuthority, 'docker', [
1486
1513
  'run',
1487
1514
  '-d',
1488
1515
  '--init',
@@ -1537,11 +1564,11 @@ export async function create(args: string[]): Promise<void> {
1537
1564
  effectiveConfig.imageName
1538
1565
  ]);
1539
1566
  createdContainerRef = dockerRunId.trim();
1540
- const containerId = runEngineTaskCommand(engine, 'docker', [
1567
+ const containerId = runSandboxAuthorityTaskCommand(creationAuthority, 'docker', [
1541
1568
  'inspect', '--format', '{{.Id}}', dockerRunId.trim()
1542
1569
  ]).trim();
1543
1570
  if (!containerId) throw new Error('SANDBOX_CONTROL_CONTAINER_ID_INVALID');
1544
- const rawContainerLabels = runEngineTaskCommand(engine, 'docker', [
1571
+ const rawContainerLabels = runSandboxAuthorityTaskCommand(creationAuthority, 'docker', [
1545
1572
  'inspect', '--format', '{{json .Config.Labels}}', containerId
1546
1573
  ]).trim();
1547
1574
  let inspectedLabels: unknown;
@@ -1566,10 +1593,18 @@ export async function create(args: string[]): Promise<void> {
1566
1593
  for (const [key, expected] of Object.entries(expectedLabels)) {
1567
1594
  if (labels[key] !== expected) throw new Error('SANDBOX_CONTROL_CONTAINER_IDENTITY_MISMATCH');
1568
1595
  }
1596
+ const authorityEvidence = captureSandboxAuthority(engine, {
1597
+ route: creationAuthority,
1598
+ lockDomain: creationAuthority.lockDomain
1599
+ });
1600
+ if (verifySandboxAuthority(creationAuthority, authorityEvidence).state !== 'verified') {
1601
+ throw new Error('SANDBOX_AUTHORITY_DRIFT_DURING_CREATE');
1602
+ }
1569
1603
  finalizeSandboxControlManifest(control, {
1570
1604
  engine,
1571
1605
  id: containerId,
1572
- labels: expectedLabels
1606
+ labels: expectedLabels,
1607
+ authorityEvidence
1573
1608
  });
1574
1609
  replacementLease.clearQuiescing();
1575
1610
  await startSandboxControlBroker(effectiveConfig.repoRoot, control.manifestPath);
@@ -1580,8 +1615,13 @@ export async function create(args: string[]): Promise<void> {
1580
1615
  createdTmpfsSeedPlan = tmpfsSeedPlan;
1581
1616
  } catch (error) {
1582
1617
  if (createdContainerRef) {
1583
- runSafeEngine(engine, 'docker', ['stop', createdContainerRef]);
1584
- runSafeEngine(engine, 'docker', ['rm', createdContainerRef]);
1618
+ if (creationAuthority) {
1619
+ runSandboxAuthoritySafeCommand(creationAuthority, ['stop', createdContainerRef]);
1620
+ runSandboxAuthoritySafeCommand(creationAuthority, ['rm', createdContainerRef]);
1621
+ } else {
1622
+ runSafeEngine(engine, 'docker', ['stop', createdContainerRef]);
1623
+ runSafeEngine(engine, 'docker', ['rm', createdContainerRef]);
1624
+ }
1585
1625
  }
1586
1626
  if (!hadExistingControlRoot) removeDirRecursive(control.root);
1587
1627
  if (replacementCutover) {
@@ -11,6 +11,7 @@ import { detectEngine } from '../engine.ts';
11
11
  import { formatTable } from '../../table.ts';
12
12
  import { loadShortIdByTaskId } from '../../task/short-id.ts';
13
13
  import { fetchSandboxRows } from './list-running.ts';
14
+ import { readSandboxControlStatusForRow } from './control-status.ts';
14
15
 
15
16
  export { containerListFormat, parseLabels } from './list-running.ts';
16
17
 
@@ -88,6 +89,12 @@ export function ls(args: string[] = []): void {
88
89
  process.stdout.write(` ${line}\n`);
89
90
  }
90
91
  process.stdout.write(` Total: ${ordered.length} containers\n`);
92
+ for (const row of ordered) {
93
+ const controlStatus = readSandboxControlStatusForRow(config, row);
94
+ process.stdout.write(
95
+ ` ${row.name}: health=${controlStatus?.state ?? 'unavailable'} task-view=${controlStatus?.taskView.state ?? 'unavailable'}\n`
96
+ );
97
+ }
91
98
  if (tableRows.some((r) => r.shortId === '-')) {
92
99
  process.stdout.write(
93
100
  ` SHORT '-' = no active task bound; that sandbox is free to remove with 'ai sandbox rm <branch>'.\n`