@unbrained/pm-cli 2026.6.7 → 2026.6.8

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 (460) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +42 -0
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +1 -1
  6. package/dist/cli/bootstrap-args.js +30 -13
  7. package/dist/cli/bootstrap-args.js.map +1 -1
  8. package/dist/cli/commands/close-many.js +9 -3
  9. package/dist/cli/commands/close-many.js.map +1 -1
  10. package/dist/cli/commands/close.js +15 -3
  11. package/dist/cli/commands/close.js.map +1 -1
  12. package/dist/cli/commands/comments-audit.js +4 -3
  13. package/dist/cli/commands/comments-audit.js.map +1 -1
  14. package/dist/cli/commands/completion.js +40 -33
  15. package/dist/cli/commands/completion.js.map +1 -1
  16. package/dist/cli/commands/extension/scaffold.js +6 -14
  17. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  18. package/dist/cli/commands/gc.js +10 -2
  19. package/dist/cli/commands/gc.js.map +1 -1
  20. package/dist/cli/commands/health.js +10 -2
  21. package/dist/cli/commands/health.js.map +1 -1
  22. package/dist/cli/commands/index.d.ts +1 -1
  23. package/dist/cli/commands/index.js +3 -3
  24. package/dist/cli/commands/index.js.map +1 -1
  25. package/dist/cli/commands/init.d.ts +1 -0
  26. package/dist/cli/commands/init.js +48 -2
  27. package/dist/cli/commands/init.js.map +1 -1
  28. package/dist/cli/commands/list.d.ts +11 -2
  29. package/dist/cli/commands/list.js +104 -2
  30. package/dist/cli/commands/list.js.map +1 -1
  31. package/dist/cli/commands/normalize.js +6 -4
  32. package/dist/cli/commands/normalize.js.map +1 -1
  33. package/dist/cli/commands/schema.d.ts +13 -2
  34. package/dist/cli/commands/schema.js +66 -12
  35. package/dist/cli/commands/schema.js.map +1 -1
  36. package/dist/cli/commands/search.d.ts +10 -2
  37. package/dist/cli/commands/search.js +94 -5
  38. package/dist/cli/commands/search.js.map +1 -1
  39. package/dist/cli/commands/upgrade.js +4 -12
  40. package/dist/cli/commands/upgrade.js.map +1 -1
  41. package/dist/cli/main.js +7 -18
  42. package/dist/cli/main.js.map +1 -1
  43. package/dist/cli/register-list-query.js +5 -3
  44. package/dist/cli/register-list-query.js.map +1 -1
  45. package/dist/cli/register-mutation.js +33 -24
  46. package/dist/cli/register-mutation.js.map +1 -1
  47. package/dist/cli/register-setup.js +4 -2
  48. package/dist/cli/register-setup.js.map +1 -1
  49. package/dist/cli/registration-helpers.js +7 -3
  50. package/dist/cli/registration-helpers.js.map +1 -1
  51. package/dist/cli-bundle/chunks/activity-A3QKFSSF.js +16 -0
  52. package/dist/cli-bundle/chunks/{activity-YVB3QRTE.js → activity-Q7XMIZIH.js} +11 -11
  53. package/dist/cli-bundle/chunks/{aggregate-LH66F75F.js → aggregate-GBSHSXOB.js} +10 -10
  54. package/dist/cli-bundle/chunks/{aggregate-OHSWFQJM.js → aggregate-HKQJZUBG.js} +10 -10
  55. package/dist/cli-bundle/chunks/{append-2PPYFAG5.js → append-3RFOU7P5.js} +8 -8
  56. package/dist/cli-bundle/chunks/{append-AUGT5W6J.js → append-OM74OJVT.js} +8 -8
  57. package/dist/cli-bundle/chunks/{chunk-HRMHZ4RV.js → chunk-2BYKYPWY.js} +2 -2
  58. package/dist/cli-bundle/chunks/{chunk-TP4DDY27.js → chunk-2HMD3JM2.js} +6 -6
  59. package/dist/cli-bundle/chunks/{chunk-4CHEG6UK.js → chunk-2YPVCD7T.js} +8 -8
  60. package/dist/cli-bundle/chunks/{chunk-WAA7UI6M.js → chunk-3E3MDBTB.js} +10 -14
  61. package/dist/cli-bundle/chunks/chunk-3E3MDBTB.js.map +7 -0
  62. package/dist/cli-bundle/chunks/{chunk-UJUT6AHZ.js → chunk-3TXWDGPU.js} +48 -12
  63. package/dist/cli-bundle/chunks/chunk-3TXWDGPU.js.map +7 -0
  64. package/dist/cli-bundle/chunks/{chunk-UT6WFXW2.js → chunk-4TI3532H.js} +2 -2
  65. package/dist/cli-bundle/chunks/{chunk-KNGVP5WJ.js → chunk-4WYBLB6J.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-V6EYFTRL.js → chunk-5NVJA7IW.js} +7 -7
  67. package/dist/cli-bundle/chunks/{chunk-42LOFGJS.js → chunk-5WO2VKFA.js} +108 -9
  68. package/dist/cli-bundle/chunks/chunk-5WO2VKFA.js.map +7 -0
  69. package/dist/cli-bundle/chunks/{chunk-QQL5QSTZ.js → chunk-7NQIY7Z6.js} +6 -5
  70. package/dist/cli-bundle/chunks/chunk-7NQIY7Z6.js.map +1 -0
  71. package/dist/cli-bundle/chunks/{chunk-KR6R465K.js → chunk-7WXGR44E.js} +5 -5
  72. package/dist/cli-bundle/chunks/{chunk-KR6R465K.js.map → chunk-7WXGR44E.js.map} +2 -2
  73. package/dist/cli-bundle/chunks/{chunk-WYEXLDDY.js → chunk-AEMKH5WQ.js} +3 -3
  74. package/dist/cli-bundle/chunks/{chunk-XS3O2TFJ.js → chunk-ALSRBNYB.js} +8 -8
  75. package/dist/cli-bundle/chunks/chunk-ALSRBNYB.js.map +1 -0
  76. package/dist/cli-bundle/chunks/{chunk-OKSKJKHX.js → chunk-AXBUHLW7.js} +9 -9
  77. package/dist/cli-bundle/chunks/{chunk-UEWA73ZZ.js → chunk-BFJPMUF5.js} +5 -5
  78. package/dist/cli-bundle/chunks/{chunk-B5RF3IP7.js → chunk-BKQMJXWY.js} +3 -3
  79. package/dist/cli-bundle/chunks/{chunk-HV5SSZXF.js → chunk-CBJXWXI5.js} +2 -2
  80. package/dist/cli-bundle/chunks/{chunk-NHR2QXXZ.js → chunk-D7WK2PKB.js} +20 -8
  81. package/dist/cli-bundle/chunks/chunk-D7WK2PKB.js.map +1 -0
  82. package/dist/cli-bundle/chunks/{chunk-MWRS7Z4P.js → chunk-DV27WDA7.js} +15 -13
  83. package/dist/cli-bundle/chunks/chunk-DV27WDA7.js.map +7 -0
  84. package/dist/cli-bundle/chunks/{chunk-LI65XLJR.js → chunk-EPWT7BEA.js} +8 -8
  85. package/dist/cli-bundle/chunks/{chunk-LMTOY5HE.js → chunk-ETZZU5QF.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-XYNT7UFP.js → chunk-F33AQIB4.js} +6 -6
  87. package/dist/cli-bundle/chunks/{chunk-XYNT7UFP.js.map → chunk-F33AQIB4.js.map} +1 -1
  88. package/dist/cli-bundle/chunks/{chunk-LIN2BPJ7.js → chunk-F33VC5EX.js} +2 -2
  89. package/dist/cli-bundle/chunks/{chunk-SFFVGNHC.js → chunk-FGRJZVXD.js} +3 -3
  90. package/dist/cli-bundle/chunks/{chunk-HLC3KTLP.js → chunk-FO2TYSQZ.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-3A2CMEM7.js → chunk-HOA3GMB6.js} +4 -4
  92. package/dist/cli-bundle/chunks/{chunk-HMMMWBK2.js → chunk-HP35AVFS.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-AVJD6VTA.js → chunk-J4DKAGTM.js} +3 -3
  94. package/dist/cli-bundle/chunks/{chunk-YO3THIJF.js → chunk-JS47EKLP.js} +7 -7
  95. package/dist/cli-bundle/chunks/{chunk-2IXCHCLM.js → chunk-K62SNVVE.js} +2 -2
  96. package/dist/cli-bundle/chunks/{chunk-IMCJBN2Q.js → chunk-KBKJVXUS.js} +19 -7
  97. package/dist/cli-bundle/chunks/chunk-KBKJVXUS.js.map +7 -0
  98. package/dist/cli-bundle/chunks/{chunk-CLD3XNCH.js → chunk-KCGMABHM.js} +14 -12
  99. package/dist/cli-bundle/chunks/chunk-KCGMABHM.js.map +1 -0
  100. package/dist/cli-bundle/chunks/{chunk-H7EO3QA3.js → chunk-KN4WSESY.js} +5 -5
  101. package/dist/cli-bundle/chunks/{chunk-C5W2UH56.js → chunk-KP4KIUQT.js} +3 -3
  102. package/dist/cli-bundle/chunks/{chunk-YPH4ESA2.js → chunk-KS2U7BZ3.js} +11 -6
  103. package/dist/cli-bundle/chunks/chunk-KS2U7BZ3.js.map +1 -0
  104. package/dist/cli-bundle/chunks/{chunk-GPXQBR3H.js → chunk-KVXIQDJG.js} +12 -12
  105. package/dist/cli-bundle/chunks/{chunk-NQL32HQ5.js → chunk-L3LYL3ID.js} +12 -12
  106. package/dist/cli-bundle/chunks/{chunk-WCQZBDDH.js → chunk-M7UBTVFT.js} +3 -3
  107. package/dist/cli-bundle/chunks/{chunk-3EOBJOF4.js → chunk-MSH23UWO.js} +4 -4
  108. package/dist/cli-bundle/chunks/{chunk-UAQOQ7IE.js → chunk-N4SQZ7L3.js} +2 -2
  109. package/dist/cli-bundle/chunks/{chunk-FY6Z3FYY.js → chunk-NDSMKB2I.js} +3 -3
  110. package/dist/cli-bundle/chunks/{chunk-2IF7WLB7.js → chunk-NGEEXR2R.js} +2 -2
  111. package/dist/cli-bundle/chunks/{chunk-UIIQC5YO.js → chunk-NLVCMVC7.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-LQHBENVW.js → chunk-NUKHZZNM.js} +3 -3
  113. package/dist/cli-bundle/chunks/{chunk-YBZW2QQ7.js → chunk-ODN53S6H.js} +6 -6
  114. package/dist/cli-bundle/chunks/{chunk-LXO6V66E.js → chunk-OTY2YEH5.js} +12 -12
  115. package/dist/cli-bundle/chunks/{chunk-6RZXO5M2.js → chunk-OVSSE2JP.js} +8 -8
  116. package/dist/cli-bundle/chunks/{chunk-4GHZR3BA.js → chunk-PQDH3S54.js} +10 -14
  117. package/dist/cli-bundle/chunks/chunk-PQDH3S54.js.map +1 -0
  118. package/dist/cli-bundle/chunks/{chunk-R3V3YCMH.js → chunk-QF4OPBAG.js} +9 -9
  119. package/dist/cli-bundle/chunks/{chunk-FHHBD7PN.js → chunk-QFVASU44.js} +2 -2
  120. package/dist/cli-bundle/chunks/{chunk-SQPKRA54.js → chunk-QQPZYP73.js} +12 -12
  121. package/dist/cli-bundle/chunks/{chunk-5AXMRKN5.js → chunk-QWNUDGFQ.js} +8 -8
  122. package/dist/cli-bundle/chunks/{chunk-TYJJOTUA.js → chunk-R4XIE7NQ.js} +54 -8
  123. package/dist/cli-bundle/chunks/chunk-R4XIE7NQ.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-O7HSSFCC.js → chunk-RISLL7XH.js} +10 -5
  125. package/dist/cli-bundle/chunks/{chunk-O7HSSFCC.js.map → chunk-RISLL7XH.js.map} +2 -2
  126. package/dist/cli-bundle/chunks/{chunk-6J4K6JLA.js → chunk-SDLEYY6A.js} +3 -3
  127. package/dist/cli-bundle/chunks/{chunk-TINUJMWN.js → chunk-SM3RMWGO.js} +109 -10
  128. package/dist/cli-bundle/chunks/chunk-SM3RMWGO.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-MOYM2C3J.js → chunk-TBLBEOEX.js} +9 -9
  130. package/dist/cli-bundle/chunks/{chunk-WR5567FH.js → chunk-TXKENAQP.js} +5 -4
  131. package/dist/cli-bundle/chunks/chunk-TXKENAQP.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-TNPBPNII.js → chunk-UEXNNF3K.js} +7 -7
  133. package/dist/cli-bundle/chunks/{chunk-RVPTZKBC.js → chunk-UMMJAJB2.js} +9 -9
  134. package/dist/cli-bundle/chunks/{chunk-THDEID2Z.js → chunk-URJEZOLB.js} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-M2PW7EZU.js → chunk-VXBUXLVD.js} +7 -7
  136. package/dist/cli-bundle/chunks/chunk-VXBUXLVD.js.map +7 -0
  137. package/dist/cli-bundle/chunks/{chunk-UYQ7HXH4.js → chunk-XEKZCBCS.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-2OJHLWBZ.js → chunk-XLSQ3QLT.js} +2 -2
  139. package/dist/cli-bundle/chunks/{chunk-X7UHMKPE.js → chunk-XNGMIVQY.js} +3 -3
  140. package/dist/cli-bundle/chunks/{chunk-B2KZGPM2.js → chunk-XZS4MV37.js} +2 -2
  141. package/dist/cli-bundle/chunks/{chunk-GNIUOLZ2.js → chunk-YEFOCDIK.js} +7 -7
  142. package/dist/cli-bundle/chunks/{chunk-X4IZKYHP.js → chunk-YJAKN2N2.js} +46 -10
  143. package/dist/cli-bundle/chunks/chunk-YJAKN2N2.js.map +1 -0
  144. package/dist/cli-bundle/chunks/{chunk-GUZBNB3G.js → chunk-Z2HXAFFH.js} +2 -2
  145. package/dist/cli-bundle/chunks/{chunk-CKLBZHS7.js → chunk-Z55JACL2.js} +53 -7
  146. package/dist/cli-bundle/chunks/chunk-Z55JACL2.js.map +7 -0
  147. package/dist/cli-bundle/chunks/{claim-KW743OSW.js → claim-NHBIIBOW.js} +10 -10
  148. package/dist/cli-bundle/chunks/{claim-BJ4QMPJC.js → claim-RNEBQCOO.js} +10 -10
  149. package/dist/cli-bundle/chunks/close-UNTFXVM3.js +13 -0
  150. package/dist/cli-bundle/chunks/{close-SYHSRZDC.js → close-ZMXL2WDS.js} +8 -8
  151. package/dist/cli-bundle/chunks/{close-many-LAC5VR4G.js → close-many-CDPQGQUB.js} +24 -18
  152. package/dist/cli-bundle/chunks/close-many-CDPQGQUB.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{close-many-DBLEYFOY.js → close-many-IQV5C2SI.js} +23 -17
  154. package/dist/cli-bundle/chunks/close-many-IQV5C2SI.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{comments-JEO6HHVM.js → comments-EFVBHWPT.js} +10 -10
  156. package/dist/cli-bundle/chunks/{comments-YT2PQ5DD.js → comments-J5Q4IJPH.js} +10 -10
  157. package/dist/cli-bundle/chunks/{config-RZRVS3ZV.js → config-72253M2O.js} +10 -11
  158. package/dist/cli-bundle/chunks/config-72253M2O.js.map +1 -0
  159. package/dist/cli-bundle/chunks/{config-YJSAAADD.js → config-VFYA6BMI.js} +9 -10
  160. package/dist/cli-bundle/chunks/config-VFYA6BMI.js.map +7 -0
  161. package/dist/cli-bundle/chunks/{context-LGYEEKAW.js → context-AVLO4IFH.js} +13 -13
  162. package/dist/cli-bundle/chunks/{context-ZUH5IOOI.js → context-WMSI2D65.js} +13 -13
  163. package/dist/cli-bundle/chunks/{contracts-YXJ6NXKH.js → contracts-D4BN3VSQ.js} +4 -4
  164. package/dist/cli-bundle/chunks/{contracts-ZIBXROPE.js → contracts-RGPOBLPL.js} +4 -4
  165. package/dist/cli-bundle/chunks/{copy-YPWEIAPD.js → copy-H6TXHK7S.js} +7 -7
  166. package/dist/cli-bundle/chunks/{copy-BZALX5MQ.js → copy-WXE3OOLZ.js} +7 -7
  167. package/dist/cli-bundle/chunks/create-EZWAMUKR.js +27 -0
  168. package/dist/cli-bundle/chunks/{create-CF7EVRX7.js → create-PUAIJEZ7.js} +13 -13
  169. package/dist/cli-bundle/chunks/{delete-KR4VBWVE.js → delete-PKR2JHLH.js} +7 -7
  170. package/dist/cli-bundle/chunks/{delete-XLZRTRKR.js → delete-WBME6WG5.js} +7 -7
  171. package/dist/cli-bundle/chunks/{deps-2YTXD3VM.js → deps-4BQEDV4L.js} +7 -7
  172. package/dist/cli-bundle/chunks/{deps-GZMFMTGS.js → deps-KWHQRO75.js} +7 -7
  173. package/dist/cli-bundle/chunks/{docs-SLROFEQ4.js → docs-364GT3ZR.js} +9 -9
  174. package/dist/cli-bundle/chunks/{docs-ZHISRR2D.js → docs-SCNBUGSV.js} +9 -9
  175. package/dist/cli-bundle/chunks/{extension-XYCUXICD.js → extension-CRE7JM47.js} +5 -5
  176. package/dist/cli-bundle/chunks/{extension-3C7OOI4F.js → extension-KK2UPXJD.js} +5 -5
  177. package/dist/cli-bundle/chunks/{files-FUWF2FYJ.js → files-3GESQAWL.js} +9 -9
  178. package/dist/cli-bundle/chunks/{files-J4I5IU4O.js → files-66EHM5ZR.js} +9 -9
  179. package/dist/cli-bundle/chunks/{gc-34NXSNSN.js → gc-D5IWOKQH.js} +13 -5
  180. package/dist/cli-bundle/chunks/gc-D5IWOKQH.js.map +1 -0
  181. package/dist/cli-bundle/chunks/{gc-SPIIZX3A.js → gc-MOQDND5J.js} +12 -4
  182. package/dist/cli-bundle/chunks/gc-MOQDND5J.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{get-SZKNRHMA.js → get-7J2ZCBV5.js} +11 -11
  184. package/dist/cli-bundle/chunks/{get-VITKYP6S.js → get-WXSLXV3K.js} +11 -11
  185. package/dist/cli-bundle/chunks/{health-7G3EPM57.js → health-B6AEM7BV.js} +21 -14
  186. package/dist/cli-bundle/chunks/health-B6AEM7BV.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{health-4SNTA2TF.js → health-YMZGOMVX.js} +20 -13
  188. package/dist/cli-bundle/chunks/health-YMZGOMVX.js.map +7 -0
  189. package/dist/cli-bundle/chunks/{history-SDAWYZR3.js → history-TJTO5GCR.js} +10 -10
  190. package/dist/cli-bundle/chunks/history-ZERISU2L.js +20 -0
  191. package/dist/cli-bundle/chunks/{history-compact-POTZGG7K.js → history-compact-CKNN6UKW.js} +11 -11
  192. package/dist/cli-bundle/chunks/{history-compact-DMW536VH.js → history-compact-N2Q7IR3T.js} +11 -11
  193. package/dist/cli-bundle/chunks/history-redact-GODBYT5A.js +19 -0
  194. package/dist/cli-bundle/chunks/{history-redact-EPJ7GENL.js → history-redact-JUXUOH54.js} +11 -11
  195. package/dist/cli-bundle/chunks/{history-repair-YNESJRT6.js → history-repair-CCCPBNTF.js} +11 -11
  196. package/dist/cli-bundle/chunks/{history-repair-IJ7LLBET.js → history-repair-TDBBSRVK.js} +11 -11
  197. package/dist/cli-bundle/chunks/{init-YHVBTEET.js → init-6ZPKD3YN.js} +9 -9
  198. package/dist/cli-bundle/chunks/init-CBZHXBR3.js +17 -0
  199. package/dist/cli-bundle/chunks/{learnings-T4PF24YN.js → learnings-U7U2FNIO.js} +10 -10
  200. package/dist/cli-bundle/chunks/{learnings-4YBMIVCZ.js → learnings-WYNTYQ5T.js} +10 -10
  201. package/dist/cli-bundle/chunks/list-7MTPPZHC.js +20 -0
  202. package/dist/cli-bundle/chunks/{list-3KEVBOYW.js → list-JGP7ODML.js} +10 -10
  203. package/dist/cli-bundle/chunks/{notes-GJKALVZM.js → notes-P25YVTEG.js} +10 -10
  204. package/dist/cli-bundle/chunks/{notes-FLUCNJSH.js → notes-QIF6A7XS.js} +10 -10
  205. package/dist/cli-bundle/chunks/{plan-YYMIL3HV.js → plan-RACB5PI6.js} +13 -13
  206. package/dist/cli-bundle/chunks/{plan-T5MMZLI3.js → plan-SSBJFWXA.js} +13 -13
  207. package/dist/cli-bundle/chunks/{register-list-query-I65EZ3HB.js → register-list-query-5IXDPUZ6.js} +23 -21
  208. package/dist/cli-bundle/chunks/register-list-query-5IXDPUZ6.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{register-list-query-OECMHO4G.js → register-list-query-GQAEIG4K.js} +22 -20
  210. package/dist/cli-bundle/chunks/register-list-query-GQAEIG4K.js.map +7 -0
  211. package/dist/cli-bundle/chunks/{register-mutation-2FLXORLR.js → register-mutation-FAS4YG63.js} +41 -37
  212. package/dist/cli-bundle/chunks/{register-mutation-2FLXORLR.js.map → register-mutation-FAS4YG63.js.map} +1 -1
  213. package/dist/cli-bundle/chunks/{register-mutation-5GPDEKHR.js → register-mutation-YZCUILGO.js} +40 -36
  214. package/dist/cli-bundle/chunks/{register-mutation-5GPDEKHR.js.map → register-mutation-YZCUILGO.js.map} +2 -2
  215. package/dist/cli-bundle/chunks/{register-operations-GQKT35H5.js → register-operations-IBYWNJN5.js} +30 -30
  216. package/dist/cli-bundle/chunks/{register-operations-BNGAUMGK.js → register-operations-S2BOLUPF.js} +30 -30
  217. package/dist/cli-bundle/chunks/{register-setup-EJY44FPH.js → register-setup-ABA2JPWO.js} +19 -18
  218. package/dist/cli-bundle/chunks/{register-setup-EJY44FPH.js.map → register-setup-ABA2JPWO.js.map} +2 -2
  219. package/dist/cli-bundle/chunks/{register-setup-DNDCGZ4O.js → register-setup-JRZ4UMWZ.js} +20 -19
  220. package/dist/cli-bundle/chunks/register-setup-JRZ4UMWZ.js.map +1 -0
  221. package/dist/cli-bundle/chunks/restore-3JRX27QW.js +17 -0
  222. package/dist/cli-bundle/chunks/{restore-DDJGVZIN.js → restore-K72ZNPEP.js} +11 -11
  223. package/dist/cli-bundle/chunks/{schema-B7NQ6XVP.js → schema-3VKRDBLC.js} +76 -20
  224. package/dist/cli-bundle/chunks/schema-3VKRDBLC.js.map +7 -0
  225. package/dist/cli-bundle/chunks/{schema-HEGYH6CE.js → schema-UL4B2JX5.js} +77 -21
  226. package/dist/cli-bundle/chunks/schema-UL4B2JX5.js.map +1 -0
  227. package/dist/cli-bundle/chunks/{search-JNEZJV7H.js → search-632WJ7GO.js} +103 -14
  228. package/dist/cli-bundle/chunks/search-632WJ7GO.js.map +7 -0
  229. package/dist/cli-bundle/chunks/{search-DVVQ4UO2.js → search-EQDHSE4G.js} +104 -15
  230. package/dist/cli-bundle/chunks/search-EQDHSE4G.js.map +1 -0
  231. package/dist/cli-bundle/chunks/{stats-SYTJRR4Z.js → stats-O4UTMJMC.js} +7 -7
  232. package/dist/cli-bundle/chunks/{stats-7JDIJRDH.js → stats-WLJ3XBF5.js} +7 -7
  233. package/dist/cli-bundle/chunks/{telemetry-4HHWD5Y7.js → telemetry-EUVHFSQU.js} +4 -4
  234. package/dist/cli-bundle/chunks/{telemetry-EGWP7ZUX.js → telemetry-NRVWX25E.js} +4 -4
  235. package/dist/cli-bundle/chunks/{test-IIELLSZX.js → test-GXUBQNUC.js} +14 -14
  236. package/dist/cli-bundle/chunks/test-XN7RJL5Z.js +32 -0
  237. package/dist/cli-bundle/chunks/{test-all-IHTUJRRC.js → test-all-UTFXC7S2.js} +14 -14
  238. package/dist/cli-bundle/chunks/{test-all-7DNCMML7.js → test-all-XM6OKI3L.js} +14 -14
  239. package/dist/cli-bundle/chunks/{test-runs-5FEMBV3A.js → test-runs-7FHCPEA3.js} +5 -5
  240. package/dist/cli-bundle/chunks/{test-runs-RNKZ37PS.js → test-runs-IK6E2HNX.js} +5 -5
  241. package/dist/cli-bundle/chunks/update-LFBSEW3N.js +21 -0
  242. package/dist/cli-bundle/chunks/update-U4B4OMHZ.js +25 -0
  243. package/dist/cli-bundle/chunks/{update-many-BSZZZYXY.js → update-many-5KD33MKY.js} +22 -22
  244. package/dist/cli-bundle/chunks/{update-many-BWKJJEBF.js → update-many-N3YTM7K4.js} +22 -22
  245. package/dist/cli-bundle/chunks/{upgrade-YWI5DJFA.js → upgrade-5SRFLUNW.js} +8 -15
  246. package/dist/cli-bundle/chunks/upgrade-5SRFLUNW.js.map +7 -0
  247. package/dist/cli-bundle/chunks/{upgrade-RSE5PC44.js → upgrade-FFXGO43H.js} +9 -16
  248. package/dist/cli-bundle/chunks/upgrade-FFXGO43H.js.map +1 -0
  249. package/dist/cli-bundle/chunks/{validate-UCEOB7S6.js → validate-CRWXZILW.js} +16 -16
  250. package/dist/cli-bundle/chunks/{validate-NK3WKB7C.js → validate-T3LPWSZG.js} +16 -16
  251. package/dist/cli-bundle/main.js +51 -62
  252. package/dist/cli-bundle/main.js.map +3 -3
  253. package/dist/core/config/nested-settings.d.ts +0 -2
  254. package/dist/core/config/nested-settings.js +2 -4
  255. package/dist/core/config/nested-settings.js.map +1 -1
  256. package/dist/core/diagnostics/remediation.js +7 -2
  257. package/dist/core/diagnostics/remediation.js.map +1 -1
  258. package/dist/core/fs/fs-utils.js +29 -4
  259. package/dist/core/fs/fs-utils.js.map +1 -1
  260. package/dist/core/packages/root.d.ts +10 -0
  261. package/dist/core/packages/root.js +24 -2
  262. package/dist/core/packages/root.js.map +1 -1
  263. package/dist/core/schema/runtime-schema.js +3 -6
  264. package/dist/core/schema/runtime-schema.js.map +1 -1
  265. package/dist/core/search/background-refresh.d.ts +0 -8
  266. package/dist/core/search/background-refresh.js +2 -9
  267. package/dist/core/search/background-refresh.js.map +1 -1
  268. package/dist/core/search/vector-stores.js +6 -8
  269. package/dist/core/search/vector-stores.js.map +1 -1
  270. package/dist/core/sentry/instrument.js +4 -17
  271. package/dist/core/sentry/instrument.js.map +1 -1
  272. package/dist/core/store/paths.js +17 -3
  273. package/dist/core/store/paths.js.map +1 -1
  274. package/dist/core/telemetry/runtime.d.ts +1 -0
  275. package/dist/core/telemetry/runtime.js +3 -3
  276. package/dist/core/telemetry/runtime.js.map +1 -1
  277. package/dist/mcp/server.js +76 -13
  278. package/dist/mcp/server.js.map +1 -1
  279. package/dist/sdk/cli-contracts/commander-types.js +4 -4
  280. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  281. package/dist/sdk/cli-contracts/tool-parameter-tables.js +3 -3
  282. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  283. package/dist/sdk/cli-contracts.js +10 -8
  284. package/dist/sdk/cli-contracts.js.map +1 -1
  285. package/docs/AGENT_GUIDE.md +3 -1
  286. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  287. package/docs/COMMANDS.md +6 -4
  288. package/docs/CONFIGURATION.md +6 -0
  289. package/docs/EXTENSIONS.md +0 -5
  290. package/docs/RELEASING.md +17 -0
  291. package/marketplace.json +1 -1
  292. package/package.json +1 -1
  293. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  294. package/plugins/pm-claude/README.md +3 -3
  295. package/plugins/pm-claude/commands/pm-init.md +1 -1
  296. package/dist/cli-bundle/chunks/activity-5UROHJ3D.js +0 -16
  297. package/dist/cli-bundle/chunks/chunk-42LOFGJS.js.map +0 -7
  298. package/dist/cli-bundle/chunks/chunk-4GHZR3BA.js.map +0 -1
  299. package/dist/cli-bundle/chunks/chunk-CKLBZHS7.js.map +0 -7
  300. package/dist/cli-bundle/chunks/chunk-CLD3XNCH.js.map +0 -1
  301. package/dist/cli-bundle/chunks/chunk-IMCJBN2Q.js.map +0 -7
  302. package/dist/cli-bundle/chunks/chunk-M2PW7EZU.js.map +0 -7
  303. package/dist/cli-bundle/chunks/chunk-MWRS7Z4P.js.map +0 -7
  304. package/dist/cli-bundle/chunks/chunk-NHR2QXXZ.js.map +0 -1
  305. package/dist/cli-bundle/chunks/chunk-QQL5QSTZ.js.map +0 -1
  306. package/dist/cli-bundle/chunks/chunk-TINUJMWN.js.map +0 -1
  307. package/dist/cli-bundle/chunks/chunk-TYJJOTUA.js.map +0 -1
  308. package/dist/cli-bundle/chunks/chunk-UJUT6AHZ.js.map +0 -7
  309. package/dist/cli-bundle/chunks/chunk-WAA7UI6M.js.map +0 -7
  310. package/dist/cli-bundle/chunks/chunk-WR5567FH.js.map +0 -7
  311. package/dist/cli-bundle/chunks/chunk-X4IZKYHP.js.map +0 -1
  312. package/dist/cli-bundle/chunks/chunk-XS3O2TFJ.js.map +0 -1
  313. package/dist/cli-bundle/chunks/chunk-YPH4ESA2.js.map +0 -1
  314. package/dist/cli-bundle/chunks/close-P4ZBKODL.js +0 -13
  315. package/dist/cli-bundle/chunks/close-many-DBLEYFOY.js.map +0 -7
  316. package/dist/cli-bundle/chunks/close-many-LAC5VR4G.js.map +0 -1
  317. package/dist/cli-bundle/chunks/config-RZRVS3ZV.js.map +0 -1
  318. package/dist/cli-bundle/chunks/config-YJSAAADD.js.map +0 -7
  319. package/dist/cli-bundle/chunks/create-4DS2QWQC.js +0 -27
  320. package/dist/cli-bundle/chunks/gc-34NXSNSN.js.map +0 -1
  321. package/dist/cli-bundle/chunks/gc-SPIIZX3A.js.map +0 -7
  322. package/dist/cli-bundle/chunks/health-4SNTA2TF.js.map +0 -7
  323. package/dist/cli-bundle/chunks/health-7G3EPM57.js.map +0 -1
  324. package/dist/cli-bundle/chunks/history-YDUEILKP.js +0 -20
  325. package/dist/cli-bundle/chunks/history-redact-KASLLPE7.js +0 -19
  326. package/dist/cli-bundle/chunks/init-IGSS4GNH.js +0 -17
  327. package/dist/cli-bundle/chunks/list-E44O2K64.js +0 -20
  328. package/dist/cli-bundle/chunks/register-list-query-I65EZ3HB.js.map +0 -1
  329. package/dist/cli-bundle/chunks/register-list-query-OECMHO4G.js.map +0 -7
  330. package/dist/cli-bundle/chunks/register-setup-DNDCGZ4O.js.map +0 -1
  331. package/dist/cli-bundle/chunks/restore-SJSASGZP.js +0 -17
  332. package/dist/cli-bundle/chunks/schema-B7NQ6XVP.js.map +0 -7
  333. package/dist/cli-bundle/chunks/schema-HEGYH6CE.js.map +0 -1
  334. package/dist/cli-bundle/chunks/search-DVVQ4UO2.js.map +0 -1
  335. package/dist/cli-bundle/chunks/search-JNEZJV7H.js.map +0 -7
  336. package/dist/cli-bundle/chunks/test-ML5RLWXE.js +0 -32
  337. package/dist/cli-bundle/chunks/update-6C67X4KS.js +0 -21
  338. package/dist/cli-bundle/chunks/update-VF26YPT3.js +0 -25
  339. package/dist/cli-bundle/chunks/upgrade-RSE5PC44.js.map +0 -1
  340. package/dist/cli-bundle/chunks/upgrade-YWI5DJFA.js.map +0 -7
  341. /package/dist/cli-bundle/chunks/{activity-5UROHJ3D.js.map → activity-A3QKFSSF.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{activity-YVB3QRTE.js.map → activity-Q7XMIZIH.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{aggregate-LH66F75F.js.map → aggregate-GBSHSXOB.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{aggregate-OHSWFQJM.js.map → aggregate-HKQJZUBG.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{append-2PPYFAG5.js.map → append-3RFOU7P5.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{append-AUGT5W6J.js.map → append-OM74OJVT.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-HRMHZ4RV.js.map → chunk-2BYKYPWY.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-TP4DDY27.js.map → chunk-2HMD3JM2.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-4CHEG6UK.js.map → chunk-2YPVCD7T.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-UT6WFXW2.js.map → chunk-4TI3532H.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-KNGVP5WJ.js.map → chunk-4WYBLB6J.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-V6EYFTRL.js.map → chunk-5NVJA7IW.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-WYEXLDDY.js.map → chunk-AEMKH5WQ.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-OKSKJKHX.js.map → chunk-AXBUHLW7.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-UEWA73ZZ.js.map → chunk-BFJPMUF5.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-B5RF3IP7.js.map → chunk-BKQMJXWY.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-HV5SSZXF.js.map → chunk-CBJXWXI5.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-LI65XLJR.js.map → chunk-EPWT7BEA.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-LMTOY5HE.js.map → chunk-ETZZU5QF.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-LIN2BPJ7.js.map → chunk-F33VC5EX.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-SFFVGNHC.js.map → chunk-FGRJZVXD.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-HLC3KTLP.js.map → chunk-FO2TYSQZ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-3A2CMEM7.js.map → chunk-HOA3GMB6.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-HMMMWBK2.js.map → chunk-HP35AVFS.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-AVJD6VTA.js.map → chunk-J4DKAGTM.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-YO3THIJF.js.map → chunk-JS47EKLP.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{chunk-2IXCHCLM.js.map → chunk-K62SNVVE.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{chunk-H7EO3QA3.js.map → chunk-KN4WSESY.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{chunk-C5W2UH56.js.map → chunk-KP4KIUQT.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{chunk-GPXQBR3H.js.map → chunk-KVXIQDJG.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{chunk-NQL32HQ5.js.map → chunk-L3LYL3ID.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{chunk-WCQZBDDH.js.map → chunk-M7UBTVFT.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{chunk-3EOBJOF4.js.map → chunk-MSH23UWO.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{chunk-UAQOQ7IE.js.map → chunk-N4SQZ7L3.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{chunk-FY6Z3FYY.js.map → chunk-NDSMKB2I.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{chunk-2IF7WLB7.js.map → chunk-NGEEXR2R.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{chunk-UIIQC5YO.js.map → chunk-NLVCMVC7.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{chunk-LQHBENVW.js.map → chunk-NUKHZZNM.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{chunk-YBZW2QQ7.js.map → chunk-ODN53S6H.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{chunk-LXO6V66E.js.map → chunk-OTY2YEH5.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{chunk-6RZXO5M2.js.map → chunk-OVSSE2JP.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{chunk-R3V3YCMH.js.map → chunk-QF4OPBAG.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{chunk-FHHBD7PN.js.map → chunk-QFVASU44.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{chunk-SQPKRA54.js.map → chunk-QQPZYP73.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{chunk-5AXMRKN5.js.map → chunk-QWNUDGFQ.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{chunk-6J4K6JLA.js.map → chunk-SDLEYY6A.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{chunk-MOYM2C3J.js.map → chunk-TBLBEOEX.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{chunk-TNPBPNII.js.map → chunk-UEXNNF3K.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{chunk-RVPTZKBC.js.map → chunk-UMMJAJB2.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{chunk-THDEID2Z.js.map → chunk-URJEZOLB.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{chunk-UYQ7HXH4.js.map → chunk-XEKZCBCS.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{chunk-2OJHLWBZ.js.map → chunk-XLSQ3QLT.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{chunk-X7UHMKPE.js.map → chunk-XNGMIVQY.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{chunk-B2KZGPM2.js.map → chunk-XZS4MV37.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{chunk-GNIUOLZ2.js.map → chunk-YEFOCDIK.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{chunk-GUZBNB3G.js.map → chunk-Z2HXAFFH.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{claim-KW743OSW.js.map → claim-NHBIIBOW.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{claim-BJ4QMPJC.js.map → claim-RNEBQCOO.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{close-P4ZBKODL.js.map → close-UNTFXVM3.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{close-SYHSRZDC.js.map → close-ZMXL2WDS.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{comments-JEO6HHVM.js.map → comments-EFVBHWPT.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{comments-YT2PQ5DD.js.map → comments-J5Q4IJPH.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{context-LGYEEKAW.js.map → context-AVLO4IFH.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{context-ZUH5IOOI.js.map → context-WMSI2D65.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{contracts-YXJ6NXKH.js.map → contracts-D4BN3VSQ.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{contracts-ZIBXROPE.js.map → contracts-RGPOBLPL.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{copy-YPWEIAPD.js.map → copy-H6TXHK7S.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{copy-BZALX5MQ.js.map → copy-WXE3OOLZ.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{create-4DS2QWQC.js.map → create-EZWAMUKR.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{create-CF7EVRX7.js.map → create-PUAIJEZ7.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{delete-KR4VBWVE.js.map → delete-PKR2JHLH.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{delete-XLZRTRKR.js.map → delete-WBME6WG5.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{deps-2YTXD3VM.js.map → deps-4BQEDV4L.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{deps-GZMFMTGS.js.map → deps-KWHQRO75.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{docs-SLROFEQ4.js.map → docs-364GT3ZR.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{docs-ZHISRR2D.js.map → docs-SCNBUGSV.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{extension-XYCUXICD.js.map → extension-CRE7JM47.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{extension-3C7OOI4F.js.map → extension-KK2UPXJD.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{files-FUWF2FYJ.js.map → files-3GESQAWL.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{files-J4I5IU4O.js.map → files-66EHM5ZR.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{get-SZKNRHMA.js.map → get-7J2ZCBV5.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{get-VITKYP6S.js.map → get-WXSLXV3K.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{history-SDAWYZR3.js.map → history-TJTO5GCR.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{history-YDUEILKP.js.map → history-ZERISU2L.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{history-compact-POTZGG7K.js.map → history-compact-CKNN6UKW.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{history-compact-DMW536VH.js.map → history-compact-N2Q7IR3T.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{history-redact-KASLLPE7.js.map → history-redact-GODBYT5A.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{history-redact-EPJ7GENL.js.map → history-redact-JUXUOH54.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{history-repair-YNESJRT6.js.map → history-repair-CCCPBNTF.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{history-repair-IJ7LLBET.js.map → history-repair-TDBBSRVK.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{init-YHVBTEET.js.map → init-6ZPKD3YN.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{init-IGSS4GNH.js.map → init-CBZHXBR3.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{learnings-T4PF24YN.js.map → learnings-U7U2FNIO.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{learnings-4YBMIVCZ.js.map → learnings-WYNTYQ5T.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{list-E44O2K64.js.map → list-7MTPPZHC.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{list-3KEVBOYW.js.map → list-JGP7ODML.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{notes-GJKALVZM.js.map → notes-P25YVTEG.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{notes-FLUCNJSH.js.map → notes-QIF6A7XS.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{plan-YYMIL3HV.js.map → plan-RACB5PI6.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{plan-T5MMZLI3.js.map → plan-SSBJFWXA.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{register-operations-GQKT35H5.js.map → register-operations-IBYWNJN5.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{register-operations-BNGAUMGK.js.map → register-operations-S2BOLUPF.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{restore-SJSASGZP.js.map → restore-3JRX27QW.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{restore-DDJGVZIN.js.map → restore-K72ZNPEP.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{stats-SYTJRR4Z.js.map → stats-O4UTMJMC.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{stats-7JDIJRDH.js.map → stats-WLJ3XBF5.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{telemetry-4HHWD5Y7.js.map → telemetry-EUVHFSQU.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{telemetry-EGWP7ZUX.js.map → telemetry-NRVWX25E.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{test-IIELLSZX.js.map → test-GXUBQNUC.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{test-ML5RLWXE.js.map → test-XN7RJL5Z.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{test-all-IHTUJRRC.js.map → test-all-UTFXC7S2.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{test-all-7DNCMML7.js.map → test-all-XM6OKI3L.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{test-runs-5FEMBV3A.js.map → test-runs-7FHCPEA3.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{test-runs-RNKZ37PS.js.map → test-runs-IK6E2HNX.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{update-6C67X4KS.js.map → update-LFBSEW3N.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{update-VF26YPT3.js.map → update-U4B4OMHZ.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{update-many-BSZZZYXY.js.map → update-many-5KD33MKY.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{update-many-BWKJJEBF.js.map → update-many-N3YTM7K4.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{validate-UCEOB7S6.js.map → validate-CRWXZILW.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{validate-NK3WKB7C.js.map → validate-T3LPWSZG.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  normalizeItemTypeDefinition,
7
7
  normalizeItemTypeStringList,
8
8
  strictPolicyCommand
9
- } from "./chunk-X4IZKYHP.js";
9
+ } from "./chunk-YJAKN2N2.js";
10
10
 
11
11
  // dist/core/item/type-registry.js
12
12
  var DEFAULT_REQUIRED_CREATE_FIELDS = [
@@ -648,6 +648,6 @@ export {
648
648
  resolveCommandOptionPolicyState,
649
649
  validateTypeOptions
650
650
  };
651
- //# sourceMappingURL=chunk-GUZBNB3G.js.map
651
+ //# sourceMappingURL=chunk-Z2HXAFFH.js.map
652
652
 
653
653
  //# debugId=3da0c8ca-24fb-514c-aeb6-985e53cd4d27
@@ -3,16 +3,16 @@ import {
3
3
  parseItemTypesFile,
4
4
  serializeItemTypesFile,
5
5
  upsertItemType
6
- } from "./chunk-HMMMWBK2.js";
6
+ } from "./chunk-HP35AVFS.js";
7
7
  import {
8
8
  runExtension
9
- } from "./chunk-KR6R465K.js";
9
+ } from "./chunk-7WXGR44E.js";
10
10
  import {
11
11
  normalizePrefix
12
- } from "./chunk-2IXCHCLM.js";
12
+ } from "./chunk-K62SNVVE.js";
13
13
  import {
14
14
  resolveItemTypeRegistry
15
- } from "./chunk-HRMHZ4RV.js";
15
+ } from "./chunk-2BYKYPWY.js";
16
16
  import {
17
17
  DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
18
18
  EXIT_CODE,
@@ -31,7 +31,7 @@ import {
31
31
  runActiveOnWriteHooks,
32
32
  writeFileAtomic,
33
33
  writeSettings
34
- } from "./chunk-UJUT6AHZ.js";
34
+ } from "./chunk-3TXWDGPU.js";
35
35
 
36
36
  // dist/cli/commands/init.js
37
37
  import fs2 from "node:fs/promises";
@@ -367,7 +367,7 @@ async function runInitAgentGuidance(options) {
367
367
  !(function() {
368
368
  try {
369
369
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
370
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9395c248-0605-5d4c-bc9a-ce5b433a4fb0");
370
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "58fd8bd3-ecc5-5bc5-9330-9d5af3a2c650");
371
371
  } catch (e2) {
372
372
  }
373
373
  })();
@@ -554,6 +554,51 @@ async function registerInitTypePreset(pmRoot, settings, preset) {
554
554
  file: typesPath
555
555
  };
556
556
  }
557
+ async function isLikelyWorkspaceRoot(candidate) {
558
+ const indicators = [
559
+ ".git",
560
+ "package.json",
561
+ "pnpm-workspace.yaml",
562
+ "AGENTS.md",
563
+ path2.join(".agents", "pm")
564
+ ];
565
+ for (const indicator of indicators) {
566
+ if (await pathExists(path2.join(candidate, indicator))) {
567
+ return true;
568
+ }
569
+ }
570
+ return false;
571
+ }
572
+ async function assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot, global2, force) {
573
+ if (global2.path === void 0 || force) {
574
+ return;
575
+ }
576
+ if (await pathExists(path2.join(pmRoot, "settings.json"))) {
577
+ return;
578
+ }
579
+ if (!await isLikelyWorkspaceRoot(pmRoot)) {
580
+ return;
581
+ }
582
+ const nestedTracker = path2.join(pmRoot, ".agents", "pm");
583
+ throw new PmCliError(`Refusing to initialize tracker files directly in workspace root "${pmRoot}".`, EXIT_CODE.USAGE, {
584
+ code: "workspace_root_pm_path",
585
+ type: "urn:pm-cli:error:workspace_root_pm_path",
586
+ why: "--pm-path/--path points at the tracker storage directory itself, not the repository workspace. Point it at .agents/pm or pass --force if you intentionally want root-level tracker files.",
587
+ examples: [
588
+ `pm --pm-path ${nestedTracker} init --yes`,
589
+ "pm init --yes",
590
+ `pm --pm-path ${pmRoot} init --yes --force`
591
+ ],
592
+ nextSteps: [
593
+ "Use --pm-path <repo>/.agents/pm for repository-local tracker storage.",
594
+ "Use PM_PATH only for sandboxed tests or explicit tracker roots.",
595
+ "Pass --force only when root-level tracker files are intentional."
596
+ ],
597
+ recovery: {
598
+ next_best_command: `pm --pm-path ${nestedTracker} init --yes`
599
+ }
600
+ });
601
+ }
557
602
  async function runInitWizard(initialPrefix, telemetryDefault) {
558
603
  const rl = readline2.createInterface({ input: input2, output: output2 });
559
604
  try {
@@ -587,6 +632,7 @@ async function runInitWizard(initialPrefix, telemetryDefault) {
587
632
  async function runInit(prefixArg, global2, options = {}) {
588
633
  const cwd = process.cwd();
589
634
  const pmRoot = resolvePmRoot(cwd, global2.path);
635
+ await assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot, global2, options.force === true);
590
636
  const createdDirs = [];
591
637
  const warnings = [];
592
638
  let wizardUsed = false;
@@ -758,4 +804,4 @@ export {
758
804
  summarizeInitResult,
759
805
  runInit
760
806
  };
761
- //# sourceMappingURL=chunk-CKLBZHS7.js.map
807
+ //# sourceMappingURL=chunk-Z55JACL2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/commands/init.ts", "../../../../../../../../cli/commands/init-agent-guidance.ts"],
4
+ "sourcesContent": ["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport readline from \"node:readline/promises\";\nimport { stdin as input, stdout as output } from \"node:process\";\nimport { getActiveExtensionRegistrations, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { pathExists, readFileIfExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { normalizePrefix } from \"../../core/item/id.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport {\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n ensureRuntimeSchemaFileScaffold,\n filePathForSchemaSection,\n normalizeRuntimeSchemaSettings,\n} from \"../../core/schema/runtime-schema.js\";\nimport {\n normalizeAddTypeInput,\n parseItemTypesFile,\n serializeItemTypesFile,\n upsertItemType,\n} from \"../../core/schema/item-types-file.js\";\nimport { EXIT_CODE, GOVERNANCE_PRESET_DEFAULTS, PM_REQUIRED_SUBDIRS, SETTINGS_DEFAULTS } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport type { GovernancePreset, PmSettings } from \"../../types/index.js\";\nimport { runExtension, type ExtensionCommandResult } from \"./extension.js\";\nimport {\n INIT_AGENT_GUIDANCE_MODE_VALUES,\n runInitAgentGuidance,\n type InitAgentGuidanceMode,\n type InitAgentGuidanceSummary,\n} from \"./init-agent-guidance.js\";\n\nexport interface InitInstalledPackagesSummary {\n installed_all: boolean;\n installed_count: number;\n packages: Array<{\n alias: string;\n ok: boolean;\n }>;\n}\n\nexport type InitTypePresetName = \"agile\" | \"ops\" | \"research\";\n\nexport interface InitRegisteredTypePresetSummary {\n name: InitTypePresetName;\n registered: string[];\n updated: string[];\n file: string;\n}\n\nexport interface InitResult {\n ok: boolean;\n path: string;\n settings: PmSettings;\n created_dirs: string[];\n warnings: string[];\n governance_preset: GovernancePreset;\n wizard_used: boolean;\n registered_type_preset?: InitRegisteredTypePresetSummary;\n installed_packages?: InitInstalledPackagesSummary;\n next_steps: string[];\n agent_guidance: InitAgentGuidanceSummary;\n}\n\nexport interface InitCommandOptions {\n preset?: string;\n defaults?: boolean;\n author?: string;\n withPackages?: boolean;\n agentGuidance?: string;\n typePreset?: string;\n force?: boolean;\n}\n\n/**\n * Concise projection of an InitResult for the default (toon) renderer. It keeps\n * every piece of information that only init can surface — the resolved path, id\n * prefix, governance preset, telemetry capture level, created-directory count,\n * the full warnings list (including `already_exists:` markers), agent-guidance\n * summary, and next steps — but replaces the verbose full settings tree (~190\n * lines) with a compact `settings` summary. Use --verbose for the full tree.\n */\nexport interface InitConciseResult {\n ok: boolean;\n path: string;\n id_prefix: string;\n governance_preset: GovernancePreset;\n telemetry: {\n enabled: boolean;\n capture_level: string;\n };\n output_format: string;\n created_dirs_count: number;\n created_dirs: string[];\n warnings: string[];\n wizard_used: boolean;\n registered_type_preset?: InitRegisteredTypePresetSummary;\n installed_packages?: InitInstalledPackagesSummary;\n next_steps: string[];\n agent_guidance: InitAgentGuidanceSummary;\n hint: string;\n}\n\nexport function summarizeInitResult(result: InitResult): InitConciseResult {\n return {\n ok: result.ok,\n path: result.path,\n id_prefix: result.settings.id_prefix,\n governance_preset: result.governance_preset,\n telemetry: {\n enabled: result.settings.telemetry.enabled,\n capture_level: result.settings.telemetry.capture_level,\n },\n output_format: result.settings.output.default_format,\n created_dirs_count: result.created_dirs.length,\n created_dirs: result.created_dirs,\n warnings: result.warnings,\n wizard_used: result.wizard_used,\n ...(result.registered_type_preset ? { registered_type_preset: result.registered_type_preset } : {}),\n ...(result.installed_packages ? { installed_packages: result.installed_packages } : {}),\n next_steps: result.next_steps,\n agent_guidance: result.agent_guidance,\n hint: \"Re-run with --verbose for the full settings tree.\",\n };\n}\n\nfunction cloneDefaults(): PmSettings {\n return structuredClone(SETTINGS_DEFAULTS);\n}\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\nconst BUILTIN_GOVERNANCE_PRESETS: BuiltinGovernancePreset[] = [\"minimal\", \"default\", \"strict\"];\nconst INIT_TYPE_PRESET_NAMES: InitTypePresetName[] = [\"agile\", \"ops\", \"research\"];\n\nconst INIT_TYPE_PRESET_DEFINITIONS: Record<InitTypePresetName, Array<Parameters<typeof normalizeAddTypeInput>[0]>> = {\n agile: [\n {\n name: \"Story\",\n description: \"User-facing outcome or capability slice expressed from a stakeholder perspective.\",\n defaultStatus: \"open\",\n folder: \"stories\",\n aliases: [\"user-story\"],\n },\n {\n name: \"Spike\",\n description: \"Time-boxed investigation used to reduce uncertainty before implementation.\",\n defaultStatus: \"open\",\n folder: \"spikes\",\n aliases: [\"research-spike\"],\n },\n ],\n ops: [\n {\n name: \"Incident\",\n description: \"Operational disruption, degradation, or support escalation with recovery tracking.\",\n defaultStatus: \"open\",\n folder: \"incidents\",\n aliases: [\"outage\"],\n },\n {\n name: \"Runbook\",\n description: \"Repeatable operational procedure, diagnostic path, or response playbook.\",\n defaultStatus: \"open\",\n folder: \"runbooks\",\n aliases: [\"playbook\"],\n },\n ],\n research: [\n {\n name: \"Experiment\",\n description: \"Validated-learning activity with hypothesis, method, and outcome tracking.\",\n defaultStatus: \"open\",\n folder: \"experiments\",\n aliases: [\"study\"],\n },\n {\n name: \"Hypothesis\",\n description: \"Testable claim or assumption that should be supported, rejected, or refined.\",\n defaultStatus: \"open\",\n folder: \"hypotheses\",\n aliases: [\"assumption\"],\n },\n ],\n};\n\nfunction normalizeInitGovernancePreset(rawValue: string | undefined): BuiltinGovernancePreset | undefined {\n if (rawValue === undefined) {\n return undefined;\n }\n const normalized = rawValue.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized.length === 0) {\n throw new PmCliError(\"--preset must not be empty\", EXIT_CODE.USAGE);\n }\n if (normalized === \"minimal\" || normalized === \"default\" || normalized === \"strict\") {\n return normalized;\n }\n if (normalized === \"lite\" || normalized === \"minimum\") {\n return \"minimal\";\n }\n throw new PmCliError(\n `Invalid --preset value \"${rawValue}\". Allowed: ${BUILTIN_GOVERNANCE_PRESETS.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeInitTypePreset(rawValue: string | undefined): InitTypePresetName | undefined {\n if (rawValue === undefined) {\n return undefined;\n }\n const normalized = rawValue.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized.length === 0) {\n throw new PmCliError(\"--type-preset must not be empty\", EXIT_CODE.USAGE);\n }\n if (normalized === \"agile\" || normalized === \"ops\" || normalized === \"research\") {\n return normalized;\n }\n throw new PmCliError(\n `Invalid --type-preset value \"${rawValue}\". Allowed: ${INIT_TYPE_PRESET_NAMES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeOptionalInitAuthor(rawValue: string | undefined): string | undefined {\n if (rawValue === undefined) {\n return undefined;\n }\n const normalized = rawValue.trim();\n if (normalized.length === 0) {\n throw new PmCliError(\"--author must not be empty\", EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction normalizeInitAgentGuidanceMode(rawValue: string | undefined): InitAgentGuidanceMode {\n if (rawValue === undefined) {\n return \"ask\";\n }\n const normalized = rawValue.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized.length === 0) {\n throw new PmCliError(\"--agent-guidance must not be empty\", EXIT_CODE.USAGE);\n }\n if (normalized === \"ask\" || normalized === \"add\" || normalized === \"skip\" || normalized === \"status\") {\n return normalized;\n }\n throw new PmCliError(\n `Invalid --agent-guidance value \"${rawValue}\". Allowed: ${INIT_AGENT_GUIDANCE_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction parseYesNoChoice(answer: string, currentDefault: boolean): boolean {\n const normalized = answer.trim().toLowerCase();\n if (normalized.length === 0) {\n return currentDefault;\n }\n if (normalized === \"y\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"n\" || normalized === \"no\") {\n return false;\n }\n return currentDefault;\n}\n\nfunction applyGovernancePreset(settings: PmSettings, preset: BuiltinGovernancePreset): void {\n const knobs = GOVERNANCE_PRESET_DEFAULTS[preset];\n settings.governance = {\n preset,\n ...knobs,\n };\n settings.validation.parent_reference = knobs.parent_reference;\n settings.validation.metadata_profile = knobs.metadata_profile;\n}\n\nfunction summarizeInstalledPackages(result: ExtensionCommandResult): InitInstalledPackagesSummary {\n const details = result.details as {\n installed_all?: unknown;\n installed_count?: unknown;\n packages?: Array<{\n alias?: unknown;\n ok?: unknown;\n }>;\n };\n return {\n installed_all: details.installed_all === true,\n installed_count: typeof details.installed_count === \"number\" ? details.installed_count : 0,\n packages: Array.isArray(details.packages)\n ? details.packages.map((entry) => ({\n alias: typeof entry.alias === \"string\" ? entry.alias : \"\",\n ok: entry.ok === true,\n }))\n : [],\n };\n}\n\nasync function registerInitTypePreset(\n pmRoot: string,\n settings: PmSettings,\n preset: InitTypePresetName,\n): Promise<InitRegisteredTypePresetSummary> {\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n const parsed = parseItemTypesFile(await readFileIfExists(typesPath));\n let nextFile = parsed;\n const registered: string[] = [];\n const updated: string[] = [];\n for (const rawDefinition of INIT_TYPE_PRESET_DEFINITIONS[preset]) {\n const normalized = normalizeAddTypeInput(rawDefinition);\n const upsert = upsertItemType(nextFile, normalized);\n nextFile = upsert.file;\n (upsert.replaced ? updated : registered).push(upsert.definition.name);\n }\n await writeFileAtomic(typesPath, serializeItemTypesFile(nextFile));\n return {\n name: preset,\n registered,\n updated,\n file: typesPath,\n };\n}\n\nasync function isLikelyWorkspaceRoot(candidate: string): Promise<boolean> {\n const indicators = [\n \".git\",\n \"package.json\",\n \"pnpm-workspace.yaml\",\n \"AGENTS.md\",\n path.join(\".agents\", \"pm\"),\n ];\n for (const indicator of indicators) {\n if (await pathExists(path.join(candidate, indicator))) {\n return true;\n }\n }\n return false;\n}\n\nasync function assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot: string, global: GlobalOptions, force: boolean): Promise<void> {\n if (global.path === undefined || force) {\n return;\n }\n if (await pathExists(path.join(pmRoot, \"settings.json\"))) {\n return;\n }\n if (!(await isLikelyWorkspaceRoot(pmRoot))) {\n return;\n }\n const nestedTracker = path.join(pmRoot, \".agents\", \"pm\");\n throw new PmCliError(\n `Refusing to initialize tracker files directly in workspace root \"${pmRoot}\".`,\n EXIT_CODE.USAGE,\n {\n code: \"workspace_root_pm_path\",\n type: \"urn:pm-cli:error:workspace_root_pm_path\",\n why: \"--pm-path/--path points at the tracker storage directory itself, not the repository workspace. Point it at .agents/pm or pass --force if you intentionally want root-level tracker files.\",\n examples: [\n `pm --pm-path ${nestedTracker} init --yes`,\n \"pm init --yes\",\n `pm --pm-path ${pmRoot} init --yes --force`,\n ],\n nextSteps: [\n \"Use --pm-path <repo>/.agents/pm for repository-local tracker storage.\",\n \"Use PM_PATH only for sandboxed tests or explicit tracker roots.\",\n \"Pass --force only when root-level tracker files are intentional.\",\n ],\n recovery: {\n next_best_command: `pm --pm-path ${nestedTracker} init --yes`,\n },\n },\n );\n}\n\nasync function runInitWizard(initialPrefix: string, telemetryDefault: boolean): Promise<{\n prefix: string;\n preset: BuiltinGovernancePreset;\n telemetry_enabled: boolean;\n}> {\n const rl = readline.createInterface({ input, output });\n try {\n output.write(\"pm init setup wizard (agent-optimized)\\n\");\n output.write(\"This walkthrough is non-destructive and each choice can be changed later with pm config.\\n\\n\");\n\n output.write(\"1/3 Item ID prefix\\n\");\n output.write(\"Prefix is prepended to generated IDs (for example pm-a1b2).\\n\");\n const prefixAnswer = await rl.question(`Item ID prefix [${initialPrefix}]: `);\n const resolvedPrefix = prefixAnswer.trim().length > 0 ? normalizePrefix(prefixAnswer) : initialPrefix;\n\n output.write(\"\\n2/3 Governance preset\\n\");\n output.write(\"minimal: no ownership blocking, progressive create defaults, close validation off.\\n\");\n output.write(\"default: ownership conflict warnings, progressive create defaults, close validation warn.\\n\");\n output.write(\"strict: ownership blocking, strict create defaults, close validation strict.\\n\");\n const presetAnswer = await rl.question(\"Governance preset [minimal/default/strict] (default: minimal): \");\n const resolvedPreset = normalizeInitGovernancePreset(presetAnswer.trim().length > 0 ? presetAnswer : \"minimal\") ?? \"minimal\";\n\n output.write(\"\\n3/3 Project telemetry\\n\");\n output.write(\"Telemetry helps improve reliability and can be disabled anytime via pm config.\\n\");\n const telemetryLabel = telemetryDefault ? \"Y/n\" : \"y/N\";\n const telemetryAnswer = await rl.question(`Enable telemetry for this project? [${telemetryLabel}] `);\n const telemetryEnabled = parseYesNoChoice(telemetryAnswer, telemetryDefault);\n\n output.write(\"\\n\");\n return {\n prefix: resolvedPrefix,\n preset: resolvedPreset,\n telemetry_enabled: telemetryEnabled,\n };\n } finally {\n rl.close();\n }\n}\n\nexport async function runInit(\n prefixArg: string | undefined,\n global: GlobalOptions,\n options: InitCommandOptions = {},\n): Promise<InitResult> {\n const cwd = process.cwd();\n const pmRoot = resolvePmRoot(cwd, global.path);\n await assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot, global, options.force === true);\n const createdDirs: string[] = [];\n const warnings: string[] = [];\n let wizardUsed = false;\n\n for (const subdir of PM_REQUIRED_SUBDIRS) {\n const target = subdir ? path.join(pmRoot, subdir) : pmRoot;\n const existed = await pathExists(target);\n await fs.mkdir(target, { recursive: true });\n if (existed) {\n warnings.push(`already_exists:${target}`);\n } else {\n createdDirs.push(target);\n }\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: target,\n scope: \"project\",\n op: \"init:ensure_dir\",\n })),\n );\n }\n\n const settingsPath = path.join(pmRoot, \"settings.json\");\n const settingsExists = await pathExists(settingsPath);\n let normalizedPrefix = normalizePrefix(prefixArg);\n const presetFromOption = normalizeInitGovernancePreset(options.preset);\n const useDefaults = options.defaults === true;\n const authorFromOption = normalizeOptionalInitAuthor(options.author);\n const installBundledPackages = options.withPackages === true;\n const agentGuidanceMode = normalizeInitAgentGuidanceMode(options.agentGuidance);\n const typePreset = normalizeInitTypePreset(options.typePreset);\n let chosenPreset = presetFromOption;\n let chosenTelemetryEnabled: boolean | undefined;\n\n let settings: PmSettings;\n if (settingsExists) {\n settings = await readSettings(pmRoot);\n warnings.push(`already_exists:${settingsPath}`);\n let changed = false;\n if (prefixArg !== undefined && settings.id_prefix !== normalizedPrefix) {\n settings.id_prefix = normalizedPrefix;\n warnings.push(`updated:id_prefix:${normalizedPrefix}`);\n changed = true;\n }\n if (presetFromOption !== undefined && settings.governance.preset !== presetFromOption) {\n applyGovernancePreset(settings, presetFromOption);\n warnings.push(`updated:governance_preset:${presetFromOption}`);\n changed = true;\n }\n if (authorFromOption !== undefined && settings.author_default !== authorFromOption) {\n settings.author_default = authorFromOption;\n warnings.push(`updated:author_default:${authorFromOption}`);\n changed = true;\n }\n if (changed) {\n await writeSettings(pmRoot, settings);\n }\n } else {\n if (presetFromOption === undefined && !useDefaults && process.stdin.isTTY === true && process.stdout.isTTY === true) {\n const wizardChoices = await runInitWizard(normalizedPrefix, SETTINGS_DEFAULTS.telemetry.enabled);\n normalizedPrefix = wizardChoices.prefix;\n chosenPreset = wizardChoices.preset;\n chosenTelemetryEnabled = wizardChoices.telemetry_enabled;\n wizardUsed = true;\n }\n const effectivePreset = chosenPreset ?? \"minimal\";\n settings = cloneDefaults();\n settings.id_prefix = normalizedPrefix;\n applyGovernancePreset(settings, effectivePreset);\n if (authorFromOption !== undefined) {\n settings.author_default = authorFromOption;\n }\n if (chosenTelemetryEnabled !== undefined) {\n settings.telemetry.enabled = chosenTelemetryEnabled;\n settings.telemetry.first_run_prompt_completed = true;\n }\n await writeSettings(pmRoot, settings);\n }\n\n const agentGuidanceResult = await runInitAgentGuidance({\n pm_root: pmRoot,\n cwd,\n mode: agentGuidanceMode,\n interactive: process.stdin.isTTY === true && process.stdout.isTTY === true,\n settings,\n });\n warnings.push(...agentGuidanceResult.warnings);\n if (agentGuidanceResult.settings_changed) {\n await writeSettings(pmRoot, settings);\n }\n\n const runtimeSchemaScaffold = await ensureRuntimeSchemaFileScaffold(pmRoot, settings.schema);\n for (const createdPath of runtimeSchemaScaffold.created_paths) {\n createdDirs.push(createdPath);\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: createdPath,\n scope: \"project\",\n op: \"init:runtime_schema_file\",\n })),\n );\n }\n\n let registeredTypePreset: InitRegisteredTypePresetSummary | undefined;\n if (typePreset !== undefined) {\n registeredTypePreset = await registerInitTypePreset(pmRoot, settings, typePreset);\n warnings.push(`registered_type_preset:${typePreset}`);\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: registeredTypePreset.file,\n scope: \"project\",\n op: \"init:type_preset\",\n })),\n );\n settings = await readSettings(pmRoot);\n }\n\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n for (const typeFolder of typeRegistry.folders) {\n if ((PM_REQUIRED_SUBDIRS as readonly string[]).includes(typeFolder)) {\n continue;\n }\n const target = path.join(pmRoot, typeFolder);\n const existed = await pathExists(target);\n await fs.mkdir(target, { recursive: true });\n if (existed) {\n warnings.push(`already_exists:${target}`);\n } else {\n createdDirs.push(target);\n }\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: target,\n scope: \"project\",\n op: \"init:ensure_dir\",\n })),\n );\n }\n\n let installedPackages: InitInstalledPackagesSummary | undefined;\n if (installBundledPackages) {\n const packageInstallResult = await runExtension(\"all\", { install: true, project: true }, global);\n warnings.push(...packageInstallResult.warnings);\n installedPackages = summarizeInstalledPackages(packageInstallResult);\n if (!installedPackages.installed_all || installedPackages.packages.some((entry) => !entry.ok)) {\n throw new PmCliError(\"pm init --with-packages did not install all bundled packages successfully.\", EXIT_CODE.GENERIC_FAILURE);\n }\n }\n\n const nextSteps: string[] = [\n 'Create your first item: pm create --type Task --title \"<title>\"',\n 'List active items: pm list',\n 'Get agent-friendly project context: pm context',\n ];\n if (!installBundledPackages) {\n nextSteps.push(\n \"Add optional packages for richer workflows: pm install calendar --project, pm install templates --project, pm install guide-shell --project\",\n );\n nextSteps.push(\"Or install everything bundled: pm init --with-packages (idempotent on re-run)\");\n } else {\n nextSteps.push(\"Explore newly-available commands: pm cal, pm templates, pm guide\");\n }\n if (registeredTypePreset) {\n nextSteps.push(`Inspect registered preset types: pm schema list, pm schema show ${registeredTypePreset.registered[0] ?? registeredTypePreset.updated[0]}`);\n }\n nextSteps.push(\"Set PM_AUTHOR=<your-agent-id> so mutations attribute to the right caller.\");\n for (const guidanceNextStep of agentGuidanceResult.next_steps) {\n if (!nextSteps.includes(guidanceNextStep)) {\n nextSteps.push(guidanceNextStep);\n }\n }\n\n return {\n ok: true,\n path: pmRoot,\n settings,\n created_dirs: createdDirs,\n warnings,\n governance_preset: settings.governance.preset,\n wizard_used: wizardUsed,\n ...(registeredTypePreset ? { registered_type_preset: registeredTypePreset } : {}),\n ...(installedPackages ? { installed_packages: installedPackages } : {}),\n next_steps: nextSteps,\n agent_guidance: agentGuidanceResult.summary,\n };\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport readline from \"node:readline/promises\";\nimport { stdin as input, stdout as output } from \"node:process\";\nimport { runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n\nexport type InitAgentGuidanceMode = \"ask\" | \"add\" | \"skip\" | \"status\";\n\nexport const INIT_AGENT_GUIDANCE_MODE_VALUES: InitAgentGuidanceMode[] = [\"ask\", \"add\", \"skip\", \"status\"];\n\nconst AGENT_GUIDANCE_TARGET_FILENAMES = [\"AGENTS.md\", \"CLAUDE.md\"] as const;\nconst AGENT_GUIDANCE_REQUIRED_TOKENS = [\n \"pm init\",\n \"pm context\",\n \"pm search\",\n \"pm create\",\n \"pm claim\",\n \"pm files\",\n \"pm docs\",\n \"pm test --run\",\n \"pm close\",\n \"pm release\",\n \"pm_author\",\n] as const;\nconst AGENT_GUIDANCE_REQUIRED_TOKEN_THRESHOLD = 8;\nconst AGENT_GUIDANCE_TEMPLATE_VERSION = 1;\nconst AGENT_GUIDANCE_START_MARKER_PREFIX = \"<!-- pm-cli:agent-guidance:start:\";\nconst AGENT_GUIDANCE_START_MARKER = `<!-- pm-cli:agent-guidance:start:v${AGENT_GUIDANCE_TEMPLATE_VERSION} -->`;\nconst AGENT_GUIDANCE_END_MARKER = \"<!-- pm-cli:agent-guidance:end -->\";\n\ninterface AgentGuidanceFileScan {\n file_path: string;\n exists: boolean;\n has_guidance: boolean;\n has_marker: boolean;\n}\n\ninterface AgentGuidanceBlockRange {\n start_index: number;\n end_index: number;\n}\n\nexport interface InitAgentGuidanceSummary {\n mode: InitAgentGuidanceMode;\n present: boolean;\n prompted: boolean;\n applied: boolean;\n skipped: boolean;\n declined: boolean;\n prompt_completed: boolean;\n template_version: number;\n target_file: string;\n checked_files: string[];\n files_with_guidance: string[];\n missing_files: string[];\n}\n\nexport interface RunInitAgentGuidanceOptions {\n pm_root: string;\n cwd: string;\n mode: InitAgentGuidanceMode;\n interactive: boolean;\n settings: PmSettings;\n}\n\nexport interface RunInitAgentGuidanceResult {\n summary: InitAgentGuidanceSummary;\n warnings: string[];\n next_steps: string[];\n settings_changed: boolean;\n}\n\nfunction toPortableRelativePath(projectRoot: string, targetPath: string): string {\n const relative = path.relative(projectRoot, targetPath);\n if (relative.length === 0) {\n return path.basename(targetPath);\n }\n return relative.split(path.sep).join(\"/\");\n}\n\nfunction ensureTrailingNewline(value: string): string {\n return value.endsWith(\"\\n\") ? value : `${value}\\n`;\n}\n\nfunction detectLineEnding(value: string): \"\\n\" | \"\\r\\n\" {\n return value.includes(\"\\r\\n\") ? \"\\r\\n\" : \"\\n\";\n}\n\nfunction findGuidanceBlockRange(content: string): AgentGuidanceBlockRange | null {\n const startIndex = content.indexOf(AGENT_GUIDANCE_START_MARKER_PREFIX);\n if (startIndex === -1) {\n return null;\n }\n const endMarkerIndex = content.indexOf(AGENT_GUIDANCE_END_MARKER, startIndex);\n if (endMarkerIndex === -1) {\n return null;\n }\n return {\n start_index: startIndex,\n end_index: endMarkerIndex + AGENT_GUIDANCE_END_MARKER.length,\n };\n}\n\nfunction hasGuidanceMarker(content: string): boolean {\n return findGuidanceBlockRange(content) !== null;\n}\n\nfunction buildAgentGuidanceBlock(lineEnding: \"\\n\" | \"\\r\\n\"): string {\n const lines = [\n AGENT_GUIDANCE_START_MARKER,\n \"## pm Workflow (Agent Quickstart)\",\n \"\",\n \"- Orient before mutate: `pm context --limit 10`, `pm search \\\"<keywords>\\\" --limit 10`, `pm list-open --limit 20`.\",\n \"- Claim and execute: `pm claim <id>` then `pm update <id> --status in_progress`.\",\n \"- Link evidence while coding: `pm files <id> --add ...`, `pm docs <id> --add ...`, `pm test <id> --add command=\\\"node scripts/run-tests.mjs test -- ...\\\"`.\",\n \"- Verify and close: `pm test <id> --run --progress`, `pm close <id> \\\"<evidence>\\\" --validate-close warn`, `pm release <id>`.\",\n \"- Set `PM_AUTHOR=<stable-agent-id>` before mutation commands.\",\n \"\",\n AGENT_GUIDANCE_END_MARKER,\n \"\",\n ];\n return lines.join(lineEnding);\n}\n\nfunction upsertAgentGuidanceBlock(existingContent: string): { next_content: string; changed: boolean } {\n const lineEnding = detectLineEnding(existingContent);\n const nextBlock = buildAgentGuidanceBlock(lineEnding);\n const existingRange = findGuidanceBlockRange(existingContent);\n if (existingRange) {\n const nextContent = ensureTrailingNewline(\n `${existingContent.slice(0, existingRange.start_index)}${nextBlock}${existingContent.slice(existingRange.end_index)}`,\n );\n return {\n next_content: nextContent,\n changed: nextContent !== existingContent,\n };\n }\n const separator = existingContent.length === 0 ? \"\" : existingContent.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n const nextContent = ensureTrailingNewline(`${existingContent}${separator}${nextBlock}`);\n return {\n next_content: nextContent,\n changed: nextContent !== existingContent,\n };\n}\n\nfunction resolveProjectRoot(pmRoot: string, cwd: string): string {\n const parent = path.dirname(pmRoot);\n if (path.basename(pmRoot) === \"pm\" && path.basename(parent) === \".agents\") {\n return path.dirname(parent);\n }\n return path.resolve(cwd, pmRoot);\n}\n\nfunction resolveTargetGuidancePath(scans: AgentGuidanceFileScan[], projectRoot: string): string {\n const existingAgents = scans.find((entry) => path.basename(entry.file_path) === \"AGENTS.md\" && entry.exists);\n if (existingAgents) {\n return existingAgents.file_path;\n }\n const existingAny = scans.find((entry) => entry.exists);\n if (existingAny) {\n return existingAny.file_path;\n }\n return path.join(projectRoot, \"AGENTS.md\");\n}\n\nfunction parsePromptChoice(answer: string, currentDefault: boolean): boolean {\n const normalized = answer.trim().toLowerCase();\n if (normalized.length === 0) {\n return currentDefault;\n }\n if (normalized === \"y\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"n\" || normalized === \"no\") {\n return false;\n }\n return currentDefault;\n}\n\nasync function promptForGuidanceWrite(targetRelativePath: string): Promise<boolean> {\n const rl = readline.createInterface({ input, output });\n try {\n output.write(\"\\nAgent guidance check\\n\");\n output.write(\"No AGENTS.md/CLAUDE.md file currently contains compact pm workflow guidance.\\n\");\n const answer = await rl.question(`Add a compact pm workflow section to ${targetRelativePath}? [Y/n] `);\n output.write(\"\\n\");\n return parsePromptChoice(answer, true);\n } finally {\n rl.close();\n }\n}\n\nfunction normalizeAgentGuidanceState(settings: PmSettings): PmSettings[\"agent_guidance\"] {\n const current = settings.agent_guidance;\n return {\n prompt_completed: current?.prompt_completed === true,\n declined: current?.declined === true,\n declined_at: typeof current?.declined_at === \"string\" ? current.declined_at : \"\",\n template_version:\n typeof current?.template_version === \"number\" && Number.isInteger(current.template_version) && current.template_version > 0\n ? current.template_version\n : AGENT_GUIDANCE_TEMPLATE_VERSION,\n last_checked_files: Array.isArray(current?.last_checked_files)\n ? [...new Set(current.last_checked_files.map((value) => value.trim()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n )\n : [],\n };\n}\n\nasync function scanGuidanceFiles(projectRoot: string): Promise<AgentGuidanceFileScan[]> {\n const scans: AgentGuidanceFileScan[] = [];\n for (const filename of AGENT_GUIDANCE_TARGET_FILENAMES) {\n const filePath = path.join(projectRoot, filename);\n const exists = await pathExists(filePath);\n if (!exists) {\n scans.push({\n file_path: filePath,\n exists,\n has_guidance: false,\n has_marker: false,\n });\n continue;\n }\n const content = await fs.readFile(filePath, \"utf8\");\n const contentLower = content.toLowerCase();\n const tokenHits = AGENT_GUIDANCE_REQUIRED_TOKENS.filter((token) => contentLower.includes(token));\n const hasMarker = hasGuidanceMarker(content);\n scans.push({\n file_path: filePath,\n exists,\n has_guidance: hasMarker || tokenHits.length >= AGENT_GUIDANCE_REQUIRED_TOKEN_THRESHOLD,\n has_marker: hasMarker,\n });\n }\n return scans;\n}\n\nfunction pushUnique(target: string[], value: string): void {\n if (!target.includes(value)) {\n target.push(value);\n }\n}\n\nfunction applyAgentGuidanceState(\n settings: PmSettings,\n currentState: PmSettings[\"agent_guidance\"],\n): { changed: boolean; state: PmSettings[\"agent_guidance\"] } {\n const existing = normalizeAgentGuidanceState(settings);\n const changed = JSON.stringify(existing) !== JSON.stringify(currentState);\n if (changed) {\n settings.agent_guidance = currentState;\n }\n return { changed, state: currentState };\n}\n\nasync function writeGuidanceFile(filePath: string): Promise<{ changed: boolean; warnings: string[] }> {\n const exists = await pathExists(filePath);\n const currentContent = exists ? await fs.readFile(filePath, \"utf8\") : \"\";\n const nextContent = upsertAgentGuidanceBlock(currentContent);\n if (!nextContent.changed) {\n return { changed: false, warnings: [] };\n }\n await fs.writeFile(filePath, nextContent.next_content, \"utf8\");\n return {\n changed: true,\n warnings: await runActiveOnWriteHooks({\n path: filePath,\n scope: \"project\",\n op: \"init:agent_guidance_file\",\n }),\n };\n}\n\nexport async function runInitAgentGuidance(options: RunInitAgentGuidanceOptions): Promise<RunInitAgentGuidanceResult> {\n const warnings: string[] = [];\n const nextSteps: string[] = [];\n const projectRoot = resolveProjectRoot(options.pm_root, options.cwd);\n let scans = await scanGuidanceFiles(projectRoot);\n const targetPath = resolveTargetGuidancePath(scans, projectRoot);\n const targetRelativePath = toPortableRelativePath(projectRoot, targetPath);\n const addLaterHint = \"Add workflow guidance later: pm init --agent-guidance add\";\n let prompted = false;\n let applied = false;\n let skipped = false;\n let state = normalizeAgentGuidanceState(options.settings);\n const checkedFiles = scans.map((entry) => toPortableRelativePath(projectRoot, entry.file_path));\n const presentBefore = scans.some((entry) => entry.has_guidance);\n\n const markState = (partial: Partial<PmSettings[\"agent_guidance\"]>): void => {\n state = {\n ...state,\n ...partial,\n template_version: AGENT_GUIDANCE_TEMPLATE_VERSION,\n last_checked_files: checkedFiles,\n };\n };\n\n if (options.mode === \"status\") {\n if (!presentBefore) {\n warnings.push(\"agent_guidance:missing\");\n pushUnique(nextSteps, addLaterHint);\n }\n } else if (options.mode === \"skip\") {\n skipped = true;\n markState({\n prompt_completed: true,\n declined: true,\n declined_at: state.declined_at.length > 0 ? state.declined_at : new Date().toISOString(),\n });\n warnings.push(\"agent_guidance:explicit_skip\");\n pushUnique(nextSteps, addLaterHint);\n } else if (options.mode === \"add\") {\n if (!presentBefore) {\n const writeResult = await writeGuidanceFile(targetPath);\n warnings.push(...writeResult.warnings);\n if (writeResult.changed) {\n applied = true;\n warnings.push(`agent_guidance:added:${targetRelativePath}`);\n }\n }\n markState({\n prompt_completed: true,\n declined: false,\n declined_at: \"\",\n });\n } else if (presentBefore) {\n if (state.declined) {\n markState({\n prompt_completed: true,\n declined: false,\n declined_at: \"\",\n });\n }\n } else if (state.prompt_completed && state.declined) {\n skipped = true;\n warnings.push(\"agent_guidance:skipped_declined\");\n pushUnique(nextSteps, addLaterHint);\n } else if (options.interactive) {\n prompted = true;\n const approved = await promptForGuidanceWrite(targetRelativePath);\n if (approved) {\n const writeResult = await writeGuidanceFile(targetPath);\n warnings.push(...writeResult.warnings);\n if (writeResult.changed) {\n applied = true;\n warnings.push(`agent_guidance:added:${targetRelativePath}`);\n }\n markState({\n prompt_completed: true,\n declined: false,\n declined_at: \"\",\n });\n } else {\n skipped = true;\n markState({\n prompt_completed: true,\n declined: true,\n declined_at: new Date().toISOString(),\n });\n warnings.push(\"agent_guidance:declined\");\n pushUnique(nextSteps, addLaterHint);\n }\n } else {\n warnings.push(\"agent_guidance:missing_non_interactive\");\n pushUnique(nextSteps, addLaterHint);\n }\n\n const stateUpdate = applyAgentGuidanceState(options.settings, state);\n if (applied) {\n scans = await scanGuidanceFiles(projectRoot);\n }\n\n const summary: InitAgentGuidanceSummary = {\n mode: options.mode,\n present: scans.some((entry) => entry.has_guidance),\n prompted,\n applied,\n skipped,\n declined: state.declined,\n prompt_completed: state.prompt_completed,\n template_version: state.template_version,\n target_file: targetRelativePath,\n checked_files: scans.map((entry) => toPortableRelativePath(projectRoot, entry.file_path)),\n files_with_guidance: scans\n .filter((entry) => entry.has_guidance)\n .map((entry) => toPortableRelativePath(projectRoot, entry.file_path)),\n missing_files: scans\n .filter((entry) => !entry.exists)\n .map((entry) => toPortableRelativePath(projectRoot, entry.file_path)),\n };\n\n return {\n summary,\n warnings,\n next_steps: nextSteps,\n settings_changed: stateUpdate.changed,\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["fs", "path", "readline", "input", "output", "nextContent", "path", "global", "readline", "input", "output", "fs"]
7
+ }
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  wrapOwnershipConflict
3
- } from "./chunk-V6EYFTRL.js";
3
+ } from "./chunk-5NVJA7IW.js";
4
4
  import {
5
5
  resolveAuthor
6
6
  } from "./chunk-O7IWB35H.js";
7
- import "./chunk-HV5SSZXF.js";
8
- import "./chunk-SFFVGNHC.js";
7
+ import "./chunk-CBJXWXI5.js";
8
+ import "./chunk-FGRJZVXD.js";
9
9
  import {
10
10
  mutateItem,
11
11
  toItemRecord
12
- } from "./chunk-TP4DDY27.js";
13
- import "./chunk-2IXCHCLM.js";
14
- import "./chunk-WCQZBDDH.js";
15
- import "./chunk-HRMHZ4RV.js";
16
- import "./chunk-FHHBD7PN.js";
12
+ } from "./chunk-2HMD3JM2.js";
13
+ import "./chunk-K62SNVVE.js";
14
+ import "./chunk-M7UBTVFT.js";
15
+ import "./chunk-2BYKYPWY.js";
16
+ import "./chunk-QFVASU44.js";
17
17
  import {
18
18
  EXIT_CODE,
19
19
  PmCliError,
@@ -23,7 +23,7 @@ import {
23
23
  resolvePmRoot,
24
24
  resolveRuntimeStatusRegistry,
25
25
  statusIsTerminal
26
- } from "./chunk-UJUT6AHZ.js";
26
+ } from "./chunk-3TXWDGPU.js";
27
27
 
28
28
  // dist/cli/commands/claim.js
29
29
  !(function() {
@@ -129,4 +129,4 @@ export {
129
129
  runClaim,
130
130
  runRelease
131
131
  };
132
- //# sourceMappingURL=claim-KW743OSW.js.map
132
+ //# sourceMappingURL=claim-NHBIIBOW.js.map
@@ -2,20 +2,20 @@
2
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]="69440d9c-1dff-5d99-b0ac-dec73e521560")}catch(e){}}();
3
3
  import {
4
4
  wrapOwnershipConflict
5
- } from "./chunk-GNIUOLZ2.js";
5
+ } from "./chunk-YEFOCDIK.js";
6
6
  import {
7
7
  resolveAuthor
8
8
  } from "./chunk-J27KIHTG.js";
9
- import "./chunk-UIIQC5YO.js";
10
- import "./chunk-FY6Z3FYY.js";
9
+ import "./chunk-NLVCMVC7.js";
10
+ import "./chunk-NDSMKB2I.js";
11
11
  import {
12
12
  mutateItem,
13
13
  toItemRecord
14
- } from "./chunk-YBZW2QQ7.js";
15
- import "./chunk-UT6WFXW2.js";
16
- import "./chunk-UYQ7HXH4.js";
17
- import "./chunk-GUZBNB3G.js";
18
- import "./chunk-B2KZGPM2.js";
14
+ } from "./chunk-ODN53S6H.js";
15
+ import "./chunk-4TI3532H.js";
16
+ import "./chunk-XEKZCBCS.js";
17
+ import "./chunk-Z2HXAFFH.js";
18
+ import "./chunk-XZS4MV37.js";
19
19
  import {
20
20
  EXIT_CODE,
21
21
  PmCliError,
@@ -25,7 +25,7 @@ import {
25
25
  resolvePmRoot,
26
26
  resolveRuntimeStatusRegistry,
27
27
  statusIsTerminal
28
- } from "./chunk-X4IZKYHP.js";
28
+ } from "./chunk-YJAKN2N2.js";
29
29
 
30
30
  // dist/cli/commands/claim.js
31
31
  async function runClaim(id, force, global, options = {}) {
@@ -124,6 +124,6 @@ export {
124
124
  runClaim,
125
125
  runRelease
126
126
  };
127
- //# sourceMappingURL=claim-BJ4QMPJC.js.map
127
+ //# sourceMappingURL=claim-RNEBQCOO.js.map
128
128
 
129
129
  //# debugId=69440d9c-1dff-5d99-b0ac-dec73e521560
@@ -0,0 +1,13 @@
1
+ import {
2
+ runClose
3
+ } from "./chunk-KBKJVXUS.js";
4
+ import "./chunk-2HMD3JM2.js";
5
+ import "./chunk-K62SNVVE.js";
6
+ import "./chunk-M7UBTVFT.js";
7
+ import "./chunk-2BYKYPWY.js";
8
+ import "./chunk-QFVASU44.js";
9
+ import "./chunk-3TXWDGPU.js";
10
+ export {
11
+ runClose
12
+ };
13
+ //# sourceMappingURL=close-UNTFXVM3.js.map
@@ -2,16 +2,16 @@
2
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]="45eac7fa-f181-5cca-93b7-cfb58909dbb3")}catch(e){}}();
3
3
  import {
4
4
  runClose
5
- } from "./chunk-NHR2QXXZ.js";
6
- import "./chunk-YBZW2QQ7.js";
7
- import "./chunk-UT6WFXW2.js";
8
- import "./chunk-UYQ7HXH4.js";
9
- import "./chunk-GUZBNB3G.js";
10
- import "./chunk-B2KZGPM2.js";
11
- import "./chunk-X4IZKYHP.js";
5
+ } from "./chunk-D7WK2PKB.js";
6
+ import "./chunk-ODN53S6H.js";
7
+ import "./chunk-4TI3532H.js";
8
+ import "./chunk-XEKZCBCS.js";
9
+ import "./chunk-Z2HXAFFH.js";
10
+ import "./chunk-XZS4MV37.js";
11
+ import "./chunk-YJAKN2N2.js";
12
12
  export {
13
13
  runClose
14
14
  };
15
- //# sourceMappingURL=close-SYHSRZDC.js.map
15
+ //# sourceMappingURL=close-ZMXL2WDS.js.map
16
16
 
17
17
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3
@@ -1,41 +1,41 @@
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]="60081a5b-37a0-5d2a-9e3e-0c94a5826738")}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]="0787bbf7-c610-595a-b7ef-61ad34a1218d")}catch(e){}}();
3
3
  import {
4
4
  createCheckpointId,
5
5
  loadMutationCheckpoint,
6
6
  restoreCheckpointItems,
7
7
  writeMutationCheckpoint
8
- } from "./chunk-KNGVP5WJ.js";
8
+ } from "./chunk-4WYBLB6J.js";
9
9
  import {
10
10
  runClose
11
- } from "./chunk-NHR2QXXZ.js";
11
+ } from "./chunk-D7WK2PKB.js";
12
12
  import {
13
13
  runRestore
14
- } from "./chunk-R3V3YCMH.js";
14
+ } from "./chunk-QF4OPBAG.js";
15
15
  import {
16
16
  resolveAuthor
17
17
  } from "./chunk-J27KIHTG.js";
18
- import "./chunk-6RZXO5M2.js";
19
- import "./chunk-3A2CMEM7.js";
18
+ import "./chunk-OVSSE2JP.js";
19
+ import "./chunk-HOA3GMB6.js";
20
20
  import {
21
21
  runList
22
- } from "./chunk-TINUJMWN.js";
23
- import "./chunk-6J4K6JLA.js";
24
- import "./chunk-FY6Z3FYY.js";
22
+ } from "./chunk-SM3RMWGO.js";
23
+ import "./chunk-SDLEYY6A.js";
24
+ import "./chunk-NDSMKB2I.js";
25
25
  import "./chunk-XSLQSXAH.js";
26
26
  import {
27
27
  listAllFrontMatterLight
28
- } from "./chunk-YBZW2QQ7.js";
29
- import "./chunk-UT6WFXW2.js";
28
+ } from "./chunk-ODN53S6H.js";
29
+ import "./chunk-4TI3532H.js";
30
30
  import {
31
31
  isTerminalStatus
32
- } from "./chunk-UYQ7HXH4.js";
32
+ } from "./chunk-XEKZCBCS.js";
33
33
  import {
34
34
  resolveItemTypeRegistry
35
- } from "./chunk-GUZBNB3G.js";
35
+ } from "./chunk-Z2HXAFFH.js";
36
36
  import {
37
37
  nowIso
38
- } from "./chunk-B2KZGPM2.js";
38
+ } from "./chunk-XZS4MV37.js";
39
39
  import {
40
40
  EXIT_CODE,
41
41
  PmCliError,
@@ -46,7 +46,7 @@ import {
46
46
  resolvePmRoot,
47
47
  resolveRuntimeStatusRegistry,
48
48
  toErrorMessage
49
- } from "./chunk-X4IZKYHP.js";
49
+ } from "./chunk-YJAKN2N2.js";
50
50
 
51
51
  // dist/cli/commands/close-many.js
52
52
  var CLOSE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;
@@ -95,10 +95,16 @@ function resolveReason(reason, required) {
95
95
  }
96
96
  if (required) {
97
97
  throw new PmCliError("pm close-many requires a shared close reason via --reason because governance.require_close_reason is enabled.", EXIT_CODE.USAGE, {
98
- code: "missing_required_argument",
98
+ code: "close_reason_required",
99
+ required: "Provide a shared closing summary via --reason for the whole batch.",
100
+ why: "governance.require_close_reason is enabled, so every close must record why the items are done.",
99
101
  examples: [
100
102
  'pm close-many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met"',
101
103
  'pm close-many --ids pm-a,pm-b --reason "Superseded by redesign"'
104
+ ],
105
+ nextSteps: [
106
+ "Re-run with --reason describing the shared outcome.",
107
+ "To stop requiring reasons, run: pm config set governance-require-close-reason --policy disabled"
102
108
  ]
103
109
  });
104
110
  }
@@ -309,6 +315,6 @@ async function runCloseMany(options, global) {
309
315
  export {
310
316
  runCloseMany
311
317
  };
312
- //# sourceMappingURL=close-many-LAC5VR4G.js.map
318
+ //# sourceMappingURL=close-many-CDPQGQUB.js.map
313
319
 
314
- //# debugId=60081a5b-37a0-5d2a-9e3e-0c94a5826738
320
+ //# debugId=0787bbf7-c610-595a-b7ef-61ad34a1218d
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../cli/commands/close-many.ts"],"sourcesContent":["import { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n createCheckpointId,\n loadMutationCheckpoint,\n restoreCheckpointItems,\n writeMutationCheckpoint,\n type MutationCheckpointItem,\n} from \"../../core/checkpoint/mutation-checkpoint.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { isTerminalStatus } from \"../../core/item/status.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { resolveRuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toErrorMessage } from \"../../core/shared/primitives.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { runClose, type CloseCommandOptions } from \"./close.js\";\nimport { runList, type ListOptions, type ListedItem } from \"./list.js\";\nimport { runRestore } from \"./restore.js\";\n\nconst CLOSE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;\nconst CLOSE_MANY_CHECKPOINT_SUBDIR = \"close-many\";\n\nconst CLOSE_MANY_FILTER_GUIDANCE = [\n \"--filter-status\",\n \"--filter-type\",\n \"--filter-tag\",\n \"--filter-priority\",\n \"--filter-sprint\",\n \"--filter-release\",\n \"--filter-parent\",\n \"--filter-assignee\",\n \"--filter-updated-before\",\n \"--ids\",\n].join(\", \");\n\nexport interface CloseManyCommandOptions {\n status?: string;\n list?: ListOptions;\n reason?: string;\n resolution?: string;\n expectedResult?: string;\n actualResult?: string;\n validateClose?: string;\n author?: string;\n message?: string;\n force?: boolean;\n dryRun?: boolean;\n rollback?: string;\n checkpoint?: boolean;\n}\n\ninterface CloseManyPlanRow {\n id: string;\n title: string;\n status: string;\n action: \"close\" | \"skip\";\n skip_reason?: string;\n active_child_ids?: string[];\n}\n\ninterface CloseManyApplyRow {\n id: string;\n status: \"closed\" | \"skipped\" | \"failed\";\n skip_reason?: string;\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\nexport interface CloseManyResult {\n mode: \"dry_run\" | \"apply\" | \"rollback\";\n matched_count: number;\n dry_run: boolean;\n reason?: string;\n filters?: Record<string, unknown>;\n validate_close?: string;\n item_plans?: CloseManyPlanRow[];\n checkpoint?: {\n id: string;\n created_at: string;\n path: string;\n rollback_command: string;\n };\n closed_count?: number;\n skipped_count?: number;\n failed_count?: number;\n restored_count?: number;\n rollback_checkpoint_id?: string;\n rows?: CloseManyApplyRow[] | Array<{ id: string; status: \"restored\" | \"failed\"; changed_fields?: string[]; warnings?: string[]; error?: string }>;\n ids: string[];\n}\n\nfunction hasCloseManyFilters(list: ListOptions | undefined, status: string | undefined): boolean {\n const isActive = (value: unknown): boolean =>\n value != null && (typeof value !== \"string\" || value.split(\",\").some((entry) => entry.trim().length > 0));\n return (\n isActive(status) ||\n isActive(list?.status) ||\n isActive(list?.type) ||\n isActive(list?.tag) ||\n isActive(list?.priority) ||\n isActive(list?.deadlineBefore) ||\n isActive(list?.deadlineAfter) ||\n isActive(list?.updatedAfter) ||\n isActive(list?.updatedBefore) ||\n isActive(list?.createdAfter) ||\n isActive(list?.createdBefore) ||\n isActive(list?.ids) ||\n isActive(list?.assignee) ||\n isActive(list?.assigneeFilter) ||\n isActive(list?.parent) ||\n isActive(list?.sprint) ||\n isActive(list?.release)\n );\n}\n\nfunction hasCloseManyRollbackConflicts(list: ListOptions | undefined, status: string | undefined): boolean {\n return (\n hasCloseManyFilters(list, status) ||\n (list?.limit != null && String(list.limit).trim().length > 0) ||\n (list?.offset != null && String(list.offset).trim().length > 0)\n );\n}\n\nfunction rejectBlankIdsFilter(list: ListOptions | undefined): void {\n if (list?.ids != null && String(list.ids).trim().length === 0) {\n throw new PmCliError(\"--ids requires at least one non-empty item ID\", EXIT_CODE.USAGE);\n }\n}\n\nfunction activeListOptions(list: ListOptions | undefined): ListOptions {\n const active: ListOptions = {};\n if (!list) {\n return active;\n }\n for (const [key, value] of Object.entries(list) as Array<[keyof ListOptions, unknown]>) {\n if (value == null || (typeof value === \"string\" && !value.split(\",\").some((entry) => entry.trim().length > 0))) {\n continue;\n }\n (active as Record<string, unknown>)[key] = value;\n }\n return active;\n}\n\nfunction resolveReason(reason: unknown, required: boolean): string | undefined {\n const trimmed = String(reason ?? \"\").trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n if (required) {\n throw new PmCliError(\n \"pm close-many requires a shared close reason via --reason because governance.require_close_reason is enabled.\",\n EXIT_CODE.USAGE,\n {\n code: \"close_reason_required\",\n required: \"Provide a shared closing summary via --reason for the whole batch.\",\n why: \"governance.require_close_reason is enabled, so every close must record why the items are done.\",\n examples: [\n 'pm close-many --filter-sprint S-12 --reason \"Sprint S-12 acceptance criteria met\"',\n 'pm close-many --ids pm-a,pm-b --reason \"Superseded by redesign\"',\n ],\n nextSteps: [\n \"Re-run with --reason describing the shared outcome.\",\n \"To stop requiring reasons, run: pm config set governance-require-close-reason --policy disabled\",\n ],\n },\n );\n }\n return undefined;\n}\n\n// Build a parent -> non-terminal child id map in a single light scan so each\n// matched parent can be annotated with the active children that closing it\n// would orphan (the same signal runClose surfaces per item on apply).\nasync function buildActiveChildrenByParent(\n pmRoot: string,\n settings: Awaited<ReturnType<typeof readSettings>>,\n): Promise<{ childrenByParent: Map<string, string[]>; parentByChild: Map<string, string> }> {\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const items = await listAllFrontMatterLight(\n pmRoot,\n settings.item_format,\n typeRegistry.type_to_folder,\n undefined,\n settings.schema,\n );\n const childrenByParent = new Map<string, string[]>();\n const parentByChild = new Map<string, string>();\n for (const item of items) {\n if (typeof item.parent !== \"string\" || item.parent.length === 0) {\n continue;\n }\n parentByChild.set(item.id, item.parent);\n if (isTerminalStatus(item.status, statusRegistry)) {\n continue;\n }\n const existing = childrenByParent.get(item.parent);\n if (existing) {\n existing.push(item.id);\n } else {\n childrenByParent.set(item.parent, [item.id]);\n }\n }\n for (const ids of childrenByParent.values()) {\n ids.sort((left, right) => left.localeCompare(right));\n }\n return { childrenByParent, parentByChild };\n}\n\nfunction hierarchyDepth(id: string, parentByChild: Map<string, string>, cache?: Map<string, number>): number {\n const cached = cache?.get(id);\n if (cached !== undefined) {\n return cached;\n }\n let depth = 0;\n let current = parentByChild.get(id);\n const path: string[] = [];\n const visited = new Set<string>();\n let hasCycle = false;\n while (current !== undefined && !visited.has(current)) {\n const cachedCurrent = cache?.get(current);\n if (cachedCurrent !== undefined) {\n depth += cachedCurrent + 1;\n break;\n }\n visited.add(current);\n path.push(current);\n depth += 1;\n current = parentByChild.get(current);\n }\n if (current !== undefined && visited.has(current)) {\n hasCycle = true;\n }\n if (!hasCycle) {\n cache?.set(id, depth);\n for (const [index, ancestorId] of path.entries()) {\n cache?.set(ancestorId, depth - index - 1);\n }\n }\n return depth;\n}\n\nexport async function runCloseMany(options: CloseManyCommandOptions, global: GlobalOptions): Promise<CloseManyResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n\n const dryRun = options.dryRun === true;\n const rollbackId = typeof options.rollback === \"string\" ? options.rollback : undefined;\n rejectBlankIdsFilter(options.list);\n\n if (rollbackId) {\n if (dryRun) {\n throw new PmCliError(\"--dry-run cannot be combined with --rollback\", EXIT_CODE.USAGE);\n }\n if (hasCloseManyRollbackConflicts(options.list, options.status)) {\n throw new PmCliError(\"Rollback mode does not accept filter options\", EXIT_CODE.USAGE);\n }\n const checkpoint = await loadMutationCheckpoint(\n pmRoot,\n CLOSE_MANY_CHECKPOINT_SUBDIR,\n rollbackId,\n CLOSE_MANY_CHECKPOINT_SCHEMA_VERSION,\n );\n const restoreMessage = options.message ?? `Rollback close-many checkpoint ${checkpoint.id}`;\n const rollback = await restoreCheckpointItems(checkpoint.items, (id, targetUpdatedAt) =>\n runRestore(id, targetUpdatedAt, { author: options.author, message: restoreMessage, force: true }, global),\n );\n return {\n mode: \"rollback\",\n matched_count: checkpoint.items.length,\n dry_run: false,\n rollback_checkpoint_id: checkpoint.id,\n checkpoint: {\n id: checkpoint.id,\n created_at: checkpoint.created_at,\n path: checkpoint.path,\n rollback_command: `pm close-many --rollback ${checkpoint.id}`,\n },\n restored_count: rollback.restored_ids.length,\n failed_count: rollback.failed_count,\n rows: rollback.rows,\n ids: rollback.restored_ids,\n };\n }\n\n if (!hasCloseManyFilters(options.list, options.status)) {\n throw new PmCliError(\n `close-many requires at least one filter to scope the close (for example: ${CLOSE_MANY_FILTER_GUIDANCE}). Refusing to match every item.`,\n EXIT_CODE.USAGE,\n );\n }\n\n const reason = resolveReason(options.reason, settings.governance.require_close_reason);\n const validateCloseMode = options.validateClose;\n const force = options.force === true;\n\n const listOptions = activeListOptions(options.list);\n const listed = await runList(options.status, listOptions, global);\n const { childrenByParent, parentByChild } = await buildActiveChildrenByParent(pmRoot, settings);\n const depthCache = new Map<string, number>();\n const matched = [...(listed.items as ListedItem[])].sort((left, right) => {\n const depthDelta = hierarchyDepth(right.id, parentByChild, depthCache) - hierarchyDepth(left.id, parentByChild, depthCache);\n return depthDelta !== 0 ? depthDelta : left.id.localeCompare(right.id);\n });\n const closePlannedIds = new Set(\n matched\n .filter((item) => force || !isTerminalStatus(item.status, statusRegistry))\n .map((item) => item.id),\n );\n\n const planRows: CloseManyPlanRow[] = matched.map((item) => {\n const alreadyTerminal = isTerminalStatus(item.status, statusRegistry);\n const activeChildIds = (childrenByParent.get(item.id) ?? []).filter((childId) => !closePlannedIds.has(childId));\n const willSkip = alreadyTerminal && !force;\n return {\n id: item.id,\n title: typeof item.title === \"string\" ? item.title : \"\",\n status: item.status,\n action: willSkip ? \"skip\" : \"close\",\n ...(willSkip ? { skip_reason: \"already_terminal\" } : {}),\n ...(activeChildIds.length > 0 ? { active_child_ids: activeChildIds } : {}),\n };\n });\n\n if (dryRun) {\n return {\n mode: \"dry_run\",\n matched_count: matched.length,\n dry_run: true,\n ...(reason !== undefined ? { reason } : {}),\n filters: listed.filters,\n ...(validateCloseMode ? { validate_close: validateCloseMode } : {}),\n item_plans: planRows,\n ids: [],\n };\n }\n\n const closableIds = new Set(planRows.filter((row) => row.action === \"close\").map((row) => row.id));\n\n const nowValue = nowIso();\n const checkpointId = createCheckpointId(CLOSE_MANY_CHECKPOINT_SUBDIR, nowValue);\n const checkpointEnabled = options.checkpoint !== false;\n let checkpointInfo: CloseManyResult[\"checkpoint\"] | undefined;\n if (checkpointEnabled && closableIds.size > 0) {\n const checkpointItems: MutationCheckpointItem[] = matched\n .filter((item) => closableIds.has(item.id))\n .map((item) => ({ id: item.id, target_updated_at: item.updated_at }));\n const checkpointPath = await writeMutationCheckpoint(pmRoot, CLOSE_MANY_CHECKPOINT_SUBDIR, checkpointId, {\n schema_version: CLOSE_MANY_CHECKPOINT_SCHEMA_VERSION,\n id: checkpointId,\n created_at: nowValue,\n author: resolveAuthor(options.author, \"unknown\"),\n ...(reason !== undefined ? { reason } : {}),\n filters: listed.filters,\n items: checkpointItems,\n });\n checkpointInfo = {\n id: checkpointId,\n created_at: nowValue,\n path: checkpointPath,\n rollback_command: `pm close-many --rollback ${checkpointId}`,\n };\n }\n\n const closeOptions: CloseCommandOptions = {\n author: options.author,\n message: options.message ?? `close-many apply ${checkpointId}`,\n validateClose: validateCloseMode,\n force,\n resolution: options.resolution,\n expectedResult: options.expectedResult,\n actualResult: options.actualResult,\n };\n\n const rows: CloseManyApplyRow[] = [];\n const closedIds: string[] = [];\n for (const item of matched) {\n if (!closableIds.has(item.id)) {\n rows.push({ id: item.id, status: \"skipped\", skip_reason: \"already_terminal\" });\n continue;\n }\n try {\n const result = await runClose(item.id, reason, closeOptions, global);\n rows.push({\n id: item.id,\n status: \"closed\",\n changed_fields: result.changed_fields,\n ...(result.warnings && result.warnings.length > 0 ? { warnings: result.warnings } : {}),\n });\n closedIds.push(item.id);\n } catch (error: unknown) {\n rows.push({ id: item.id, status: \"failed\", error: toErrorMessage(error) });\n }\n }\n\n return {\n mode: \"apply\",\n matched_count: matched.length,\n dry_run: false,\n ...(reason !== undefined ? { reason } : {}),\n filters: listed.filters,\n ...(validateCloseMode ? { validate_close: validateCloseMode } : {}),\n ...(checkpointInfo ? { checkpoint: checkpointInfo } : {}),\n closed_count: rows.filter((row) => row.status === \"closed\").length,\n skipped_count: rows.filter((row) => row.status === \"skipped\").length,\n failed_count: rows.filter((row) => row.status === \"failed\").length,\n rows,\n ids: closedIds,\n };\n}\n"],"names":[],"mappings":"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","debugId":"0787bbf7-c610-595a-b7ef-61ad34a1218d"}
@@ -3,37 +3,37 @@ import {
3
3
  loadMutationCheckpoint,
4
4
  restoreCheckpointItems,
5
5
  writeMutationCheckpoint
6
- } from "./chunk-WYEXLDDY.js";
6
+ } from "./chunk-AEMKH5WQ.js";
7
7
  import {
8
8
  runClose
9
- } from "./chunk-IMCJBN2Q.js";
9
+ } from "./chunk-KBKJVXUS.js";
10
10
  import {
11
11
  runRestore
12
- } from "./chunk-OKSKJKHX.js";
12
+ } from "./chunk-AXBUHLW7.js";
13
13
  import {
14
14
  resolveAuthor
15
15
  } from "./chunk-O7IWB35H.js";
16
- import "./chunk-4CHEG6UK.js";
17
- import "./chunk-3EOBJOF4.js";
16
+ import "./chunk-2YPVCD7T.js";
17
+ import "./chunk-MSH23UWO.js";
18
18
  import {
19
19
  runList
20
- } from "./chunk-42LOFGJS.js";
21
- import "./chunk-B5RF3IP7.js";
22
- import "./chunk-SFFVGNHC.js";
20
+ } from "./chunk-5WO2VKFA.js";
21
+ import "./chunk-BKQMJXWY.js";
22
+ import "./chunk-FGRJZVXD.js";
23
23
  import "./chunk-EAOG77HM.js";
24
24
  import {
25
25
  listAllFrontMatterLight
26
- } from "./chunk-TP4DDY27.js";
27
- import "./chunk-2IXCHCLM.js";
26
+ } from "./chunk-2HMD3JM2.js";
27
+ import "./chunk-K62SNVVE.js";
28
28
  import {
29
29
  isTerminalStatus
30
- } from "./chunk-WCQZBDDH.js";
30
+ } from "./chunk-M7UBTVFT.js";
31
31
  import {
32
32
  resolveItemTypeRegistry
33
- } from "./chunk-HRMHZ4RV.js";
33
+ } from "./chunk-2BYKYPWY.js";
34
34
  import {
35
35
  nowIso
36
- } from "./chunk-FHHBD7PN.js";
36
+ } from "./chunk-QFVASU44.js";
37
37
  import {
38
38
  EXIT_CODE,
39
39
  PmCliError,
@@ -44,13 +44,13 @@ import {
44
44
  resolvePmRoot,
45
45
  resolveRuntimeStatusRegistry,
46
46
  toErrorMessage
47
- } from "./chunk-UJUT6AHZ.js";
47
+ } from "./chunk-3TXWDGPU.js";
48
48
 
49
49
  // dist/cli/commands/close-many.js
50
50
  !(function() {
51
51
  try {
52
52
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
53
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "83584226-bf4b-5d89-b485-b5a4eaca2f85");
53
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4372c294-2c28-51d8-9a8a-6640d8188b5a");
54
54
  } catch (e2) {
55
55
  }
56
56
  })();
@@ -100,10 +100,16 @@ function resolveReason(reason, required) {
100
100
  }
101
101
  if (required) {
102
102
  throw new PmCliError("pm close-many requires a shared close reason via --reason because governance.require_close_reason is enabled.", EXIT_CODE.USAGE, {
103
- code: "missing_required_argument",
103
+ code: "close_reason_required",
104
+ required: "Provide a shared closing summary via --reason for the whole batch.",
105
+ why: "governance.require_close_reason is enabled, so every close must record why the items are done.",
104
106
  examples: [
105
107
  'pm close-many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met"',
106
108
  'pm close-many --ids pm-a,pm-b --reason "Superseded by redesign"'
109
+ ],
110
+ nextSteps: [
111
+ "Re-run with --reason describing the shared outcome.",
112
+ "To stop requiring reasons, run: pm config set governance-require-close-reason --policy disabled"
107
113
  ]
108
114
  });
109
115
  }
@@ -314,4 +320,4 @@ async function runCloseMany(options, global2) {
314
320
  export {
315
321
  runCloseMany
316
322
  };
317
- //# sourceMappingURL=close-many-DBLEYFOY.js.map
323
+ //# sourceMappingURL=close-many-IQV5C2SI.js.map