@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
@@ -1,12 +1,24 @@
1
1
  import { spawn, type ChildProcess } from 'node:child_process';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
- import { randomUUID } from 'node:crypto';
4
+ import { createHash, randomUUID } from 'node:crypto';
5
5
  import { getProcessStartTime } from '../../server/process-state.ts';
6
- import { createTask } from '../../task/create-service.ts';
6
+ import {
7
+ createTask,
8
+ projectTaskCreateResult,
9
+ taskCreateExitCode,
10
+ taskCreateFailure,
11
+ type TaskCreateResult
12
+ } from '../../task/create-service.ts';
7
13
  import { applyTaskFinalization } from '../../task/finalization.ts';
8
14
  import { bindSandboxControlTask, validateSandboxControlRequest, type SandboxControlExecution, type SandboxControlManifest, type SandboxControlRequest } from './protocol.ts';
9
- import { atomicWriteJson, executionPath, readActiveLease, terminateSandboxControlExecution } from './state.ts';
15
+ import {
16
+ appendSandboxControlAudit,
17
+ atomicWriteJson,
18
+ executionPath,
19
+ readActiveLease,
20
+ terminateSandboxControlExecution
21
+ } from './state.ts';
10
22
  import {
11
23
  createSandboxExecutorExecutionContext,
12
24
  dispatchTaskControlOperation,
@@ -21,6 +33,7 @@ import {
21
33
  openCodexControllerRegistration,
22
34
  resolveCodexControllerBinding
23
35
  } from './controller-registration.ts';
36
+ import type { OrchestrationDiagnosticLogger } from '../../task/orchestration.ts';
24
37
 
25
38
  export type SandboxControlExecutionResult = {
26
39
  exitCode: number;
@@ -59,6 +72,67 @@ function safeEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
59
72
  return Object.fromEntries(Object.entries(env).filter(([key]) => !key.toUpperCase().startsWith('AGENT_INFRA_CONTROL_')));
60
73
  }
61
74
 
75
+ function safeRealpath(value: string): string | null {
76
+ try {
77
+ return fs.realpathSync.native(value);
78
+ } catch {
79
+ return null;
80
+ }
81
+ }
82
+
83
+ function appendExecutorAudit(
84
+ manifest: SandboxControlManifest,
85
+ event: string,
86
+ fields: Record<string, string | number | boolean | null> = {}
87
+ ): void {
88
+ try {
89
+ appendSandboxControlAudit(manifest, event, { source: 'executor', ...fields });
90
+ } catch {
91
+ // Diagnostics must never change the control protocol.
92
+ }
93
+ }
94
+
95
+ function requestAuditFields(
96
+ manifest: SandboxControlManifest,
97
+ manifestPath: string,
98
+ request: SandboxControlRequest
99
+ ): Record<string, string | number | boolean | null> {
100
+ const args = 'args' in request ? request.args : [];
101
+ const encodedArgs = JSON.stringify(args);
102
+ return {
103
+ requestId: request.id,
104
+ requestFamily: request.family,
105
+ sandboxTaskId: manifest.taskId,
106
+ requestGeneration: request.generation,
107
+ requestIssuedAt: request.issuedAt,
108
+ requestExpiresAt: request.expiresAt,
109
+ requestArgCount: args.length,
110
+ requestArgsSha256: createHash('sha256').update(encodedArgs, 'utf8').digest('hex'),
111
+ requestTaskRef: args[0] ?? null,
112
+ requestCommand: args[1] ?? null,
113
+ controllerProofPresent: request.controllerProof !== null,
114
+ hostCwd: process.cwd(),
115
+ manifestPath,
116
+ manifestPathRealpath: safeRealpath(manifestPath),
117
+ repoRoot: manifest.repoRoot,
118
+ repoRootRealpath: safeRealpath(manifest.repoRoot),
119
+ worktreeRoot: manifest.worktreeRoot,
120
+ worktreeRootRealpath: safeRealpath(manifest.worktreeRoot),
121
+ runtimeDir: manifest.runtimeDir,
122
+ runtimeDirRealpath: safeRealpath(manifest.runtimeDir)
123
+ };
124
+ }
125
+
126
+ function resultAuditFields(result: SandboxControlExecutionResult): Record<string, string | number | boolean | null> {
127
+ return {
128
+ exitCode: result.exitCode,
129
+ stdoutBytes: Buffer.byteLength(result.stdout, 'utf8'),
130
+ stderrBytes: Buffer.byteLength(result.stderr, 'utf8'),
131
+ stdoutSha256: createHash('sha256').update(result.stdout, 'utf8').digest('hex'),
132
+ stderrSha256: createHash('sha256').update(result.stderr, 'utf8').digest('hex')
133
+ };
134
+ }
135
+
62
136
  export function nodeEntryArgs(entry: string, args: string[]): string[] {
63
137
  return path.extname(entry) === '.ts'
64
138
  ? ['--experimental-strip-types', '--no-warnings', entry, ...args]
@@ -218,7 +292,23 @@ function lifecycleFailure(code: string, message: string): SandboxControlExecutio
218
292
  };
219
293
  }
220
294
 
