agentplane 0.3.14 → 0.3.16

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 (425) hide show
  1. package/assets/policy/incidents.md +7 -0
  2. package/bin/agentplane.js +1 -1
  3. package/bin/framework-dev-contract.js +1 -0
  4. package/dist/.build-manifest.json +508 -323
  5. package/dist/backends/task-backend/load.d.ts.map +1 -1
  6. package/dist/backends/task-backend/load.js +32 -19
  7. package/dist/backends/task-backend/local-backend-doc.d.ts.map +1 -1
  8. package/dist/backends/task-backend/local-backend-doc.js +1 -1
  9. package/dist/backends/task-backend/redmine/backend-runtime.d.ts +147 -0
  10. package/dist/backends/task-backend/redmine/backend-runtime.d.ts.map +1 -0
  11. package/dist/backends/task-backend/redmine/backend-runtime.js +258 -0
  12. package/dist/backends/task-backend/redmine/backend-sync/context.d.ts +44 -0
  13. package/dist/backends/task-backend/redmine/backend-sync/context.d.ts.map +1 -0
  14. package/dist/backends/task-backend/redmine/backend-sync/context.js +8 -0
  15. package/dist/backends/task-backend/redmine/backend-sync/ids.d.ts +6 -0
  16. package/dist/backends/task-backend/redmine/backend-sync/ids.d.ts.map +1 -0
  17. package/dist/backends/task-backend/redmine/backend-sync/ids.js +21 -0
  18. package/dist/backends/task-backend/redmine/backend-sync/migration.d.ts +4 -0
  19. package/dist/backends/task-backend/redmine/backend-sync/migration.d.ts.map +1 -0
  20. package/dist/backends/task-backend/redmine/backend-sync/migration.js +87 -0
  21. package/dist/backends/task-backend/redmine/backend-sync/status.d.ts +10 -0
  22. package/dist/backends/task-backend/redmine/backend-sync/status.d.ts.map +1 -0
  23. package/dist/backends/task-backend/redmine/backend-sync/status.js +78 -0
  24. package/dist/backends/task-backend/redmine/backend-sync/sync.d.ts +12 -0
  25. package/dist/backends/task-backend/redmine/backend-sync/sync.d.ts.map +1 -0
  26. package/dist/backends/task-backend/redmine/backend-sync/sync.js +82 -0
  27. package/dist/backends/task-backend/redmine/backend-sync/write.d.ts +5 -0
  28. package/dist/backends/task-backend/redmine/backend-sync/write.d.ts.map +1 -0
  29. package/dist/backends/task-backend/redmine/backend-sync/write.js +100 -0
  30. package/dist/backends/task-backend/redmine/backend-sync.d.ts +6 -66
  31. package/dist/backends/task-backend/redmine/backend-sync.d.ts.map +1 -1
  32. package/dist/backends/task-backend/redmine/backend-sync.js +5 -367
  33. package/dist/backends/task-backend/redmine-backend.d.ts +2 -33
  34. package/dist/backends/task-backend/redmine-backend.d.ts.map +1 -1
  35. package/dist/backends/task-backend/redmine-backend.js +26 -241
  36. package/dist/backends/task-backend/shared/errors.d.ts +12 -0
  37. package/dist/backends/task-backend/shared/errors.d.ts.map +1 -1
  38. package/dist/backends/task-backend/shared/errors.js +12 -0
  39. package/dist/cli/archive.d.ts.map +1 -1
  40. package/dist/cli/archive.js +3 -5
  41. package/dist/cli/error-map.d.ts +7 -1
  42. package/dist/cli/error-map.d.ts.map +1 -1
  43. package/dist/cli/error-map.js +231 -19
  44. package/dist/cli/exit-codes.d.ts +14 -2
  45. package/dist/cli/exit-codes.d.ts.map +1 -1
  46. package/dist/cli/exit-codes.js +24 -11
  47. package/dist/cli/output.d.ts +3 -0
  48. package/dist/cli/output.d.ts.map +1 -1
  49. package/dist/cli/output.js +25 -14
  50. package/dist/cli/prompts.d.ts.map +1 -1
  51. package/dist/cli/prompts.js +44 -0
  52. package/dist/cli/run-cli/command-catalog/core.d.ts.map +1 -1
  53. package/dist/cli/run-cli/command-catalog/core.js +34 -76
  54. package/dist/cli/run-cli/command-catalog/lifecycle.d.ts.map +1 -1
  55. package/dist/cli/run-cli/command-catalog/lifecycle.js +23 -26
  56. package/dist/cli/run-cli/command-catalog/project.d.ts.map +1 -1
  57. package/dist/cli/run-cli/command-catalog/project.js +39 -54
  58. package/dist/cli/run-cli/command-catalog/shared.d.ts +15 -3
  59. package/dist/cli/run-cli/command-catalog/shared.d.ts.map +1 -1
  60. package/dist/cli/run-cli/command-catalog/shared.js +19 -6
  61. package/dist/cli/run-cli/command-catalog/task.d.ts.map +1 -1
  62. package/dist/cli/run-cli/command-catalog/task.js +63 -57
  63. package/dist/cli/run-cli/command-loaders.d.ts +174 -0
  64. package/dist/cli/run-cli/command-loaders.d.ts.map +1 -0
  65. package/dist/cli/run-cli/command-loaders.js +128 -0
  66. package/dist/cli/run-cli/commands/init/model.d.ts +42 -0
  67. package/dist/cli/run-cli/commands/init/model.d.ts.map +1 -0
  68. package/dist/cli/run-cli/commands/init/orchestrate.d.ts +9 -0
  69. package/dist/cli/run-cli/commands/init/orchestrate.d.ts.map +1 -0
  70. package/dist/cli/run-cli/commands/init/orchestrate.js +321 -0
  71. package/dist/cli/run-cli/commands/init/parsers.d.ts +5 -0
  72. package/dist/cli/run-cli/commands/init/parsers.d.ts.map +1 -0
  73. package/dist/cli/run-cli/commands/init/parsers.js +36 -0
  74. package/dist/cli/run-cli/commands/init/presets.d.ts +15 -0
  75. package/dist/cli/run-cli/commands/init/presets.d.ts.map +1 -0
  76. package/dist/cli/run-cli/commands/init/presets.js +63 -0
  77. package/dist/cli/run-cli/commands/init/spec.d.ts +5 -0
  78. package/dist/cli/run-cli/commands/init/spec.d.ts.map +1 -0
  79. package/dist/cli/run-cli/commands/init/spec.js +212 -0
  80. package/dist/cli/run-cli/commands/init/write-config.d.ts +1 -0
  81. package/dist/cli/run-cli/commands/init/write-config.d.ts.map +1 -1
  82. package/dist/cli/run-cli/commands/init/write-config.js +1 -0
  83. package/dist/cli/run-cli/commands/init/write-gitignore.js +1 -1
  84. package/dist/cli/run-cli/commands/init.d.ts +1 -28
  85. package/dist/cli/run-cli/commands/init.d.ts.map +1 -1
  86. package/dist/cli/run-cli/commands/init.js +1 -596
  87. package/dist/cli/run-cli/update-warning.d.ts +1 -0
  88. package/dist/cli/run-cli/update-warning.d.ts.map +1 -1
  89. package/dist/cli/run-cli/update-warning.js +10 -2
  90. package/dist/cli/run-cli.d.ts.map +1 -1
  91. package/dist/cli/run-cli.js +1 -2
  92. package/dist/cli/spec/errors.d.ts +13 -1
  93. package/dist/cli/spec/errors.d.ts.map +1 -1
  94. package/dist/cli/spec/errors.js +14 -4
  95. package/dist/commands/backend.d.ts.map +1 -1
  96. package/dist/commands/backend.js +66 -118
  97. package/dist/commands/block.spec.js +1 -1
  98. package/dist/commands/branch/work-start.js +1 -1
  99. package/dist/commands/commit.spec.js +1 -1
  100. package/dist/commands/doctor/branch-pr.js +1 -1
  101. package/dist/commands/doctor/fixes.js +1 -1
  102. package/dist/commands/doctor/runtime.d.ts.map +1 -1
  103. package/dist/commands/doctor/runtime.js +2 -2
  104. package/dist/commands/doctor/workspace.js +1 -1
  105. package/dist/commands/finish.spec.js +1 -1
  106. package/dist/commands/guard/commit.command.js +1 -1
  107. package/dist/commands/guard/impl/clean.d.ts +6 -0
  108. package/dist/commands/guard/impl/clean.d.ts.map +1 -0
  109. package/dist/commands/guard/impl/clean.js +29 -0
  110. package/dist/commands/guard/impl/close-dirt.d.ts +6 -0
  111. package/dist/commands/guard/impl/close-dirt.d.ts.map +1 -0
  112. package/dist/commands/guard/impl/close-dirt.js +56 -0
  113. package/dist/commands/guard/impl/commands.d.ts +4 -36
  114. package/dist/commands/guard/impl/commands.d.ts.map +1 -1
  115. package/dist/commands/guard/impl/commands.js +4 -549
  116. package/dist/commands/guard/impl/comment-commit.js +1 -1
  117. package/dist/commands/guard/impl/commit-diagnostics.d.ts +4 -0
  118. package/dist/commands/guard/impl/commit-diagnostics.d.ts.map +1 -0
  119. package/dist/commands/guard/impl/commit-diagnostics.js +150 -0
  120. package/dist/commands/guard/impl/commit.d.ts +25 -0
  121. package/dist/commands/guard/impl/commit.d.ts.map +1 -0
  122. package/dist/commands/guard/impl/commit.js +366 -0
  123. package/dist/commands/guard/impl/guard-commit.d.ts +3 -0
  124. package/dist/commands/guard/impl/guard-commit.d.ts.map +1 -0
  125. package/dist/commands/guard/impl/guard-commit.js +21 -0
  126. package/dist/commands/guard/impl/policy.d.ts +1 -0
  127. package/dist/commands/guard/impl/policy.d.ts.map +1 -1
  128. package/dist/commands/guard/impl/policy.js +9 -2
  129. package/dist/commands/guard/impl/suggest.d.ts +6 -0
  130. package/dist/commands/guard/impl/suggest.d.ts.map +1 -0
  131. package/dist/commands/guard/impl/suggest.js +33 -0
  132. package/dist/commands/hooks/index.d.ts +3 -0
  133. package/dist/commands/hooks/index.d.ts.map +1 -1
  134. package/dist/commands/hooks/index.js +27 -10
  135. package/dist/commands/pr/integrate/cmd.js +1 -1
  136. package/dist/commands/pr/integrate/internal/prepare.js +1 -1
  137. package/dist/commands/pr/internal/auto-commit.d.ts.map +1 -1
  138. package/dist/commands/pr/internal/auto-commit.js +2 -5
  139. package/dist/commands/pr/internal/gh-api.d.ts.map +1 -1
  140. package/dist/commands/pr/internal/gh-api.js +15 -8
  141. package/dist/commands/pr/internal/sync-branch.d.ts +0 -1
  142. package/dist/commands/pr/internal/sync-branch.d.ts.map +1 -1
  143. package/dist/commands/pr/internal/sync-branch.js +2 -5
  144. package/dist/commands/pr/internal/sync.d.ts.map +1 -1
  145. package/dist/commands/pr/internal/sync.js +30 -0
  146. package/dist/commands/pr/open.d.ts.map +1 -1
  147. package/dist/commands/pr/open.js +98 -8
  148. package/dist/commands/recipes/impl/resolver.js +1 -1
  149. package/dist/commands/recipes/impl/version.js +1 -1
  150. package/dist/commands/release/apply.command.js +1 -1
  151. package/dist/commands/release/apply.mutation.d.ts +1 -0
  152. package/dist/commands/release/apply.mutation.d.ts.map +1 -1
  153. package/dist/commands/release/apply.mutation.js +5 -1
  154. package/dist/commands/release/apply.pipeline/finalize.d.ts +21 -0
  155. package/dist/commands/release/apply.pipeline/finalize.d.ts.map +1 -0
  156. package/dist/commands/release/apply.pipeline/finalize.js +80 -0
  157. package/dist/commands/release/apply.pipeline/mutation.d.ts +18 -0
  158. package/dist/commands/release/apply.pipeline/mutation.d.ts.map +1 -0
  159. package/dist/commands/release/apply.pipeline/mutation.js +78 -0
  160. package/dist/commands/release/apply.pipeline/preflight.d.ts +25 -0
  161. package/dist/commands/release/apply.pipeline/preflight.d.ts.map +1 -0
  162. package/dist/commands/release/apply.pipeline/preflight.js +69 -0
  163. package/dist/commands/release/apply.pipeline/shared.d.ts +2 -0
  164. package/dist/commands/release/apply.pipeline/shared.d.ts.map +1 -0
  165. package/dist/commands/release/apply.pipeline/shared.js +5 -0
  166. package/dist/commands/release/apply.pipeline/state.d.ts +25 -0
  167. package/dist/commands/release/apply.pipeline/state.d.ts.map +1 -0
  168. package/dist/commands/release/apply.pipeline/state.js +129 -0
  169. package/dist/commands/release/apply.pipeline.d.ts +1 -1
  170. package/dist/commands/release/apply.pipeline.d.ts.map +1 -1
  171. package/dist/commands/release/apply.pipeline.js +4 -347
  172. package/dist/commands/release/apply.preflight.d.ts +9 -6
  173. package/dist/commands/release/apply.preflight.d.ts.map +1 -1
  174. package/dist/commands/release/apply.preflight.js +71 -51
  175. package/dist/commands/runtime.command.d.ts +2 -2
  176. package/dist/commands/runtime.command.d.ts.map +1 -1
  177. package/dist/commands/runtime.command.js +2 -2
  178. package/dist/commands/scenario/impl/commands.d.ts.map +1 -1
  179. package/dist/commands/scenario/impl/commands.js +52 -39
  180. package/dist/commands/scenario/impl/report.d.ts.map +1 -1
  181. package/dist/commands/scenario/impl/report.js +4 -7
  182. package/dist/commands/shared/allow-prefix-policy.d.ts.map +1 -0
  183. package/dist/{shared → commands/shared}/allow-prefix-policy.js +1 -1
  184. package/dist/commands/shared/comment-format.d.ts.map +1 -0
  185. package/dist/commands/shared/diagnostics.d.ts.map +1 -0
  186. package/dist/commands/shared/git-context.d.ts +1 -27
  187. package/dist/commands/shared/git-context.d.ts.map +1 -1
  188. package/dist/commands/shared/git-context.js +1 -156
  189. package/dist/commands/shared/git-diff.d.ts +1 -10
  190. package/dist/commands/shared/git-diff.d.ts.map +1 -1
  191. package/dist/commands/shared/git-diff.js +1 -49
  192. package/dist/commands/shared/git-ops.d.ts +1 -14
  193. package/dist/commands/shared/git-ops.d.ts.map +1 -1
  194. package/dist/commands/shared/git-ops.js +20 -150
  195. package/dist/commands/shared/git-worktree.d.ts +1 -9
  196. package/dist/commands/shared/git-worktree.d.ts.map +1 -1
  197. package/dist/commands/shared/git-worktree.js +1 -68
  198. package/dist/commands/shared/git.d.ts +1 -3
  199. package/dist/commands/shared/git.d.ts.map +1 -1
  200. package/dist/commands/shared/git.js +1 -14
  201. package/dist/commands/shared/policy-deny.d.ts +1 -1
  202. package/dist/commands/shared/reconcile-check.js +1 -1
  203. package/dist/commands/shared/task-backend.d.ts.map +1 -1
  204. package/dist/commands/shared/task-backend.js +24 -2
  205. package/dist/commands/shared/task-store/intents.d.ts.map +1 -1
  206. package/dist/commands/shared/task-store/intents.js +1 -1
  207. package/dist/commands/start.spec.js +1 -1
  208. package/dist/commands/task/close-tail-state.d.ts +7 -0
  209. package/dist/commands/task/close-tail-state.d.ts.map +1 -0
  210. package/dist/commands/task/close-tail-state.js +18 -0
  211. package/dist/commands/task/derive.js +1 -1
  212. package/dist/commands/task/finish-close.d.ts +22 -0
  213. package/dist/commands/task/finish-close.d.ts.map +1 -0
  214. package/dist/commands/task/finish-close.js +119 -0
  215. package/dist/commands/task/finish-command.d.ts +3 -0
  216. package/dist/commands/task/finish-command.d.ts.map +1 -0
  217. package/dist/commands/task/finish-command.js +56 -0
  218. package/dist/commands/task/finish-execute.d.ts +8 -0
  219. package/dist/commands/task/finish-execute.d.ts.map +1 -0
  220. package/dist/commands/task/finish-execute.js +272 -0
  221. package/dist/commands/task/finish-findings.d.ts +20 -0
  222. package/dist/commands/task/finish-findings.d.ts.map +1 -0
  223. package/dist/commands/task/finish-findings.js +27 -0
  224. package/dist/commands/task/finish-plan.d.ts +7 -0
  225. package/dist/commands/task/finish-plan.d.ts.map +1 -0
  226. package/dist/commands/task/finish-plan.js +157 -0
  227. package/dist/commands/task/finish-types.d.ts +69 -0
  228. package/dist/commands/task/finish-types.d.ts.map +1 -0
  229. package/dist/commands/task/finish.d.ts +1 -42
  230. package/dist/commands/task/finish.d.ts.map +1 -1
  231. package/dist/commands/task/finish.js +1 -527
  232. package/dist/commands/task/hosted-close-pr.command.d.ts.map +1 -1
  233. package/dist/commands/task/hosted-close-pr.command.js +29 -4
  234. package/dist/commands/task/hosted-close.command.d.ts.map +1 -1
  235. package/dist/commands/task/hosted-close.command.js +23 -2
  236. package/dist/commands/task/hosted-merge-sync/builders.d.ts +35 -0
  237. package/dist/commands/task/hosted-merge-sync/builders.d.ts.map +1 -0
  238. package/dist/commands/task/hosted-merge-sync/builders.js +148 -0
  239. package/dist/commands/task/hosted-merge-sync/github.d.ts +10 -0
  240. package/dist/commands/task/hosted-merge-sync/github.d.ts.map +1 -0
  241. package/dist/commands/task/hosted-merge-sync/github.js +113 -0
  242. package/dist/commands/task/hosted-merge-sync/local-branch.d.ts +12 -0
  243. package/dist/commands/task/hosted-merge-sync/local-branch.d.ts.map +1 -0
  244. package/dist/commands/task/hosted-merge-sync/local-branch.js +143 -0
  245. package/dist/commands/task/hosted-merge-sync/model.d.ts +47 -0
  246. package/dist/commands/task/hosted-merge-sync/model.d.ts.map +1 -0
  247. package/dist/commands/task/hosted-merge-sync/pr-meta.d.ts +12 -0
  248. package/dist/commands/task/hosted-merge-sync/pr-meta.d.ts.map +1 -0
  249. package/dist/commands/task/hosted-merge-sync/pr-meta.js +26 -0
  250. package/dist/commands/task/hosted-merge-sync.d.ts +5 -63
  251. package/dist/commands/task/hosted-merge-sync.d.ts.map +1 -1
  252. package/dist/commands/task/hosted-merge-sync.js +10 -444
  253. package/dist/commands/task/new.js +1 -1
  254. package/dist/commands/task/set-status.command.js +1 -1
  255. package/dist/commands/task/shared/direct-work-lock.d.ts.map +1 -0
  256. package/dist/commands/task/shared/git-log.d.ts.map +1 -0
  257. package/dist/commands/task/shared/transitions.d.ts +1 -1
  258. package/dist/commands/task/shared/transitions.d.ts.map +1 -1
  259. package/dist/commands/task/shared/transitions.js +4 -6
  260. package/dist/commands/upgrade/apply.js +1 -1
  261. package/dist/commands/workflow-playbook.command.d.ts.map +1 -1
  262. package/dist/commands/workflow-playbook.command.js +8 -7
  263. package/dist/harness/hooks-lifecycle.d.ts.map +1 -1
  264. package/dist/harness/hooks-lifecycle.js +11 -7
  265. package/dist/meta/release.d.ts.map +1 -1
  266. package/dist/meta/release.js +8 -4
  267. package/dist/policy/engine.d.ts +1 -1
  268. package/dist/policy/evaluate.d.ts +1 -1
  269. package/dist/policy/{types.d.ts → model.d.ts} +1 -1
  270. package/dist/policy/{types.d.ts.map → model.d.ts.map} +1 -1
  271. package/dist/policy/result.d.ts +1 -1
  272. package/dist/policy/rules/allowlist.d.ts +1 -1
  273. package/dist/policy/rules/branch-pr-base.d.ts +1 -1
  274. package/dist/policy/rules/clean-tree.d.ts +1 -1
  275. package/dist/policy/rules/commit-subject.d.ts +1 -1
  276. package/dist/policy/rules/protected-paths.d.ts +1 -1
  277. package/dist/runner/adapters/base.d.ts +42 -0
  278. package/dist/runner/adapters/base.d.ts.map +1 -0
  279. package/dist/runner/adapters/base.js +107 -0
  280. package/dist/runner/adapters/codex-preparation.d.ts +7 -0
  281. package/dist/runner/adapters/codex-preparation.d.ts.map +1 -0
  282. package/dist/runner/adapters/codex-preparation.js +86 -0
  283. package/dist/runner/adapters/codex.d.ts.map +1 -1
  284. package/dist/runner/adapters/codex.js +30 -175
  285. package/dist/runner/adapters/custom-preparation.d.ts +9 -0
  286. package/dist/runner/adapters/custom-preparation.d.ts.map +1 -0
  287. package/dist/runner/adapters/custom-preparation.js +191 -0
  288. package/dist/runner/adapters/custom.d.ts.map +1 -1
  289. package/dist/runner/adapters/custom.js +26 -279
  290. package/dist/runner/process-supervision/run.d.ts +30 -0
  291. package/dist/runner/process-supervision/run.d.ts.map +1 -0
  292. package/dist/runner/process-supervision/run.js +349 -0
  293. package/dist/runner/process-supervision/signals.d.ts +16 -0
  294. package/dist/runner/process-supervision/signals.d.ts.map +1 -0
  295. package/dist/runner/process-supervision/signals.js +85 -0
  296. package/dist/runner/process-supervision/state.d.ts +10 -0
  297. package/dist/runner/process-supervision/state.d.ts.map +1 -0
  298. package/dist/runner/process-supervision/state.js +42 -0
  299. package/dist/runner/process-supervision/streams.d.ts +6 -0
  300. package/dist/runner/process-supervision/streams.d.ts.map +1 -0
  301. package/dist/runner/process-supervision/streams.js +23 -0
  302. package/dist/runner/process-supervision.d.ts +5 -47
  303. package/dist/runner/process-supervision.d.ts.map +1 -1
  304. package/dist/runner/process-supervision.js +3 -490
  305. package/dist/runner/usecases/scenario-materialize-task.js +1 -1
  306. package/dist/runtime/approvals/index.d.ts +1 -1
  307. package/dist/runtime/approvals/{types.d.ts → model.d.ts} +1 -1
  308. package/dist/runtime/approvals/{types.d.ts.map → model.d.ts.map} +1 -1
  309. package/dist/runtime/approvals/runtime.d.ts +1 -1
  310. package/dist/runtime/behavior/index.d.ts +1 -1
  311. package/dist/runtime/behavior/{types.d.ts → model.d.ts} +1 -1
  312. package/dist/runtime/behavior/{types.d.ts.map → model.d.ts.map} +1 -1
  313. package/dist/runtime/behavior/resolve.d.ts +1 -1
  314. package/dist/runtime/capabilities/backend.d.ts +1 -1
  315. package/dist/runtime/capabilities/index.d.ts +1 -1
  316. package/dist/runtime/capabilities/{types.d.ts → model.d.ts} +1 -1
  317. package/dist/runtime/capabilities/{types.d.ts.map → model.d.ts.map} +1 -1
  318. package/dist/runtime/capabilities/model.js +1 -0
  319. package/dist/runtime/capabilities/recipe.d.ts +1 -1
  320. package/dist/runtime/capabilities/registry.d.ts +1 -1
  321. package/dist/runtime/capabilities/runner.d.ts +1 -1
  322. package/dist/runtime/execution-context.d.ts.map +1 -1
  323. package/dist/runtime/execution-context.js +16 -0
  324. package/dist/runtime/execution-profile/index.d.ts +1 -1
  325. package/dist/runtime/execution-profile/{types.d.ts → model.d.ts} +1 -1
  326. package/dist/runtime/execution-profile/{types.d.ts.map → model.d.ts.map} +1 -1
  327. package/dist/runtime/execution-profile/model.js +1 -0
  328. package/dist/runtime/execution-profile/resolve.d.ts +1 -1
  329. package/dist/runtime/explain/index.d.ts +1 -1
  330. package/dist/runtime/explain/{types.d.ts → model.d.ts} +1 -1
  331. package/dist/runtime/explain/{types.d.ts.map → model.d.ts.map} +1 -1
  332. package/dist/runtime/explain/model.js +1 -0
  333. package/dist/runtime/explain/resolve.d.ts +1 -1
  334. package/dist/runtime/protocol/index.d.ts +1 -1
  335. package/dist/runtime/protocol/index.js +1 -1
  336. package/dist/runtime/protocol/{types.d.ts → model.d.ts} +1 -1
  337. package/dist/runtime/protocol/{types.d.ts.map → model.d.ts.map} +1 -1
  338. package/dist/runtime/protocol/resolve.d.ts +1 -1
  339. package/dist/runtime/protocol/resolve.js +1 -1
  340. package/dist/runtime/shared/repo-cli-version.d.ts.map +1 -0
  341. package/dist/{shared → runtime/shared}/repo-cli-version.js +1 -1
  342. package/dist/runtime/shared/runtime-artifacts.d.ts.map +1 -0
  343. package/dist/{shared → runtime/shared}/runtime-source.d.ts +1 -1
  344. package/dist/runtime/shared/runtime-source.d.ts.map +1 -0
  345. package/dist/{shared → runtime/shared}/runtime-source.js +1 -1
  346. package/dist/runtime/shared/version-compare.d.ts.map +1 -0
  347. package/dist/runtime/task-intake/resolve.js +1 -1
  348. package/dist/shared/errors.d.ts +52 -2
  349. package/dist/shared/errors.d.ts.map +1 -1
  350. package/dist/shared/errors.js +66 -4
  351. package/dist/shared/trace-events.d.ts +13 -0
  352. package/dist/shared/trace-events.d.ts.map +1 -0
  353. package/dist/shared/trace-events.js +17 -0
  354. package/dist/{shared/task-doc-conflicts.d.ts → task-doc/conflicts.d.ts} +1 -1
  355. package/dist/task-doc/conflicts.d.ts.map +1 -0
  356. package/dist/{shared/task-doc-conflicts.js → task-doc/conflicts.js} +1 -1
  357. package/dist/{shared/task-doc-state.d.ts → task-doc/state.d.ts} +1 -1
  358. package/dist/task-doc/state.d.ts.map +1 -0
  359. package/package.json +8 -8
  360. package/dist/cli/run-cli/error-guidance.d.ts +0 -9
  361. package/dist/cli/run-cli/error-guidance.d.ts.map +0 -1
  362. package/dist/cli/run-cli/error-guidance.js +0 -210
  363. package/dist/cli/run-cli.test-helpers.d.ts +0 -2
  364. package/dist/cli/run-cli.test-helpers.d.ts.map +0 -1
  365. package/dist/cli/run-cli.test-helpers.js +0 -1
  366. package/dist/commands/recipes.test-helpers.d.ts +0 -202
  367. package/dist/commands/recipes.test-helpers.d.ts.map +0 -1
  368. package/dist/commands/recipes.test-helpers.js +0 -483
  369. package/dist/commands/release.test-helpers.d.ts +0 -38
  370. package/dist/commands/release.test-helpers.d.ts.map +0 -1
  371. package/dist/commands/release.test-helpers.js +0 -55
  372. package/dist/commands/task.test-helpers.d.ts +0 -13
  373. package/dist/commands/task.test-helpers.d.ts.map +0 -1
  374. package/dist/commands/task.test-helpers.js +0 -65
  375. package/dist/runner/test-helpers.d.ts +0 -30
  376. package/dist/runner/test-helpers.d.ts.map +0 -1
  377. package/dist/runner/test-helpers.js +0 -97
  378. package/dist/shared/agent-emoji.d.ts +0 -5
  379. package/dist/shared/agent-emoji.d.ts.map +0 -1
  380. package/dist/shared/agent-emoji.js +0 -51
  381. package/dist/shared/allow-prefix-policy.d.ts.map +0 -1
  382. package/dist/shared/comment-format.d.ts.map +0 -1
  383. package/dist/shared/diagnostics.d.ts.map +0 -1
  384. package/dist/shared/direct-work-lock.d.ts.map +0 -1
  385. package/dist/shared/git-log.d.ts.map +0 -1
  386. package/dist/shared/repo-cli-version.d.ts.map +0 -1
  387. package/dist/shared/runtime-artifacts.d.ts.map +0 -1
  388. package/dist/shared/runtime-source.d.ts.map +0 -1
  389. package/dist/shared/task-doc-conflicts.d.ts.map +0 -1
  390. package/dist/shared/task-doc-state.d.ts.map +0 -1
  391. package/dist/shared/version-compare.d.ts.map +0 -1
  392. package/dist/testing/cli-harness/recipe-archives.d.ts +0 -28
  393. package/dist/testing/cli-harness/recipe-archives.d.ts.map +0 -1
  394. package/dist/testing/cli-harness/recipe-archives.js +0 -374
  395. package/dist/testing/cli-harness/stdio.d.ts +0 -26
  396. package/dist/testing/cli-harness/stdio.d.ts.map +0 -1
  397. package/dist/testing/cli-harness/stdio.js +0 -84
  398. package/dist/testing/cli-harness.d.ts +0 -25
  399. package/dist/testing/cli-harness.d.ts.map +0 -1
  400. package/dist/testing/cli-harness.js +0 -313
  401. package/dist/testing/index.d.ts +0 -2
  402. package/dist/testing/index.d.ts.map +0 -1
  403. package/dist/testing/index.js +0 -1
  404. /package/dist/{policy/types.js → cli/run-cli/commands/init/model.js} +0 -0
  405. /package/dist/{shared → commands/shared}/allow-prefix-policy.d.ts +0 -0
  406. /package/dist/{shared → commands/shared}/comment-format.d.ts +0 -0
  407. /package/dist/{shared → commands/shared}/comment-format.js +0 -0
  408. /package/dist/{shared → commands/shared}/diagnostics.d.ts +0 -0
  409. /package/dist/{shared → commands/shared}/diagnostics.js +0 -0
  410. /package/dist/{runtime/approvals/types.js → commands/task/finish-types.js} +0 -0
  411. /package/dist/{runtime/behavior/types.js → commands/task/hosted-merge-sync/model.js} +0 -0
  412. /package/dist/{shared → commands/task/shared}/direct-work-lock.d.ts +0 -0
  413. /package/dist/{shared → commands/task/shared}/direct-work-lock.js +0 -0
  414. /package/dist/{shared → commands/task/shared}/git-log.d.ts +0 -0
  415. /package/dist/{shared → commands/task/shared}/git-log.js +0 -0
  416. /package/dist/{runtime/capabilities/types.js → policy/model.js} +0 -0
  417. /package/dist/runtime/{execution-profile/types.js → approvals/model.js} +0 -0
  418. /package/dist/runtime/{explain/types.js → behavior/model.js} +0 -0
  419. /package/dist/runtime/protocol/{types.js → model.js} +0 -0
  420. /package/dist/{shared → runtime/shared}/repo-cli-version.d.ts +0 -0
  421. /package/dist/{shared → runtime/shared}/runtime-artifacts.d.ts +0 -0
  422. /package/dist/{shared → runtime/shared}/runtime-artifacts.js +0 -0
  423. /package/dist/{shared → runtime/shared}/version-compare.d.ts +0 -0
  424. /package/dist/{shared → runtime/shared}/version-compare.js +0 -0
  425. /package/dist/{shared/task-doc-state.js → task-doc/state.js} +0 -0
