@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
@@ -3,6 +3,7 @@ import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { runSafeEngine, runVerboseEngine } from '../shell.js';
5
5
  import { resolveTaskBranch } from '../task-resolver.js';
6
+ import { isRemovedHashShortIdInput } from '../../task/short-id.js';
6
7
  export function containerListFormat() {
7
8
  return '{{.Names}}\t{{.Status}}\t{{.Labels}}';
8
9
  }
@@ -70,13 +71,13 @@ export function fetchSandboxRows(engine, label, branchKey) {
70
71
  }
71
72
  /**
72
73
  * Returns true iff `arg` is a syntactically valid task short reference.
73
- * Accepts both bare numeric ('11') and '#'-prefixed ('#11') forms.
74
+ * Accepts bare numeric ('11') task short ids.
74
75
  * Zero IO. Callers MUST use this as the gate before constructing any context
75
76
  * for resolveTaskShortRef — that way non-matching arguments (e.g. '#abc',
76
77
  * '#1.5', '#') never trigger sandbox list IO.
77
78
  */
78
79
  export function isTaskShortRef(arg) {
79
- return /^#?\d+$/.test(arg);
80
+ return /^\d+$/.test(arg);
80
81
  }
81
82
  /**
82
83
  * Try to resolve a short ref against the global task-short-id registry.
@@ -91,9 +92,7 @@ function tryResolveFromRegistry(arg, repoRoot) {
91
92
  const scriptPath = path.join(repoRoot, '.agents', 'scripts', 'task-short-id.js');
92
93
  if (!fs.existsSync(scriptPath))
93
94
  return { status: 'miss' };
94
- // Strip leading '#' when forwarding bare-numeric input through the script's CLI.
95
- // (Script accepts both forms, but this avoids shell quoting confusion in error
96
- // messages echoed back to the user.)
95
+ // Forward the bare-numeric short ref to the registry script for ID resolution.
97
96
  const result = spawnSync('node', [scriptPath, 'resolve', arg], { encoding: 'utf8', cwd: repoRoot });
98
97
  if (result.status !== 0)
99
98
  return { status: 'miss' };
@@ -120,7 +119,7 @@ function tryResolveFromRegistry(arg, repoRoot) {
120
119
  }
121
120
  /**
122
121
  /**
123
- * Resolve a task short reference (bare 'N' or '#N') to a branch name for the
122
+ * Resolve a bare task short reference to a branch name for the
124
123
  * sandbox entrypoint.
125
124
  *
126
125
  * Resolution: registry-only. Look up the short id in the global task-short-id
@@ -137,11 +136,11 @@ export function resolveTaskShortRef(arg, ctx) {
137
136
  if (lookup.status === 'hit')
138
137
  return lookup.branch;
139
138
  throw new Error(`short ref '${arg}' is not in the active task registry. ` +
140
- `'#N' and bare N resolve only via the registry (not by row position in 'ai sandbox ls'); ` +
139
+ `bare N resolves only via the registry (not by row position in 'ai sandbox ls'); ` +
141
140
  `use a task short id (e.g. 'ai sandbox exec 11'), a TASK-id, or a branch name.`);
142
141
  }
143
142
  /**
144
- * Resolve a sandbox command argument (`<branch | TASK-id | N | '#N'>`) to a
143
+ * Resolve a sandbox command argument (`<branch | TASK-id | N>`) to a
145
144
  * branch name, mirroring `ai sandbox exec` so that `start` and `exec` share one
146
145
  * input contract. Short refs go through the registry-only resolver (which throws
147
146
  * an actionable error on a miss); everything else flows through resolveTaskBranch
@@ -149,6 +148,9 @@ export function resolveTaskShortRef(arg, ctx) {
149
148
  * Callers still run assertValidBranchName on the result.
150
149
  */
