@unbrained/pm-cli 2026.7.1 → 2026.7.3

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 (625) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +25 -0
  3. package/CONTRIBUTING.md +2 -2
  4. package/README.md +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +110 -86
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/activity.js +79 -57
  9. package/dist/cli/commands/activity.js.map +1 -1
  10. package/dist/cli/commands/aggregate.js +102 -79
  11. package/dist/cli/commands/aggregate.js.map +1 -1
  12. package/dist/cli/commands/calendar.js +278 -243
  13. package/dist/cli/commands/calendar.js.map +1 -1
  14. package/dist/cli/commands/close-many.js +176 -114
  15. package/dist/cli/commands/close-many.js.map +1 -1
  16. package/dist/cli/commands/close.js +157 -129
  17. package/dist/cli/commands/close.js.map +1 -1
  18. package/dist/cli/commands/comments-audit.js +50 -42
  19. package/dist/cli/commands/comments-audit.js.map +1 -1
  20. package/dist/cli/commands/config.d.ts +2 -0
  21. package/dist/cli/commands/config.js +443 -879
  22. package/dist/cli/commands/config.js.map +1 -1
  23. package/dist/cli/commands/context.js +365 -287
  24. package/dist/cli/commands/context.js.map +1 -1
  25. package/dist/cli/commands/contracts.js +352 -238
  26. package/dist/cli/commands/contracts.js.map +1 -1
  27. package/dist/cli/commands/create.js +32 -17
  28. package/dist/cli/commands/create.js.map +1 -1
  29. package/dist/cli/commands/dedupe-audit.js +46 -39
  30. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  31. package/dist/cli/commands/dedupe-merge.js +88 -69
  32. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +56 -67
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/shared.js +21 -15
  36. package/dist/cli/commands/extension/shared.js.map +1 -1
  37. package/dist/cli/commands/get.js +114 -81
  38. package/dist/cli/commands/get.js.map +1 -1
  39. package/dist/cli/commands/health.d.ts +17 -0
  40. package/dist/cli/commands/health.js +545 -417
  41. package/dist/cli/commands/health.js.map +1 -1
  42. package/dist/cli/commands/history-compact.js +209 -140
  43. package/dist/cli/commands/history-compact.js.map +1 -1
  44. package/dist/cli/commands/history-redact.js +162 -119
  45. package/dist/cli/commands/history-redact.js.map +1 -1
  46. package/dist/cli/commands/history-repair.js +120 -85
  47. package/dist/cli/commands/history-repair.js.map +1 -1
  48. package/dist/cli/commands/init-agent-guidance.js +32 -19
  49. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  50. package/dist/cli/commands/init.d.ts +8 -2
  51. package/dist/cli/commands/init.js +263 -162
  52. package/dist/cli/commands/init.js.map +1 -1
  53. package/dist/cli/commands/list.js +152 -102
  54. package/dist/cli/commands/list.js.map +1 -1
  55. package/dist/cli/commands/next.js +60 -40
  56. package/dist/cli/commands/next.js.map +1 -1
  57. package/dist/cli/commands/plan.js +373 -298
  58. package/dist/cli/commands/plan.js.map +1 -1
  59. package/dist/cli/commands/profile.js +23 -15
  60. package/dist/cli/commands/profile.js.map +1 -1
  61. package/dist/cli/commands/recurrence-parsers.js +43 -25
  62. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  63. package/dist/cli/commands/reindex.d.ts +21 -5
  64. package/dist/cli/commands/reindex.js +345 -205
  65. package/dist/cli/commands/reindex.js.map +1 -1
  66. package/dist/cli/commands/restore.d.ts +8 -7
  67. package/dist/cli/commands/restore.js +105 -69
  68. package/dist/cli/commands/restore.js.map +1 -1
  69. package/dist/cli/commands/schema.js +33 -30
  70. package/dist/cli/commands/schema.js.map +1 -1
  71. package/dist/cli/commands/search.d.ts +10 -2
  72. package/dist/cli/commands/search.js +503 -470
  73. package/dist/cli/commands/search.js.map +1 -1
  74. package/dist/cli/commands/telemetry.js +98 -87
  75. package/dist/cli/commands/telemetry.js.map +1 -1
  76. package/dist/cli/commands/test-all.js +237 -168
  77. package/dist/cli/commands/test-all.js.map +1 -1
  78. package/dist/cli/commands/test.d.ts +6 -5
  79. package/dist/cli/commands/test.js +424 -344
  80. package/dist/cli/commands/test.js.map +1 -1
  81. package/dist/cli/commands/update-many.js +57 -42
  82. package/dist/cli/commands/update-many.js.map +1 -1
  83. package/dist/cli/commands/update.d.ts +1 -1
  84. package/dist/cli/commands/update.js +738 -671
  85. package/dist/cli/commands/update.js.map +1 -1
  86. package/dist/cli/commands/validate.d.ts +20 -1
  87. package/dist/cli/commands/validate.js +478 -343
  88. package/dist/cli/commands/validate.js.map +1 -1
  89. package/dist/cli/error-guidance.js +406 -361
  90. package/dist/cli/error-guidance.js.map +1 -1
  91. package/dist/cli/extension-command-help.js +27 -19
  92. package/dist/cli/extension-command-help.js.map +1 -1
  93. package/dist/cli/help-json-payload.js +57 -49
  94. package/dist/cli/help-json-payload.js.map +1 -1
  95. package/dist/cli/main.d.ts +47 -0
  96. package/dist/cli/main.js +474 -371
  97. package/dist/cli/main.js.map +1 -1
  98. package/dist/cli/migration-gates.js +22 -45
  99. package/dist/cli/migration-gates.js.map +1 -1
  100. package/dist/cli/register-list-query.js +299 -310
  101. package/dist/cli/register-list-query.js.map +1 -1
  102. package/dist/cli/register-mutation.js +763 -779
  103. package/dist/cli/register-mutation.js.map +1 -1
  104. package/dist/cli/register-operations.js +386 -362
  105. package/dist/cli/register-operations.js.map +1 -1
  106. package/dist/cli/register-setup.js +120 -101
  107. package/dist/cli/register-setup.js.map +1 -1
  108. package/dist/cli/registration-helpers.d.ts +4 -0
  109. package/dist/cli/registration-helpers.js +45 -56
  110. package/dist/cli/registration-helpers.js.map +1 -1
  111. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-5YWLSPGE.js} +9 -9
  112. package/dist/cli-bundle/chunks/activity-BIML7K2D.js +16 -0
  113. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-2V2M3JZU.js} +107 -83
  114. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-2V2M3JZU.js.map} +2 -2
  115. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-EK7DXML7.js} +108 -84
  116. package/dist/cli-bundle/chunks/aggregate-EK7DXML7.js.map +1 -0
  117. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-EZESUVJT.js} +8 -8
  118. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-JFG4WQMG.js} +8 -8
  119. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-32IUNTG4.js} +158 -119
  120. package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +1 -0
  121. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-3W2HJKJX.js} +3 -3
  122. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-4EXFFP7T.js} +86 -52
  123. package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +7 -0
  124. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-4PFVUUYV.js} +2 -2
  125. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-4WB6S4YX.js} +308 -184
  126. package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +1 -0
  127. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-572FKBRL.js} +61 -102
  128. package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-5E7N4T2Z.js} +2 -2
  130. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-5IZUBZBR.js} +3 -3
  131. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-5JIWFWOZ.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-67LARBDL.js} +493 -404
  133. package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +1 -0
  134. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-6CDCWKSX.js} +4 -4
  135. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-6KRFL33E.js} +308 -184
  136. package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +7 -0
  137. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-6NYJGMTY.js} +2 -2
  138. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-7CLLC75T.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-7LYO6S5A.js} +8 -8
  140. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-A3OQ7TFW.js} +8 -8
  141. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-AIKU3IIL.js} +153 -90
  142. package/dist/cli-bundle/chunks/chunk-AIKU3IIL.js.map +1 -0
  143. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AJHYQCBJ.js} +39 -5
  144. package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  146. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  147. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-BE2SR6QL.js} +92 -77
  148. package/dist/cli-bundle/chunks/chunk-BE2SR6QL.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-BI4R7HI2.js} +75 -53
  150. package/dist/cli-bundle/chunks/chunk-BI4R7HI2.js.map +7 -0
  151. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-CXR3CMBQ.js} +33 -6
  152. package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-ECU6MMTQ.js} +713 -613
  154. package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +1 -0
  155. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-EJ2OCBHF.js} +54 -30
  156. package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-EQURFOMH.js} +41 -26
  158. package/dist/cli-bundle/chunks/chunk-EQURFOMH.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-ER4ME5U2.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-ERG65A2L.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-F6WNBITZ.js} +157 -113
  162. package/dist/cli-bundle/chunks/chunk-F6WNBITZ.js.map +7 -0
  163. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-FH2H3CBD.js} +3 -3
  164. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-FUFFPIYA.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-FZJM2TXF.js} +110 -73
  166. package/dist/cli-bundle/chunks/chunk-FZJM2TXF.js.map +1 -0
  167. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-GUYNUXQT.js} +3 -3
  168. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-GVJE5T7Q.js} +2 -2
  169. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-HB4FAT3O.js} +42 -60
  170. package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +7 -0
  171. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-HQAF23Q2.js} +626 -484
  172. package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-JBZ2NTKX.js} +2 -2
  174. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-JPATY4SE.js} +54 -30
  175. package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +7 -0
  176. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-K5DT2YKM.js} +109 -72
  177. package/dist/cli-bundle/chunks/chunk-K5DT2YKM.js.map +7 -0
  178. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KEZOIPCR.js} +3 -3
  179. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-KHVGM5CS.js} +466 -365
  180. package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-KS6ATO47.js} +288 -175
  182. package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-L4SLHV6G.js} +463 -362
  184. package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-LBE5QFMZ.js} +158 -114
  186. package/dist/cli-bundle/chunks/chunk-LBE5QFMZ.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-LCWQP6NM.js} +76 -54
  188. package/dist/cli-bundle/chunks/chunk-LCWQP6NM.js.map +1 -0
  189. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-LOWVNZBZ.js} +91 -76
  190. package/dist/cli-bundle/chunks/chunk-LOWVNZBZ.js.map +7 -0
  191. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-MDHWWBNZ.js} +3 -3
  192. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-MEZZZBYX.js} +2 -2
  193. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-MHRS5FUX.js} +288 -175
  194. package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +1 -0
  195. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-NOIEVOK5.js} +391 -313
  196. package/dist/cli-bundle/chunks/chunk-NOIEVOK5.js.map +1 -0
  197. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-NZ7QIUP5.js} +4 -4
  198. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-OGLGI22K.js} +115 -67
  199. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js.map → chunk-OGLGI22K.js.map} +1 -1
  200. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-P5L7Z2O6.js} +2 -2
  201. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-PULUSQAV.js} +492 -403
  202. package/dist/cli-bundle/chunks/chunk-PULUSQAV.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-QCDTQCMW.js} +22 -30
  204. package/dist/cli-bundle/chunks/chunk-QCDTQCMW.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-QNNQAAZ5.js} +24 -18
  206. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-QNNQAAZ5.js.map} +1 -1
  207. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-RAHINBVP.js} +60 -101
  208. package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +7 -0
  209. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-RJH5VQHW.js} +43 -61
  210. package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +1 -0
  211. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-SU2E4AWU.js} +6 -6
  212. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-SU3TB4NS.js} +2 -2
  213. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-SYE6WMV6.js} +626 -484
  214. package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-T3P7PMZP.js} +42 -27
  216. package/dist/cli-bundle/chunks/chunk-T3P7PMZP.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-T4XBKJ3F.js} +4 -4
  218. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-T6AXEBOP.js} +23 -17
  219. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-T6AXEBOP.js.map} +2 -2
  220. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-TQ6AX5SQ.js} +58 -69
  221. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-TQ6AX5SQ.js.map} +2 -2
  222. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-U3S2B7TA.js} +86 -52
  223. package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-U5TR4N7J.js} +7 -7
  225. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UMNQZS4H.js} +3 -3
  226. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-WJA3PXW7.js} +7 -7
  227. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WRYERRZX.js} +157 -118
  228. package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +7 -0
  229. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-WYOIIFSE.js} +712 -612
  230. package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-XRYSCRZR.js} +116 -68
  232. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js.map → chunk-XRYSCRZR.js.map} +3 -3
  233. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-YF746GTH.js} +59 -70
  234. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-YF746GTH.js.map} +1 -1
  235. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-YPWUSH72.js} +390 -312
  236. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-YPWUSH72.js.map} +2 -2
  237. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-YSDFIY7N.js} +3 -3
  238. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-YSGTMDWC.js} +2 -2
  239. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-YVKZ3ANP.js} +21 -29
  240. package/dist/cli-bundle/chunks/chunk-YVKZ3ANP.js.map +7 -0
  241. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  242. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  243. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-Z5F6XZXE.js} +6 -6
  244. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-Z7RPDF2Y.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-ZFTKYWIF.js} +152 -89
  246. package/dist/cli-bundle/chunks/chunk-ZFTKYWIF.js.map +7 -0
  247. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-2BGBGSVI.js} +8 -8
  248. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-5GU7OE67.js} +8 -8
  249. package/dist/cli-bundle/chunks/close-6YODBUIV.js +14 -0
  250. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-AFVKPR57.js} +7 -7
  251. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-7KLOSYLP.js} +186 -122
  252. package/dist/cli-bundle/chunks/close-many-7KLOSYLP.js.map +7 -0
  253. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-JKUJMHLG.js} +187 -123
  254. package/dist/cli-bundle/chunks/close-many-JKUJMHLG.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-DNWHEBOS.js} +9 -9
  256. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-RW23R3VE.js} +9 -9
  257. package/dist/cli-bundle/chunks/config-AUM5WBYA.js +1072 -0
  258. package/dist/cli-bundle/chunks/config-AUM5WBYA.js.map +7 -0
  259. package/dist/cli-bundle/chunks/config-OZWSA2NP.js +1062 -0
  260. package/dist/cli-bundle/chunks/config-OZWSA2NP.js.map +1 -0
  261. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-OYXRGY7S.js} +12 -12
  262. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-PKCEHQY3.js} +12 -12
  263. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-L6ODXNUM.js} +320 -199
  264. package/dist/cli-bundle/chunks/contracts-L6ODXNUM.js.map +7 -0
  265. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-X74F2GSM.js} +321 -200
  266. package/dist/cli-bundle/chunks/contracts-X74F2GSM.js.map +1 -0
  267. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-6XOR3HKN.js} +5 -5
  268. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-I4NCLBR4.js} +5 -5
  269. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-PM45M6PE.js} +12 -12
  270. package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +28 -0
  271. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-7YXHYG67.js} +5 -5
  272. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-LPISP43T.js} +5 -5
  273. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-N2T26FME.js} +5 -5
  274. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-WATKQDE3.js} +5 -5
  275. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-6LQ3GLM7.js} +7 -7
  276. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-Z3X6JZLT.js} +7 -7
  277. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-6DCLG52D.js} +10 -10
  278. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-Y3ZCUTHK.js} +10 -10
  279. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-BNINIMT7.js} +11 -11
  280. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-QWE4YYK5.js} +11 -11
  281. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-6SGKHS6O.js} +7 -7
  282. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-FUYPSOFJ.js} +7 -7
  283. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-2Q3K76G2.js} +6 -6
  284. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-ATLBWXXD.js} +6 -6
  285. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-RUYEMNRF.js} +3 -3
  286. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-TDWSDR66.js} +3 -3
  287. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-2WGLX74N.js} +120 -80
  288. package/dist/cli-bundle/chunks/get-2WGLX74N.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-LY6M2JIM.js} +121 -81
  290. package/dist/cli-bundle/chunks/get-LY6M2JIM.js.map +1 -0
  291. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-4RKHYS3T.js} +535 -371
  292. package/dist/cli-bundle/chunks/health-4RKHYS3T.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-TMFVNYRA.js} +534 -370
  294. package/dist/cli-bundle/chunks/health-TMFVNYRA.js.map +7 -0
  295. package/dist/cli-bundle/chunks/history-CGNQJXFE.js +18 -0
  296. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-SGRRS72R.js} +8 -8
  297. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-LOED43R3.js} +213 -134
  298. package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-V5DNAQHH.js} +214 -135
  300. package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +1 -0
  301. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-IRL7WJ3E.js} +9 -9
  302. package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +19 -0
  303. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-4WVBVHFR.js} +124 -84
  304. package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-PGYQJMGD.js} +123 -83
  306. package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-4GESW7RM.js} +12 -12
  308. package/dist/cli-bundle/chunks/init-XIDPABA4.js +22 -0
  309. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-4BHWFFUV.js} +9 -9
  310. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-4FJY7WIW.js} +9 -9
  311. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-472TIOVK.js} +8 -8
  312. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-D7BF5CL2.js} +8 -8
  313. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-D5STGWI2.js} +71 -46
  314. package/dist/cli-bundle/chunks/next-D5STGWI2.js.map +1 -0
  315. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-SFQZVX2B.js} +70 -45
  316. package/dist/cli-bundle/chunks/next-SFQZVX2B.js.map +7 -0
  317. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-6KNOSLIT.js} +9 -9
  318. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-W4UEICGF.js} +9 -9
  319. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-JO6V7BXO.js} +373 -279
  320. package/dist/cli-bundle/chunks/plan-JO6V7BXO.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-MJQW5XK3.js} +372 -278
  322. package/dist/cli-bundle/chunks/plan-MJQW5XK3.js.map +7 -0
  323. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-3TOTMUR4.js} +27 -19
  324. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +7 -0
  325. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-WIQY2KCV.js} +28 -20
  326. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +1 -0
  327. package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js +416 -0
  328. package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js.map +7 -0
  329. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js +406 -0
  330. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +1 -0
  331. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-ROFE2YPC.js} +729 -702
  332. package/dist/cli-bundle/chunks/register-mutation-ROFE2YPC.js.map +7 -0
  333. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-SJWMVIJ2.js} +730 -703
  334. package/dist/cli-bundle/chunks/register-mutation-SJWMVIJ2.js.map +1 -0
  335. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-IADFVH53.js} +389 -365
  336. package/dist/cli-bundle/chunks/register-operations-IADFVH53.js.map +7 -0
  337. package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js +510 -0
  338. package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js.map +1 -0
  339. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-3QJY43CY.js} +128 -103
  340. package/dist/cli-bundle/chunks/register-setup-3QJY43CY.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-AJWUSSQX.js} +129 -104
  342. package/dist/cli-bundle/chunks/register-setup-AJWUSSQX.js.map +1 -0
  343. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-44IHMMZZ.js} +9 -9
  344. package/dist/cli-bundle/chunks/restore-EXHU34EU.js +17 -0
  345. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-OLHNLAZY.js} +12 -12
  346. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-TSBK4AY5.js} +12 -12
  347. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-IB2NZZWD.js} +7 -7
  348. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-VBCELP5G.js} +7 -7
  349. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-7UBETML4.js} +10 -10
  350. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-R227JOL6.js} +10 -10
  351. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-FAG7COEH.js} +6 -6
  352. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-MCK7PLYS.js} +6 -6
  353. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-DRPDZMAO.js} +84 -70
  354. package/dist/cli-bundle/chunks/telemetry-DRPDZMAO.js.map +7 -0
  355. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-GVVUQSJQ.js} +85 -71
  356. package/dist/cli-bundle/chunks/telemetry-GVVUQSJQ.js.map +1 -0
  357. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-QY44WAMR.js} +15 -15
  358. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-SY76DZTO.js} +15 -15
  359. package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js +430 -0
  360. package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js.map +7 -0
  361. package/dist/cli-bundle/chunks/test-all-USPJHXFR.js +427 -0
  362. package/dist/cli-bundle/chunks/test-all-USPJHXFR.js.map +1 -0
  363. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-MG5VIGSK.js} +185 -147
  364. package/dist/cli-bundle/chunks/test-runs-MG5VIGSK.js.map +1 -0
  365. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-QIR5MJPL.js} +184 -146
  366. package/dist/cli-bundle/chunks/test-runs-QIR5MJPL.js.map +7 -0
  367. package/dist/cli-bundle/chunks/update-A7EICML6.js +24 -0
  368. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-IKJZWLQC.js} +15 -15
  369. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-BEMTDA2X.js} +84 -69
  370. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-BEMTDA2X.js.map} +1 -1
  371. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-RATAARHU.js} +83 -68
  372. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-RATAARHU.js.map} +2 -2
  373. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-NWMR3VQL.js} +11 -11
  374. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-VU46BLJZ.js} +11 -11
  375. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-GAJ6FUSI.js} +451 -321
  376. package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +1 -0
  377. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-NRY6MFXN.js} +450 -320
  378. package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +7 -0
  379. package/dist/cli-bundle/main.js +1107 -916
  380. package/dist/cli-bundle/main.js.map +3 -3
  381. package/dist/core/config/nested-settings.js +89 -67
  382. package/dist/core/config/nested-settings.js.map +1 -1
  383. package/dist/core/governance/metadata-coverage.js +20 -28
  384. package/dist/core/governance/metadata-coverage.js.map +1 -1
  385. package/dist/core/history/drift-scan.js +93 -81
  386. package/dist/core/history/drift-scan.js.map +1 -1
  387. package/dist/core/item/item-type-definition.js +14 -14
  388. package/dist/core/item/item-type-definition.js.map +1 -1
  389. package/dist/core/item/type-registry.js +114 -99
  390. package/dist/core/item/type-registry.js.map +1 -1
  391. package/dist/core/output/mutation-projection.js +42 -26
  392. package/dist/core/output/mutation-projection.js.map +1 -1
  393. package/dist/core/schema/runtime-schema.js +97 -80
  394. package/dist/core/schema/runtime-schema.js.map +1 -1
  395. package/dist/core/schema/status-defs-file.js +26 -3
  396. package/dist/core/schema/status-defs-file.js.map +1 -1
  397. package/dist/core/search/corpus.js +25 -19
  398. package/dist/core/search/corpus.js.map +1 -1
  399. package/dist/core/search/semantic-defaults.js +64 -37
  400. package/dist/core/search/semantic-defaults.js.map +1 -1
  401. package/dist/core/search/vector-stores.js +32 -17
  402. package/dist/core/search/vector-stores.js.map +1 -1
  403. package/dist/core/sentry/helpers.js +31 -28
  404. package/dist/core/sentry/helpers.js.map +1 -1
  405. package/dist/core/sentry/instrument.js +54 -43
  406. package/dist/core/sentry/instrument.js.map +1 -1
  407. package/dist/core/shared/memo.d.ts +12 -0
  408. package/dist/core/shared/memo.js +25 -0
  409. package/dist/core/shared/memo.js.map +1 -0
  410. package/dist/core/shared/serialization.js +24 -14
  411. package/dist/core/shared/serialization.js.map +1 -1
  412. package/dist/core/shared/time.js +26 -4
  413. package/dist/core/shared/time.js.map +1 -1
  414. package/dist/core/store/front-matter-cache.d.ts +5 -0
  415. package/dist/core/store/front-matter-cache.js +316 -171
  416. package/dist/core/store/front-matter-cache.js.map +1 -1
  417. package/dist/core/store/item-store.js +33 -26
  418. package/dist/core/store/item-store.js.map +1 -1
  419. package/dist/core/store/settings.js +247 -203
  420. package/dist/core/store/settings.js.map +1 -1
  421. package/dist/core/test/background-runs.js +189 -160
  422. package/dist/core/test/background-runs.js.map +1 -1
  423. package/dist/sdk/cli-contracts/flag-contracts.js +71 -99
  424. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  425. package/dist/sdk/compose.js +51 -42
  426. package/dist/sdk/compose.js.map +1 -1
  427. package/docs/AGENT_GUIDE.md +2 -2
  428. package/docs/ARCHITECTURE.md +2 -2
  429. package/docs/COMMANDS.md +8 -4
  430. package/docs/CONFIGURATION.md +1 -1
  431. package/docs/EXTENSIONS.md +12 -12
  432. package/docs/ONBOARDING.md +4 -2
  433. package/docs/README.md +2 -0
  434. package/docs/examples/starter-extension/README.md +11 -10
  435. package/marketplace.json +3 -3
  436. package/package.json +2 -2
  437. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  438. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  439. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  440. package/plugins/pm-claude/.claude-plugin/plugin.json +2 -2
  441. package/plugins/pm-claude/README.md +6 -3
  442. package/plugins/pm-claude/commands/pm-init.md +1 -1
  443. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  444. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  445. package/dist/cli-bundle/chunks/chunk-22WKIL3H.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  447. package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  450. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  451. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  453. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  454. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  456. package/dist/cli-bundle/chunks/chunk-AXIDKKAT.js.map +0 -1
  457. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  459. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  460. package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  462. package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  464. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  465. package/dist/cli-bundle/chunks/chunk-JLM7BHI7.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  467. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  469. package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +0 -7
  470. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  471. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  473. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  478. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  479. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  481. package/dist/cli-bundle/chunks/chunk-WYDHYJPO.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  483. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  484. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  485. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  486. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  487. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  488. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  489. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  490. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  491. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  492. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  493. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  494. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  495. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  496. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  497. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  498. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  499. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  500. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  501. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  502. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  503. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  504. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  505. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  506. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  507. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  508. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  509. package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +0 -7
  510. package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +0 -1
  511. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js +0 -400
  512. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  513. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js +0 -410
  514. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  515. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  516. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  517. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js +0 -486
  518. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  522. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  523. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  524. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  525. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  526. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  527. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  528. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  529. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  531. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  532. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  533. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  534. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-5YWLSPGE.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-BIML7K2D.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-EZESUVJT.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-JFG4WQMG.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-3W2HJKJX.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-4PFVUUYV.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-5E7N4T2Z.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-5IZUBZBR.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-5JIWFWOZ.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-6CDCWKSX.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-6NYJGMTY.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-7CLLC75T.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-7LYO6S5A.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-A3OQ7TFW.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-ER4ME5U2.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-ERG65A2L.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-FH2H3CBD.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-FUFFPIYA.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-GUYNUXQT.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-GVJE5T7Q.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-JBZ2NTKX.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KEZOIPCR.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-MDHWWBNZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-MEZZZBYX.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-NZ7QIUP5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-P5L7Z2O6.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-SU2E4AWU.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-SU3TB4NS.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-T4XBKJ3F.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-U5TR4N7J.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UMNQZS4H.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-WJA3PXW7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-YSDFIY7N.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-YSGTMDWC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-Z5F6XZXE.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-Z7RPDF2Y.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-2BGBGSVI.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-5GU7OE67.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-6YODBUIV.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-AFVKPR57.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-DNWHEBOS.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-RW23R3VE.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-OYXRGY7S.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-PKCEHQY3.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-6XOR3HKN.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-I4NCLBR4.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-PM45M6PE.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-Z7YCH3BE.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-7YXHYG67.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-LPISP43T.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-N2T26FME.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-WATKQDE3.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-6LQ3GLM7.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-Z3X6JZLT.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-6DCLG52D.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-Y3ZCUTHK.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-BNINIMT7.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-QWE4YYK5.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-6SGKHS6O.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-FUYPSOFJ.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-2Q3K76G2.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-ATLBWXXD.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-RUYEMNRF.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-TDWSDR66.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-CGNQJXFE.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-SGRRS72R.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-IRL7WJ3E.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-N3JK7VBW.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-4GESW7RM.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-XIDPABA4.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-4BHWFFUV.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-4FJY7WIW.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-472TIOVK.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-D7BF5CL2.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-6KNOSLIT.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-W4UEICGF.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-44IHMMZZ.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-EXHU34EU.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-OLHNLAZY.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-TSBK4AY5.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-IB2NZZWD.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-VBCELP5G.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-7UBETML4.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-R227JOL6.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-FAG7COEH.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-MCK7PLYS.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-QY44WAMR.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-SY76DZTO.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-A7EICML6.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-IKJZWLQC.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-NWMR3VQL.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-VU46BLJZ.js.map} +0 -0
