@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
@@ -4,7 +4,7 @@
4
4
  * Provides CLI runtime support for Register List Query.
5
5
  */
6
6
 
7
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fa7ca75b-e41a-54de-9843-6e47079e9685")}catch(e){}}();
7
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4d49be94-9af3-531a-a94b-1eb4112dbdbd")}catch(e){}}();
8
8
  import { Option } from "commander";
9
9
  import { EXIT_CODE } from "../core/shared/constants.js";
10
10
  import { PmCliError } from "../core/shared/errors.js";
@@ -56,172 +56,305 @@ function resolveReadCommandOutputFormat(commandLabel, rawFormat, globalOptions)
56
56
  json: normalized === "json",
57
57
  };
58
58
  }
59
- /**
60
- * Implements register list query commands for the public runtime surface of this module.
61
- */
62
- export function registerListQueryCommands(program, options) {
63
- const commandFilter = options?.commandFilter;
64
- const shouldRegister = (commandName) => shouldRegisterListQueryCommand(commandName, commandFilter);
65
- // Register a flag and hide it from --help text while keeping it functional as
66
- // a parse-time alias. Used for pure snake_case underscore-duplicate aliases
67
- // (e.g. --assignee_filter for --assignee-filter) so they no longer bloat
68
- // --help output. The option still appears in command.options, so JSON help
69
- // and completion are unchanged.
70
- function addHiddenOption(command, flags, description) {
71
- command.addOption(new Option(flags, description).hideHelp());
72
- }
73
- // Register the content-field presence/absence filters (GH-242) and the
74
- // governance-missing filters (GH-236) on a list-family or search command.
75
- // Presence flags are plain booleans; absence flags use commander negation
76
- // (`--no-notes` stores notes=false) except `--empty-body` which is its own
77
- // dest so it composes with a future `--has-body`. linked_command tracks
78
- // whether a linked test carries a runnable command.
79
- function registerContentAndGovernanceFilters(command) {
80
- command
81
- .option("--has-notes", "Show only items that have notes")
82
- .option("--has-learnings", "Show only items that have learnings")
83
- .option("--has-files", "Show only items that have linked files")
84
- .option("--has-docs", "Show only items that have linked docs")
85
- .option("--has-tests", "Show only items that have linked tests")
86
- .option("--has-comments", "Show only items that have comments")
87
- .option("--has-deps", "Show only items that have dependencies")
88
- .option("--has-body", "Show only items that have a non-empty body")
89
- .option("--has-linked-command", "Show only items whose linked tests carry a runnable command")
90
- .option("--no-notes", "Show only items that have no notes")
91
- .option("--no-learnings", "Show only items that have no learnings")
92
- .option("--no-files", "Show only items that have no linked files")
93
- .option("--no-docs", "Show only items that have no linked docs")
94
- .option("--no-tests", "Show only items that have no linked tests")
95
- .option("--no-comments", "Show only items that have no comments")
96
- .option("--no-deps", "Show only items that have no dependencies")
97
- .option("--empty-body", "Show only items with an empty body")
98
- .option("--no-linked-command", "Show only items whose linked tests carry no runnable command")
99
- .option("--filter-reviewer-missing", "Show only items missing reviewer")
100
- .option("--filter-risk-missing", "Show only items missing risk")
101
- .option("--filter-confidence-missing", "Show only items missing confidence")
102
- .option("--filter-sprint-missing", "Show only items missing sprint")
103
- .option("--filter-release-missing", "Show only items missing release");
104
- }
105
- function registerListCommand(name, description, status, excludeTerminal, allowStatusFilter, defaultBrief) {
106
- const command = program.command(name).description(description);
107
- if (allowStatusFilter) {
108
- command.option("--status <value>", "Filter by status (use all for no status restriction)");
59
+ function applyDefaultBriefListMode(listOptions, defaultBrief) {
60
+ if (defaultBrief === true &&
61
+ listOptions.includeBody !== true &&
62
+ listOptions.compact !== true &&
63
+ listOptions.brief !== true &&
64
+ listOptions.full !== true &&
65
+ listOptions.fields === undefined) {
66
+ listOptions.brief = true;
67
+ }
68
+ }
69
+ function addHiddenOption(command, flags, description) {
70
+ command.addOption(new Option(flags, description).hideHelp());
71
+ }
72
+ function registerContentAndGovernanceFilters(command) {
73
+ command
74
+ .option("--has-notes", "Show only items that have notes")
75
+ .option("--has-learnings", "Show only items that have learnings")
76
+ .option("--has-files", "Show only items that have linked files")
77
+ .option("--has-docs", "Show only items that have linked docs")
78
+ .option("--has-tests", "Show only items that have linked tests")
79
+ .option("--has-comments", "Show only items that have comments")
80
+ .option("--has-deps", "Show only items that have dependencies")
81
+ .option("--has-body", "Show only items that have a non-empty body")
82
+ .option("--has-linked-command", "Show only items whose linked tests carry a runnable command")
83
+ .option("--no-notes", "Show only items that have no notes")
84
+ .option("--no-learnings", "Show only items that have no learnings")
85
+ .option("--no-files", "Show only items that have no linked files")
86
+ .option("--no-docs", "Show only items that have no linked docs")
87
+ .option("--no-tests", "Show only items that have no linked tests")
88
+ .option("--no-comments", "Show only items that have no comments")
89
+ .option("--no-deps", "Show only items that have no dependencies")
90
+ .option("--empty-body", "Show only items with an empty body")
91
+ .option("--no-linked-command", "Show only items whose linked tests carry no runnable command")
92
+ .option("--filter-reviewer-missing", "Show only items missing reviewer")
93
+ .option("--filter-risk-missing", "Show only items missing risk")
94
+ .option("--filter-confidence-missing", "Show only items missing confidence")
95
+ .option("--filter-sprint-missing", "Show only items missing sprint")
96
+ .option("--filter-release-missing", "Show only items missing release");
97
+ }
98
+ async function runRegisteredListCommand(params) {
99
+ const globalOptions = getGlobalOptions(params.actionCommand);
100
+ const startedAt = Date.now();
101
+ const listOptions = normalizeListOptions(params.options);
102
+ applyDefaultBriefListMode(listOptions, params.defaultBrief);
103
+ if (params.excludeTerminal)
104
+ listOptions.excludeTerminal = true;
105
+ const { runList } = await import("./commands/list.js");
106
+ const result = await runList(params.status, listOptions, globalOptions);
107
+ const streamMode = params.options.stream === true;
108
+ const listFormat = parseListFormat(params.options.format);
109
+ const tabular = listFormat === "csv" || listFormat === "table";
110
+ const effectiveGlobal = listFormat === "json" || listFormat === "toon"
111
+ ? resolveReadCommandOutputFormat("List", params.options.format, globalOptions)
112
+ : globalOptions;
113
+ if (streamMode && !effectiveGlobal.json) {
114
+ throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
115
+ }
116
+ if (tabular && streamMode) {
117
+ throw new PmCliError("--format csv|table cannot be combined with --stream (line-delimited JSON).", EXIT_CODE.USAGE);
118
+ }
119
+ if (tabular) {
120
+ const rows = result.items;
121
+ const rendered = listFormat === "csv" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);
122
+ if (!effectiveGlobal.quiet && rendered.length > 0) {
123
+ writeStdout(`${rendered}\n`);
109
124
  }
110
- command
111
- .option("--type <value>", "Filter by item type")
112
- .option("--tag <value>", "Filter by tag")
113
- .option("--priority <value>", "Filter by priority")
114
- .option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)")
115
- .option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)")
116
- .option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past). "Changed since my last window" → --updated-after <ISO>')
117
- .option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)")
118
- .option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)")
119
- .option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)")
120
- .option("--ids <value>", "Filter by explicit item IDs (comma-separated or repeatable)")
121
- .option("--assignee <value>", "Filter by assignee")
122
- .option("--assignee-filter <value>", "Filter assignee presence: assigned|unassigned")
123
- .option("--parent <value>", "Filter by parent item ID")
124
- .option("--sprint <value>", "Filter by sprint")
125
- .option("--release <value>", "Filter by release")
126
- .option("--filter-ac-missing", "Show only items missing acceptance_criteria")
127
- .option("--filter-estimates-missing", "Show only items missing estimated_minutes")
128
- .option("--filter-resolution-missing", "Show only terminal items missing resolution")
129
- .option("--filter-metadata-missing", "Show only items missing any tracked metadata (AC, estimate, or resolution)")
130
- .option("--limit <n>", "Limit returned item count")
131
- .option("--offset <n>", "Skip the first n matching rows before limit is applied")
132
- .option("--no-truncate", "Return every matched row, overriding any --limit (alias: --all)")
133
- .option("--include-body", "Include item body in each returned list row")
134
- .option("--compact", "Render compact list projection fields (mutually exclusive with --brief/--full/--fields)")
135
- .option("--brief", "Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)")
136
- .option("--full", "Render full list projection fields (mutually exclusive with --compact/--brief/--fields)")
137
- .option("--fields <value>", "Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)")
138
- .option("--sort <value>", "Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)")
139
- .option("--order <value>", "Sort order: asc|desc (requires --sort)")
140
- .option("--tree", "Render rows in parent/child tree order")
141
- .option("--tree-depth <n>", "Maximum recursion depth with --tree (0 keeps root rows only)")
142
- .option("--format <value>", "Output render mode: csv|table (human export) or json|toon (machine output override)")
143
- .option("--stream", "Emit line-delimited JSON rows (requires --json)");
144
- registerContentAndGovernanceFilters(command);
145
- command
146
- .action(async (options, actionCommand) => {
147
- const globalOptions = getGlobalOptions(actionCommand);
148
- const startedAt = Date.now();
149
- const listOptions = normalizeListOptions(options);
150
- if (defaultBrief === true &&
151
- listOptions.includeBody !== true &&
152
- listOptions.compact !== true &&
153
- listOptions.brief !== true &&
154
- listOptions.full !== true &&
155
- listOptions.fields === undefined) {
156
- listOptions.brief = true;
157
- }
158
- if (excludeTerminal)
159
- listOptions.excludeTerminal = true;
160
- const { runList } = await import("./commands/list.js");
161
- const result = await runList(status, listOptions, globalOptions);
162
- const streamMode = options.stream === true;
163
- const listFormat = parseListFormat(options.format);
164
- const tabular = listFormat === "csv" || listFormat === "table";
165
- // json|toon reuse the shared read-command override (honours the
166
- // --json + --format toon conflict); csv|table are human render modes.
167
- const effectiveGlobal = listFormat === "json" || listFormat === "toon"
168
- ? resolveReadCommandOutputFormat("List", options.format, globalOptions)
169
- : globalOptions;
170
- if (streamMode && !effectiveGlobal.json) {
171
- throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
172
- }
173
- if (tabular && streamMode) {
174
- throw new PmCliError("--format csv|table cannot be combined with --stream (line-delimited JSON).", EXIT_CODE.USAGE);
175
- }
176
- if (tabular) {
177
- const rows = result.items;
178
- const rendered = listFormat === "csv" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);
179
- if (!effectiveGlobal.quiet && rendered.length > 0) {
180
- writeStdout(`${rendered}\n`);
181
- }
182
- }
183
- else if (streamMode) {
184
- printListJsonStream(name, result, effectiveGlobal);
185
- }
186
- else {
187
- printResult(result, effectiveGlobal);
188
- }
189
- if (globalOptions.profile) {
190
- printError(`profile:command=${name} took_ms=${Date.now() - startedAt}`);
191
- }
125
+ }
126
+ else if (streamMode) {
127
+ printListJsonStream(params.name, result, effectiveGlobal);
128
+ }
129
+ else {
130
+ printResult(result, effectiveGlobal);
131
+ }
132
+ if (globalOptions.profile) {
133
+ printError(`profile:command=${params.name} took_ms=${Date.now() - startedAt}`);
134
+ }
135
+ }
136
+ function registerListCommand(program, descriptor) {
137
+ const { name, description, status, excludeTerminal, allowStatusFilter, defaultBrief } = descriptor;
138
+ const command = program.command(name).description(description);
139
+ if (allowStatusFilter) {
140
+ command.option("--status <value>", "Filter by status (use all for no status restriction)");
141
+ }
142
+ command
143
+ .option("--type <value>", "Filter by item type")
144
+ .option("--tag <value>", "Filter by tag")
145
+ .option("--priority <value>", "Filter by priority")
146
+ .option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)")
147
+ .option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)")
148
+ .option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past). "Changed since my last window" → --updated-after <ISO>')
149
+ .option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)")
150
+ .option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)")
151
+ .option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)")
152
+ .option("--ids <value>", "Filter by explicit item IDs (comma-separated or repeatable)")
153
+ .option("--assignee <value>", "Filter by assignee")
154
+ .option("--assignee-filter <value>", "Filter assignee presence: assigned|unassigned")
155
+ .option("--parent <value>", "Filter by parent item ID")
156
+ .option("--sprint <value>", "Filter by sprint")
157
+ .option("--release <value>", "Filter by release")
158
+ .option("--filter-ac-missing", "Show only items missing acceptance_criteria")
159
+ .option("--filter-estimates-missing", "Show only items missing estimated_minutes")
160
+ .option("--filter-resolution-missing", "Show only terminal items missing resolution")
161
+ .option("--filter-metadata-missing", "Show only items missing any tracked metadata (AC, estimate, or resolution)")
162
+ .option("--limit <n>", "Limit returned item count")
163
+ .option("--offset <n>", "Skip the first n matching rows before limit is applied")
164
+ .option("--no-truncate", "Return every matched row, overriding any --limit (alias: --all)")
165
+ .option("--include-body", "Include item body in each returned list row")
166
+ .option("--compact", "Render compact list projection fields (mutually exclusive with --brief/--full/--fields)")
167
+ .option("--brief", "Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)")
168
+ .option("--full", "Render full list projection fields (mutually exclusive with --compact/--brief/--fields)")
169
+ .option("--fields <value>", "Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)")
170
+ .option("--sort <value>", "Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)")
171
+ .option("--order <value>", "Sort order: asc|desc (requires --sort)")
172
+ .option("--tree", "Render rows in parent/child tree order")
173
+ .option("--tree-depth <n>", "Maximum recursion depth with --tree (0 keeps root rows only)")
174
+ .option("--format <value>", "Output render mode: csv|table (human export) or json|toon (machine output override)")
175
+ .option("--stream", "Emit line-delimited JSON rows (requires --json)");
176
+ registerContentAndGovernanceFilters(command);
177
+ command.action(async (options, actionCommand) => {
178
+ await runRegisteredListCommand({ name, status, excludeTerminal, defaultBrief, options, actionCommand });
179
+ });
180
+ // Positive alias for --no-truncate (Commander stores the negation as truncate=false).
181
+ addHiddenOption(command, "--all", "Alias for --no-truncate");
182
+ // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).
183
+ addHiddenOption(command, "--tags <value>", "Alias for --tag");
184
+ addHiddenOption(command, "--assignee_filter <value>", "Alias for --assignee-filter");
185
+ addHiddenOption(command, "--tree_depth <n>", "Alias for --tree-depth");
186
+ // Singular alias so `--filter-estimate-missing` works (matches update-many spelling).
187
+ addHiddenOption(command, "--filter-estimate-missing", "Alias for --filter-estimates-missing");
188
+ }
189
+ async function runAggregateAction(options, command) {
190
+ const globalOptions = getGlobalOptions(command);
191
+ const startedAt = Date.now();
192
+ const { runAggregate } = await import("./commands/aggregate.js");
193
+ const result = await runAggregate(normalizeAggregateOptions(options), globalOptions);
194
+ printResult(result, globalOptions);
195
+ if (globalOptions.profile) {
196
+ printError(`profile:command=aggregate took_ms=${Date.now() - startedAt}`);
197
+ }
198
+ }
199
+ async function runContextAction(options, actionCommand) {
200
+ const globalOptions = getGlobalOptions(actionCommand);
201
+ const startedAt = Date.now();
202
+ const normalized = normalizeContextOptions(options);
203
+ const commands = await import("./commands/context.js");
204
+ const result = await commands.runContext(normalized, globalOptions);
205
+ const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);
206
+ if (outputFormat === "markdown") {
207
+ if (!globalOptions.quiet) {
208
+ writeStdout(`${commands.renderContextMarkdown(result)}\n`);
209
+ }
210
+ }
211
+ else {
212
+ printResult(result, {
213
+ ...globalOptions,
214
+ json: outputFormat === "json",
192
215
  });
193
- // Positive alias for --no-truncate (Commander stores the negation as truncate=false).
194
- addHiddenOption(command, "--all", "Alias for --no-truncate");
195
- // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).
196
- addHiddenOption(command, "--tags <value>", "Alias for --tag");
197
- addHiddenOption(command, "--assignee_filter <value>", "Alias for --assignee-filter");
198
- addHiddenOption(command, "--tree_depth <n>", "Alias for --tree-depth");
199
- // Singular alias so `--filter-estimate-missing` works (matches update-many spelling).
200
- addHiddenOption(command, "--filter-estimate-missing", "Alias for --filter-estimates-missing");
201
216
  }