151
150
  export function resolveBranchArg(arg, ctx) {
151
+ if (isRemovedHashShortIdInput(arg)) {
152
+ throw new Error(`Invalid task short id '${arg}': task short ids must use bare digits`);
153
+ }
152
154
  return isTaskShortRef(arg)
153
155
  ? resolveTaskShortRef(arg, ctx)
154
156
  : resolveTaskBranch(arg, ctx.repoRoot);
@@ -9,15 +9,17 @@ import { runEngine, runOkEngine, runSafeEngine, runVerboseEngine } from '../shel
9
9
  import { pruneSandboxDanglingImages } from '../image-prune.js';
10
10
  import { resolveTools } from '../tools.js';
11
11
  import { buildImageSignature, buildSandboxImageArgs, parseImageLabels, parseRefreshTimestamp } from '../image-build.js';
12
- const USAGE = `Usage: ai sandbox rebuild [--quiet] [--refresh]`;
13
- export function buildArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh } = {}) {
12
+ import { assertBuildProxyCompatibility, buildProxyFailureHint, prepareBuildProxy, redactBuildProxyValues } from '../build-proxy.js';
13
+ const USAGE = `Usage: ai sandbox rebuild [--quiet] [--refresh] [--inherit-build-proxy|-B]`;
14
+ export function buildArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh, buildProxyArgs = [] } = {}) {
14
15
  return buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, {
15
16
  engine: engine ?? detectEngine(config),
16
17
  runFn,
17
18
  runSafeFn,
18
19
  env,
19
20
  refresh,
20
- lastRefresh
21
+ lastRefresh,
22
+ buildProxyArgs
21
23
  });
22
24
  }
23
25
  function readExistingLastRefresh(config, engine) {
@@ -41,6 +43,7 @@ export async function rebuild(args) {
41
43
  options: {
42
44
  refresh: { type: 'boolean' },
43
45
  quiet: { type: 'boolean', short: 'q' },
46
+ 'inherit-build-proxy': { type: 'boolean', short: 'B' },
44
47
  help: { type: 'boolean', short: 'h' }
45
48
  }
46
49
  });
@@ -56,6 +59,12 @@ export async function rebuild(args) {
56
59
  const refresh = values.refresh ?? false;
57
60
  const engine = detectEngine(config);
58
61
  await ensureDocker(config, undefined);
62
+ if (values['inherit-build-proxy'] && config.dockerfile) {
63
+ throw new Error('Build proxy inheritance is unavailable with a custom sandbox Dockerfile.');
64
+ }
65
+ const buildProxy = prepareBuildProxy(values['inherit-build-proxy'] ?? false, process.env, engine);
66
+ if (values['inherit-build-proxy'])
67
+ assertBuildProxyCompatibility(engine);
59
68
  const lastRefresh = refresh ? Date.now() : readExistingLastRefresh(config, engine);
60
69
  p.intro(pc.cyan('Rebuilding sandbox image'));
61
70
  try {
@@ -65,9 +74,11 @@ export async function rebuild(args) {
65
74
  runEngine(engine, 'docker', buildArgs(config, tools, preparedDockerfile.path, imageSignature, {
66
75
  engine,
67
76
  refresh,
68
- lastRefresh
77
+ lastRefresh,
78
+ buildProxyArgs: buildProxy.args
69
79
  }), {
70
- cwd: config.repoRoot
80
+ cwd: config.repoRoot,
81
+ env: buildProxy.env
71
82
  });
72
83
  spinner.stop(pc.green('Sandbox image rebuilt'));
73
84
  }
@@ -76,12 +87,18 @@ export async function rebuild(args) {
76
87
  runVerboseEngine(engine, 'docker', buildArgs(config, tools, preparedDockerfile.path, imageSignature, {
77
88
  engine,
78
89
  refresh,
79
- lastRefresh
80
- }), { cwd: config.repoRoot });
90
+ lastRefresh,
91
+ buildProxyArgs: buildProxy.args
92
+ }), { cwd: config.repoRoot, env: buildProxy.env });
81
93
  p.log.success(pc.green('Sandbox image rebuilt'));
82
94
  }
83
95
  pruneSandboxDanglingImages(config, engine);
84
96
  }
97
+ catch (error) {
98
+ const message = redactBuildProxyValues(error instanceof Error ? error.message : String(error), buildProxy.redactionValues);
99
+ const hint = values['inherit-build-proxy'] ? `\n${buildProxyFailureHint(engine)}` : '';
100
+ throw new Error(`${message}${hint}`);
101
+ }
85
102
  finally {
86
103
  preparedDockerfile.cleanup();
87
104
  }
@@ -5,12 +5,12 @@ import { loadConfig } from '../config.js';
5
5
  import { assertValidBranchName, worktreeDirCandidates } from '../constants.js';
6
6
  import { resolveBranchArg } from './list-running.js';
7
7
  import { resolveTools, toolConfigDirCandidates } from '../tools.js';
8
- const USAGE = `Usage: ai sandbox show <branch | TASK-id | N | '#N'>
8
+ const USAGE = `Usage: ai sandbox show <branch | TASK-id | N>
9
9
 
10
10
  Shows one sandbox's worktree path and per-tool state paths (Claude Code,
