agentplane 0.3.16 → 0.3.18

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 (722) hide show
  1. package/assets/policy/incidents.md +1 -0
  2. package/dist/.build-manifest.json +798 -603
  3. package/dist/adapters/git/git-context-adapter.d.ts +1 -1
  4. package/dist/adapters/git/git-context-adapter.d.ts.map +1 -1
  5. package/dist/agents/agents-template.d.ts.map +1 -1
  6. package/dist/agents/agents-template.js +23 -9
  7. package/dist/backends/task-backend/load.d.ts +2 -1
  8. package/dist/backends/task-backend/load.d.ts.map +1 -1
  9. package/dist/backends/task-backend/load.js +2 -1
  10. package/dist/backends/task-backend/local-backend-doc.d.ts.map +1 -1
  11. package/dist/backends/task-backend/local-backend-doc.js +2 -1
  12. package/dist/backends/task-backend/local-backend-read.d.ts.map +1 -1
  13. package/dist/backends/task-backend/local-backend-read.js +2 -1
  14. package/dist/backends/task-backend/local-backend-state.d.ts +1 -1
  15. package/dist/backends/task-backend/local-backend-state.d.ts.map +1 -1
  16. package/dist/backends/task-backend/local-backend-write.d.ts.map +1 -1
  17. package/dist/backends/task-backend/local-backend-write.js +2 -1
  18. package/dist/backends/task-backend/redmine/backend-cache-doc.js +1 -1
  19. package/dist/backends/task-backend/redmine/backend-report.js +1 -1
  20. package/dist/backends/task-backend/redmine/backend-runtime.d.ts +4 -146
  21. package/dist/backends/task-backend/redmine/backend-runtime.d.ts.map +1 -1
  22. package/dist/backends/task-backend/redmine/backend-runtime.js +4 -258
  23. package/dist/backends/task-backend/redmine/backend-sync/migration.js +1 -1
  24. package/dist/backends/task-backend/redmine/backend-sync/status.d.ts.map +1 -1
  25. package/dist/backends/task-backend/redmine/backend-sync/status.js +2 -1
  26. package/dist/backends/task-backend/redmine/backend-sync/write.js +1 -1
  27. package/dist/backends/task-backend/redmine/mapping.d.ts +1 -1
  28. package/dist/backends/task-backend/redmine/mapping.d.ts.map +1 -1
  29. package/dist/backends/task-backend/redmine/mapping.js +3 -3
  30. package/dist/backends/task-backend/redmine/parse.d.ts +1 -1
  31. package/dist/backends/task-backend/redmine/parse.d.ts.map +1 -1
  32. package/dist/backends/task-backend/redmine/runtime-context.d.ts +98 -0
  33. package/dist/backends/task-backend/redmine/runtime-context.d.ts.map +1 -0
  34. package/dist/backends/task-backend/redmine/runtime-context.js +57 -0
  35. package/dist/backends/task-backend/redmine/runtime-methods.d.ts +33 -0
  36. package/dist/backends/task-backend/redmine/runtime-methods.d.ts.map +1 -0
  37. package/dist/backends/task-backend/redmine/runtime-methods.js +86 -0
  38. package/dist/backends/task-backend/redmine/runtime-operations.d.ts +19 -0
  39. package/dist/backends/task-backend/redmine/runtime-operations.d.ts.map +1 -0
  40. package/dist/backends/task-backend/redmine/runtime-operations.js +83 -0
  41. package/dist/backends/task-backend/redmine/runtime-state.d.ts +10 -0
  42. package/dist/backends/task-backend/redmine/runtime-state.d.ts.map +1 -0
  43. package/dist/backends/task-backend/redmine/runtime-state.js +45 -0
  44. package/dist/backends/task-backend/redmine/state.js +1 -1
  45. package/dist/backends/task-backend/shared/constants.d.ts +2 -2
  46. package/dist/backends/task-backend/shared/constants.d.ts.map +1 -1
  47. package/dist/backends/task-backend/shared/constants.js +2 -2
  48. package/dist/backends/task-backend/shared/doc.js +1 -1
  49. package/dist/backends/task-backend/shared/export.d.ts +1 -1
  50. package/dist/backends/task-backend/shared/export.d.ts.map +1 -1
  51. package/dist/backends/task-backend/shared/export.js +3 -14
  52. package/dist/backends/task-backend/shared/id.js +1 -1
  53. package/dist/backends/task-backend/shared/record.d.ts +1 -1
  54. package/dist/backends/task-backend/shared/record.d.ts.map +1 -1
  55. package/dist/backends/task-backend/shared/record.js +2 -3
  56. package/dist/backends/task-backend/shared/types.d.ts +2 -2
  57. package/dist/backends/task-backend/shared/types.d.ts.map +1 -1
  58. package/dist/backends/task-index.d.ts +0 -4
  59. package/dist/backends/task-index.d.ts.map +1 -1
  60. package/dist/backends/task-index.js +0 -33
  61. package/dist/cli/archive.d.ts.map +1 -1
  62. package/dist/cli/archive.js +1 -1
  63. package/dist/cli/exit-codes.d.ts.map +1 -1
  64. package/dist/cli/exit-codes.js +1 -0
  65. package/dist/cli/group-command.d.ts +1 -0
  66. package/dist/cli/group-command.d.ts.map +1 -1
  67. package/dist/cli/group-command.js +7 -3
  68. package/dist/cli/http.d.ts.map +1 -1
  69. package/dist/cli/http.js +34 -15
  70. package/dist/cli/output.d.ts +1 -1
  71. package/dist/cli/output.d.ts.map +1 -1
  72. package/dist/cli/output.js +1 -1
  73. package/dist/cli/prompts.d.ts.map +1 -1
  74. package/dist/cli/prompts.js +8 -6
  75. package/dist/cli/run-cli/command-catalog/core.d.ts +1 -1
  76. package/dist/cli/run-cli/command-catalog/core.js +8 -8
  77. package/dist/cli/run-cli/command-catalog/{shared.d.ts → kernel.d.ts} +3 -2
  78. package/dist/cli/run-cli/command-catalog/kernel.d.ts.map +1 -0
  79. package/dist/cli/run-cli/command-catalog/lifecycle.d.ts +1 -1
  80. package/dist/cli/run-cli/command-catalog/lifecycle.js +3 -3
  81. package/dist/cli/run-cli/command-catalog/project.d.ts +1 -1
  82. package/dist/cli/run-cli/command-catalog/project.js +4 -4
  83. package/dist/cli/run-cli/command-catalog/task.d.ts +1 -1
  84. package/dist/cli/run-cli/command-catalog/task.js +3 -3
  85. package/dist/cli/run-cli/command-catalog.d.ts +2 -2
  86. package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
  87. package/dist/cli/run-cli/command-catalog.js +2 -0
  88. package/dist/cli/run-cli/command-loaders/core.d.ts +55 -0
  89. package/dist/cli/run-cli/command-loaders/core.d.ts.map +1 -0
  90. package/dist/cli/run-cli/command-loaders/core.js +27 -0
  91. package/dist/cli/run-cli/command-loaders/lifecycle.d.ts +19 -0
  92. package/dist/cli/run-cli/command-loaders/lifecycle.d.ts.map +1 -0
  93. package/dist/cli/run-cli/command-loaders/lifecycle.js +18 -0
  94. package/dist/cli/run-cli/command-loaders/project.d.ts +37 -0
  95. package/dist/cli/run-cli/command-loaders/project.d.ts.map +1 -0
  96. package/dist/cli/run-cli/command-loaders/project.js +36 -0
  97. package/dist/cli/run-cli/command-loaders/task.d.ts +65 -0
  98. package/dist/cli/run-cli/command-loaders/task.d.ts.map +1 -0
  99. package/dist/cli/run-cli/command-loaders/task.js +50 -0
  100. package/dist/cli/run-cli/commands/codex.d.ts +1 -1
  101. package/dist/cli/run-cli/commands/codex.d.ts.map +1 -1
  102. package/dist/cli/run-cli/commands/config.d.ts +1 -1
  103. package/dist/cli/run-cli/commands/config.d.ts.map +1 -1
  104. package/dist/cli/run-cli/commands/config.js +1 -1
  105. package/dist/cli/run-cli/commands/core/agent-profiles.js +1 -1
  106. package/dist/cli/run-cli/commands/core/agents.d.ts +1 -1
  107. package/dist/cli/run-cli/commands/core/agents.d.ts.map +1 -1
  108. package/dist/cli/run-cli/commands/core/preflight.d.ts.map +1 -1
  109. package/dist/cli/run-cli/commands/core/preflight.js +3 -2
  110. package/dist/cli/run-cli/commands/ide.d.ts +1 -1
  111. package/dist/cli/run-cli/commands/ide.d.ts.map +1 -1
  112. package/dist/cli/run-cli/commands/init/model.d.ts +2 -1
  113. package/dist/cli/run-cli/commands/init/model.d.ts.map +1 -1
  114. package/dist/cli/run-cli/commands/init/orchestrate-v2.d.ts +9 -0
  115. package/dist/cli/run-cli/commands/init/orchestrate-v2.d.ts.map +1 -0
  116. package/dist/cli/run-cli/commands/init/orchestrate-v2.js +265 -0
  117. package/dist/cli/run-cli/commands/init/orchestrate.d.ts.map +1 -1
  118. package/dist/cli/run-cli/commands/init/orchestrate.js +19 -23
  119. package/dist/cli/run-cli/commands/init/prompts-v2.d.ts +10 -0
  120. package/dist/cli/run-cli/commands/init/prompts-v2.d.ts.map +1 -0
  121. package/dist/cli/run-cli/commands/init/prompts-v2.js +26 -0
  122. package/dist/cli/run-cli/commands/init/recipes.d.ts +2 -1
  123. package/dist/cli/run-cli/commands/init/recipes.d.ts.map +1 -1
  124. package/dist/cli/run-cli/commands/init/recipes.js +3 -1
  125. package/dist/cli/run-cli/commands/init/spec.d.ts.map +1 -1
  126. package/dist/cli/run-cli/commands/init/spec.js +14 -0
  127. package/dist/cli/run-cli/commands/init/steps/advanced-settings.d.ts +9 -0
  128. package/dist/cli/run-cli/commands/init/steps/advanced-settings.d.ts.map +1 -0
  129. package/dist/cli/run-cli/commands/init/steps/advanced-settings.js +48 -0
  130. package/dist/cli/run-cli/commands/init/steps/apply.d.ts +30 -0
  131. package/dist/cli/run-cli/commands/init/steps/apply.d.ts.map +1 -0
  132. package/dist/cli/run-cli/commands/init/steps/apply.js +96 -0
  133. package/dist/cli/run-cli/commands/init/steps/backend.d.ts +8 -0
  134. package/dist/cli/run-cli/commands/init/steps/backend.d.ts.map +1 -0
  135. package/dist/cli/run-cli/commands/init/steps/backend.js +17 -0
  136. package/dist/cli/run-cli/commands/init/steps/conflict-resolver.d.ts +10 -0
  137. package/dist/cli/run-cli/commands/init/steps/conflict-resolver.d.ts.map +1 -0
  138. package/dist/cli/run-cli/commands/init/steps/conflict-resolver.js +41 -0
  139. package/dist/cli/run-cli/commands/init/steps/contracts.d.ts +57 -0
  140. package/dist/cli/run-cli/commands/init/steps/contracts.d.ts.map +1 -0
  141. package/dist/cli/run-cli/commands/init/steps/contracts.js +1 -0
  142. package/dist/cli/run-cli/commands/init/steps/ide.d.ts +8 -0
  143. package/dist/cli/run-cli/commands/init/steps/ide.d.ts.map +1 -0
  144. package/dist/cli/run-cli/commands/init/steps/ide.js +18 -0
  145. package/dist/cli/run-cli/commands/init/steps/index.d.ts +10 -0
  146. package/dist/cli/run-cli/commands/init/steps/index.d.ts.map +1 -0
  147. package/dist/cli/run-cli/commands/init/steps/index.js +9 -0
  148. package/dist/cli/run-cli/commands/init/steps/policy-gateway.d.ts +8 -0
  149. package/dist/cli/run-cli/commands/init/steps/policy-gateway.d.ts.map +1 -0
  150. package/dist/cli/run-cli/commands/init/steps/policy-gateway.js +17 -0
  151. package/dist/cli/run-cli/commands/init/steps/prompt-utils.d.ts +21 -0
  152. package/dist/cli/run-cli/commands/init/steps/prompt-utils.d.ts.map +1 -0
  153. package/dist/cli/run-cli/commands/init/steps/prompt-utils.js +36 -0
  154. package/dist/cli/run-cli/commands/init/steps/recipe-selection.d.ts +15 -0
  155. package/dist/cli/run-cli/commands/init/steps/recipe-selection.d.ts.map +1 -0
  156. package/dist/cli/run-cli/commands/init/steps/recipe-selection.js +35 -0
  157. package/dist/cli/run-cli/commands/init/steps/setup-profile.d.ts +8 -0
  158. package/dist/cli/run-cli/commands/init/steps/setup-profile.d.ts.map +1 -0
  159. package/dist/cli/run-cli/commands/init/steps/setup-profile.js +32 -0
  160. package/dist/cli/run-cli/commands/init/steps/workflow.d.ts +9 -0
  161. package/dist/cli/run-cli/commands/init/steps/workflow.d.ts.map +1 -0
  162. package/dist/cli/run-cli/commands/init/steps/workflow.js +48 -0
  163. package/dist/cli/run-cli/commands/init/ui-v2.d.ts +17 -0
  164. package/dist/cli/run-cli/commands/init/ui-v2.d.ts.map +1 -0
  165. package/dist/cli/run-cli/commands/init/ui-v2.js +39 -0
  166. package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -1
  167. package/dist/cli/run-cli/commands/init/write-agents.js +1 -1
  168. package/dist/cli/run-cli/commands/init/write-config.d.ts +2 -1
  169. package/dist/cli/run-cli/commands/init/write-config.d.ts.map +1 -1
  170. package/dist/cli/run-cli/commands/init/write-config.js +1 -1
  171. package/dist/cli/run-cli/registry.run.d.ts +1 -1
  172. package/dist/cli/run-cli/registry.run.d.ts.map +1 -1
  173. package/dist/cli/run-cli.d.ts.map +1 -1
  174. package/dist/cli/run-cli.js +2 -1
  175. package/dist/cli/spec/errors.d.ts +5 -0
  176. package/dist/cli/spec/errors.d.ts.map +1 -1
  177. package/dist/cli/spec/errors.js +14 -1
  178. package/dist/cli/spec/parse.d.ts.map +1 -1
  179. package/dist/cli/spec/parse.js +8 -1
  180. package/dist/cli.js +677 -4
  181. package/dist/commands/branch/base.js +3 -1
  182. package/dist/commands/branch/cleanup-merged.d.ts.map +1 -1
  183. package/dist/commands/branch/cleanup-merged.js +4 -5
  184. package/dist/commands/branch/remove.d.ts.map +1 -1
  185. package/dist/commands/branch/remove.js +4 -2
  186. package/dist/commands/branch/status.d.ts.map +1 -1
  187. package/dist/commands/branch/status.js +3 -3
  188. package/dist/commands/branch/work-start.d.ts.map +1 -1
  189. package/dist/commands/branch/work-start.direct.d.ts +13 -0
  190. package/dist/commands/branch/work-start.direct.d.ts.map +1 -0
  191. package/dist/commands/branch/work-start.direct.js +76 -0
  192. package/dist/commands/branch/work-start.git.d.ts +3 -0
  193. package/dist/commands/branch/work-start.git.d.ts.map +1 -0
  194. package/dist/commands/branch/work-start.git.js +19 -0
  195. package/dist/commands/branch/work-start.hook-shim.d.ts +2 -0
  196. package/dist/commands/branch/work-start.hook-shim.d.ts.map +1 -0
  197. package/dist/commands/branch/work-start.hook-shim.js +38 -0
  198. package/dist/commands/branch/work-start.js +8 -236
  199. package/dist/commands/branch/work-start.materialize.d.ts +16 -0
  200. package/dist/commands/branch/work-start.materialize.d.ts.map +1 -0
  201. package/dist/commands/branch/work-start.materialize.js +112 -0
  202. package/dist/commands/codex/plugin-install.d.ts.map +1 -1
  203. package/dist/commands/codex/plugin-install.js +2 -1
  204. package/dist/commands/commit.command.js +1 -1
  205. package/dist/commands/doctor/archive.d.ts.map +1 -1
  206. package/dist/commands/doctor/archive.js +4 -3
  207. package/dist/commands/doctor/fixes.d.ts +0 -5
  208. package/dist/commands/doctor/fixes.d.ts.map +1 -1
  209. package/dist/commands/doctor/fixes.js +0 -70
  210. package/dist/commands/doctor/runtime.d.ts +1 -1
  211. package/dist/commands/doctor/runtime.d.ts.map +1 -1
  212. package/dist/commands/doctor/workflow.d.ts.map +1 -1
  213. package/dist/commands/doctor/workflow.js +3 -24
  214. package/dist/commands/doctor/workspace.d.ts.map +1 -1
  215. package/dist/commands/doctor/workspace.js +7 -9
  216. package/dist/commands/doctor.run.d.ts.map +1 -1
  217. package/dist/commands/doctor.run.js +3 -4
  218. package/dist/commands/finish.run.js +1 -1
  219. package/dist/commands/guard/commit.command.d.ts +3 -16
  220. package/dist/commands/guard/commit.command.d.ts.map +1 -1
  221. package/dist/commands/guard/commit.command.js +1 -132
  222. package/dist/commands/guard/commit.spec.d.ts +17 -0
  223. package/dist/commands/guard/commit.spec.d.ts.map +1 -0
  224. package/dist/commands/guard/commit.spec.js +132 -0
  225. package/dist/commands/guard/impl/allow.js +2 -2
  226. package/dist/commands/guard/impl/close-dirt.d.ts.map +1 -1
  227. package/dist/commands/guard/impl/close-dirt.js +2 -3
  228. package/dist/commands/guard/impl/close-message.d.ts.map +1 -1
  229. package/dist/commands/guard/impl/close-message.js +5 -3
  230. package/dist/commands/guard/impl/comment-commit.d.ts +1 -1
  231. package/dist/commands/guard/impl/comment-commit.d.ts.map +1 -1
  232. package/dist/commands/guard/impl/comment-commit.js +1 -1
  233. package/dist/commands/guard/impl/commit.d.ts.map +1 -1
  234. package/dist/commands/guard/impl/commit.js +3 -2
  235. package/dist/commands/guard/impl/env.js +1 -1
  236. package/dist/commands/guard/impl/policy.js +1 -1
  237. package/dist/commands/guard/index.d.ts +3 -2
  238. package/dist/commands/guard/index.d.ts.map +1 -1
  239. package/dist/commands/guard/index.js +3 -2
  240. package/dist/commands/hooks/index.d.ts +4 -20
  241. package/dist/commands/hooks/index.d.ts.map +1 -1
  242. package/dist/commands/hooks/index.js +4 -432
  243. package/dist/commands/hooks/install.d.ts +11 -0
  244. package/dist/commands/hooks/install.d.ts.map +1 -0
  245. package/dist/commands/hooks/install.js +136 -0
  246. package/dist/commands/hooks/run.commit-msg.d.ts +3 -0
  247. package/dist/commands/hooks/run.commit-msg.d.ts.map +1 -0
  248. package/dist/commands/hooks/run.commit-msg.js +68 -0
  249. package/dist/commands/hooks/run.d.ts +9 -0
  250. package/dist/commands/hooks/run.d.ts.map +1 -0
  251. package/dist/commands/hooks/run.js +45 -0
  252. package/dist/commands/hooks/run.post-merge.d.ts +3 -0
  253. package/dist/commands/hooks/run.post-merge.d.ts.map +1 -0
  254. package/dist/commands/hooks/run.post-merge.js +44 -0
  255. package/dist/commands/hooks/run.pre-commit.d.ts +3 -0
  256. package/dist/commands/hooks/run.pre-commit.d.ts.map +1 -0
  257. package/dist/commands/hooks/run.pre-commit.js +49 -0
  258. package/dist/commands/hooks/run.pre-push.d.ts +6 -0
  259. package/dist/commands/hooks/run.pre-push.d.ts.map +1 -0
  260. package/dist/commands/hooks/run.pre-push.js +89 -0
  261. package/dist/commands/hooks/shared.d.ts +7 -0
  262. package/dist/commands/hooks/shared.d.ts.map +1 -0
  263. package/dist/commands/hooks/shared.js +41 -0
  264. package/dist/commands/incidents/shared.d.ts +1 -2
  265. package/dist/commands/incidents/shared.d.ts.map +1 -1
  266. package/dist/commands/incidents/shared.js +2 -2
  267. package/dist/commands/integrate.command.d.ts +2 -11
  268. package/dist/commands/integrate.command.d.ts.map +1 -1
  269. package/dist/commands/integrate.command.js +1 -45
  270. package/dist/commands/integrate.spec.d.ts +12 -0
  271. package/dist/commands/integrate.spec.d.ts.map +1 -0
  272. package/dist/commands/integrate.spec.js +44 -0
  273. package/dist/commands/pr/check.js +1 -1
  274. package/dist/commands/pr/integrate/artifacts.js +1 -1
  275. package/dist/commands/pr/integrate/cmd.d.ts.map +1 -1
  276. package/dist/commands/pr/integrate/cmd.js +2 -1
  277. package/dist/commands/pr/integrate/internal/cleanup.d.ts +1 -1
  278. package/dist/commands/pr/integrate/internal/cleanup.d.ts.map +1 -1
  279. package/dist/commands/pr/integrate/internal/cleanup.js +1 -1
  280. package/dist/commands/pr/integrate/internal/finalize.d.ts.map +1 -1
  281. package/dist/commands/pr/integrate/internal/finalize.js +3 -2
  282. package/dist/commands/pr/integrate/internal/merge.js +3 -2
  283. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.d.ts +2 -1
  284. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.d.ts.map +1 -1
  285. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.js +1 -1
  286. package/dist/commands/pr/integrate/internal/pre-integrate-bootstrap.d.ts +2 -1
  287. package/dist/commands/pr/integrate/internal/pre-integrate-bootstrap.d.ts.map +1 -1
  288. package/dist/commands/pr/integrate/internal/pre-integrate-bootstrap.js +1 -1
  289. package/dist/commands/pr/integrate/internal/prepare.d.ts +2 -1
  290. package/dist/commands/pr/integrate/internal/prepare.d.ts.map +1 -1
  291. package/dist/commands/pr/integrate/internal/prepare.js +1 -3
  292. package/dist/commands/pr/integrate/internal/worktree.d.ts +2 -1
  293. package/dist/commands/pr/integrate/internal/worktree.d.ts.map +1 -1
  294. package/dist/commands/pr/integrate/internal/worktree.js +2 -2
  295. package/dist/commands/pr/internal/auto-commit.js +3 -3
  296. package/dist/commands/pr/internal/gh-api.js +2 -2
  297. package/dist/commands/pr/internal/pr-paths.d.ts +1 -1
  298. package/dist/commands/pr/internal/pr-paths.d.ts.map +1 -1
  299. package/dist/commands/pr/internal/pr-paths.js +3 -2
  300. package/dist/commands/pr/internal/review-template.js +1 -1
  301. package/dist/commands/pr/internal/sync-branch.d.ts.map +1 -1
  302. package/dist/commands/pr/internal/sync-branch.js +3 -4
  303. package/dist/commands/pr/internal/sync-github.js +1 -1
  304. package/dist/commands/pr/internal/sync-support.js +1 -1
  305. package/dist/commands/pr/internal/sync.d.ts.map +1 -1
  306. package/dist/commands/pr/internal/sync.js +2 -2
  307. package/dist/commands/pr/note.d.ts.map +1 -1
  308. package/dist/commands/pr/note.js +1 -1
  309. package/dist/commands/pr/open.d.ts.map +1 -1
  310. package/dist/commands/pr/open.js +2 -1
  311. package/dist/commands/pr/pr.command.d.ts +3 -37
  312. package/dist/commands/pr/pr.command.d.ts.map +1 -1
  313. package/dist/commands/pr/pr.command.js +9 -211
  314. package/dist/commands/pr/pr.spec.d.ts +38 -0
  315. package/dist/commands/pr/pr.spec.d.ts.map +1 -0
  316. package/dist/commands/pr/pr.spec.js +210 -0
  317. package/dist/commands/recipes/active.command.js +1 -1
  318. package/dist/commands/recipes/add.command.js +1 -1
  319. package/dist/commands/recipes/cache-prune.command.d.ts +1 -1
  320. package/dist/commands/recipes/cache-prune.command.d.ts.map +1 -1
  321. package/dist/commands/recipes/cache-prune.command.js +1 -1
  322. package/dist/commands/recipes/detach.command.js +1 -1
  323. package/dist/commands/recipes/disable.command.js +1 -1
  324. package/dist/commands/recipes/enable.command.js +1 -1
  325. package/dist/commands/recipes/explain-active.command.js +1 -1
  326. package/dist/commands/recipes/explain.command.js +1 -1
  327. package/dist/commands/recipes/impl/commands/active.js +1 -1
  328. package/dist/commands/recipes/impl/commands/add.d.ts.map +1 -1
  329. package/dist/commands/recipes/impl/commands/add.js +2 -1
  330. package/dist/commands/recipes/impl/commands/cache-prune.js +1 -1
  331. package/dist/commands/recipes/impl/commands/detach.d.ts.map +1 -1
  332. package/dist/commands/recipes/impl/commands/detach.js +2 -1
  333. package/dist/commands/recipes/impl/commands/disable.js +1 -1
  334. package/dist/commands/recipes/impl/commands/enable.js +1 -1
  335. package/dist/commands/recipes/impl/commands/explain-active.js +1 -1
  336. package/dist/commands/recipes/impl/commands/explain.js +1 -1
  337. package/dist/commands/recipes/impl/commands/install.d.ts.map +1 -1
  338. package/dist/commands/recipes/impl/commands/install.js +2 -1
  339. package/dist/commands/recipes/impl/commands/list-remote.js +1 -1
  340. package/dist/commands/recipes/impl/commands/remove.d.ts.map +1 -1
  341. package/dist/commands/recipes/impl/commands/remove.js +2 -1
  342. package/dist/commands/recipes/impl/commands/update.d.ts.map +1 -1
  343. package/dist/commands/recipes/impl/commands/update.js +2 -1
  344. package/dist/commands/recipes/impl/index.d.ts.map +1 -1
  345. package/dist/commands/recipes/impl/index.js +13 -3
  346. package/dist/commands/recipes/impl/overlay-project.d.ts.map +1 -1
  347. package/dist/commands/recipes/impl/overlay-project.js +2 -1
  348. package/dist/commands/recipes/impl/project.js +1 -1
  349. package/dist/commands/recipes/impl/resolver.d.ts +1 -1
  350. package/dist/commands/recipes/impl/resolver.d.ts.map +1 -1
  351. package/dist/commands/recipes/info.command.js +1 -1
  352. package/dist/commands/recipes/install.run.js +1 -1
  353. package/dist/commands/recipes/install.spec.d.ts +1 -1
  354. package/dist/commands/recipes/install.spec.d.ts.map +1 -1
  355. package/dist/commands/recipes/list-remote.command.d.ts +1 -1
  356. package/dist/commands/recipes/list-remote.command.d.ts.map +1 -1
  357. package/dist/commands/recipes/list-remote.command.js +1 -1
  358. package/dist/commands/recipes/list.command.d.ts +1 -1
  359. package/dist/commands/recipes/list.command.d.ts.map +1 -1
  360. package/dist/commands/recipes/list.command.js +1 -1
  361. package/dist/commands/recipes/remove.command.js +1 -1
  362. package/dist/commands/recipes/update.command.js +1 -1
  363. package/dist/commands/release/apply.command.d.ts +2 -3
  364. package/dist/commands/release/apply.command.d.ts.map +1 -1
  365. package/dist/commands/release/apply.command.js +4 -137
  366. package/dist/commands/release/apply.mutation.js +4 -3
  367. package/dist/commands/release/apply.pipeline/finalize.d.ts.map +1 -1
  368. package/dist/commands/release/apply.pipeline/finalize.js +2 -1
  369. package/dist/commands/release/apply.pipeline/mutation.d.ts +1 -1
  370. package/dist/commands/release/apply.pipeline/mutation.d.ts.map +1 -1
  371. package/dist/commands/release/apply.pipeline/mutation.js +3 -4
  372. package/dist/commands/release/apply.pipeline/preflight.js +1 -1
  373. package/dist/commands/release/apply.pipeline/state.d.ts.map +1 -1
  374. package/dist/commands/release/apply.pipeline/state.js +2 -1
  375. package/dist/commands/release/apply.pipeline.d.ts +5 -1
  376. package/dist/commands/release/apply.pipeline.d.ts.map +1 -1
  377. package/dist/commands/release/apply.pipeline.js +4 -0
  378. package/dist/commands/release/apply.preflight.d.ts.map +1 -1
  379. package/dist/commands/release/apply.preflight.js +2 -1
  380. package/dist/commands/release/apply.reporting.d.ts.map +1 -1
  381. package/dist/commands/release/apply.reporting.js +2 -1
  382. package/dist/commands/release/apply.spec.d.ts +5 -0
  383. package/dist/commands/release/apply.spec.d.ts.map +1 -0
  384. package/dist/commands/release/apply.spec.js +136 -0
  385. package/dist/commands/release/apply.types.d.ts +1 -1
  386. package/dist/commands/release/apply.types.d.ts.map +1 -1
  387. package/dist/commands/release/plan.command.d.ts +3 -10
  388. package/dist/commands/release/plan.command.d.ts.map +1 -1
  389. package/dist/commands/release/plan.command.js +4 -78
  390. package/dist/commands/release/plan.spec.d.ts +10 -0
  391. package/dist/commands/release/plan.spec.d.ts.map +1 -0
  392. package/dist/commands/release/plan.spec.js +76 -0
  393. package/dist/commands/runtime.command.d.ts +3 -6
  394. package/dist/commands/runtime.command.d.ts.map +1 -1
  395. package/dist/commands/runtime.command.js +5 -32
  396. package/dist/commands/runtime.spec.d.ts +8 -0
  397. package/dist/commands/runtime.spec.d.ts.map +1 -0
  398. package/dist/commands/runtime.spec.js +31 -0
  399. package/dist/commands/scenario/impl/commands.d.ts +1 -1
  400. package/dist/commands/scenario/impl/commands.d.ts.map +1 -1
  401. package/dist/commands/scenario/impl/commands.js +2 -1
  402. package/dist/commands/shared/approval-requirements.d.ts +1 -1
  403. package/dist/commands/shared/approval-requirements.d.ts.map +1 -1
  404. package/dist/commands/shared/comment-format.d.ts +1 -1
  405. package/dist/commands/shared/comment-format.d.ts.map +1 -1
  406. package/dist/commands/shared/git-ops.d.ts +1 -1
  407. package/dist/commands/shared/git-ops.d.ts.map +1 -1
  408. package/dist/commands/shared/git-ops.js +3 -2
  409. package/dist/commands/shared/merged-branch-cleanup.js +2 -2
  410. package/dist/commands/shared/network-approval.d.ts +1 -1
  411. package/dist/commands/shared/network-approval.d.ts.map +1 -1
  412. package/dist/commands/shared/post-commit-pr-artifacts.d.ts.map +1 -1
  413. package/dist/commands/shared/post-commit-pr-artifacts.js +2 -1
  414. package/dist/commands/shared/pr-meta.d.ts +1 -1
  415. package/dist/commands/shared/pr-meta.d.ts.map +1 -1
  416. package/dist/commands/shared/pr-meta.js +2 -2
  417. package/dist/commands/shared/task-backend.d.ts +3 -2
  418. package/dist/commands/shared/task-backend.d.ts.map +1 -1
  419. package/dist/commands/shared/task-backend.js +3 -4
  420. package/dist/commands/shared/task-handoff.d.ts +1 -1
  421. package/dist/commands/shared/task-handoff.d.ts.map +1 -1
  422. package/dist/commands/shared/task-handoff.js +3 -2
  423. package/dist/commands/shared/task-local-freshness.js +1 -1
  424. package/dist/commands/shared/task-store/intents.js +1 -1
  425. package/dist/commands/shared/task-store/readme.d.ts.map +1 -1
  426. package/dist/commands/shared/task-store/readme.js +1 -1
  427. package/dist/commands/shared/task-store/types.d.ts +1 -1
  428. package/dist/commands/shared/task-store/types.d.ts.map +1 -1
  429. package/dist/commands/task/add.command.d.ts +2 -1
  430. package/dist/commands/task/add.command.d.ts.map +1 -1
  431. package/dist/commands/task/add.command.js +2 -1
  432. package/dist/commands/task/close-duplicate.d.ts.map +1 -1
  433. package/dist/commands/task/close-duplicate.js +2 -2
  434. package/dist/commands/task/close-shared.d.ts.map +1 -1
  435. package/dist/commands/task/close-shared.js +2 -1
  436. package/dist/commands/task/close-tail-state.d.ts.map +1 -1
  437. package/dist/commands/task/close-tail-state.js +3 -2
  438. package/dist/commands/task/derive.js +1 -1
  439. package/dist/commands/task/doc-template.js +1 -1
  440. package/dist/commands/task/doc.d.ts.map +1 -1
  441. package/dist/commands/task/doc.js +4 -2
  442. package/dist/commands/task/findings.d.ts +1 -1
  443. package/dist/commands/task/findings.d.ts.map +1 -1
  444. package/dist/commands/task/findings.js +1 -1
  445. package/dist/commands/task/finish-close.js +2 -2
  446. package/dist/commands/task/finish-shared.d.ts.map +1 -1
  447. package/dist/commands/task/finish-shared.js +6 -8
  448. package/dist/commands/task/handoff.shared.d.ts.map +1 -1
  449. package/dist/commands/task/handoff.shared.js +4 -5
  450. package/dist/commands/task/hosted-close-pr.command.d.ts +6 -7
  451. package/dist/commands/task/hosted-close-pr.command.d.ts.map +1 -1
  452. package/dist/commands/task/hosted-close-pr.command.js +13 -373
  453. package/dist/commands/task/hosted-close-pr.execute.d.ts +3 -0
  454. package/dist/commands/task/hosted-close-pr.execute.d.ts.map +1 -0
  455. package/dist/commands/task/hosted-close-pr.execute.js +135 -0
  456. package/dist/commands/task/hosted-close-pr.postcheck.d.ts +3 -0
  457. package/dist/commands/task/hosted-close-pr.postcheck.d.ts.map +1 -0
  458. package/dist/commands/task/hosted-close-pr.postcheck.js +13 -0
  459. package/dist/commands/task/hosted-close-pr.precheck.d.ts +4 -0
  460. package/dist/commands/task/hosted-close-pr.precheck.d.ts.map +1 -0
  461. package/dist/commands/task/hosted-close-pr.precheck.js +288 -0
  462. package/dist/commands/task/hosted-close-pr.report.d.ts +4 -0
  463. package/dist/commands/task/hosted-close-pr.report.d.ts.map +1 -0
  464. package/dist/commands/task/hosted-close-pr.report.js +42 -0
  465. package/dist/commands/task/hosted-close-pr.types.d.ts +75 -0
  466. package/dist/commands/task/hosted-close-pr.types.d.ts.map +1 -0
  467. package/dist/commands/task/hosted-close-pr.types.js +1 -0
  468. package/dist/commands/task/hosted-close.command.d.ts +3 -6
  469. package/dist/commands/task/hosted-close.command.d.ts.map +1 -1
  470. package/dist/commands/task/hosted-close.command.js +4 -41
  471. package/dist/commands/task/hosted-close.spec.d.ts +7 -0
  472. package/dist/commands/task/hosted-close.spec.d.ts.map +1 -0
  473. package/dist/commands/task/hosted-close.spec.js +39 -0
  474. package/dist/commands/task/hosted-merge-sync/builders.d.ts +1 -1
  475. package/dist/commands/task/hosted-merge-sync/builders.d.ts.map +1 -1
  476. package/dist/commands/task/hosted-merge-sync/builders.js +6 -6
  477. package/dist/commands/task/hosted-merge-sync/github.js +2 -2
  478. package/dist/commands/task/hosted-merge-sync/local-branch.d.ts.map +1 -1
  479. package/dist/commands/task/hosted-merge-sync/local-branch.js +5 -5
  480. package/dist/commands/task/hosted-merge-sync/model.d.ts +1 -1
  481. package/dist/commands/task/hosted-merge-sync/model.d.ts.map +1 -1
  482. package/dist/commands/task/hosted-merge-sync/pr-meta.d.ts +1 -1
  483. package/dist/commands/task/hosted-merge-sync/pr-meta.d.ts.map +1 -1
  484. package/dist/commands/task/index.d.ts +1 -1
  485. package/dist/commands/task/index.d.ts.map +1 -1
  486. package/dist/commands/task/index.js +1 -1
  487. package/dist/commands/task/lint.js +1 -1
  488. package/dist/commands/task/list.d.ts.map +1 -1
  489. package/dist/commands/task/list.js +2 -1
  490. package/dist/commands/task/migrate-doc.d.ts +2 -1
  491. package/dist/commands/task/migrate-doc.d.ts.map +1 -1
  492. package/dist/commands/task/migrate-doc.js +6 -2
  493. package/dist/commands/task/new.d.ts.map +1 -1
  494. package/dist/commands/task/new.js +6 -21
  495. package/dist/commands/task/normalize.d.ts.map +1 -1
  496. package/dist/commands/task/normalize.js +2 -1
  497. package/dist/commands/task/plan.d.ts.map +1 -1
  498. package/dist/commands/task/plan.js +1 -1
  499. package/dist/commands/task/ready.d.ts.map +1 -1
  500. package/dist/commands/task/ready.js +2 -1
  501. package/dist/commands/task/scaffold.d.ts.map +1 -1
  502. package/dist/commands/task/scaffold.js +1 -1
  503. package/dist/commands/task/shared/dependencies.d.ts.map +1 -1
  504. package/dist/commands/task/shared/dependencies.js +4 -3
  505. package/dist/commands/task/shared/docs.d.ts +1 -1
  506. package/dist/commands/task/shared/docs.d.ts.map +1 -1
  507. package/dist/commands/task/shared/docs.js +1 -1
  508. package/dist/commands/task/shared/listing.d.ts.map +1 -1
  509. package/dist/commands/task/shared/listing.js +3 -2
  510. package/dist/commands/task/shared/tags.d.ts +1 -1
  511. package/dist/commands/task/shared/tags.d.ts.map +1 -1
  512. package/dist/commands/task/shared/tags.js +4 -4
  513. package/dist/commands/task/shared/transition-rules.d.ts +28 -0
  514. package/dist/commands/task/shared/transition-rules.d.ts.map +1 -0
  515. package/dist/commands/task/shared/transition-rules.js +96 -0
  516. package/dist/commands/task/shared/transitions.d.ts +2 -27
  517. package/dist/commands/task/shared/transitions.d.ts.map +1 -1
  518. package/dist/commands/task/shared/transitions.js +5 -98
  519. package/dist/commands/task/shared/workflow-transition-service.d.ts +1 -1
  520. package/dist/commands/task/shared/workflow-transition-service.d.ts.map +1 -1
  521. package/dist/commands/task/shared/workflow-transition-service.js +6 -6
  522. package/dist/commands/task/shared.d.ts +2 -1
  523. package/dist/commands/task/shared.d.ts.map +1 -1
  524. package/dist/commands/task/shared.js +2 -1
  525. package/dist/commands/task/show.d.ts.map +1 -1
  526. package/dist/commands/task/show.js +1 -1
  527. package/dist/commands/upgrade/apply.js +3 -2
  528. package/dist/commands/upgrade/materialize.d.ts.map +1 -1
  529. package/dist/commands/upgrade/materialize.js +1 -8
  530. package/dist/commands/upgrade/source.d.ts +0 -1
  531. package/dist/commands/upgrade/source.d.ts.map +1 -1
  532. package/dist/commands/upgrade/source.js +1 -9
  533. package/dist/commands/upgrade.command.d.ts +3 -4
  534. package/dist/commands/upgrade.command.d.ts.map +1 -1
  535. package/dist/commands/upgrade.command.js +1 -179
  536. package/dist/commands/upgrade.d.ts.map +1 -1
  537. package/dist/commands/upgrade.js +4 -2
  538. package/dist/commands/upgrade.spec.d.ts +5 -0
  539. package/dist/commands/upgrade.spec.d.ts.map +1 -0
  540. package/dist/commands/upgrade.spec.js +179 -0
  541. package/dist/commands/workflow-build.command.d.ts.map +1 -1
  542. package/dist/commands/workflow-build.command.js +2 -1
  543. package/dist/commands/workflow-playbook.command.d.ts +3 -6
  544. package/dist/commands/workflow-playbook.command.d.ts.map +1 -1
  545. package/dist/commands/workflow-playbook.command.js +6 -24
  546. package/dist/commands/workflow-playbook.spec.d.ts +6 -0
  547. package/dist/commands/workflow-playbook.spec.d.ts.map +1 -0
  548. package/dist/commands/workflow-playbook.spec.js +21 -0
  549. package/dist/commands/workflow-restore.command.js +1 -1
  550. package/dist/commands/workflow.d.ts +4 -5
  551. package/dist/commands/workflow.d.ts.map +1 -1
  552. package/dist/commands/workflow.js +4 -5
  553. package/dist/harness/hooks-lifecycle.js +1 -1
  554. package/dist/meta/release.d.ts.map +1 -1
  555. package/dist/meta/release.js +3 -5
  556. package/dist/meta/version.d.ts.map +1 -1
  557. package/dist/meta/version.js +2 -2
  558. package/dist/policy/engine.d.ts +1 -1
  559. package/dist/policy/engine.d.ts.map +1 -1
  560. package/dist/policy/model.d.ts +1 -1
  561. package/dist/policy/model.d.ts.map +1 -1
  562. package/dist/policy/rules/commit-subject.js +1 -1
  563. package/dist/runner/adapters/base.d.ts +1 -1
  564. package/dist/runner/adapters/base.d.ts.map +1 -1
  565. package/dist/runner/adapters/codex.d.ts.map +1 -1
  566. package/dist/runner/adapters/codex.js +35 -113
  567. package/dist/runner/adapters/custom-preparation.d.ts +1 -1
  568. package/dist/runner/adapters/custom-preparation.d.ts.map +1 -1
  569. package/dist/runner/adapters/custom.d.ts +1 -1
  570. package/dist/runner/adapters/custom.d.ts.map +1 -1
  571. package/dist/runner/adapters/custom.js +34 -115
  572. package/dist/runner/adapters/execute-supervised.d.ts +41 -0
  573. package/dist/runner/adapters/execute-supervised.d.ts.map +1 -0
  574. package/dist/runner/adapters/execute-supervised.js +108 -0
  575. package/dist/runner/adapters/index.d.ts +1 -1
  576. package/dist/runner/adapters/index.d.ts.map +1 -1
  577. package/dist/runner/adapters/shared.d.ts +1 -1
  578. package/dist/runner/adapters/shared.d.ts.map +1 -1
  579. package/dist/runner/artifacts.d.ts.map +1 -1
  580. package/dist/runner/artifacts.js +1 -1
  581. package/dist/runner/config.d.ts +1 -1
  582. package/dist/runner/config.d.ts.map +1 -1
  583. package/dist/runner/context/base-prompt-sources.d.ts.map +1 -1
  584. package/dist/runner/context/base-prompt-sources.js +26 -4
  585. package/dist/runner/context/base-prompts.d.ts.map +1 -1
  586. package/dist/runner/context/base-prompts.js +4 -0
  587. package/dist/runner/context/project-skill-prompt-blocks.d.ts +5 -0
  588. package/dist/runner/context/project-skill-prompt-blocks.d.ts.map +1 -0
  589. package/dist/runner/context/project-skill-prompt-blocks.js +57 -0
  590. package/dist/runner/context/prompt-block-shared.d.ts +1 -1
  591. package/dist/runner/context/prompt-block-shared.d.ts.map +1 -1
  592. package/dist/runner/context/prompt-block-shared.js +8 -2
  593. package/dist/runner/context/recipe-context.d.ts +1 -1
  594. package/dist/runner/context/recipe-context.d.ts.map +1 -1
  595. package/dist/runner/context/task-context.d.ts.map +1 -1
  596. package/dist/runner/context/task-context.js +1 -1
  597. package/dist/runner/process-supervision/buffered-file-writer.d.ts +10 -0
  598. package/dist/runner/process-supervision/buffered-file-writer.d.ts.map +1 -0
  599. package/dist/runner/process-supervision/buffered-file-writer.js +70 -0
  600. package/dist/runner/process-supervision/run.d.ts.map +1 -1
  601. package/dist/runner/process-supervision/run.js +83 -68
  602. package/dist/runner/process-supervision/signals.js +1 -1
  603. package/dist/runner/result-manifest.d.ts.map +1 -1
  604. package/dist/runner/result-manifest.js +1 -1
  605. package/dist/runner/task-state.js +1 -1
  606. package/dist/runner/trace-artifacts.d.ts.map +1 -1
  607. package/dist/runner/trace-artifacts.js +1 -1
  608. package/dist/runner/types.d.ts +2 -2
  609. package/dist/runner/types.d.ts.map +1 -1
  610. package/dist/runner/usecases/scenario-materialize-task.d.ts.map +1 -1
  611. package/dist/runner/usecases/scenario-materialize-task.js +1 -1
  612. package/dist/runner/usecases/task-run-lifecycle-cancel.d.ts.map +1 -1
  613. package/dist/runner/usecases/task-run-lifecycle-cancel.js +2 -1
  614. package/dist/runner/usecases/task-run-lifecycle-shared.d.ts.map +1 -1
  615. package/dist/runner/usecases/task-run-lifecycle-shared.js +3 -7
  616. package/dist/runner/usecases/task-run.d.ts.map +1 -1
  617. package/dist/runner/usecases/task-run.js +2 -3
  618. package/dist/runtime/approvals/model.d.ts +1 -1
  619. package/dist/runtime/approvals/model.d.ts.map +1 -1
  620. package/dist/runtime/approvals/runtime.d.ts +1 -1
  621. package/dist/runtime/approvals/runtime.d.ts.map +1 -1
  622. package/dist/runtime/execution-context.d.ts +2 -1
  623. package/dist/runtime/execution-context.d.ts.map +1 -1
  624. package/dist/runtime/execution-profile/model.d.ts +1 -1
  625. package/dist/runtime/execution-profile/model.d.ts.map +1 -1
  626. package/dist/runtime/execution-profile/resolve.d.ts +1 -1
  627. package/dist/runtime/execution-profile/resolve.d.ts.map +1 -1
  628. package/dist/runtime/execution-profile/resolve.js +1 -1
  629. package/dist/runtime/harness/resolve.d.ts +2 -1
  630. package/dist/runtime/harness/resolve.d.ts.map +1 -1
  631. package/dist/runtime/harness/resolve.js +1 -1
  632. package/dist/runtime/harness/types.d.ts +2 -1
  633. package/dist/runtime/harness/types.d.ts.map +1 -1
  634. package/dist/runtime/incidents/paths.d.ts +3 -0
  635. package/dist/runtime/incidents/paths.d.ts.map +1 -0
  636. package/dist/runtime/incidents/paths.js +2 -0
  637. package/dist/runtime/shared/repo-cli-version.d.ts +1 -1
  638. package/dist/runtime/shared/repo-cli-version.d.ts.map +1 -1
  639. package/dist/runtime/task-intake/types.d.ts +2 -1
  640. package/dist/runtime/task-intake/types.d.ts.map +1 -1
  641. package/dist/shared/errors.d.ts +4 -1
  642. package/dist/shared/errors.d.ts.map +1 -1
  643. package/dist/shared/errors.js +6 -0
  644. package/dist/shared/package-paths.d.ts +8 -0
  645. package/dist/shared/package-paths.d.ts.map +1 -0
  646. package/dist/shared/package-paths.js +80 -0
  647. package/dist/shared/trace-events.d.ts +1 -1
  648. package/dist/shared/trace-events.d.ts.map +1 -1
  649. package/dist/shared/trace-events.js +1 -1
  650. package/dist/shared/workflow-artifacts.d.ts.map +1 -1
  651. package/dist/shared/workflow-artifacts.js +1 -8
  652. package/dist/shared/write-if-changed.js +2 -1
  653. package/dist/task-doc/conflicts.js +1 -1
  654. package/dist/task-doc/state.d.ts +2 -2
  655. package/dist/task-doc/state.d.ts.map +1 -1
  656. package/dist/task-doc/state.js +1 -1
  657. package/dist/workflow-runtime/file-ops.d.ts.map +1 -1
  658. package/dist/workflow-runtime/file-ops.js +2 -21
  659. package/dist/workflow-runtime/markdown.js +1 -1
  660. package/dist/workflow-runtime/paths.d.ts.map +1 -1
  661. package/dist/workflow-runtime/paths.js +0 -1
  662. package/dist/workflow-runtime/types.d.ts +0 -1
  663. package/dist/workflow-runtime/types.d.ts.map +1 -1
  664. package/dist/workflow-runtime/validate.d.ts +1 -1
  665. package/dist/workflow-runtime/validate.d.ts.map +1 -1
  666. package/package.json +6 -4
  667. package/dist/cli/cli-error.d.ts +0 -9
  668. package/dist/cli/cli-error.d.ts.map +0 -1
  669. package/dist/cli/cli-error.js +0 -13
  670. package/dist/cli/run-cli/command-catalog/shared.d.ts.map +0 -1
  671. package/dist/cli/run-cli/command-loaders.d.ts +0 -174
  672. package/dist/cli/run-cli/command-loaders.d.ts.map +0 -1
  673. package/dist/cli/run-cli/command-loaders.js +0 -128
  674. package/dist/cli/run-cli/commands/init/ui.d.ts +0 -3
  675. package/dist/cli/run-cli/commands/init/ui.d.ts.map +0 -1
  676. package/dist/cli/run-cli/commands/init/ui.js +0 -58
  677. package/dist/cli/run-cli/commands/init.d.ts +0 -2
  678. package/dist/cli/run-cli/commands/init.d.ts.map +0 -1
  679. package/dist/cli/run-cli/commands/init.js +0 -1
  680. package/dist/commands/guard/impl/commands.d.ts +0 -5
  681. package/dist/commands/guard/impl/commands.d.ts.map +0 -1
  682. package/dist/commands/guard/impl/commands.js +0 -4
  683. package/dist/commands/pr/index.d.ts +0 -8
  684. package/dist/commands/pr/index.d.ts.map +0 -1
  685. package/dist/commands/pr/index.js +0 -7
  686. package/dist/commands/pr/integrate.d.ts +0 -2
  687. package/dist/commands/pr/integrate.d.ts.map +0 -1
  688. package/dist/commands/pr/integrate.js +0 -1
  689. package/dist/commands/scenario/execute.command.d.ts +0 -8
  690. package/dist/commands/scenario/execute.command.d.ts.map +0 -1
  691. package/dist/commands/scenario/execute.command.js +0 -117
  692. package/dist/commands/scenario/impl/report.d.ts +0 -38
  693. package/dist/commands/scenario/impl/report.d.ts.map +0 -1
  694. package/dist/commands/scenario/impl/report.js +0 -97
  695. package/dist/commands/scenario/scenario.command.d.ts +0 -5
  696. package/dist/commands/scenario/scenario.command.d.ts.map +0 -1
  697. package/dist/commands/scenario/scenario.command.js +0 -19
  698. package/dist/commands/shared/git-context.d.ts +0 -2
  699. package/dist/commands/shared/git-context.d.ts.map +0 -1
  700. package/dist/commands/shared/git-context.js +0 -1
  701. package/dist/commands/shared/git-diff.d.ts +0 -2
  702. package/dist/commands/shared/git-diff.d.ts.map +0 -1
  703. package/dist/commands/shared/git-diff.js +0 -1
  704. package/dist/commands/shared/git-worktree.d.ts +0 -2
  705. package/dist/commands/shared/git-worktree.d.ts.map +0 -1
  706. package/dist/commands/shared/git-worktree.js +0 -1
  707. package/dist/commands/shared/git.d.ts +0 -2
  708. package/dist/commands/shared/git.d.ts.map +0 -1
  709. package/dist/commands/shared/git.js +0 -1
  710. package/dist/commands/task/finish.d.ts +0 -2
  711. package/dist/commands/task/finish.d.ts.map +0 -1
  712. package/dist/commands/task/finish.js +0 -1
  713. package/dist/harness/index.d.ts +0 -9
  714. package/dist/harness/index.d.ts.map +0 -1
  715. package/dist/harness/index.js +0 -8
  716. package/dist/runner/index.d.ts +0 -12
  717. package/dist/runner/index.d.ts.map +0 -1
  718. package/dist/runner/index.js +0 -11
  719. package/dist/runner/process-supervision.d.ts +0 -6
  720. package/dist/runner/process-supervision.d.ts.map +0 -1
  721. package/dist/runner/process-supervision.js +0 -3
  722. /package/dist/cli/run-cli/command-catalog/{shared.js → kernel.js} +0 -0