202
- if (shouldRegister("list")) {
203
- registerListCommand("list", "List active items with optional filters.", undefined, true, true, true);
217
+ if (globalOptions.profile) {
218
+ printError(`profile:command=context took_ms=${Date.now() - startedAt}`);
219
+ }
220
+ }
221
+ async function runNextAction(options, actionCommand) {
222
+ const globalOptions = getGlobalOptions(actionCommand);
223
+ const startedAt = Date.now();
224
+ const commands = await import("./commands/next.js");
225
+ const nextOptions = normalizeNextOptions(options);
226
+ const result = await commands.runNext(nextOptions, globalOptions);
227
+ const outputFormat = commands.resolveNextOutputFormat(nextOptions, globalOptions);
228
+ if (outputFormat === "markdown") {
229
+ if (!globalOptions.quiet) {
230
+ writeStdout(`${commands.renderNextMarkdown(result)}\n`);
231
+ }
232
+ }
233
+ else {
234
+ printResult(result, { ...globalOptions, json: outputFormat === "json" });
235
+ }
236
+ if (globalOptions.profile) {
237
+ printError(`profile:command=next took_ms=${Date.now() - startedAt}`);
238
+ }
239
+ }
240
+ async function runSearchAction(keywords, options, command) {
241
+ const globalOptions = getGlobalOptions(command);
242
+ const startedAt = Date.now();
243
+ const { runSearch } = await import("./commands/search.js");
244
+ const searchOptions = normalizeSearchOptions(options);
245
+ const result = await runSearch(normalizeSearchKeywordsInput(keywords), {
246
+ ...searchOptions,
247
+ mode: typeof searchOptions.mode === "string" && searchOptions.mode.trim().length > 0
248
+ ? searchOptions.mode
249
+ : "keyword",
250
+ }, globalOptions);
251
+ printResult(result, resolveReadCommandOutputFormat("Search", options.format, globalOptions));
252
+ if (globalOptions.profile) {
253
+ printError(`profile:command=search took_ms=${Date.now() - startedAt}`);
254
+ }
255
+ }
256
+ async function runEvalAction(options, command) {
257
+ const globalOptions = getGlobalOptions(command);
258
+ const startedAt = Date.now();
259
+ const { runEval } = await import("./commands/eval.js");
260
+ const result = await runEval({
261
+ mode: typeof options.mode === "string" ? options.mode : undefined,
262
+ k: typeof options.k === "string" ? options.k : undefined,
263
+ failUnder: typeof options.failUnder === "string" ? options.failUnder : undefined,
264
+ queries: typeof options.queries === "string" ? options.queries : undefined,
265
+ format: typeof options.format === "string" ? options.format : undefined,
266
+ }, globalOptions);
267
+ printResult(result, resolveReadCommandOutputFormat("Eval", options.format, globalOptions));
268
+ if (globalOptions.profile) {
269
+ printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);
270
+ }
271
+ if (!result.passed) {
272
+ throw new PmCliError(`Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`, EXIT_CODE.GENERIC_FAILURE);
273
+ }
274
+ }
275
+ async function runGetAction(id, options, command) {
276
+ const globalOptions = getGlobalOptions(command);
277
+ const startedAt = Date.now();
278
+ const { runGet } = await import("./commands/get.js");
279
+ const result = await runGet(id, globalOptions, {
280
+ depth: typeof options.depth === "string" ? options.depth : undefined,
281
+ fields: typeof options.fields === "string" ? options.fields : undefined,
282
+ full: Boolean(options.full),
283
+ tree: options.tree === true,
284
+ treeDepth: typeof options.treeDepth === "string"
285
+ ? options.treeDepth
286
+ : typeof options.tree_depth === "string"
287
+ ? options.tree_depth
288
+ : undefined,
289
+ });
290
+ printResult(result, resolveReadCommandOutputFormat("Get", options.format, globalOptions));
291
+ if (globalOptions.profile) {
292
+ printError(`profile:command=get took_ms=${Date.now() - startedAt}`);
293
+ }
294
+ }
295
+ async function runHistoryAction(id, options, command) {
296
+ const globalOptions = getGlobalOptions(command);
297
+ const startedAt = Date.now();
298
+ if (options.compact === true && options.full === true) {
299
+ throw new PmCliError("History projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
204
300
  }
205
- if (shouldRegister("list-all")) {
206
- registerListCommand("list-all", "List all items with optional filters.", undefined, false, true);
301
+ const field = typeof options.field === "string" ? options.field : undefined;
302
+ const { runHistory } = await import("./commands/history.js");
303
+ const result = await runHistory(id, {
304
+ limit: typeof options.limit === "string" ? options.limit : undefined,
305
+ compact: options.full === true ? false : true,
306
+ diff: Boolean(options.diff) || field !== undefined,
307
+ field,
308
+ verify: Boolean(options.verify),
309
+ }, globalOptions);
310
+ printResult(result, resolveReadCommandOutputFormat("History", options.format, globalOptions));
311
+ if (globalOptions.profile) {
312
+ printError(`profile:command=history took_ms=${Date.now() - startedAt}`);
207
313
  }
208
- if (shouldRegister("list-draft")) {
209
- registerListCommand("list-draft", "List draft items with optional filters.", "draft");
314
+ }
315
+ async function runActivityAction(options, command) {
316
+ const globalOptions = getGlobalOptions(command);
317
+ const startedAt = Date.now();
318
+ if (options.compact === true && options.full === true) {
319
+ throw new PmCliError("Activity projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
210
320
  }
211
- if (shouldRegister("list-open")) {
212
- registerListCommand("list-open", "List open items with optional filters.", "open", false, false, true);
321
+ const normalized = normalizeActivityOptions(options);
322
+ const { runActivity } = await import("./commands/activity.js");
323
+ const result = await runActivity(normalized, globalOptions);
324
+ const streamMode = resolveActivityStreamMode(options.stream);
325
+ if (streamMode && !globalOptions.json) {
326
+ throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
213
327
  }
214
- if (shouldRegister("list-in-progress")) {
215
- registerListCommand("list-in-progress", "List in-progress items with optional filters.", "in_progress", false, false, true);
328
+ if (streamMode) {
329
+ printActivityJsonStream(result, normalized, globalOptions);
216
330
  }
217
- if (shouldRegister("list-blocked")) {
218
- registerListCommand("list-blocked", "List blocked items with optional filters.", "blocked", false, false, true);
331
+ else {
332
+ printResult(result, globalOptions);
219
333
  }
220
- if (shouldRegister("list-closed")) {
221
- registerListCommand("list-closed", "List closed items with optional filters.", "closed");
334
+ if (globalOptions.profile) {
335
+ printError(`profile:command=activity took_ms=${Date.now() - startedAt}`);
222
336
  }
223
- if (shouldRegister("list-canceled")) {
224
- registerListCommand("list-canceled", "List canceled items with optional filters.", "canceled");
337
+ }
338
+ /**
339
+ * Implements register list query commands for the public runtime surface of this module.
340
+ */
341
+ export function registerListQueryCommands(program, options) {
342
+ const commandFilter = options?.commandFilter;
343
+ const shouldRegister = (commandName) => shouldRegisterListQueryCommand(commandName, commandFilter);
344
+ const listCommandDescriptors = [
345
+ { name: "list", description: "List active items with optional filters.", excludeTerminal: true, allowStatusFilter: true, defaultBrief: true },
346
+ { name: "list-all", description: "List all items with optional filters.", excludeTerminal: false, allowStatusFilter: true },
347
+ { name: "list-draft", description: "List draft items with optional filters.", status: "draft" },
348
+ { name: "list-open", description: "List open items with optional filters.", status: "open", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
349
+ { name: "list-in-progress", description: "List in-progress items with optional filters.", status: "in_progress", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
350
+ { name: "list-blocked", description: "List blocked items with optional filters.", status: "blocked", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
351
+ { name: "list-closed", description: "List closed items with optional filters.", status: "closed" },
352
+ { name: "list-canceled", description: "List canceled items with optional filters.", status: "canceled" },
353
+ ];
354
+ for (const descriptor of listCommandDescriptors) {
355
+ if (shouldRegister(descriptor.name)) {
356
+ registerListCommand(program, descriptor);
357
+ }
225
358
  }
226
359
  if (shouldRegister("aggregate")) {
227
360
  const aggregateCommand = program
@@ -247,17 +380,7 @@ export function registerListQueryCommands(program, options) {
247
380
  // Hidden pure snake_case underscore-duplicate aliases (kept parse-functional).
248
381
  addHiddenOption(aggregateCommand, "--include_unparented", "Alias for --include-unparented");
249
382
  addHiddenOption(aggregateCommand, "--assignee_filter <value>", "Alias for --assignee-filter");
250
- aggregateCommand
251
- .action(async (options, command) => {
252
- const globalOptions = getGlobalOptions(command);
253
- const startedAt = Date.now();
254
- const { runAggregate } = await import("./commands/aggregate.js");
255
- const result = await runAggregate(normalizeAggregateOptions(options), globalOptions);
256
- printResult(result, globalOptions);
257
- if (globalOptions.profile) {
258
- printError(`profile:command=aggregate took_ms=${Date.now() - startedAt}`);
259
- }
260
- });
383
+ aggregateCommand.action(runAggregateAction);
261
384
  }
262
385
  if (shouldRegister("context")) {
263
386
  const contextCommand = program
@@ -285,29 +408,7 @@ export function registerListQueryCommands(program, options) {
285
408
  .option("--stale-threshold <value>", "Staleness cutoff in days (e.g. 7 or 7d; default: settings or 7)");
286
409
  // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).
287
410
  addHiddenOption(contextCommand, "--assignee_filter <value>", "Alias for --assignee-filter");
288
- contextCommand
289
- .action(async (options, actionCommand) => {
290
- const globalOptions = getGlobalOptions(actionCommand);
291
- const startedAt = Date.now();
292
- const normalized = normalizeContextOptions(options);
293
- const commands = await import("./commands/context.js");
294
- const result = await commands.runContext(normalized, globalOptions);
295
- const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);
296
- if (outputFormat === "markdown") {
297
- if (!globalOptions.quiet) {
298
- writeStdout(`${commands.renderContextMarkdown(result)}\n`);
299
- }
300
- }
301
- else {
302
- printResult(result, {
303
- ...globalOptions,
304
- json: outputFormat === "json",
305
- });
306
- }
307
- if (globalOptions.profile) {
308
- printError(`profile:command=context took_ms=${Date.now() - startedAt}`);
309
- }
310
- });
411
+ contextCommand.action(runContextAction);
311
412
  }
312
413
  if (shouldRegister("next")) {
313
414
  const nextCommand = program
@@ -328,25 +429,7 @@ export function registerListQueryCommands(program, options) {
328
429
  addHiddenOption(nextCommand, "--assignee_filter <value>", "Alias for --assignee-filter");
329
430
  addHiddenOption(nextCommand, "--blocked_limit <n>", "Alias for --blocked-limit");
330
431
  addHiddenOption(nextCommand, "--ready_only", "Alias for --ready-only");
331
- nextCommand.action(async (options, actionCommand) => {
332
- const globalOptions = getGlobalOptions(actionCommand);
333
- const startedAt = Date.now();
334
- const commands = await import("./commands/next.js");
335
- const nextOptions = normalizeNextOptions(options);
336
- const result = await commands.runNext(nextOptions, globalOptions);
337
- const outputFormat = commands.resolveNextOutputFormat(nextOptions, globalOptions);
338
- if (outputFormat === "markdown") {
339
- if (!globalOptions.quiet) {
340
- writeStdout(`${commands.renderNextMarkdown(result)}\n`);
341
- }
342
- }
343
- else {
344
- printResult(result, { ...globalOptions, json: outputFormat === "json" });
345
- }
346
- if (globalOptions.profile) {
347
- printError(`profile:command=next took_ms=${Date.now() - startedAt}`);
348
- }
349
- });
432
+ nextCommand.action(runNextAction);
350
433
  }
351
434
  if (shouldRegister("search")) {
352
435
  const searchCommand = program
@@ -385,23 +468,7 @@ export function registerListQueryCommands(program, options) {
385
468
  .option("--format <value>", "Search output format override: json|toon")
386
469
  .option("--limit <n>", "Limit returned item count");
387
470
  registerContentAndGovernanceFilters(searchCommand);
388
- searchCommand
389
- .action(async (keywords, options, command) => {
390
- const globalOptions = getGlobalOptions(command);
391
- const startedAt = Date.now();
392
- const { runSearch } = await import("./commands/search.js");
393
- const searchOptions = normalizeSearchOptions(options);
394
- const result = await runSearch(normalizeSearchKeywordsInput(keywords), {
395
- ...searchOptions,
396
- mode: typeof searchOptions.mode === "string" && searchOptions.mode.trim().length > 0
397
- ? searchOptions.mode
398
- : "keyword",
399
- }, globalOptions);
400
- printResult(result, resolveReadCommandOutputFormat("Search", options.format, globalOptions));
401
- if (globalOptions.profile) {
402
- printError(`profile:command=search took_ms=${Date.now() - startedAt}`);
403
- }
404
- });
471
+ searchCommand.action(runSearchAction);
405
472
  addHiddenOption(searchCommand, "--tags <value>", "Alias for --tag");
406
473
  }
407
474
  if (shouldRegister("eval")) {
@@ -414,25 +481,7 @@ export function registerListQueryCommands(program, options) {
414
481
  .option("--fail-under <value>", "Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate")
415
482
  .option("--queries <path>", "Path to the golden-query JSON file (default: <pmRoot>/search/eval-queries.json)")
416
483
  .option("--format <value>", "Eval output format override: json|toon")
417
- .action(async (options, command) => {
418
- const globalOptions = getGlobalOptions(command);
419
- const startedAt = Date.now();
420
- const { runEval } = await import("./commands/eval.js");
421
- const result = await runEval({
422
- mode: typeof options.mode === "string" ? options.mode : undefined,
423
- k: typeof options.k === "string" ? options.k : undefined,
424
- failUnder: typeof options.failUnder === "string" ? options.failUnder : undefined,
425
- queries: typeof options.queries === "string" ? options.queries : undefined,
426
- format: typeof options.format === "string" ? options.format : undefined,
427
- }, globalOptions);
428
- printResult(result, resolveReadCommandOutputFormat("Eval", options.format, globalOptions));
429
- if (globalOptions.profile) {
430
- printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);
431
- }
432
- if (!result.passed) {
433
- throw new PmCliError(`Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`, EXIT_CODE.GENERIC_FAILURE);
434
- }
435
- });
484
+ .action(runEvalAction);
436
485
  }
437
486
  if (shouldRegister("get")) {
438
487
  const getCommand = program
@@ -445,26 +494,7 @@ export function registerListQueryCommands(program, options) {
445
494
  .option("--tree-depth <n>", "Maximum subtree depth for --tree descendants")
446
495
  .option("--format <value>", "Get output format override: json|toon")
447
496
  .description("Show item details by ID.")
448
- .action(async (id, options, command) => {
449
- const globalOptions = getGlobalOptions(command);
450
- const startedAt = Date.now();
451
- const { runGet } = await import("./commands/get.js");
452
- const result = await runGet(id, globalOptions, {
453
- depth: typeof options.depth === "string" ? options.depth : undefined,
454
- fields: typeof options.fields === "string" ? options.fields : undefined,
455
- full: Boolean(options.full),
456
- tree: options.tree === true,
457
- treeDepth: typeof options.treeDepth === "string"
458
- ? options.treeDepth
459
- : typeof options.tree_depth === "string"
460
- ? options.tree_depth
461
- : undefined,
462
- });
463
- printResult(result, resolveReadCommandOutputFormat("Get", options.format, globalOptions));
464
- if (globalOptions.profile) {
465
- printError(`profile:command=get took_ms=${Date.now() - startedAt}`);
466
- }
467
- });
497
+ .action(runGetAction);
468
498
  addHiddenOption(getCommand, "--tree_depth <n>", "Alias for --tree-depth");
469
499
  }
470
500
  if (shouldRegister("history")) {
@@ -479,26 +509,7 @@ export function registerListQueryCommands(program, options) {
479
509
  .option("--verify", "Verify hash chain and replay integrity for the full history stream")
480
510
  .option("--format <value>", "History output format override: json|toon")
481
511
  .description("Show item history entries.")
482
- .action(async (id, options, command) => {
483
- const globalOptions = getGlobalOptions(command);
484
- const startedAt = Date.now();
485
- if (options.compact === true && options.full === true) {
486
- throw new PmCliError("History projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
487
- }
488
- const field = typeof options.field === "string" ? options.field : undefined;
489
- const { runHistory } = await import("./commands/history.js");
490
- const result = await runHistory(id, {
491
- limit: typeof options.limit === "string" ? options.limit : undefined,
492
- compact: options.full === true ? false : true,
493
- diff: Boolean(options.diff) || field !== undefined,
494
- field,
495
- verify: Boolean(options.verify),
496
- }, globalOptions);
497
- printResult(result, resolveReadCommandOutputFormat("History", options.format, globalOptions));
498
- if (globalOptions.profile) {
499
- printError(`profile:command=history took_ms=${Date.now() - startedAt}`);
500
- }
501
- });
512
+ .action(runHistoryAction);
502
513
  }
503
514
  if (shouldRegister("activity")) {
504
515
  program
@@ -513,29 +524,7 @@ export function registerListQueryCommands(program, options) {
513
524
  .option("--full", "Show full activity entries with JSON Patch payloads")
514
525
  .option("--stream [mode]", "Emit line-delimited JSON rows (requires --json). Optional mode: rows|ndjson|jsonl")
515
526
  .description("Show recent activity across items.")
516
- .action(async (options, command) => {
517
- const globalOptions = getGlobalOptions(command);
518
- const startedAt = Date.now();
519
- if (options.compact === true && options.full === true) {
520
- throw new PmCliError("Activity projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
521
- }
522
- const normalized = normalizeActivityOptions(options);
523
- const { runActivity } = await import("./commands/activity.js");
524
- const result = await runActivity(normalized, globalOptions);
525
- const streamMode = resolveActivityStreamMode(options.stream);
526
- if (streamMode && !globalOptions.json) {
527
- throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
528
- }
529
- if (streamMode) {
530
- printActivityJsonStream(result, normalized, globalOptions);
531
- }
532
- else {
533
- printResult(result, globalOptions);
534
- }
535
- if (globalOptions.profile) {
536
- printError(`profile:command=activity took_ms=${Date.now() - startedAt}`);
537
- }
538
- });
527
+ .action(runActivityAction);
539
528
  }
540
529
  }
541
530
  export const _testOnlyRegisterListQuery = {
@@ -543,4 +532,4 @@ export const _testOnlyRegisterListQuery = {
543
532
  parseListFormat,
544
533
  };
545
534
  //# sourceMappingURL=register-list-query.js.map
546
- //# debugId=fa7ca75b-e41a-54de-9843-6e47079e9685
535
+ //# debugId=4d49be94-9af3-531a-a94b-1eb4112dbdbd