11
11
  Codex, Gemini CLI, OpenCode). The argument follows the same contract as
12
12
  'ai sandbox exec' and 'ai sandbox start': N (bare) is the recommended form
13
- for task short ids (e.g. 'ai sandbox show 11'); '#N', a TASK-id, or a plain
13
+ for task short ids (e.g. 'ai sandbox show 11'); a TASK-id or a plain
14
14
  branch name are also accepted. Use 'ai sandbox ls' for the container list.`;
15
15
  function existingDirs(candidates) {
16
16
  const seen = new Set();
@@ -1,36 +1,74 @@
1
1
  import { loadConfig } from '../config.js';
2
2
  import { assertValidBranchName, containerNameCandidates, sandboxBranchLabel, sandboxLabel } from '../constants.js';
3
3
  import { detectEngine } from '../engine.js';
4
- import { fetchSandboxRows, resolveBranchArg, selectSandboxContainer, startSandboxContainer } from './list-running.js';
5
- const USAGE = `Usage: ai sandbox start <branch | TASK-id | N | '#N'>
4
+ import { ensureSandboxReady } from '../recovery.js';
5
+ import { fetchSandboxRows, resolveBranchArg, selectSandboxContainer, } from './list-running.js';
6
+ const USAGE = `Usage: ai sandbox start [--recreate] <branch | TASK-id | N>
6
7
 
7
8
  Start an existing sandbox container that has stopped (for example after the
8
9
  Docker daemon was restarted or replaced). The container must already exist:
9
10
  if none is found, run 'ai sandbox create <branch>' first. A container that is
10
- already running is left untouched.`;
11
+ already running is checked without modifying healthy runtime state. --recreate
12
+ allows container-only replacement after in-place recovery fails.`;
13
+ export function parseStartArgs(args) {
14
+ let recreate = false;
15
+ let help = false;
16
+ const positionals = [];
17
+ for (const arg of args) {
18
+ if (arg === '--recreate') {
19
+ recreate = true;
20
+ }
21
+ else if (arg === '--help' || arg === '-h') {
22
+ help = true;
23
+ }
24
+ else if (arg.startsWith('-')) {
25
+ throw new Error(`Unknown option: ${arg}\n${USAGE}`);
26
+ }
27
+ else {
28
+ positionals.push(arg);
29
+ }
30
+ }
31
+ if (!help && positionals.length !== 1) {
32
+ throw new Error(USAGE);
33
+ }
34
+ return { target: positionals[0] ?? '', recreate, help };
35
+ }
11
36
  export async function start(args) {
12
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
37
+ if (args.length === 0) {
38
+ process.stdout.write(`${USAGE}\n`);
39
+ process.exitCode = 1;
40
+ return;
41
+ }
42
+ const parsed = parseStartArgs(args);
43
+ if (parsed.help) {
13
44
  process.stdout.write(`${USAGE}\n`);
14
- if (args.length === 0) {
15
- process.exitCode = 1;
16
- }
17
45
  return;
18
46
  }
19
- const [firstArg = ''] = args;
20
47
  const config = loadConfig();
21
48
  const engine = detectEngine(config);
22
- const branch = resolveBranchArg(firstArg, { repoRoot: config.repoRoot });
49
+ const branch = resolveBranchArg(parsed.target, { repoRoot: config.repoRoot });
23
50
  assertValidBranchName(branch);
24
51
  const { running, nonRunning } = fetchSandboxRows(engine, sandboxLabel(config), sandboxBranchLabel(config));
25
52
  const found = selectSandboxContainer([...running, ...nonRunning], containerNameCandidates(config, branch));
26
53
  if (!found) {
27
54
  throw new Error(`No sandbox container for branch '${branch}'. Run 'ai sandbox create ${branch}' to create one.`);
28
55
  }
29
- if (found.running) {
30
- process.stdout.write(`Sandbox '${found.name}' is already running.\n`);
31
- return;
32
- }
33
- startSandboxContainer(engine, found.name);
34
- process.stdout.write(`Started sandbox '${found.name}'.\n`);
56
+ const ready = await ensureSandboxReady({
57
+ config,
58
+ engine,
59
+ branch,
60
+ row: found,
61
+ allowRecreate: parsed.recreate,
62
+ recreate: async (targetBranch) => {
63
+ const { create } = await import('./create.js');
64
+ await create([targetBranch, '--no-refresh']);
65
+ }
66
+ });
67
+ const message = ready.path === 'healthy'
68
+ ? `Sandbox '${ready.container}' is already running and healthy.`
69
+ : ready.path === 'recreated'
70
+ ? `Recreated sandbox '${ready.container}' and verified readiness.`
71
+ : `Recovered sandbox '${ready.container}' and verified readiness.`;
72
+ process.stdout.write(`${message}\n`);
35
73
  }
36
74
  //# sourceMappingURL=start.js.map
@@ -14,7 +14,7 @@ export function buildImageSignature(preparedDockerfile, tools) {
14
14
  .digest('hex')
15
15
  .slice(0, 12);
16
16
  }
17
- export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh } = {}) {
17
+ export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh, buildProxyArgs = [] } = {}) {
18
18
  const selectedEngine = engine ?? detectEngine({ engine: config.engine });
19
19
  const { uid: hostUid, gid: hostGid } = resolveBuildUid({
20
20
  engine: selectedEngine,
@@ -39,6 +39,7 @@ export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignat
39
39
  '--label',
40
40
  `${sandboxImageConfigLabel(config)}=${imageSignature}`
41
41
  ];
42
+ args.push(...buildProxyArgs);
42
43
  if (lastRefresh !== undefined) {
43
44
  args.push('--label', `${sandboxImageRefreshLabel(config)}=${lastRefresh}`);
44
45
  }
@@ -2,14 +2,14 @@ const USAGE = `Usage: ai sandbox <command> [options]
2
2
 
