agentplane 0.3.9 → 0.3.11

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 (404) hide show
  1. package/assets/AGENTS.md +4 -2
  2. package/assets/agents/CODER.json +1 -1
  3. package/assets/policy/dod.core.md +1 -1
  4. package/assets/policy/governance.md +5 -3
  5. package/assets/policy/incidents.md +19 -77
  6. package/assets/policy/workflow.branch_pr.md +2 -0
  7. package/assets/policy/workflow.direct.md +3 -1
  8. package/bin/agentplane.js +56 -1
  9. package/bin/runtime-watch.js +1 -0
  10. package/bin/stale-dist-policy.d.ts +1 -1
  11. package/bin/stale-dist-policy.js +13 -0
  12. package/dist/.build-manifest.json +462 -202
  13. package/dist/cli/bootstrap-guide.d.ts +1 -0
  14. package/dist/cli/bootstrap-guide.d.ts.map +1 -1
  15. package/dist/cli/bootstrap-guide.js +20 -1
  16. package/dist/cli/command-guide.d.ts.map +1 -1
  17. package/dist/cli/command-guide.js +2 -1
  18. package/dist/cli/command-invocations.d.ts.map +1 -1
  19. package/dist/cli/command-invocations.js +6 -1
  20. package/dist/cli/command-snippets.d.ts +2 -0
  21. package/dist/cli/command-snippets.d.ts.map +1 -1
  22. package/dist/cli/command-snippets.js +2 -0
  23. package/dist/cli/run-cli/command-catalog/core.d.ts +1 -1
  24. package/dist/cli/run-cli/command-catalog/core.d.ts.map +1 -1
  25. package/dist/cli/run-cli/command-catalog/core.js +10 -0
  26. package/dist/cli/run-cli/command-catalog/project.d.ts +1 -1
  27. package/dist/cli/run-cli/command-catalog/project.d.ts.map +1 -1
  28. package/dist/cli/run-cli/command-catalog/project.js +3 -1
  29. package/dist/cli/run-cli/command-catalog/task.d.ts +1 -1
  30. package/dist/cli/run-cli/command-catalog/task.d.ts.map +1 -1
  31. package/dist/cli/run-cli/command-catalog/task.js +10 -0
  32. package/dist/cli/run-cli/command-catalog.d.ts +1 -1
  33. package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
  34. package/dist/cli/run-cli/commands/config.d.ts.map +1 -1
  35. package/dist/cli/run-cli/commands/config.js +13 -0
  36. package/dist/cli/run-cli/commands/core/preflight.d.ts.map +1 -1
  37. package/dist/cli/run-cli/commands/core/preflight.js +44 -1
  38. package/dist/cli/run-cli.js +2 -2
  39. package/dist/cli/run-cli.test-helpers.d.ts.map +1 -1
  40. package/dist/cli/run-cli.test-helpers.js +12 -0
  41. package/dist/commands/backend.d.ts.map +1 -1
  42. package/dist/commands/backend.js +4 -0
  43. package/dist/commands/branch/cleanup-merged.d.ts +2 -0
  44. package/dist/commands/branch/cleanup-merged.d.ts.map +1 -1
  45. package/dist/commands/branch/cleanup-merged.js +132 -28
  46. package/dist/commands/branch/work-start.d.ts.map +1 -1
  47. package/dist/commands/branch/work-start.js +60 -1
  48. package/dist/commands/cleanup/merged.command.d.ts +2 -0
  49. package/dist/commands/cleanup/merged.command.d.ts.map +1 -1
  50. package/dist/commands/cleanup/merged.command.js +24 -0
  51. package/dist/commands/doctor/branch-pr.d.ts +4 -0
  52. package/dist/commands/doctor/branch-pr.d.ts.map +1 -0
  53. package/dist/commands/doctor/branch-pr.js +96 -0
  54. package/dist/commands/doctor/fixes.d.ts +5 -0
  55. package/dist/commands/doctor/fixes.d.ts.map +1 -1
  56. package/dist/commands/doctor/fixes.js +70 -0
  57. package/dist/commands/doctor.run.d.ts.map +1 -1
  58. package/dist/commands/doctor.run.js +6 -1
  59. package/dist/commands/finish.run.d.ts.map +1 -1
  60. package/dist/commands/finish.run.js +11 -0
  61. package/dist/commands/finish.spec.d.ts +11 -0
  62. package/dist/commands/finish.spec.d.ts.map +1 -1
  63. package/dist/commands/finish.spec.js +51 -0
  64. package/dist/commands/guard/impl/close-message.d.ts.map +1 -1
  65. package/dist/commands/guard/impl/close-message.js +23 -6
  66. package/dist/commands/guard/impl/commands.d.ts.map +1 -1
  67. package/dist/commands/guard/impl/commands.js +24 -2
  68. package/dist/commands/guard/impl/env.d.ts +1 -0
  69. package/dist/commands/guard/impl/env.d.ts.map +1 -1
  70. package/dist/commands/guard/impl/env.js +1 -0
  71. package/dist/commands/hooks/index.d.ts.map +1 -1
  72. package/dist/commands/hooks/index.js +98 -1
  73. package/dist/commands/incidents/advise.command.d.ts +15 -0
  74. package/dist/commands/incidents/advise.command.d.ts.map +1 -0
  75. package/dist/commands/incidents/advise.command.js +139 -0
  76. package/dist/commands/incidents/collect.command.d.ts +11 -0
  77. package/dist/commands/incidents/collect.command.d.ts.map +1 -0
  78. package/dist/commands/incidents/collect.command.js +72 -0
  79. package/dist/commands/incidents/incidents.command.d.ts +5 -0
  80. package/dist/commands/incidents/incidents.command.d.ts.map +1 -0
  81. package/dist/commands/incidents/incidents.command.js +21 -0
  82. package/dist/commands/incidents/shared.d.ts +76 -0
  83. package/dist/commands/incidents/shared.d.ts.map +1 -0
  84. package/dist/commands/incidents/shared.js +261 -0
  85. package/dist/commands/pr/check.d.ts.map +1 -1
  86. package/dist/commands/pr/check.js +249 -75
  87. package/dist/commands/pr/close-superseded.d.ts +9 -0
  88. package/dist/commands/pr/close-superseded.d.ts.map +1 -0
  89. package/dist/commands/pr/close-superseded.js +129 -0
  90. package/dist/commands/pr/close.d.ts +11 -0
  91. package/dist/commands/pr/close.d.ts.map +1 -0
  92. package/dist/commands/pr/close.js +116 -0
  93. package/dist/commands/pr/index.d.ts +2 -0
  94. package/dist/commands/pr/index.d.ts.map +1 -1
  95. package/dist/commands/pr/index.js +2 -0
  96. package/dist/commands/pr/integrate/artifacts.d.ts +7 -0
  97. package/dist/commands/pr/integrate/artifacts.d.ts.map +1 -1
  98. package/dist/commands/pr/integrate/artifacts.js +66 -1
  99. package/dist/commands/pr/integrate/cmd.d.ts.map +1 -1
  100. package/dist/commands/pr/integrate/cmd.js +20 -0
  101. package/dist/commands/pr/integrate/internal/bootstrap-guidance.d.ts +8 -0
  102. package/dist/commands/pr/integrate/internal/bootstrap-guidance.d.ts.map +1 -0
  103. package/dist/commands/pr/integrate/internal/bootstrap-guidance.js +59 -0
  104. package/dist/commands/pr/integrate/internal/finalize.d.ts.map +1 -1
  105. package/dist/commands/pr/integrate/internal/finalize.js +40 -12
  106. package/dist/commands/pr/integrate/internal/merge.d.ts +4 -0
  107. package/dist/commands/pr/integrate/internal/merge.d.ts.map +1 -1
  108. package/dist/commands/pr/integrate/internal/merge.js +59 -15
  109. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.d.ts +13 -0
  110. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.d.ts.map +1 -0
  111. package/dist/commands/pr/integrate/internal/post-integrate-bootstrap.js +25 -0
  112. package/dist/commands/pr/integrate/internal/prepare.d.ts +3 -2
  113. package/dist/commands/pr/integrate/internal/prepare.d.ts.map +1 -1
  114. package/dist/commands/pr/integrate/internal/prepare.js +107 -19
  115. package/dist/commands/pr/internal/freshness.d.ts +20 -0
  116. package/dist/commands/pr/internal/freshness.d.ts.map +1 -0
  117. package/dist/commands/pr/internal/freshness.js +50 -0
  118. package/dist/commands/pr/internal/gh-api.d.ts +6 -0
  119. package/dist/commands/pr/internal/gh-api.d.ts.map +1 -0
  120. package/dist/commands/pr/internal/gh-api.js +80 -0
  121. package/dist/commands/pr/internal/note-store.d.ts +18 -0
  122. package/dist/commands/pr/internal/note-store.d.ts.map +1 -0
  123. package/dist/commands/pr/internal/note-store.js +66 -0
  124. package/dist/commands/pr/internal/pr-paths.d.ts +13 -0
  125. package/dist/commands/pr/internal/pr-paths.d.ts.map +1 -1
  126. package/dist/commands/pr/internal/pr-paths.js +13 -0
  127. package/dist/commands/pr/internal/review-template.d.ts +24 -4
  128. package/dist/commands/pr/internal/review-template.d.ts.map +1 -1
  129. package/dist/commands/pr/internal/review-template.js +221 -33
  130. package/dist/commands/pr/internal/sync.d.ts +41 -0
  131. package/dist/commands/pr/internal/sync.d.ts.map +1 -0
  132. package/dist/commands/pr/internal/sync.js +598 -0
  133. package/dist/commands/pr/note.d.ts.map +1 -1
  134. package/dist/commands/pr/note.js +37 -4
  135. package/dist/commands/pr/open.d.ts +1 -0
  136. package/dist/commands/pr/open.d.ts.map +1 -1
  137. package/dist/commands/pr/open.js +18 -54
  138. package/dist/commands/pr/pr.command.d.ts +15 -0
  139. package/dist/commands/pr/pr.command.d.ts.map +1 -1
  140. package/dist/commands/pr/pr.command.js +124 -5
  141. package/dist/commands/pr/update.d.ts.map +1 -1
  142. package/dist/commands/pr/update.js +58 -74
  143. package/dist/commands/recipes/impl/commands/cache-prune.d.ts.map +1 -1
  144. package/dist/commands/recipes/impl/commands/cache-prune.js +14 -0
  145. package/dist/commands/recipes/impl/commands/install.js +1 -1
  146. package/dist/commands/recipes/impl/commands/list-remote.d.ts.map +1 -1
  147. package/dist/commands/recipes/impl/commands/list-remote.js +1 -0
  148. package/dist/commands/recipes/impl/commands/remove.d.ts.map +1 -1
  149. package/dist/commands/recipes/impl/commands/remove.js +9 -1
  150. package/dist/commands/release/apply.command.d.ts.map +1 -1
  151. package/dist/commands/release/apply.command.js +12 -17
  152. package/dist/commands/release/apply.preflight.d.ts.map +1 -1
  153. package/dist/commands/release/apply.preflight.js +1 -1
  154. package/dist/commands/shared/approval-requirements.d.ts +5 -7
  155. package/dist/commands/shared/approval-requirements.d.ts.map +1 -1
  156. package/dist/commands/shared/approval-requirements.js +3 -73
  157. package/dist/commands/shared/gh-transport.d.ts +16 -0
  158. package/dist/commands/shared/gh-transport.d.ts.map +1 -0
  159. package/dist/commands/shared/gh-transport.js +71 -0
  160. package/dist/commands/shared/git-diff.d.ts +3 -1
  161. package/dist/commands/shared/git-diff.d.ts.map +1 -1
  162. package/dist/commands/shared/git-diff.js +10 -2
  163. package/dist/commands/shared/git-ops.d.ts +1 -0
  164. package/dist/commands/shared/git-ops.d.ts.map +1 -1
  165. package/dist/commands/shared/git-ops.js +15 -0
  166. package/dist/commands/shared/git-worktree.d.ts +2 -0
  167. package/dist/commands/shared/git-worktree.d.ts.map +1 -1
  168. package/dist/commands/shared/git-worktree.js +22 -2
  169. package/dist/commands/shared/network-approval.d.ts +2 -0
  170. package/dist/commands/shared/network-approval.d.ts.map +1 -1
  171. package/dist/commands/shared/network-approval.js +1 -1
  172. package/dist/commands/shared/post-commit-pr-artifacts.d.ts +9 -0
  173. package/dist/commands/shared/post-commit-pr-artifacts.d.ts.map +1 -0
  174. package/dist/commands/shared/post-commit-pr-artifacts.js +22 -0
  175. package/dist/commands/shared/pr-meta.d.ts +29 -0
  176. package/dist/commands/shared/pr-meta.d.ts.map +1 -1
  177. package/dist/commands/shared/pr-meta.js +152 -3
  178. package/dist/commands/shared/task-backend.d.ts +9 -0
  179. package/dist/commands/shared/task-backend.d.ts.map +1 -1
  180. package/dist/commands/shared/task-backend.js +34 -22
  181. package/dist/commands/shared/task-local-freshness.d.ts +13 -0
  182. package/dist/commands/shared/task-local-freshness.d.ts.map +1 -0
  183. package/dist/commands/shared/task-local-freshness.js +20 -0
  184. package/dist/commands/shared/task-mutation.d.ts +2 -0
  185. package/dist/commands/shared/task-mutation.d.ts.map +1 -1
  186. package/dist/commands/shared/task-mutation.js +7 -0
  187. package/dist/commands/task/block.d.ts.map +1 -1
  188. package/dist/commands/task/block.js +1 -0
  189. package/dist/commands/task/close-duplicate.d.ts.map +1 -1
  190. package/dist/commands/task/close-duplicate.js +34 -1
  191. package/dist/commands/task/close-shared.d.ts.map +1 -1
  192. package/dist/commands/task/close-shared.js +1 -0
  193. package/dist/commands/task/derive.js +1 -1
  194. package/dist/commands/task/doc-template.d.ts.map +1 -1
  195. package/dist/commands/task/doc-template.js +7 -11
  196. package/dist/commands/task/findings-add.command.d.ts +20 -0
  197. package/dist/commands/task/findings-add.command.d.ts.map +1 -0
  198. package/dist/commands/task/findings-add.command.js +165 -0
  199. package/dist/commands/task/findings.command.d.ts +7 -0
  200. package/dist/commands/task/findings.command.d.ts.map +1 -0
  201. package/dist/commands/task/findings.command.js +20 -0
  202. package/dist/commands/task/findings.d.ts +63 -0
  203. package/dist/commands/task/findings.d.ts.map +1 -0
  204. package/dist/commands/task/findings.js +188 -0
  205. package/dist/commands/task/finish-shared.d.ts +1 -0
  206. package/dist/commands/task/finish-shared.d.ts.map +1 -1
  207. package/dist/commands/task/finish-shared.js +60 -3
  208. package/dist/commands/task/finish.d.ts +10 -0
  209. package/dist/commands/task/finish.d.ts.map +1 -1
  210. package/dist/commands/task/finish.js +143 -0
  211. package/dist/commands/task/hosted-close-pr.command.d.ts +11 -0
  212. package/dist/commands/task/hosted-close-pr.command.d.ts.map +1 -0
  213. package/dist/commands/task/hosted-close-pr.command.js +414 -0
  214. package/dist/commands/task/hosted-close.command.d.ts.map +1 -1
  215. package/dist/commands/task/hosted-close.command.js +49 -1
  216. package/dist/commands/task/hosted-merge-sync.d.ts +38 -0
  217. package/dist/commands/task/hosted-merge-sync.d.ts.map +1 -1
  218. package/dist/commands/task/hosted-merge-sync.js +249 -17
  219. package/dist/commands/task/index.d.ts +1 -0
  220. package/dist/commands/task/index.d.ts.map +1 -1
  221. package/dist/commands/task/index.js +1 -0
  222. package/dist/commands/task/new.d.ts +1 -0
  223. package/dist/commands/task/new.d.ts.map +1 -1
  224. package/dist/commands/task/new.js +140 -30
  225. package/dist/commands/task/new.spec.d.ts.map +1 -1
  226. package/dist/commands/task/new.spec.js +7 -0
  227. package/dist/commands/task/normalize.command.d.ts +2 -0
  228. package/dist/commands/task/normalize.command.d.ts.map +1 -1
  229. package/dist/commands/task/normalize.command.js +45 -0
  230. package/dist/commands/task/normalize.d.ts +2 -0
  231. package/dist/commands/task/normalize.d.ts.map +1 -1
  232. package/dist/commands/task/normalize.js +85 -8
  233. package/dist/commands/task/plan.d.ts.map +1 -1
  234. package/dist/commands/task/plan.js +7 -10
  235. package/dist/commands/task/set-status.d.ts.map +1 -1
  236. package/dist/commands/task/set-status.js +1 -0
  237. package/dist/commands/task/shared/docs.d.ts +6 -0
  238. package/dist/commands/task/shared/docs.d.ts.map +1 -1
  239. package/dist/commands/task/shared/docs.js +14 -0
  240. package/dist/commands/task/shared/transition-command.d.ts +2 -0
  241. package/dist/commands/task/shared/transition-command.d.ts.map +1 -1
  242. package/dist/commands/task/shared/transition-command.js +1 -0
  243. package/dist/commands/task/shared/transitions.d.ts.map +1 -1
  244. package/dist/commands/task/shared/transitions.js +11 -1
  245. package/dist/commands/task/shared.d.ts +1 -1
  246. package/dist/commands/task/shared.d.ts.map +1 -1
  247. package/dist/commands/task/shared.js +1 -1
  248. package/dist/commands/task/start-ready.d.ts.map +1 -1
  249. package/dist/commands/task/start-ready.js +98 -1
  250. package/dist/commands/task/start.d.ts.map +1 -1
  251. package/dist/commands/task/start.js +18 -10
  252. package/dist/commands/task/task.command.d.ts.map +1 -1
  253. package/dist/commands/task/task.command.js +4 -0
  254. package/dist/commands/task/verify-command-shared.d.ts +19 -0
  255. package/dist/commands/task/verify-command-shared.d.ts.map +1 -1
  256. package/dist/commands/task/verify-command-shared.js +152 -1
  257. package/dist/commands/task/verify-ok.command.d.ts.map +1 -1
  258. package/dist/commands/task/verify-ok.command.js +15 -2
  259. package/dist/commands/task/verify-record.d.ts +36 -0
  260. package/dist/commands/task/verify-record.d.ts.map +1 -1
  261. package/dist/commands/task/verify-record.js +193 -11
  262. package/dist/commands/task/verify-rework.command.d.ts.map +1 -1
  263. package/dist/commands/task/verify-rework.command.js +15 -2
  264. package/dist/commands/task/verify-show.command.d.ts +1 -1
  265. package/dist/commands/task/verify-show.command.d.ts.map +1 -1
  266. package/dist/commands/task/verify-show.command.js +28 -1
  267. package/dist/commands/upgrade.d.ts.map +1 -1
  268. package/dist/commands/upgrade.js +6 -1
  269. package/dist/commands/verify.run.d.ts.map +1 -1
  270. package/dist/commands/verify.run.js +12 -0
  271. package/dist/commands/verify.spec.d.ts +2 -6
  272. package/dist/commands/verify.spec.d.ts.map +1 -1
  273. package/dist/commands/verify.spec.js +30 -3
  274. package/dist/policy/engine.d.ts +3 -1
  275. package/dist/policy/engine.d.ts.map +1 -1
  276. package/dist/policy/engine.js +5 -6
  277. package/dist/policy/taxonomy.d.ts +17 -0
  278. package/dist/policy/taxonomy.d.ts.map +1 -0
  279. package/dist/policy/taxonomy.js +302 -0
  280. package/dist/policy/types.d.ts +2 -1
  281. package/dist/policy/types.d.ts.map +1 -1
  282. package/dist/runner/artifacts.d.ts.map +1 -1
  283. package/dist/runner/artifacts.js +2 -0
  284. package/dist/runner/context/base-prompts.d.ts +25 -0
  285. package/dist/runner/context/base-prompts.d.ts.map +1 -1
  286. package/dist/runner/context/base-prompts.js +182 -54
  287. package/dist/runner/context/recipe-context.d.ts.map +1 -1
  288. package/dist/runner/context/recipe-context.js +5 -0
  289. package/dist/runner/types.d.ts +12 -0
  290. package/dist/runner/types.d.ts.map +1 -1
  291. package/dist/runner/usecases/scenario-materialize-task.d.ts.map +1 -1
  292. package/dist/runner/usecases/scenario-materialize-task.js +81 -11
  293. package/dist/runner/usecases/task-run-inspect.d.ts.map +1 -1
  294. package/dist/runner/usecases/task-run-inspect.js +9 -7
  295. package/dist/runner/usecases/task-run-lifecycle-shared.d.ts.map +1 -1
  296. package/dist/runner/usecases/task-run-lifecycle-shared.js +8 -6
  297. package/dist/runner/usecases/task-run.d.ts.map +1 -1
  298. package/dist/runner/usecases/task-run.js +59 -12
  299. package/dist/runtime/approvals/index.d.ts +3 -0
  300. package/dist/runtime/approvals/index.d.ts.map +1 -0
  301. package/dist/runtime/approvals/index.js +1 -0
  302. package/dist/runtime/approvals/runtime.d.ts +12 -0
  303. package/dist/runtime/approvals/runtime.d.ts.map +1 -0
  304. package/dist/runtime/approvals/runtime.js +154 -0
  305. package/dist/runtime/approvals/types.d.ts +31 -0
  306. package/dist/runtime/approvals/types.d.ts.map +1 -0
  307. package/dist/runtime/approvals/types.js +1 -0
  308. package/dist/runtime/behavior/index.d.ts +3 -0
  309. package/dist/runtime/behavior/index.d.ts.map +1 -0
  310. package/dist/runtime/behavior/index.js +1 -0
  311. package/dist/runtime/behavior/resolve.d.ts +7 -0
  312. package/dist/runtime/behavior/resolve.d.ts.map +1 -0
  313. package/dist/runtime/behavior/resolve.js +66 -0
  314. package/dist/runtime/behavior/types.d.ts +25 -0
  315. package/dist/runtime/behavior/types.d.ts.map +1 -0
  316. package/dist/runtime/behavior/types.js +1 -0
  317. package/dist/runtime/capabilities/backend.d.ts +7 -0
  318. package/dist/runtime/capabilities/backend.d.ts.map +1 -0
  319. package/dist/runtime/capabilities/backend.js +104 -0
  320. package/dist/runtime/capabilities/index.d.ts +6 -0
  321. package/dist/runtime/capabilities/index.d.ts.map +1 -0
  322. package/dist/runtime/capabilities/index.js +4 -0
  323. package/dist/runtime/capabilities/recipe.d.ts +10 -0
  324. package/dist/runtime/capabilities/recipe.d.ts.map +1 -0
  325. package/dist/runtime/capabilities/recipe.js +123 -0
  326. package/dist/runtime/capabilities/registry.d.ts +6 -0
  327. package/dist/runtime/capabilities/registry.d.ts.map +1 -0
  328. package/dist/runtime/capabilities/registry.js +69 -0
  329. package/dist/runtime/capabilities/runner.d.ts +8 -0
  330. package/dist/runtime/capabilities/runner.d.ts.map +1 -0
  331. package/dist/runtime/capabilities/runner.js +73 -0
  332. package/dist/runtime/capabilities/types.d.ts +28 -0
  333. package/dist/runtime/capabilities/types.d.ts.map +1 -0
  334. package/dist/runtime/capabilities/types.js +1 -0
  335. package/dist/runtime/execution-profile/index.d.ts +3 -0
  336. package/dist/runtime/execution-profile/index.d.ts.map +1 -0
  337. package/dist/runtime/execution-profile/index.js +1 -0
  338. package/dist/runtime/execution-profile/resolve.d.ts +9 -0
  339. package/dist/runtime/execution-profile/resolve.d.ts.map +1 -0
  340. package/dist/runtime/execution-profile/resolve.js +80 -0
  341. package/dist/runtime/execution-profile/types.d.ts +27 -0
  342. package/dist/runtime/execution-profile/types.d.ts.map +1 -0
  343. package/dist/runtime/execution-profile/types.js +1 -0
  344. package/dist/runtime/explain/index.d.ts +3 -0
  345. package/dist/runtime/explain/index.d.ts.map +1 -0
  346. package/dist/runtime/explain/index.js +1 -0
  347. package/dist/runtime/explain/resolve.d.ts +14 -0
  348. package/dist/runtime/explain/resolve.d.ts.map +1 -0
  349. package/dist/runtime/explain/resolve.js +50 -0
  350. package/dist/runtime/explain/types.d.ts +28 -0
  351. package/dist/runtime/explain/types.d.ts.map +1 -0
  352. package/dist/runtime/explain/types.js +1 -0
  353. package/dist/runtime/harness/index.d.ts +4 -0
  354. package/dist/runtime/harness/index.d.ts.map +1 -0
  355. package/dist/runtime/harness/index.js +2 -0
  356. package/dist/runtime/harness/resolve-from-command-context.d.ts +4 -0
  357. package/dist/runtime/harness/resolve-from-command-context.d.ts.map +1 -0
  358. package/dist/runtime/harness/resolve-from-command-context.js +11 -0
  359. package/dist/runtime/harness/resolve.d.ts +13 -0
  360. package/dist/runtime/harness/resolve.d.ts.map +1 -0
  361. package/dist/runtime/harness/resolve.js +146 -0
  362. package/dist/runtime/harness/types.d.ts +65 -0
  363. package/dist/runtime/harness/types.d.ts.map +1 -0
  364. package/dist/runtime/harness/types.js +1 -0
  365. package/dist/runtime/incidents/index.d.ts +3 -0
  366. package/dist/runtime/incidents/index.d.ts.map +1 -0
  367. package/dist/runtime/incidents/index.js +1 -0
  368. package/dist/runtime/incidents/resolve.d.ts +26 -0
  369. package/dist/runtime/incidents/resolve.d.ts.map +1 -0
  370. package/dist/runtime/incidents/resolve.js +683 -0
  371. package/dist/runtime/incidents/types.d.ts +84 -0
  372. package/dist/runtime/incidents/types.d.ts.map +1 -0
  373. package/dist/runtime/incidents/types.js +1 -0
  374. package/dist/runtime/protocol/index.d.ts +3 -0
  375. package/dist/runtime/protocol/index.d.ts.map +1 -0
  376. package/dist/runtime/protocol/index.js +2 -0
  377. package/dist/runtime/protocol/resolve.d.ts +16 -0
  378. package/dist/runtime/protocol/resolve.d.ts.map +1 -0
  379. package/dist/runtime/protocol/resolve.js +36 -0
  380. package/dist/runtime/protocol/types.d.ts +36 -0
  381. package/dist/runtime/protocol/types.d.ts.map +1 -0
  382. package/dist/runtime/protocol/types.js +1 -0
  383. package/dist/runtime/task-intake/index.d.ts +3 -0
  384. package/dist/runtime/task-intake/index.d.ts.map +1 -0
  385. package/dist/runtime/task-intake/index.js +1 -0
  386. package/dist/runtime/task-intake/resolve.d.ts +48 -0
  387. package/dist/runtime/task-intake/resolve.d.ts.map +1 -0
  388. package/dist/runtime/task-intake/resolve.js +316 -0
  389. package/dist/runtime/task-intake/types.d.ts +117 -0
  390. package/dist/runtime/task-intake/types.d.ts.map +1 -0
  391. package/dist/runtime/task-intake/types.js +1 -0
  392. package/dist/shared/env.d.ts +1 -0
  393. package/dist/shared/env.d.ts.map +1 -1
  394. package/dist/shared/env.js +22 -1
  395. package/dist/shared/protected-paths.d.ts +4 -0
  396. package/dist/shared/protected-paths.d.ts.map +1 -1
  397. package/dist/shared/protected-paths.js +8 -4
  398. package/dist/usecases/context/resolve-context.d.ts +55 -6
  399. package/dist/usecases/context/resolve-context.d.ts.map +1 -1
  400. package/dist/usecases/context/resolve-context.js +96 -6
  401. package/dist/usecases/task/task-list-usecase.d.ts.map +1 -1
  402. package/dist/usecases/task/task-list-usecase.js +8 -2
  403. package/dist/usecases/task/task-new-usecase.js +4 -4
  404. package/package.json +2 -2