@@ -1,155 +1,9 @@
1
- import { execFileAsync, gitEnv } from "./git.js";
2
- import { setPinnedBaseBranch } from "@agentplaneorg/core";
1
+ import { execFileAsync, gitBranchExists, gitCurrentBranch, gitAddPaths, gitCommit, gitListBranches, gitEnv, gitStagedPaths, setPinnedBaseBranch, } from "@agentplaneorg/core";
3
2
  import { exitCodeForError } from "../../cli/exit-codes.js";
4
3
  import { promptChoice, promptInput } from "../../cli/prompts.js";
5
4
  import { CliError } from "../../shared/errors.js";
6
- export async function gitRevParse(cwd, args) {
7
- const { stdout } = await execFileAsync("git", ["rev-parse", ...args], { cwd, env: gitEnv() });
8
- const trimmed = stdout.trim();
9
- if (!trimmed)
10
- throw new Error("Failed to resolve git path");
11
- return trimmed;
12
- }
13
- export async function gitCurrentBranch(cwd) {
14
- try {
15
- const { stdout } = await execFileAsync("git", ["symbolic-ref", "--short", "HEAD"], {
16
- cwd,
17
- env: gitEnv(),
18
- });
19
- const trimmed = stdout.trim();
20
- if (trimmed)
21
- return trimmed;
22
- }
23
- catch {
24
- // fall through
25
- }
26
- const { stdout } = await execFileAsync("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
27
- cwd,
28
- env: gitEnv(),
29
- });
30
- const trimmed = stdout.trim();
31
- if (!trimmed || trimmed === "HEAD") {
32
- throw new CliError({
33
- code: "E_GIT",
34
- exitCode: exitCodeForError("E_GIT"),
35
- message: "Detached HEAD: failed to resolve current branch",
36
- });
37
- }
38
- return trimmed;
39
- }
40
- export async function gitBranchExists(cwd, branch) {
41
- try {
42
- await execFileAsync("git", ["show-ref", "--verify", "--quiet", `refs/heads/${branch}`], {
43
- cwd,
44
- env: gitEnv(),
45
- });
46
- return true;
47
- }
48
- catch (err) {
49
- const code = err?.code;
50
- if (code === 1)
51
- return false;
52
- throw err;
53
- }
54
- }
55
- export async function gitIsAncestor(cwd, maybeAncestor, descendant) {
56
- try {
57
- await execFileAsync("git", ["merge-base", "--is-ancestor", maybeAncestor, descendant], {
58
- cwd,
59
- env: gitEnv(),
60
- });
61
- return true;
62
- }
63
- catch (err) {
64
- const code = err?.code;
65
- if (code === 1)
66
- return false;
67
- throw err;
68
- }
69
- }
70
- export async function gitBranchUpstream(cwd, branch) {
71
- try {
72
- const { stdout } = await execFileAsync("git", ["for-each-ref", "--format=%(upstream:short)", `refs/heads/${branch}`], {
73
- cwd,
74
- env: gitEnv(),
75
- });
76
- const trimmed = stdout.trim();
77
- return trimmed.length > 0 ? trimmed : null;
78
- }
79
- catch {
80
- return null;
81
- }
82
- }
83
- export async function gitListBranches(cwd) {
84
- const { stdout } = await execFileAsync("git", ["branch", "--format=%(refname:short)"], {
85
- cwd,
86
- env: gitEnv(),
87
- });
88
- return stdout
89
- .split("\n")
90
- .map((line) => line.trim())
91
- .filter((line) => line.length > 0);
92
- }
93
- export async function gitStagedPaths(cwd) {
94
- const { stdout } = await execFileAsync("git", ["diff", "--cached", "--name-only"], {
95
- cwd,
96
- env: gitEnv(),
97
- });
98
- return stdout
99
- .split("\n")
100
- .map((line) => line.trim())
101
- .filter((line) => line.length > 0);
102
- }
103
- export async function gitAddPaths(cwd, paths) {
104
- if (paths.length === 0)
105
- return;
106
- await execFileAsync("git", ["add", "--", ...paths], { cwd, env: gitEnv() });
107
- }
108
- export async function gitCommit(cwd, message, opts) {
109
- const args = ["commit", "-m", message];
110
- if (opts?.skipHooks)
111
- args.push("--no-verify");
112
- const env = opts?.env ? { ...gitEnv(), ...opts.env } : gitEnv();
113
- await execFileAsync("git", args, { cwd, env });
114
- }
115
- export async function gitInitRepo(cwd, branch) {
116
- try {
117
- await execFileAsync("git", ["init", "-q", "-b", branch], { cwd, env: gitEnv() });
118
- return;
119
- }
120
- catch {
121
- await execFileAsync("git", ["init", "-q"], { cwd, env: gitEnv() });
122
- }
123
- try {
124
- const current = await gitCurrentBranch(cwd);
125
- if (current !== branch) {
126
- await execFileAsync("git", ["checkout", "-q", "-b", branch], { cwd, env: gitEnv() });
127
- }
128
- }
129
- catch {
130
- await execFileAsync("git", ["checkout", "-q", "-b", branch], { cwd, env: gitEnv() });
131
- }
132
- }
133
- export async function resolveInitBaseBranch(gitRoot, fallback) {
134
- let current = null;
135
- try {
136
- current = await gitCurrentBranch(gitRoot);
137
- }
138
- catch {
139
- current = null;
140
- }
141
- const branches = await gitListBranches(gitRoot);
142
- if (current)
143
- return current;
144
- if (branches.includes(fallback))
145
- return fallback;
146
- if (branches.length > 0) {
147
- const first = branches[0];
148
- if (first)
149
- return first;
150
- }
151
- return fallback;
152
- }
5
+ import { emitTraceEvent } from "../../shared/trace-events.js";
6
+ export { gitBranchExists, gitBranchUpstream, gitCurrentBranch, gitIsAncestor, gitListBranches, gitRevParse, gitAddPaths, gitCommit, gitInitRepo, gitStagedPaths, resolveInitBaseBranch, } from "@agentplaneorg/core";
153
7
  export async function promptInitBaseBranch(opts) {
154
8
  const branches = await gitListBranches(opts.gitRoot);
155
9
  let current = null;
@@ -192,6 +46,11 @@ export async function promptInitBaseBranch(opts) {
192
46
  return choice;
193
47
  }
194
48
  export async function ensureInitCommit(opts) {
49
+ emitTraceEvent({
50
+ component: "git-ops",
51
+ event: "init_commit_started",
52
+ details: { base_branch: opts.baseBranch, path_count: opts.installPaths.length },
53
+ });
195
54
  const stagedBefore = await gitStagedPaths(opts.gitRoot);
196
55
  if (stagedBefore.length > 0) {
197
56
  throw new CliError({
@@ -208,8 +67,19 @@ export async function ensureInitCommit(opts) {
208
67
  const dedupedPaths = [...new Set(opts.installPaths)].filter((entry) => entry.length > 0);
209
68
  await gitAddPaths(opts.gitRoot, dedupedPaths);
210
69
  const staged = await gitStagedPaths(opts.gitRoot);
211
- if (staged.length === 0)
70
+ if (staged.length === 0) {
71
+ emitTraceEvent({
72
+ component: "git-ops",
73
+ event: "init_commit_skipped",
74
+ details: { reason: "no_staged_changes" },
75
+ });
212
76
  return;
77
+ }
213
78
  const message = `chore: install agentplane ${opts.version}`;
214
79
  await gitCommit(opts.gitRoot, message, { skipHooks: opts.skipHooks });
80
+ emitTraceEvent({
81
+ component: "git-ops",
82
+ event: "init_commit_completed",
83
+ details: { staged_path_count: staged.length, skip_hooks: opts.skipHooks },
84
+ });
215
85
  }
@@ -1,10 +1,2 @@
1
- export declare function listWorktrees(cwd: string): Promise<{
2
- path: string;
3
- branch: string | null;
4
- }[]>;
5
- export declare function findWorktreeForBranch(cwd: string, branch: string): Promise<string | null>;
6
- export declare function parseTaskIdFromBranch(prefix: string, branch: string): string | null;
7
- export declare function parseTaskIdFromCloseBranch(branch: string): string | null;
8
- export declare function gitListBranchesByPrefixes(cwd: string, prefixes: string[]): Promise<string[]>;
9
- export declare function gitListTaskBranches(cwd: string, prefix: string): Promise<string[]>;
1
+ export { findWorktreeForBranch, gitListBranchesByPrefixes, gitListTaskBranches, listWorktrees, parseTaskIdFromBranch, parseTaskIdFromCloseBranch, } from "@agentplaneorg/core";
10
2
  //# sourceMappingURL=git-worktree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/git-worktree.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,CAAC,CAoBpD;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ/F;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxE;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF"}
1
+ {"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/git-worktree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC"}
@@ -1,68 +1 @@
1
- import { execFileAsync, gitEnv } from "./git.js";
2
- export async function listWorktrees(cwd) {
3
- const { stdout } = await execFileAsync("git", ["worktree", "list", "--porcelain"], {
4
- cwd,
5
- env: gitEnv(),
6
- });
7
- const worktrees = [];
8
- const lines = stdout.split("\n");
9
- let current = null;
10
- for (const line of lines) {
11
- if (line.startsWith("worktree ")) {
12
- if (current)
13
- worktrees.push(current);
14
- current = { path: line.slice("worktree ".length).trim(), branch: null };
15
- continue;
16
- }
17
- if (line.startsWith("branch ") && current) {
18
- current.branch = line.slice("branch ".length).trim();
19
- }
20
- }
21
- if (current)
22
- worktrees.push(current);
23
- return worktrees;
24
- }
25
- export async function findWorktreeForBranch(cwd, branch) {
26
- const target = branch.startsWith("refs/heads/") ? branch : `refs/heads/${branch}`;
27
- const worktrees = await listWorktrees(cwd);
28
- const match = worktrees.find((entry) => entry.branch === branch || entry.branch === target || entry.branch === `refs/heads/${branch}`);
29
- return match ? match.path : null;
30
- }
31
- function stripBranchRef(branch) {
32
- return branch.startsWith("refs/heads/") ? branch.slice("refs/heads/".length) : branch;
33
- }
34
- export function parseTaskIdFromBranch(prefix, branch) {
35
- const normalized = stripBranchRef(branch);
36
- if (!normalized.startsWith(`${prefix}/`))
37
- return null;
38
- const rest = normalized.slice(prefix.length + 1);
39
- const taskId = rest.split("/", 1)[0];
40
- return taskId ? taskId.trim() : null;
41
- }
42
- export function parseTaskIdFromCloseBranch(branch) {
43
- const normalized = stripBranchRef(branch);
44
- if (!normalized.startsWith("task-close/"))
45
- return null;
46
- const rest = normalized.slice("task-close/".length);
47
- const taskId = rest.split("/", 1)[0];
48
- return taskId ? taskId.trim() : null;
49
- }
50
- export async function gitListBranchesByPrefixes(cwd, prefixes) {
51
- const patterns = prefixes
52
- .map((prefix) => prefix.trim())
53
- .filter((prefix) => prefix.length > 0)
54
- .map((prefix) => `refs/heads/${prefix}`);
55
- if (patterns.length === 0)
56
- return [];
57
- const { stdout } = await execFileAsync("git", ["for-each-ref", "--format=%(refname:short)", ...patterns], {
58
- cwd,
59
- env: gitEnv(),
60
- });
61
- return stdout
62
- .split("\n")
63
- .map((line) => line.trim())
64
- .filter((line) => line.length > 0);
65
- }
66
- export async function gitListTaskBranches(cwd, prefix) {
67
- return await gitListBranchesByPrefixes(cwd, [prefix]);
68
- }
1
+ export { findWorktreeForBranch, gitListBranchesByPrefixes, gitListTaskBranches, listWorktrees, parseTaskIdFromBranch, parseTaskIdFromCloseBranch, } from "@agentplaneorg/core";
@@ -1,4 +1,2 @@
1
- import { execFile } from "node:child_process";
2
- export declare const execFileAsync: typeof execFile.__promisify__;
3
- export declare function gitEnv(): NodeJS.ProcessEnv;
1
+ export { execFileAsync, gitEnv } from "@agentplaneorg/core";
4
2
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,eAAO,MAAM,aAAa,+BAAsB,CAAC;AAGjD,wBAAgB,MAAM,IAAI,MAAM,CAAC,UAAU,CAS1C"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,14 +1 @@
1
- import { execFile } from "node:child_process";
2
- import { promisify } from "node:util";
3
- export const execFileAsync = promisify(execFile);
4
- // Avoid leaking worktree-index overrides into git subprocesses.
5
- export function gitEnv() {
6
- const env = { ...process.env };
7
- delete env.GIT_DIR;
8
- delete env.GIT_WORK_TREE;
9
- delete env.GIT_COMMON_DIR;
10
- delete env.GIT_INDEX_FILE;
11
- delete env.GIT_OBJECT_DIRECTORY;
12
- delete env.GIT_ALTERNATE_OBJECT_DIRECTORIES;
13
- return env;
14
- }
1
+ export { execFileAsync, gitEnv } from "@agentplaneorg/core";
@@ -1,3 +1,3 @@
1
- import type { PolicyResult } from "../../policy/types.js";
1
+ import type { PolicyResult } from "../../policy/model.js";
2
2
  export declare function throwIfPolicyDenied(res: PolicyResult): void;
3
3
  //# sourceMappingURL=policy-deny.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { exitCodeForError } from "../../cli/exit-codes.js";
2
- import { withDiagnosticContext } from "../../shared/diagnostics.js";
2
+ import { withDiagnosticContext } from "./diagnostics.js";
3
3
  import { CliError } from "../../shared/errors.js";
4
4
  import path from "node:path";
5
5
  import { backendUsesLocalTaskStore, listTaskSummariesMemo, loadTaskFromBranchSnapshot, } from "./task-backend.js";
@@ -1 +1 @@
1
- {"version":3,"file":"task-backend.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/task-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-backend.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/task-backend.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { resolveTaskDocUpdatedBy, parseTaskReadme, taskDocToSectionMap, validateTaskReadmeFrontmatter, withTaskReadmeFrontmatterDefaults, } from "@agentplaneorg/core";
4
4
  import { CliError } from "../../shared/errors.js";
5
+ import { emitTraceEvent } from "../../shared/trace-events.js";
5
6
  import { loadTaskBackend, taskRecordToData, toTaskSummary, } from "../../backends/task-backend.js";
6
7
  import { gitShowFile, toGitPath } from "./git-diff.js";
7
8
  import { GitContext } from "./git-context.js";
@@ -101,6 +102,15 @@ export async function loadCommandContext(opts) {
101
102
  config: opts.config,
102
103
  });
103
104
  const { backend, backendId, backendConfigPath, resolved, config } = backendLoaded;
105
+ emitTraceEvent({
106
+ component: "backend-ops",
107
+ event: "command_context_loaded",
108
+ details: {
109
+ backend: backendId,
110
+ config_path: path.relative(resolved.gitRoot, backendConfigPath),
111
+ canonical_source: backend.capabilities?.canonical_source ?? null,
112
+ },
113
+ });
104
114
  return {
105
115
  resolvedProject: resolved,
106
116
  config,
@@ -126,11 +136,23 @@ export async function loadTaskFromContext(opts) {
126
136
  return preferredBranchTask;
127
137
  }
128
138
  const task = await opts.ctx.taskBackend.getTask(opts.taskId);
129
- if (task)
139
+ if (task) {
140
+ emitTraceEvent({
141
+ component: "backend-ops",
142
+ event: "task_loaded",
143
+ details: { task_id: opts.taskId, backend: opts.ctx.backendId },
144
+ });
130
145
  return task;
146
+ }
131
147
  const fallbackTask = await branchFallback();
132
- if (fallbackTask)
148
+ if (fallbackTask) {
149
+ emitTraceEvent({
150
+ component: "backend-ops",
151
+ event: "task_loaded_from_branch_snapshot",
152
+ details: { task_id: opts.taskId, backend: opts.ctx.backendId },
153
+ });
133
154
  return fallbackTask;
155
+ }
134
156
  throw new CliError({
135
157
  exitCode: 4,
136
158
  code: "E_IO",
@@ -1 +1 @@
1
- {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../../../src/commands/shared/task-store/intents.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAK7E,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,eAAe,CAE7E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,eAAe,CAEjF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,GAAG,eAAe,CAElB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,eAAe,CAElB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACZ,GACL,eAAe,CAEjB;AAuFD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,GAC7B,cAAc,GAAG,IAAI,GAAG,SAAS,CA2DnC;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,EACtF,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAS/C;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,qBAAqB,EAC9B,IAAI,GAAE;IACJ,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,QAAQ,CA0GV;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,QAAQ,CAI7F;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,EAAE,CAEzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,CAEjG"}
1
+ {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../../../src/commands/shared/task-store/intents.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,eAAe,CAE7E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,eAAe,CAEjF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,GAAG,eAAe,CAElB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,eAAe,CAElB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACZ,GACL,eAAe,CAEjB;AAuFD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,GAC7B,cAAc,GAAG,IAAI,GAAG,SAAS,CA2DnC;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,EACtF,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAS/C;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,qBAAqB,EAC9B,IAAI,GAAE;IACJ,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,QAAQ,CA0GV;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,QAAQ,CAI7F;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,EAAE,CAEzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,CAEjG"}
@@ -1,5 +1,5 @@
1
1
  import { applyTaskDocMutations, normalizeTaskDocVersion, taskDocToSectionMap, } from "@agentplaneorg/core";
2
- import { assertExpectedTaskDoc, assertExpectedTaskSection, } from "../../../shared/task-doc-conflicts.js";
2
+ import { assertExpectedTaskDoc, assertExpectedTaskSection } from "../../../task-doc/conflicts.js";
3
3
  export function setTaskFieldsIntent(task) {
4
4
  return { kind: "set-task-fields", task };
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import { usageError } from "../cli/spec/errors.js";
2
- import { findRepoWideAllowPrefixes, repoWideAllowPrefixMessage, } from "../shared/allow-prefix-policy.js";
2
+ import { findRepoWideAllowPrefixes, repoWideAllowPrefixMessage, } from "./shared/allow-prefix-policy.js";
3
3
  import { toStringList } from "../cli/spec/parse-utils.js";
4
4
  export const startSpec = {
5
5
  id: ["start"],
@@ -0,0 +1,7 @@
1
+ export declare function taskCloseAlreadyRecordedOnBase(opts: {
2
+ gitRoot: string;
3
+ workflowDir: string;
4
+ taskId: string;
5
+ baseBranch: string;
6
+ }): Promise<boolean>;
7
+ //# sourceMappingURL=close-tail-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-tail-state.d.ts","sourceRoot":"","sources":["../../../src/commands/task/close-tail-state.ts"],"names":[],"mappings":"AAMA,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBnB"}
@@ -0,0 +1,18 @@
1
+ import path from "node:path";
2
+ import { extractTaskSuffix } from "@agentplaneorg/core";
3
+ import { execFileAsync, gitEnv } from "../shared/git.js";
4
+ export async function taskCloseAlreadyRecordedOnBase(opts) {
5
+ const readmePath = path.join(opts.gitRoot, opts.workflowDir, opts.taskId, "README.md");
6
+ const { stdout } = await execFileAsync("git", ["log", opts.baseBranch, "--format=%s", "--", readmePath], {
7
+ cwd: opts.gitRoot,
8
+ env: gitEnv(),
9
+ maxBuffer: 10 * 1024 * 1024,
10
+ });
11
+ const suffix = extractTaskSuffix(opts.taskId);
12
+ const closeNeedle = `${suffix} close:`;
13
+ const taskNeedle = `(${opts.taskId})`;
14
+ return stdout
15
+ .split("\n")
16
+ .map((line) => line.trim())
17
+ .some((line) => line.includes(closeNeedle) && line.includes(taskNeedle));
18
+ }
@@ -2,7 +2,7 @@ import { setMarkdownSection } from "@agentplaneorg/core";
2
2
  import { mapBackendError } from "../../cli/error-map.js";
3
3
  import { unknownEntityMessage, warnMessage } from "../../cli/output.js";
4
4
  import { CliError } from "../../shared/errors.js";
5
- import { buildTaskDocState } from "../../shared/task-doc-state.js";
5
+ import { buildTaskDocState } from "../../task-doc/state.js";
6
6
  import { loadCommandContext } from "../shared/task-backend.js";
7
7
  import { buildDefaultVerifyStepsSection, defaultTaskDocV3, TASK_DOC_VERSION_V3, } from "./doc-template.js";
8
8
  import { extractTaskObservationSection, normalizeTaskDocVersion, nowIso, requiresVerifyStepsByPrimary, resolvePrimaryTag, toStringArray, warnIfUnknownOwner, } from "./shared.js";
@@ -0,0 +1,22 @@
1
+ import type { CommandContext } from "../shared/task-backend.js";
2
+ export declare function clearDirectWorkLockIfMatches(opts: {
3
+ agentplaneDir: string;
4
+ taskIds: string[];
5
+ }): Promise<void>;
6
+ export declare function ensureFinishRunsOnBaseBranch(opts: {
7
+ ctx: CommandContext;
8
+ cwd: string;
9
+ rootOverride?: string;
10
+ baseBranchOverride?: string;
11
+ }): Promise<void>;
12
+ export declare function materializeBranchPrCloseTail(opts: {
13
+ ctx: CommandContext;
14
+ cwd: string;
15
+ rootOverride?: string;
16
+ taskId: string;
17
+ baseBranchOverride?: string;
18
+ quiet: boolean;
19
+ closeUnstageOthers?: boolean;
20
+ allowPolicy?: boolean;
21
+ }): Promise<string | null>;
22
+ //# sourceMappingURL=finish-close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish-close.d.ts","sourceRoot":"","sources":["../../../src/commands/task/finish-close.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhB;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB;AAsBD,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyDzB"}
@@ -0,0 +1,119 @@
1
+ import { resolveBaseBranch } from "@agentplaneorg/core";
2
+ import { readFile, rm } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { exitCodeForError } from "../../cli/exit-codes.js";
5
+ import { CliError } from "../../shared/errors.js";
6
+ import { execFileAsync, gitEnv } from "../shared/git.js";
7
+ import { gitBranchExists, gitCurrentBranch } from "../shared/git-ops.js";
8
+ import { taskCloseAlreadyRecordedOnBase } from "./close-tail-state.js";
9
+ import { createTaskCloseCommit } from "./finish-shared.js";
10
+ export async function clearDirectWorkLockIfMatches(opts) {
11
+ const lockPath = path.join(opts.agentplaneDir, "cache", "direct-work.json");
12
+ try {
13
+ const text = await readFile(lockPath, "utf8");
14
+ const parsed = JSON.parse(text);
15
+ const lockTaskId = parsed && typeof parsed.task_id === "string" ? parsed.task_id : null;
16
+ if (!lockTaskId)
17
+ return;
18
+ if (!opts.taskIds.includes(lockTaskId))
19
+ return;
20
+ await rm(lockPath, { force: true });
21
+ }
22
+ catch {
23
+ // best-effort
24
+ }
25
+ }
26
+ export async function ensureFinishRunsOnBaseBranch(opts) {
27
+ if (opts.ctx.config.workflow_mode !== "branch_pr")
28
+ return;
29
+ const baseBranch = await resolveBaseBranch({
30
+ cwd: opts.cwd,
31
+ rootOverride: opts.rootOverride ?? null,
32
+ cliBaseOpt: opts.baseBranchOverride ?? null,
33
+ mode: opts.ctx.config.workflow_mode,
34
+ });
35
+ if (!baseBranch) {
36
+ throw new CliError({
37
+ exitCode: exitCodeForError("E_USAGE"),
38
+ code: "E_USAGE",
39
+ message: "Base branch could not be resolved (use `agentplane branch base set` or --base).",
40
+ });
41
+ }
42
+ const currentBranch = await gitCurrentBranch(opts.ctx.resolvedProject.gitRoot);
43
+ if (currentBranch === baseBranch)
44
+ return;
45
+ throw new CliError({
46
+ exitCode: exitCodeForError("E_GIT"),
47
+ code: "E_GIT",
48
+ message: `finish must run on base branch ${baseBranch} in branch_pr mode ` +
49
+ `(current: ${currentBranch}); integrate first or reconcile from the base checkout.`,
50
+ });
51
+ }
52
+ async function readHeadCommitHash(gitRoot) {
53
+ const { stdout } = await execFileAsync("git", ["rev-parse", "HEAD"], {
54
+ cwd: gitRoot,
55
+ env: gitEnv(),
56
+ });
57
+ const hash = stdout.trim();
58
+ if (!hash) {
59
+ throw new CliError({
60
+ exitCode: exitCodeForError("E_GIT"),
61
+ code: "E_GIT",
62
+ message: "Failed to resolve HEAD while preparing a branch_pr close tail.",
63
+ });
64
+ }
65
+ return hash;
66
+ }
67
+ function branchPrCloseBranchName(taskId, headCommitHash) {
68
+ return `task-close/${taskId}/${headCommitHash.slice(0, 12)}`;
69
+ }
70
+ export async function materializeBranchPrCloseTail(opts) {
71
+ const gitRoot = opts.ctx.resolvedProject.gitRoot;
72
+ const baseBranch = await gitCurrentBranch(gitRoot);
73
+ const alreadyClosedOnBase = await taskCloseAlreadyRecordedOnBase({
74
+ gitRoot,
75
+ workflowDir: opts.ctx.config.paths.workflow_dir,
76
+ taskId: opts.taskId,
77
+ baseBranch,
78
+ });
79
+ if (alreadyClosedOnBase) {
80
+ return null;
81
+ }
82
+ const headCommitHash = await readHeadCommitHash(gitRoot);
83
+ const closeBranch = branchPrCloseBranchName(opts.taskId, headCommitHash);
84
+ const branchExists = await gitBranchExists(gitRoot, closeBranch);
85
+ await execFileAsync("git", branchExists ? ["checkout", closeBranch] : ["checkout", "-b", closeBranch], { cwd: gitRoot, env: gitEnv() });
86
+ let checkoutError = null;
87
+ try {
88
+ await createTaskCloseCommit({
89
+ ctx: opts.ctx,
90
+ cwd: opts.cwd,
91
+ rootOverride: opts.rootOverride,
92
+ taskId: opts.taskId,
93
+ baseBranchOverride: opts.baseBranchOverride,
94
+ quiet: opts.quiet,
95
+ closeUnstageOthers: opts.closeUnstageOthers,
96
+ allowPolicy: opts.allowPolicy,
97
+ });
98
+ }
99
+ finally {
100
+ try {
101
+ await execFileAsync("git", ["checkout", baseBranch], {
102
+ cwd: gitRoot,
103
+ env: gitEnv(),
104
+ });
105
+ }
106
+ catch (error) {
107
+ checkoutError = error;
108
+ }
109
+ }
110
+ if (checkoutError) {
111
+ throw new CliError({
112
+ exitCode: exitCodeForError("E_GIT"),
113
+ code: "E_GIT",
114
+ message: `Created ${closeBranch} but failed to return to ${baseBranch}; ` +
115
+ "inspect the local checkout before continuing.",
116
+ });
117
+ }
118
+ return closeBranch;
119
+ }
@@ -0,0 +1,3 @@
1
+ import type { FinishOptions } from "./finish-types.js";
2
+ export declare function cmdFinish(options: FinishOptions): Promise<number>;
3
+ //# sourceMappingURL=finish-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish-command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/finish-command.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CvE"}