3
3
  Commands:
4
4
  create <branch> [base] Create a sandbox (VM + image + worktree + container)
5
- exec <branch | TASK-id | N | '#N'> [cmd...]
5
+ exec [--recreate] <branch | TASK-id | N> [cmd...]
6
6
  Enter sandbox or run a command. N (bare) is the
7
7
  recommended form for task short ids (e.g.
8
- 'ai sandbox exec 11'); '#N' is also accepted.
8
+ 'ai sandbox exec 11').
9
9
  ls List sandboxes for the current project (the '#'
10
10
  column is a display-only row number; the 'SHORT'
11
11
  column shows the active task short id, '-' if none)
12
- show <branch | TASK-id | N | '#N'>
12
+ show <branch | TASK-id | N>
13
13
  Show one sandbox's worktree and per-tool state paths
14
14
  prune [--dry-run] Remove orphaned per-branch state dirs
15
15
  rebuild [--quiet] [--refresh]
@@ -18,9 +18,9 @@ Commands:
18
18
  rm <branch> | --all | --purge
19
19
  Remove one sandbox, all sandboxes not bound to an
20
20
  active task (--all), or tear down everything (--purge)
21
- start <branch | TASK-id | N | '#N'>
22
- Start an existing stopped sandbox container
23
- (e.g. after the Docker daemon restarted)
21
+ start [--recreate] <branch | TASK-id | N>
22
+ Verify or recover an existing sandbox container;
23
+ optionally replace only the container on failure
24
24
  vm status|start|stop Manage the sandbox VM (macOS) or check the backend (Windows)
25
25
 
26
26
  Run 'ai sandbox <command> --help' for details.`;
@@ -0,0 +1,36 @@
1
+ import path from 'node:path';
2
+ import { shareBranchDir, shareCommonDir, shellConfigDirCandidates, worktreeDirCandidates } from './constants.js';
3
+ export function sandboxCoreBindMounts(config, branch, overrides = {}) {
4
+ return [
5
+ {
6
+ hostPaths: overrides.worktree
7
+ ? [overrides.worktree]
8
+ : worktreeDirCandidates(config, branch),
9
+ containerPath: '/workspace',
10
+ readOnly: false
11
+ },
12
+ {
13
+ hostPaths: [path.join(config.repoRoot, '.agents', 'workspace')],
14
+ containerPath: '/workspace/.agents/workspace',
15
+ readOnly: false
16
+ },
17
+ {
18
+ hostPaths: [shareCommonDir(config)],
19
+ containerPath: '/share/common',
20
+ readOnly: false
21
+ },
22
+ {
23
+ hostPaths: [shareBranchDir(config, branch)],
24
+ containerPath: '/share/branch',
25
+ readOnly: false
26
+ },
27
+ {
28
+ hostPaths: overrides.shellConfigHostDir
29
+ ? [overrides.shellConfigHostDir]
30
+ : shellConfigDirCandidates(config, branch),
31
+ containerPath: '/home/devuser/.host-shell-config',
32
+ readOnly: true
33
+ }
34
+ ];
35
+ }
36
+ //# sourceMappingURL=mounts.js.map