@@ -0,0 +1,117 @@
1
+ import type { ApprovalSettings, TaskDocVersion } from "@agentplaneorg/core";
2
+ import type { TaskBackendCapabilities, TaskData, TaskOrigin } from "../../backends/task-backend.js";
3
+ import type { BehaviorLayer } from "../behavior/index.js";
4
+ import type { AgentplaneCapabilityRegistry } from "../capabilities/index.js";
5
+ import type { ResolvedExecutionProfileRuntime } from "../execution-profile/index.js";
6
+ import type { ResolvedHarnessContract } from "../harness/index.js";
7
+ export type TaskIntakeSourceId = "task_new" | "task_create" | "recipe_scenario" | "import" | "system";
8
+ export type TaskIntakeSourceRef = {
9
+ id: TaskIntakeSourceId;
10
+ detail: string;
11
+ };
12
+ export type TaskIntakeInputKind = "text" | "constraint" | "task_reference" | "recipe_reference" | "output";
13
+ export type TaskIntakeInput = {
14
+ kind: TaskIntakeInputKind;
15
+ label?: string;
16
+ value: string;
17
+ required?: boolean;
18
+ };
19
+ export type TaskIntakePrecedence = {
20
+ behavior_order: BehaviorLayer[];
21
+ extension_layer: "recipes";
22
+ };
23
+ export type TaskIntakeRuntime = {
24
+ repo: {
25
+ git_root: string;
26
+ agentplane_dir: string;
27
+ workflow_dir: string;
28
+ };
29
+ workflow: {
30
+ mode: ResolvedHarnessContract["workflow"]["mode"];
31
+ };
32
+ backend: {
33
+ id: string;
34
+ config_path: string;
35
+ capabilities: TaskBackendCapabilities | null;
36
+ supports_generate_task_id: boolean;
37
+ supports_bulk_write: boolean;
38
+ };
39
+ task_contract: {
40
+ doc_sections: string[];
41
+ required_doc_sections: string[];
42
+ verify_required_tags: string[];
43
+ };
44
+ policy: {
45
+ approvals: Required<ApprovalSettings>;
46
+ protected_paths: ResolvedHarnessContract["policy"]["protected_paths"];
47
+ unsafe_actions_requiring_explicit_user_ok: string[];
48
+ };
49
+ execution_profile: ResolvedExecutionProfileRuntime;
50
+ capabilities: AgentplaneCapabilityRegistry;
51
+ precedence: TaskIntakePrecedence;
52
+ };
53
+ export type TaskIntakeContext = {
54
+ runtime: TaskIntakeRuntime;
55
+ source: TaskIntakeSourceRef;
56
+ requested_outcome: string;
57
+ requested_owner?: string;
58
+ requested_tags: string[];
59
+ requested_verify: string[];
60
+ requested_dependencies: string[];
61
+ parent_task_id?: string;
62
+ inputs: TaskIntakeInput[];
63
+ };
64
+ export type ClarificationQuestion = {
65
+ id: string;
66
+ question: string;
67
+ reason: string;
68
+ required: boolean;
69
+ target_field?: string;
70
+ accepted_values?: string[];
71
+ };
72
+ export type ClarificationContract = {
73
+ context: TaskIntakeContext;
74
+ status: "ready" | "needs_input";
75
+ assumptions: string[];
76
+ questions: ClarificationQuestion[];
77
+ };
78
+ export type TaskGraphDependency = {
79
+ from: string;
80
+ to: string;
81
+ kind: "depends_on";
82
+ };
83
+ export type TaskGraphDraftTask = {
84
+ draft_id: string;
85
+ title: string;
86
+ description: string;
87
+ owner: string;
88
+ priority: TaskData["priority"];
89
+ origin?: TaskOrigin | null;
90
+ tags: string[];
91
+ verify: string[];
92
+ depends_on: string[];
93
+ doc: string;
94
+ doc_version?: TaskDocVersion;
95
+ id_source?: string;
96
+ };
97
+ export type TaskGraphDraft = {
98
+ context: TaskIntakeContext;
99
+ clarification: ClarificationContract;
100
+ summary: string;
101
+ tasks: TaskGraphDraftTask[];
102
+ dependencies: TaskGraphDependency[];
103
+ warnings: string[];
104
+ };
105
+ export type TaskMaterializationEntry = {
106
+ draft_id: string;
107
+ task_id: string;
108
+ task: TaskData;
109
+ readme_path: string;
110
+ };
111
+ export type TaskMaterializationPlan = {
112
+ context: TaskIntakeContext;
113
+ summary: string;
114
+ backend: TaskIntakeRuntime["backend"];
115
+ tasks: TaskMaterializationEntry[];
116
+ };
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/task-intake/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,4 @@
1
1
  export declare function parseDotEnv(text: string): Record<string, string>;
