@unbrained/pm-cli 2026.7.1 → 2026.7.2

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 (563) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cli/commander-usage.d.ts +2 -0
  3. package/dist/cli/commander-usage.js +58 -47
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.js +102 -79
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +278 -243
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.js +89 -68
  10. package/dist/cli/commands/close-many.js.map +1 -1
  11. package/dist/cli/commands/close.js +157 -129
  12. package/dist/cli/commands/close.js.map +1 -1
  13. package/dist/cli/commands/comments-audit.js +50 -42
  14. package/dist/cli/commands/comments-audit.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +2 -0
  16. package/dist/cli/commands/config.js +443 -879
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/context.js +365 -287
  19. package/dist/cli/commands/context.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +352 -238
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/dedupe-audit.js +46 -39
  23. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  24. package/dist/cli/commands/dedupe-merge.js +88 -69
  25. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  26. package/dist/cli/commands/get.js +114 -81
  27. package/dist/cli/commands/get.js.map +1 -1
  28. package/dist/cli/commands/health.d.ts +17 -0
  29. package/dist/cli/commands/health.js +446 -307
  30. package/dist/cli/commands/health.js.map +1 -1
  31. package/dist/cli/commands/history-compact.js +209 -140
  32. package/dist/cli/commands/history-compact.js.map +1 -1
  33. package/dist/cli/commands/history-redact.js +162 -119
  34. package/dist/cli/commands/history-redact.js.map +1 -1
  35. package/dist/cli/commands/history-repair.js +120 -85
  36. package/dist/cli/commands/history-repair.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +8 -2
  38. package/dist/cli/commands/init.js +263 -162
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.js +152 -102
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/next.js +49 -32
  43. package/dist/cli/commands/next.js.map +1 -1
  44. package/dist/cli/commands/plan.js +373 -298
  45. package/dist/cli/commands/plan.js.map +1 -1
  46. package/dist/cli/commands/recurrence-parsers.js +43 -25
  47. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  48. package/dist/cli/commands/reindex.d.ts +21 -5
  49. package/dist/cli/commands/reindex.js +345 -205
  50. package/dist/cli/commands/reindex.js.map +1 -1
  51. package/dist/cli/commands/restore.d.ts +8 -7
  52. package/dist/cli/commands/restore.js +105 -69
  53. package/dist/cli/commands/restore.js.map +1 -1
  54. package/dist/cli/commands/schema.js +33 -30
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +10 -2
  57. package/dist/cli/commands/search.js +503 -470
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/telemetry.js +98 -87
  60. package/dist/cli/commands/telemetry.js.map +1 -1
  61. package/dist/cli/commands/test-all.js +237 -168
  62. package/dist/cli/commands/test-all.js.map +1 -1
  63. package/dist/cli/commands/test.d.ts +6 -5
  64. package/dist/cli/commands/test.js +424 -344
  65. package/dist/cli/commands/test.js.map +1 -1
  66. package/dist/cli/commands/update-many.js +57 -42
  67. package/dist/cli/commands/update-many.js.map +1 -1
  68. package/dist/cli/commands/update.d.ts +1 -1
  69. package/dist/cli/commands/update.js +738 -671
  70. package/dist/cli/commands/update.js.map +1 -1
  71. package/dist/cli/commands/validate.d.ts +18 -1
  72. package/dist/cli/commands/validate.js +466 -343
  73. package/dist/cli/commands/validate.js.map +1 -1
  74. package/dist/cli/error-guidance.js +399 -357
  75. package/dist/cli/error-guidance.js.map +1 -1
  76. package/dist/cli/main.d.ts +47 -0
  77. package/dist/cli/main.js +428 -341
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migration-gates.js +22 -45
  80. package/dist/cli/migration-gates.js.map +1 -1
  81. package/dist/cli/register-list-query.js +94 -105
  82. package/dist/cli/register-list-query.js.map +1 -1
  83. package/dist/cli/register-mutation.js +400 -416
  84. package/dist/cli/register-mutation.js.map +1 -1
  85. package/dist/cli/register-operations.js +86 -66
  86. package/dist/cli/register-operations.js.map +1 -1
  87. package/dist/cli/register-setup.js +120 -101
  88. package/dist/cli/register-setup.js.map +1 -1
  89. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
  90. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  91. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
  92. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
  94. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  95. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
  96. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
  97. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
  98. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
  102. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
  104. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  105. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
  109. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
  113. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
  115. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
  117. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
  119. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
  121. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  122. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
  123. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
  125. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
  127. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
  129. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
  131. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  134. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
  140. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  141. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
  143. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
  144. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
  146. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
  148. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
  150. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
  151. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
  153. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
  154. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
  156. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
  163. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
  166. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
  167. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
  168. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
  170. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
  171. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
  173. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  174. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
  175. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
  176. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
  178. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
  179. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
  181. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
  182. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  183. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
  184. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
  186. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
  189. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
  191. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
  192. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
  193. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
  195. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
  197. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
  199. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
  201. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  202. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
  203. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
  205. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
  206. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
  207. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
  209. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  210. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
  213. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
  214. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
  215. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
  216. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  217. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
  218. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
  220. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  221. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
  222. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
  223. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  224. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  225. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  226. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  227. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
  228. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
  229. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
  230. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
  232. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  233. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
  234. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
  235. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
  236. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  237. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
  238. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
  239. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
  240. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
  241. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
  242. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
  243. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
  244. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
  245. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
  246. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
  247. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
  248. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
  249. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
  250. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
  251. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
  252. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
  253. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
  254. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
  256. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
  258. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  259. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
  260. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  261. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  262. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
  263. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
  264. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
  266. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  267. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  268. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
  269. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
  270. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
  272. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
  274. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  275. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
  276. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
  277. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
  278. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
  279. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
  280. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  281. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
  282. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  283. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
  284. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
  285. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
  286. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  287. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
  288. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
  290. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
  291. package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
  292. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
  294. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
  296. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
  298. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
  300. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
  302. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
  304. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
  306. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
  308. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  309. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  310. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  311. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
  312. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
  313. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
  314. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
  315. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
  316. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
  317. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
  318. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  319. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
  320. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
  322. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
  323. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  324. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  326. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  327. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
  328. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
  330. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  331. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  332. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
  333. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
  334. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
  335. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
  336. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
  338. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
  339. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
  340. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
  342. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  343. package/dist/cli-bundle/main.js +945 -812
  344. package/dist/cli-bundle/main.js.map +3 -3
  345. package/dist/core/config/nested-settings.js +89 -67
  346. package/dist/core/config/nested-settings.js.map +1 -1
  347. package/dist/core/governance/metadata-coverage.js +20 -28
  348. package/dist/core/governance/metadata-coverage.js.map +1 -1
  349. package/dist/core/history/drift-scan.js +93 -81
  350. package/dist/core/history/drift-scan.js.map +1 -1
  351. package/dist/core/item/item-type-definition.js +14 -14
  352. package/dist/core/item/item-type-definition.js.map +1 -1
  353. package/dist/core/item/type-registry.js +87 -82
  354. package/dist/core/item/type-registry.js.map +1 -1
  355. package/dist/core/output/mutation-projection.js +42 -26
  356. package/dist/core/output/mutation-projection.js.map +1 -1
  357. package/dist/core/schema/runtime-schema.js +34 -28
  358. package/dist/core/schema/runtime-schema.js.map +1 -1
  359. package/dist/core/search/semantic-defaults.js +64 -37
  360. package/dist/core/search/semantic-defaults.js.map +1 -1
  361. package/dist/core/search/vector-stores.js +32 -17
  362. package/dist/core/search/vector-stores.js.map +1 -1
  363. package/dist/core/sentry/helpers.js +31 -28
  364. package/dist/core/sentry/helpers.js.map +1 -1
  365. package/dist/core/sentry/instrument.js +54 -43
  366. package/dist/core/sentry/instrument.js.map +1 -1
  367. package/dist/core/store/front-matter-cache.js +239 -153
  368. package/dist/core/store/front-matter-cache.js.map +1 -1
  369. package/dist/core/store/item-store.js +33 -26
  370. package/dist/core/store/item-store.js.map +1 -1
  371. package/dist/core/store/settings.js +247 -203
  372. package/dist/core/store/settings.js.map +1 -1
  373. package/dist/core/test/background-runs.js +189 -160
  374. package/dist/core/test/background-runs.js.map +1 -1
  375. package/package.json +2 -2
  376. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  377. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  378. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  379. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  380. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  381. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-4DSGXSBL.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  394. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  396. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  400. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-UYUYDGIB.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  411. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  413. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  414. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  415. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  416. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  417. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  418. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  419. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  420. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  421. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  422. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  423. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  424. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  425. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  426. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  427. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  428. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  429. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  430. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  431. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  432. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  433. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  434. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  435. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  437. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  439. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  440. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  441. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  442. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  443. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  444. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  445. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  446. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  447. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  448. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  450. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  451. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  452. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  453. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  454. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  455. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  456. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  457. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  458. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-CUC4JY3U.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