@@ -3,17 +3,18 @@ import {
3
3
  buildBackgroundTestCommandArgs,
4
4
  collect,
5
5
  getGlobalOptions,
6
- invalidateSearchCachesForMutation
7
- } from "./chunk-3J6JRJ3I.js";
6
+ invalidateSearchCachesForMutation,
7
+ readOptionString
8
+ } from "./chunk-HB4FAT3O.js";
8
9
  import {
9
10
  printError,
10
11
  printResult
11
- } from "./chunk-BDTISOSD.js";
12
- import "./chunk-4DSGXSBL.js";
13
- import "./chunk-MDPEOIGN.js";
14
- import "./chunk-3K2M5OYU.js";
15
- import "./chunk-BHO33VBQ.js";
16
- import "./chunk-WYDHYJPO.js";
12
+ } from "./chunk-EQURFOMH.js";
13
+ import "./chunk-XRYSCRZR.js";
14
+ import "./chunk-RAHINBVP.js";
15
+ import "./chunk-6KRFL33E.js";
16
+ import "./chunk-3W2HJKJX.js";
17
+ import "./chunk-AJHYQCBJ.js";
17
18
  import {
18
19
  EXIT_CODE,
19
20
  PmCliError,
@@ -22,13 +23,13 @@ import {
22
23
  resolvePmRoot,
23
24
  resolveRuntimeStatusRegistry,
24
25
  setActiveCommandResult
25
- } from "./chunk-RVUALSJF.js";
26
+ } from "./chunk-KHVGM5CS.js";
26
27
 