2
+ export declare function isDotEnvLoadedKey(key: string, env?: NodeJS.ProcessEnv): boolean;
2
3
  export declare function loadDotEnv(rootDir: string): Promise<void>;
3
4
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/shared/env.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BhE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/D"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/shared/env.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BhE;AAmBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAE5F;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D"}
@@ -1,5 +1,6 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ const DOTENV_LOADED_KEYS_ENV = "AGENTPLANE_DOTENV_LOADED_KEYS";
3
4
  export function parseDotEnv(text) {
4
5
  const out = {};
5
6
  const lines = text.split(/\r?\n/u);
@@ -30,6 +31,23 @@ export function parseDotEnv(text) {
30
31
  }
31
32
  return out;
32
33
  }
34
+ function readDotEnvLoadedKeys(env = process.env) {
35
+ const raw = env[DOTENV_LOADED_KEYS_ENV]?.trim() ?? "";
36
+ if (!raw)
37
+ return new Set();
38
+ return new Set(raw
39
+ .split(",")
40
+ .map((entry) => entry.trim())
41
+ .filter(Boolean));
42
+ }
43
+ function recordDotEnvLoadedKey(key, env = process.env) {
44
+ const keys = readDotEnvLoadedKeys(env);
45
+ keys.add(key);
46
+ env[DOTENV_LOADED_KEYS_ENV] = [...keys].toSorted().join(",");
47
+ }
48
+ export function isDotEnvLoadedKey(key, env = process.env) {
49
+ return readDotEnvLoadedKeys(env).has(key);
50
+ }
33
51
  export async function loadDotEnv(rootDir) {
34
52
  const envPath = path.join(rootDir, ".env");
35
53
  let text = "";
@@ -44,6 +62,9 @@ export async function loadDotEnv(rootDir) {
44
62
  }
45
63
  const parsed = parseDotEnv(text);
46
64
  for (const [key, value] of Object.entries(parsed)) {
47
- process.env[key] ??= value;
65
+ if (process.env[key] !== undefined)
66
+ continue;
67
+ process.env[key] = value;
68
+ recordDotEnvLoadedKey(key);
48
69
  }
49
70
  }
