@unbrained/pm-cli 2026.6.19 → 2026.6.20

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 (517) hide show
  1. package/CHANGELOG.md +311 -258
  2. package/README.md +1 -1
  3. package/dist/cli/bootstrap-args.d.ts +12 -1
  4. package/dist/cli/bootstrap-args.js +20 -9
  5. package/dist/cli/bootstrap-args.js.map +1 -1
  6. package/dist/cli/commander-usage.js +31 -25
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/completion.js +3 -3
  9. package/dist/cli/commands/completion.js.map +1 -1
  10. package/dist/cli/commands/contracts.js +4 -3
  11. package/dist/cli/commands/contracts.js.map +1 -1
  12. package/dist/cli/commands/eval.d.ts +62 -0
  13. package/dist/cli/commands/eval.js +158 -0
  14. package/dist/cli/commands/eval.js.map +1 -0
  15. package/dist/cli/commands/extension/install-sources.d.ts +12 -0
  16. package/dist/cli/commands/extension/install-sources.js +77 -10
  17. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  18. package/dist/cli/commands/gc.d.ts +12 -1
  19. package/dist/cli/commands/gc.js +53 -6
  20. package/dist/cli/commands/gc.js.map +1 -1
  21. package/dist/cli/commands/health.js +14 -8
  22. package/dist/cli/commands/health.js.map +1 -1
  23. package/dist/cli/commands/index.d.ts +1 -0
  24. package/dist/cli/commands/index.js +3 -2
  25. package/dist/cli/commands/index.js.map +1 -1
  26. package/dist/cli/commands/linked-artifacts.js +13 -3
  27. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  28. package/dist/cli/commands/list.js +12 -9
  29. package/dist/cli/commands/list.js.map +1 -1
  30. package/dist/cli/commands/plan.js +2 -2
  31. package/dist/cli/commands/plan.js.map +1 -1
  32. package/dist/cli/commands/restore.js +5 -11
  33. package/dist/cli/commands/restore.js.map +1 -1
  34. package/dist/cli/commands/search.d.ts +39 -1
  35. package/dist/cli/commands/search.js +89 -12
  36. package/dist/cli/commands/search.js.map +1 -1
  37. package/dist/cli/commands/update.js +96 -58
  38. package/dist/cli/commands/update.js.map +1 -1
  39. package/dist/cli/extension-command-help.d.ts +9 -0
  40. package/dist/cli/extension-command-help.js +13 -2
  41. package/dist/cli/extension-command-help.js.map +1 -1
  42. package/dist/cli/extension-command-options.d.ts +8 -0
  43. package/dist/cli/extension-command-options.js +27 -2
  44. package/dist/cli/extension-command-options.js.map +1 -1
  45. package/dist/cli/help-content.js +15 -2
  46. package/dist/cli/help-content.js.map +1 -1
  47. package/dist/cli/main.d.ts +12 -0
  48. package/dist/cli/main.js +49 -9
  49. package/dist/cli/main.js.map +1 -1
  50. package/dist/cli/register-list-query.js +34 -4
  51. package/dist/cli/register-list-query.js.map +1 -1
  52. package/dist/cli/register-operations.js +3 -3
  53. package/dist/cli/register-operations.js.map +1 -1
  54. package/dist/cli-bundle/chunks/activity-7G7NNNZQ.js +18 -0
  55. package/dist/cli-bundle/chunks/{activity-XJ7WRNWS.js → activity-KEEITOTB.js} +11 -11
  56. package/dist/cli-bundle/chunks/{aggregate-OFT4YVB6.js → aggregate-5BTHOHW2.js} +10 -10
  57. package/dist/cli-bundle/chunks/{aggregate-LBCWF6UJ.js → aggregate-GB2LJNTZ.js} +10 -10
  58. package/dist/cli-bundle/chunks/{append-BP2ARHOK.js → append-BBM4MNVD.js} +8 -8
  59. package/dist/cli-bundle/chunks/{append-5U3XR5SD.js → append-BFV5UYWS.js} +8 -8
  60. package/dist/cli-bundle/chunks/{chunk-ZZEM2PH7.js → chunk-26OQTCGH.js} +19 -14
  61. package/dist/cli-bundle/chunks/chunk-26OQTCGH.js.map +1 -0
  62. package/dist/cli-bundle/chunks/{chunk-RVG3WLY3.js → chunk-2LUNPA3U.js} +2 -2
  63. package/dist/cli-bundle/chunks/{chunk-OURX4WVG.js → chunk-2QJLN4KM.js} +7 -7
  64. package/dist/cli-bundle/chunks/{search-2JX776KX.js → chunk-2ZY5SLNR.js} +184 -23
  65. package/dist/cli-bundle/chunks/chunk-2ZY5SLNR.js.map +1 -0
  66. package/dist/cli-bundle/chunks/{chunk-AVMSP2HH.js → chunk-3KVCMB2M.js} +2 -2
  67. package/dist/cli-bundle/chunks/{chunk-FVZSUIN5.js → chunk-3WAKNI2W.js} +3 -3
  68. package/dist/cli-bundle/chunks/{chunk-H3DP6OUM.js → chunk-4KFL5OYK.js} +3 -3
  69. package/dist/cli-bundle/chunks/{chunk-VG3B2CYD.js → chunk-4PW4C3ZB.js} +2 -2
  70. package/dist/cli-bundle/chunks/{chunk-SDUZTZ55.js → chunk-4S4INK3B.js} +7 -7
  71. package/dist/cli-bundle/chunks/{chunk-QCHNPN24.js → chunk-4YMX7XFI.js} +7 -5
  72. package/dist/cli-bundle/chunks/{chunk-QSH34DSQ.js → chunk-5MWA46UN.js} +3 -3
  73. package/dist/cli-bundle/chunks/{chunk-UIMLAFOE.js → chunk-5XK2RYJR.js} +7 -7
  74. package/dist/cli-bundle/chunks/{chunk-B2NEFANY.js → chunk-6DZO5NN7.js} +3 -3
  75. package/dist/cli-bundle/chunks/{chunk-VP4Z36GO.js → chunk-6FSPWUBI.js} +2 -2
  76. package/dist/cli-bundle/chunks/{chunk-MPEWACTG.js → chunk-6KARQMC6.js} +2 -2
  77. package/dist/cli-bundle/chunks/{chunk-N7LDJRB4.js → chunk-6KSFULO6.js} +2 -2
  78. package/dist/cli-bundle/chunks/{chunk-XV6N3QND.js → chunk-6LTSLEHD.js} +2 -2
  79. package/dist/cli-bundle/chunks/{chunk-X26ODPU4.js → chunk-6Y7IQ6XN.js} +14 -18
  80. package/dist/cli-bundle/chunks/chunk-6Y7IQ6XN.js.map +7 -0
  81. package/dist/cli-bundle/chunks/{chunk-USKTNI7P.js → chunk-7MMXBIRZ.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-UCNEPMPY.js → chunk-ACULWT7G.js} +105 -66
  83. package/dist/cli-bundle/chunks/chunk-ACULWT7G.js.map +7 -0
  84. package/dist/cli-bundle/chunks/{chunk-2K56AWDP.js → chunk-AOCYDQLT.js} +5 -5
  85. package/dist/cli-bundle/chunks/{chunk-ZBVYKWT2.js → chunk-ATRXPXAL.js} +15 -15
  86. package/dist/cli-bundle/chunks/{chunk-A5JPMD4Q.js → chunk-AW4PYYNF.js} +2 -2
  87. package/dist/cli-bundle/chunks/{chunk-I2VJM36R.js → chunk-AZ75OVK4.js} +20 -21
  88. package/dist/cli-bundle/chunks/chunk-AZ75OVK4.js.map +1 -0
  89. package/dist/cli-bundle/chunks/{chunk-MTGMNUMJ.js → chunk-B3LROPTV.js} +2 -2
  90. package/dist/cli-bundle/chunks/{chunk-NPNNW5TU.js → chunk-BBSUVIIT.js} +8 -8
  91. package/dist/cli-bundle/chunks/{chunk-47BYN6CA.js → chunk-BYNJWB5F.js} +7 -7
  92. package/dist/cli-bundle/chunks/{chunk-PSWSQHM7.js → chunk-BZWIDTDE.js} +15 -19
  93. package/dist/cli-bundle/chunks/chunk-BZWIDTDE.js.map +1 -0
  94. package/dist/cli-bundle/chunks/{chunk-S673PVHD.js → chunk-CNPWCUDR.js} +3 -3
  95. package/dist/cli-bundle/chunks/{chunk-TYQBGXH2.js → chunk-DKWIPIJY.js} +2 -2
  96. package/dist/cli-bundle/chunks/{search-AZR2JITW.js → chunk-DYOJJTCG.js} +190 -22
  97. package/dist/cli-bundle/chunks/chunk-DYOJJTCG.js.map +7 -0
  98. package/dist/cli-bundle/chunks/{chunk-Y4IBSEQ2.js → chunk-E4E7UQBT.js} +20 -8
  99. package/dist/cli-bundle/chunks/chunk-E4E7UQBT.js.map +1 -0
  100. package/dist/cli-bundle/chunks/{chunk-HMQMRHQJ.js → chunk-EKMHDL6Z.js} +8 -8
  101. package/dist/cli-bundle/chunks/{chunk-LIVRA6VG.js → chunk-EOFROIC5.js} +7 -7
  102. package/dist/cli-bundle/chunks/{chunk-NNMBNN6Q.js → chunk-ETJKPURB.js} +7 -5
  103. package/dist/cli-bundle/chunks/{chunk-2E3KSWFG.js → chunk-F4EYOSNC.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-DJ3YYLHG.js → chunk-FA5O2DEG.js} +5 -5
  105. package/dist/cli-bundle/chunks/{chunk-QTWWHFI3.js → chunk-FBBPCSJM.js} +8 -8
  106. package/dist/cli-bundle/chunks/{chunk-EMFDZ7N3.js → chunk-FSOJCFDS.js} +3 -3
  107. package/dist/cli-bundle/chunks/{chunk-M35R7LFX.js → chunk-FXKPUMIR.js} +5 -5
  108. package/dist/cli-bundle/chunks/{chunk-YOGXK3ON.js → chunk-GF44HVZL.js} +18 -13
  109. package/dist/cli-bundle/chunks/chunk-GF44HVZL.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-UA4ANRJY.js → chunk-H3ZTSYPA.js} +71 -13
  111. package/dist/cli-bundle/chunks/chunk-H3ZTSYPA.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{chunk-II3WDRCM.js → chunk-HWHZ7EY7.js} +3 -3
  113. package/dist/cli-bundle/chunks/{chunk-7R5YKVKO.js → chunk-ICEWMJYH.js} +7 -7
  114. package/dist/cli-bundle/chunks/{chunk-UMTPQMEG.js → chunk-II4BRHKM.js} +3 -3
  115. package/dist/cli-bundle/chunks/{chunk-GDOTTY2S.js → chunk-IWKD7B33.js} +19 -2
  116. package/dist/cli-bundle/chunks/chunk-IWKD7B33.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-QG6M6XQE.js → chunk-J7VSEFWB.js} +3 -3
  118. package/dist/cli-bundle/chunks/{chunk-22YA6GCA.js → chunk-K2LBDYDC.js} +2 -2
  119. package/dist/cli-bundle/chunks/{chunk-BQVESTOG.js → chunk-KCJZREBI.js} +2 -2
  120. package/dist/cli-bundle/chunks/{chunk-YWAYOWDQ.js → chunk-LTUB7ARL.js} +72 -14
  121. package/dist/cli-bundle/chunks/chunk-LTUB7ARL.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-DVUU3AHP.js → chunk-MFCFHL27.js} +17 -6
  123. package/dist/cli-bundle/chunks/chunk-MFCFHL27.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-5P2LQV2F.js → chunk-MTQK5ZSB.js} +2 -2
  125. package/dist/cli-bundle/chunks/{chunk-LEC57E7K.js → chunk-NCGQ27PK.js} +2 -2
  126. package/dist/cli-bundle/chunks/{chunk-2RI3BDFK.js → chunk-NKTUBA2C.js} +10 -9
  127. package/dist/cli-bundle/chunks/chunk-NKTUBA2C.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-5LZPDRFW.js → chunk-NMQNXH4U.js} +5 -5
  129. package/dist/cli-bundle/chunks/{chunk-COHNQLB2.js → chunk-OLEP5TJH.js} +20 -3
  130. package/dist/cli-bundle/chunks/chunk-OLEP5TJH.js.map +1 -0
  131. package/dist/cli-bundle/chunks/{chunk-PRUB7RI4.js → chunk-OVSFW4KD.js} +3 -3
  132. package/dist/cli-bundle/chunks/{chunk-4L7Q4OVT.js → chunk-PF5GLFPU.js} +9 -9
  133. package/dist/cli-bundle/chunks/{chunk-YVYJQR6S.js → chunk-QUTJOHGK.js} +9 -9
  134. package/dist/cli-bundle/chunks/{chunk-5QLHQK7V.js → chunk-QWAJPGEI.js} +25 -26
  135. package/dist/cli-bundle/chunks/chunk-QWAJPGEI.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-K5TD74VU.js → chunk-RADIHKJ3.js} +19 -7
  137. package/dist/cli-bundle/chunks/chunk-RADIHKJ3.js.map +7 -0
  138. package/dist/cli-bundle/chunks/{chunk-CSRFOIHG.js → chunk-RICT5QYR.js} +3 -3
  139. package/dist/cli-bundle/chunks/{chunk-OUG4CL4H.js → chunk-RNKUCHUQ.js} +8 -8
  140. package/dist/cli-bundle/chunks/{chunk-X7RKOJXL.js → chunk-SL233DQD.js} +6 -6
  141. package/dist/cli-bundle/chunks/{chunk-USVOBLGB.js → chunk-U3WTMYBX.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-DYZKSIVX.js → chunk-VE3BUO3R.js} +3 -3
  143. package/dist/cli-bundle/chunks/{chunk-FPQA4ZMA.js → chunk-VONJSFUW.js} +18 -7
  144. package/dist/cli-bundle/chunks/chunk-VONJSFUW.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-RNWE2HZR.js → chunk-W2ZESOQE.js} +15 -15
  146. package/dist/cli-bundle/chunks/{chunk-4BFNWAMQ.js → chunk-WFOITX4A.js} +29 -12
  147. package/dist/cli-bundle/chunks/chunk-WFOITX4A.js.map +7 -0
  148. package/dist/cli-bundle/chunks/{chunk-FP7YLQ52.js → chunk-WMQBNVZL.js} +11 -10
  149. package/dist/cli-bundle/chunks/chunk-WMQBNVZL.js.map +1 -0
  150. package/dist/cli-bundle/chunks/{chunk-5SRID7DV.js → chunk-X3CD2VUI.js} +29 -12
  151. package/dist/cli-bundle/chunks/chunk-X3CD2VUI.js.map +1 -0
  152. package/dist/cli-bundle/chunks/{chunk-GL3QKIET.js → chunk-XKJDCJEH.js} +6 -6
  153. package/dist/cli-bundle/chunks/{chunk-SO2IOH37.js → chunk-XNQ3YH6N.js} +2 -2
  154. package/dist/cli-bundle/chunks/{chunk-ZGEWEO7B.js → chunk-XXGAWTH5.js} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-4EOS35RL.js → chunk-YBQF4CAW.js} +3 -3
  156. package/dist/cli-bundle/chunks/{chunk-MTDEEUGV.js → chunk-YT4Z2OVB.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-5NS6TJ2F.js → chunk-ZHCSGIUX.js} +2 -2
  158. package/dist/cli-bundle/chunks/{chunk-MAKOMXVM.js → chunk-ZYG4TR32.js} +106 -67
  159. package/dist/cli-bundle/chunks/chunk-ZYG4TR32.js.map +1 -0
  160. package/dist/cli-bundle/chunks/{claim-2BSYPJTJ.js → claim-G57ZJLZ4.js} +10 -10
  161. package/dist/cli-bundle/chunks/{claim-EZ6JKY5X.js → claim-TRSDQO6L.js} +10 -10
  162. package/dist/cli-bundle/chunks/{close-3TSX6BYF.js → close-4QMUQMON.js} +8 -8
  163. package/dist/cli-bundle/chunks/close-NNZZTZ5V.js +15 -0
  164. package/dist/cli-bundle/chunks/{close-many-B7DBVA46.js → close-many-3UWKJRQK.js} +15 -15
  165. package/dist/cli-bundle/chunks/{close-many-HB4UFCS3.js → close-many-A7U62CRI.js} +15 -15
  166. package/dist/cli-bundle/chunks/{comments-M7PAINZT.js → comments-4EM7XR74.js} +10 -10
  167. package/dist/cli-bundle/chunks/{comments-X7M7XM6I.js → comments-URWDZP2I.js} +10 -10
  168. package/dist/cli-bundle/chunks/{config-YICACPHA.js → config-GRJYZ2O3.js} +30 -10
  169. package/dist/cli-bundle/chunks/config-GRJYZ2O3.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{config-UWF3KRP5.js → config-PSZ5GWAK.js} +29 -9
  171. package/dist/cli-bundle/chunks/config-PSZ5GWAK.js.map +7 -0
  172. package/dist/cli-bundle/chunks/{context-EGUGU4K7.js → context-A46YAV2F.js} +13 -13
  173. package/dist/cli-bundle/chunks/{context-V32ZAPL6.js → context-BCR34RKM.js} +13 -13
  174. package/dist/cli-bundle/chunks/{contracts-7G553BHP.js → contracts-HPT25X4D.js} +10 -8
  175. package/dist/cli-bundle/chunks/contracts-HPT25X4D.js.map +1 -0
  176. package/dist/cli-bundle/chunks/{contracts-B2YWYUV5.js → contracts-JOPCQNDP.js} +10 -8
  177. package/dist/cli-bundle/chunks/contracts-JOPCQNDP.js.map +7 -0
  178. package/dist/cli-bundle/chunks/{copy-RMLXLZOL.js → copy-KBTIUW7L.js} +7 -7
  179. package/dist/cli-bundle/chunks/{copy-NWFFRYWM.js → copy-X7V6AEDB.js} +7 -7
  180. package/dist/cli-bundle/chunks/create-4KOAQ6ME.js +30 -0
  181. package/dist/cli-bundle/chunks/{create-GK4MX2LJ.js → create-ZPZKJDFQ.js} +14 -14
  182. package/dist/cli-bundle/chunks/{delete-EFQLVEAS.js → delete-2ZI6CJZM.js} +7 -7
  183. package/dist/cli-bundle/chunks/{delete-RMGNIL2S.js → delete-FGKVPUQZ.js} +7 -7
  184. package/dist/cli-bundle/chunks/{deps-WKHUPVD3.js → deps-IUJOBF2H.js} +7 -7
  185. package/dist/cli-bundle/chunks/{deps-K2I7QV4Y.js → deps-SJCEFU3C.js} +7 -7
  186. package/dist/cli-bundle/chunks/{docs-2H2UGIT6.js → docs-2LXF5SVC.js} +12 -11
  187. package/dist/cli-bundle/chunks/{docs-2H2UGIT6.js.map → docs-2LXF5SVC.js.map} +1 -1
  188. package/dist/cli-bundle/chunks/{docs-3FXRDYA7.js → docs-UWJ75CKR.js} +10 -9
  189. package/dist/cli-bundle/chunks/{docs-3FXRDYA7.js.map → docs-UWJ75CKR.js.map} +1 -1
  190. package/dist/cli-bundle/chunks/eval-FRIDCTM2.js +276 -0
  191. package/dist/cli-bundle/chunks/eval-FRIDCTM2.js.map +1 -0
  192. package/dist/cli-bundle/chunks/eval-ZTT3F3SL.js +286 -0
  193. package/dist/cli-bundle/chunks/eval-ZTT3F3SL.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{extension-4LPTFTV4.js → extension-VRYTNNSV.js} +5 -5
  195. package/dist/cli-bundle/chunks/{extension-ASUPTDCC.js → extension-XFQG3BXL.js} +5 -5
  196. package/dist/cli-bundle/chunks/{files-UAZFB3EA.js → files-AJOGTTAN.js} +10 -9
  197. package/dist/cli-bundle/chunks/{files-UAZFB3EA.js.map → files-AJOGTTAN.js.map} +1 -1
  198. package/dist/cli-bundle/chunks/{files-TXEQOA7C.js → files-B2RUCA32.js} +12 -11
  199. package/dist/cli-bundle/chunks/{files-TXEQOA7C.js.map → files-B2RUCA32.js.map} +1 -1
  200. package/dist/cli-bundle/chunks/{focus-UGROAMAX.js → focus-7N36RIMT.js} +8 -8
  201. package/dist/cli-bundle/chunks/{focus-ELOPN2SR.js → focus-CFE33IYC.js} +8 -8
  202. package/dist/cli-bundle/chunks/gc-OYJK4YBY.js +395 -0
  203. package/dist/cli-bundle/chunks/gc-OYJK4YBY.js.map +7 -0
  204. package/dist/cli-bundle/chunks/gc-SBF2FGHK.js +385 -0
  205. package/dist/cli-bundle/chunks/gc-SBF2FGHK.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{get-OTXPLWYW.js → get-577VLZZ7.js} +11 -11
  207. package/dist/cli-bundle/chunks/{get-IWZ7IMPS.js → get-LLFWSPXW.js} +11 -11
  208. package/dist/cli-bundle/chunks/{health-PPTJ7XKW.js → health-C2PUT6JZ.js} +21 -22
  209. package/dist/cli-bundle/chunks/{health-PPTJ7XKW.js.map → health-C2PUT6JZ.js.map} +1 -1
  210. package/dist/cli-bundle/chunks/{health-JEBESKID.js → health-PBJS7W2T.js} +20 -21
  211. package/dist/cli-bundle/chunks/{health-JEBESKID.js.map → health-PBJS7W2T.js.map} +2 -2
  212. package/dist/cli-bundle/chunks/{history-HNWBUDMI.js → history-4FJK6Y3O.js} +10 -10
  213. package/dist/cli-bundle/chunks/history-ZXNWG6H4.js +20 -0
  214. package/dist/cli-bundle/chunks/{history-compact-EQXVPK3V.js → history-compact-AXR6R6GU.js} +12 -12
  215. package/dist/cli-bundle/chunks/{history-compact-MMQC7MCW.js → history-compact-HXF3OT7G.js} +12 -12
  216. package/dist/cli-bundle/chunks/history-redact-GV633Z4H.js +21 -0
  217. package/dist/cli-bundle/chunks/{history-redact-UBDHBEJE.js → history-redact-UMPD4G3K.js} +11 -11
  218. package/dist/cli-bundle/chunks/{history-repair-GMMHFAGH.js → history-repair-WHOK2ICG.js} +12 -12
  219. package/dist/cli-bundle/chunks/{history-repair-7DSDRPMX.js → history-repair-X57HE5EA.js} +12 -12
  220. package/dist/cli-bundle/chunks/init-KQWZSNBX.js +20 -0
  221. package/dist/cli-bundle/chunks/{init-QGK4JFF6.js → init-N7MIIYCU.js} +10 -10
  222. package/dist/cli-bundle/chunks/{learnings-A6DGBMG3.js → learnings-FPG7WAVW.js} +10 -10
  223. package/dist/cli-bundle/chunks/{learnings-DR53TWRA.js → learnings-GZRBIEAN.js} +10 -10
  224. package/dist/cli-bundle/chunks/{list-LJ5DBXC3.js → list-MZBCSKLU.js} +10 -10
  225. package/dist/cli-bundle/chunks/{list-KOJN23UL.js → list-ZDQ2OBSO.js} +10 -10
  226. package/dist/cli-bundle/chunks/{notes-K5I3TAYR.js → notes-LW53PFLH.js} +10 -10
  227. package/dist/cli-bundle/chunks/{notes-7VLTHKPW.js → notes-WQAP67EC.js} +10 -10
  228. package/dist/cli-bundle/chunks/{plan-X3STKLED.js → plan-AVJ4VJQO.js} +15 -15
  229. package/dist/cli-bundle/chunks/plan-AVJ4VJQO.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{plan-BK3OMLGP.js → plan-VZKICKIJ.js} +16 -16
  231. package/dist/cli-bundle/chunks/plan-VZKICKIJ.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{register-list-query-FUMXPWZ4.js → register-list-query-7BD6ZHU5.js} +42 -21
  233. package/dist/cli-bundle/chunks/register-list-query-7BD6ZHU5.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{register-list-query-XDLFESU7.js → register-list-query-CM4SVAQA.js} +43 -22
  235. package/dist/cli-bundle/chunks/register-list-query-CM4SVAQA.js.map +1 -0
  236. package/dist/cli-bundle/chunks/{register-mutation-ZAGVKMBQ.js → register-mutation-ANZIWHUF.js} +33 -33
  237. package/dist/cli-bundle/chunks/{register-mutation-RXRX4P7D.js → register-mutation-PLFHAS4N.js} +33 -33
  238. package/dist/cli-bundle/chunks/{register-operations-DGSHCS75.js → register-operations-KQPQIFF2.js} +35 -35
  239. package/dist/cli-bundle/chunks/register-operations-KQPQIFF2.js.map +1 -0
  240. package/dist/cli-bundle/chunks/{register-operations-6UURPZN5.js → register-operations-VLGCAWIW.js} +34 -34
  241. package/dist/cli-bundle/chunks/{register-operations-6UURPZN5.js.map → register-operations-VLGCAWIW.js.map} +2 -2
  242. package/dist/cli-bundle/chunks/{register-setup-2FEGSFLM.js → register-setup-KPTZ36D4.js} +15 -15
  243. package/dist/cli-bundle/chunks/{register-setup-LTJG52WP.js → register-setup-TMEF6V7O.js} +15 -15
  244. package/dist/cli-bundle/chunks/{restore-SJUWYOCK.js → restore-64JKQV7G.js} +11 -11
  245. package/dist/cli-bundle/chunks/restore-GKM26SAW.js +19 -0
  246. package/dist/cli-bundle/chunks/{scheduling-shortcuts-W4F2LKHW.js → scheduling-shortcuts-4ION7QAX.js} +14 -14
  247. package/dist/cli-bundle/chunks/{scheduling-shortcuts-VWAMP2S2.js → scheduling-shortcuts-X6D6VSZR.js} +14 -14
  248. package/dist/cli-bundle/chunks/{schema-N5ETYD4P.js → schema-OA4RSVMI.js} +9 -9
  249. package/dist/cli-bundle/chunks/{schema-DXQRIEFM.js → schema-TA3NF3RG.js} +9 -9
  250. package/dist/cli-bundle/chunks/search-INCM5I4J.js +33 -0
  251. package/dist/cli-bundle/chunks/search-UAIHEQZL.js +37 -0
  252. package/dist/cli-bundle/chunks/{stats-J563NJBY.js → stats-RHEMG4CE.js} +8 -8
  253. package/dist/cli-bundle/chunks/{stats-ZFESFVQC.js → stats-WQWTIA5Y.js} +8 -8
  254. package/dist/cli-bundle/chunks/{telemetry-BNGLIFEM.js → telemetry-G6UKGKJU.js} +4 -4
  255. package/dist/cli-bundle/chunks/{telemetry-SC7HPRXX.js → telemetry-XA5D2QEO.js} +4 -4
  256. package/dist/cli-bundle/chunks/{test-55RJCGRU.js → test-XF7BYLMZ.js} +15 -15
  257. package/dist/cli-bundle/chunks/{test-47UQGEXE.js → test-ZMQF23P3.js} +15 -15
  258. package/dist/cli-bundle/chunks/{test-all-DN6KG4FX.js → test-all-WUBBJCPU.js} +15 -15
  259. package/dist/cli-bundle/chunks/{test-all-5SFTTRNL.js → test-all-ZNQBMUOI.js} +15 -15
  260. package/dist/cli-bundle/chunks/{test-runs-DZEDJ4GH.js → test-runs-N7LI7HLH.js} +5 -5
  261. package/dist/cli-bundle/chunks/{test-runs-NHRBT7SN.js → test-runs-RFA42EEX.js} +5 -5
  262. package/dist/cli-bundle/chunks/update-CPNOG73P.js +24 -0
  263. package/dist/cli-bundle/chunks/update-CPNOG73P.js.map +7 -0
  264. package/dist/cli-bundle/chunks/update-T5AYT6ZN.js +28 -0
  265. package/dist/cli-bundle/chunks/update-T5AYT6ZN.js.map +1 -0
  266. package/dist/cli-bundle/chunks/{update-many-OKYWFCBO.js → update-many-6XFR7TFG.js} +23 -23
  267. package/dist/cli-bundle/chunks/{update-many-IRNV3OTG.js → update-many-NMRUQZL2.js} +23 -23
  268. package/dist/cli-bundle/chunks/{upgrade-KP4I45V5.js → upgrade-EJTME2YQ.js} +5 -5
  269. package/dist/cli-bundle/chunks/{upgrade-3RIAFQIK.js → upgrade-QMCSONWR.js} +5 -5
  270. package/dist/cli-bundle/chunks/{validate-GVY4VE43.js → validate-3SUCHXXX.js} +21 -21
  271. package/dist/cli-bundle/chunks/{validate-ADKGN37M.js → validate-KIIJY5RC.js} +21 -21
  272. package/dist/cli-bundle/main.js +133 -55
  273. package/dist/cli-bundle/main.js.map +2 -2
  274. package/dist/core/checkpoint/checkpoint-gc.d.ts +69 -0
  275. package/dist/core/checkpoint/checkpoint-gc.js +175 -0
  276. package/dist/core/checkpoint/checkpoint-gc.js.map +1 -0
  277. package/dist/core/config/nested-settings.js +22 -2
  278. package/dist/core/config/nested-settings.js.map +1 -1
  279. package/dist/core/diagnostics/remediation.js +19 -2
  280. package/dist/core/diagnostics/remediation.js.map +1 -1
  281. package/dist/core/extensions/extension-types.d.ts +0 -9
  282. package/dist/core/extensions/extension-types.js +2 -27
  283. package/dist/core/extensions/extension-types.js.map +1 -1
  284. package/dist/core/fs/fs-utils.d.ts +17 -1
  285. package/dist/core/fs/fs-utils.js +19 -3
  286. package/dist/core/fs/fs-utils.js.map +1 -1
  287. package/dist/core/history/drift-scan.d.ts +17 -5
  288. package/dist/core/history/drift-scan.js +22 -14
  289. package/dist/core/history/drift-scan.js.map +1 -1
  290. package/dist/core/history/replay.d.ts +7 -0
  291. package/dist/core/history/replay.js +11 -6
  292. package/dist/core/history/replay.js.map +1 -1
  293. package/dist/core/item/status-filter.d.ts +7 -3
  294. package/dist/core/item/status-filter.js +26 -5
  295. package/dist/core/item/status-filter.js.map +1 -1
  296. package/dist/core/search/bm25.d.ts +113 -0
  297. package/dist/core/search/bm25.js +178 -0
  298. package/dist/core/search/bm25.js.map +1 -0
  299. package/dist/core/search/eval.d.ts +114 -0
  300. package/dist/core/search/eval.js +217 -0
  301. package/dist/core/search/eval.js.map +1 -0
  302. package/dist/core/sentry/instrument.d.ts +14 -0
  303. package/dist/core/sentry/instrument.js +43 -3
  304. package/dist/core/sentry/instrument.js.map +1 -1
  305. package/dist/core/shared/constants.js +5 -2
  306. package/dist/core/shared/constants.js.map +1 -1
  307. package/dist/core/store/paths.js +4 -3
  308. package/dist/core/store/paths.js.map +1 -1
  309. package/dist/core/store/settings-validator.d.ts +7 -0
  310. package/dist/core/store/settings-validator.js +10 -2
  311. package/dist/core/store/settings-validator.js.map +1 -1
  312. package/dist/core/store/settings.js +6 -2
  313. package/dist/core/store/settings.js.map +1 -1
  314. package/dist/mcp/tool-definitions.js +4 -3
  315. package/dist/mcp/tool-definitions.js.map +1 -1
  316. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  317. package/dist/sdk/cli-contracts/enum-contracts.js +3 -2
  318. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  319. package/dist/sdk/cli-contracts/tool-parameter-tables.js +4 -4
  320. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  321. package/dist/sdk/cli-contracts.d.ts +1 -0
  322. package/dist/sdk/cli-contracts.js +11 -2
  323. package/dist/sdk/cli-contracts.js.map +1 -1
  324. package/dist/types.d.ts +19 -0
  325. package/dist/types.js +2 -2
  326. package/dist/types.js.map +1 -1
  327. package/docs/AGENT_GUIDE.md +1 -0
  328. package/docs/ARCHITECTURE.md +124 -11
  329. package/docs/CLAUDE_CODE_PLUGIN.md +5 -13
  330. package/docs/COMMANDS.md +55 -5
  331. package/docs/CONFIGURATION.md +39 -0
  332. package/docs/EXTENSIONS.md +2 -2
  333. package/docs/MIGRATION_CLI_SIMPLIFICATION.md +9 -2
  334. package/docs/QUICKSTART.md +2 -0
  335. package/docs/README.md +2 -0
  336. package/docs/RELEASING.md +2 -1
  337. package/docs/SDK.md +9 -1
  338. package/docs/TESTING.md +18 -0
  339. package/package.json +4 -3
  340. package/packages/pm-todos/extensions/todos/index.js +2 -0
  341. package/packages/pm-todos/extensions/todos/index.ts +2 -0
  342. package/packages/pm-todos/extensions/todos/runtime.js +1 -1
  343. package/packages/pm-todos/extensions/todos/runtime.ts +4 -1
  344. package/dist/cli-bundle/chunks/activity-62I26XZB.js +0 -18
  345. package/dist/cli-bundle/chunks/chunk-2RI3BDFK.js.map +0 -7
  346. package/dist/cli-bundle/chunks/chunk-4BFNWAMQ.js.map +0 -7
  347. package/dist/cli-bundle/chunks/chunk-5QLHQK7V.js.map +0 -7
  348. package/dist/cli-bundle/chunks/chunk-5SRID7DV.js.map +0 -1
  349. package/dist/cli-bundle/chunks/chunk-COHNQLB2.js.map +0 -1
  350. package/dist/cli-bundle/chunks/chunk-DVUU3AHP.js.map +0 -1
  351. package/dist/cli-bundle/chunks/chunk-FP7YLQ52.js.map +0 -1
  352. package/dist/cli-bundle/chunks/chunk-FPQA4ZMA.js.map +0 -7
  353. package/dist/cli-bundle/chunks/chunk-GDOTTY2S.js.map +0 -7
  354. package/dist/cli-bundle/chunks/chunk-I2VJM36R.js.map +0 -1
  355. package/dist/cli-bundle/chunks/chunk-K5TD74VU.js.map +0 -7
  356. package/dist/cli-bundle/chunks/chunk-MAKOMXVM.js.map +0 -1
  357. package/dist/cli-bundle/chunks/chunk-PSWSQHM7.js.map +0 -1
  358. package/dist/cli-bundle/chunks/chunk-UA4ANRJY.js.map +0 -7
  359. package/dist/cli-bundle/chunks/chunk-UCNEPMPY.js.map +0 -7
  360. package/dist/cli-bundle/chunks/chunk-X26ODPU4.js.map +0 -7
  361. package/dist/cli-bundle/chunks/chunk-Y4IBSEQ2.js.map +0 -1
  362. package/dist/cli-bundle/chunks/chunk-YOGXK3ON.js.map +0 -7
  363. package/dist/cli-bundle/chunks/chunk-YWAYOWDQ.js.map +0 -1
  364. package/dist/cli-bundle/chunks/chunk-ZZEM2PH7.js.map +0 -1
  365. package/dist/cli-bundle/chunks/close-TQZK43Z5.js +0 -15
  366. package/dist/cli-bundle/chunks/config-UWF3KRP5.js.map +0 -7
  367. package/dist/cli-bundle/chunks/config-YICACPHA.js.map +0 -1
  368. package/dist/cli-bundle/chunks/contracts-7G553BHP.js.map +0 -1
  369. package/dist/cli-bundle/chunks/contracts-B2YWYUV5.js.map +0 -7
  370. package/dist/cli-bundle/chunks/create-UZLJXHLA.js +0 -30
  371. package/dist/cli-bundle/chunks/gc-5RTYXLQU.js +0 -211
  372. package/dist/cli-bundle/chunks/gc-5RTYXLQU.js.map +0 -7
  373. package/dist/cli-bundle/chunks/gc-FK5732EK.js +0 -208
  374. package/dist/cli-bundle/chunks/gc-FK5732EK.js.map +0 -1
  375. package/dist/cli-bundle/chunks/history-TKTULEVE.js +0 -20
  376. package/dist/cli-bundle/chunks/history-redact-SPIFIXVY.js +0 -21
  377. package/dist/cli-bundle/chunks/init-A6FTZ5UC.js +0 -20
  378. package/dist/cli-bundle/chunks/plan-BK3OMLGP.js.map +0 -1
  379. package/dist/cli-bundle/chunks/plan-X3STKLED.js.map +0 -7
  380. package/dist/cli-bundle/chunks/register-list-query-FUMXPWZ4.js.map +0 -7
  381. package/dist/cli-bundle/chunks/register-list-query-XDLFESU7.js.map +0 -1
  382. package/dist/cli-bundle/chunks/register-operations-DGSHCS75.js.map +0 -1
  383. package/dist/cli-bundle/chunks/restore-PI3WM4GK.js +0 -19
  384. package/dist/cli-bundle/chunks/search-2JX776KX.js.map +0 -1
  385. package/dist/cli-bundle/chunks/search-AZR2JITW.js.map +0 -7
  386. package/dist/cli-bundle/chunks/update-2BZEAI7B.js +0 -24
  387. package/dist/cli-bundle/chunks/update-GCNLER2H.js +0 -28
  388. /package/dist/cli-bundle/chunks/{activity-62I26XZB.js.map → activity-7G7NNNZQ.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{activity-XJ7WRNWS.js.map → activity-KEEITOTB.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{aggregate-OFT4YVB6.js.map → aggregate-5BTHOHW2.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{aggregate-LBCWF6UJ.js.map → aggregate-GB2LJNTZ.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{append-BP2ARHOK.js.map → append-BBM4MNVD.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{append-5U3XR5SD.js.map → append-BFV5UYWS.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{chunk-RVG3WLY3.js.map → chunk-2LUNPA3U.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{chunk-OURX4WVG.js.map → chunk-2QJLN4KM.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{chunk-AVMSP2HH.js.map → chunk-3KVCMB2M.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{chunk-FVZSUIN5.js.map → chunk-3WAKNI2W.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{chunk-H3DP6OUM.js.map → chunk-4KFL5OYK.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{chunk-VG3B2CYD.js.map → chunk-4PW4C3ZB.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{chunk-SDUZTZ55.js.map → chunk-4S4INK3B.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{chunk-QCHNPN24.js.map → chunk-4YMX7XFI.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{chunk-QSH34DSQ.js.map → chunk-5MWA46UN.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{chunk-UIMLAFOE.js.map → chunk-5XK2RYJR.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{chunk-B2NEFANY.js.map → chunk-6DZO5NN7.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{chunk-VP4Z36GO.js.map → chunk-6FSPWUBI.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{chunk-MPEWACTG.js.map → chunk-6KARQMC6.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{chunk-N7LDJRB4.js.map → chunk-6KSFULO6.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{chunk-XV6N3QND.js.map → chunk-6LTSLEHD.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{chunk-USKTNI7P.js.map → chunk-7MMXBIRZ.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{chunk-2K56AWDP.js.map → chunk-AOCYDQLT.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{chunk-ZBVYKWT2.js.map → chunk-ATRXPXAL.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{chunk-A5JPMD4Q.js.map → chunk-AW4PYYNF.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{chunk-MTGMNUMJ.js.map → chunk-B3LROPTV.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{chunk-NPNNW5TU.js.map → chunk-BBSUVIIT.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{chunk-47BYN6CA.js.map → chunk-BYNJWB5F.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{chunk-S673PVHD.js.map → chunk-CNPWCUDR.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{chunk-TYQBGXH2.js.map → chunk-DKWIPIJY.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{chunk-HMQMRHQJ.js.map → chunk-EKMHDL6Z.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{chunk-LIVRA6VG.js.map → chunk-EOFROIC5.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{chunk-NNMBNN6Q.js.map → chunk-ETJKPURB.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{chunk-2E3KSWFG.js.map → chunk-F4EYOSNC.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{chunk-DJ3YYLHG.js.map → chunk-FA5O2DEG.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{chunk-QTWWHFI3.js.map → chunk-FBBPCSJM.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{chunk-EMFDZ7N3.js.map → chunk-FSOJCFDS.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{chunk-M35R7LFX.js.map → chunk-FXKPUMIR.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{chunk-II3WDRCM.js.map → chunk-HWHZ7EY7.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{chunk-7R5YKVKO.js.map → chunk-ICEWMJYH.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{chunk-UMTPQMEG.js.map → chunk-II4BRHKM.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{chunk-QG6M6XQE.js.map → chunk-J7VSEFWB.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{chunk-22YA6GCA.js.map → chunk-K2LBDYDC.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{chunk-BQVESTOG.js.map → chunk-KCJZREBI.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{chunk-5P2LQV2F.js.map → chunk-MTQK5ZSB.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{chunk-LEC57E7K.js.map → chunk-NCGQ27PK.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{chunk-5LZPDRFW.js.map → chunk-NMQNXH4U.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{chunk-PRUB7RI4.js.map → chunk-OVSFW4KD.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{chunk-4L7Q4OVT.js.map → chunk-PF5GLFPU.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{chunk-YVYJQR6S.js.map → chunk-QUTJOHGK.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{chunk-CSRFOIHG.js.map → chunk-RICT5QYR.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{chunk-OUG4CL4H.js.map → chunk-RNKUCHUQ.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{chunk-X7RKOJXL.js.map → chunk-SL233DQD.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{chunk-USVOBLGB.js.map → chunk-U3WTMYBX.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{chunk-DYZKSIVX.js.map → chunk-VE3BUO3R.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{chunk-RNWE2HZR.js.map → chunk-W2ZESOQE.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{chunk-GL3QKIET.js.map → chunk-XKJDCJEH.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{chunk-SO2IOH37.js.map → chunk-XNQ3YH6N.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{chunk-ZGEWEO7B.js.map → chunk-XXGAWTH5.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{chunk-4EOS35RL.js.map → chunk-YBQF4CAW.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{chunk-MTDEEUGV.js.map → chunk-YT4Z2OVB.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{chunk-5NS6TJ2F.js.map → chunk-ZHCSGIUX.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{claim-2BSYPJTJ.js.map → claim-G57ZJLZ4.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{claim-EZ6JKY5X.js.map → claim-TRSDQO6L.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{close-3TSX6BYF.js.map → close-4QMUQMON.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{close-TQZK43Z5.js.map → close-NNZZTZ5V.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{close-many-B7DBVA46.js.map → close-many-3UWKJRQK.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{close-many-HB4UFCS3.js.map → close-many-A7U62CRI.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{comments-M7PAINZT.js.map → comments-4EM7XR74.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{comments-X7M7XM6I.js.map → comments-URWDZP2I.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{context-EGUGU4K7.js.map → context-A46YAV2F.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{context-V32ZAPL6.js.map → context-BCR34RKM.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{copy-RMLXLZOL.js.map → copy-KBTIUW7L.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{copy-NWFFRYWM.js.map → copy-X7V6AEDB.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{create-UZLJXHLA.js.map → create-4KOAQ6ME.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{create-GK4MX2LJ.js.map → create-ZPZKJDFQ.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{delete-EFQLVEAS.js.map → delete-2ZI6CJZM.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{delete-RMGNIL2S.js.map → delete-FGKVPUQZ.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{deps-WKHUPVD3.js.map → deps-IUJOBF2H.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{deps-K2I7QV4Y.js.map → deps-SJCEFU3C.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{extension-4LPTFTV4.js.map → extension-VRYTNNSV.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{extension-ASUPTDCC.js.map → extension-XFQG3BXL.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{focus-UGROAMAX.js.map → focus-7N36RIMT.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{focus-ELOPN2SR.js.map → focus-CFE33IYC.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{get-OTXPLWYW.js.map → get-577VLZZ7.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{get-IWZ7IMPS.js.map → get-LLFWSPXW.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{history-HNWBUDMI.js.map → history-4FJK6Y3O.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{history-TKTULEVE.js.map → history-ZXNWG6H4.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{history-compact-EQXVPK3V.js.map → history-compact-AXR6R6GU.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{history-compact-MMQC7MCW.js.map → history-compact-HXF3OT7G.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{history-redact-SPIFIXVY.js.map → history-redact-GV633Z4H.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{history-redact-UBDHBEJE.js.map → history-redact-UMPD4G3K.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{history-repair-GMMHFAGH.js.map → history-repair-WHOK2ICG.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{history-repair-7DSDRPMX.js.map → history-repair-X57HE5EA.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{init-A6FTZ5UC.js.map → init-KQWZSNBX.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{init-QGK4JFF6.js.map → init-N7MIIYCU.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{learnings-A6DGBMG3.js.map → learnings-FPG7WAVW.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{learnings-DR53TWRA.js.map → learnings-GZRBIEAN.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{list-LJ5DBXC3.js.map → list-MZBCSKLU.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{list-KOJN23UL.js.map → list-ZDQ2OBSO.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{notes-K5I3TAYR.js.map → notes-LW53PFLH.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{notes-7VLTHKPW.js.map → notes-WQAP67EC.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{register-mutation-ZAGVKMBQ.js.map → register-mutation-ANZIWHUF.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{register-mutation-RXRX4P7D.js.map → register-mutation-PLFHAS4N.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{register-setup-2FEGSFLM.js.map → register-setup-KPTZ36D4.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{register-setup-LTJG52WP.js.map → register-setup-TMEF6V7O.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{restore-SJUWYOCK.js.map → restore-64JKQV7G.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{restore-PI3WM4GK.js.map → restore-GKM26SAW.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-W4F2LKHW.js.map → scheduling-shortcuts-4ION7QAX.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-VWAMP2S2.js.map → scheduling-shortcuts-X6D6VSZR.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{schema-N5ETYD4P.js.map → schema-OA4RSVMI.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{schema-DXQRIEFM.js.map → schema-TA3NF3RG.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{test-55RJCGRU.js.map → search-INCM5I4J.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{test-47UQGEXE.js.map → search-UAIHEQZL.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{stats-J563NJBY.js.map → stats-RHEMG4CE.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{stats-ZFESFVQC.js.map → stats-WQWTIA5Y.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{telemetry-BNGLIFEM.js.map → telemetry-G6UKGKJU.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{telemetry-SC7HPRXX.js.map → telemetry-XA5D2QEO.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{update-2BZEAI7B.js.map → test-XF7BYLMZ.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{update-GCNLER2H.js.map → test-ZMQF23P3.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{test-all-DN6KG4FX.js.map → test-all-WUBBJCPU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{test-all-5SFTTRNL.js.map → test-all-ZNQBMUOI.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{test-runs-DZEDJ4GH.js.map → test-runs-N7LI7HLH.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{test-runs-NHRBT7SN.js.map → test-runs-RFA42EEX.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{update-many-OKYWFCBO.js.map → update-many-6XFR7TFG.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{update-many-IRNV3OTG.js.map → update-many-NMRUQZL2.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{upgrade-KP4I45V5.js.map → upgrade-EJTME2YQ.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{upgrade-3RIAFQIK.js.map → upgrade-QMCSONWR.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{validate-GVY4VE43.js.map → validate-3SUCHXXX.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{validate-ADKGN37M.js.map → validate-KIIJY5RC.js.map} +0 -0
@@ -9,23 +9,23 @@ import {
9
9
  printActivityJsonStream,
10
10
  printListJsonStream,
11
11
  resolveActivityStreamMode
12
- } from "./chunk-5LZPDRFW.js";
13
- import "./chunk-FPQA4ZMA.js";
14
- import "./chunk-NNMBNN6Q.js";
12
+ } from "./chunk-NMQNXH4U.js";
13
+ import "./chunk-VONJSFUW.js";
14
+ import "./chunk-ETJKPURB.js";
15
15
  import {
16
16
  printError,
17
17
  printResult,
18
18
  writeStdout
19
- } from "./chunk-AVMSP2HH.js";
20
- import "./chunk-X7RKOJXL.js";
21
- import "./chunk-5NS6TJ2F.js";
22
- import "./chunk-QSH34DSQ.js";
23
- import "./chunk-SO2IOH37.js";
24
- import "./chunk-MTGMNUMJ.js";
19
+ } from "./chunk-3KVCMB2M.js";
20
+ import "./chunk-SL233DQD.js";
21
+ import "./chunk-ZHCSGIUX.js";
22
+ import "./chunk-5MWA46UN.js";
23
+ import "./chunk-XNQ3YH6N.js";
24
+ import "./chunk-B3LROPTV.js";
25
25
  import {
26
26
  EXIT_CODE,
27
27
  PmCliError
28
- } from "./chunk-5QLHQK7V.js";
28
+ } from "./chunk-QWAJPGEI.js";
29
29
 
30
30
  // dist/cli/register-list-query.js
31
31
  import { Option } from "commander";
@@ -100,7 +100,7 @@ function renderRowsAsTable(rows) {
100
100
  !(function() {
101
101
  try {
102
102
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
103
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "f02e433d-7d47-51d4-93d8-22d74b6e368f");
103
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbfe6dd0-4c4f-5f61-a3c6-5630eb80a30c");
104
104
  } catch (e2) {
105
105
  }
106
106
  })();
@@ -157,7 +157,7 @@ function registerListQueryCommands(program, options) {
157
157
  function registerListCommand(name, description, status, excludeTerminal, allowStatusFilter, defaultBrief) {
158
158
  const command = program.command(name).description(description);
159
159
  if (allowStatusFilter) {
160
- command.option("--status <value>", "Filter by status");
160
+ command.option("--status <value>", "Filter by status (use all for no status restriction)");
161
161
  }
162
162
  command.option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").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" \u2192 --updated-after <ISO>').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--ids <value>", "Filter by explicit item IDs (comma-separated or repeatable)").option("--assignee <value>", "Filter by assignee").option("--assignee-filter <value>", "Filter assignee presence: assigned|unassigned").option("--parent <value>", "Filter by parent item ID").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--filter-ac-missing", "Show only items missing acceptance_criteria").option("--filter-estimates-missing", "Show only items missing estimated_minutes").option("--filter-resolution-missing", "Show only terminal items missing resolution").option("--filter-metadata-missing", "Show only items missing any tracked metadata (AC, estimate, or resolution)").option("--limit <n>", "Limit returned item count").option("--offset <n>", "Skip the first n matching rows before limit is applied").option("--no-truncate", "Return every matched row, overriding any --limit (alias: --all)").option("--include-body", "Include item body in each returned list row").option("--compact", "Render compact list projection fields (mutually exclusive with --brief/--full/--fields)").option("--brief", "Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)").option("--full", "Render full list projection fields (mutually exclusive with --compact/--brief/--fields)").option("--fields <value>", "Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)").option("--sort <value>", "Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)").option("--order <value>", "Sort order: asc|desc (requires --sort)").option("--tree", "Render rows in parent/child tree order").option("--tree-depth <n>", "Maximum recursion depth with --tree (0 keeps root rows only)").option("--format <value>", "Output render mode: csv|table (human export) or json|toon (machine output override)").option("--stream", "Emit line-delimited JSON rows (requires --json)");
163
163
  registerContentAndGovernanceFilters(command);
@@ -170,7 +170,7 @@ function registerListQueryCommands(program, options) {
170
170
  }
171
171
  if (excludeTerminal)
172
172
  listOptions.excludeTerminal = true;
173
- const { runList } = await import("./list-KOJN23UL.js");
173
+ const { runList } = await import("./list-ZDQ2OBSO.js");
174
174
  const result = await runList(status, listOptions, globalOptions);
175
175
  const streamMode = options2.stream === true;
176
176
  const listFormat = parseListFormat(options2.format);
@@ -235,7 +235,7 @@ function registerListQueryCommands(program, options) {
235
235
  aggregateCommand.action(async (options2, command) => {
236
236
  const globalOptions = getGlobalOptions(command);
237
237
  const startedAt = Date.now();
238
- const { runAggregate } = await import("./aggregate-LBCWF6UJ.js");
238
+ const { runAggregate } = await import("./aggregate-GB2LJNTZ.js");
239
239
  const result = await runAggregate(normalizeAggregateOptions(options2), globalOptions);
240
240
  printResult(result, globalOptions);
241
241
  if (globalOptions.profile) {
@@ -250,7 +250,7 @@ function registerListQueryCommands(program, options) {
250
250
  const globalOptions = getGlobalOptions(actionCommand);
251
251
  const startedAt = Date.now();
252
252
  const normalized = normalizeContextOptions(options2);
253
- const commands = await import("./context-V32ZAPL6.js");
253
+ const commands = await import("./context-BCR34RKM.js");
254
254
  const result = await commands.runContext(normalized, globalOptions);
255
255
  const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);
256
256
  if (outputFormat === "markdown") {
@@ -270,12 +270,12 @@ function registerListQueryCommands(program, options) {
270
270
  });
271
271
  }
272
272
  if (shouldRegister("search")) {
273
- const searchCommand = program.command("search").argument("<keywords...>", "Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--mode <value>", "Search mode: keyword|semantic|hybrid (default: keyword)").option("--semantic", "Shorthand for --mode semantic").option("--hybrid", "Shorthand for --mode hybrid").option("--match-mode <value>", "Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>", "Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count", "Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>", "Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked", "Include linked files, docs, and tests in the searchable corpus").option("--title-exact", "Require exact normalized title match for the full query string").option("--phrase-exact", "Require exact normalized phrase match in searchable text").option("--highlight", "Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>", "Filter by status before query (open/closed/canceled aliases or configured status id; CSV)").option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>", "Filter by assignee").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--parent <value>", "Filter by parent item ID").option("--compact", "Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full", "Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>", "Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)").option("--format <value>", "Search output format override: json|toon").option("--limit <n>", "Limit returned item count");
273
+ const searchCommand = program.command("search").argument("<keywords...>", "Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--mode <value>", "Search mode: keyword|semantic|hybrid (default: keyword)").option("--semantic", "Shorthand for --mode semantic").option("--hybrid", "Shorthand for --mode hybrid").option("--match-mode <value>", "Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>", "Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count", "Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>", "Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked", "Include linked files, docs, and tests in the searchable corpus").option("--title-exact", "Require exact normalized title match for the full query string").option("--phrase-exact", "Require exact normalized phrase match in searchable text").option("--highlight", "Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>", "Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)").option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>", "Filter by assignee").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--parent <value>", "Filter by parent item ID").option("--compact", "Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full", "Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>", "Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)").option("--format <value>", "Search output format override: json|toon").option("--limit <n>", "Limit returned item count");
274
274
  registerContentAndGovernanceFilters(searchCommand);
275
275
  searchCommand.action(async (keywords, options2, command) => {
276
276
  const globalOptions = getGlobalOptions(command);
277
277
  const startedAt = Date.now();
278
- const { runSearch } = await import("./search-AZR2JITW.js");
278
+ const { runSearch } = await import("./search-INCM5I4J.js");
279
279
  const searchOptions = normalizeSearchOptions(options2);
280
280
  const result = await runSearch(normalizeSearchKeywordsInput(keywords), {
281
281
  ...searchOptions,
@@ -288,11 +288,32 @@ function registerListQueryCommands(program, options) {
288
288
  });
289
289
  addHiddenOption(searchCommand, "--tags <value>", "Alias for --tag");
290
290
  }
291
+ if (shouldRegister("eval")) {
292
+ program.command("eval").description("Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.").option("--mode <value>", "Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)").option("--k <n>", "Metric cutoff @k (positive integer; default: 10)").option("--fail-under <value>", "Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate").option("--queries <path>", "Path to the golden-query JSON file (default: <pmRoot>/search/eval-queries.json)").option("--format <value>", "Eval output format override: json|toon").action(async (options2, command) => {
293
+ const globalOptions = getGlobalOptions(command);
294
+ const startedAt = Date.now();
295
+ const { runEval } = await import("./eval-ZTT3F3SL.js");
296
+ const result = await runEval({
297
+ mode: typeof options2.mode === "string" ? options2.mode : void 0,
298
+ k: typeof options2.k === "string" ? options2.k : void 0,
299
+ failUnder: typeof options2.failUnder === "string" ? options2.failUnder : void 0,
300
+ queries: typeof options2.queries === "string" ? options2.queries : void 0,
301
+ format: typeof options2.format === "string" ? options2.format : void 0
302
+ }, globalOptions);
303
+ printResult(result, resolveReadCommandOutputFormat("Eval", options2.format, globalOptions));
304
+ if (globalOptions.profile) {
305
+ printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);
306
+ }
307
+ if (!result.passed) {
308
+ throw new PmCliError(`Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`, EXIT_CODE.GENERIC_FAILURE);
309
+ }
310
+ });
311
+ }
291
312
  if (shouldRegister("get")) {
292
313
  const getCommand = program.command("get").argument("<id>", "Item id").option("--depth <value>", "Detail depth: brief|standard|deep|full (full aliases deep; default: standard)").option("--full", "Explicit full item read; equivalent to --depth deep (mutually exclusive with --depth/--fields)").option("--fields <value>", "Render custom comma-separated item metadata fields (for example: --fields id,title,status,parent,type)").option("--tree", "Include descendants rooted at the requested item").option("--tree-depth <n>", "Maximum subtree depth for --tree descendants").option("--format <value>", "Get output format override: json|toon").description("Show item details by ID.").action(async (id, options2, command) => {
293
314
  const globalOptions = getGlobalOptions(command);
294
315
  const startedAt = Date.now();
295
- const { runGet } = await import("./get-OTXPLWYW.js");
316
+ const { runGet } = await import("./get-577VLZZ7.js");
296
317
  const result = await runGet(id, globalOptions, {
297
318
  depth: typeof options2.depth === "string" ? options2.depth : void 0,
298
319
  fields: typeof options2.fields === "string" ? options2.fields : void 0,
@@ -315,7 +336,7 @@ function registerListQueryCommands(program, options) {
315
336
  throw new PmCliError("History projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
316
337
  }
317
338
  const field = typeof options2.field === "string" ? options2.field : void 0;
318
- const { runHistory } = await import("./history-TKTULEVE.js");
339
+ const { runHistory } = await import("./history-ZXNWG6H4.js");
319
340
  const result = await runHistory(id, {
320
341
  limit: typeof options2.limit === "string" ? options2.limit : void 0,
321
342
  compact: options2.full === true ? false : true,
@@ -337,7 +358,7 @@ function registerListQueryCommands(program, options) {
337
358
  throw new PmCliError("Activity projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
338
359
  }
339
360
  const normalized = normalizeActivityOptions(options2);
340
- const { runActivity } = await import("./activity-62I26XZB.js");
361
+ const { runActivity } = await import("./activity-7G7NNNZQ.js");
341
362
  const result = await runActivity(normalized, globalOptions);
342
363
  const streamMode = resolveActivityStreamMode(options2.stream);
343
364
  if (streamMode && !globalOptions.json) {
@@ -362,4 +383,4 @@ export {
362
383
  _testOnlyRegisterListQuery,
363
384
  registerListQueryCommands
364
385
  };
365
- //# sourceMappingURL=register-list-query-FUMXPWZ4.js.map
386
+ //# sourceMappingURL=register-list-query-7BD6ZHU5.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/register-list-query.ts", "../../../../../../../../core/output/tabular.ts"],
4
+ "sourcesContent": ["/**\n * @module cli/register-list-query\n *\n * Provides CLI runtime support for Register List Query.\n */\nimport { Option, type Command } from \"commander\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { renderRowsAsCsv, renderRowsAsTable } from \"../core/output/tabular.js\";\nimport type { ItemStatus } from \"../types/index.js\";\nimport {\n getGlobalOptions,\n normalizeAggregateOptions,\n normalizeActivityOptions,\n normalizeContextOptions,\n normalizeListOptions,\n normalizeSearchKeywordsInput,\n normalizeSearchOptions,\n printActivityJsonStream,\n printError,\n printListJsonStream,\n printResult,\n resolveActivityStreamMode,\n writeStdout,\n} from \"./registration-helpers.js\";\n\n\n\n/**\n * Documents the register list query commands options payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisterListQueryCommandsOptions {\n commandFilter?: Set<string>;\n}\n\nfunction shouldRegisterListQueryCommand(commandName: string, commandFilter?: Set<string>): boolean {\n if (!commandFilter || commandFilter.size === 0) {\n return true;\n }\n if (commandName === \"context\") {\n return commandFilter.has(\"context\") || commandFilter.has(\"ctx\");\n }\n return commandFilter.has(commandName);\n}\n\ntype ReadCommandOutputFormat = \"json\" | \"toon\";\n\ntype ListOutputFormat = \"csv\" | \"table\" | \"json\" | \"toon\";\n\n/**\n * Parses the `pm list --format` value into a supported render mode. csv/table\n * are human export modes; json/toon override the machine output format. Returns\n * undefined when no `--format` was supplied so the global output format applies.\n */\nfunction parseListFormat(rawFormat: unknown): ListOutputFormat | undefined {\n if (rawFormat === undefined) {\n return undefined;\n }\n if (typeof rawFormat !== \"string\") {\n throw new PmCliError(\"List --format must be one of csv|table|json|toon\", EXIT_CODE.USAGE);\n }\n const normalized = rawFormat.trim().toLowerCase();\n if (normalized === \"csv\" || normalized === \"table\" || normalized === \"json\" || normalized === \"toon\") {\n return normalized;\n }\n throw new PmCliError(\"List --format must be one of csv|table|json|toon\", EXIT_CODE.USAGE);\n}\n\nfunction resolveReadCommandOutputFormat(\n commandLabel: string,\n rawFormat: unknown,\n globalOptions: ReturnType<typeof getGlobalOptions>,\n): ReturnType<typeof getGlobalOptions> {\n if (rawFormat === undefined) {\n return globalOptions;\n }\n if (typeof rawFormat !== \"string\") {\n throw new PmCliError(`${commandLabel} --format must be one of json|toon`, EXIT_CODE.USAGE);\n }\n const normalized = rawFormat.trim().toLowerCase() as ReadCommandOutputFormat;\n if (normalized !== \"json\" && normalized !== \"toon\") {\n throw new PmCliError(`${commandLabel} --format must be one of json|toon`, EXIT_CODE.USAGE);\n }\n if (globalOptions.json === true && normalized === \"toon\") {\n throw new PmCliError(`${commandLabel} cannot combine --json with --format toon`, EXIT_CODE.USAGE);\n }\n return {\n ...globalOptions,\n json: normalized === \"json\",\n };\n}\n\n/**\n * Implements register list query commands for the public runtime surface of this module.\n */\nexport function registerListQueryCommands(program: Command, options?: RegisterListQueryCommandsOptions): void {\n const commandFilter = options?.commandFilter;\n const shouldRegister = (commandName: string): boolean => shouldRegisterListQueryCommand(commandName, commandFilter);\n // Register a flag and hide it from --help text while keeping it functional as\n // a parse-time alias. Used for pure snake_case underscore-duplicate aliases\n // (e.g. --assignee_filter for --assignee-filter) so they no longer bloat\n // --help output. The option still appears in command.options, so JSON help\n // and completion are unchanged.\n function addHiddenOption(command: Command, flags: string, description: string): void {\n command.addOption(new Option(flags, description).hideHelp());\n }\n\n // Register the content-field presence/absence filters (GH-242) and the\n // governance-missing filters (GH-236) on a list-family or search command.\n // Presence flags are plain booleans; absence flags use commander negation\n // (`--no-notes` stores notes=false) except `--empty-body` which is its own\n // dest so it composes with a future `--has-body`. linked_command tracks\n // whether a linked test carries a runnable command.\n function registerContentAndGovernanceFilters(command: Command): void {\n command\n .option(\"--has-notes\", \"Show only items that have notes\")\n .option(\"--has-learnings\", \"Show only items that have learnings\")\n .option(\"--has-files\", \"Show only items that have linked files\")\n .option(\"--has-docs\", \"Show only items that have linked docs\")\n .option(\"--has-tests\", \"Show only items that have linked tests\")\n .option(\"--has-comments\", \"Show only items that have comments\")\n .option(\"--has-deps\", \"Show only items that have dependencies\")\n .option(\"--has-body\", \"Show only items that have a non-empty body\")\n .option(\"--has-linked-command\", \"Show only items whose linked tests carry a runnable command\")\n .option(\"--no-notes\", \"Show only items that have no notes\")\n .option(\"--no-learnings\", \"Show only items that have no learnings\")\n .option(\"--no-files\", \"Show only items that have no linked files\")\n .option(\"--no-docs\", \"Show only items that have no linked docs\")\n .option(\"--no-tests\", \"Show only items that have no linked tests\")\n .option(\"--no-comments\", \"Show only items that have no comments\")\n .option(\"--no-deps\", \"Show only items that have no dependencies\")\n .option(\"--empty-body\", \"Show only items with an empty body\")\n .option(\"--no-linked-command\", \"Show only items whose linked tests carry no runnable command\")\n .option(\"--filter-reviewer-missing\", \"Show only items missing reviewer\")\n .option(\"--filter-risk-missing\", \"Show only items missing risk\")\n .option(\"--filter-confidence-missing\", \"Show only items missing confidence\")\n .option(\"--filter-sprint-missing\", \"Show only items missing sprint\")\n .option(\"--filter-release-missing\", \"Show only items missing release\");\n }\n\n function registerListCommand(\n name: string,\n description: string,\n status?: ItemStatus,\n excludeTerminal?: boolean,\n allowStatusFilter?: boolean,\n defaultBrief?: boolean,\n ): void {\n const command = program.command(name).description(description);\n if (allowStatusFilter) {\n command.option(\"--status <value>\", \"Filter by status (use all for no status restriction)\");\n }\n command\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .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>')\n .option(\"--updated-before <value>\", \"Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-after <value>\", \"Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-before <value>\", \"Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--ids <value>\", \"Filter by explicit item IDs (comma-separated or repeatable)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--filter-ac-missing\", \"Show only items missing acceptance_criteria\")\n .option(\"--filter-estimates-missing\", \"Show only items missing estimated_minutes\")\n .option(\"--filter-resolution-missing\", \"Show only terminal items missing resolution\")\n .option(\"--filter-metadata-missing\", \"Show only items missing any tracked metadata (AC, estimate, or resolution)\")\n .option(\"--limit <n>\", \"Limit returned item count\")\n .option(\"--offset <n>\", \"Skip the first n matching rows before limit is applied\")\n .option(\"--no-truncate\", \"Return every matched row, overriding any --limit (alias: --all)\")\n .option(\"--include-body\", \"Include item body in each returned list row\")\n .option(\"--compact\", \"Render compact list projection fields (mutually exclusive with --brief/--full/--fields)\")\n .option(\"--brief\", \"Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)\")\n .option(\"--full\", \"Render full list projection fields (mutually exclusive with --compact/--brief/--fields)\")\n .option(\n \"--fields <value>\",\n \"Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)\",\n )\n .option(\"--sort <value>\", \"Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)\")\n .option(\"--order <value>\", \"Sort order: asc|desc (requires --sort)\")\n .option(\"--tree\", \"Render rows in parent/child tree order\")\n .option(\"--tree-depth <n>\", \"Maximum recursion depth with --tree (0 keeps root rows only)\")\n .option(\"--format <value>\", \"Output render mode: csv|table (human export) or json|toon (machine output override)\")\n .option(\"--stream\", \"Emit line-delimited JSON rows (requires --json)\");\n registerContentAndGovernanceFilters(command);\n command\n .action(async (options: Record<string, unknown>, actionCommand) => {\n const globalOptions = getGlobalOptions(actionCommand);\n const startedAt = Date.now();\n const listOptions = normalizeListOptions(options);\n if (\n defaultBrief === true &&\n listOptions.includeBody !== true &&\n listOptions.compact !== true &&\n listOptions.brief !== true &&\n listOptions.full !== true &&\n listOptions.fields === undefined\n ) {\n listOptions.brief = true;\n }\n if (excludeTerminal) listOptions.excludeTerminal = true;\n const { runList } = await import(\"./commands/list.js\");\n const result = await runList(status, listOptions, globalOptions);\n const streamMode = options.stream === true;\n const listFormat = parseListFormat(options.format);\n const tabular = listFormat === \"csv\" || listFormat === \"table\";\n // json|toon reuse the shared read-command override (honours the\n // --json + --format toon conflict); csv|table are human render modes.\n const effectiveGlobal =\n listFormat === \"json\" || listFormat === \"toon\"\n ? resolveReadCommandOutputFormat(\"List\", options.format, globalOptions)\n : globalOptions;\n if (streamMode && !effectiveGlobal.json) {\n throw new PmCliError(\"--stream requires --json output mode.\", EXIT_CODE.USAGE);\n }\n if (tabular && streamMode) {\n throw new PmCliError(\"--format csv|table cannot be combined with --stream (line-delimited JSON).\", EXIT_CODE.USAGE);\n }\n if (tabular) {\n const rows = result.items as Array<Record<string, unknown>>;\n const rendered = listFormat === \"csv\" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);\n if (!effectiveGlobal.quiet && rendered.length > 0) {\n writeStdout(`${rendered}\\n`);\n }\n } else if (streamMode) {\n printListJsonStream(name, result, effectiveGlobal);\n } else {\n printResult(result, effectiveGlobal);\n }\n if (globalOptions.profile) {\n printError(`profile:command=${name} took_ms=${Date.now() - startedAt}`);\n }\n });\n // Positive alias for --no-truncate (Commander stores the negation as truncate=false).\n addHiddenOption(command, \"--all\", \"Alias for --no-truncate\");\n // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).\n addHiddenOption(command, \"--tags <value>\", \"Alias for --tag\");\n addHiddenOption(command, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n addHiddenOption(command, \"--tree_depth <n>\", \"Alias for --tree-depth\");\n // Singular alias so `--filter-estimate-missing` works (matches update-many spelling).\n addHiddenOption(command, \"--filter-estimate-missing\", \"Alias for --filter-estimates-missing\");\n }\n\n if (shouldRegister(\"list\")) {\n registerListCommand(\"list\", \"List active items with optional filters.\", undefined, true, true, true);\n }\n if (shouldRegister(\"list-all\")) {\n registerListCommand(\"list-all\", \"List all items with optional filters.\", undefined, false, true);\n }\n if (shouldRegister(\"list-draft\")) {\n registerListCommand(\"list-draft\", \"List draft items with optional filters.\", \"draft\");\n }\n if (shouldRegister(\"list-open\")) {\n registerListCommand(\"list-open\", \"List open items with optional filters.\", \"open\", false, false, true);\n }\n if (shouldRegister(\"list-in-progress\")) {\n registerListCommand(\"list-in-progress\", \"List in-progress items with optional filters.\", \"in_progress\", false, false, true);\n }\n if (shouldRegister(\"list-blocked\")) {\n registerListCommand(\"list-blocked\", \"List blocked items with optional filters.\", \"blocked\", false, false, true);\n }\n if (shouldRegister(\"list-closed\")) {\n registerListCommand(\"list-closed\", \"List closed items with optional filters.\", \"closed\");\n }\n if (shouldRegister(\"list-canceled\")) {\n registerListCommand(\"list-canceled\", \"List canceled items with optional filters.\", \"canceled\");\n }\n\n if (shouldRegister(\"aggregate\")) {\n const aggregateCommand = program\n .command(\"aggregate\")\n .description(\"Aggregate grouped item counts for governance queries.\")\n .option(\n \"--group-by <value>\",\n \"Comma-separated group-by fields (supported: parent,type,priority,status,assignee,tags,sprint,release)\",\n )\n .option(\"--count\", \"Return grouped counts (default behavior)\")\n .option(\"--completion\", \"Add open/in_progress/closed/other counts and completion_pct per group\")\n .option(\"--sum <field>\", \"Sum a numeric field per group\")\n .option(\"--avg <field>\", \"Average a numeric field per group\")\n .option(\"--include-unparented\", \"Include unparented rows when grouping by parent\")\n .option(\"--status <value>\", \"Filter by item status\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\");\n // Hidden pure snake_case underscore-duplicate aliases (kept parse-functional).\n addHiddenOption(aggregateCommand, \"--include_unparented\", \"Alias for --include-unparented\");\n addHiddenOption(aggregateCommand, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n aggregateCommand\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runAggregate } = await import(\"./commands/aggregate.js\");\n const result = await runAggregate(normalizeAggregateOptions(options), globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=aggregate took_ms=${Date.now() - startedAt}`);\n }\n });\n }\n\n if (shouldRegister(\"context\")) {\n const contextCommand = program\n .command(\"context\")\n .alias(\"ctx\")\n .description(\"Show a token-efficient project context snapshot for next-work decisions.\")\n .option(\"--date <value>\", \"Anchor date/time for agenda window calculations (ISO/date string or relative)\")\n .option(\"--from <value>\", \"Agenda lower bound (ISO/date string or relative)\")\n .option(\"--to <value>\", \"Agenda upper bound (ISO/date string or relative)\")\n .option(\"--past\", \"Include past agenda entries in bounded windows\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--parent <id>\", \"Scope the snapshot to one item's subtree (the item plus all descendants)\")\n .option(\"--limit <n>\", \"Limit focus and agenda rows per section\")\n .option(\"--format <value>\", \"Context output format override: markdown|toon|json\")\n .option(\"--depth <value>\", \"Context depth: brief|standard|deep|full (full = every section, no per-section cap)\")\n .option(\"--section <value...>\", \"Include specific sections (repeatable; overrides --depth)\")\n .option(\"--fields <value>\", \"Project focus rows to a comma-separated field subset (e.g. id,title,priority)\")\n .option(\"--activity-limit <n>\", \"Limit recent activity entries (default: settings or 10)\")\n .option(\"--stale-threshold <value>\", \"Staleness cutoff in days (e.g. 7 or 7d; default: settings or 7)\");\n // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).\n addHiddenOption(contextCommand, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n contextCommand\n .action(async (options: Record<string, unknown>, actionCommand) => {\n const globalOptions = getGlobalOptions(actionCommand);\n const startedAt = Date.now();\n const normalized = normalizeContextOptions(options);\n const commands = await import(\"./commands/context.js\");\n const result = await commands.runContext(normalized, globalOptions);\n const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);\n if (outputFormat === \"markdown\") {\n if (!globalOptions.quiet) {\n writeStdout(`${commands.renderContextMarkdown(result)}\\n`);\n }\n } else {\n printResult(result, {\n ...globalOptions,\n json: outputFormat === \"json\",\n });\n }\n if (globalOptions.profile) {\n printError(`profile:command=context took_ms=${Date.now() - startedAt}`);\n }\n });\n }\n\n if (shouldRegister(\"search\")) {\n const searchCommand = program\n .command(\"search\")\n .argument(\"<keywords...>\", \"Keyword query tokens\")\n .description(\n \"Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens \" +\n \"(tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.\",\n )\n .option(\"--mode <value>\", \"Search mode: keyword|semantic|hybrid (default: keyword)\")\n .option(\"--semantic\", \"Shorthand for --mode semantic\")\n .option(\"--hybrid\", \"Shorthand for --mode hybrid\")\n .option(\n \"--match-mode <value>\",\n \"Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)\",\n )\n .option(\n \"--min-score <value>\",\n \"Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only\",\n )\n .option(\"--count\", \"Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows\")\n .option(\n \"--semantic-weight <value>\",\n \"Override hybrid semantic weight for this query (0..1); invalid values fall back to settings\",\n )\n .option(\"--include-linked\", \"Include linked files, docs, and tests in the searchable corpus\")\n .option(\"--title-exact\", \"Require exact normalized title match for the full query string\")\n .option(\"--phrase-exact\", \"Require exact normalized phrase match in searchable text\")\n .option(\"--highlight\", \"Emit per-field matched-text snippets (wrapped in «…») on each hit; off by default\")\n .option(\"--status <value>\", \"Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .option(\"--updated-after <value>\", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. \"-2h\"/\"-7d\" for the past)')\n .option(\"--updated-before <value>\", \"Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-after <value>\", \"Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-before <value>\", \"Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--compact\", \"Render compact search hits (default; mutually exclusive with --full/--fields)\")\n .option(\"--full\", \"Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)\")\n .option(\n \"--fields <value>\",\n \"Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)\",\n )\n .option(\"--format <value>\", \"Search output format override: json|toon\")\n .option(\"--limit <n>\", \"Limit returned item count\");\n registerContentAndGovernanceFilters(searchCommand);\n searchCommand\n .action(async (keywords: string[], options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runSearch } = await import(\"./commands/search.js\");\n const searchOptions = normalizeSearchOptions(options);\n const result = await runSearch(\n normalizeSearchKeywordsInput(keywords),\n {\n ...searchOptions,\n mode:\n typeof searchOptions.mode === \"string\" && searchOptions.mode.trim().length > 0\n ? searchOptions.mode\n : \"keyword\",\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"Search\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=search took_ms=${Date.now() - startedAt}`);\n }\n });\n addHiddenOption(searchCommand, \"--tags <value>\", \"Alias for --tag\");\n }\n\n if (shouldRegister(\"eval\")) {\n program\n .command(\"eval\")\n .description(\n \"Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, \" +\n \"precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.\",\n )\n .option(\"--mode <value>\", \"Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)\")\n .option(\"--k <n>\", \"Metric cutoff @k (positive integer; default: 10)\")\n .option(\"--fail-under <value>\", \"Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate\")\n .option(\"--queries <path>\", \"Path to the golden-query JSON file (default: <pmRoot>/search/eval-queries.json)\")\n .option(\"--format <value>\", \"Eval output format override: json|toon\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runEval } = await import(\"./commands/eval.js\");\n const result = await runEval(\n {\n mode: typeof options.mode === \"string\" ? options.mode : undefined,\n k: typeof options.k === \"string\" ? options.k : undefined,\n failUnder: typeof options.failUnder === \"string\" ? options.failUnder : undefined,\n queries: typeof options.queries === \"string\" ? options.queries : undefined,\n format: typeof options.format === \"string\" ? options.format : undefined,\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"Eval\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);\n }\n if (!result.passed) {\n throw new PmCliError(\n `Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n });\n }\n\n if (shouldRegister(\"get\")) {\n const getCommand = program\n .command(\"get\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--depth <value>\", \"Detail depth: brief|standard|deep|full (full aliases deep; default: standard)\")\n .option(\"--full\", \"Explicit full item read; equivalent to --depth deep (mutually exclusive with --depth/--fields)\")\n .option(\"--fields <value>\", \"Render custom comma-separated item metadata fields (for example: --fields id,title,status,parent,type)\")\n .option(\"--tree\", \"Include descendants rooted at the requested item\")\n .option(\"--tree-depth <n>\", \"Maximum subtree depth for --tree descendants\")\n .option(\"--format <value>\", \"Get output format override: json|toon\")\n .description(\"Show item details by ID.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runGet } = await import(\"./commands/get.js\");\n const result = await runGet(\n id,\n globalOptions,\n {\n depth: typeof options.depth === \"string\" ? options.depth : undefined,\n fields: typeof options.fields === \"string\" ? options.fields : undefined,\n full: Boolean(options.full),\n tree: options.tree === true,\n treeDepth:\n typeof options.treeDepth === \"string\"\n ? options.treeDepth\n : typeof options.tree_depth === \"string\"\n ? options.tree_depth\n : undefined,\n },\n );\n printResult(result, resolveReadCommandOutputFormat(\"Get\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=get took_ms=${Date.now() - startedAt}`);\n }\n });\n addHiddenOption(getCommand, \"--tree_depth <n>\", \"Alias for --tree-depth\");\n }\n\n if (shouldRegister(\"history\")) {\n program\n .command(\"history\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--limit <n>\", \"Return only the latest n history entries\")\n .option(\"--compact\", \"Condensed output: show entry index, timestamp, op, author, patch count, and changed fields\")\n .option(\"--full\", \"Show full history entries with JSON Patch payloads\")\n .option(\"--diff\", \"Include per-entry field-level before/after value diffs computed by replaying the history chain\")\n .option(\"--field <name>\", \"With --diff, show only entries that changed this field (implies --diff)\")\n .option(\"--verify\", \"Verify hash chain and replay integrity for the full history stream\")\n .option(\"--format <value>\", \"History output format override: json|toon\")\n .description(\"Show item history entries.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n if (options.compact === true && options.full === true) {\n throw new PmCliError(\"History projection options are mutually exclusive. Use either --compact or --full.\", EXIT_CODE.USAGE);\n }\n const field = typeof options.field === \"string\" ? options.field : undefined;\n const { runHistory } = await import(\"./commands/history.js\");\n const result = await runHistory(\n id,\n {\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n compact: options.full === true ? false : true,\n diff: Boolean(options.diff) || field !== undefined,\n field,\n verify: Boolean(options.verify),\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"History\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=history took_ms=${Date.now() - startedAt}`);\n }\n });\n }\n\n if (shouldRegister(\"activity\")) {\n program\n .command(\"activity\")\n .option(\"--id <value>\", \"Filter by item ID\")\n .option(\"--op <value>\", \"Filter by history operation\")\n .option(\"--author <value>\", \"Filter by history author\")\n .option(\"--from <value>\", \"Lower timestamp bound (ISO/date string or relative)\")\n .option(\"--to <value>\", \"Upper timestamp bound (ISO/date string or relative)\")\n .option(\"--limit <n>\", \"Return only the latest n activity entries\")\n .option(\"--compact\", \"Condensed output: show only id, op, ts, author, msg per entry\")\n .option(\"--full\", \"Show full activity entries with JSON Patch payloads\")\n .option(\"--stream [mode]\", \"Emit line-delimited JSON rows (requires --json). Optional mode: rows|ndjson|jsonl\")\n .description(\"Show recent activity across items.\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n if (options.compact === true && options.full === true) {\n throw new PmCliError(\"Activity projection options are mutually exclusive. Use either --compact or --full.\", EXIT_CODE.USAGE);\n }\n const normalized = normalizeActivityOptions(options);\n const { runActivity } = await import(\"./commands/activity.js\");\n const result = await runActivity(normalized, globalOptions);\n const streamMode = resolveActivityStreamMode(options.stream);\n if (streamMode && !globalOptions.json) {\n throw new PmCliError(\"--stream requires --json output mode.\", EXIT_CODE.USAGE);\n }\n if (streamMode) {\n printActivityJsonStream(result, normalized, globalOptions);\n } else {\n printResult(result, globalOptions);\n }\n if (globalOptions.profile) {\n printError(`profile:command=activity took_ms=${Date.now() - startedAt}`);\n }\n });\n }\n}\n\nexport const _testOnlyRegisterListQuery = {\n resolveReadCommandOutputFormat,\n parseListFormat,\n};\n", "/**\n * @module core/output/tabular\n *\n * Renders projected item rows as CSV or fixed-width text tables for human\n * export. These are presentation-only modes (GH-154): agents continue to read\n * the structured `--json`/TOON output, while humans piping `pm list` into a\n * spreadsheet or terminal get a directly consumable shape.\n */\n\n/** A projected row: a flat map of column name to scalar/collection cell value. */\nexport type TabularRow = Record<string, unknown>;\n\n/**\n * Collects the ordered union of column names across every row, preserving the\n * order in which each key is first encountered so the rendered columns mirror\n * the projection field order rather than an arbitrary object-key order.\n */\nfunction resolveColumns(rows: TabularRow[]): string[] {\n const columns: string[] = [];\n const seen = new Set<string>();\n for (const row of rows) {\n for (const key of Object.keys(row)) {\n if (!seen.has(key)) {\n seen.add(key);\n columns.push(key);\n }\n }\n }\n return columns;\n}\n\n/**\n * Converts a single cell value to its flat string form. Arrays join with `;`\n * (spreadsheet-friendly and unambiguous against the CSV `,` delimiter), objects\n * serialize to compact JSON, and null/undefined render as an empty cell.\n */\nfunction renderCell(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (Array.isArray(value)) {\n return value.map((entry) => renderCell(entry)).join(\";\");\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n\n/**\n * Escapes a CSV field per RFC 4180: values containing the delimiter, a quote,\n * or a line break are wrapped in double quotes with embedded quotes doubled.\n */\nfunction escapeCsvField(value: string): string {\n if (/[\",\\r\\n]/.test(value)) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n}\n\n/**\n * Renders rows as RFC 4180 CSV with a header row of column names. Returns an\n * empty string when there are no rows so callers emit nothing rather than a\n * stray blank line.\n */\nexport function renderRowsAsCsv(rows: TabularRow[]): string {\n if (rows.length === 0) {\n return \"\";\n }\n const columns = resolveColumns(rows);\n const lines = [columns.map((column) => escapeCsvField(column)).join(\",\")];\n for (const row of rows) {\n lines.push(columns.map((column) => escapeCsvField(renderCell(row[column]))).join(\",\"));\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Renders rows as a fixed-width text table: a header row, a dashed separator,\n * and one padded row per item. Columns are widened to fit their widest cell so\n * the output stays aligned in a monospace terminal. Returns an empty string\n * when there are no rows.\n */\nexport function renderRowsAsTable(rows: TabularRow[]): string {\n if (rows.length === 0) {\n return \"\";\n }\n const columns = resolveColumns(rows);\n const cells = rows.map((row) => columns.map((column) => renderCell(row[column])));\n const widths = columns.map((column, index) =>\n Math.max(column.length, ...cells.map((rowCells) => rowCells[index].length)),\n );\n const pad = (value: string, index: number): string => value.padEnd(widths[index]);\n const lines = [columns.map((column, index) => pad(column, index)).join(\" | \")];\n lines.push(widths.map((width) => \"-\".repeat(width)).join(\"-+-\"));\n for (const rowCells of cells) {\n lines.push(rowCells.map((value, index) => pad(value, index)).join(\" | \"));\n }\n return lines.join(\"\\n\");\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["options"]
7
+ }
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f966b797-e3cf-577c-8aa9-8a316b78746a")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6f41e751-01a6-5b05-b5c1-cf00e0a63cc3")}catch(e){}}();
3
3
  import {
4
4
  getGlobalOptions,
5
5
  normalizeActivityOptions,
@@ -11,23 +11,23 @@ import {
11
11
  printActivityJsonStream,
12
12
  printListJsonStream,
13
13
  resolveActivityStreamMode
14
- } from "./chunk-DJ3YYLHG.js";
15
- import "./chunk-DVUU3AHP.js";
16
- import "./chunk-QCHNPN24.js";
14
+ } from "./chunk-FA5O2DEG.js";
15
+ import "./chunk-MFCFHL27.js";
16
+ import "./chunk-4YMX7XFI.js";
17
17
  import {
18
18
  printError,
19
19
  printResult,
20
20
  writeStdout
21
- } from "./chunk-2E3KSWFG.js";
22
- import "./chunk-GL3QKIET.js";
23
- import "./chunk-22YA6GCA.js";
24
- import "./chunk-EMFDZ7N3.js";
25
- import "./chunk-BQVESTOG.js";
26
- import "./chunk-5P2LQV2F.js";
21
+ } from "./chunk-F4EYOSNC.js";
22
+ import "./chunk-XKJDCJEH.js";
23
+ import "./chunk-K2LBDYDC.js";
24
+ import "./chunk-FSOJCFDS.js";
25
+ import "./chunk-KCJZREBI.js";
26
+ import "./chunk-MTQK5ZSB.js";
27
27
  import {
28
28
  EXIT_CODE,
29
29
  PmCliError
30
- } from "./chunk-I2VJM36R.js";
30
+ } from "./chunk-AZ75OVK4.js";
31
31
 
32
32
  // dist/cli/register-list-query.js
33
33
  import { Option } from "commander";
@@ -145,7 +145,7 @@ function registerListQueryCommands(program, options) {
145
145
  function registerListCommand(name, description, status, excludeTerminal, allowStatusFilter, defaultBrief) {
146
146
  const command = program.command(name).description(description);
147
147
  if (allowStatusFilter) {
148
- command.option("--status <value>", "Filter by status");
148
+ command.option("--status <value>", "Filter by status (use all for no status restriction)");
149
149
  }
150
150
  command.option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").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" \u2192 --updated-after <ISO>').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--ids <value>", "Filter by explicit item IDs (comma-separated or repeatable)").option("--assignee <value>", "Filter by assignee").option("--assignee-filter <value>", "Filter assignee presence: assigned|unassigned").option("--parent <value>", "Filter by parent item ID").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--filter-ac-missing", "Show only items missing acceptance_criteria").option("--filter-estimates-missing", "Show only items missing estimated_minutes").option("--filter-resolution-missing", "Show only terminal items missing resolution").option("--filter-metadata-missing", "Show only items missing any tracked metadata (AC, estimate, or resolution)").option("--limit <n>", "Limit returned item count").option("--offset <n>", "Skip the first n matching rows before limit is applied").option("--no-truncate", "Return every matched row, overriding any --limit (alias: --all)").option("--include-body", "Include item body in each returned list row").option("--compact", "Render compact list projection fields (mutually exclusive with --brief/--full/--fields)").option("--brief", "Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)").option("--full", "Render full list projection fields (mutually exclusive with --compact/--brief/--fields)").option("--fields <value>", "Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)").option("--sort <value>", "Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)").option("--order <value>", "Sort order: asc|desc (requires --sort)").option("--tree", "Render rows in parent/child tree order").option("--tree-depth <n>", "Maximum recursion depth with --tree (0 keeps root rows only)").option("--format <value>", "Output render mode: csv|table (human export) or json|toon (machine output override)").option("--stream", "Emit line-delimited JSON rows (requires --json)");
151
151
  registerContentAndGovernanceFilters(command);
@@ -158,7 +158,7 @@ function registerListQueryCommands(program, options) {
158
158
  }
159
159
  if (excludeTerminal)
160
160
  listOptions.excludeTerminal = true;
161
- const { runList } = await import("./list-LJ5DBXC3.js");
161
+ const { runList } = await import("./list-MZBCSKLU.js");
162
162
  const result = await runList(status, listOptions, globalOptions);
163
163
  const streamMode = options2.stream === true;
164
164
  const listFormat = parseListFormat(options2.format);
@@ -223,7 +223,7 @@ function registerListQueryCommands(program, options) {
223
223
  aggregateCommand.action(async (options2, command) => {
224
224
  const globalOptions = getGlobalOptions(command);
225
225
  const startedAt = Date.now();
226
- const { runAggregate } = await import("./aggregate-OFT4YVB6.js");
226
+ const { runAggregate } = await import("./aggregate-5BTHOHW2.js");
227
227
  const result = await runAggregate(normalizeAggregateOptions(options2), globalOptions);
228
228
  printResult(result, globalOptions);
229
229
  if (globalOptions.profile) {
@@ -238,7 +238,7 @@ function registerListQueryCommands(program, options) {
238
238
  const globalOptions = getGlobalOptions(actionCommand);
239
239
  const startedAt = Date.now();
240
240
  const normalized = normalizeContextOptions(options2);
241
- const commands = await import("./context-EGUGU4K7.js");
241
+ const commands = await import("./context-A46YAV2F.js");
242
242
  const result = await commands.runContext(normalized, globalOptions);
243
243
  const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);
244
244
  if (outputFormat === "markdown") {
@@ -258,12 +258,12 @@ function registerListQueryCommands(program, options) {
258
258
  });
259
259
  }
260
260
  if (shouldRegister("search")) {
261
- const searchCommand = program.command("search").argument("<keywords...>", "Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--mode <value>", "Search mode: keyword|semantic|hybrid (default: keyword)").option("--semantic", "Shorthand for --mode semantic").option("--hybrid", "Shorthand for --mode hybrid").option("--match-mode <value>", "Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>", "Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count", "Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>", "Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked", "Include linked files, docs, and tests in the searchable corpus").option("--title-exact", "Require exact normalized title match for the full query string").option("--phrase-exact", "Require exact normalized phrase match in searchable text").option("--highlight", "Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>", "Filter by status before query (open/closed/canceled aliases or configured status id; CSV)").option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>", "Filter by assignee").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--parent <value>", "Filter by parent item ID").option("--compact", "Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full", "Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>", "Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)").option("--format <value>", "Search output format override: json|toon").option("--limit <n>", "Limit returned item count");
261
+ const searchCommand = program.command("search").argument("<keywords...>", "Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--mode <value>", "Search mode: keyword|semantic|hybrid (default: keyword)").option("--semantic", "Shorthand for --mode semantic").option("--hybrid", "Shorthand for --mode hybrid").option("--match-mode <value>", "Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>", "Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count", "Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>", "Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked", "Include linked files, docs, and tests in the searchable corpus").option("--title-exact", "Require exact normalized title match for the full query string").option("--phrase-exact", "Require exact normalized phrase match in searchable text").option("--highlight", "Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>", "Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)").option("--type <value>", "Filter by item type").option("--tag <value>", "Filter by tag").option("--priority <value>", "Filter by priority").option("--deadline-before <value>", "Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>", "Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>", "Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>", "Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>", "Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>", "Filter by assignee").option("--sprint <value>", "Filter by sprint").option("--release <value>", "Filter by release").option("--parent <value>", "Filter by parent item ID").option("--compact", "Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full", "Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>", "Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)").option("--format <value>", "Search output format override: json|toon").option("--limit <n>", "Limit returned item count");
262
262
  registerContentAndGovernanceFilters(searchCommand);
263
263
  searchCommand.action(async (keywords, options2, command) => {
264
264
  const globalOptions = getGlobalOptions(command);
265
265
  const startedAt = Date.now();
266
- const { runSearch } = await import("./search-2JX776KX.js");
266
+ const { runSearch } = await import("./search-UAIHEQZL.js");
267
267
  const searchOptions = normalizeSearchOptions(options2);
268
268
  const result = await runSearch(normalizeSearchKeywordsInput(keywords), {
269
269
  ...searchOptions,
@@ -276,11 +276,32 @@ function registerListQueryCommands(program, options) {
276
276
  });
277
277
  addHiddenOption(searchCommand, "--tags <value>", "Alias for --tag");
278
278
  }
279
+ if (shouldRegister("eval")) {
280
+ program.command("eval").description("Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.").option("--mode <value>", "Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)").option("--k <n>", "Metric cutoff @k (positive integer; default: 10)").option("--fail-under <value>", "Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate").option("--queries <path>", "Path to the golden-query JSON file (default: <pmRoot>/search/eval-queries.json)").option("--format <value>", "Eval output format override: json|toon").action(async (options2, command) => {
281
+ const globalOptions = getGlobalOptions(command);
282
+ const startedAt = Date.now();
283
+ const { runEval } = await import("./eval-FRIDCTM2.js");
284
+ const result = await runEval({
285
+ mode: typeof options2.mode === "string" ? options2.mode : void 0,
286
+ k: typeof options2.k === "string" ? options2.k : void 0,
287
+ failUnder: typeof options2.failUnder === "string" ? options2.failUnder : void 0,
288
+ queries: typeof options2.queries === "string" ? options2.queries : void 0,
289
+ format: typeof options2.format === "string" ? options2.format : void 0
290
+ }, globalOptions);
291
+ printResult(result, resolveReadCommandOutputFormat("Eval", options2.format, globalOptions));
292
+ if (globalOptions.profile) {
293
+ printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);
294
+ }
295
+ if (!result.passed) {
296
+ throw new PmCliError(`Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`, EXIT_CODE.GENERIC_FAILURE);
297
+ }
298
+ });
299
+ }
279
300
  if (shouldRegister("get")) {
280
301
  const getCommand = program.command("get").argument("<id>", "Item id").option("--depth <value>", "Detail depth: brief|standard|deep|full (full aliases deep; default: standard)").option("--full", "Explicit full item read; equivalent to --depth deep (mutually exclusive with --depth/--fields)").option("--fields <value>", "Render custom comma-separated item metadata fields (for example: --fields id,title,status,parent,type)").option("--tree", "Include descendants rooted at the requested item").option("--tree-depth <n>", "Maximum subtree depth for --tree descendants").option("--format <value>", "Get output format override: json|toon").description("Show item details by ID.").action(async (id, options2, command) => {
281
302
  const globalOptions = getGlobalOptions(command);
282
303
  const startedAt = Date.now();
283
- const { runGet } = await import("./get-IWZ7IMPS.js");
304
+ const { runGet } = await import("./get-LLFWSPXW.js");
284
305
  const result = await runGet(id, globalOptions, {
285
306
  depth: typeof options2.depth === "string" ? options2.depth : void 0,
286
307
  fields: typeof options2.fields === "string" ? options2.fields : void 0,
@@ -303,7 +324,7 @@ function registerListQueryCommands(program, options) {
303
324
  throw new PmCliError("History projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
304
325
  }
305
326
  const field = typeof options2.field === "string" ? options2.field : void 0;
306
- const { runHistory } = await import("./history-HNWBUDMI.js");
327
+ const { runHistory } = await import("./history-4FJK6Y3O.js");
307
328
  const result = await runHistory(id, {
308
329
  limit: typeof options2.limit === "string" ? options2.limit : void 0,
309
330
  compact: options2.full === true ? false : true,
@@ -325,7 +346,7 @@ function registerListQueryCommands(program, options) {
325
346
  throw new PmCliError("Activity projection options are mutually exclusive. Use either --compact or --full.", EXIT_CODE.USAGE);
326
347
  }
327
348
  const normalized = normalizeActivityOptions(options2);
328
- const { runActivity } = await import("./activity-XJ7WRNWS.js");
349
+ const { runActivity } = await import("./activity-KEEITOTB.js");
329
350
  const result = await runActivity(normalized, globalOptions);
330
351
  const streamMode = resolveActivityStreamMode(options2.stream);
331
352
  if (streamMode && !globalOptions.json) {
@@ -350,6 +371,6 @@ export {
350
371
  _testOnlyRegisterListQuery,
351
372
  registerListQueryCommands
352
373
  };
353
- //# sourceMappingURL=register-list-query-XDLFESU7.js.map
374
+ //# sourceMappingURL=register-list-query-CM4SVAQA.js.map
354
375
 
355
- //# debugId=f966b797-e3cf-577c-8aa9-8a316b78746a
376
+ //# debugId=6f41e751-01a6-5b05-b5c1-cf00e0a63cc3