27
28
  // dist/cli/register-operations.js
28
29
  !(function() {
29
30
  try {
30
31
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
31
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "2590e181-883c-5eca-b5d1-1b6c892dfb8a");
32
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "962c869e-fec2-5e55-87c2-07feb8bf0782");
32
33
  } catch (e2) {
33
34
  }
34
35
  })();
@@ -58,371 +59,394 @@ function resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand) {
58
59
  }
59
60
  return normalizedNamespace;
60
61
  }
61
- function registerOperationCommands(program) {
62
- program.command("test").argument("<id>", "Item id").option("--add <value>", "Add linked test entry (CSV/markdown pairs or - for stdin)", collect).option("--add-json <value>", "Add linked test entry from JSON object/array (or - for stdin)", collect).option("--remove <value>", "Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)", collect).option("--list", "List linked tests without mutating").option("--run", "Run linked test commands").option("--match <value>", "Run only linked tests whose command/path contains this substring").option("--only-index <n>", "Run only the 1-based linked-test index from --list order").option("--only-last", "Run only the most recently added linked test").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage tests linked to an item and optionally run them.").action(async (id, options, command) => {
63
- const globalOptions = getGlobalOptions(command);
64
- const startedAt = Date.now();
65
- const addValues = Array.isArray(options.add) ? options.add : [];
66
- const addJsonValues = Array.isArray(options.addJson) ? options.addJson : [];
67
- const removeValues = Array.isArray(options.remove) ? options.remove : [];
68
- const runInBackground = options.background === true;
69
- if (runInBackground && options.run !== true) {
70
- throw new PmCliError("--background requires --run", EXIT_CODE.USAGE);
71
- }
72
- if (runInBackground && (addValues.length > 0 || addJsonValues.length > 0 || removeValues.length > 0)) {
73
- throw new PmCliError("--background does not support --add/--add-json/--remove; update linked tests first, then run in background", EXIT_CODE.USAGE);
74
- }
75
- if (runInBackground) {
76
- const { runStartBackgroundRun } = await import("./test-runs-PLRAZEFW.js");
77
- const result2 = await runStartBackgroundRun({
78
- kind: "test",
79
- commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, addJson: addJsonValues, remove: removeValues }),
80
- targetId: id,
81
- author: typeof options.author === "string" ? options.author : void 0,
82
- noExtensions: globalOptions.noExtensions === true
83
- }, globalOptions);
84
- printResult(result2, globalOptions);
85
- if (globalOptions.profile) {
86
- printError(`profile:command=test took_ms=${Date.now() - startedAt}`);
87
- }
88
- return;
89
- }
90
- const { runTest } = await import("./test-ACD52Z3S.js");
91
- const result = await runTest(id, {
92
- add: addValues,
93
- addJson: addJsonValues,
94
- remove: removeValues,
95
- list: Boolean(options.list),
96
- run: Boolean(options.run),
97
- match: typeof options.match === "string" ? options.match : void 0,
98
- onlyIndex: typeof options.onlyIndex === "string" || typeof options.onlyIndex === "number" ? options.onlyIndex : void 0,
99
- onlyLast: Boolean(options.onlyLast),
100
- timeout: typeof options.timeout === "string" ? options.timeout : void 0,
101
- progress: Boolean(options.progress),
102
- envSet: Array.isArray(options.envSet) ? options.envSet : [],
103
- envClear: Array.isArray(options.envClear) ? options.envClear : [],
104
- sharedHostSafe: Boolean(options.sharedHostSafe),
105
- pmContext: typeof options.pmContext === "string" ? options.pmContext : void 0,
106
- overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),
107
- failOnContextMismatch: Boolean(options.failOnContextMismatch),
108
- failOnSkipped: Boolean(options.failOnSkipped),
109
- failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),
110
- requireAssertionsForPm: Boolean(options.requireAssertionsForPm),
111
- checkContext: Boolean(options.checkContext),
112
- autoPmContext: Boolean(options.autoPmContext),
113
- author: typeof options.author === "string" ? options.author : void 0,
114
- message: typeof options.message === "string" ? options.message : void 0,
115
- force: Boolean(options.force)
116
- }, globalOptions);
117
- if (addValues.length > 0 || addJsonValues.length > 0 || removeValues.length > 0 || options.run === true) {
118
- await invalidateSearchCachesForMutation(globalOptions, result);
119
- }
120
- printResult(result, globalOptions);
121
- if (result.run_results.some((entry) => entry.status === "failed") || result.fail_on_skipped_triggered === true) {
122
- process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;
123
- }
124
- if (globalOptions.profile) {
125
- printError(`profile:command=test took_ms=${Date.now() - startedAt}`);
126
- }
127
- });
128
- program.command("test-all").description("Run linked tests across matching items.").option("--status <value>", "Filter items by status before running tests").option("--limit <n>", "Limit matching items before running linked tests").option("--offset <n>", "Skip matching items before running linked tests").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").action(async (options, command) => {
129
- const globalOptions = getGlobalOptions(command);
130
- const startedAt = Date.now();
131
- const runInBackground = options.background === true;
132
- if (runInBackground) {
133
- const { runStartBackgroundRun } = await import("./test-runs-PLRAZEFW.js");
134
- const result2 = await runStartBackgroundRun({
135
- kind: "test-all",
136
- commandArgs: buildBackgroundTestAllCommandArgs(options),
137
- statusFilter: typeof options.status === "string" ? options.status : void 0,
138
- noExtensions: globalOptions.noExtensions === true
139
- }, globalOptions);
140
- printResult(result2, globalOptions);
141
- if (globalOptions.profile) {
142
- printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);
143
- }
144
- return;
145
- }
146
- const { runTestAll } = await import("./test-all-RBZ6DLU2.js");
147
- const result = await runTestAll({
148
- status: typeof options.status === "string" ? options.status : void 0,
149
- limit: typeof options.limit === "string" ? options.limit : void 0,
150
- offset: typeof options.offset === "string" ? options.offset : void 0,
151
- timeout: typeof options.timeout === "string" ? options.timeout : void 0,
152
- progress: Boolean(options.progress),
153
- envSet: Array.isArray(options.envSet) ? options.envSet : [],
154
- envClear: Array.isArray(options.envClear) ? options.envClear : [],
155
- sharedHostSafe: Boolean(options.sharedHostSafe),
156
- pmContext: typeof options.pmContext === "string" ? options.pmContext : void 0,
157
- overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),
158
- failOnContextMismatch: Boolean(options.failOnContextMismatch),
159
- failOnSkipped: Boolean(options.failOnSkipped),
160
- failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),
161
- requireAssertionsForPm: Boolean(options.requireAssertionsForPm),
162
- checkContext: Boolean(options.checkContext),
163
- autoPmContext: Boolean(options.autoPmContext)
62
+ function collectTestMutationValues(options) {
63
+ return {
64
+ addValues: Array.isArray(options.add) ? options.add : [],
65
+ addJsonValues: Array.isArray(options.addJson) ? options.addJson : [],
66
+ removeValues: Array.isArray(options.remove) ? options.remove : []
67
+ };
68
+ }
69
+ function validateBackgroundTestOptions(options, values) {
70
+ if (options.background !== true) {
71
+ return;
72
+ }
73
+ if (options.run !== true) {
74
+ throw new PmCliError("--background requires --run", EXIT_CODE.USAGE);
75
+ }
76
+ if (values.addValues.length > 0 || values.addJsonValues.length > 0 || values.removeValues.length > 0) {
77
+ throw new PmCliError("--background does not support --add/--add-json/--remove; update linked tests first, then run in background", EXIT_CODE.USAGE);
78
+ }
79
+ }
80
+ async function runBackgroundLinkedTests(id, options, globalOptions, values) {
81
+ const { runStartBackgroundRun } = await import("./test-runs-QIR5MJPL.js");
82
+ const result = await runStartBackgroundRun({
83
+ kind: "test",
84
+ commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: values.addValues, addJson: values.addJsonValues, remove: values.removeValues }),
85
+ targetId: id,
86
+ author: typeof options.author === "string" ? options.author : void 0,
87
+ noExtensions: globalOptions.noExtensions === true
88
+ }, globalOptions);
89
+ printResult(result, globalOptions);
90
+ }
91
+ function buildRunTestOptions(options, values) {
92
+ return {
93
+ add: values.addValues,
94
+ addJson: values.addJsonValues,
95
+ remove: values.removeValues,
96
+ list: Boolean(options.list),
97
+ run: Boolean(options.run),
98
+ match: typeof options.match === "string" ? options.match : void 0,
99
+ onlyIndex: typeof options.onlyIndex === "string" || typeof options.onlyIndex === "number" ? options.onlyIndex : void 0,
100
+ onlyLast: Boolean(options.onlyLast),
101
+ timeout: typeof options.timeout === "string" ? options.timeout : void 0,
102
+ progress: Boolean(options.progress),
103
+ envSet: Array.isArray(options.envSet) ? options.envSet : [],
104
+ envClear: Array.isArray(options.envClear) ? options.envClear : [],
105
+ sharedHostSafe: Boolean(options.sharedHostSafe),
106
+ pmContext: typeof options.pmContext === "string" ? options.pmContext : void 0,
107
+ overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),
108
+ failOnContextMismatch: Boolean(options.failOnContextMismatch),
109
+ failOnSkipped: Boolean(options.failOnSkipped),
110
+ failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),
111
+ requireAssertionsForPm: Boolean(options.requireAssertionsForPm),
112
+ checkContext: Boolean(options.checkContext),
113
+ autoPmContext: Boolean(options.autoPmContext),
114
+ author: typeof options.author === "string" ? options.author : void 0,
115
+ message: typeof options.message === "string" ? options.message : void 0,
116
+ force: Boolean(options.force)
117
+ };
118
+ }
119
+ async function runForegroundLinkedTests(id, options, globalOptions, values) {
120
+ const { runTest } = await import("./test-SY76DZTO.js");
121
+ const result = await runTest(id, buildRunTestOptions(options, values), globalOptions);
122
+ if (values.addValues.length > 0 || values.addJsonValues.length > 0 || values.removeValues.length > 0 || options.run === true) {
123
+ await invalidateSearchCachesForMutation(globalOptions, result);
124
+ }
125
+ printResult(result, globalOptions);
126
+ if (result.run_results.some((entry) => entry.status === "failed") || result.fail_on_skipped_triggered === true) {
127
+ process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;
128
+ }
129
+ }
130
+ async function runTestCommandAction(id, options, command) {
131
+ const globalOptions = getGlobalOptions(command);
132
+ const startedAt = Date.now();
133
+ const values = collectTestMutationValues(options);
134
+ validateBackgroundTestOptions(options, values);
135
+ if (options.background === true) {
136
+ await runBackgroundLinkedTests(id, options, globalOptions, values);
137
+ } else {
138
+ await runForegroundLinkedTests(id, options, globalOptions, values);
139
+ }
140
+ if (globalOptions.profile) {
141
+ printError(`profile:command=test took_ms=${Date.now() - startedAt}`);
142
+ }
143
+ }
144
+ function buildLifecycleMutationOptions(options) {
145
+ return {
146
+ author: readOptionString(options, "author"),
147
+ message: readOptionString(options, "message")
148
+ };
149
+ }
150
+ async function runTestAllAction(options, command) {
151
+ const globalOptions = getGlobalOptions(command);
152
+ const startedAt = Date.now();
153
+ const runInBackground = options.background === true;
154
+ if (runInBackground) {
155
+ const { runStartBackgroundRun } = await import("./test-runs-QIR5MJPL.js");
156
+ const result2 = await runStartBackgroundRun({
157
+ kind: "test-all",
158
+ commandArgs: buildBackgroundTestAllCommandArgs(options),
159
+ statusFilter: readOptionString(options, "status"),
160
+ noExtensions: globalOptions.noExtensions === true
164
161
  }, globalOptions);
165
- await invalidateSearchCachesForMutation(globalOptions, { ids: result.results.map((entry) => entry.id) });
166
- printResult(result, globalOptions);
167
- if (result.failed > 0 || result.fail_on_skipped_triggered === true) {
168
- process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;
169
- }
162
+ printResult(result2, globalOptions);
170
163
  if (globalOptions.profile) {
171
164
  printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);
172
165
  }
166
+ return;
167
+ }
168
+ const { runTestAll } = await import("./test-all-QD6QAEG7.js");
169
+ const result = await runTestAll({
170
+ status: readOptionString(options, "status"),
171
+ limit: readOptionString(options, "limit"),
172
+ offset: readOptionString(options, "offset"),
173
+ timeout: readOptionString(options, "timeout"),
174
+ progress: Boolean(options.progress),
175
+ envSet: Array.isArray(options.envSet) ? options.envSet : [],
176
+ envClear: Array.isArray(options.envClear) ? options.envClear : [],
177
+ sharedHostSafe: Boolean(options.sharedHostSafe),
178
+ pmContext: readOptionString(options, "pmContext"),
179
+ overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),
180
+ failOnContextMismatch: Boolean(options.failOnContextMismatch),
181
+ failOnSkipped: Boolean(options.failOnSkipped),
182
+ failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),
183
+ requireAssertionsForPm: Boolean(options.requireAssertionsForPm),
184
+ checkContext: Boolean(options.checkContext),
185
+ autoPmContext: Boolean(options.autoPmContext)
186
+ }, globalOptions);
187
+ await invalidateSearchCachesForMutation(globalOptions, { ids: result.results.map((entry) => entry.id) });
188
+ printResult(result, globalOptions);
189
+ if (result.failed > 0 || result.fail_on_skipped_triggered === true) {
190
+ process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;
191
+ }
192
+ if (globalOptions.profile) {
193
+ printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);
194
+ }
195
+ }
196
+ async function runTelemetryAction(namespaceOrSubcommand, subcommand, options, command) {
197
+ const globalOptions = getGlobalOptions(command);
198
+ const startedAt = Date.now();
199
+ const { runTelemetry } = await import("./telemetry-DRPDZMAO.js");
200
+ const result = await runTelemetry({
201
+ subcommand: resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand),
202
+ // Commander always parses `--limit <n>` to a string (or leaves it
203
+ // undefined), so a string passthrough covers every CLI-reachable input.
204
+ limit: readOptionString(options, "limit")
205
+ }, globalOptions);
206
+ printResult(result, globalOptions);
207
+ if (globalOptions.profile) {
208
+ printError(`profile:command=telemetry took_ms=${Date.now() - startedAt}`);
209
+ }
210
+ }
211
+ async function runStatsAction(options, command) {
212
+ const globalOptions = getGlobalOptions(command);
213
+ const startedAt = Date.now();
214
+ const { runStats } = await import("./stats-FAG7COEH.js");
215
+ const result = await runStats(globalOptions, {
216
+ storage: options.storage === true,
217
+ metadataCoverage: options.metadataCoverage === true,
218
+ byAssignee: options.byAssignee === true,
219
+ byTag: options.byTag === true,
220
+ byPriority: options.byPriority === true,
221
+ tagPrefix: readOptionString(options, "tagPrefix"),
222
+ fieldUtilization: options.fieldUtilization === true
173
223
  });
174
- program.command("test-runs-worker", { hidden: true }).argument("<runId>", "Background run id").description("Internal background worker command.").action(async (runId, _options, command) => {
175
- const globalOptions = getGlobalOptions(command);
176
- const { runTestRunsWorker } = await import("./test-runs-PLRAZEFW.js");
177
- await runTestRunsWorker(runId, globalOptions);
178
- });
179
- program.command("telemetry").argument("[namespaceOrSubcommand]", "Telemetry subcommand: status, flush, stats, clear (default: status)").argument("[subcommand]", "Compatibility alias target for local-analytics: status, flush, stats, clear").option("--limit <n>", "Maximum command groups returned by telemetry stats").description("Inspect and manage local telemetry queue/runtime state.").action(async (namespaceOrSubcommand, subcommand, options, command) => {
180
- const globalOptions = getGlobalOptions(command);
181
- const startedAt = Date.now();
182
- const { runTelemetry } = await import("./telemetry-GAHHQTOS.js");
183
- const result = await runTelemetry({
184
- subcommand: resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand),
185
- // Commander always parses `--limit <n>` to a string (or leaves it
186
- // undefined), so a string passthrough covers every CLI-reachable input.
187
- limit: typeof options.limit === "string" ? options.limit : void 0
188
- }, globalOptions);
189
- printResult(result, globalOptions);
190
- if (globalOptions.profile) {
191
- printError(`profile:command=telemetry took_ms=${Date.now() - startedAt}`);
192
- }
193
- });
194
- program.command("stats").description("Show project tracker statistics.").option("--storage", "Include aggregate history-stream storage metrics (total streams/lines/bytes, largest + deepest streams, oldest/newest entries)").option("--metadata-coverage", "Include metadata coverage % (acceptance_criteria, estimated_minutes, resolution, tags, parent) overall and by type").option("--by-assignee", "Include a lifecycle-bucketed item breakdown grouped by assignee").option("--by-tag", "Include a lifecycle-bucketed item breakdown grouped by tag").option("--by-priority", "Include a lifecycle-bucketed item breakdown grouped by priority").option("--tag-prefix <value>", "With --by-tag: only count tags starting with this prefix (e.g. domain:)").option("--field-utilization", "Report content-field utilization rates (notes/learnings/files/docs/tests/comments/deps/body) for governance audits").action(async (options, command) => {
195
- const globalOptions = getGlobalOptions(command);
196
- const startedAt = Date.now();
197
- const { runStats } = await import("./stats-W5KNVJWQ.js");
198
- const result = await runStats(globalOptions, {
199
- storage: options.storage === true,
200
- metadataCoverage: options.metadataCoverage === true,
201
- byAssignee: options.byAssignee === true,
202
- byTag: options.byTag === true,
203
- byPriority: options.byPriority === true,
204
- tagPrefix: typeof options.tagPrefix === "string" ? options.tagPrefix : void 0,
205
- fieldUtilization: options.fieldUtilization === true
206
- });
207
- printResult(result, globalOptions);
208
- if (globalOptions.profile) {
209
- printError(`profile:command=stats took_ms=${Date.now() - startedAt}`);
210
- }
211
- });
212
- program.command("health").description("Show project tracker health checks.").option("--strict-directories", "Treat optional item-type directories as required failures").option("--check-only", "Run read-only health diagnostics without refreshing vectors").option("--check-telemetry", "Probe telemetry endpoint health and include network diagnostics").option("--no-refresh", "Disable automatic vector refresh attempts during health checks").option("--refresh-vectors", "Explicitly enable vector refresh attempts during health checks").option("--verbose-stale-items", "Include full stale vectorization ID lists in health output").option("--brief", "Emit compact health details for low-token agent checks").option("--summary", "Emit one-line-style health status with check names and warning count").option("--skip-vectors", "Skip vectorization check for a faster run").option("--skip-integrity", "Skip item/history file integrity check for a faster run").option("--skip-drift", "Skip history drift hash check for a faster run").option("--full", "Run all checks including slow integrity, drift, and vectorization checks").option("--strict-exit", "Return non-zero exit when health is not ok (advisory telemetry warnings are excluded; see warnings[])").option("--fail-on-warn", "Alias for --strict-exit").action(async (options, command) => {
213
- const globalOptions = getGlobalOptions(command);
214
- const startedAt = Date.now();
215
- const { runHealth } = await import("./health-GZXGBZ36.js");
216
- const result = await runHealth(globalOptions, {
217
- strictDirectories: Boolean(options.strictDirectories),
218
- checkOnly: Boolean(options.checkOnly),
219
- checkTelemetry: Boolean(options.checkTelemetry),
220
- noRefresh: Boolean(options.noRefresh),
221
- refreshVectors: Boolean(options.refreshVectors),
222
- verboseStaleItems: Boolean(options.verboseStaleItems),
223
- brief: Boolean(options.brief),
224
- summary: Boolean(options.summary),
225
- skipVectors: Boolean(options.skipVectors),
226
- skipIntegrity: Boolean(options.skipIntegrity),
227
- skipDrift: Boolean(options.skipDrift),
228
- full: Boolean(options.full)
229
- });
230
- printResult(result, globalOptions);
231
- const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);
232
- if (strictExit && !result.ok) {
233
- setActiveCommandResult({
234
- ...result,
235
- exit_code: EXIT_CODE.GENERIC_FAILURE,
236
- error_code: "health_findings",
237
- error_category: "validation",
238
- command_resolution: "health_findings",
239
- resolution_stage: "execute"
240
- });
241
- process.exitCode = EXIT_CODE.GENERIC_FAILURE;
242
- }
243
- if (globalOptions.profile) {
244
- printError(`profile:command=health took_ms=${Date.now() - startedAt}`);
245
- }
246
- });
247
- program.command("validate").description("Run standalone metadata, resolution, lifecycle, files, linked-command reference, and history drift validation checks.").option("--check-metadata", "Run metadata completeness checks").option("--metadata-profile <value>", "Select metadata validation profile for --check-metadata (core|strict|custom)").option("--check-resolution", "Run closed-item resolution metadata checks").option("--check-lifecycle", "Run active-item lifecycle governance drift checks").option("--check-stale-blockers", "Include stale blocker-pattern diagnostics in lifecycle checks").option("--dependency-cycle-severity <value>", "Set dependency-cycle warning policy for lifecycle checks (off|warn|error)").option("--parent-cycle-severity <value>", "Set parent-hierarchy cycle warning policy for lifecycle checks (off|warn|error)").option("--check-files", "Run linked-file and orphaned-file checks").option("--check-command-references", "Run linked-command PM-ID reference checks").option("--scan-mode <value>", "Select file candidate scan mode for --check-files (default|tracked-all|tracked-all-strict)").option("--include-pm-internals", "Include PM storage internals in tracked-all candidate scans").option("--verbose-file-lists", "Include full file-path lists for validate --check-files details").option("--verbose-diagnostics", "Include full validate diagnostic ID lists instead of compact summaries").option("--all-affected-ids", "Emit complete missing_* affected-ID lists with no truncation (implied by --json)").option("--strict-exit", "Return non-zero exit when validation warnings are present").option("--fail-on-warn", "Alias for --strict-exit").option("--fix-hints", "Add a machine-executable fix_hints[] of pm commands to each failing check's details").option("--auto-fix", "Apply the safe, deterministic subset of fix-hint remediations (field backfills) automatically").option("--dry-run", "Preview planned --auto-fix/--prune-missing fixes without applying them").option("--fix-scope <scope>", "Grant --auto-fix scopes (metadata, resolution, lifecycle; comma-separated or repeatable). Default: metadata, resolution; lifecycle must be named explicitly", collect).option("--prune-missing", "Remove stale linked-file/doc LINKS whose paths classified as deleted (never touches real files)").option("--check-history-drift", "Run item/history hash drift checks").action(async (options, command) => {
248
- const globalOptions = getGlobalOptions(command);
249
- const startedAt = Date.now();
250
- const { runValidate } = await import("./validate-MTUVL5VC.js");
251
- const result = await runValidate({
252
- checkMetadata: Boolean(options.checkMetadata),
253
- metadataProfile: typeof options.metadataProfile === "string" ? options.metadataProfile : void 0,
254
- checkResolution: Boolean(options.checkResolution),
255
- checkLifecycle: Boolean(options.checkLifecycle),
256
- checkStaleBlockers: Boolean(options.checkStaleBlockers),
257
- dependencyCycleSeverity: typeof options.dependencyCycleSeverity === "string" ? options.dependencyCycleSeverity : void 0,
258
- parentCycleSeverity: typeof options.parentCycleSeverity === "string" ? options.parentCycleSeverity : void 0,
259
- checkFiles: Boolean(options.checkFiles),
260
- checkCommandReferences: Boolean(options.checkCommandReferences),
261
- scanMode: typeof options.scanMode === "string" ? options.scanMode : void 0,
262
- includePmInternals: Boolean(options.includePmInternals),
263
- verboseFileLists: Boolean(options.verboseFileLists),
264
- verboseDiagnostics: Boolean(options.verboseDiagnostics),
265
- allAffectedIds: Boolean(options.allAffectedIds),
266
- checkHistoryDrift: Boolean(options.checkHistoryDrift),
267
- fixHints: Boolean(options.fixHints),
268
- autoFix: Boolean(options.autoFix),
269
- dryRun: Boolean(options.dryRun),
270
- fixScope: Array.isArray(options.fixScope) ? options.fixScope : void 0,
271
- pruneMissing: Boolean(options.pruneMissing)
272
- }, globalOptions);
273
- printResult(result, globalOptions);
274
- const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);
275
- if (strictExit && (result.has_warnings || !result.ok)) {
276
- setActiveCommandResult({
277
- ...result,
278
- exit_code: EXIT_CODE.GENERIC_FAILURE,
279
- error_code: "validation_findings",
280
- error_category: "validation",
281
- command_resolution: "validation_findings",
282
- resolution_stage: "execute"
283
- });
284
- process.exitCode = EXIT_CODE.GENERIC_FAILURE;
285
- }
286
- if (globalOptions.profile) {
287
- printError(`profile:command=validate took_ms=${Date.now() - startedAt}`);
288
- }
289
- });
290
- program.command("gc").option("--dry-run", "Preview cleanup targets without deleting files; without this flag, pm gc deletes matched artifacts").option("--scope <value>", "Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime, locks, checkpoints", collect).description("Delete optional cache artifacts by default (including expired lock debris) and show a summary.").action(async (options, command) => {
291
- const globalOptions = getGlobalOptions(command);
292
- const startedAt = Date.now();
293
- const { runGc } = await import("./gc-LPVMKJQJ.js");
294
- const result = await runGc(globalOptions, {
295
- dryRun: options.dryRun === true,
296
- scope: Array.isArray(options.scope) ? options.scope : []
297
- });
298
- printResult(result, globalOptions);
299
- if (globalOptions.profile) {
300
- printError(`profile:command=gc took_ms=${Date.now() - startedAt}`);
301
- }
302
- });
303
- program.command("contracts").description("Show machine-readable command and schema contracts for agents.").option("--action <value>", "Filter tool schema branches to a specific action").option("--command <value>", "Scope contracts output to one CLI command (narrow-by-default)").option("--schema-only", "Return schema-focused output only").option("--flags-only", "Return command flag contracts only").option("--availability-only", "Return action availability surface only").option("--runtime-only", "Include only actions invocable in the current runtime").option("--active-only", "Alias for --runtime-only").option("--full", "Include full schema and command-flag surfaces (large; default brief output omits heavy sections for unfiltered queries)").action(async (options, command) => {
304
- const globalOptions = getGlobalOptions(command);
305
- const startedAt = Date.now();
306
- const { runContracts } = await import("./contracts-HN7ABKLP.js");
307
- const result = await runContracts({
308
- action: typeof options.action === "string" ? options.action : void 0,
309
- command: typeof options.command === "string" ? options.command : void 0,
310
- schemaOnly: Boolean(options.schemaOnly),
311
- flagsOnly: Boolean(options.flagsOnly),
312
- availabilityOnly: Boolean(options.availabilityOnly),
313
- runtimeOnly: Boolean(options.runtimeOnly) || Boolean(options.activeOnly),
314
- full: Boolean(options.full)
315
- }, globalOptions);
316
- printResult(result, globalOptions);
317
- if (globalOptions.profile) {
318
- printError(`profile:command=contracts took_ms=${Date.now() - startedAt}`);
319
- }
224
+ printResult(result, globalOptions);
225
+ if (globalOptions.profile) {
226
+ printError(`profile:command=stats took_ms=${Date.now() - startedAt}`);
227
+ }
228
+ }
229
+ async function runHealthAction(options, command) {
230
+ const globalOptions = getGlobalOptions(command);
231
+ const startedAt = Date.now();
232
+ const { runHealth } = await import("./health-TMFVNYRA.js");
233
+ const result = await runHealth(globalOptions, {
234
+ strictDirectories: Boolean(options.strictDirectories),
235
+ checkOnly: Boolean(options.checkOnly),
236
+ checkTelemetry: Boolean(options.checkTelemetry),
237
+ noRefresh: Boolean(options.noRefresh),
238
+ refreshVectors: Boolean(options.refreshVectors),
239
+ verboseStaleItems: Boolean(options.verboseStaleItems),
240
+ brief: Boolean(options.brief),
241
+ summary: Boolean(options.summary),
242
+ skipVectors: Boolean(options.skipVectors),
243
+ skipIntegrity: Boolean(options.skipIntegrity),
244
+ skipDrift: Boolean(options.skipDrift),
245
+ full: Boolean(options.full)
320
246
  });
321
- program.command("claim").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force claim override").option("--if-available", "Skip silently when the item is already claimed by another author (returns skipped=true)").description("Claim an item for active work.").action(async (id, options, command) => {
322
- const globalOptions = getGlobalOptions(command);
323
- const startedAt = Date.now();
324
- const { runClaim } = await import("./claim-T3GCKV7C.js");
325
- const result = await runClaim(id, Boolean(options.force), globalOptions, {
326
- author: typeof options.author === "string" ? options.author : void 0,
327
- message: typeof options.message === "string" ? options.message : void 0,
328
- ifAvailable: options.ifAvailable === true
247
+ printResult(result, globalOptions);
248
+ const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);
249
+ if (strictExit && !result.ok) {
250
+ setActiveCommandResult({
251
+ ...result,
252
+ exit_code: EXIT_CODE.GENERIC_FAILURE,
253
+ error_code: "health_findings",
254
+ error_category: "validation",
255
+ command_resolution: "health_findings",
256
+ resolution_stage: "execute"
329
257
  });
330
- await invalidateSearchCachesForMutation(globalOptions, result);
331
- printResult(result, globalOptions);
332
- if (globalOptions.profile) {
333
- printError(`profile:command=claim took_ms=${Date.now() - startedAt}`);
334
- }
335
- });
336
- program.command("release").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--allow-audit-release", "Allow non-owner release handoffs without requiring --force").option("--force", "Force release override").description("Release an item's active claim.").action(async (id, options, command) => {
337
- const globalOptions = getGlobalOptions(command);
338
- const startedAt = Date.now();
339
- const { runRelease } = await import("./claim-T3GCKV7C.js");
340
- const result = await runRelease(id, Boolean(options.force), globalOptions, {
341
- author: typeof options.author === "string" ? options.author : void 0,
342
- message: typeof options.message === "string" ? options.message : void 0,
343
- allowAuditRelease: options.allowAuditRelease === true
258
+ process.exitCode = EXIT_CODE.GENERIC_FAILURE;
259
+ }
260
+ if (globalOptions.profile) {
261
+ printError(`profile:command=health took_ms=${Date.now() - startedAt}`);
262
+ }
263
+ }
264
+ async function runValidateAction(options, command) {
265
+ const globalOptions = getGlobalOptions(command);
266
+ const startedAt = Date.now();
267
+ const { runValidate } = await import("./validate-NRY6MFXN.js");
268
+ const result = await runValidate({
269
+ checkMetadata: Boolean(options.checkMetadata),
270
+ metadataProfile: readOptionString(options, "metadataProfile"),
271
+ checkResolution: Boolean(options.checkResolution),
272
+ checkLifecycle: Boolean(options.checkLifecycle),
273
+ checkStaleBlockers: Boolean(options.checkStaleBlockers),
274
+ dependencyCycleSeverity: readOptionString(options, "dependencyCycleSeverity"),
275
+ parentCycleSeverity: readOptionString(options, "parentCycleSeverity"),
276
+ checkFiles: Boolean(options.checkFiles),
277
+ checkCommandReferences: Boolean(options.checkCommandReferences),
278
+ scanMode: readOptionString(options, "scanMode"),
279
+ includePmInternals: Boolean(options.includePmInternals),
280
+ verboseFileLists: Boolean(options.verboseFileLists),
281
+ verboseDiagnostics: Boolean(options.verboseDiagnostics),
282
+ allAffectedIds: Boolean(options.allAffectedIds),
283
+ checkHistoryDrift: Boolean(options.checkHistoryDrift),
284
+ fixHints: Boolean(options.fixHints),
285
+ autoFix: Boolean(options.autoFix),
286
+ dryRun: Boolean(options.dryRun),
287
+ fixScope: Array.isArray(options.fixScope) ? options.fixScope : void 0,
288
+ pruneMissing: Boolean(options.pruneMissing)
289
+ }, globalOptions);
290
+ printResult(result, globalOptions);
291
+ const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);
292
+ if (strictExit && (result.has_warnings || !result.ok)) {
293
+ setActiveCommandResult({
294
+ ...result,
295
+ exit_code: EXIT_CODE.GENERIC_FAILURE,
296
+ error_code: "validation_findings",
297
+ error_category: "validation",
298
+ command_resolution: "validation_findings",
299
+ resolution_stage: "execute"
344
300
  });
345
- await invalidateSearchCachesForMutation(globalOptions, result);
346
- printResult(result, globalOptions);
347
- if (globalOptions.profile) {
348
- printError(`profile:command=release took_ms=${Date.now() - startedAt}`);
349
- }
301
+ process.exitCode = EXIT_CODE.GENERIC_FAILURE;
302
+ }
303
+ if (globalOptions.profile) {
304
+ printError(`profile:command=validate took_ms=${Date.now() - startedAt}`);
305
+ }
306
+ }
307
+ async function runGcAction(options, command) {
308
+ const globalOptions = getGlobalOptions(command);
309
+ const startedAt = Date.now();
310
+ const { runGc } = await import("./gc-RUYEMNRF.js");
311
+ const result = await runGc(globalOptions, {
312
+ dryRun: options.dryRun === true,
313
+ scope: Array.isArray(options.scope) ? options.scope : []
350
314
  });
351
- program.command("start-task").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership or terminal override when required").description("Lifecycle alias: claim an item and move it to in_progress.").action(async (id, options, command) => {
352
- const globalOptions = getGlobalOptions(command);
353
- const startedAt = Date.now();
354
- const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
355
- const settings = await readSettings(pmRoot);
356
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
357
- const inProgressStatus = resolveStartTaskInProgressStatus(statusRegistry);
358
- const force = Boolean(options.force);
359
- const mutationOptions = {
360
- author: typeof options.author === "string" ? options.author : void 0,
361
- message: typeof options.message === "string" ? options.message : void 0
362
- };
363
- const [{ runClaim }, { runUpdate }] = await Promise.all([
364
- import("./claim-T3GCKV7C.js"),
365
- import("./update-AMRSOIWP.js")
366
- ]);
367
- const claimResult = await runClaim(id, force, globalOptions, mutationOptions);
368
- await invalidateSearchCachesForMutation(globalOptions, claimResult);
369
- const updateResult = await runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);
370
- await invalidateSearchCachesForMutation(globalOptions, updateResult);
371
- printResult({ id, action: "start_task", claim: claimResult, update: updateResult }, globalOptions);
372
- if (globalOptions.profile) {
373
- printError(`profile:command=start-task took_ms=${Date.now() - startedAt}`);
374
- }
315
+ printResult(result, globalOptions);
316
+ if (globalOptions.profile) {
317
+ printError(`profile:command=gc took_ms=${Date.now() - startedAt}`);
318
+ }
319
+ }
320
+ async function runContractsAction(options, command) {
321
+ const globalOptions = getGlobalOptions(command);
322
+ const startedAt = Date.now();
323
+ const { runContracts } = await import("./contracts-L6ODXNUM.js");
324
+ const result = await runContracts({
325
+ action: readOptionString(options, "action"),
326
+ command: readOptionString(options, "command"),
327
+ schemaOnly: Boolean(options.schemaOnly),
328
+ flagsOnly: Boolean(options.flagsOnly),
329
+ availabilityOnly: Boolean(options.availabilityOnly),
330
+ runtimeOnly: Boolean(options.runtimeOnly) || Boolean(options.activeOnly),
331
+ full: Boolean(options.full)
332
+ }, globalOptions);
333
+ printResult(result, globalOptions);
334
+ if (globalOptions.profile) {
335
+ printError(`profile:command=contracts took_ms=${Date.now() - startedAt}`);
336
+ }
337
+ }
338
+ async function runClaimAction(id, options, command) {
339
+ const globalOptions = getGlobalOptions(command);
340
+ const startedAt = Date.now();
341
+ const { runClaim } = await import("./claim-2BGBGSVI.js");
342
+ const result = await runClaim(id, Boolean(options.force), globalOptions, {
343
+ ...buildLifecycleMutationOptions(options),
344
+ ifAvailable: options.ifAvailable === true
375
345
  });
376
- program.command("pause-task").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override when required").description("Lifecycle alias: move an item to open and release its claim.").action(async (id, options, command) => {
377
- const globalOptions = getGlobalOptions(command);
378
- const startedAt = Date.now();
379
- const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
380
- const settings = await readSettings(pmRoot);
381
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
382
- const openStatus = statusRegistry.open_status;
383
- const force = Boolean(options.force);
384
- const mutationOptions = {
385
- author: typeof options.author === "string" ? options.author : void 0,
386
- message: typeof options.message === "string" ? options.message : void 0
387
- };
388
- const [{ runUpdate }, { runRelease }] = await Promise.all([
389
- import("./update-AMRSOIWP.js"),
390
- import("./claim-T3GCKV7C.js")
391
- ]);
392
- const updateResult = await runUpdate(id, { ...mutationOptions, status: openStatus, force }, globalOptions);
393
- await invalidateSearchCachesForMutation(globalOptions, updateResult);
394
- const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
395
- await invalidateSearchCachesForMutation(globalOptions, releaseResult);
396
- printResult({ id, action: "pause_task", update: updateResult, release: releaseResult }, globalOptions);
397
- if (globalOptions.profile) {
398
- printError(`profile:command=pause-task took_ms=${Date.now() - startedAt}`);
399
- }
346
+ await invalidateSearchCachesForMutation(globalOptions, result);
347
+ printResult(result, globalOptions);
348
+ if (globalOptions.profile) {
349
+ printError(`profile:command=claim took_ms=${Date.now() - startedAt}`);
350
+ }
351
+ }
352
+ async function runReleaseAction(id, options, command) {
353
+ const globalOptions = getGlobalOptions(command);
354
+ const startedAt = Date.now();
355
+ const { runRelease } = await import("./claim-2BGBGSVI.js");
356
+ const result = await runRelease(id, Boolean(options.force), globalOptions, {
357
+ ...buildLifecycleMutationOptions(options),
358
+ allowAuditRelease: options.allowAuditRelease === true
400
359
  });
401
- program.command("close-task").argument("<id>", "Item id").argument("[reason]", "Close reason text").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--validate-close <value>", "Close-time validation mode: off|warn|strict").option("--force", "Force ownership or terminal override when required").description("Lifecycle alias: close an item and release assignment metadata.").action(async (id, reason, options, command) => {
360
+ await invalidateSearchCachesForMutation(globalOptions, result);
361
+ printResult(result, globalOptions);
362
+ if (globalOptions.profile) {
363
+ printError(`profile:command=release took_ms=${Date.now() - startedAt}`);
364
+ }
365
+ }
366
+ async function runStartTaskAction(id, options, command) {
367
+ const globalOptions = getGlobalOptions(command);
368
+ const startedAt = Date.now();
369
+ const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
370
+ const settings = await readSettings(pmRoot);
371
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
372
+ const inProgressStatus = resolveStartTaskInProgressStatus(statusRegistry);
373
+ const force = Boolean(options.force);
374
+ const mutationOptions = buildLifecycleMutationOptions(options);
375
+ const [{ runClaim }, { runUpdate }] = await Promise.all([
376
+ import("./claim-2BGBGSVI.js"),
377
+ import("./update-A7EICML6.js")
378
+ ]);
379
+ const claimResult = await runClaim(id, force, globalOptions, mutationOptions);
380
+ await invalidateSearchCachesForMutation(globalOptions, claimResult);
381
+ const updateResult = await runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);
382
+ await invalidateSearchCachesForMutation(globalOptions, updateResult);
383
+ printResult({ id, action: "start_task", claim: claimResult, update: updateResult }, globalOptions);
384
+ if (globalOptions.profile) {
385
+ printError(`profile:command=start-task took_ms=${Date.now() - startedAt}`);
386
+ }
387
+ }
388
+ async function runPauseTaskAction(id, options, command) {
389
+ const globalOptions = getGlobalOptions(command);
390
+ const startedAt = Date.now();
391
+ const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
392
+ const settings = await readSettings(pmRoot);
393
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
394
+ const force = Boolean(options.force);
395
+ const mutationOptions = buildLifecycleMutationOptions(options);
396
+ const [{ runUpdate }, { runRelease }] = await Promise.all([
397
+ import("./update-A7EICML6.js"),
398
+ import("./claim-2BGBGSVI.js")
399
+ ]);
400
+ const updateResult = await runUpdate(id, { ...mutationOptions, status: statusRegistry.open_status, force }, globalOptions);
401
+ await invalidateSearchCachesForMutation(globalOptions, updateResult);
402
+ const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
403
+ await invalidateSearchCachesForMutation(globalOptions, releaseResult);
404
+ printResult({ id, action: "pause_task", update: updateResult, release: releaseResult }, globalOptions);
405
+ if (globalOptions.profile) {
406
+ printError(`profile:command=pause-task took_ms=${Date.now() - startedAt}`);
407
+ }
408
+ }
409
+ async function runCloseTaskAction(id, reason, options, command) {
410
+ const globalOptions = getGlobalOptions(command);
411
+ const startedAt = Date.now();
412
+ const force = Boolean(options.force);
413
+ const mutationOptions = buildLifecycleMutationOptions(options);
414
+ const [{ runClose }, { runRelease }] = await Promise.all([
415
+ import("./close-6YODBUIV.js"),
416
+ import("./claim-2BGBGSVI.js")
417
+ ]);
418
+ const closeResult = await runClose(id, reason, {
419
+ ...mutationOptions,
420
+ validateClose: readOptionString(options, "validateClose"),
421
+ force
422
+ }, globalOptions);
423
+ await invalidateSearchCachesForMutation(globalOptions, closeResult);
424
+ const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
425
+ await invalidateSearchCachesForMutation(globalOptions, releaseResult);
426
+ printResult({ id, action: "close_task", close: closeResult, release: releaseResult }, globalOptions);
427
+ if (globalOptions.profile) {
428
+ printError(`profile:command=close-task took_ms=${Date.now() - startedAt}`);
429
+ }
430
+ }
431
+ function registerOperationCommands(program) {
432
+ program.command("test").argument("<id>", "Item id").option("--add <value>", "Add linked test entry (CSV/markdown pairs or - for stdin)", collect).option("--add-json <value>", "Add linked test entry from JSON object/array (or - for stdin)", collect).option("--remove <value>", "Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)", collect).option("--list", "List linked tests without mutating").option("--run", "Run linked test commands").option("--match <value>", "Run only linked tests whose command/path contains this substring").option("--only-index <n>", "Run only the 1-based linked-test index from --list order").option("--only-last", "Run only the most recently added linked test").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage tests linked to an item and optionally run them.").action(runTestCommandAction);
433
+ program.command("test-all").description("Run linked tests across matching items.").option("--status <value>", "Filter items by status before running tests").option("--limit <n>", "Limit matching items before running linked tests").option("--offset <n>", "Skip matching items before running linked tests").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").action(runTestAllAction);
434
+ program.command("test-runs-worker", { hidden: true }).argument("<runId>", "Background run id").description("Internal background worker command.").action(async (runId, _options, command) => {
402
435
  const globalOptions = getGlobalOptions(command);
403
- const startedAt = Date.now();
404
- const force = Boolean(options.force);
405
- const mutationOptions = {
406
- author: typeof options.author === "string" ? options.author : void 0,
407
- message: typeof options.message === "string" ? options.message : void 0
408
- };
409
- const [{ runClose }, { runRelease }] = await Promise.all([
410
- import("./close-E6ZZGCJY.js"),
411
- import("./claim-T3GCKV7C.js")
412
- ]);
413
- const closeResult = await runClose(id, reason, {
414
- ...mutationOptions,
415
- validateClose: typeof options.validateClose === "string" ? options.validateClose : void 0,
416
- force
417
- }, globalOptions);
418
- await invalidateSearchCachesForMutation(globalOptions, closeResult);
419
- const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
420
- await invalidateSearchCachesForMutation(globalOptions, releaseResult);
421
- printResult({ id, action: "close_task", close: closeResult, release: releaseResult }, globalOptions);
422
- if (globalOptions.profile) {
423
- printError(`profile:command=close-task took_ms=${Date.now() - startedAt}`);
424
- }
436
+ const { runTestRunsWorker } = await import("./test-runs-QIR5MJPL.js");
437
+ await runTestRunsWorker(runId, globalOptions);
425
438
  });
439
+ program.command("telemetry").argument("[namespaceOrSubcommand]", "Telemetry subcommand: status, flush, stats, clear (default: status)").argument("[subcommand]", "Compatibility alias target for local-analytics: status, flush, stats, clear").option("--limit <n>", "Maximum command groups returned by telemetry stats").description("Inspect and manage local telemetry queue/runtime state.").action(runTelemetryAction);
440
+ program.command("stats").description("Show project tracker statistics.").option("--storage", "Include aggregate history-stream storage metrics (total streams/lines/bytes, largest + deepest streams, oldest/newest entries)").option("--metadata-coverage", "Include metadata coverage % (acceptance_criteria, estimated_minutes, resolution, tags, parent) overall and by type").option("--by-assignee", "Include a lifecycle-bucketed item breakdown grouped by assignee").option("--by-tag", "Include a lifecycle-bucketed item breakdown grouped by tag").option("--by-priority", "Include a lifecycle-bucketed item breakdown grouped by priority").option("--tag-prefix <value>", "With --by-tag: only count tags starting with this prefix (e.g. domain:)").option("--field-utilization", "Report content-field utilization rates (notes/learnings/files/docs/tests/comments/deps/body) for governance audits").action(runStatsAction);
441
+ program.command("health").description("Show project tracker health checks.").option("--strict-directories", "Treat optional item-type directories as required failures").option("--check-only", "Run read-only health diagnostics without refreshing vectors").option("--check-telemetry", "Probe telemetry endpoint health and include network diagnostics").option("--no-refresh", "Disable automatic vector refresh attempts during health checks").option("--refresh-vectors", "Explicitly enable vector refresh attempts during health checks").option("--verbose-stale-items", "Include full stale vectorization ID lists in health output").option("--brief", "Emit compact health details for low-token agent checks").option("--summary", "Emit one-line-style health status with check names and warning count").option("--skip-vectors", "Skip vectorization check for a faster run").option("--skip-integrity", "Skip item/history file integrity check for a faster run").option("--skip-drift", "Skip history drift hash check for a faster run").option("--full", "Run all checks including slow integrity, drift, and vectorization checks").option("--strict-exit", "Return non-zero exit when health is not ok (advisory telemetry warnings are excluded; see warnings[])").option("--fail-on-warn", "Alias for --strict-exit").action(runHealthAction);
442
+ program.command("validate").description("Run standalone metadata, resolution, lifecycle, files, linked-command reference, and history drift validation checks.").option("--check-metadata", "Run metadata completeness checks").option("--metadata-profile <value>", "Select metadata validation profile for --check-metadata (core|strict|custom)").option("--check-resolution", "Run closed-item resolution metadata checks").option("--check-lifecycle", "Run active-item lifecycle governance drift checks").option("--check-stale-blockers", "Include stale blocker-pattern diagnostics in lifecycle checks").option("--dependency-cycle-severity <value>", "Set dependency-cycle warning policy for lifecycle checks (off|warn|error)").option("--parent-cycle-severity <value>", "Set parent-hierarchy cycle warning policy for lifecycle checks (off|warn|error)").option("--check-files", "Run linked-file and orphaned-file checks").option("--check-command-references", "Run linked-command PM-ID reference checks").option("--scan-mode <value>", "Select file candidate scan mode for --check-files (default|tracked-all|tracked-all-strict)").option("--include-pm-internals", "Include PM storage internals in tracked-all candidate scans").option("--verbose-file-lists", "Include full file-path lists for validate --check-files details").option("--verbose-diagnostics", "Include full validate diagnostic ID lists instead of compact summaries").option("--all-affected-ids", "Emit complete missing_* affected-ID lists with no truncation (implied by --json)").option("--strict-exit", "Return non-zero exit when validation warnings are present").option("--fail-on-warn", "Alias for --strict-exit").option("--fix-hints", "Add a machine-executable fix_hints[] of pm commands to each failing check's details").option("--auto-fix", "Apply the safe, deterministic subset of fix-hint remediations (field backfills) automatically").option("--dry-run", "Preview planned --auto-fix/--prune-missing fixes without applying them").option("--fix-scope <scope>", "Grant --auto-fix scopes (metadata, resolution, lifecycle; comma-separated or repeatable). Default: metadata, resolution; lifecycle must be named explicitly", collect).option("--prune-missing", "Remove stale linked-file/doc LINKS whose paths classified as deleted (never touches real files)").option("--check-history-drift", "Run item/history hash drift checks").action(runValidateAction);
443
+ program.command("gc").option("--dry-run", "Preview cleanup targets without deleting files; without this flag, pm gc deletes matched artifacts").option("--scope <value>", "Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime, locks, checkpoints", collect).description("Delete optional cache artifacts by default (including expired lock debris) and show a summary.").action(runGcAction);
444
+ program.command("contracts").description("Show machine-readable command and schema contracts for agents.").option("--action <value>", "Filter tool schema branches to a specific action").option("--command <value>", "Scope contracts output to one CLI command (narrow-by-default)").option("--schema-only", "Return schema-focused output only").option("--flags-only", "Return command flag contracts only").option("--availability-only", "Return action availability surface only").option("--runtime-only", "Include only actions invocable in the current runtime").option("--active-only", "Alias for --runtime-only").option("--full", "Include full schema and command-flag surfaces (large; default brief output omits heavy sections for unfiltered queries)").action(runContractsAction);
445
+ program.command("claim").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force claim override").option("--if-available", "Skip silently when the item is already claimed by another author (returns skipped=true)").description("Claim an item for active work.").action(runClaimAction);
446
+ program.command("release").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--allow-audit-release", "Allow non-owner release handoffs without requiring --force").option("--force", "Force release override").description("Release an item's active claim.").action(runReleaseAction);
447
+ program.command("start-task").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership or terminal override when required").description("Lifecycle alias: claim an item and move it to in_progress.").action(runStartTaskAction);
448
+ program.command("pause-task").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override when required").description("Lifecycle alias: move an item to open and release its claim.").action(runPauseTaskAction);
449
+ program.command("close-task").argument("<id>", "Item id").argument("[reason]", "Close reason text").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--validate-close <value>", "Close-time validation mode: off|warn|strict").option("--force", "Force ownership or terminal override when required").description("Lifecycle alias: close an item and release assignment metadata.").action(runCloseTaskAction);
426
450
  registerSchedulingShortcutCommands(program);
427
451
  }