@@ -1,432 +1,4 @@
1
- import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { loadConfig, resolveBaseBranch, resolveProject, runProcessSync } from "@agentplaneorg/core";
5
- import { evaluatePolicy } from "../../policy/evaluate.js";
6
- import { mapBackendError, mapCoreError } from "../../cli/error-map.js";
7
- import { fileExists } from "../../cli/fs-utils.js";
8
- import { infoMessage, successMessage } from "../../cli/output.js";
9
- import { CliError } from "../../shared/errors.js";
10
- import { cmdCleanupMerged } from "../branch/index.js";
11
- import { GitContext } from "../shared/git-context.js";
12
- import { throwIfPolicyDenied } from "../shared/policy-deny.js";
13
- import { gitCurrentBranch, gitRevParse } from "../shared/git-ops.js";
14
- import { parseTaskIdFromBranch, parseTaskIdFromCloseBranch } from "../shared/git-worktree.js";
15
- import { isPathWithin } from "../shared/path.js";
16
- import { loadCommandContext } from "../shared/task-backend.js";
17
- const HOOK_MARKER = "agentplane-hook";
18
- const SHIM_MARKER = "agentplane-hook-shim";
19
- export const HOOK_NAMES = ["commit-msg", "pre-commit", "pre-push", "post-merge"];
20
- async function inferTaskIdFromBranchContext(opts) {
21
- try {
22
- const branch = await gitCurrentBranch(opts.gitRoot);
23
- return (parseTaskIdFromBranch(opts.taskPrefix, branch) ?? parseTaskIdFromCloseBranch(branch) ?? "");
24
- }
25
- catch {
26
- return "";
27
- }
28
- }
29
- async function resolveGitHooksDir(cwd) {
30
- const repoRoot = await gitRevParse(cwd, ["--show-toplevel"]);
31
- const commonDirRaw = await gitRevParse(cwd, ["--git-common-dir"]);
32
- const hooksRaw = await gitRevParse(cwd, ["--git-path", "hooks"]);
33
- const commonDir = path.resolve(path.isAbsolute(commonDirRaw) ? commonDirRaw : path.join(repoRoot, commonDirRaw));
34
- const hooksDir = path.resolve(path.isAbsolute(hooksRaw) ? hooksRaw : path.join(repoRoot, hooksRaw));
35
- const resolvedRoot = path.resolve(repoRoot);
36
- if (!isPathWithin(resolvedRoot, hooksDir) && !isPathWithin(commonDir, hooksDir)) {
37
- throw new CliError({
38
- exitCode: 5,
39
- code: "E_GIT",
40
- message: [
41
- "Refusing to manage git hooks outside the repository.",
42
- `hooks_path=${hooksDir}`,
43
- `repo_root=${resolvedRoot}`,
44
- `common_dir=${commonDir}`,
45
- "Fix:",
46
- " 1) Use a repo-relative core.hooksPath (e.g., .git/hooks)",
47
- " 2) Re-run `agentplane hooks install`",
48
- ].join("\n"),
49
- });
50
- }
51
- return hooksDir;
52
- }
53
- async function fileIsManaged(filePath, marker) {
54
- try {
55
- const content = await readFile(filePath, "utf8");
56
- return content.includes(marker);
57
- }
58
- catch {
59
- return false;
60
- }
61
- }
62
- function hookScriptText(hook) {
63
- return [
64
- "#!/usr/bin/env sh",
65
- `# ${HOOK_MARKER} (do not edit)`,
66
- "set -e",
67
- 'REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"',
68
- 'SHIM="$REPO_ROOT/.agentplane/bin/agentplane"',
69
- 'if [ -x "$SHIM" ]; then',
70
- ' exec "$SHIM" hooks run ' + hook + ' "$@"',
71
- "fi",
72
- "if ! command -v agentplane >/dev/null 2>&1; then",
73
- ' echo "agentplane hooks: runner not found (PATH missing and shim unavailable)." >&2',
74
- " exit 127",
75
- "fi",
76
- "exec agentplane hooks run " + hook + ' "$@"',
77
- "",
78
- ].join("\n");
79
- }
80
- function shimScriptText() {
81
- return [
82
- "#!/usr/bin/env sh",
83
- `# ${SHIM_MARKER} (do not edit)`,
84
- "set -e",
85
- 'SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"',
86
- 'REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"',
87
- 'LOCAL_BIN="$REPO_ROOT/packages/agentplane/bin/agentplane.js"',
88
- 'if command -v node >/dev/null 2>&1 && [ -f "$LOCAL_BIN" ]; then',
89
- ' exec node "$LOCAL_BIN" "$@"',
90
- "fi",
91
- 'ENV_BIN="${AGENTPLANE_HOOK_RUNNER:-}"',
92
- 'if [ -n "$ENV_BIN" ] && command -v node >/dev/null 2>&1 && [ -f "$ENV_BIN" ]; then',
93
- ' exec node "$ENV_BIN" "$@"',
94
- "fi",
95
- "if command -v agentplane >/dev/null 2>&1; then",
96
- ' exec agentplane "$@"',
97
- "fi",
98
- "if command -v npx >/dev/null 2>&1; then",
99
- ' exec npx --yes agentplane "$@"',
100
- "fi",
101
- 'echo "agentplane shim: runner not found (need env runner, repo-local source, agentplane in PATH, or node+npx)." >&2',
102
- " exit 127",
103
- "",
104
- ].join("\n");
105
- }
106
- async function ensureShim(agentplaneDir, gitRoot) {
107
- const shimDir = path.join(agentplaneDir, "bin");
108
- const shimPath = path.join(shimDir, "agentplane");
109
- await mkdir(shimDir, { recursive: true });
110
- if (await fileExists(shimPath)) {
111
- const managed = await fileIsManaged(shimPath, SHIM_MARKER);
112
- if (!managed) {
113
- throw new CliError({
114
- exitCode: 5,
115
- code: "E_GIT",
116
- message: `Refusing to overwrite existing shim: ${path.relative(gitRoot, shimPath)}`,
117
- });
118
- }
119
- }
120
- await writeFile(shimPath, shimScriptText(), "utf8");
121
- await chmod(shimPath, 0o755);
122
- }
123
- function readCommitSubject(message) {
124
- for (const line of message.split("\n")) {
125
- const trimmed = line.trim();
126
- if (!trimmed || trimmed.startsWith("#"))
127
- continue;
128
- return trimmed;
129
- }
130
- return "";
131
- }
132
- function resolveBundledPrePushHookScriptPath() {
133
- return fileURLToPath(new URL("../../../../../scripts/run-pre-push-hook.mjs", import.meta.url));
134
- }
135
- export async function resolvePrePushHookScriptPath(gitRoot, opts = {}) {
136
- const repoScriptPath = path.join(gitRoot, "scripts", "run-pre-push-hook.mjs");
137
- if (await fileExists(repoScriptPath))
138
- return repoScriptPath;
139
- const bundledScriptPath = opts.bundledScriptPath ?? resolveBundledPrePushHookScriptPath();
140
- if (await fileExists(bundledScriptPath))
141
- return bundledScriptPath;
142
- return null;
143
- }
144
- async function readHookStdinUtf8(timeoutMs = 25) {
145
- if (process.stdin.isTTY)
146
- return "";
147
- const chunks = [];
148
- const consume = () => {
149
- let chunk = process.stdin.read();
150
- while (chunk !== null) {
151
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
152
- chunk = process.stdin.read();
153
- }
154
- };
155
- consume();
156
- if (chunks.length > 0 || process.stdin.readableEnded) {
157
- return Buffer.concat(chunks).toString("utf8");
158
- }
159
- await new Promise((resolve) => {
160
- const finish = () => {
161
- clearTimeout(timer);
162
- process.stdin.off("readable", onReadable);
163
- process.stdin.off("end", onEnd);
164
- resolve();
165
- };
166
- const onReadable = () => {
167
- consume();
168
- finish();
169
- };
170
- const onEnd = () => {
171
- consume();
172
- finish();
173
- };
174
- const timer = setTimeout(finish, timeoutMs);
175
- process.stdin.on("readable", onReadable);
176
- process.stdin.on("end", onEnd);
177
- process.stdin.resume();
178
- });
179
- consume();
180
- return Buffer.concat(chunks).toString("utf8");
181
- }
182
- export async function cmdHooksInstall(opts) {
183
- try {
184
- const resolved = await resolveProject({
185
- cwd: opts.cwd,
186
- rootOverride: opts.rootOverride ?? null,
187
- });
188
- const hooksDir = await resolveGitHooksDir(resolved.gitRoot);
189
- await mkdir(hooksDir, { recursive: true });
190
- await mkdir(resolved.agentplaneDir, { recursive: true });
191
- await ensureShim(resolved.agentplaneDir, resolved.gitRoot);
192
- for (const hook of HOOK_NAMES) {
193
- const hookPath = path.join(hooksDir, hook);
194
- if (await fileExists(hookPath)) {
195
- const managed = await fileIsManaged(hookPath, HOOK_MARKER);
196
- if (!managed) {
197
- throw new CliError({
198
- exitCode: 5,
199
- code: "E_GIT",
200
- message: `Refusing to overwrite existing hook: ${path.relative(resolved.gitRoot, hookPath)}`,
201
- });
202
- }
203
- }
204
- await writeFile(hookPath, hookScriptText(hook), "utf8");
205
- await chmod(hookPath, 0o755);
206
- }
207
- if (!opts.quiet) {
208
- process.stdout.write(`${path.relative(resolved.gitRoot, hooksDir)}\n`);
209
- }
210
- return 0;
211
- }
212
- catch (err) {
213
- if (err instanceof CliError)
214
- throw err;
215
- throw mapCoreError(err, { command: "hooks install", root: opts.rootOverride ?? null });
216
- }
217
- }
218
- export async function cmdHooksUninstall(opts) {
219
- try {
220
- const resolved = await resolveProject({
221
- cwd: opts.cwd,
222
- rootOverride: opts.rootOverride ?? null,
223
- });
224
- const hooksDir = await resolveGitHooksDir(resolved.gitRoot);
225
- let removed = 0;
226
- for (const hook of HOOK_NAMES) {
227
- const hookPath = path.join(hooksDir, hook);
228
- if (!(await fileExists(hookPath)))
229
- continue;
230
- const managed = await fileIsManaged(hookPath, HOOK_MARKER);
231
- if (!managed)
232
- continue;
233
- await rm(hookPath, { force: true });
234
- removed++;
235
- }
236
- if (!opts.quiet) {
237
- process.stdout.write(removed > 0
238
- ? `${successMessage("removed hooks", undefined, `count=${removed}`)}\n`
239
- : `${infoMessage("no agentplane hooks found")}\n`);
240
- }
241
- return 0;
242
- }
243
- catch (err) {
244
- if (err instanceof CliError)
245
- throw err;
246
- throw mapCoreError(err, { command: "hooks uninstall", root: opts.rootOverride ?? null });
247
- }
248
- }
249
- export async function cmdHooksRun(opts) {
250
- try {
251
- if (opts.hook === "commit-msg") {
252
- const messagePath = opts.args[0];
253
- if (!messagePath) {
254
- throw new CliError({
255
- exitCode: 2,
256
- code: "E_USAGE",
257
- message: "Missing commit message file path",
258
- });
259
- }
260
- const raw = await readFile(messagePath, "utf8");
261
- const subject = readCommitSubject(raw);
262
- const resolved = await resolveProject({
263
- cwd: opts.cwd,
264
- rootOverride: opts.rootOverride ?? null,
265
- });
266
- const loaded = await loadConfig(resolved.agentplaneDir);
267
- const taskId = (process.env.AGENTPLANE_TASK_ID ?? "").trim() ||
268
- (await inferTaskIdFromBranchContext({
269
- gitRoot: resolved.gitRoot,
270
- taskPrefix: loaded.config.branch.task_prefix,
271
- }));
272
- const statusTo = (process.env.AGENTPLANE_STATUS_TO ?? "").trim().toUpperCase();
273
- const emoji = subject.split(/\s+/).find(Boolean) ?? "";
274
- if (taskId && statusTo === "DONE" && emoji !== "✅") {
275
- throw new CliError({
276
- exitCode: 5,
277
- code: "E_GIT",
278
- message: "Finish commits must use a checkmark emoji.\n" +
279
- "Expected:\n" +
280
- " ✅ <TASK_SUFFIX> <scope>: <summary>",
281
- });
282
- }
283
- const res = evaluatePolicy({
284
- action: "hook_commit_msg",
285
- config: loaded.config,
286
- taskId,
287
- git: { stagedPaths: [] },
288
- commit: { subject },
289
- });
290
- throwIfPolicyDenied(res);
291
- return 0;
292
- }
293
- if (opts.hook === "pre-commit") {
294
- const resolved = await resolveProject({
295
- cwd: opts.cwd,
296
- rootOverride: opts.rootOverride ?? null,
297
- });
298
- const staged = await new GitContext({ gitRoot: resolved.gitRoot }).statusStagedPaths();
299
- if (staged.length === 0)
300
- return 0;
301
- const allowTasks = (process.env.AGENTPLANE_ALLOW_TASKS ?? "").trim() === "1";
302
- const allowBase = (process.env.AGENTPLANE_ALLOW_BASE ?? "").trim() === "1";
303
- const allowPolicy = (process.env.AGENTPLANE_ALLOW_POLICY ?? "").trim() === "1";
304
- const allowConfig = (process.env.AGENTPLANE_ALLOW_CONFIG ?? "").trim() === "1";
305
- const allowHooks = (process.env.AGENTPLANE_ALLOW_HOOKS ?? "").trim() === "1";
306
- const allowCI = (process.env.AGENTPLANE_ALLOW_CI ?? "").trim() === "1";
307
- const loaded = await loadConfig(resolved.agentplaneDir);
308
- const inBranchPr = loaded.config.workflow_mode === "branch_pr";
309
- const baseBranch = inBranchPr
310
- ? await resolveBaseBranch({
311
- cwd: opts.cwd,
312
- rootOverride: opts.rootOverride ?? null,
313
- cliBaseOpt: null,
314
- mode: loaded.config.workflow_mode,
315
- })
316
- : null;
317
- const currentBranch = inBranchPr ? await gitCurrentBranch(resolved.gitRoot) : undefined;
318
- const res = evaluatePolicy({
319
- action: "hook_pre_commit",
320
- config: loaded.config,
321
- taskId: (process.env.AGENTPLANE_TASK_ID ?? "").trim(),
322
- git: {
323
- stagedPaths: staged,
324
- currentBranch,
325
- baseBranch,
326
- },
327
- allow: {
328
- allowTasks,
329
- allowBase,
330
- allowPolicy,
331
- allowConfig,
332
- allowHooks,
333
- allowCI,
334
- },
335
- });
336
- throwIfPolicyDenied(res);
337
- return 0;
338
- }
339
- if (opts.hook === "pre-push") {
340
- const resolved = await resolveProject({
341
- cwd: opts.cwd,
342
- rootOverride: opts.rootOverride ?? null,
343
- });
344
- const scriptPath = await resolvePrePushHookScriptPath(resolved.gitRoot);
345
- if (!scriptPath) {
346
- throw new CliError({
347
- exitCode: 2,
348
- code: "E_USAGE",
349
- message: [
350
- "Missing pre-push hook script: scripts/run-pre-push-hook.mjs",
351
- "The pre-push hook needs a repository-local script or an installed CLI bundle that ships the fallback.",
352
- "Fix:",
353
- " 1) Restore scripts/run-pre-push-hook.mjs in this repository, or",
354
- " 2) Run `agentplane hooks uninstall` if this repository should not use the agentplane pre-push gate.",
355
- ].join("\n"),
356
- });
357
- }
358
- const result = runProcessSync({
359
- command: "node",
360
- args: [scriptPath],
361
- cwd: resolved.gitRoot,
362
- env: process.env,
363
- encoding: "utf8",
364
- input: await readHookStdinUtf8(),
365
- stdin: "pipe",
366
- stdout: "inherit",
367
- stderr: "inherit",
368
- reject: false,
369
- });
370
- return result.exitCode ?? (result.signal ? 1 : 0);
371
- }
372
- if (opts.hook === "post-merge") {
373
- try {
374
- const ctx = await loadCommandContext({
375
- cwd: opts.cwd,
376
- rootOverride: opts.rootOverride ?? null,
377
- });
378
- if (ctx.config.workflow_mode !== "branch_pr")
379
- return 0;
380
- const baseBranch = await resolveBaseBranch({
381
- cwd: opts.cwd,
382
- rootOverride: opts.rootOverride ?? null,
383
- cliBaseOpt: null,
384
- mode: ctx.config.workflow_mode,
385
- });
386
- if (!baseBranch)
387
- return 0;
388
- const currentBranch = await gitCurrentBranch(ctx.resolvedProject.gitRoot);
389
- if (currentBranch !== baseBranch)
390
- return 0;
391
- return await cmdCleanupMerged({
392
- ctx,
393
- cwd: opts.cwd,
394
- rootOverride: opts.rootOverride,
395
- base: baseBranch,
396
- yes: true,
397
- archive: false,
398
- deleteRemoteBranches: false,
399
- fetch: false,
400
- quiet: true,
401
- skipUnsafeWorktrees: true,
402
- });
403
- }
404
- catch (error) {
405
- const message = error instanceof Error && error.message.trim().length > 0
406
- ? error.message.trim()
407
- : String(error);
408
- process.stderr.write(`warning: post-merge cleanup skipped: ${message}\n`);
409
- return 0;
410
- }
411
- }
412
- return 0;
413
- }
414
- catch (err) {
415
- const status = err?.status;
416
- const stdout = err?.stdout;
417
- const stderr = err?.stderr;
418
- if (typeof stdout === "string" && stdout.length > 0)
419
- process.stdout.write(stdout);
420
- if (typeof stderr === "string" && stderr.length > 0)
421
- process.stderr.write(stderr);
422
- if (typeof status === "number" && Number.isInteger(status) && status >= 0) {
423
- return status;
424
- }
425
- if (err instanceof CliError)
426
- throw err;
427
- throw mapBackendError(err, {
428
- command: `hooks run ${opts.hook}`,
429
- root: opts.rootOverride ?? null,
430
- });
431
- }
432
- }
1
+ export { HOOK_NAMES } from "./shared.js";
2
+ export { cmdHooksInstall, cmdHooksUninstall } from "./install.js";
3
+ export { cmdHooksRun } from "./run.js";
4
+ export { resolvePrePushHookScriptPath } from "./run.pre-push.js";
@@ -0,0 +1,11 @@
1
+ export declare function cmdHooksInstall(opts: {
2
+ cwd: string;
3
+ rootOverride?: string;
4
+ quiet: boolean;
5
+ }): Promise<number>;
6
+ export declare function cmdHooksUninstall(opts: {
7
+ cwd: string;
8
+ rootOverride?: string;
9
+ quiet: boolean;
10
+ }): Promise<number>;
11
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/hooks/install.ts"],"names":[],"mappings":"AAkFA,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmClB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BlB"}
@@ -0,0 +1,136 @@
1
+ import { chmod, mkdir, rm, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { resolveProject } from "@agentplaneorg/core/project";
4
+ import { mapCoreError } from "../../cli/error-map.js";
5
+ import { fileExists } from "../../cli/fs-utils.js";
6
+ import { infoMessage, successMessage } from "../../cli/output.js";
7
+ import { CliError } from "../../shared/errors.js";
8
+ import { fileIsManaged, HOOK_MARKER, HOOK_NAMES, resolveGitHooksDir, SHIM_MARKER, } from "./shared.js";
9
+ function hookScriptText(hook) {
10
+ return [
11
+ "#!/usr/bin/env sh",
12
+ `# ${HOOK_MARKER} (do not edit)`,
13
+ "set -e",
14
+ 'REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"',
15
+ 'SHIM="$REPO_ROOT/.agentplane/bin/agentplane"',
16
+ 'if [ -x "$SHIM" ]; then',
17
+ ' exec "$SHIM" hooks run ' + hook + ' "$@"',
18
+ "fi",
19
+ "if ! command -v agentplane >/dev/null 2>&1; then",
20
+ ' echo "agentplane hooks: runner not found (PATH missing and shim unavailable)." >&2',
21
+ " exit 127",
22
+ "fi",
23
+ "exec agentplane hooks run " + hook + ' "$@"',
24
+ "",
25
+ ].join("\n");
26
+ }
27
+ function shimScriptText() {
28
+ return [
29
+ "#!/usr/bin/env sh",
30
+ `# ${SHIM_MARKER} (do not edit)`,
31
+ "set -e",
32
+ 'SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"',
33
+ 'REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"',
34
+ 'LOCAL_BIN="$REPO_ROOT/packages/agentplane/bin/agentplane.js"',
35
+ 'if command -v node >/dev/null 2>&1 && [ -f "$LOCAL_BIN" ]; then',
36
+ ' exec node "$LOCAL_BIN" "$@"',
37
+ "fi",
38
+ 'ENV_BIN="${AGENTPLANE_HOOK_RUNNER:-}"',
39
+ 'if [ -n "$ENV_BIN" ] && command -v node >/dev/null 2>&1 && [ -f "$ENV_BIN" ]; then',
40
+ ' exec node "$ENV_BIN" "$@"',
41
+ "fi",
42
+ "if command -v agentplane >/dev/null 2>&1; then",
43
+ ' exec agentplane "$@"',
44
+ "fi",
45
+ "if command -v npx >/dev/null 2>&1; then",
46
+ ' exec npx --yes agentplane "$@"',
47
+ "fi",
48
+ 'echo "agentplane shim: runner not found (need env runner, repo-local source, agentplane in PATH, or node+npx)." >&2',
49
+ " exit 127",
50
+ "",
51
+ ].join("\n");
52
+ }
53
+ async function ensureShim(agentplaneDir, gitRoot) {
54
+ const shimDir = path.join(agentplaneDir, "bin");
55
+ const shimPath = path.join(shimDir, "agentplane");
56
+ await mkdir(shimDir, { recursive: true });
57
+ if (await fileExists(shimPath)) {
58
+ const managed = await fileIsManaged(shimPath, SHIM_MARKER);
59
+ if (!managed) {
60
+ throw new CliError({
61
+ exitCode: 5,
62
+ code: "E_GIT",
63
+ message: `Refusing to overwrite existing shim: ${path.relative(gitRoot, shimPath)}`,
64
+ });
65
+ }
66
+ }
67
+ await writeFile(shimPath, shimScriptText(), "utf8");
68
+ await chmod(shimPath, 0o755);
69
+ }
70
+ export async function cmdHooksInstall(opts) {
71
+ try {
72
+ const resolved = await resolveProject({
73
+ cwd: opts.cwd,
74
+ rootOverride: opts.rootOverride ?? null,
75
+ });
76
+ const hooksDir = await resolveGitHooksDir(resolved.gitRoot);
77
+ await mkdir(hooksDir, { recursive: true });
78
+ await mkdir(resolved.agentplaneDir, { recursive: true });
79
+ await ensureShim(resolved.agentplaneDir, resolved.gitRoot);
80
+ for (const hook of HOOK_NAMES) {
81
+ const hookPath = path.join(hooksDir, hook);
82
+ if (await fileExists(hookPath)) {
83
+ const managed = await fileIsManaged(hookPath, HOOK_MARKER);
84
+ if (!managed) {
85
+ throw new CliError({
86
+ exitCode: 5,
87
+ code: "E_GIT",
88
+ message: `Refusing to overwrite existing hook: ${path.relative(resolved.gitRoot, hookPath)}`,
89
+ });
90
+ }
91
+ }
92
+ await writeFile(hookPath, hookScriptText(hook), "utf8");
93
+ await chmod(hookPath, 0o755);
94
+ }
95
+ if (!opts.quiet) {
96
+ process.stdout.write(`${path.relative(resolved.gitRoot, hooksDir)}\n`);
97
+ }
98
+ return 0;
99
+ }
100
+ catch (err) {
101
+ if (err instanceof CliError)
102
+ throw err;
103
+ throw mapCoreError(err, { command: "hooks install", root: opts.rootOverride ?? null });
104
+ }
105
+ }
106
+ export async function cmdHooksUninstall(opts) {
107
+ try {
108
+ const resolved = await resolveProject({
109
+ cwd: opts.cwd,
110
+ rootOverride: opts.rootOverride ?? null,
111
+ });
112
+ const hooksDir = await resolveGitHooksDir(resolved.gitRoot);
113
+ let removed = 0;
114
+ for (const hook of HOOK_NAMES) {
115
+ const hookPath = path.join(hooksDir, hook);
116
+ if (!(await fileExists(hookPath)))
117
+ continue;
118
+ const managed = await fileIsManaged(hookPath, HOOK_MARKER);
119
+ if (!managed)
120
+ continue;
121
+ await rm(hookPath, { force: true });
122
+ removed++;
123
+ }
124
+ if (!opts.quiet) {
125
+ process.stdout.write(removed > 0
126
+ ? `${successMessage("removed hooks", undefined, `count=${removed}`)}\n`
127
+ : `${infoMessage("no agentplane hooks found")}\n`);
128
+ }
129
+ return 0;
130
+ }
131
+ catch (err) {
132
+ if (err instanceof CliError)
133
+ throw err;
134
+ throw mapCoreError(err, { command: "hooks uninstall", root: opts.rootOverride ?? null });
135
+ }
136
+ }
@@ -0,0 +1,3 @@
1
+ import type { HooksRunOptions } from "./run.js";
2
+ export declare function runCommitMsgHook(opts: HooksRunOptions): Promise<number>;
3
+ //# sourceMappingURL=run.commit-msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.commit-msg.d.ts","sourceRoot":"","sources":["../../../src/commands/hooks/run.commit-msg.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAyBhD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C7E"}
@@ -0,0 +1,68 @@
1
+ import { resolveProject } from "@agentplaneorg/core/project";
2
+ import { readFile } from "node:fs/promises";
3
+ import { loadConfig } from "@agentplaneorg/core/config";
4
+ import { evaluatePolicy } from "../../policy/evaluate.js";
5
+ import { CliError } from "../../shared/errors.js";
6
+ import { throwIfPolicyDenied } from "../shared/policy-deny.js";
7
+ import { gitCurrentBranch } from "../shared/git-ops.js";
8
+ import { parseTaskIdFromBranch, parseTaskIdFromCloseBranch } from "@agentplaneorg/core/git";
9
+ async function inferTaskIdFromBranchContext(opts) {
10
+ try {
11
+ const branch = await gitCurrentBranch(opts.gitRoot);
12
+ return (parseTaskIdFromBranch(opts.taskPrefix, branch) ?? parseTaskIdFromCloseBranch(branch) ?? "");
13
+ }
14
+ catch {
15
+ return "";
16
+ }
17
+ }
18
+ function readCommitSubject(message) {
19
+ for (const line of message.split("\n")) {
20
+ const trimmed = line.trim();
21
+ if (!trimmed || trimmed.startsWith("#"))
22
+ continue;
23
+ return trimmed;
24
+ }
25
+ return "";
26
+ }
27
+ export async function runCommitMsgHook(opts) {
28
+ const messagePath = opts.args[0];
29
+ if (!messagePath) {
30
+ throw new CliError({
31
+ exitCode: 2,
32
+ code: "E_USAGE",
33
+ message: "Missing commit message file path",
34
+ });
35
+ }
36
+ const raw = await readFile(messagePath, "utf8");
37
+ const subject = readCommitSubject(raw);
38
+ const resolved = await resolveProject({
39
+ cwd: opts.cwd,
40
+ rootOverride: opts.rootOverride ?? null,
41
+ });
42
+ const loaded = await loadConfig(resolved.agentplaneDir);
43
+ const taskId = (process.env.AGENTPLANE_TASK_ID ?? "").trim() ||
44
+ (await inferTaskIdFromBranchContext({
45
+ gitRoot: resolved.gitRoot,
46
+ taskPrefix: loaded.config.branch.task_prefix,
47
+ }));
48
+ const statusTo = (process.env.AGENTPLANE_STATUS_TO ?? "").trim().toUpperCase();
49
+ const emoji = subject.split(/\s+/).find(Boolean) ?? "";
50
+ if (taskId && statusTo === "DONE" && emoji !== "✅") {
51
+ throw new CliError({
52
+ exitCode: 5,
53
+ code: "E_GIT",
54
+ message: "Finish commits must use a checkmark emoji.\n" +
55
+ "Expected:\n" +
56
+ " ✅ <TASK_SUFFIX> <scope>: <summary>",
57
+ });
58
+ }
59
+ const res = evaluatePolicy({
60
+ action: "hook_commit_msg",
61
+ config: loaded.config,
62
+ taskId,
63
+ git: { stagedPaths: [] },
64
+ commit: { subject },
65
+ });
66
+ throwIfPolicyDenied(res);
67
+ return 0;
68
+ }
@@ -0,0 +1,9 @@
1
+ import type { HookName } from "./shared.js";
2
+ export type HooksRunOptions = {
3
+ cwd: string;
4
+ rootOverride?: string;
5
+ hook: HookName;
6
+ args: string[];
7
+ };
8
+ export declare function cmdHooksRun(opts: HooksRunOptions): Promise<number>;
9
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/hooks/run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAmBF,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBxE"}