@@ -1,26 +1,26 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="29e74621-056d-50a2-8168-18b5c3a20a97")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ef3dc07a-8c97-52e0-9665-6d7daf701594")}catch(e){}}();
3
3
  import {
4
4
  runCreate
5
- } from "./chunk-4XOIEKSD.js";
6
- import "./chunk-EJUDVUYZ.js";
7
- import "./chunk-ZRP4VG5U.js";
8
- import "./chunk-N74UMG5H.js";
9
- import "./chunk-HZZEHPRG.js";
5
+ } from "./chunk-RM37OPYK.js";
6
+ import "./chunk-KCO2EAN5.js";
7
+ import "./chunk-LRKMWUUV.js";
8
+ import "./chunk-KLXF7NCC.js";
9
+ import "./chunk-QH3FSKRJ.js";
10
10
  import {
11
11
  splitCommaList
12
12
  } from "./chunk-P4SESZGT.js";
13
- import "./chunk-MAUKX7JC.js";
14
- import "./chunk-NWMZWYYB.js";
13
+ import "./chunk-ZNT7KEWE.js";
14
+ import "./chunk-2KWL5NPW.js";
15
15
  import {
16
16
  locateItem,
17
17
  mutateItem,
18
18
  readLocatedItem
19
- } from "./chunk-JSU5P7VS.js";
20
- import "./chunk-QCWF6IYD.js";
19
+ } from "./chunk-NRZS637N.js";
20
+ import "./chunk-KN3URLKS.js";
21
21
  import {
22
22
  nowIso
23
- } from "./chunk-AXIDKKAT.js";
23
+ } from "./chunk-K2VYLVX4.js";
24
24
  import {
25
25
  EXIT_CODE,
26
26
  PLAN_HARNESS_VALUES,
@@ -35,7 +35,7 @@ import {
35
35
  resolveItemTypeRegistry,
36
36
  resolvePmRoot,
37
37
  resolveTypeName
38
- } from "./chunk-7R4QEMZZ.js";
38
+ } from "./chunk-I66WE2HE.js";
39
39
 
40
40
  // dist/cli/commands/plan.js