221
- function finalizationResult(result: ReturnType<typeof applyTaskFinalization>): SandboxControlExecutionResult {
295
+ function taskCreateExecutionResult(result: TaskCreateResult): SandboxControlExecutionResult {
296
+ return {
297
+ exitCode: taskCreateExitCode(result),
298
+ stdout: `${JSON.stringify(result)}\n`,
299
+ stderr: ''
300
+ };
301
+ }
302
+
303
+ function taskCreateExecutionFailure(requestId: string, code: string, message: string): SandboxControlExecutionResult {
304
+ return taskCreateExecutionResult(taskCreateFailure({ code, message, retryable: false }, {
305
+ requestId,
306
+ accepted: true,
307
+ recovery: 'inspect-domain-state'
308
+ }));
309
+ }
310
+
311
+ function finalizationResult(result: Awaited<ReturnType<typeof applyTaskFinalization>>): SandboxControlExecutionResult {
222
312
  const payload = {
223
313
  version: 1,
224
314
  status: result.status,
@@ -239,19 +329,25 @@ type ExecuteRequestOptions = Readonly<{
239
329
  resolveControllerBinding?: typeof resolveCodexControllerBinding;
240
330
  }>;
241
331
 
242
- export async function executeRequest(
332
+ async function executeRequestInner(
243
333
  manifest: SandboxControlManifest,
244
334
  manifestPath: string,
245
335
  request: SandboxControlRequest,
246
336
  options: ExecuteRequestOptions = {}
247
337
  ): Promise<SandboxControlExecutionResult> {
248
338
  if (request.family === 'task-create') {
249
- const result = createTask(request.candidate, { repoRoot: manifest.repoRoot });
250
- return {
251
- exitCode: result.status === 'blocked' ? 2 : result.status === 'failed' ? 1 : 0,
252
- stdout: `${JSON.stringify(result)}\n`,
253
- stderr: ''
254
- };
339
+ try {
340
+ const result = await createTask(request.candidate, { repoRoot: manifest.repoRoot });
341
+ return taskCreateExecutionResult(projectTaskCreateResult(result, {
342
+ requestId: request.id,
343
+ accepted: true,
344
+ recovery: 'none'
345
+ }));
346
+ } catch (error) {
347
+ const detail = error instanceof Error ? error.message : String(error);
348
+ const code = /^([A-Z][A-Z0-9_]+)/u.exec(detail)?.[1] ?? 'TASK_CREATE_EXECUTION_FAILED';
349
+ return taskCreateExecutionFailure(request.id, code, detail);
350
+ }
255
351
  }
256
352
  if (request.family === 'codex-controller') {
257
353
  try {
@@ -293,6 +389,16 @@ export async function executeRequest(
293
389
  });
294
390
  return { exitCode: 0, stdout: `${JSON.stringify(result)}\n`, stderr: '' };
295
391
  } catch (error) {
392
+ const errorCode = error instanceof CodexControllerRegistrationError
393
+ ? error.code
394
+ : /^([A-Z][A-Z0-9_]+)/u.exec(error instanceof Error ? error.message : String(error))?.[1]
395
+ ?? 'CODEX_SANDBOX_CONTROLLER_FAILED';
396
+ appendExecutorAudit(manifest, 'controller-operation-failed', {
397
+ ...requestAuditFields(manifest, manifestPath, request),
398
+ controllerCommand: request.command,
399
+ errorCode,
400
+ errorType: error instanceof Error ? error.name : typeof error,
401
+ });
296
402
  return controllerFailure(error);
297
403
  }
298
404
  }
@@ -313,7 +419,7 @@ export async function executeRequest(
313
419
  }),
314
420
  operation
315
421
  );
316
- return finalizationResult(result);
422
+ return finalizationResult(await result);
317
423
  }
318
424
  const boundArgs = bindSandboxControlTask(request, manifest.taskId!);
319
425
  if (request.family === 'task-orchestration') {
@@ -364,6 +470,14 @@ export async function executeRequest(
364
470
  );
365
471
  }
366
472
  }