428
452
  function optionalString(value) {
@@ -448,7 +472,7 @@ function registerSchedulingShortcutCommands(program) {
448
472
  program.command(name).argument("<title>", "Item title").option("--start <when>", "Start time (ISO, 'now', or relative like +1h/+2d); defaults to now").option("--duration <span>", "Duration from start (relative like 1h/2d); defaults to 1h when --end is omitted").option("--end <when>", "End time (ISO or relative); overrides --duration").option("--location <value>", "Location").option("--timezone <value>", "IANA timezone (for example America/New_York)").option("--all-day", "Mark as an all-day event").option("--parent <id>", "Parent item id").option("--allow-missing-parent", "Permit a parent id that does not exist yet").option("--tags <list>", "Comma-separated tags").option("--priority <value>", "Priority").option("--body <text>", "Body/markdown content").option("--description <text>", "Short description").option("--author <value>", "Mutation author").option("--message <value>", "History message").description(describe).action(async (title, options, command) => {
449
473
  const globalOptions = getGlobalOptions(command);
450
474
  const startedAt = Date.now();
451
- const { runMeet, runEvent } = await import("./scheduling-shortcuts-UTOYKLXQ.js");
475
+ const { runMeet, runEvent } = await import("./scheduling-shortcuts-TSBK4AY5.js");
452
476
  const run = name === "meet" ? runMeet : runEvent;
453
477
  const result = await run(title, {
454
478
  ...buildShortcutCommonOptions(options),
@@ -469,7 +493,7 @@ function registerSchedulingShortcutCommands(program) {
469
493
  program.command("remind").argument("<title>", "Item title").option("--at <when>", "Reminder time (ISO, 'now', or relative like +2d); defaults to +1d").option("--text <value>", "Reminder text; defaults to the title").option("--parent <id>", "Parent item id").option("--allow-missing-parent", "Permit a parent id that does not exist yet").option("--tags <list>", "Comma-separated tags").option("--priority <value>", "Priority").option("--body <text>", "Body/markdown content").option("--description <text>", "Short description").option("--author <value>", "Mutation author").option("--message <value>", "History message").description("Shortcut: create a Reminder from a single point in time.").action(async (title, options, command) => {
470
494
  const globalOptions = getGlobalOptions(command);
471
495
  const startedAt = Date.now();
472
- const { runRemind } = await import("./scheduling-shortcuts-UTOYKLXQ.js");
496
+ const { runRemind } = await import("./scheduling-shortcuts-TSBK4AY5.js");
473
497
  const result = await runRemind(title, {
474
498
  ...buildShortcutCommonOptions(options),
475
499
  at: optionalString(options.at),
@@ -486,4 +510,4 @@ export {
486
510
  registerOperationCommands,
487
511
  resolveStartTaskInProgressStatus
488
512
  };
489
- //# sourceMappingURL=register-operations-HZ6XERQG.js.map
513
+ //# sourceMappingURL=register-operations-IADFVH53.js.map