41
41
  var PLAN_SUBCOMMANDS = [
@@ -459,6 +459,119 @@ async function readPlanItem(ctx, id) {
459
459
  ensurePlanItem(loaded.document.metadata);
460
460
  return { document: loaded.document, itemId: located.id };
461
461
  }
462
+ function buildPlanCreateDependencies(options) {
463
+ const deps = [];
464
+ if (options.parent) {
465
+ deps.push(`id=${options.parent.trim()},kind=parent`);
466
+ }
467
+ for (const ref of toArray(options.related))
468
+ deps.push(`id=${ref},kind=related`);
469
+ for (const ref of toArray(options.blocks))
470
+ deps.push(`id=${ref},kind=blocks`);
471
+ for (const ref of toArray(options.blockedBy))
472
+ deps.push(`id=${ref},kind=blocked_by`);
473
+ return deps.length > 0 ? deps : void 0;
474
+ }
475
+ function buildInitialValidation(options) {
476
+ const text = options.validationText?.trim();
477
+ const command = options.validationCommand?.trim();
478
+ const expected = options.validationExpected?.trim();
479
+ if (!text && !command && !expected) {
480
+ return void 0;
481
+ }
482
+ return {
483
+ text: text || command || "Validation check",
484
+ command: command || void 0,
485
+ expected: expected || void 0
486
+ };
487
+ }
488
+ function hasPlanStepDetailOptions(options) {
489
+ return Boolean(options.stepBody?.trim()) || Boolean(options.stepOwner?.trim()) || Boolean(options.stepStatus?.trim()) || Boolean(options.stepEvidence?.trim()) || Boolean(options.stepBlockedReason?.trim()) || Boolean(options.stepReplacement?.trim()) || toArray(options.dependsOn).length > 0 || toArray(options.link).length > 0 || toSpecArray(options.file).length > 0 || toSpecArray(options.test).length > 0 || toSpecArray(options.doc).length > 0;
490
+ }
491
+ function resolveInitialStepSeed(options) {
492
+ const stepTitleFlag = options.stepTitle?.trim() || void 0;
493
+ const repeatedStepTitles = toOrderedStepTitles(options.step);
494
+ const templateSteps = options.template?.trim() ? resolvePlanTemplateSteps(options.template) : [];
495
+ return {
496
+ repeatedStepTitles,
497
+ stepTitleFlag,
498
+ stepTitles: [
499
+ ...stepTitleFlag ? [stepTitleFlag] : [],
500
+ ...repeatedStepTitles,
501
+ ...templateSteps.map((step) => step.title)
502
+ ],
503
+ templateSteps
504
+ };
505
+ }
506
+ function assertInitialStepSeedAllowed(seed, hasPerStepDetailOptions) {
507
+ if ((seed.stepTitleFlag || seed.repeatedStepTitles.length > 0) && seed.templateSteps.length > 0) {
508
+ throw new PmCliError("pm plan create --template cannot be combined with --step-title or --step; choose one step seeding source", EXIT_CODE.USAGE, {
509
+ code: "ambiguous_option_combination",
510
+ examples: [
511
+ `pm plan create --title "Fix login crash" --template ${PLAN_TEMPLATE_NAMES[0]}`,
512
+ 'pm plan create --title "Custom plan" --step "Read the code" --step "Write the fix"'
513
+ ]
514
+ });
515
+ }
516
+ if (seed.stepTitles.length > 1 && hasPerStepDetailOptions) {
517
+ throw new PmCliError("pm plan create per-step options apply to a single initial step; with multiple --step values create the plan first, then refine steps individually", EXIT_CODE.USAGE, {
518
+ code: "ambiguous_option_combination",
519
+ examples: [
520
+ 'pm plan create --title "Execution plan" --step "Read the code" --step "Write the fix"',
521
+ 'pm plan update-step <plan-id> plan-step-001 --step-body "Inspect retry path"'
522
+ ]
523
+ });
524
+ }
525
+ }
526
+ function buildSingleInitialStep(options, title) {
527
+ const status = asStepStatus(options.stepStatus, "pending");
528
+ const linkedItems = buildLinkInputs(options, "depends_on");
529
+ const files = toSpecArray(options.file).map(parseStepFile);
530
+ const tests = toSpecArray(options.test).map(parseStepTest);
531
+ const docs = toSpecArray(options.doc).map(parseStepDoc);
532
+ const now = nowIso();
533
+ return {
534
+ id: "plan-step-001",
535
+ order: 1,
536
+ title,
537
+ body: options.stepBody?.trim() || void 0,
538
+ status,
539
+ owner: options.stepOwner?.trim() || void 0,
540
+ evidence: options.stepEvidence?.trim() || void 0,
541
+ blocked_reason: status === "blocked" ? options.stepBlockedReason?.trim() || "" : void 0,
542
+ linked_items: linkedItems.length > 0 ? linkedItems : void 0,
543
+ files: files.length > 0 ? files : void 0,
544
+ tests: tests.length > 0 ? tests : void 0,
545
+ docs: docs.length > 0 ? docs : void 0,
546
+ created_at: now,
547
+ updated_at: now,
548
+ completed_at: status === "completed" ? now : void 0
549
+ };
550
+ }
551
+ function buildInitialSteps(options) {
552
+ const seed = resolveInitialStepSeed(options);
553
+ const hasDetailOptions = hasPlanStepDetailOptions(options);
554
+ assertInitialStepSeedAllowed(seed, hasDetailOptions);
555
+ if (seed.stepTitles.length === 0) {
556
+ return { steps: [], hasPerStepDetailOptions: hasDetailOptions };
557
+ }
558
+ if (seed.stepTitles.length === 1) {
559
+ return { steps: [buildSingleInitialStep(options, seed.stepTitles[0])], hasPerStepDetailOptions: hasDetailOptions };
560
+ }
561
+ const now = nowIso();
562
+ return {
563
+ steps: seed.stepTitles.map((stepTitle, index) => ({
564
+ id: `${STEP_ID_PREFIX}${String(index + 1).padStart(3, "0")}`,
565
+ order: index + 1,
566
+ title: stepTitle,
567
+ body: seed.templateSteps[index]?.body,
568
+ status: "pending",
569
+ created_at: now,
570
+ updated_at: now
571
+ })),
572
+ hasPerStepDetailOptions: hasDetailOptions
573
+ };
574
+ }
462
575
  async function planCreate(options, global, ctx) {
463
576
  const title = options.title?.trim();
464
577
  if (!title) {
@@ -470,19 +583,6 @@ async function planCreate(options, global, ctx) {
470
583
  const mode = asPlanMode(options.mode, DEFAULT_PLAN_MODE);
471
584
  const harness = asHarness(options.harness);
472
585
  const fromSearch = options.fromSearch?.trim();
473
- const related = toArray(options.related);
474
- const blocks = toArray(options.blocks);
475
- const blockedBy = toArray(options.blockedBy);
476
- const deps = [];
477
- if (options.parent) {
478
- deps.push(`id=${options.parent.trim()},kind=parent`);
479
- }
480
- for (const ref of related)
481
- deps.push(`id=${ref},kind=related`);
482
- for (const ref of blocks)
483
- deps.push(`id=${ref},kind=blocks`);
484
- for (const ref of blockedBy)
485
- deps.push(`id=${ref},kind=blocked_by`);
486
586
  const description = options.description?.trim() ?? options.scope?.trim() ?? title;
487
587
  const createOptions = {
488
588
  title,
@@ -492,7 +592,7 @@ async function planCreate(options, global, ctx) {
492
592
  tags: options.tags,
493
593
  priority: options.priority,
494
594
  parent: options.parent,
495
- dep: deps.length > 0 ? deps : void 0,
595
+ dep: buildPlanCreateDependencies(options),
496
596
  author: options.author,
497
597
  message: options.message ?? (fromSearch ? `plan create (search: ${fromSearch})` : `plan create`)
498
598
  };
@@ -526,78 +626,8 @@ async function planCreate(options, global, ctx) {
526
626
  });
527
627
  let finalMetadata = seedResult.item;
528
628
  let initialStep;
529
- const initialValidationText = options.validationText?.trim();
530
- const initialValidationCommand = options.validationCommand?.trim();
531
- const initialValidationExpected = options.validationExpected?.trim();
532
- const initialValidation = initialValidationText || initialValidationCommand || initialValidationExpected ? {
533
- text: initialValidationText || initialValidationCommand || "Validation check",
534
- command: initialValidationCommand || void 0,
535
- expected: initialValidationExpected || void 0
536
- } : void 0;
537
- const stepTitleFlag = options.stepTitle?.trim();
538
- const repeatedStepTitles = toOrderedStepTitles(options.step);
539
- const templateSteps = options.template?.trim() ? resolvePlanTemplateSteps(options.template) : [];
540
- const stepTitles = [
541
- ...stepTitleFlag ? [stepTitleFlag] : [],
542
- ...repeatedStepTitles,
543
- ...templateSteps.map((step) => step.title)
544
- ];
545
- const hasPerStepDetailOptions = Boolean(options.stepBody?.trim()) || Boolean(options.stepOwner?.trim()) || Boolean(options.stepStatus?.trim()) || Boolean(options.stepEvidence?.trim()) || Boolean(options.stepBlockedReason?.trim()) || Boolean(options.stepReplacement?.trim()) || toArray(options.dependsOn).length > 0 || toArray(options.link).length > 0 || toSpecArray(options.file).length > 0 || toSpecArray(options.test).length > 0 || toSpecArray(options.doc).length > 0;
546
- if ((stepTitleFlag || repeatedStepTitles.length > 0) && templateSteps.length > 0) {
547
- throw new PmCliError("pm plan create --template cannot be combined with --step-title or --step; choose one step seeding source", EXIT_CODE.USAGE, {
548
- code: "ambiguous_option_combination",
549
- examples: [
550
- `pm plan create --title "Fix login crash" --template ${PLAN_TEMPLATE_NAMES[0]}`,
551
- 'pm plan create --title "Custom plan" --step "Read the code" --step "Write the fix"'
552
- ]
553
- });
554
- }
555
- if (stepTitles.length > 1 && hasPerStepDetailOptions) {
556
- throw new PmCliError("pm plan create per-step options apply to a single initial step; with multiple --step values create the plan first, then refine steps individually", EXIT_CODE.USAGE, {
557
- code: "ambiguous_option_combination",
558
- examples: [
559
- 'pm plan create --title "Execution plan" --step "Read the code" --step "Write the fix"',
560
- 'pm plan update-step <plan-id> plan-step-001 --step-body "Inspect retry path"'
561
- ]
562
- });
563
- }
564
- let initialSteps = [];
565
- if (stepTitles.length === 1) {
566
- const status = asStepStatus(options.stepStatus, "pending");
567
- const linkedItems = buildLinkInputs(options, "depends_on");
568
- const files = toSpecArray(options.file).map(parseStepFile);
569
- const tests = toSpecArray(options.test).map(parseStepTest);
570
- const docs = toSpecArray(options.doc).map(parseStepDoc);
571
- const now = nowIso();
572
- initialSteps = [{
573
- id: "plan-step-001",
574
- order: 1,
575
- title: stepTitles[0],
576
- body: options.stepBody?.trim() || void 0,
577
- status,
578
- owner: options.stepOwner?.trim() || void 0,
579
- evidence: options.stepEvidence?.trim() || void 0,
580
- blocked_reason: status === "blocked" ? options.stepBlockedReason?.trim() || "" : void 0,
581
- linked_items: linkedItems.length > 0 ? linkedItems : void 0,
582
- files: files.length > 0 ? files : void 0,
583
- tests: tests.length > 0 ? tests : void 0,
584
- docs: docs.length > 0 ? docs : void 0,
585
- created_at: now,
586
- updated_at: now,
587
- completed_at: status === "completed" ? now : void 0
588
- }];
589
- } else if (stepTitles.length > 1) {
590
- const now = nowIso();
591
- initialSteps = stepTitles.map((stepTitle, index) => ({
592
- id: `${STEP_ID_PREFIX}${String(index + 1).padStart(3, "0")}`,
593
- order: index + 1,
594
- title: stepTitle,
595
- body: templateSteps[index]?.body,
596
- status: "pending",
597
- created_at: now,
598
- updated_at: now
599
- }));
600
- }
629
+ const initialValidation = buildInitialValidation(options);
630
+ const { steps: initialSteps, hasPerStepDetailOptions } = buildInitialSteps(options);
601
631
  if (initialSteps.length > 0) {
602
632
  initialStep = initialSteps[0];
603
633
  const stepped = await mutateItem({
@@ -717,10 +747,6 @@ async function planAddStep(id, options, ctx) {
717
747
  }
718
748
  const status = asStepStatus(options.stepStatus, "pending");
719
749
  const allowMultipleActive = options.allowMultipleActive === true;
720
- const linkedItems = buildLinkInputs(options, "depends_on");
721
- const files = toSpecArray(options.file).map(parseStepFile);
722
- const tests = toSpecArray(options.test).map(parseStepTest);
723
- const docs = toSpecArray(options.doc).map(parseStepDoc);
724
750
  const { document, resultStep, itemId } = await mutatePlanSteps({
725
751
  id,
726
752
  options,
@@ -729,31 +755,8 @@ async function planAddStep(id, options, ctx) {
729
755
  message: `plan add-step "${title}"`,
730
756
  mutator(steps) {
731
757
  const order = steps.length + 1;
732
- if (status === "in_progress" && !allowMultipleActive) {
733
- for (const step2 of steps) {
734
- if (step2.status === "in_progress") {
735
- throw new PmCliError(`Plan already has step ${step2.id} in_progress. Pass --allow-multiple-active or update that step first.`, EXIT_CODE.CONFLICT);
736
- }
737
- }
738
- }
739
- const now = nowIso();
740
- const step = {
741
- id: newStepId(steps),
742
- order,
743
- title,
744
- body: options.stepBody?.trim() || void 0,
745
- status,
746
- owner: options.stepOwner?.trim() || void 0,
747
- evidence: options.stepEvidence?.trim() || void 0,
748
- blocked_reason: status === "blocked" ? options.stepBlockedReason?.trim() || "" : void 0,
749
- linked_items: linkedItems.length > 0 ? linkedItems : void 0,
750
- files: files.length > 0 ? files : void 0,
751
- tests: tests.length > 0 ? tests : void 0,
752
- docs: docs.length > 0 ? docs : void 0,
753
- created_at: now,
754
- updated_at: now,
755
- completed_at: status === "completed" ? now : void 0
756
- };
758
+ assertInProgressStepAllowed(steps, void 0, status, allowMultipleActive);
759
+ const step = buildAddedPlanStep(steps, options, { order, title, status });
757
760
  steps.push(step);
758
761
  return { changedSteps: [step.id], resultStep: step };
759
762
  }
@@ -768,6 +771,40 @@ async function planAddStep(id, options, ctx) {
768
771
  generated_at: nowIso()
769
772
  };
770
773
  }
774
+ function assertInProgressStepAllowed(steps, currentStepId, desiredStatus, allowMultipleActive) {
775
+ if (desiredStatus !== "in_progress" || allowMultipleActive) {
776
+ return;
777
+ }
778
+ const activeStep = steps.find((step) => step.id !== currentStepId && step.status === "in_progress");
779
+ if (!activeStep) {
780
+ return;
781
+ }
782
+ throw new PmCliError(`Plan already has step ${activeStep.id} in_progress. Pass --allow-multiple-active or update that step first.`, EXIT_CODE.CONFLICT);
783
+ }
784
+ function buildAddedPlanStep(existingSteps, options, seed) {
785
+ const linkedItems = buildLinkInputs(options, "depends_on");
786
+ const files = toSpecArray(options.file).map(parseStepFile);
787
+ const tests = toSpecArray(options.test).map(parseStepTest);
788
+ const docs = toSpecArray(options.doc).map(parseStepDoc);
789
+ const now = nowIso();
790
+ return {
791
+ id: newStepId(existingSteps),
792
+ order: seed.order,
793
+ title: seed.title,
794
+ body: options.stepBody?.trim() || void 0,
795
+ status: seed.status,
796
+ owner: options.stepOwner?.trim() || void 0,
797
+ evidence: options.stepEvidence?.trim() || void 0,
798
+ blocked_reason: seed.status === "blocked" ? options.stepBlockedReason?.trim() || "" : void 0,
799
+ linked_items: linkedItems.length > 0 ? linkedItems : void 0,
800
+ files: files.length > 0 ? files : void 0,
801
+ tests: tests.length > 0 ? tests : void 0,
802
+ docs: docs.length > 0 ? docs : void 0,
803
+ created_at: now,
804
+ updated_at: now,
805
+ completed_at: seed.status === "completed" ? now : void 0
806
+ };
807
+ }
771
808
  function buildLinkInputs(options, fallbackKind) {
772
809
  const dependsOn = toArray(options.dependsOn).map((id) => ({ id, kind: fallbackKind }));
773
810
  const related = toArray(options.related).map((id) => ({ id, kind: "related" }));
@@ -795,35 +832,9 @@ async function planUpdateStep(id, options, ctx, args) {
795
832
  const step = resolveStepRef(steps, args.stepRef);
796
833
  const now = nowIso();
797
834
  const desiredStatus = args.finalStatus ?? asStepStatus(options.stepStatus, step.status);
798
- if (desiredStatus === "in_progress" && step.status !== "in_progress" && !options.allowMultipleActive && !args.allowMultipleActive) {
799
- for (const other of steps) {
800
- if (other.id !== step.id && other.status === "in_progress") {
801
- throw new PmCliError(`Plan already has step ${other.id} in_progress. Pass --allow-multiple-active or update that step first.`, EXIT_CODE.CONFLICT);
802
- }
803
- }
804
- }
805
- if (desiredStatus === "blocked" && !options.stepBlockedReason?.trim() && !step.blocked_reason) {
806
- throw new PmCliError("Blocking a step requires --step-blocked-reason or an already-recorded blocked_reason.", EXIT_CODE.USAGE);
807
- }
808
- if (options.stepTitle?.trim())
809
- step.title = options.stepTitle.trim();
810
- if (options.stepBody !== void 0)
811
- step.body = options.stepBody.trim() || void 0;
812
- if (options.stepOwner !== void 0)
813
- step.owner = options.stepOwner.trim() || void 0;
814
- if (options.stepEvidence !== void 0)
815
- step.evidence = options.stepEvidence.trim() || void 0;
816
- if (options.stepBlockedReason !== void 0)
817
- step.blocked_reason = options.stepBlockedReason.trim() || void 0;
818
- if (options.stepReplacement !== void 0)
819
- step.superseded_by = options.stepReplacement.trim() || void 0;
820
- step.status = desiredStatus;
821
- step.updated_at = now;
822
- if (desiredStatus === "completed" && !step.completed_at) {
823
- step.completed_at = now;
824
- } else if (desiredStatus !== "completed") {
825
- step.completed_at = void 0;
826
- }
835
+ const allowMultipleActive = options.allowMultipleActive === true || args.allowMultipleActive === true;
836
+ assertInProgressStepAllowed(steps, step.status === "in_progress" ? step.id : void 0, desiredStatus, allowMultipleActive);
837
+ applyStepUpdates(step, options, desiredStatus, now);
827
838
  doc.metadata.updated_at = now;
828
839
  return { changedSteps: [step.id], resultStep: step };
829
840
  }
@@ -838,6 +849,49 @@ async function planUpdateStep(id, options, ctx, args) {
838
849
  generated_at: nowIso()
839
850
  };
840
851
  }
852
+ function applyStepUpdates(step, options, desiredStatus, now) {
853
+ assertBlockedStepReason(step, options, desiredStatus);
854
+ applyStepFieldUpdates(step, options);
855
+ step.status = desiredStatus;
856
+ step.updated_at = now;
857
+ applyStepCompletionTimestamp(step, desiredStatus, now);
858
+ }
859
+ function assertBlockedStepReason(step, options, desiredStatus) {
860
+ if (desiredStatus !== "blocked" || options.stepBlockedReason?.trim() || step.blocked_reason) {
861
+ return;
862
+ }
863
+ throw new PmCliError("Blocking a step requires --step-blocked-reason or an already-recorded blocked_reason.", EXIT_CODE.USAGE);
864
+ }
865
+ function applyStepFieldUpdates(step, options) {
866
+ const title = options.stepTitle?.trim();
867
+ if (title) {
868
+ step.title = title;
869
+ }
870
+ if (options.stepBody !== void 0) {
871
+ step.body = options.stepBody.trim() || void 0;
872
+ }
873
+ if (options.stepOwner !== void 0) {
874
+ step.owner = options.stepOwner.trim() || void 0;
875
+ }
876
+ if (options.stepEvidence !== void 0) {
877
+ step.evidence = options.stepEvidence.trim() || void 0;
878
+ }
879
+ if (options.stepBlockedReason !== void 0) {
880
+ step.blocked_reason = options.stepBlockedReason.trim() || void 0;
881
+ }
882
+ if (options.stepReplacement !== void 0) {
883
+ step.superseded_by = options.stepReplacement.trim() || void 0;
884
+ }
885
+ }
886
+ function applyStepCompletionTimestamp(step, desiredStatus, now) {
887
+ if (desiredStatus === "completed" && !step.completed_at) {
888
+ step.completed_at = now;
889
+ return;
890
+ }
891
+ if (desiredStatus !== "completed") {
892
+ step.completed_at = void 0;
893
+ }
894
+ }
841
895
  async function planReorderStep(id, options, ctx, stepRef, newOrder) {
842
896
  const { document, itemId } = await mutatePlanSteps({
843
897
  id,
@@ -1090,6 +1144,65 @@ async function planApprove(id, options, ctx) {
1090
1144
  generated_at: nowIso()
1091
1145
  };
1092
1146
  }
1147
+ function buildMaterializeSkippedWarnings(materializeSkipped) {
1148
+ return materializeSkipped.map((entry) => `plan_materialize_skipped:${entry.from_step}:${entry.reason}${entry.existing_id ? `:${entry.existing_id}` : ""}`);
1149
+ }
1150
+ function buildMaterializeNoopResult(planRead, materializeSkipped) {
1151
+ const plan = projectPlan(planRead.document.metadata, "standard");
1152
+ return {
1153
+ action: "materialize",
1154
+ plan,
1155
+ materialized: [],
1156
+ materialize_skipped: materializeSkipped,
1157
+ next_actions: nextActionsFor(planRead.itemId, plan),
1158
+ warnings: buildMaterializeSkippedWarnings(materializeSkipped),
1159
+ generated_at: nowIso()
1160
+ };
1161
+ }
1162
+ function buildMaterializeDependencies(parent, planItemId, step) {
1163
+ const deps = [
1164
+ `id=${parent},kind=parent`,
1165
+ `id=${planItemId},kind=discovered_from`
1166
+ ];
1167
+ for (const link of step.linked_items ?? []) {
1168
+ const realKind = link.kind === "blocked_by" || link.kind === "blocks" || link.kind === "related" || link.kind === "discovered_from" ? link.kind : "related";
1169
+ deps.push(`id=${link.id},kind=${realKind}`);
1170
+ }
1171
+ return deps;
1172
+ }
1173
+ async function createMaterializedStepItems(params) {
1174
+ const materialized = [];
1175
+ for (const step of params.targets) {
1176
+ const created = await runCreate({
1177
+ title: step.title,
1178
+ description: step.body?.trim() || step.title,
1179
+ type: params.resolvedTypeName,
1180
+ parent: params.parent,
1181
+ tags: params.tags,
1182
+ author: params.options.author,
1183
+ message: params.options.message ?? `materialized from plan ${params.planItemId} step ${step.id}`,
1184
+ dep: buildMaterializeDependencies(params.parent, params.planItemId, step)
1185
+ }, { ...{}, path: params.pmRoot });
1186
+ materialized.push({ id: created.item.id, type: params.resolvedTypeName, from_step: step.id });
1187
+ }
1188
+ return materialized;
1189
+ }
1190
+ function linkMaterializedStepItems(currentSteps, targets, materialized) {
1191
+ for (const target of targets) {
1192
+ const matched = materialized.find((entry) => entry.from_step === target.id);
1193
+ if (!matched) {
1194
+ continue;
1195
+ }
1196
+ const step = currentSteps.find((entry) => entry.id === target.id);
1197
+ if (!step) {
1198
+ continue;
1199
+ }
1200
+ const links = step.linked_items ?? [];
1201
+ links.push({ id: matched.id, kind: "implements", note: `materialized as ${matched.type}` });
1202
+ step.linked_items = links;
1203
+ step.updated_at = nowIso();
1204
+ }
1205
+ }
1093
1206
  async function planMaterialize(id, options, ctx) {
1094
1207
  const stepRefs = toArray(options.steps);
1095
1208
  if (stepRefs.length === 0) {
@@ -1108,60 +1221,27 @@ async function planMaterialize(id, options, ctx) {
1108
1221
  const { targets, skipped: materializeSkipped } = resolveMaterializeTargets(steps, stepRefs);
1109
1222
  if (targets.length === 0) {
1110
1223
  if (materializeSkipped.length > 0) {
1111
- const plan2 = projectPlan(planRead.document.metadata, "standard");
1112
- return {
1113
- action: "materialize",
1114
- plan: plan2,
1115
- materialized: [],
1116
- materialize_skipped: materializeSkipped,
1117
- next_actions: nextActionsFor(planRead.itemId, plan2),
1118
- warnings: materializeSkipped.map((entry) => `plan_materialize_skipped:${entry.from_step}:${entry.reason}${entry.existing_id ? `:${entry.existing_id}` : ""}`),
1119
- generated_at: nowIso()
1120
- };
1224
+ return buildMaterializeNoopResult(planRead, materializeSkipped);
1121
1225
  }
1122
1226
  throw new PmCliError("No matching plan steps found for --steps", EXIT_CODE.NOT_FOUND);
1123
1227
  }
1124
- const materialized = [];
1125
- for (const step of targets) {
1126
- const deps = [
1127
- `id=${parent},kind=parent`,
1128
- `id=${planRead.itemId},kind=discovered_from`
1129
- ];
1130
- for (const link of step.linked_items ?? []) {
1131
- const realKind = link.kind === "blocked_by" || link.kind === "blocks" || link.kind === "related" || link.kind === "discovered_from" ? link.kind : "related";
1132
- deps.push(`id=${link.id},kind=${realKind}`);
1133
- }
1134
- const created = await runCreate({
1135
- title: step.title,
1136
- description: step.body?.trim() || step.title,
1137
- type: resolvedTypeName,
1138
- parent,
1139
- tags,
1140
- author: options.author,
1141
- message: options.message ?? `materialized from plan ${planRead.itemId} step ${step.id}`,
1142
- dep: deps
1143
- }, ctx.settings ? { ...{}, path: ctx.pmRoot } : {});
1144
- materialized.push({ id: created.item.id, type: resolvedTypeName, from_step: step.id });
1145
- }
1228
+ const materialized = await createMaterializedStepItems({
1229
+ targets,
1230
+ parent,
1231
+ planItemId: planRead.itemId,
1232
+ resolvedTypeName,
1233
+ tags,
1234
+ options,
1235
+ pmRoot: ctx.pmRoot
1236
+ });
1146
1237
  const { document, itemId } = await mutatePlanSteps({
1147
1238
  id,
1148
1239
  options,
1149
1240
  ctx,
1150
1241
  op: "plan_materialize",
1151
1242
  message: options.message ?? `plan materialize ${stepRefs.join(",")}`,
1152
- mutator(currentSteps, doc) {
1153
- for (const target of targets) {
1154
- const matched = materialized.find((entry) => entry.from_step === target.id);
1155
- if (!matched)
1156
- continue;
1157
- const step = currentSteps.find((entry) => entry.id === target.id);
1158
- if (!step)
1159
- continue;
1160
- const links = step.linked_items ?? [];
1161
- links.push({ id: matched.id, kind: "implements", note: `materialized as ${matched.type}` });
1162
- step.linked_items = links;
1163
- step.updated_at = nowIso();
1164
- }
1243
+ mutator(currentSteps) {
1244
+ linkMaterializedStepItems(currentSteps, targets, materialized);
1165
1245
  return { changedSteps: targets.map((entry) => entry.id) };
1166
1246
  }
1167
1247
  });
@@ -1172,87 +1252,101 @@ async function planMaterialize(id, options, ctx) {
1172
1252
  materialized,
1173
1253
  ...materializeSkipped.length > 0 ? { materialize_skipped: materializeSkipped } : {},
1174
1254
  next_actions: nextActionsFor(itemId, plan),
1175
- warnings: materializeSkipped.map((entry) => `plan_materialize_skipped:${entry.from_step}:${entry.reason}${entry.existing_id ? `:${entry.existing_id}` : ""}`),
1255
+ warnings: buildMaterializeSkippedWarnings(materializeSkipped),
1176
1256
  generated_at: nowIso()
1177
1257
  };
1178
1258
  }
1179
- async function runPlan(input) {
1180
- const ctx = await loadContext(input.global);
1181
- if (input.subcommand !== "create") {
1182
- const stepValues = toOrderedStepTitles(input.options.step);
1183
- if (stepValues.length > 1) {
1184
- throw new PmCliError(`pm plan ${input.subcommand} accepts a single --step/--step-title value (repeated --step seeds ordered steps only on pm plan create)`, EXIT_CODE.USAGE);
1185
- }
1186
- if (stepValues.length === 1 && !input.options.stepTitle?.trim()) {
1187
- input = { ...input, options: { ...input.options, stepTitle: stepValues[0] } };
1188
- }
1259
+ function normalizePlanStepAliasInput(input) {
1260
+ if (input.subcommand === "create") {
1261
+ return input;
1262
+ }
1263
+ const stepValues = toOrderedStepTitles(input.options.step);
1264
+ if (stepValues.length > 1) {
1265
+ throw new PmCliError(`pm plan ${input.subcommand} accepts a single --step/--step-title value (repeated --step seeds ordered steps only on pm plan create)`, EXIT_CODE.USAGE);
1266
+ }
1267
+ if (stepValues.length === 1 && !input.options.stepTitle?.trim()) {
1268
+ return { ...input, options: { ...input.options, stepTitle: stepValues[0] } };
1269
+ }
1270
+ return input;
1271
+ }
1272
+ function requirePlanId(input, label) {
1273
+ if (!input.id) {
1274
+ throw new PmCliError(`pm plan ${label} requires a plan id`, EXIT_CODE.USAGE);
1189
1275
  }
1190
- switch (input.subcommand) {
1191
- case "create":
1192
- return planCreate(input.options, input.global, ctx);
1193
- case "show":
1194
- if (!input.id)
1195
- throw new PmCliError("pm plan show requires a plan id", EXIT_CODE.USAGE);
1196
- return planShow(input.id, input.options, ctx);
1197
- case "add-step":
1198
- if (!input.id)
1199
- throw new PmCliError("pm plan add-step requires a plan id", EXIT_CODE.USAGE);
1200
- return planAddStep(input.id, input.options, ctx);
1201
- case "update-step":
1202
- if (!input.id || !input.stepRef)
1203
- throw new PmCliError("pm plan update-step requires <plan-id> <step>", EXIT_CODE.USAGE);
1204
- return planUpdateStep(input.id, input.options, ctx, { stepRef: input.stepRef, op: "plan_update_step" });
1205
- case "complete-step":
1206
- if (!input.id || !input.stepRef)
1207
- throw new PmCliError("pm plan complete-step requires <plan-id> <step>", EXIT_CODE.USAGE);
1208
- return planUpdateStep(input.id, input.options, ctx, { stepRef: input.stepRef, finalStatus: "completed", op: "plan_complete_step" });
1209
- case "block-step":
1210
- if (!input.id || !input.stepRef)
1211
- throw new PmCliError("pm plan block-step requires <plan-id> <step>", EXIT_CODE.USAGE);
1212
- return planUpdateStep(input.id, input.options, ctx, { stepRef: input.stepRef, finalStatus: "blocked", op: "plan_block_step" });
1213
- case "reorder-step":
1214
- if (!input.id || !input.stepRef || input.reorderTo === void 0)
1215
- throw new PmCliError("pm plan reorder-step requires <plan-id> <step> <new-order>", EXIT_CODE.USAGE);
1216
- return planReorderStep(input.id, input.options, ctx, input.stepRef, input.reorderTo);
1217
- case "remove-step":
1218
- if (!input.id || !input.stepRef)
1219
- throw new PmCliError("pm plan remove-step requires <plan-id> <step>", EXIT_CODE.USAGE);
1220
- return planRemoveStep(input.id, input.options, ctx, input.stepRef);
1221
- case "link":
1222
- if (!input.id || !input.stepRef)
1223
- throw new PmCliError("pm plan link requires <plan-id> <step>", EXIT_CODE.USAGE);
1224
- return planLink(input.id, input.options, ctx, input.stepRef);
1225
- case "unlink":
1226
- if (!input.id || !input.stepRef)
1227
- throw new PmCliError("pm plan unlink requires <plan-id> <step>", EXIT_CODE.USAGE);
1228
- return planUnlink(input.id, input.options, ctx, input.stepRef);
1229
- case "decision":
1230
- if (!input.id)
1231
- throw new PmCliError("pm plan decision requires a plan id", EXIT_CODE.USAGE);
1232
- return planAppendLog(input.id, input.options, ctx, "decision");
1233
- case "discovery":
1234
- if (!input.id)
1235
- throw new PmCliError("pm plan discovery requires a plan id", EXIT_CODE.USAGE);
1236
- return planAppendLog(input.id, input.options, ctx, "discovery");
1237
- case "validation":
1238
- if (!input.id)
1239
- throw new PmCliError("pm plan validation requires a plan id", EXIT_CODE.USAGE);
1240
- return planAppendLog(input.id, input.options, ctx, "validation");
1241
- case "resume":
1242
- if (!input.id)
1243
- throw new PmCliError("pm plan resume requires a plan id", EXIT_CODE.USAGE);
1244
- return planResume(input.id, input.options, ctx);
1245
- case "approve":
1246
- if (!input.id)
1247
- throw new PmCliError("pm plan approve requires a plan id", EXIT_CODE.USAGE);
1248
- return planApprove(input.id, input.options, ctx);
1249
- case "materialize":
1250
- if (!input.id)
1251
- throw new PmCliError("pm plan materialize requires a plan id", EXIT_CODE.USAGE);
1252
- return planMaterialize(input.id, input.options, ctx);
1253
- default:
1254
- throw new PmCliError(`Unknown pm plan subcommand "${input.subcommand}"`, EXIT_CODE.USAGE);
1276
+ return input.id;
1277
+ }
1278
+ function requirePlanStepRef(input, label) {
1279
+ const id = requirePlanId(input, label);
1280
+ if (!input.stepRef) {
1281
+ throw new PmCliError(`pm plan ${label} requires <plan-id> <step>`, EXIT_CODE.USAGE);
1282
+ }
1283
+ return { id, stepRef: input.stepRef };
1284
+ }
1285
+ function requireReorderTarget(input) {
1286
+ const target = requirePlanStepRef(input, "reorder-step");
1287
+ if (input.reorderTo === void 0) {
1288
+ throw new PmCliError("pm plan reorder-step requires <plan-id> <step> <new-order>", EXIT_CODE.USAGE);
1255
1289
  }
1290
+ return { ...target, reorderTo: input.reorderTo };
1291
+ }
1292
+ var PLAN_DISPATCHERS = {
1293
+ create: (input, ctx) => planCreate(input.options, input.global, ctx),
1294
+ show: (input, ctx) => planShow(requirePlanId(input, "show"), input.options, ctx),
1295
+ "add-step": (input, ctx) => planAddStep(requirePlanId(input, "add-step"), input.options, ctx),
1296
+ "update-step": (input, ctx) => {
1297
+ const target = requirePlanStepRef(input, "update-step");
1298
+ return planUpdateStep(target.id, input.options, ctx, { stepRef: target.stepRef, op: "plan_update_step" });
1299
+ },
1300
+ "complete-step": (input, ctx) => {
1301
+ const target = requirePlanStepRef(input, "complete-step");
1302
+ return planUpdateStep(target.id, input.options, ctx, {
1303
+ stepRef: target.stepRef,
1304
+ finalStatus: "completed",
1305
+ op: "plan_complete_step"
1306
+ });
1307
+ },
1308
+ "block-step": (input, ctx) => {
1309
+ const target = requirePlanStepRef(input, "block-step");
1310
+ return planUpdateStep(target.id, input.options, ctx, {
1311
+ stepRef: target.stepRef,
1312
+ finalStatus: "blocked",
1313
+ op: "plan_block_step"
1314
+ });
1315
+ },
1316
+ "reorder-step": (input, ctx) => {
1317
+ const target = requireReorderTarget(input);
1318
+ return planReorderStep(target.id, input.options, ctx, target.stepRef, target.reorderTo);
1319
+ },
1320
+ "remove-step": (input, ctx) => {
1321
+ const target = requirePlanStepRef(input, "remove-step");
1322
+ return planRemoveStep(target.id, input.options, ctx, target.stepRef);
1323
+ },
1324
+ link: (input, ctx) => {
1325
+ const target = requirePlanStepRef(input, "link");
1326
+ return planLink(target.id, input.options, ctx, target.stepRef);
1327
+ },
1328
+ unlink: (input, ctx) => {
1329
+ const target = requirePlanStepRef(input, "unlink");
1330
+ return planUnlink(target.id, input.options, ctx, target.stepRef);
1331
+ },
1332
+ decision: (input, ctx) => planAppendLog(requirePlanId(input, "decision"), input.options, ctx, "decision"),
1333
+ discovery: (input, ctx) => planAppendLog(requirePlanId(input, "discovery"), input.options, ctx, "discovery"),
1334
+ validation: (input, ctx) => planAppendLog(requirePlanId(input, "validation"), input.options, ctx, "validation"),
1335
+ resume: (input, ctx) => planResume(requirePlanId(input, "resume"), input.options, ctx),
1336
+ approve: (input, ctx) => planApprove(requirePlanId(input, "approve"), input.options, ctx),
1337
+ materialize: (input, ctx) => planMaterialize(requirePlanId(input, "materialize"), input.options, ctx)
1338
+ };
1339
+ function resolvePlanDispatcher(subcommand) {
1340
+ const dispatcher = PLAN_DISPATCHERS[subcommand];
1341
+ if (!dispatcher) {
1342
+ throw new PmCliError(`Unknown pm plan subcommand "${subcommand}"`, EXIT_CODE.USAGE);
1343
+ }
1344
+ return dispatcher;
1345
+ }
1346
+ async function runPlan(input) {
1347
+ const ctx = await loadContext(input.global);
1348
+ const normalizedInput = normalizePlanStepAliasInput(input);
1349
+ return resolvePlanDispatcher(normalizedInput.subcommand)(normalizedInput, ctx);
1256
1350
  }
1257
1351
  export {
1258
1352
  PLAN_SHOW_DEPTH_VALUES,
@@ -1261,6 +1355,6 @@ export {
1261
1355
  resolvePlanTemplateSteps,
1262
1356
  runPlan
1263
1357
  };
1264
- //# sourceMappingURL=plan-RKZHQVXR.js.map
1358
+ //# sourceMappingURL=plan-BGDR73Z6.js.map
1265
1359
 
1266
- //# debugId=29e74621-056d-50a2-8168-18b5c3a20a97
1360
+ //# debugId=ef3dc07a-8c97-52e0-9665-6d7daf701594