@@ -9,6 +9,10 @@ export declare function taskArtifactPrefixes(opts: {
9
9
  workflowDir?: string;
10
10
  taskId?: string;
11
11
  }): string[];
12
+ export declare const POLICY_PATH_PREFIXES: readonly ["AGENTS.md", "CLAUDE.md", "packages/agentplane/assets/AGENTS.md", "packages/agentplane/assets/policy", ".agentplane/policy", ".agentplane/agents"];
13
+ export declare const CONFIG_PATH_PREFIXES: readonly [".agentplane/config.json", ".agentplane/backends"];
14
+ export declare const HOOK_PATH_PREFIXES: readonly ["lefthook.yml"];
15
+ export declare const CI_PATH_PREFIXES: readonly [".github/workflows", ".github/actions"];
12
16
  export declare function protectedPathAllowPrefixes(opts: {
13
17
  tasksPath: string;
14
18
  workflowDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"protected-paths.d.ts","sourceRoot":"","sources":["../../src/shared/protected-paths.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,EAAE,CAOX;AAYD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,EAAE,CAkBX;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAkBvF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,iBAAiB,GAAG,IAAI,CAsC3B"}
1
+ {"version":3,"file":"protected-paths.d.ts","sourceRoot":"","sources":["../../src/shared/protected-paths.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,EAAE,CAOX;AAED,eAAO,MAAM,oBAAoB,8JAOvB,CAAC;AACX,eAAO,MAAM,oBAAoB,8DAA+D,CAAC;AACjG,eAAO,MAAM,kBAAkB,2BAA4B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,mDAAoD,CAAC;AAElF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,EAAE,CAkBX;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAkBvF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,iBAAiB,GAAG,IAAI,CAwC3B"}
@@ -16,15 +16,17 @@ export function taskArtifactPrefixes(opts) {
16
16
  out.add(workflowPrefix);
17
17
  return [...out].toSorted((a, b) => a.localeCompare(b));
18
18
  }
19
- const POLICY_PATH_PREFIXES = [
19
+ export const POLICY_PATH_PREFIXES = [
20
20
  "AGENTS.md",
21
21
  "CLAUDE.md",
22
22
  "packages/agentplane/assets/AGENTS.md",
23
+ "packages/agentplane/assets/policy",
24
+ ".agentplane/policy",
23
25
  ".agentplane/agents",
24
26
  ];
25
- const CONFIG_PATH_PREFIXES = [".agentplane/config.json", ".agentplane/backends"];
26
- const HOOK_PATH_PREFIXES = ["lefthook.yml"];
27
- const CI_PATH_PREFIXES = [".github/workflows", ".github/actions"];
27
+ export const CONFIG_PATH_PREFIXES = [".agentplane/config.json", ".agentplane/backends"];
28
+ export const HOOK_PATH_PREFIXES = ["lefthook.yml"];
29
+ export const CI_PATH_PREFIXES = [".github/workflows", ".github/actions"];
28
30
  export function protectedPathAllowPrefixes(opts) {
29
31
  const out = new Set();
30
32
  if (opts.allowTasks) {
@@ -83,6 +85,8 @@ export function protectedPathKindForFile(opts) {
83
85
  if (p === "AGENTS.md" ||
84
86
  p === "CLAUDE.md" ||
85
87
  p === "packages/agentplane/assets/AGENTS.md" ||
88
+ gitPathIsUnderPrefix(p, "packages/agentplane/assets/policy") ||
89
+ gitPathIsUnderPrefix(p, ".agentplane/policy") ||
86
90
  gitPathIsUnderPrefix(p, ".agentplane/agents")) {
87
91
  return "policy";
88
92
  }
@@ -2,18 +2,67 @@ import type { AgentplaneConfig, ResolvedProject } from "@agentplaneorg/core";
2
2
  import type { Adapters } from "../../adapters/index.js";
3
3
  import { type CommandContext } from "../../commands/shared/task-backend.js";
4
4
  import { PolicyEngine } from "../../policy/engine.js";
5
- export type UsecaseContext = {
5
+ import { type ApprovalRuntime } from "../../runtime/approvals/index.js";
6
+ import { type AgentplaneCapabilityRegistry } from "../../runtime/capabilities/index.js";
7
+ import { type ResolvedExecutionProfileRuntime } from "../../runtime/execution-profile/index.js";
8
+ import { type FrameworkExplainPayload } from "../../runtime/explain/index.js";
9
+ import { type ResolvedHarnessContract } from "../../runtime/harness/index.js";
10
+ import { type FrameworkProtocolSurface } from "../../runtime/protocol/index.js";
11
+ import { type TaskIntakeRuntime } from "../../runtime/task-intake/index.js";
12
+ export type AgentplaneRepositoryContext = {
13
+ git_root: string;
14
+ agentplane_dir: string;
15
+ workflow_dir: string;
16
+ };
17
+ export type AgentplaneBackendContext = {
18
+ id: string;
19
+ config_path: string;
20
+ capabilities: CommandContext["taskBackend"]["capabilities"] | null;
21
+ task_backend: CommandContext["taskBackend"];
22
+ };
23
+ export type ReadOnlyUsecaseContext = {
6
24
  command: CommandContext;
7
- adapters: Adapters;
25
+ project: CommandContext["resolvedProject"];
26
+ repo: AgentplaneRepositoryContext;
27
+ config: CommandContext["config"];
28
+ backend: AgentplaneBackendContext;
29
+ harness: ResolvedHarnessContract;
30
+ capabilities: AgentplaneCapabilityRegistry;
31
+ execution: ResolvedHarnessContract["execution"];
32
+ executionProfile: ResolvedExecutionProfileRuntime;
33
+ taskIntake: TaskIntakeRuntime;
34
+ frameworkExplain: FrameworkExplainPayload;
35
+ frameworkProtocol: FrameworkProtocolSurface;
36
+ approvals: ResolvedHarnessContract["policy"]["approvals"];
8
37
  policy: PolicyEngine;
38
+ approvalRuntime: ApprovalRuntime;
9
39
  };
10
- export type ReadOnlyUsecaseContext = Pick<UsecaseContext, "command">;
11
- export declare function resolveContext(opts: {
40
+ export type UsecaseContext = ReadOnlyUsecaseContext & {
41
+ adapters: Adapters;
42
+ };
43
+ export type AgentplaneReadOnlyExecutionContext = ReadOnlyUsecaseContext;
44
+ export type AgentplaneExecutionContext = UsecaseContext;
45
+ export declare function resolveCommandContext(opts: {
12
46
  cwd: string;
13
47
  rootOverride?: string | null;
14
48
  resolvedProject?: ResolvedProject;
15
49
  config?: AgentplaneConfig;
16
50
  }): Promise<CommandContext>;
17
- export declare function makeReadOnlyUsecaseContext(command: CommandContext): ReadOnlyUsecaseContext;
18
- export declare function makeUsecaseContext(command: CommandContext): UsecaseContext;
51
+ export declare function resolveContext(opts: {
52
+ cwd: string;
53
+ rootOverride?: string | null;
54
+ resolvedProject?: ResolvedProject;
55
+ config?: AgentplaneConfig;
56
+ }): Promise<ReadOnlyUsecaseContext>;
57
+ export declare const resolveReadOnlyExecutionContext: typeof resolveContext;
58
+ export declare function resolveExecutionContext(opts: {
59
+ cwd: string;
60
+ rootOverride?: string | null;
61
+ resolvedProject?: ResolvedProject;
62
+ config?: AgentplaneConfig;
63
+ }): Promise<AgentplaneExecutionContext>;
64
+ export declare function makeReadOnlyUsecaseContext(command: CommandContext): Promise<ReadOnlyUsecaseContext>;
65
+ export declare function makeUsecaseContext(command: CommandContext): Promise<UsecaseContext>;
66
+ export declare const makeReadOnlyExecutionContext: typeof makeReadOnlyUsecaseContext;
67
+ export declare const makeExecutionContext: typeof makeUsecaseContext;
19
68
  //# sourceMappingURL=resolve-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-context.d.ts","sourceRoot":"","sources":["../../../src/usecases/context/resolve-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAErE,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,OAAO,CAAC,cAAc,CAAC,CAO1B;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,GAAG,sBAAsB,CAE1F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAM1E"}
1
+ {"version":3,"file":"resolve-context.d.ts","sourceRoot":"","sources":["../../../src/usecases/context/resolve-context.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,16 @@
1
1
  import { buildAdapters } from "../../adapters/index.js";
2
2
  import { loadCommandContext } from "../../commands/shared/task-backend.js";
3
3
  import { PolicyEngine } from "../../policy/engine.js";
4
- export async function resolveContext(opts) {
4
+ import { createApprovalRuntime } from "../../runtime/approvals/index.js";
5
+ import { resolveTaskBackendCapabilityRegistry, } from "../../runtime/capabilities/index.js";
6
+ import { resolveExecutionProfileRuntime, } from "../../runtime/execution-profile/index.js";
7
+ import { buildFrameworkExplainPayload, } from "../../runtime/explain/index.js";
8
+ import { resolveHarnessFromCommandContext, } from "../../runtime/harness/index.js";
9
+ import { buildFrameworkProtocolSurface, } from "../../runtime/protocol/index.js";
10
+ import { createTaskIntakeRuntime, } from "../../runtime/task-intake/index.js";
11
+ const READ_ONLY_CONTEXT_CACHE = new WeakMap();
12
+ const USECASE_CONTEXT_CACHE = new WeakMap();
13
+ export async function resolveCommandContext(opts) {
5
14
  return await loadCommandContext({
6
15
  cwd: opts.cwd,
7
16
  rootOverride: opts.rootOverride ?? null,
@@ -9,13 +18,94 @@ export async function resolveContext(opts) {
9
18
  config: opts.config,
10
19
  });
11
20
  }
12
- export function makeReadOnlyUsecaseContext(command) {
13
- return { command };
21
+ export async function resolveContext(opts) {
22
+ const command = await resolveCommandContext(opts);
23
+ return await makeReadOnlyUsecaseContext(command);
24
+ }
25
+ export const resolveReadOnlyExecutionContext = resolveContext;
26
+ export async function resolveExecutionContext(opts) {
27
+ const command = await resolveCommandContext(opts);
28
+ return await makeUsecaseContext(command);
29
+ }
30
+ export async function makeReadOnlyUsecaseContext(command) {
31
+ let cached = READ_ONLY_CONTEXT_CACHE.get(command);
32
+ if (!cached) {
33
+ cached = buildReadOnlyUsecaseContext(command);
34
+ READ_ONLY_CONTEXT_CACHE.set(command, cached);
35
+ }
36
+ return await cached;
37
+ }
38
+ export async function makeUsecaseContext(command) {
39
+ let cached = USECASE_CONTEXT_CACHE.get(command);
40
+ if (!cached) {
41
+ cached = buildUsecaseContext(command);
42
+ USECASE_CONTEXT_CACHE.set(command, cached);
43
+ }
44
+ return await cached;
45
+ }
46
+ export const makeReadOnlyExecutionContext = makeReadOnlyUsecaseContext;
47
+ export const makeExecutionContext = makeUsecaseContext;
48
+ async function buildReadOnlyUsecaseContext(command) {
49
+ const harness = await resolveHarnessFromCommandContext(command);
50
+ const policy = new PolicyEngine();
51
+ const executionProfile = resolveExecutionProfileRuntime(command.config);
52
+ const capabilities = resolveTaskBackendCapabilityRegistry({
53
+ backend_id: command.backendId,
54
+ capabilities: command.taskBackend.capabilities ?? null,
55
+ });
56
+ const taskIntake = createTaskIntakeRuntime({
57
+ repo: {
58
+ git_root: command.resolvedProject.gitRoot,
59
+ agentplane_dir: command.resolvedProject.agentplaneDir,
60
+ workflow_dir: command.config.paths.workflow_dir,
61
+ },
62
+ backend: {
63
+ id: command.backendId,
64
+ config_path: command.backendConfigPath,
65
+ capabilities: command.taskBackend.capabilities ?? null,
66
+ supports_generate_task_id: typeof command.taskBackend.generateTaskId === "function",
67
+ supports_bulk_write: typeof command.taskBackend.writeTasks === "function",
68
+ },
69
+ harness,
70
+ execution_profile: executionProfile,
71
+ capabilities,
72
+ });
73
+ const frameworkExplain = buildFrameworkExplainPayload({
74
+ harness,
75
+ capabilities,
76
+ execution_profile: executionProfile,
77
+ task_intake: taskIntake,
78
+ });
79
+ return {
80
+ command,
81
+ project: command.resolvedProject,
82
+ repo: {
83
+ git_root: command.resolvedProject.gitRoot,
84
+ agentplane_dir: command.resolvedProject.agentplaneDir,
85
+ workflow_dir: command.config.paths.workflow_dir,
86
+ },
87
+ config: command.config,
88
+ backend: {
89
+ id: command.backendId,
90
+ config_path: command.backendConfigPath,
91
+ capabilities: command.taskBackend.capabilities ?? null,
92
+ task_backend: command.taskBackend,
93
+ },
94
+ harness,
95
+ capabilities,
96
+ execution: harness.execution,
97
+ executionProfile,
98
+ taskIntake,
99
+ frameworkExplain,
100
+ frameworkProtocol: buildFrameworkProtocolSurface({ explain: frameworkExplain }),
101
+ approvals: harness.policy.approvals,
102
+ policy,
103
+ approvalRuntime: createApprovalRuntime({ config: command.config, policy }),
104
+ };
14
105
  }
15
- export function makeUsecaseContext(command) {
106
+ async function buildUsecaseContext(command) {
16
107
  return {
17
- ...makeReadOnlyUsecaseContext(command),
108
+ ...(await makeReadOnlyUsecaseContext(command)),
18
109
  adapters: buildAdapters(command),
19
- policy: new PolicyEngine(),
20
110
  };
21
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"task-list-usecase.d.ts","sourceRoot":"","sources":["../../../src/usecases/task/task-list-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACvD,GAAG,OAAO,CAAC,MAAM,CAAC,CASlB"}
1
+ {"version":3,"file":"task-list-usecase.d.ts","sourceRoot":"","sources":["../../../src/usecases/task/task-list-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACvD,GAAG,OAAO,CAAC,MAAM,CAAC,CAelB"}
@@ -1,9 +1,15 @@
1
1
  import { cmdTaskList } from "../../commands/task/list.js";
2
2
  import { makeReadOnlyUsecaseContext } from "../context/resolve-context.js";
3
3
  export async function taskListUsecase(opts) {
4
- const uctx = makeReadOnlyUsecaseContext(opts.command);
4
+ const execution = await makeReadOnlyUsecaseContext(opts.command);
5
+ void execution.policy.evaluate({
6
+ action: "task_list",
7
+ config: execution.config,
8
+ taskId: "",
9
+ git: { stagedPaths: [] },
10
+ });
5
11
  return await cmdTaskList({
6
- ctx: uctx.command,
12
+ ctx: execution.command,
7
13
  cwd: opts.cli.cwd,
8
14
  rootOverride: opts.cli.rootOverride,
9
15
  filters: opts.filters,
@@ -1,15 +1,15 @@
1
1
  import { runTaskNewParsed } from "../../commands/task/new.js";
2
2
  import { makeUsecaseContext } from "../context/resolve-context.js";
3
3
  export async function taskNewUsecase(opts) {
4
- const uctx = makeUsecaseContext(opts.command);
5
- void uctx.policy.evaluate({
4
+ const execution = await makeUsecaseContext(opts.command);
5
+ void execution.policy.evaluate({
6
6
  action: "task_new",
7
- config: uctx.command.config,
7
+ config: execution.config,
8
8
  taskId: "",
9
9
  git: { stagedPaths: [] },
10
10
  });
11
11
  return await runTaskNewParsed({
12
- ctx: uctx.command,
12
+ ctx: execution.command,
13
13
  cwd: opts.cli.cwd,
14
14
  rootOverride: opts.cli.rootOverride,
15
15
  parsed: opts.parsed,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentplane",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "description": "Agent Plane CLI for task workflows, recipes, and project automation.",
5
5
  "keywords": [
6
6
  "agentplane",
@@ -55,7 +55,7 @@
55
55
  "prepublishOnly": "node ../../scripts/enforce-github-publish.mjs && npm run prepack"
56
56
  },
57
57
  "dependencies": {
58
- "@agentplaneorg/core": "0.3.9",
58
+ "@agentplaneorg/core": "0.3.11",
59
59
  "yauzl": "^2.10.0"
60
60
  },
61
61
  "devDependencies": {