473
+ const diagnosticLog: OrchestrationDiagnosticLogger = (event, fields): void => {
474
+ appendExecutorAudit(manifest, event.startsWith('orchestration-') ? event : `orchestration-${event}`, {
475
+ requestId: request.id,
476
+ requestFamily: request.family,
477
+ sandboxTaskId: manifest.taskId,
478
+ ...fields
479
+ });
480
+ };
367
481
  const context = createSandboxExecutorExecutionContext({
368
482
  repoRoot: manifest.repoRoot,
369
483
  worktreeRoot: manifest.worktreeRoot,
@@ -372,6 +486,7 @@ export async function executeRequest(
372
486
  generation: manifest.generation,
373
487
  manifestPath,
374
488
  requestId: request.id,
489
+ diagnosticLog,
375
490
  ...(controllerBinding ? { controllerBinding } : {})
376
491
  });
377
492
  const format = (value: unknown): SandboxControlExecutionResult => {
@@ -387,7 +502,35 @@ export async function executeRequest(
387
502
  return format(await dispatchTaskControlOperation(context, operation));
388
503
  }
389
504
  if (operation.family !== 'task-lifecycle') throw new Error('SANDBOX_CONTROL_LIFECYCLE_OPERATION_INVALID');
390
- return format(dispatchTaskControlOperation(context, operation));
505
+ return format(await dispatchTaskControlOperation(context, operation));
506
+ }
507
+
508
+ export async function executeRequest(
509
+ manifest: SandboxControlManifest,
510
+ manifestPath: string,
511
+ request: SandboxControlRequest,
512
+ options: ExecuteRequestOptions = {}
513
+ ): Promise<SandboxControlExecutionResult> {
514
+ const fields = requestAuditFields(manifest, manifestPath, request);
515
+ appendExecutorAudit(manifest, 'executor-request-start', fields);
516
+ try {
517
+ const result = await executeRequestInner(manifest, manifestPath, request, options);
518
+ appendExecutorAudit(manifest, 'executor-request-finished', {
519
+ requestId: request.id,
520
+ requestFamily: request.family,
521
+ sandboxTaskId: manifest.taskId,
522
+ ...resultAuditFields(result)
523
+ });
524
+ return result;
525
+ } catch (error) {
526
+ appendExecutorAudit(manifest, 'executor-request-failed', {
527
+ requestId: request.id,
528
+ requestFamily: request.family,
529
+ sandboxTaskId: manifest.taskId,
530
+ errorType: error instanceof Error ? error.name : typeof error,
531
+ });
532
+ throw error;
533
+ }
391
534
  }
392
535
 
393
536
  export async function runSandboxControlExecutor(requestPath: string, nonce: string): Promise<void> {
@@ -397,13 +540,29 @@ export async function runSandboxControlExecutor(requestPath: string, nonce: stri
397
540
  if (!manifestPath) throw new Error('SANDBOX_CONTROL_EXECUTOR_MANIFEST_MISSING');
398
541
  const manifest = readSandboxControlManifest(manifestPath);
399
542
  const root = fs.realpathSync.native(process.cwd());
400
- if (fs.realpathSync.native(manifest.repoRoot) !== root) throw new Error('SANDBOX_CONTROL_EXECUTOR_ROOT_INVALID');
543
+ const expectedRoot = safeRealpath(manifest.repoRoot);
544
+ if (expectedRoot !== root) {
545
+ appendExecutorAudit(manifest, 'executor-root-validation-failed', {
546
+ hostCwd: process.cwd(),
547
+ observedRoot: root,
548
+ expectedRoot
549
+ });
550
+ throw new Error('SANDBOX_CONTROL_EXECUTOR_ROOT_INVALID');
551
+ }
401
552
  const raw = JSON.parse(fs.readFileSync(requestPath, 'utf8')) as unknown;
402
553
  const request = validateSandboxControlRequest(raw, manifest);
554
+ appendExecutorAudit(manifest, 'executor-request-validated', requestAuditFields(manifest, manifestPath, request));
403
555
  const requestDirectory = path.resolve(path.dirname(requestPath));
404
556
  const processingDirectory = path.resolve(path.join(manifest.processingDir, request.id));
405
557
  const channelRequestDirectory = path.resolve(path.join(manifest.channelDir, 'requests'));
406
558
  if (requestDirectory !== processingDirectory && requestDirectory !== channelRequestDirectory) {
559
+ appendExecutorAudit(manifest, 'executor-request-path-validation-failed', {
560
+ ...requestAuditFields(manifest, manifestPath, request),
561
+ requestPath,
562
+ requestDirectory,
563
+ processingDirectory,
564
+ channelRequestDirectory
565
+ });
407
566
  throw new Error('SANDBOX_CONTROL_EXECUTOR_REQUEST_INVALID');
408
567
  }
409
568
  let result: SandboxControlExecutionResult;
@@ -411,6 +570,10 @@ export async function runSandboxControlExecutor(requestPath: string, nonce: stri
411
570
  assertSandboxControlExecutorAuthority(manifest, gateOwner);
412
571
  result = await executeRequest(manifest, manifestPath, request);
413
572
  } catch (error) {
573
+ appendExecutorAudit(manifest, 'executor-authority-or-dispatch-failed', {
574
+ ...requestAuditFields(manifest, manifestPath, request),
575
+ errorType: error instanceof Error ? error.name : typeof error,
576
+ });
414
577
  const detail = error instanceof Error ? error.message : String(error);
415
578
  const code = /^([A-Z][A-Z0-9_]+)/u.exec(detail)?.[1] ?? 'SANDBOX_CONTROL_EXECUTOR_FAILED';
416
579
  result = request.family === 'task-finalization'
@@ -422,7 +585,9 @@ export async function runSandboxControlExecutor(requestPath: string, nonce: stri
422
585
  })}\n`,
423
586
  stderr: ''
424
587
  }
425
- : request.family === 'task-lifecycle'
588
+ : request.family === 'task-create'
589
+ ? taskCreateExecutionFailure(request.id, code, detail)
590
+ : request.family === 'task-lifecycle'
426
591
  ? lifecycleFailure(code, detail)
427
592
  : orchestrationFailure(code, detail);
428
593
  }