@unbrained/pm-cli 2026.7.4 → 2026.7.5

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 (601) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -5
  3. package/dist/cli/commands/calendar.d.ts +3 -2
  4. package/dist/cli/commands/calendar.js +4 -4
  5. package/dist/cli/commands/calendar.js.map +1 -1
  6. package/dist/cli/commands/claim.js +17 -3
  7. package/dist/cli/commands/claim.js.map +1 -1
  8. package/dist/cli/commands/close.js +34 -16
  9. package/dist/cli/commands/close.js.map +1 -1
  10. package/dist/cli/commands/copy.js +3 -3
  11. package/dist/cli/commands/copy.js.map +1 -1
  12. package/dist/cli/commands/create.d.ts +7 -0
  13. package/dist/cli/commands/create.js +156 -110
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
  16. package/dist/cli/commands/extension/bundled-catalog.js +15 -2
  17. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  18. package/dist/cli/commands/extension/describe.d.ts +6 -3
  19. package/dist/cli/commands/extension/describe.js +21 -9
  20. package/dist/cli/commands/extension/describe.js.map +1 -1
  21. package/dist/cli/commands/extension/doctor.d.ts +0 -4
  22. package/dist/cli/commands/extension/doctor.js +3 -3
  23. package/dist/cli/commands/extension/doctor.js.map +1 -1
  24. package/dist/cli/commands/extension/scaffold.js +7 -2
  25. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  26. package/dist/cli/commands/extension/shared.d.ts +2 -7
  27. package/dist/cli/commands/extension/shared.js +4 -10
  28. package/dist/cli/commands/extension/shared.js.map +1 -1
  29. package/dist/cli/commands/extension.js +33 -8
  30. package/dist/cli/commands/extension.js.map +1 -1
  31. package/dist/cli/commands/profile.js +3 -3
  32. package/dist/cli/commands/profile.js.map +1 -1
  33. package/dist/cli/commands/reindex.js +3 -3
  34. package/dist/cli/commands/reindex.js.map +1 -1
  35. package/dist/cli/commands/restore.js +3 -3
  36. package/dist/cli/commands/restore.js.map +1 -1
  37. package/dist/cli/commands/schema.js +10 -10
  38. package/dist/cli/commands/schema.js.map +1 -1
  39. package/dist/cli/commands/update.js +5 -3
  40. package/dist/cli/commands/update.js.map +1 -1
  41. package/dist/cli/error-guidance.js +107 -7
  42. package/dist/cli/error-guidance.js.map +1 -1
  43. package/dist/cli/main.d.ts +6 -2
  44. package/dist/cli/main.js +33 -12
  45. package/dist/cli/main.js.map +1 -1
  46. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
  47. package/dist/cli-bundle/chunks/{activity-OENQCYZD.js → activity-YKAKZTZ4.js} +11 -9
  48. package/dist/cli-bundle/chunks/{aggregate-EC4LWS3U.js → aggregate-EQX2RGB7.js} +16 -13
  49. package/dist/cli-bundle/chunks/{aggregate-EC4LWS3U.js.map → aggregate-EQX2RGB7.js.map} +1 -1
  50. package/dist/cli-bundle/chunks/{aggregate-RCB3QJJE.js → aggregate-PEGZGJXD.js} +18 -15
  51. package/dist/cli-bundle/chunks/{aggregate-RCB3QJJE.js.map → aggregate-PEGZGJXD.js.map} +1 -1
  52. package/dist/cli-bundle/chunks/{append-XLEKVVWB.js → append-CZGUZ45Q.js} +11 -8
  53. package/dist/cli-bundle/chunks/{append-XLEKVVWB.js.map → append-CZGUZ45Q.js.map} +1 -1
  54. package/dist/cli-bundle/chunks/{append-ADBOI3A6.js → append-NSQBCXZJ.js} +13 -10
  55. package/dist/cli-bundle/chunks/{append-ADBOI3A6.js.map → append-NSQBCXZJ.js.map} +1 -1
  56. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
  57. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
  58. package/dist/cli-bundle/chunks/{chunk-2LRMWMZ6.js → chunk-3PL6LEKP.js} +16 -14
  59. package/dist/cli-bundle/chunks/{chunk-2LRMWMZ6.js.map → chunk-3PL6LEKP.js.map} +1 -1
  60. package/dist/cli-bundle/chunks/{chunk-CN4OAA2G.js → chunk-3U3VEWK6.js} +277 -119
  61. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
  62. package/dist/cli-bundle/chunks/{chunk-EB4BBEZD.js → chunk-3Y4OESPP.js} +14 -12
  63. package/dist/cli-bundle/chunks/{chunk-EB4BBEZD.js.map → chunk-3Y4OESPP.js.map} +1 -1
  64. package/dist/cli-bundle/chunks/{chunk-NHDR3UCW.js → chunk-4LRVSBO6.js} +14 -12
  65. package/dist/cli-bundle/chunks/{chunk-NHDR3UCW.js.map → chunk-4LRVSBO6.js.map} +1 -1
  66. package/dist/cli-bundle/chunks/{chunk-6YB7HG2J.js → chunk-4OFLJHX6.js} +7 -5
  67. package/dist/cli-bundle/chunks/{chunk-6YB7HG2J.js.map → chunk-4OFLJHX6.js.map} +1 -1
  68. package/dist/cli-bundle/chunks/{chunk-SBNT6SLO.js → chunk-4QQ6PM7M.js} +45 -557
  69. package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
  70. package/dist/cli-bundle/chunks/{chunk-M34MVAOP.js → chunk-53BTLLAF.js} +16 -200
  71. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
  72. package/dist/cli-bundle/chunks/{chunk-UYLA5ROU.js → chunk-57C2RLW5.js} +277 -112
  73. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
  74. package/dist/cli-bundle/chunks/{chunk-R7EMP4JG.js → chunk-5B3X4Y22.js} +52 -63
  75. package/dist/cli-bundle/chunks/{chunk-R7EMP4JG.js.map → chunk-5B3X4Y22.js.map} +3 -3
  76. package/dist/cli-bundle/chunks/{chunk-XBIYI23P.js → chunk-5J2XPTAD.js} +10 -8
  77. package/dist/cli-bundle/chunks/{chunk-XBIYI23P.js.map → chunk-5J2XPTAD.js.map} +1 -1
  78. package/dist/cli-bundle/chunks/{chunk-4SHME4VR.js → chunk-5JE6SMYS.js} +2 -2
  79. package/dist/cli-bundle/chunks/{chunk-4KPQQ42D.js → chunk-5JZ7APJU.js} +18 -16
  80. package/dist/cli-bundle/chunks/{chunk-4KPQQ42D.js.map → chunk-5JZ7APJU.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{chunk-BDDYM4LH.js → chunk-5VVUKE3U.js} +424 -2228
  82. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
  83. package/dist/cli-bundle/chunks/{chunk-QFXFKYNQ.js → chunk-75U6M5ZD.js} +16 -14
  84. package/dist/cli-bundle/chunks/{chunk-QFXFKYNQ.js.map → chunk-75U6M5ZD.js.map} +1 -1
  85. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
  86. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
  87. package/dist/cli-bundle/chunks/{chunk-A222YWOQ.js → chunk-7EQNAZX2.js} +14 -12
  88. package/dist/cli-bundle/chunks/{chunk-A222YWOQ.js.map → chunk-7EQNAZX2.js.map} +1 -1
  89. package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
  90. package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
  91. package/dist/cli-bundle/chunks/{chunk-EH23N5FX.js → chunk-7MDXZAZS.js} +29 -7
  92. package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{chunk-XQCWTSLO.js → chunk-7QH7DHUB.js} +74 -8
  94. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
  95. package/dist/cli-bundle/chunks/{chunk-3C5T3ZEO.js → chunk-7WYXBPYQ.js} +7 -5
  96. package/dist/cli-bundle/chunks/{chunk-3C5T3ZEO.js.map → chunk-7WYXBPYQ.js.map} +1 -1
  97. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
  98. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-CQISNF3Z.js → chunk-ABRA3BHY.js} +18 -16
  100. package/dist/cli-bundle/chunks/{chunk-CQISNF3Z.js.map → chunk-ABRA3BHY.js.map} +2 -2
  101. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
  102. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
  103. package/dist/cli-bundle/chunks/{chunk-Y2VSCQ77.js → chunk-BFVHCAOO.js} +9 -7
  104. package/dist/cli-bundle/chunks/{chunk-Y2VSCQ77.js.map → chunk-BFVHCAOO.js.map} +1 -1
  105. package/dist/cli-bundle/chunks/{chunk-7ITQSEBL.js → chunk-BVEUCSH2.js} +6 -4
  106. package/dist/cli-bundle/chunks/{chunk-7ITQSEBL.js.map → chunk-BVEUCSH2.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
  108. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
  109. package/dist/cli-bundle/chunks/{chunk-HL742IBM.js → chunk-D3UCE7RW.js} +7 -5
  110. package/dist/cli-bundle/chunks/{chunk-HL742IBM.js.map → chunk-D3UCE7RW.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
  112. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
  113. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
  114. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-MZG6I2Q2.js → chunk-DRBV5UC2.js} +8 -23
  116. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-DEIDJQZK.js → chunk-E2FUG6GD.js} +15 -220
  118. package/dist/cli-bundle/chunks/{chunk-DEIDJQZK.js.map → chunk-E2FUG6GD.js.map} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-3MLQZI3H.js → chunk-EEY54JMF.js} +5 -3
  120. package/dist/cli-bundle/chunks/{chunk-3MLQZI3H.js.map → chunk-EEY54JMF.js.map} +1 -1
  121. package/dist/cli-bundle/chunks/{chunk-CQFZRLXQ.js → chunk-EZFKWSC7.js} +94 -16
  122. package/dist/cli-bundle/chunks/{chunk-CQFZRLXQ.js.map → chunk-EZFKWSC7.js.map} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-4PJYRA3V.js → chunk-FDBARR33.js} +17 -15
  124. package/dist/cli-bundle/chunks/{chunk-4PJYRA3V.js.map → chunk-FDBARR33.js.map} +2 -2
  125. package/dist/cli-bundle/chunks/{chunk-NGDK3KEZ.js → chunk-FGQKEDE4.js} +36 -12
  126. package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
  127. package/dist/cli-bundle/chunks/{chunk-FMWQRMHS.js → chunk-FJRKQREY.js} +10 -18
  128. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-6QY2NA2M.js → chunk-FUM6UMY4.js} +10 -11
  130. package/dist/cli-bundle/chunks/{chunk-6QY2NA2M.js.map → chunk-FUM6UMY4.js.map} +1 -1
  131. package/dist/cli-bundle/chunks/{chunk-UGDONITK.js → chunk-GIWXVMZ3.js} +140 -334
  132. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
  133. package/dist/cli-bundle/chunks/{chunk-OTSP6UEX.js → chunk-HBYZDSK5.js} +19 -17
  134. package/dist/cli-bundle/chunks/{chunk-OTSP6UEX.js.map → chunk-HBYZDSK5.js.map} +1 -1
  135. package/dist/cli-bundle/chunks/{chunk-D2LDM35X.js → chunk-HJE4JTKQ.js} +6 -4
  136. package/dist/cli-bundle/chunks/{chunk-D2LDM35X.js.map → chunk-HJE4JTKQ.js.map} +1 -1
  137. package/dist/cli-bundle/chunks/{chunk-AOP2EMK3.js → chunk-HK72NWAD.js} +89 -18
  138. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-2ONH3WG6.js → chunk-IJ6CO3JV.js} +18 -16
  140. package/dist/cli-bundle/chunks/{chunk-2ONH3WG6.js.map → chunk-IJ6CO3JV.js.map} +1 -1
  141. package/dist/cli-bundle/chunks/{chunk-J4KNRDI3.js → chunk-JFCVQXZX.js} +139 -326
  142. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
  143. package/dist/cli-bundle/chunks/{chunk-V655JQ5J.js → chunk-JLA7EVYV.js} +12 -10
  144. package/dist/cli-bundle/chunks/{chunk-V655JQ5J.js.map → chunk-JLA7EVYV.js.map} +1 -1
  145. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
  146. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-WBWRQS32.js → chunk-K3AGVXSF.js} +37 -13
  148. package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
  149. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
  150. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
  151. package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
  152. package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
  153. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
  154. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
  155. package/dist/cli-bundle/chunks/{chunk-JZJJEJBR.js → chunk-KLG4ZULO.js} +12 -10
  156. package/dist/cli-bundle/chunks/{chunk-JZJJEJBR.js.map → chunk-KLG4ZULO.js.map} +1 -1
  157. package/dist/cli-bundle/chunks/{chunk-KKHIQOTN.js → chunk-LEKT4K7I.js} +74 -8
  158. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{contracts-CVBINC7C.js → chunk-MNZ7DRNC.js} +13 -10
  160. package/dist/cli-bundle/chunks/{contracts-CVBINC7C.js.map → chunk-MNZ7DRNC.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-2VK677OA.js → chunk-MTTXDAK4.js} +176 -125
  162. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
  163. package/dist/cli-bundle/chunks/{chunk-Q2266G4S.js → chunk-MZ7VNEVY.js} +8 -6
  164. package/dist/cli-bundle/chunks/{chunk-Q2266G4S.js.map → chunk-MZ7VNEVY.js.map} +1 -1
  165. package/dist/cli-bundle/chunks/{chunk-4EVY7CQN.js → chunk-N6DNM2FA.js} +2 -2
  166. package/dist/cli-bundle/chunks/{test-runs-5SLLV3XU.js → chunk-N7X4WP6L.js} +11 -8
  167. package/dist/cli-bundle/chunks/{test-runs-5SLLV3XU.js.map → chunk-N7X4WP6L.js.map} +1 -1
  168. package/dist/cli-bundle/chunks/{chunk-AZMPKLIA.js → chunk-NBFCNJ7Q.js} +177 -126
  169. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-YZR7UMZ6.js → chunk-NER3KUUS.js} +2 -2
  171. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
  172. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
  173. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
  174. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-DJ5S2LDY.js → chunk-OESSOFJ4.js} +14 -12
  176. package/dist/cli-bundle/chunks/{chunk-DJ5S2LDY.js.map → chunk-OESSOFJ4.js.map} +1 -1
  177. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
  178. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-TUV7SIWZ.js → chunk-OWTIRHX4.js} +28 -6
  180. package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-PV5JS7MP.js → chunk-P3VRG72Q.js} +10 -8
  182. package/dist/cli-bundle/chunks/{chunk-PV5JS7MP.js.map → chunk-P3VRG72Q.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
  184. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
  185. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
  186. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
  187. package/dist/cli-bundle/chunks/{chunk-WTXDLBSZ.js → chunk-PDXT6Q55.js} +2 -2
  188. package/dist/cli-bundle/chunks/{chunk-YZWXMDNH.js → chunk-PJ3A56YF.js} +46 -537
  189. package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{test-runs-L3WKLO67.js → chunk-PPAJG4GB.js} +13 -10
  191. package/dist/cli-bundle/chunks/{test-runs-L3WKLO67.js.map → chunk-PPAJG4GB.js.map} +1 -1
  192. package/dist/cli-bundle/chunks/{chunk-LLQLLAKU.js → chunk-PPE4YUQM.js} +1670 -1573
  193. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
  194. package/dist/cli-bundle/chunks/{chunk-TO4KCIOT.js → chunk-QHZO65XW.js} +8 -6
  195. package/dist/cli-bundle/chunks/{chunk-TO4KCIOT.js.map → chunk-QHZO65XW.js.map} +1 -1
  196. package/dist/cli-bundle/chunks/{chunk-4OXNQHKQ.js → chunk-R3ZBLGTC.js} +9 -10
  197. package/dist/cli-bundle/chunks/{chunk-4OXNQHKQ.js.map → chunk-R3ZBLGTC.js.map} +2 -2
  198. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
  199. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-724VLYDJ.js → chunk-RX3HQSYG.js} +2 -2
  201. package/dist/cli-bundle/chunks/{chunk-PUVPC5DL.js → chunk-S4APD35C.js} +4 -4
  202. package/dist/cli-bundle/chunks/{chunk-T5RTYLZJ.js → chunk-S5AYOUT5.js} +8 -6
  203. package/dist/cli-bundle/chunks/{chunk-T5RTYLZJ.js.map → chunk-S5AYOUT5.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{chunk-75VMARGO.js → chunk-STPSZ2XY.js} +19 -744
  205. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{chunk-A2W3XKAD.js → chunk-T35XLYZF.js} +2 -2
  207. package/dist/cli-bundle/chunks/{chunk-N2LOJUBB.js → chunk-T3ABIMGW.js} +5 -3
  208. package/dist/cli-bundle/chunks/{chunk-N2LOJUBB.js.map → chunk-T3ABIMGW.js.map} +1 -1
  209. package/dist/cli-bundle/chunks/{chunk-FDNJMYZB.js → chunk-T3F4DF23.js} +16 -14
  210. package/dist/cli-bundle/chunks/{chunk-FDNJMYZB.js.map → chunk-T3F4DF23.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
  212. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
  213. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
  214. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-XFO2NJY6.js → chunk-TSPKZRRW.js} +33 -28
  216. package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-ZZWMJVW2.js → chunk-TT42JUMF.js} +4 -4
  218. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
  219. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
  220. package/dist/cli-bundle/chunks/{chunk-7745CXNI.js → chunk-UI5BJ6DO.js} +1231 -1134
  221. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
  222. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
  223. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
  224. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
  225. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
  227. package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
  228. package/dist/cli-bundle/chunks/{contracts-NLCDIZAT.js → chunk-VZIYHZDX.js} +11 -8
  229. package/dist/cli-bundle/chunks/{contracts-NLCDIZAT.js.map → chunk-VZIYHZDX.js.map} +1 -1
  230. package/dist/cli-bundle/chunks/{chunk-TGYDJEJH.js → chunk-WISPVC2E.js} +9 -7
  231. package/dist/cli-bundle/chunks/{chunk-TGYDJEJH.js.map → chunk-WISPVC2E.js.map} +1 -1
  232. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
  233. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-MTB4PRA3.js → chunk-XQCG2JGW.js} +17 -749
  235. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
  236. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
  237. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
  238. package/dist/cli-bundle/chunks/{chunk-SL2ANJSV.js → chunk-YD5FML7K.js} +418 -2173
  239. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
  240. package/dist/cli-bundle/chunks/{chunk-NHKXOMZ5.js → chunk-YFIE7YK6.js} +7 -5
  241. package/dist/cli-bundle/chunks/{chunk-NHKXOMZ5.js.map → chunk-YFIE7YK6.js.map} +1 -1
  242. package/dist/cli-bundle/chunks/{chunk-5FYY76HR.js → chunk-YMABYTNG.js} +32 -27
  243. package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-W5X3AHJN.js → chunk-YOF5VPKM.js} +2 -2
  245. package/dist/cli-bundle/chunks/{chunk-M6PR5BC6.js → chunk-YPPVU5GX.js} +11 -9
  246. package/dist/cli-bundle/chunks/{chunk-M6PR5BC6.js.map → chunk-YPPVU5GX.js.map} +1 -1
  247. package/dist/cli-bundle/chunks/{chunk-ZIEGTQCY.js → chunk-YQMMMONE.js} +6 -4
  248. package/dist/cli-bundle/chunks/{chunk-ZIEGTQCY.js.map → chunk-YQMMMONE.js.map} +1 -1
  249. package/dist/cli-bundle/chunks/{chunk-4IW7STMB.js → chunk-YSAH5FY5.js} +16 -14
  250. package/dist/cli-bundle/chunks/{chunk-4IW7STMB.js.map → chunk-YSAH5FY5.js.map} +1 -1
  251. package/dist/cli-bundle/chunks/{chunk-JYLFF7GJ.js → chunk-YZIR4R3U.js} +16 -14
  252. package/dist/cli-bundle/chunks/{chunk-JYLFF7GJ.js.map → chunk-YZIR4R3U.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{chunk-7G5SUU6F.js → chunk-Z2CRRZYF.js} +14 -12
  254. package/dist/cli-bundle/chunks/{chunk-7G5SUU6F.js.map → chunk-Z2CRRZYF.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
  256. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
  257. package/dist/cli-bundle/chunks/{chunk-WOOB7PV7.js → chunk-ZCJAA3JK.js} +8 -6
  258. package/dist/cli-bundle/chunks/{chunk-WOOB7PV7.js.map → chunk-ZCJAA3JK.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{chunk-WSDIALO4.js → chunk-ZD34OFFQ.js} +5 -3
  260. package/dist/cli-bundle/chunks/{chunk-WSDIALO4.js.map → chunk-ZD34OFFQ.js.map} +1 -1
  261. package/dist/cli-bundle/chunks/{chunk-Q3XVLRCJ.js → chunk-ZJB3UV5U.js} +54 -58
  262. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{chunk-MZ4NH46V.js → chunk-ZMD35NYG.js} +2 -2
  264. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
  265. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{claim-D6L33A5Y.js → claim-4DROPSIS.js} +30 -13
  267. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
  268. package/dist/cli-bundle/chunks/{claim-YAFUTPVK.js → claim-VX54TV5U.js} +29 -12
  269. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{close-TGYXG7TV.js → close-3YRR3XY6.js} +9 -7
  271. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
  272. package/dist/cli-bundle/chunks/{close-many-SNA6LNZH.js → close-many-AP4MWU36.js} +21 -18
  273. package/dist/cli-bundle/chunks/{close-many-SNA6LNZH.js.map → close-many-AP4MWU36.js.map} +1 -1
  274. package/dist/cli-bundle/chunks/{close-many-4QSWKCRU.js → close-many-OMZIGZB4.js} +19 -16
  275. package/dist/cli-bundle/chunks/{close-many-4QSWKCRU.js.map → close-many-OMZIGZB4.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{comments-QC6ARR5X.js → comments-MIW5MZOX.js} +12 -9
  277. package/dist/cli-bundle/chunks/{comments-QC6ARR5X.js.map → comments-MIW5MZOX.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{comments-ZHVYGUVC.js → comments-SAG5LSKL.js} +14 -11
  279. package/dist/cli-bundle/chunks/{comments-ZHVYGUVC.js.map → comments-SAG5LSKL.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{config-O6W2EU2G.js → config-DJJKZB5R.js} +20 -17
  281. package/dist/cli-bundle/chunks/{config-O6W2EU2G.js.map → config-DJJKZB5R.js.map} +1 -1
  282. package/dist/cli-bundle/chunks/{config-XQRFJXJP.js → config-V57QD47V.js} +22 -19
  283. package/dist/cli-bundle/chunks/{config-XQRFJXJP.js.map → config-V57QD47V.js.map} +1 -1
  284. package/dist/cli-bundle/chunks/{context-IHE3IXN5.js → context-4OQGIPSO.js} +15 -12
  285. package/dist/cli-bundle/chunks/{context-WSYWBEUL.js → context-WLA6IAWE.js} +15 -12
  286. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
  287. package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
  288. package/dist/cli-bundle/chunks/{copy-7MUQC44A.js → copy-LEE6P6EM.js} +17 -14
  289. package/dist/cli-bundle/chunks/{copy-7MUQC44A.js.map → copy-LEE6P6EM.js.map} +2 -2
  290. package/dist/cli-bundle/chunks/{copy-ANWXDJVC.js → copy-OTJOWFL6.js} +18 -15
  291. package/dist/cli-bundle/chunks/{copy-ANWXDJVC.js.map → copy-OTJOWFL6.js.map} +1 -1
  292. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
  293. package/dist/cli-bundle/chunks/{create-JIA2IFCO.js → create-XWWQFQ6S.js} +14 -12
  294. package/dist/cli-bundle/chunks/{delete-5OLYWQIC.js → delete-62JQTYT4.js} +10 -7
  295. package/dist/cli-bundle/chunks/{delete-5OLYWQIC.js.map → delete-62JQTYT4.js.map} +1 -1
  296. package/dist/cli-bundle/chunks/{delete-INHKCIRN.js → delete-HQKGRNRZ.js} +12 -9
  297. package/dist/cli-bundle/chunks/{delete-INHKCIRN.js.map → delete-HQKGRNRZ.js.map} +1 -1
  298. package/dist/cli-bundle/chunks/{deps-IYEID3QX.js → deps-55FTG6Z5.js} +12 -9
  299. package/dist/cli-bundle/chunks/{deps-IYEID3QX.js.map → deps-55FTG6Z5.js.map} +1 -1
  300. package/dist/cli-bundle/chunks/{deps-CCSWGZW7.js → deps-L2FPIAD3.js} +10 -7
  301. package/dist/cli-bundle/chunks/{deps-CCSWGZW7.js.map → deps-L2FPIAD3.js.map} +1 -1
  302. package/dist/cli-bundle/chunks/{docs-PKO7OEIM.js → docs-6CRCSVKK.js} +11 -9
  303. package/dist/cli-bundle/chunks/{docs-PKO7OEIM.js.map → docs-6CRCSVKK.js.map} +1 -1
  304. package/dist/cli-bundle/chunks/{docs-3XZK22WF.js → docs-S6UTOTO5.js} +9 -7
  305. package/dist/cli-bundle/chunks/{docs-3XZK22WF.js.map → docs-S6UTOTO5.js.map} +1 -1
  306. package/dist/cli-bundle/chunks/{eval-5XYP6NMY.js → eval-N6UHFWVO.js} +15 -11
  307. package/dist/cli-bundle/chunks/{eval-5XYP6NMY.js.map → eval-N6UHFWVO.js.map} +1 -1
  308. package/dist/cli-bundle/chunks/{eval-O4WGQYDI.js → eval-PHOTWYHI.js} +17 -13
  309. package/dist/cli-bundle/chunks/{eval-O4WGQYDI.js.map → eval-PHOTWYHI.js.map} +1 -1
  310. package/dist/cli-bundle/chunks/{extension-T7JNTAAA.js → extension-NBAH62ML.js} +17 -11
  311. package/dist/cli-bundle/chunks/{extension-PVGRRZZG.js → extension-ZF6ZZPOU.js} +17 -11
  312. package/dist/cli-bundle/chunks/{files-W7HH5EOD.js → files-6P57MRKL.js} +12 -9
  313. package/dist/cli-bundle/chunks/{files-W7HH5EOD.js.map → files-6P57MRKL.js.map} +1 -1
  314. package/dist/cli-bundle/chunks/{files-7IU56S6R.js → files-JPU3FNJ7.js} +14 -11
  315. package/dist/cli-bundle/chunks/{files-7IU56S6R.js.map → files-JPU3FNJ7.js.map} +1 -1
  316. package/dist/cli-bundle/chunks/{focus-6FA5KYRY.js → focus-LFZ6IDBR.js} +15 -11
  317. package/dist/cli-bundle/chunks/{focus-6FA5KYRY.js.map → focus-LFZ6IDBR.js.map} +1 -1
  318. package/dist/cli-bundle/chunks/{focus-CQ63JFDG.js → focus-WNMYCVYA.js} +13 -9
  319. package/dist/cli-bundle/chunks/{focus-CQ63JFDG.js.map → focus-WNMYCVYA.js.map} +1 -1
  320. package/dist/cli-bundle/chunks/{gc-3BG67KTO.js → gc-AETFKZ44.js} +10 -7
  321. package/dist/cli-bundle/chunks/{gc-3BG67KTO.js.map → gc-AETFKZ44.js.map} +1 -1
  322. package/dist/cli-bundle/chunks/{gc-PEZYGNVB.js → gc-RLBP4QVN.js} +12 -9
  323. package/dist/cli-bundle/chunks/{gc-PEZYGNVB.js.map → gc-RLBP4QVN.js.map} +1 -1
  324. package/dist/cli-bundle/chunks/{get-J6CSJ4SX.js → get-NH2MPBCI.js} +18 -15
  325. package/dist/cli-bundle/chunks/{get-J6CSJ4SX.js.map → get-NH2MPBCI.js.map} +1 -1
  326. package/dist/cli-bundle/chunks/{get-KJTKGNEQ.js → get-P4ZQXCPZ.js} +16 -13
  327. package/dist/cli-bundle/chunks/{get-KJTKGNEQ.js.map → get-P4ZQXCPZ.js.map} +1 -1
  328. package/dist/cli-bundle/chunks/{health-32UQICEL.js → health-3GVPMQBL.js} +36 -29
  329. package/dist/cli-bundle/chunks/{health-32UQICEL.js.map → health-3GVPMQBL.js.map} +1 -1
  330. package/dist/cli-bundle/chunks/{health-ZUZG5ULV.js → health-DNTM72GJ.js} +34 -27
  331. package/dist/cli-bundle/chunks/{health-ZUZG5ULV.js.map → health-DNTM72GJ.js.map} +1 -1
  332. package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
  333. package/dist/cli-bundle/chunks/{history-W6QVR6FA.js → history-SGPYRAFT.js} +10 -8
  334. package/dist/cli-bundle/chunks/{history-compact-JQ6ZGYSJ.js → history-compact-3F6VELO7.js} +18 -15
  335. package/dist/cli-bundle/chunks/{history-compact-JQ6ZGYSJ.js.map → history-compact-3F6VELO7.js.map} +1 -1
  336. package/dist/cli-bundle/chunks/{history-compact-F355EGL4.js → history-compact-656Y2TN4.js} +20 -17
  337. package/dist/cli-bundle/chunks/{history-compact-F355EGL4.js.map → history-compact-656Y2TN4.js.map} +1 -1
  338. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
  339. package/dist/cli-bundle/chunks/{history-redact-TUWOUYX5.js → history-redact-54ICFKXM.js} +11 -9
  340. package/dist/cli-bundle/chunks/{history-repair-ZKS3LKPV.js → history-repair-4N6SDVHK.js} +17 -14
  341. package/dist/cli-bundle/chunks/{history-repair-ZKS3LKPV.js.map → history-repair-4N6SDVHK.js.map} +1 -1
  342. package/dist/cli-bundle/chunks/{history-repair-MPCAIKYE.js → history-repair-EVTO6LIH.js} +19 -16
  343. package/dist/cli-bundle/chunks/{history-repair-MPCAIKYE.js.map → history-repair-EVTO6LIH.js.map} +1 -1
  344. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
  345. package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
  346. package/dist/cli-bundle/chunks/{learnings-EYC3OKS2.js → learnings-2HTPZNGZ.js} +10 -8
  347. package/dist/cli-bundle/chunks/{learnings-EYC3OKS2.js.map → learnings-2HTPZNGZ.js.map} +1 -1
  348. package/dist/cli-bundle/chunks/{learnings-HKJJUVTA.js → learnings-YBIHY3D6.js} +12 -10
  349. package/dist/cli-bundle/chunks/{learnings-HKJJUVTA.js.map → learnings-YBIHY3D6.js.map} +1 -1
  350. package/dist/cli-bundle/chunks/{list-KN3TL5Y5.js → list-64LHZ3HM.js} +10 -8
  351. package/dist/cli-bundle/chunks/{list-HFD5737R.js → list-7LXBTEKI.js} +10 -8
  352. package/dist/cli-bundle/chunks/{next-DQUMFAHG.js → next-7ODPAQ4U.js} +22 -18
  353. package/dist/cli-bundle/chunks/{next-DQUMFAHG.js.map → next-7ODPAQ4U.js.map} +1 -1
  354. package/dist/cli-bundle/chunks/{next-JUEYC5HE.js → next-ODJUM4ZM.js} +24 -20
  355. package/dist/cli-bundle/chunks/{next-JUEYC5HE.js.map → next-ODJUM4ZM.js.map} +1 -1
  356. package/dist/cli-bundle/chunks/{notes-ZG6RLZXB.js → notes-72YXN5JX.js} +10 -8
  357. package/dist/cli-bundle/chunks/{notes-ZG6RLZXB.js.map → notes-72YXN5JX.js.map} +1 -1
  358. package/dist/cli-bundle/chunks/{notes-XATYT43P.js → notes-NJ7IQJX4.js} +12 -10
  359. package/dist/cli-bundle/chunks/{notes-XATYT43P.js.map → notes-NJ7IQJX4.js.map} +1 -1
  360. package/dist/cli-bundle/chunks/{plan-DVVLX7LK.js → plan-R4NDQ27E.js} +18 -15
  361. package/dist/cli-bundle/chunks/{plan-DVVLX7LK.js.map → plan-R4NDQ27E.js.map} +1 -1
  362. package/dist/cli-bundle/chunks/{plan-5NWQL2DH.js → plan-XWY5T67S.js} +20 -17
  363. package/dist/cli-bundle/chunks/{plan-5NWQL2DH.js.map → plan-XWY5T67S.js.map} +1 -1
  364. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
  365. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
  366. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
  367. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
  368. package/dist/cli-bundle/chunks/{register-list-query-WRS6ACUW.js → register-list-query-5H66WFYF.js} +22 -19
  369. package/dist/cli-bundle/chunks/{register-list-query-WRS6ACUW.js.map → register-list-query-5H66WFYF.js.map} +1 -1
  370. package/dist/cli-bundle/chunks/{register-list-query-PNRAHNIQ.js → register-list-query-FB3FNDLZ.js} +24 -21
  371. package/dist/cli-bundle/chunks/{register-list-query-PNRAHNIQ.js.map → register-list-query-FB3FNDLZ.js.map} +1 -1
  372. package/dist/cli-bundle/chunks/{register-mutation-K2MNRWGI.js → register-mutation-UJO23C7R.js} +42 -39
  373. package/dist/cli-bundle/chunks/{register-mutation-K2MNRWGI.js.map → register-mutation-UJO23C7R.js.map} +1 -1
  374. package/dist/cli-bundle/chunks/{register-mutation-ET6E4VLE.js → register-mutation-Z2ETYHKS.js} +40 -37
  375. package/dist/cli-bundle/chunks/{register-mutation-ET6E4VLE.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{register-operations-6DQRUTIX.js → register-operations-A3XAM5J7.js} +39 -36
  377. package/dist/cli-bundle/chunks/{register-operations-6DQRUTIX.js.map → register-operations-A3XAM5J7.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{register-operations-73UDWMVB.js → register-operations-SG7HBSUP.js} +37 -34
  379. package/dist/cli-bundle/chunks/{register-operations-73UDWMVB.js.map → register-operations-SG7HBSUP.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{register-setup-LYYCMQFV.js → register-setup-I45OGJUV.js} +25 -19
  381. package/dist/cli-bundle/chunks/{register-setup-LYYCMQFV.js.map → register-setup-I45OGJUV.js.map} +1 -1
  382. package/dist/cli-bundle/chunks/{register-setup-FXZJ2CEJ.js → register-setup-K6U3NVY5.js} +23 -17
  383. package/dist/cli-bundle/chunks/{register-setup-FXZJ2CEJ.js.map → register-setup-K6U3NVY5.js.map} +1 -1
  384. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
  385. package/dist/cli-bundle/chunks/{restore-R6YJHQK3.js → restore-YJ2ET6AT.js} +11 -9
  386. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OGODPUBL.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
  387. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OGODPUBL.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
  388. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LE4S7OI7.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
  389. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LE4S7OI7.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
  390. package/dist/cli-bundle/chunks/{schema-ICCD3HOP.js → schema-2PUXCZ25.js} +10 -7
  391. package/dist/cli-bundle/chunks/{schema-RHH23PQX.js → schema-Y6DXXK2F.js} +10 -7
  392. package/dist/cli-bundle/chunks/{search-Z2VGP2Q5.js → search-3S72CTD6.js} +13 -10
  393. package/dist/cli-bundle/chunks/{search-HDDKOPFE.js → search-WNUNBQXO.js} +13 -10
  394. package/dist/cli-bundle/chunks/{stats-ETFP37MB.js → stats-IJYTRQGV.js} +13 -10
  395. package/dist/cli-bundle/chunks/{stats-ETFP37MB.js.map → stats-IJYTRQGV.js.map} +1 -1
  396. package/dist/cli-bundle/chunks/{stats-DHMRXHOB.js → stats-L2D5Y2O5.js} +15 -12
  397. package/dist/cli-bundle/chunks/{stats-DHMRXHOB.js.map → stats-L2D5Y2O5.js.map} +1 -1
  398. package/dist/cli-bundle/chunks/{telemetry-ZRBM22QD.js → telemetry-L2CVOKVN.js} +11 -8
  399. package/dist/cli-bundle/chunks/{telemetry-ZRBM22QD.js.map → telemetry-L2CVOKVN.js.map} +1 -1
  400. package/dist/cli-bundle/chunks/{telemetry-NUZNKDCP.js → telemetry-QBYWQA76.js} +13 -10
  401. package/dist/cli-bundle/chunks/{telemetry-NUZNKDCP.js.map → telemetry-QBYWQA76.js.map} +1 -1
  402. package/dist/cli-bundle/chunks/{test-XNKTIP4Y.js → test-DQ2QFJ7W.js} +21 -15
  403. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
  404. package/dist/cli-bundle/chunks/{test-all-APCBSXQI.js → test-all-636NTRTT.js} +26 -19
  405. package/dist/cli-bundle/chunks/{test-all-APCBSXQI.js.map → test-all-636NTRTT.js.map} +1 -1
  406. package/dist/cli-bundle/chunks/{test-all-KIK3OYBY.js → test-all-DWYK3RG6.js} +24 -17
  407. package/dist/cli-bundle/chunks/{test-all-KIK3OYBY.js.map → test-all-DWYK3RG6.js.map} +1 -1
  408. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
  409. package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
  410. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
  411. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
  412. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
  413. package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
  414. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
  415. package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
  416. package/dist/cli-bundle/chunks/{update-many-XGTJ7QIU.js → update-many-DC7X3EWM.js} +32 -29
  417. package/dist/cli-bundle/chunks/{update-many-XGTJ7QIU.js.map → update-many-DC7X3EWM.js.map} +1 -1
  418. package/dist/cli-bundle/chunks/{update-many-GFCQG6ZQ.js → update-many-SLLAMHT7.js} +34 -31
  419. package/dist/cli-bundle/chunks/{update-many-GFCQG6ZQ.js.map → update-many-SLLAMHT7.js.map} +1 -1
  420. package/dist/cli-bundle/chunks/{upgrade-KJ3JGELR.js → upgrade-HFFXLZJA.js} +19 -12
  421. package/dist/cli-bundle/chunks/{upgrade-KJ3JGELR.js.map → upgrade-HFFXLZJA.js.map} +1 -1
  422. package/dist/cli-bundle/chunks/{upgrade-RBRQ7PQU.js → upgrade-UYQKM7RF.js} +21 -14
  423. package/dist/cli-bundle/chunks/{upgrade-RBRQ7PQU.js.map → upgrade-UYQKM7RF.js.map} +1 -1
  424. package/dist/cli-bundle/chunks/{validate-EW6TGC7R.js → validate-PA4FDTOV.js} +34 -27
  425. package/dist/cli-bundle/chunks/{validate-EW6TGC7R.js.map → validate-PA4FDTOV.js.map} +2 -2
  426. package/dist/cli-bundle/chunks/{validate-T6PR5WAL.js → validate-Z7L75YEJ.js} +35 -28
  427. package/dist/cli-bundle/chunks/{validate-T6PR5WAL.js.map → validate-Z7L75YEJ.js.map} +1 -1
  428. package/dist/cli-bundle/main.js +173 -57
  429. package/dist/cli-bundle/main.js.map +2 -2
  430. package/dist/cli-bundle/sdk-runtime.js +247 -0
  431. package/dist/cli-bundle/sdk-runtime.js.map +7 -0
  432. package/dist/cli-bundle/sdk-testing.js +101 -0
  433. package/dist/cli-bundle/sdk-testing.js.map +7 -0
  434. package/dist/cli-bundle/sdk.js +787 -0
  435. package/dist/cli-bundle/sdk.js.map +7 -0
  436. package/dist/core/config/nested-settings.d.ts +4 -3
  437. package/dist/core/config/nested-settings.js +17 -6
  438. package/dist/core/config/nested-settings.js.map +1 -1
  439. package/dist/core/extensions/activation-summary.d.ts +6 -0
  440. package/dist/core/extensions/activation-summary.js +10 -4
  441. package/dist/core/extensions/activation-summary.js.map +1 -1
  442. package/dist/core/extensions/capability-usage.d.ts +6 -0
  443. package/dist/core/extensions/capability-usage.js +10 -4
  444. package/dist/core/extensions/capability-usage.js.map +1 -1
  445. package/dist/core/extensions/extension-types.d.ts +5 -0
  446. package/dist/core/extensions/extension-types.js +2 -2
  447. package/dist/core/extensions/extension-types.js.map +1 -1
  448. package/dist/core/extensions/loader.d.ts +3 -0
  449. package/dist/core/extensions/loader.js +11 -19
  450. package/dist/core/extensions/loader.js.map +1 -1
  451. package/dist/core/history/history-rewrite.js +3 -3
  452. package/dist/core/history/history-rewrite.js.map +1 -1
  453. package/dist/core/item/parent-reference-policy.d.ts +9 -1
  454. package/dist/core/item/parent-reference-policy.js +28 -4
  455. package/dist/core/item/parent-reference-policy.js.map +1 -1
  456. package/dist/core/lock/lock.d.ts +28 -1
  457. package/dist/core/lock/lock.js +254 -20
  458. package/dist/core/lock/lock.js.map +1 -1
  459. package/dist/core/search/background-refresh.js +7 -19
  460. package/dist/core/search/background-refresh.js.map +1 -1
  461. package/dist/core/search/http-client.d.ts +0 -1
  462. package/dist/core/search/http-client.js +3 -3
  463. package/dist/core/search/http-client.js.map +1 -1
  464. package/dist/core/shared/constants.js +3 -2
  465. package/dist/core/shared/constants.js.map +1 -1
  466. package/dist/core/shared/errors.d.ts +1 -0
  467. package/dist/core/shared/errors.js +2 -2
  468. package/dist/core/shared/errors.js.map +1 -1
  469. package/dist/core/shared/primitives.d.ts +12 -0
  470. package/dist/core/shared/primitives.js +29 -2
  471. package/dist/core/shared/primitives.js.map +1 -1
  472. package/dist/core/store/item-store.js +3 -3
  473. package/dist/core/store/item-store.js.map +1 -1
  474. package/dist/core/store/settings-validator.d.ts +1 -0
  475. package/dist/core/store/settings-validator.js +6 -3
  476. package/dist/core/store/settings-validator.js.map +1 -1
  477. package/dist/core/store/settings.js +3 -3
  478. package/dist/core/store/settings.js.map +1 -1
  479. package/dist/core/validate/fix-planning.d.ts +0 -2
  480. package/dist/core/validate/fix-planning.js +3 -3
  481. package/dist/core/validate/fix-planning.js.map +1 -1
  482. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  483. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  484. package/dist/sdk/cli-contracts/flag-contracts.js +3 -2
  485. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  486. package/dist/sdk/errors.d.ts +21 -2
  487. package/dist/sdk/errors.js +8 -2
  488. package/dist/sdk/errors.js.map +1 -1
  489. package/dist/sdk/package-import-adapters.js +3 -3
  490. package/dist/sdk/package-import-adapters.js.map +1 -1
  491. package/dist/sdk/testing.js +41 -19
  492. package/dist/sdk/testing.js.map +1 -1
  493. package/dist/types.d.ts +6 -0
  494. package/dist/types.js +2 -2
  495. package/dist/types.js.map +1 -1
  496. package/docs/ARCHITECTURE.md +27 -0
  497. package/docs/CONFIGURATION.md +3 -0
  498. package/docs/README.md +1 -0
  499. package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
  500. package/docs/TESTING.md +5 -1
  501. package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
  502. package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
  503. package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
  504. package/package.json +11 -24
  505. package/packages/pm-beads/extensions/beads/package.json +3 -0
  506. package/packages/pm-beads/extensions/beads/runtime-loader.ts +24 -2
  507. package/packages/pm-calendar/extensions/calendar/package.json +3 -0
  508. package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
  509. package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
  510. package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
  511. package/packages/pm-kanban/extensions/kanban/package.json +3 -0
  512. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
  513. package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
  514. package/packages/pm-templates/extensions/templates/package.json +3 -0
  515. package/packages/pm-todos/extensions/todos/package.json +3 -0
  516. package/packages/pm-todos/extensions/todos/runtime-loader.ts +21 -3
  517. package/scripts/bundle-cli.mjs +12 -2
  518. package/dist/cli-bundle/chunks/activity-IDS5GSYG.js +0 -16
  519. package/dist/cli-bundle/chunks/chunk-2VK677OA.js.map +0 -7
  520. package/dist/cli-bundle/chunks/chunk-5FYY76HR.js.map +0 -7
  521. package/dist/cli-bundle/chunks/chunk-75VMARGO.js.map +0 -1
  522. package/dist/cli-bundle/chunks/chunk-7745CXNI.js.map +0 -7
  523. package/dist/cli-bundle/chunks/chunk-AOP2EMK3.js.map +0 -1
  524. package/dist/cli-bundle/chunks/chunk-AZMPKLIA.js.map +0 -1
  525. package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
  526. package/dist/cli-bundle/chunks/chunk-BDDYM4LH.js.map +0 -7
  527. package/dist/cli-bundle/chunks/chunk-CN4OAA2G.js.map +0 -7
  528. package/dist/cli-bundle/chunks/chunk-EH23N5FX.js.map +0 -1
  529. package/dist/cli-bundle/chunks/chunk-FMWQRMHS.js.map +0 -1
  530. package/dist/cli-bundle/chunks/chunk-J4KNRDI3.js.map +0 -1
  531. package/dist/cli-bundle/chunks/chunk-KKHIQOTN.js.map +0 -7
  532. package/dist/cli-bundle/chunks/chunk-LLQLLAKU.js.map +0 -1
  533. package/dist/cli-bundle/chunks/chunk-M34MVAOP.js.map +0 -1
  534. package/dist/cli-bundle/chunks/chunk-MTB4PRA3.js.map +0 -7
  535. package/dist/cli-bundle/chunks/chunk-MZG6I2Q2.js.map +0 -7
  536. package/dist/cli-bundle/chunks/chunk-NGDK3KEZ.js.map +0 -7
  537. package/dist/cli-bundle/chunks/chunk-Q3XVLRCJ.js.map +0 -1
  538. package/dist/cli-bundle/chunks/chunk-SBNT6SLO.js.map +0 -7
  539. package/dist/cli-bundle/chunks/chunk-SL2ANJSV.js.map +0 -1
  540. package/dist/cli-bundle/chunks/chunk-TUV7SIWZ.js.map +0 -7
  541. package/dist/cli-bundle/chunks/chunk-UGDONITK.js.map +0 -7
  542. package/dist/cli-bundle/chunks/chunk-UYLA5ROU.js.map +0 -1
  543. package/dist/cli-bundle/chunks/chunk-WBWRQS32.js.map +0 -1
  544. package/dist/cli-bundle/chunks/chunk-XFO2NJY6.js.map +0 -1
  545. package/dist/cli-bundle/chunks/chunk-XQCWTSLO.js.map +0 -1
  546. package/dist/cli-bundle/chunks/chunk-YZWXMDNH.js.map +0 -1
  547. package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
  548. package/dist/cli-bundle/chunks/claim-D6L33A5Y.js.map +0 -1
  549. package/dist/cli-bundle/chunks/claim-YAFUTPVK.js.map +0 -7
  550. package/dist/cli-bundle/chunks/close-KLDLHAOP.js +0 -14
  551. package/dist/cli-bundle/chunks/create-AJ6HUR5W.js +0 -28
  552. package/dist/cli-bundle/chunks/history-IOH6FKG7.js +0 -18
  553. package/dist/cli-bundle/chunks/history-redact-VVDOARNO.js +0 -19
  554. package/dist/cli-bundle/chunks/init-CZLEEE6Q.js +0 -22
  555. package/dist/cli-bundle/chunks/init-MAA6UMNQ.js +0 -26
  556. package/dist/cli-bundle/chunks/profile-54DZ4CLB.js +0 -1205
  557. package/dist/cli-bundle/chunks/profile-54DZ4CLB.js.map +0 -1
  558. package/dist/cli-bundle/chunks/profile-PLIQVEOY.js +0 -1243
  559. package/dist/cli-bundle/chunks/profile-PLIQVEOY.js.map +0 -7
  560. package/dist/cli-bundle/chunks/restore-L27TMMCF.js +0 -17
  561. package/dist/cli-bundle/chunks/test-H36PM746.js +0 -35
  562. package/dist/cli-bundle/chunks/update-RQKI3AMW.js +0 -24
  563. package/dist/cli-bundle/chunks/update-ZM7NJWHY.js +0 -28
  564. /package/dist/cli-bundle/chunks/{activity-IDS5GSYG.js.map → activity-4XQIDNM5.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{activity-OENQCYZD.js.map → activity-YKAKZTZ4.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-4SHME4VR.js.map → chunk-5JE6SMYS.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-4EVY7CQN.js.map → chunk-N6DNM2FA.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-YZR7UMZ6.js.map → chunk-NER3KUUS.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-WTXDLBSZ.js.map → chunk-PDXT6Q55.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-724VLYDJ.js.map → chunk-RX3HQSYG.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-PUVPC5DL.js.map → chunk-S4APD35C.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-A2W3XKAD.js.map → chunk-T35XLYZF.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{chunk-ZZWMJVW2.js.map → chunk-TT42JUMF.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{chunk-W5X3AHJN.js.map → chunk-YOF5VPKM.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{chunk-MZ4NH46V.js.map → chunk-ZMD35NYG.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-TGYXG7TV.js.map → close-3YRR3XY6.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{close-KLDLHAOP.js.map → close-OB2Y4QP5.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{context-IHE3IXN5.js.map → context-4OQGIPSO.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-WSYWBEUL.js.map → context-WLA6IAWE.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{create-AJ6HUR5W.js.map → contracts-HXJLKCRI.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{create-JIA2IFCO.js.map → contracts-OJEXMKVW.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{extension-T7JNTAAA.js.map → create-WKOZKPQR.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{extension-PVGRRZZG.js.map → create-XWWQFQ6S.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{history-IOH6FKG7.js.map → extension-NBAH62ML.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{history-W6QVR6FA.js.map → extension-ZF6ZZPOU.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{history-redact-VVDOARNO.js.map → history-RYKLC72X.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{history-redact-TUWOUYX5.js.map → history-SGPYRAFT.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{init-CZLEEE6Q.js.map → history-redact-4H3FCKF3.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{init-MAA6UMNQ.js.map → history-redact-54ICFKXM.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{list-HFD5737R.js.map → init-RPIPQUNV.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{list-KN3TL5Y5.js.map → init-SKQAESQS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{restore-L27TMMCF.js.map → list-64LHZ3HM.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{restore-R6YJHQK3.js.map → list-7LXBTEKI.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{schema-ICCD3HOP.js.map → restore-PXOFL6AM.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{schema-RHH23PQX.js.map → restore-YJ2ET6AT.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{search-HDDKOPFE.js.map → schema-2PUXCZ25.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{search-Z2VGP2Q5.js.map → schema-Y6DXXK2F.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{test-XNKTIP4Y.js.map → search-3S72CTD6.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{test-H36PM746.js.map → search-WNUNBQXO.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{update-ZM7NJWHY.js.map → test-DQ2QFJ7W.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{update-RQKI3AMW.js.map → test-W7QBLVJS.js.map} +0 -0
@@ -1,19 +1,21 @@
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]="8db20818-557e-57e8-b136-abedf5d5ed8a")}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]="b0405b47-9ba9-57b1-91cc-c5565c218c44")}catch(e){}}();
3
3
  import {
4
4
  runCreate
5
- } from "./chunk-AZMPKLIA.js";
6
- import "./chunk-Q2266G4S.js";
7
- import "./chunk-WTXDLBSZ.js";
8
- import "./chunk-3C5T3ZEO.js";
9
- import "./chunk-EH23N5FX.js";
5
+ } from "./chunk-NBFCNJ7Q.js";
6
+ import "./chunk-MZ7VNEVY.js";
7
+ import "./chunk-7WYXBPYQ.js";
8
+ import "./chunk-PDXT6Q55.js";
9
+ import "./chunk-4OFLJHX6.js";
10
10
  import "./chunk-P4SESZGT.js";
11
- import "./chunk-YZR7UMZ6.js";
12
- import "./chunk-6YB7HG2J.js";
13
- import "./chunk-UYLA5ROU.js";
14
- import "./chunk-AOP2EMK3.js";
15
- import "./chunk-FMWQRMHS.js";
16
- import "./chunk-SL2ANJSV.js";
11
+ import "./chunk-57C2RLW5.js";
12
+ import "./chunk-7MDXZAZS.js";
13
+ import "./chunk-HK72NWAD.js";
14
+ import "./chunk-FJRKQREY.js";
15
+ import "./chunk-US3T3W5J.js";
16
+ import "./chunk-NER3KUUS.js";
17
+ import "./chunk-NNHHXJB2.js";
18
+ import "./chunk-YD5FML7K.js";
17
19
 
18
20
  // dist/cli/commands/scheduling-shortcuts.js
19
21
  var DEFAULT_DURATION = "1h";
@@ -81,6 +83,6 @@ export {
81
83
  runMeet,
82
84
  runRemind
83
85
  };
84
- //# sourceMappingURL=scheduling-shortcuts-LE4S7OI7.js.map
86
+ //# sourceMappingURL=scheduling-shortcuts-ULRG7MNP.js.map
85
87
 
86
- //# debugId=8db20818-557e-57e8-b136-abedf5d5ed8a
88
+ //# debugId=b0405b47-9ba9-57b1-91cc-c5565c218c44
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../cli/commands/scheduling-shortcuts.ts"],"sourcesContent":["/**\n * @module cli/commands/scheduling-shortcuts\n *\n * Implements the pm scheduling shortcuts command surface and its agent-facing runtime behavior.\n */\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { runCreate, type CreateCommandOptions, type CreateResult } from \"./create.js\";\n\n/**\n * GH-217: low-friction creation shortcuts for the scheduling item types\n * (Meeting/Event/Reminder), which sit unused because `pm create --type Event`\n * demands structured `--event`/`--reminder` CSV entries. These commands accept\n * friendly time flags (`--start`, `--duration`, `--end`, `--at`) and translate\n * them into the canonical scheduling fields, then delegate to `runCreate` so the\n * full create pipeline (parent/focus inheritance, governance, hooks, validation)\n * applies unchanged. The `lightweight` schedule preset is applied so progressive\n * scheduling fields are not demanded up front.\n */\n\n/** Options shared by every scheduling shortcut, forwarded to `runCreate`. */\nexport interface SchedulingShortcutCommonOptions {\n parent?: string;\n allowMissingParent?: boolean;\n tags?: string;\n priority?: string;\n body?: string;\n description?: string;\n author?: string;\n message?: string;\n}\n\n/** Options for `pm meet` and `pm event` (a start time plus a span). */\nexport interface MeetingEventShortcutOptions extends SchedulingShortcutCommonOptions {\n start?: string;\n duration?: string;\n end?: string;\n location?: string;\n timezone?: string;\n allDay?: boolean;\n}\n\n/** Options for `pm remind` (a single point in time). */\nexport interface ReminderShortcutOptions extends SchedulingShortcutCommonOptions {\n at?: string;\n text?: string;\n}\n\n/** Default span applied when neither `--end` nor `--duration` is given. */\nconst DEFAULT_DURATION = \"1h\";\n/** Default start applied when `--start` is omitted (keeps the item calendar-visible). */\nconst DEFAULT_START = \"now\";\n/** Default reminder time applied when `--at` is omitted. */\nconst DEFAULT_REMINDER_AT = \"+1d\";\n\n/**\n * Wrap a free-text value (reminder text, event location) in double quotes so\n * commas and colons survive the CSV round-trip into `--reminder`/`--event`.\n * Backslashes are escaped first, then embedded quotes — escaping quotes alone\n * would let a trailing backslash escape the closing quote and break out of the\n * quoted field (CSV injection). The parser's `unquoteValue` strips the wrapping\n * quotes and unescapes `\\\"` back to `\"`.\n */\nfunction quoteCsvValue(value: string): string {\n return `\"${value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\")}\"`;\n}\n\n/**\n * Append a `key=\"value\"` pair. EVERY value is double-quoted (not just free-text\n * fields) so a comma or `=` in any token — `start`, `duration`, `at`, etc. —\n * cannot inject extra CSV key/value pairs into the `--event`/`--reminder`\n * entry. The parser's `parseCsvKv` unquotes every value before use, so quoting\n * is transparent to ISO/relative/timezone tokens.\n */\nfunction appendPair(pairs: string[], key: string, value: string | undefined): void {\n if (value !== undefined) {\n pairs.push(`${key}=${quoteCsvValue(value)}`);\n }\n}\n\nfunction buildCommonOptions(\n type: string,\n title: string,\n options: SchedulingShortcutCommonOptions,\n): CreateCommandOptions {\n return {\n type,\n title,\n schedulePreset: \"lightweight\",\n parent: options.parent,\n allowMissingParent: options.allowMissingParent,\n tags: options.tags,\n priority: options.priority,\n body: options.body,\n description: options.description,\n author: options.author,\n message: options.message,\n };\n}\n\nfunction buildEventEntry(options: MeetingEventShortcutOptions): string {\n const pairs: string[] = [];\n appendPair(pairs, \"start\", options.start ?? DEFAULT_START);\n if (options.end !== undefined) {\n appendPair(pairs, \"end\", options.end);\n } else {\n appendPair(pairs, \"duration\", options.duration ?? DEFAULT_DURATION);\n }\n appendPair(pairs, \"location\", options.location);\n appendPair(pairs, \"timezone\", options.timezone);\n if (options.allDay === true) {\n appendPair(pairs, \"all_day\", \"true\");\n }\n return pairs.join(\",\");\n}\n\nasync function createScheduled(\n type: string,\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n const createOptions = buildCommonOptions(type, title, options);\n createOptions.event = [buildEventEntry(options)];\n return runCreate(createOptions, global);\n}\n\n/** `pm meet \"<title>\"` — create a Meeting with sensible scheduling defaults. */\nexport function runMeet(\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n return createScheduled(\"Meeting\", title, options, global);\n}\n\n/** `pm event \"<title>\"` — create an Event with sensible scheduling defaults. */\nexport function runEvent(\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n return createScheduled(\"Event\", title, options, global);\n}\n\n/** `pm remind \"<title>\"` — create a Reminder from a single point in time. */\nexport function runRemind(\n title: string,\n options: ReminderShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n const createOptions = buildCommonOptions(\"Reminder\", title, options);\n const pairs: string[] = [];\n appendPair(pairs, \"at\", options.at ?? DEFAULT_REMINDER_AT);\n appendPair(pairs, \"text\", options.text ?? title);\n createOptions.reminder = [pairs.join(\",\")];\n return runCreate(createOptions, global);\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAgDA,IAAM,mBAAmB;AAEzB,IAAM,gBAAgB;AAEtB,IAAM,sBAAsB;AAU5B,SAAS,cAAc,OAAa;AAClC,SAAO,IAAI,MAAM,QAAQ,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAM,CAAC;AAC/D;AASA,SAAS,WAAW,OAAiB,KAAa,OAAyB;AACzE,MAAI,UAAU,QAAW;AACvB,UAAM,KAAK,GAAG,GAAG,IAAI,cAAc,KAAK,CAAC,EAAE;EAC7C;AACF;AAEA,SAAS,mBACP,MACA,OACA,SAAwC;AAExC,SAAO;IACL;IACA;IACA,gBAAgB;IAChB,QAAQ,QAAQ;IAChB,oBAAoB,QAAQ;IAC5B,MAAM,QAAQ;IACd,UAAU,QAAQ;IAClB,MAAM,QAAQ;IACd,aAAa,QAAQ;IACrB,QAAQ,QAAQ;IAChB,SAAS,QAAQ;;AAErB;AAEA,SAAS,gBAAgB,SAAoC;AAC3D,QAAM,QAAkB,CAAA;AACxB,aAAW,OAAO,SAAS,QAAQ,SAAS,aAAa;AACzD,MAAI,QAAQ,QAAQ,QAAW;AAC7B,eAAW,OAAO,OAAO,QAAQ,GAAG;EACtC,OAAO;AACL,eAAW,OAAO,YAAY,QAAQ,YAAY,gBAAgB;EACpE;AACA,aAAW,OAAO,YAAY,QAAQ,QAAQ;AAC9C,aAAW,OAAO,YAAY,QAAQ,QAAQ;AAC9C,MAAI,QAAQ,WAAW,MAAM;AAC3B,eAAW,OAAO,WAAW,MAAM;EACrC;AACA,SAAO,MAAM,KAAK,GAAG;AACvB;AAEA,eAAe,gBACb,MACA,OACA,SACA,QAAqB;AAErB,QAAM,gBAAgB,mBAAmB,MAAM,OAAO,OAAO;AAC7D,gBAAc,QAAQ,CAAC,gBAAgB,OAAO,CAAC;AAC/C,SAAO,UAAU,eAAe,MAAM;AACxC;AAGM,SAAU,QACd,OACA,SACA,QAAqB;AAErB,SAAO,gBAAgB,WAAW,OAAO,SAAS,MAAM;AAC1D;AAGM,SAAU,SACd,OACA,SACA,QAAqB;AAErB,SAAO,gBAAgB,SAAS,OAAO,SAAS,MAAM;AACxD;AAGM,SAAU,UACd,OACA,SACA,QAAqB;AAErB,QAAM,gBAAgB,mBAAmB,YAAY,OAAO,OAAO;AACnE,QAAM,QAAkB,CAAA;AACxB,aAAW,OAAO,MAAM,QAAQ,MAAM,mBAAmB;AACzD,aAAW,OAAO,QAAQ,QAAQ,QAAQ,KAAK;AAC/C,gBAAc,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC;AACzC,SAAO,UAAU,eAAe,MAAM;AACxC","debugId":"8db20818-557e-57e8-b136-abedf5d5ed8a"}
1
+ {"version":3,"sources":["../../../../../../../../cli/commands/scheduling-shortcuts.ts"],"sourcesContent":["/**\n * @module cli/commands/scheduling-shortcuts\n *\n * Implements the pm scheduling shortcuts command surface and its agent-facing runtime behavior.\n */\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { runCreate, type CreateCommandOptions, type CreateResult } from \"./create.js\";\n\n/**\n * GH-217: low-friction creation shortcuts for the scheduling item types\n * (Meeting/Event/Reminder), which sit unused because `pm create --type Event`\n * demands structured `--event`/`--reminder` CSV entries. These commands accept\n * friendly time flags (`--start`, `--duration`, `--end`, `--at`) and translate\n * them into the canonical scheduling fields, then delegate to `runCreate` so the\n * full create pipeline (parent/focus inheritance, governance, hooks, validation)\n * applies unchanged. The `lightweight` schedule preset is applied so progressive\n * scheduling fields are not demanded up front.\n */\n\n/** Options shared by every scheduling shortcut, forwarded to `runCreate`. */\nexport interface SchedulingShortcutCommonOptions {\n parent?: string;\n allowMissingParent?: boolean;\n tags?: string;\n priority?: string;\n body?: string;\n description?: string;\n author?: string;\n message?: string;\n}\n\n/** Options for `pm meet` and `pm event` (a start time plus a span). */\nexport interface MeetingEventShortcutOptions extends SchedulingShortcutCommonOptions {\n start?: string;\n duration?: string;\n end?: string;\n location?: string;\n timezone?: string;\n allDay?: boolean;\n}\n\n/** Options for `pm remind` (a single point in time). */\nexport interface ReminderShortcutOptions extends SchedulingShortcutCommonOptions {\n at?: string;\n text?: string;\n}\n\n/** Default span applied when neither `--end` nor `--duration` is given. */\nconst DEFAULT_DURATION = \"1h\";\n/** Default start applied when `--start` is omitted (keeps the item calendar-visible). */\nconst DEFAULT_START = \"now\";\n/** Default reminder time applied when `--at` is omitted. */\nconst DEFAULT_REMINDER_AT = \"+1d\";\n\n/**\n * Wrap a free-text value (reminder text, event location) in double quotes so\n * commas and colons survive the CSV round-trip into `--reminder`/`--event`.\n * Backslashes are escaped first, then embedded quotes — escaping quotes alone\n * would let a trailing backslash escape the closing quote and break out of the\n * quoted field (CSV injection). The parser's `unquoteValue` strips the wrapping\n * quotes and unescapes `\\\"` back to `\"`.\n */\nfunction quoteCsvValue(value: string): string {\n return `\"${value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\")}\"`;\n}\n\n/**\n * Append a `key=\"value\"` pair. EVERY value is double-quoted (not just free-text\n * fields) so a comma or `=` in any token — `start`, `duration`, `at`, etc. —\n * cannot inject extra CSV key/value pairs into the `--event`/`--reminder`\n * entry. The parser's `parseCsvKv` unquotes every value before use, so quoting\n * is transparent to ISO/relative/timezone tokens.\n */\nfunction appendPair(pairs: string[], key: string, value: string | undefined): void {\n if (value !== undefined) {\n pairs.push(`${key}=${quoteCsvValue(value)}`);\n }\n}\n\nfunction buildCommonOptions(\n type: string,\n title: string,\n options: SchedulingShortcutCommonOptions,\n): CreateCommandOptions {\n return {\n type,\n title,\n schedulePreset: \"lightweight\",\n parent: options.parent,\n allowMissingParent: options.allowMissingParent,\n tags: options.tags,\n priority: options.priority,\n body: options.body,\n description: options.description,\n author: options.author,\n message: options.message,\n };\n}\n\nfunction buildEventEntry(options: MeetingEventShortcutOptions): string {\n const pairs: string[] = [];\n appendPair(pairs, \"start\", options.start ?? DEFAULT_START);\n if (options.end !== undefined) {\n appendPair(pairs, \"end\", options.end);\n } else {\n appendPair(pairs, \"duration\", options.duration ?? DEFAULT_DURATION);\n }\n appendPair(pairs, \"location\", options.location);\n appendPair(pairs, \"timezone\", options.timezone);\n if (options.allDay === true) {\n appendPair(pairs, \"all_day\", \"true\");\n }\n return pairs.join(\",\");\n}\n\nasync function createScheduled(\n type: string,\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n const createOptions = buildCommonOptions(type, title, options);\n createOptions.event = [buildEventEntry(options)];\n return runCreate(createOptions, global);\n}\n\n/** `pm meet \"<title>\"` — create a Meeting with sensible scheduling defaults. */\nexport function runMeet(\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n return createScheduled(\"Meeting\", title, options, global);\n}\n\n/** `pm event \"<title>\"` — create an Event with sensible scheduling defaults. */\nexport function runEvent(\n title: string,\n options: MeetingEventShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n return createScheduled(\"Event\", title, options, global);\n}\n\n/** `pm remind \"<title>\"` — create a Reminder from a single point in time. */\nexport function runRemind(\n title: string,\n options: ReminderShortcutOptions,\n global: GlobalOptions,\n): Promise<CreateResult> {\n const createOptions = buildCommonOptions(\"Reminder\", title, options);\n const pairs: string[] = [];\n appendPair(pairs, \"at\", options.at ?? DEFAULT_REMINDER_AT);\n appendPair(pairs, \"text\", options.text ?? title);\n createOptions.reminder = [pairs.join(\",\")];\n return runCreate(createOptions, global);\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAgDA,IAAM,mBAAmB;AAEzB,IAAM,gBAAgB;AAEtB,IAAM,sBAAsB;AAU5B,SAAS,cAAc,OAAa;AAClC,SAAO,IAAI,MAAM,QAAQ,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAM,CAAC;AAC/D;AASA,SAAS,WAAW,OAAiB,KAAa,OAAyB;AACzE,MAAI,UAAU,QAAW;AACvB,UAAM,KAAK,GAAG,GAAG,IAAI,cAAc,KAAK,CAAC,EAAE;EAC7C;AACF;AAEA,SAAS,mBACP,MACA,OACA,SAAwC;AAExC,SAAO;IACL;IACA;IACA,gBAAgB;IAChB,QAAQ,QAAQ;IAChB,oBAAoB,QAAQ;IAC5B,MAAM,QAAQ;IACd,UAAU,QAAQ;IAClB,MAAM,QAAQ;IACd,aAAa,QAAQ;IACrB,QAAQ,QAAQ;IAChB,SAAS,QAAQ;;AAErB;AAEA,SAAS,gBAAgB,SAAoC;AAC3D,QAAM,QAAkB,CAAA;AACxB,aAAW,OAAO,SAAS,QAAQ,SAAS,aAAa;AACzD,MAAI,QAAQ,QAAQ,QAAW;AAC7B,eAAW,OAAO,OAAO,QAAQ,GAAG;EACtC,OAAO;AACL,eAAW,OAAO,YAAY,QAAQ,YAAY,gBAAgB;EACpE;AACA,aAAW,OAAO,YAAY,QAAQ,QAAQ;AAC9C,aAAW,OAAO,YAAY,QAAQ,QAAQ;AAC9C,MAAI,QAAQ,WAAW,MAAM;AAC3B,eAAW,OAAO,WAAW,MAAM;EACrC;AACA,SAAO,MAAM,KAAK,GAAG;AACvB;AAEA,eAAe,gBACb,MACA,OACA,SACA,QAAqB;AAErB,QAAM,gBAAgB,mBAAmB,MAAM,OAAO,OAAO;AAC7D,gBAAc,QAAQ,CAAC,gBAAgB,OAAO,CAAC;AAC/C,SAAO,UAAU,eAAe,MAAM;AACxC;AAGM,SAAU,QACd,OACA,SACA,QAAqB;AAErB,SAAO,gBAAgB,WAAW,OAAO,SAAS,MAAM;AAC1D;AAGM,SAAU,SACd,OACA,SACA,QAAqB;AAErB,SAAO,gBAAgB,SAAS,OAAO,SAAS,MAAM;AACxD;AAGM,SAAU,UACd,OACA,SACA,QAAqB;AAErB,QAAM,gBAAgB,mBAAmB,YAAY,OAAO,OAAO;AACnE,QAAM,QAAkB,CAAA;AACxB,aAAW,OAAO,MAAM,QAAQ,MAAM,mBAAmB;AACzD,aAAW,OAAO,QAAQ,QAAQ,QAAQ,KAAK;AAC/C,gBAAc,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC;AACzC,SAAO,UAAU,eAAe,MAAM;AACxC","debugId":"b0405b47-9ba9-57b1-91cc-c5565c218c44"}
@@ -28,14 +28,17 @@ import {
28
28
  runSchemaShow,
29
29
  runSchemaShowField,
30
30
  runSchemaShowStatus
31
- } from "./chunk-SBNT6SLO.js";
31
+ } from "./chunk-4QQ6PM7M.js";
32
+ import "./chunk-3U3VEWK6.js";
33
+ import "./chunk-Y76TWC45.js";
34
+ import "./chunk-EZFKWSC7.js";
35
+ import "./chunk-DRBV5UC2.js";
36
+ import "./chunk-P5YORJRH.js";
32
37
  import {
33
38
  buildInvalidTypeHint
34
- } from "./chunk-A2W3XKAD.js";
35
- import "./chunk-CN4OAA2G.js";
36
- import "./chunk-CQFZRLXQ.js";
37
- import "./chunk-MZG6I2Q2.js";
38
- import "./chunk-BDDYM4LH.js";
39
+ } from "./chunk-T35XLYZF.js";
40
+ import "./chunk-7C2O74AE.js";
41
+ import "./chunk-5VVUKE3U.js";
39
42
  export {
40
43
  SCHEMA_SUBCOMMANDS,
41
44
  _testOnlySchemaCommand,
@@ -68,4 +71,4 @@ export {
68
71
  runSchemaShowField,
69
72
  runSchemaShowStatus
70
73
  };
71
- //# sourceMappingURL=schema-ICCD3HOP.js.map
74
+ //# sourceMappingURL=schema-2PUXCZ25.js.map
@@ -30,14 +30,17 @@ import {
30
30
  runSchemaShow,
31
31
  runSchemaShowField,
32
32
  runSchemaShowStatus
33
- } from "./chunk-YZWXMDNH.js";
33
+ } from "./chunk-PJ3A56YF.js";
34
+ import "./chunk-57C2RLW5.js";
35
+ import "./chunk-ZAHXPXVY.js";
36
+ import "./chunk-HK72NWAD.js";
37
+ import "./chunk-FJRKQREY.js";
38
+ import "./chunk-US3T3W5J.js";
34
39
  import {
35
40
  buildInvalidTypeHint
36
- } from "./chunk-YZR7UMZ6.js";
37
- import "./chunk-UYLA5ROU.js";
38
- import "./chunk-AOP2EMK3.js";
39
- import "./chunk-FMWQRMHS.js";
40
- import "./chunk-SL2ANJSV.js";
41
+ } from "./chunk-NER3KUUS.js";
42
+ import "./chunk-NNHHXJB2.js";
43
+ import "./chunk-YD5FML7K.js";
41
44
  export {
42
45
  SCHEMA_SUBCOMMANDS,
43
46
  _testOnlySchemaCommand,
@@ -70,6 +73,6 @@ export {
70
73
  runSchemaShowField,
71
74
  runSchemaShowStatus
72
75
  };
73
- //# sourceMappingURL=schema-RHH23PQX.js.map
76
+ //# sourceMappingURL=schema-Y6DXXK2F.js.map
74
77
 
75
78
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3
@@ -9,17 +9,20 @@ import {
9
9
  resolveSearchScoreThreshold,
10
10
  resolveSearchTuning,
11
11
  runSearch
12
- } from "./chunk-Q3XVLRCJ.js";
12
+ } from "./chunk-ZJB3UV5U.js";
13
13
  import "./chunk-ROGZTCCB.js";
14
- import "./chunk-XQCWTSLO.js";
15
- import "./chunk-4IW7STMB.js";
14
+ import "./chunk-YSAH5FY5.js";
16
15
  import "./chunk-QB7XMHJW.js";
17
- import "./chunk-4SHME4VR.js";
18
- import "./chunk-NHKXOMZ5.js";
19
- import "./chunk-UYLA5ROU.js";
20
- import "./chunk-AOP2EMK3.js";
21
- import "./chunk-FMWQRMHS.js";
22
- import "./chunk-SL2ANJSV.js";
16
+ import "./chunk-5JE6SMYS.js";
17
+ import "./chunk-YFIE7YK6.js";
18
+ import "./chunk-7QH7DHUB.js";
19
+ import "./chunk-KGHH652T.js";
20
+ import "./chunk-57C2RLW5.js";
21
+ import "./chunk-HK72NWAD.js";
22
+ import "./chunk-FJRKQREY.js";
23
+ import "./chunk-US3T3W5J.js";
24
+ import "./chunk-NNHHXJB2.js";
25
+ import "./chunk-YD5FML7K.js";
23
26
  export {
24
27
  _testOnlySearchCommand,
25
28
  classifyImplicitSemanticFallbackReason,
@@ -30,6 +33,6 @@ export {
30
33
  resolveSearchTuning,
31
34
  runSearch
32
35
  };
33
- //# sourceMappingURL=search-Z2VGP2Q5.js.map
36
+ //# sourceMappingURL=search-3S72CTD6.js.map
34
37
 
35
38
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3
@@ -7,17 +7,20 @@ import {
7
7
  resolveSearchScoreThreshold,
8
8
  resolveSearchTuning,
9
9
  runSearch
10
- } from "./chunk-R7EMP4JG.js";
10
+ } from "./chunk-5B3X4Y22.js";
11
11
  import "./chunk-VPLDQMW2.js";
12
- import "./chunk-KKHIQOTN.js";
13
- import "./chunk-A222YWOQ.js";
12
+ import "./chunk-7EQNAZX2.js";
14
13
  import "./chunk-R23CSHGI.js";
15
- import "./chunk-724VLYDJ.js";
16
- import "./chunk-3MLQZI3H.js";
17
- import "./chunk-CN4OAA2G.js";
18
- import "./chunk-CQFZRLXQ.js";
19
- import "./chunk-MZG6I2Q2.js";
20
- import "./chunk-BDDYM4LH.js";
14
+ import "./chunk-RX3HQSYG.js";
15
+ import "./chunk-EEY54JMF.js";
16
+ import "./chunk-LEKT4K7I.js";
17
+ import "./chunk-B5KXLBSJ.js";
18
+ import "./chunk-3U3VEWK6.js";
19
+ import "./chunk-EZFKWSC7.js";
20
+ import "./chunk-DRBV5UC2.js";
21
+ import "./chunk-P5YORJRH.js";
22
+ import "./chunk-7C2O74AE.js";
23
+ import "./chunk-5VVUKE3U.js";
21
24
  export {
22
25
  _testOnlySearchCommand,
23
26
  classifyImplicitSemanticFallbackReason,
@@ -28,4 +31,4 @@ export {
28
31
  resolveSearchTuning,
29
32
  runSearch
30
33
  };
31
- //# sourceMappingURL=search-HDDKOPFE.js.map
34
+ //# sourceMappingURL=search-WNUNBQXO.js.map
@@ -5,28 +5,31 @@ import {
5
5
  computeMetadataCoverage,
6
6
  groupItemsByDimension,
7
7
  lifecycleClassifierFromStatusRegistry
8
- } from "./chunk-724VLYDJ.js";
8
+ } from "./chunk-RX3HQSYG.js";
9
9
  import {
10
10
  enforceHistoryStreamPolicyForItems,
11
11
  listAllFrontMatterLight,
12
12
  listAllFrontMatterWithBody
13
- } from "./chunk-CN4OAA2G.js";
14
- import "./chunk-CQFZRLXQ.js";
13
+ } from "./chunk-3U3VEWK6.js";
14
+ import "./chunk-EZFKWSC7.js";
15
15
  import {
16
16
  nowIso
17
- } from "./chunk-MZG6I2Q2.js";
17
+ } from "./chunk-DRBV5UC2.js";
18
18
  import {
19
- EXIT_CODE,
20
19
  PmCliError,
21
20
  getActiveExtensionRegistrations,
21
+ readSettings,
22
+ runActiveOnReadHooks
23
+ } from "./chunk-P5YORJRH.js";
24
+ import "./chunk-7C2O74AE.js";
25
+ import {
26
+ EXIT_CODE,
22
27
  getSettingsPath,
23
28
  pathExists,
24
- readSettings,
25
29
  resolveItemTypeRegistry,
26
30
  resolvePmRoot,
27
- resolveRuntimeStatusRegistry,
28
- runActiveOnReadHooks
29
- } from "./chunk-BDDYM4LH.js";
31
+ resolveRuntimeStatusRegistry
32
+ } from "./chunk-5VVUKE3U.js";
30
33
 
31
34
  // dist/cli/commands/stats.js
32
35
  import fs from "node:fs/promises";
@@ -244,4 +247,4 @@ export {
244
247
  _testOnly,
245
248
  runStats
246
249
  };
247
- //# sourceMappingURL=stats-ETFP37MB.js.map
250
+ //# sourceMappingURL=stats-IJYTRQGV.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../cli/commands/stats.ts", "../../../../../../../../core/history/history-storage-stats.ts"],
4
4
  "sourcesContent": ["/**\n * @module cli/commands/stats\n *\n * Implements the pm stats command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getActiveExtensionRegistrations, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport {\n computeContentFieldUtilization,\n type ContentFieldUtilizationReport,\n} from \"../../core/governance/content-fields.js\";\nimport {\n computeMetadataCoverage,\n groupItemsByDimension,\n lifecycleClassifierFromStatusRegistry,\n type GroupedBreakdown,\n type MetadataCoverageReport,\n} from \"../../core/governance/metadata-coverage.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { computeHistoryStorageStats, type HistoryStorageStats } from \"../../core/history/history-storage-stats.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { resolveRuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type { ItemStatus, ItemType } from \"../../types/index.js\";\n\n/**\n * Documents the stats command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsCommandOptions {\n /** Include aggregate per-stream history storage metrics (sizes, depth, oldest/newest). */\n storage?: boolean;\n /** Include metadata coverage percentages (AC, estimates, resolution, tags, parent) overall and by type. */\n metadataCoverage?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by assignee. */\n byAssignee?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by tag (optionally filtered by --tag-prefix). */\n byTag?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by priority. */\n byPriority?: boolean;\n /** With --by-tag: only consider tags starting with this prefix (e.g. \"domain:\"). */\n tagPrefix?: string;\n /** Include a content-field utilization breakdown (notes/learnings/files/docs/tests/comments/deps/body usage rates). */\n fieldUtilization?: boolean;\n}\n\n/**\n * Documents the stats result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsResult {\n totals: {\n items: number;\n history_streams: number;\n history_entries: number;\n };\n by_type: Record<ItemType, number>;\n by_status: Record<ItemStatus, number>;\n /** Present only with --metadata-coverage: per-field coverage overall and by type. */\n metadata_coverage?: MetadataCoverageReport;\n /** Present only with --by-assignee/--by-tag/--by-priority: lifecycle-bucketed group breakdowns. */\n breakdowns?: {\n assignee?: GroupedBreakdown;\n tag?: GroupedBreakdown;\n priority?: GroupedBreakdown;\n };\n /** Present only with --storage: aggregate history-stream metrics for compaction/planning. */\n storage?: HistoryStorageStats;\n /** Present only with --field-utilization: content-field utilization rates across all items. */\n field_utilization?: ContentFieldUtilizationReport;\n generated_at: string;\n}\n\nfunction zeroByType(itemTypes: string[]): Record<ItemType, number> {\n return itemTypes.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemType, number>,\n );\n}\n\nfunction zeroByStatus(statuses: string[]): Record<ItemStatus, number> {\n return statuses.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemStatus, number>,\n );\n}\n\nfunction countNonEmptyLines(raw: string): number {\n if (raw.trim().length === 0) {\n return 0;\n }\n return raw\n .split(/\\r?\\n/u)\n .filter((line) => line.trim().length > 0)\n .length;\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === \"ENOENT\";\n}\n\nasync function readHistoryStreamContents(pmRoot: string): Promise<Array<{ id: string; raw: string }>> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await pathExists(historyDir))) {\n return [];\n }\n\n await runActiveOnReadHooks({\n path: historyDir,\n scope: \"project\",\n });\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((a, b) => a.localeCompare(b));\n\n const streams: Array<{ id: string; raw: string }> = [];\n for (const file of historyFiles) {\n const historyPath = path.join(historyDir, file);\n let raw: string;\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch (error) {\n if (isNotFoundError(error)) {\n continue;\n }\n throw error;\n }\n await runActiveOnReadHooks({\n path: historyPath,\n scope: \"project\",\n });\n streams.push({ id: file.slice(0, -\".jsonl\".length), raw });\n }\n\n return streams;\n}\n\nexport const _testOnly = {\n zeroByType,\n zeroByStatus,\n countNonEmptyLines,\n readHistoryStreamContents,\n};\n\n/**\n * Implements run stats for the public runtime surface of this module.\n */\nexport async function runStats(global: GlobalOptions, options: StatsCommandOptions = {}): Promise<StatsResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n // Field utilization needs the heavy collections (notes/learnings/files/docs/\n // tests/comments/deps) AND the body, which the light reader drops — so when it\n // is requested we read the WithBody rows and use them for every section.\n const items = options.fieldUtilization\n ? await listAllFrontMatterWithBody(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema)\n : await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"stats\",\n });\n\n const byType = zeroByType(typeRegistry.types);\n const byStatus = zeroByStatus(statusRegistry.definitions.map((definition) => definition.id));\n // zeroByType/zeroByStatus pre-seed a bucket for every registry type/status, and\n // the light front-matter reader drops any item whose type/status falls outside\n // the active registry (parse rejects them) — so every item's bucket is already\n // present here and no on-the-fly initialization is reachable.\n for (const item of items) {\n byType[item.type] += 1;\n byStatus[item.status] += 1;\n }\n\n const streams = await readHistoryStreamContents(pmRoot);\n let historyEntries = 0;\n for (const stream of streams) {\n historyEntries += countNonEmptyLines(stream.raw);\n }\n const storage = options.storage ? computeHistoryStorageStats(streams) : undefined;\n\n const classifier = lifecycleClassifierFromStatusRegistry(statusRegistry);\n const metadataCoverage = options.metadataCoverage ? computeMetadataCoverage(items, classifier) : undefined;\n const breakdowns: NonNullable<StatsResult[\"breakdowns\"]> = {};\n if (options.byAssignee) {\n breakdowns.assignee = groupItemsByDimension(items, \"assignee\", classifier);\n }\n if (options.byTag) {\n breakdowns.tag = groupItemsByDimension(items, \"tag\", classifier, { tagPrefix: options.tagPrefix });\n }\n if (options.byPriority) {\n breakdowns.priority = groupItemsByDimension(items, \"priority\", classifier);\n }\n const hasBreakdowns = Object.keys(breakdowns).length > 0;\n const fieldUtilization = options.fieldUtilization ? computeContentFieldUtilization(items) : undefined;\n\n return {\n totals: {\n items: items.length,\n history_streams: streams.length,\n history_entries: historyEntries,\n },\n by_type: byType,\n by_status: byStatus,\n ...(metadataCoverage ? { metadata_coverage: metadataCoverage } : {}),\n ...(hasBreakdowns ? { breakdowns } : {}),\n ...(storage ? { storage } : {}),\n ...(fieldUtilization ? { field_utilization: fieldUtilization } : {}),\n generated_at: nowIso(),\n };\n}\n", "/**\n * Pure aggregate metrics for history streams (JSONL files).\n * No filesystem access — callers read raw stream contents and pass them in.\n * This module has no Node imports; Buffer is available as a global.\n */\n\n/** Per-history-stream size and timestamp summary used by storage diagnostics. */\nexport interface HistoryStreamStat {\n id: string;\n bytes: number;\n lines: number; // non-empty JSONL entry count\n oldest_ts: string | null; // min parseable ts in this stream, else null\n newest_ts: string | null; // max parseable ts in this stream, else null\n}\n\n/**\n * Documents the history storage entry ref payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageEntryRef {\n id: string;\n ts: string;\n}\n\n/**\n * Documents the history storage stats payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageStats {\n total_streams: number;\n total_lines: number;\n total_bytes: number;\n largest_by_bytes: HistoryStreamStat[]; // top-N desc by bytes, tie-break id asc\n deepest_by_lines: HistoryStreamStat[]; // top-N desc by lines, tie-break id asc\n oldest_entry: HistoryStorageEntryRef | null; // global min ts across all streams\n newest_entry: HistoryStorageEntryRef | null; // global max ts across all streams\n}\n\nfunction parseStreamStat(id: string, raw: string): HistoryStreamStat {\n const bytes = Buffer.byteLength(raw, \"utf8\");\n\n let lines = 0;\n let oldestTs: string | null = null;\n let newestTs: string | null = null;\n let oldestMs = Number.POSITIVE_INFINITY;\n let newestMs = Number.NEGATIVE_INFINITY;\n\n for (const rawLine of raw.split(/\\r?\\n/)) {\n const trimmed = rawLine.trim();\n if (trimmed === \"\") {\n continue;\n }\n lines += 1;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n continue;\n }\n\n if (\n parsed === null ||\n typeof parsed !== \"object\" ||\n !(\"ts\" in (parsed as object)) ||\n typeof (parsed as Record<string, unknown>)[\"ts\"] !== \"string\"\n ) {\n continue;\n }\n\n const ts = (parsed as Record<string, unknown>)[\"ts\"] as string;\n const ms = Date.parse(ts);\n if (Number.isNaN(ms)) {\n continue;\n }\n\n if (ms < oldestMs || (ms === oldestMs && oldestTs !== null && ts < oldestTs)) {\n oldestMs = ms;\n oldestTs = ts;\n }\n if (ms > newestMs || (ms === newestMs && newestTs !== null && ts > newestTs)) {\n newestMs = ms;\n newestTs = ts;\n }\n }\n\n return { id, bytes, lines, oldest_ts: oldestTs, newest_ts: newestTs };\n}\n\n/**\n * Implements compute history storage stats for the public runtime surface of this module.\n */\nexport function computeHistoryStorageStats(\n streams: Array<{ id: string; raw: string }>,\n options?: { topN?: number },\n): HistoryStorageStats {\n const rawTopN = options?.topN ?? 5;\n const topN = Math.max(0, Math.floor(rawTopN));\n\n const stats: HistoryStreamStat[] = streams.map(({ id, raw }) => parseStreamStat(id, raw));\n\n let totalLines = 0;\n let totalBytes = 0;\n let oldestEntry: HistoryStorageEntryRef | null = null;\n let newestEntry: HistoryStorageEntryRef | null = null;\n let globalOldestMs = Number.POSITIVE_INFINITY;\n let globalNewestMs = Number.NEGATIVE_INFINITY;\n\n for (const stat of stats) {\n totalLines += stat.lines;\n totalBytes += stat.bytes;\n\n if (stat.oldest_ts !== null) {\n const ms = Date.parse(stat.oldest_ts);\n if (\n ms < globalOldestMs ||\n (ms === globalOldestMs && oldestEntry !== null && stat.id < oldestEntry.id)\n ) {\n globalOldestMs = ms;\n oldestEntry = { id: stat.id, ts: stat.oldest_ts };\n }\n }\n\n if (stat.newest_ts !== null) {\n const ms = Date.parse(stat.newest_ts);\n if (\n ms > globalNewestMs ||\n (ms === globalNewestMs && newestEntry !== null && stat.id < newestEntry.id)\n ) {\n globalNewestMs = ms;\n newestEntry = { id: stat.id, ts: stat.newest_ts };\n }\n }\n }\n\n const largestByBytes =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.bytes - a.bytes || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n const deepestByLines =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.lines - a.lines || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n return {\n total_streams: streams.length,\n total_lines: totalLines,\n total_bytes: totalBytes,\n largest_by_bytes: largestByBytes,\n deepest_by_lines: deepestByLines,\n oldest_entry: oldestEntry,\n newest_entry: newestEntry,\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,QAAQ;AACf,OAAO,UAAU;;;;;;;;;;AC8BjB,SAAS,gBAAgB,IAAY,KAAW;AAC9C,QAAM,QAAQ,OAAO,WAAW,KAAK,MAAM;AAE3C,MAAI,QAAQ;AACZ,MAAI,WAA0B;AAC9B,MAAI,WAA0B;AAC9B,MAAI,WAAW,OAAO;AACtB,MAAI,WAAW,OAAO;AAEtB,aAAW,WAAW,IAAI,MAAM,OAAO,GAAG;AACxC,UAAM,UAAU,QAAQ,KAAI;AAC5B,QAAI,YAAY,IAAI;AAClB;IACF;AACA,aAAS;AAET,QAAI;AACJ,QAAI;AACF,eAAS,KAAK,MAAM,OAAO;IAC7B,QAAQ;AACN;IACF;AAEA,QACE,WAAW,QACX,OAAO,WAAW,YAClB,EAAE,QAAS,WACX,OAAQ,OAAmC,IAAI,MAAM,UACrD;AACA;IACF;AAEA,UAAM,KAAM,OAAmC,IAAI;AACnD,UAAM,KAAK,KAAK,MAAM,EAAE;AACxB,QAAI,OAAO,MAAM,EAAE,GAAG;AACpB;IACF;AAEA,QAAI,KAAK,YAAa,OAAO,YAAY,aAAa,QAAQ,KAAK,UAAW;AAC5E,iBAAW;AACX,iBAAW;IACb;AACA,QAAI,KAAK,YAAa,OAAO,YAAY,aAAa,QAAQ,KAAK,UAAW;AAC5E,iBAAW;AACX,iBAAW;IACb;EACF;AAEA,SAAO,EAAE,IAAI,OAAO,OAAO,WAAW,UAAU,WAAW,SAAQ;AACrE;AAKM,SAAU,2BACd,SACA,SAA2B;AAE3B,QAAM,UAAU,SAAS,QAAQ;AACjC,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,CAAC;AAE5C,QAAM,QAA6B,QAAQ,IAAI,CAAC,EAAE,IAAI,IAAG,MAAO,gBAAgB,IAAI,GAAG,CAAC;AAExF,MAAI,aAAa;AACjB,MAAI,aAAa;AACjB,MAAI,cAA6C;AACjD,MAAI,cAA6C;AACjD,MAAI,iBAAiB,OAAO;AAC5B,MAAI,iBAAiB,OAAO;AAE5B,aAAW,QAAQ,OAAO;AACxB,kBAAc,KAAK;AACnB,kBAAc,KAAK;AAEnB,QAAI,KAAK,cAAc,MAAM;AAC3B,YAAM,KAAK,KAAK,MAAM,KAAK,SAAS;AACpC,UACE,KAAK,kBACJ,OAAO,kBAAkB,gBAAgB,QAAQ,KAAK,KAAK,YAAY,IACxE;AACA,yBAAiB;AACjB,sBAAc,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,UAAS;MACjD;IACF;AAEA,QAAI,KAAK,cAAc,MAAM;AAC3B,YAAM,KAAK,KAAK,MAAM,KAAK,SAAS;AACpC,UACE,KAAK,kBACJ,OAAO,kBAAkB,gBAAgB,QAAQ,KAAK,KAAK,YAAY,IACxE;AACA,yBAAiB;AACjB,sBAAc,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,UAAS;MACjD;IACF;EACF;AAEA,QAAM,iBACJ,SAAS,IACL,CAAA,IACA,CAAC,GAAG,KAAK,EACN,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC,EAC5D,MAAM,GAAG,IAAI;AAEtB,QAAM,iBACJ,SAAS,IACL,CAAA,IACA,CAAC,GAAG,KAAK,EACN,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC,EAC5D,MAAM,GAAG,IAAI;AAEtB,SAAO;IACL,eAAe,QAAQ;IACvB,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,cAAc;;AAElB;;;;;;;;;;AD7EA,SAAS,WAAW,WAAmB;AACrC,SAAO,UAAU,OACf,CAAC,KAAK,UAAS;AACb,QAAI,KAAK,IAAI;AACb,WAAO;EACT,GACA,CAAA,CAA8B;AAElC;AAEA,SAAS,aAAa,UAAkB;AACtC,SAAO,SAAS,OACd,CAAC,KAAK,UAAS;AACb,QAAI,KAAK,IAAI;AACb,WAAO;EACT,GACA,CAAA,CAAgC;AAEpC;AAEA,SAAS,mBAAmB,KAAW;AACrC,MAAI,IAAI,KAAI,EAAG,WAAW,GAAG;AAC3B,WAAO;EACT;AACA,SAAO,IACJ,MAAM,QAAQ,EACd,OAAO,CAAC,SAAS,KAAK,KAAI,EAAG,SAAS,CAAC,EACvC;AACL;AAEA,SAAS,gBAAgB,OAAc;AACrC,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAU,MAA6B,SAAS;AAClH;AAEA,eAAe,0BAA0B,QAAc;AACrD,QAAM,aAAa,KAAK,KAAK,QAAQ,SAAS;AAC9C,MAAI,CAAE,MAAM,WAAW,UAAU,GAAI;AACnC,WAAO,CAAA;EACT;AAEA,QAAM,qBAAqB;IACzB,MAAM;IACN,OAAO;GACR;AACD,QAAM,gBAAgB,MAAM,GAAG,QAAQ,UAAU,GAC9C,OAAO,CAAC,UAAU,MAAM,SAAS,QAAQ,CAAC,EAC1C,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAEpC,QAAM,UAA8C,CAAA;AACpD,aAAW,QAAQ,cAAc;AAC/B,UAAM,cAAc,KAAK,KAAK,YAAY,IAAI;AAC9C,QAAI;AACJ,QAAI;AACF,YAAM,MAAM,GAAG,SAAS,aAAa,MAAM;IAC7C,SAAS,OAAO;AACd,UAAI,gBAAgB,KAAK,GAAG;AAC1B;MACF;AACA,YAAM;IACR;AACA,UAAM,qBAAqB;MACzB,MAAM;MACN,OAAO;KACR;AACD,YAAQ,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,IAAG,CAAE;EAC3D;AAEA,SAAO;AACT;AAEO,IAAM,YAAY;EACvB;EACA;EACA;EACA;;AAMF,eAAsB,SAASA,SAAuB,UAA+B,CAAA,GAAE;AACrF,QAAM,SAAS,cAAc,QAAQ,IAAG,GAAIA,QAAO,IAAI;AACvD,MAAI,CAAE,MAAM,WAAW,gBAAgB,MAAM,CAAC,GAAI;AAChD,UAAM,IAAI,WAAW,iCAAiC,MAAM,wBAAwB,UAAU,SAAS;EACzG;AAEA,QAAM,WAAW,MAAM,aAAa,MAAM;AAC1C,QAAM,eAAe,wBAAwB,UAAU,gCAA+B,CAAE;AACxF,QAAM,iBAAiB,6BAA6B,SAAS,MAAM;AAInE,QAAM,QAAQ,QAAQ,mBAClB,MAAM,2BAA2B,QAAQ,SAAS,aAAa,aAAa,gBAAgB,QAAW,SAAS,MAAM,IACtH,MAAM,wBAAwB,QAAQ,SAAS,aAAa,aAAa,gBAAgB,QAAW,SAAS,MAAM;AACvH,QAAM,mCAAmC;IACvC;IACA;IACA,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE;IACpC,cAAc;GACf;AAED,QAAM,SAAS,WAAW,aAAa,KAAK;AAC5C,QAAM,WAAW,aAAa,eAAe,YAAY,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC;AAK3F,aAAW,QAAQ,OAAO;AACxB,WAAO,KAAK,IAAI,KAAK;AACrB,aAAS,KAAK,MAAM,KAAK;EAC3B;AAEA,QAAM,UAAU,MAAM,0BAA0B,MAAM;AACtD,MAAI,iBAAiB;AACrB,aAAW,UAAU,SAAS;AAC5B,sBAAkB,mBAAmB,OAAO,GAAG;EACjD;AACA,QAAM,UAAU,QAAQ,UAAU,2BAA2B,OAAO,IAAI;AAExE,QAAM,aAAa,sCAAsC,cAAc;AACvE,QAAM,mBAAmB,QAAQ,mBAAmB,wBAAwB,OAAO,UAAU,IAAI;AACjG,QAAM,aAAqD,CAAA;AAC3D,MAAI,QAAQ,YAAY;AACtB,eAAW,WAAW,sBAAsB,OAAO,YAAY,UAAU;EAC3E;AACA,MAAI,QAAQ,OAAO;AACjB,eAAW,MAAM,sBAAsB,OAAO,OAAO,YAAY,EAAE,WAAW,QAAQ,UAAS,CAAE;EACnG;AACA,MAAI,QAAQ,YAAY;AACtB,eAAW,WAAW,sBAAsB,OAAO,YAAY,UAAU;EAC3E;AACA,QAAM,gBAAgB,OAAO,KAAK,UAAU,EAAE,SAAS;AACvD,QAAM,mBAAmB,QAAQ,mBAAmB,+BAA+B,KAAK,IAAI;AAE5F,SAAO;IACL,QAAQ;MACN,OAAO,MAAM;MACb,iBAAiB,QAAQ;MACzB,iBAAiB;;IAEnB,SAAS;IACT,WAAW;IACX,GAAI,mBAAmB,EAAE,mBAAmB,iBAAgB,IAAK,CAAA;IACjE,GAAI,gBAAgB,EAAE,WAAU,IAAK,CAAA;IACrC,GAAI,UAAU,EAAE,QAAO,IAAK,CAAA;IAC5B,GAAI,mBAAmB,EAAE,mBAAmB,iBAAgB,IAAK,CAAA;IACjE,cAAc,OAAM;;AAExB;",
5
+ "mappings": "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",
6
6
  "names": ["global"]
7
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]="67063306-59b8-53f5-8715-fd2e7f8705dd")}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]="fb69c821-7bb6-5b15-8cd2-319f496f077e")}catch(e){}}();
3
3
  import {
4
4
  computeContentFieldUtilization
5
5
  } from "./chunk-QB7XMHJW.js";
@@ -7,28 +7,31 @@ import {
7
7
  computeMetadataCoverage,
8
8
  groupItemsByDimension,
9
9
  lifecycleClassifierFromStatusRegistry
10
- } from "./chunk-4SHME4VR.js";
10
+ } from "./chunk-5JE6SMYS.js";
11
11
  import {
12
12
  enforceHistoryStreamPolicyForItems,
13
13
  listAllFrontMatterLight,
14
14
  listAllFrontMatterWithBody
15
- } from "./chunk-UYLA5ROU.js";
16
- import "./chunk-AOP2EMK3.js";
15
+ } from "./chunk-57C2RLW5.js";
16
+ import "./chunk-HK72NWAD.js";
17
17
  import {
18
18
  nowIso
19
- } from "./chunk-FMWQRMHS.js";
19
+ } from "./chunk-FJRKQREY.js";
20
20
  import {
21
- EXIT_CODE,
22
21
  PmCliError,
23
22
  getActiveExtensionRegistrations,
23
+ readSettings,
24
+ runActiveOnReadHooks
25
+ } from "./chunk-US3T3W5J.js";
26
+ import "./chunk-NNHHXJB2.js";
27
+ import {
28
+ EXIT_CODE,
24
29
  getSettingsPath,
25
30
  pathExists,
26
- readSettings,
27
31
  resolveItemTypeRegistry,
28
32
  resolvePmRoot,
29
- resolveRuntimeStatusRegistry,
30
- runActiveOnReadHooks
31
- } from "./chunk-SL2ANJSV.js";
33
+ resolveRuntimeStatusRegistry
34
+ } from "./chunk-YD5FML7K.js";
32
35
 
33
36
  // dist/cli/commands/stats.js
34
37
  import fs from "node:fs/promises";
@@ -232,6 +235,6 @@ export {
232
235
  _testOnly,
233
236
  runStats
234
237
  };
235
- //# sourceMappingURL=stats-DHMRXHOB.js.map
238
+ //# sourceMappingURL=stats-L2D5Y2O5.js.map
236
239
 
237
- //# debugId=67063306-59b8-53f5-8715-fd2e7f8705dd
240
+ //# debugId=fb69c821-7bb6-5b15-8cd2-319f496f077e
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../cli/commands/stats.ts","../../../../../../../../core/history/history-storage-stats.ts"],"sourcesContent":["/**\n * @module cli/commands/stats\n *\n * Implements the pm stats command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getActiveExtensionRegistrations, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport {\n computeContentFieldUtilization,\n type ContentFieldUtilizationReport,\n} from \"../../core/governance/content-fields.js\";\nimport {\n computeMetadataCoverage,\n groupItemsByDimension,\n lifecycleClassifierFromStatusRegistry,\n type GroupedBreakdown,\n type MetadataCoverageReport,\n} from \"../../core/governance/metadata-coverage.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { computeHistoryStorageStats, type HistoryStorageStats } from \"../../core/history/history-storage-stats.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { resolveRuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type { ItemStatus, ItemType } from \"../../types/index.js\";\n\n/**\n * Documents the stats command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsCommandOptions {\n /** Include aggregate per-stream history storage metrics (sizes, depth, oldest/newest). */\n storage?: boolean;\n /** Include metadata coverage percentages (AC, estimates, resolution, tags, parent) overall and by type. */\n metadataCoverage?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by assignee. */\n byAssignee?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by tag (optionally filtered by --tag-prefix). */\n byTag?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by priority. */\n byPriority?: boolean;\n /** With --by-tag: only consider tags starting with this prefix (e.g. \"domain:\"). */\n tagPrefix?: string;\n /** Include a content-field utilization breakdown (notes/learnings/files/docs/tests/comments/deps/body usage rates). */\n fieldUtilization?: boolean;\n}\n\n/**\n * Documents the stats result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsResult {\n totals: {\n items: number;\n history_streams: number;\n history_entries: number;\n };\n by_type: Record<ItemType, number>;\n by_status: Record<ItemStatus, number>;\n /** Present only with --metadata-coverage: per-field coverage overall and by type. */\n metadata_coverage?: MetadataCoverageReport;\n /** Present only with --by-assignee/--by-tag/--by-priority: lifecycle-bucketed group breakdowns. */\n breakdowns?: {\n assignee?: GroupedBreakdown;\n tag?: GroupedBreakdown;\n priority?: GroupedBreakdown;\n };\n /** Present only with --storage: aggregate history-stream metrics for compaction/planning. */\n storage?: HistoryStorageStats;\n /** Present only with --field-utilization: content-field utilization rates across all items. */\n field_utilization?: ContentFieldUtilizationReport;\n generated_at: string;\n}\n\nfunction zeroByType(itemTypes: string[]): Record<ItemType, number> {\n return itemTypes.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemType, number>,\n );\n}\n\nfunction zeroByStatus(statuses: string[]): Record<ItemStatus, number> {\n return statuses.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemStatus, number>,\n );\n}\n\nfunction countNonEmptyLines(raw: string): number {\n if (raw.trim().length === 0) {\n return 0;\n }\n return raw\n .split(/\\r?\\n/u)\n .filter((line) => line.trim().length > 0)\n .length;\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === \"ENOENT\";\n}\n\nasync function readHistoryStreamContents(pmRoot: string): Promise<Array<{ id: string; raw: string }>> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await pathExists(historyDir))) {\n return [];\n }\n\n await runActiveOnReadHooks({\n path: historyDir,\n scope: \"project\",\n });\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((a, b) => a.localeCompare(b));\n\n const streams: Array<{ id: string; raw: string }> = [];\n for (const file of historyFiles) {\n const historyPath = path.join(historyDir, file);\n let raw: string;\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch (error) {\n if (isNotFoundError(error)) {\n continue;\n }\n throw error;\n }\n await runActiveOnReadHooks({\n path: historyPath,\n scope: \"project\",\n });\n streams.push({ id: file.slice(0, -\".jsonl\".length), raw });\n }\n\n return streams;\n}\n\nexport const _testOnly = {\n zeroByType,\n zeroByStatus,\n countNonEmptyLines,\n readHistoryStreamContents,\n};\n\n/**\n * Implements run stats for the public runtime surface of this module.\n */\nexport async function runStats(global: GlobalOptions, options: StatsCommandOptions = {}): Promise<StatsResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n // Field utilization needs the heavy collections (notes/learnings/files/docs/\n // tests/comments/deps) AND the body, which the light reader drops — so when it\n // is requested we read the WithBody rows and use them for every section.\n const items = options.fieldUtilization\n ? await listAllFrontMatterWithBody(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema)\n : await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"stats\",\n });\n\n const byType = zeroByType(typeRegistry.types);\n const byStatus = zeroByStatus(statusRegistry.definitions.map((definition) => definition.id));\n // zeroByType/zeroByStatus pre-seed a bucket for every registry type/status, and\n // the light front-matter reader drops any item whose type/status falls outside\n // the active registry (parse rejects them) — so every item's bucket is already\n // present here and no on-the-fly initialization is reachable.\n for (const item of items) {\n byType[item.type] += 1;\n byStatus[item.status] += 1;\n }\n\n const streams = await readHistoryStreamContents(pmRoot);\n let historyEntries = 0;\n for (const stream of streams) {\n historyEntries += countNonEmptyLines(stream.raw);\n }\n const storage = options.storage ? computeHistoryStorageStats(streams) : undefined;\n\n const classifier = lifecycleClassifierFromStatusRegistry(statusRegistry);\n const metadataCoverage = options.metadataCoverage ? computeMetadataCoverage(items, classifier) : undefined;\n const breakdowns: NonNullable<StatsResult[\"breakdowns\"]> = {};\n if (options.byAssignee) {\n breakdowns.assignee = groupItemsByDimension(items, \"assignee\", classifier);\n }\n if (options.byTag) {\n breakdowns.tag = groupItemsByDimension(items, \"tag\", classifier, { tagPrefix: options.tagPrefix });\n }\n if (options.byPriority) {\n breakdowns.priority = groupItemsByDimension(items, \"priority\", classifier);\n }\n const hasBreakdowns = Object.keys(breakdowns).length > 0;\n const fieldUtilization = options.fieldUtilization ? computeContentFieldUtilization(items) : undefined;\n\n return {\n totals: {\n items: items.length,\n history_streams: streams.length,\n history_entries: historyEntries,\n },\n by_type: byType,\n by_status: byStatus,\n ...(metadataCoverage ? { metadata_coverage: metadataCoverage } : {}),\n ...(hasBreakdowns ? { breakdowns } : {}),\n ...(storage ? { storage } : {}),\n ...(fieldUtilization ? { field_utilization: fieldUtilization } : {}),\n generated_at: nowIso(),\n };\n}\n","/**\n * Pure aggregate metrics for history streams (JSONL files).\n * No filesystem access — callers read raw stream contents and pass them in.\n * This module has no Node imports; Buffer is available as a global.\n */\n\n/** Per-history-stream size and timestamp summary used by storage diagnostics. */\nexport interface HistoryStreamStat {\n id: string;\n bytes: number;\n lines: number; // non-empty JSONL entry count\n oldest_ts: string | null; // min parseable ts in this stream, else null\n newest_ts: string | null; // max parseable ts in this stream, else null\n}\n\n/**\n * Documents the history storage entry ref payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageEntryRef {\n id: string;\n ts: string;\n}\n\n/**\n * Documents the history storage stats payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageStats {\n total_streams: number;\n total_lines: number;\n total_bytes: number;\n largest_by_bytes: HistoryStreamStat[]; // top-N desc by bytes, tie-break id asc\n deepest_by_lines: HistoryStreamStat[]; // top-N desc by lines, tie-break id asc\n oldest_entry: HistoryStorageEntryRef | null; // global min ts across all streams\n newest_entry: HistoryStorageEntryRef | null; // global max ts across all streams\n}\n\nfunction parseStreamStat(id: string, raw: string): HistoryStreamStat {\n const bytes = Buffer.byteLength(raw, \"utf8\");\n\n let lines = 0;\n let oldestTs: string | null = null;\n let newestTs: string | null = null;\n let oldestMs = Number.POSITIVE_INFINITY;\n let newestMs = Number.NEGATIVE_INFINITY;\n\n for (const rawLine of raw.split(/\\r?\\n/)) {\n const trimmed = rawLine.trim();\n if (trimmed === \"\") {\n continue;\n }\n lines += 1;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n continue;\n }\n\n if (\n parsed === null ||\n typeof parsed !== \"object\" ||\n !(\"ts\" in (parsed as object)) ||\n typeof (parsed as Record<string, unknown>)[\"ts\"] !== \"string\"\n ) {\n continue;\n }\n\n const ts = (parsed as Record<string, unknown>)[\"ts\"] as string;\n const ms = Date.parse(ts);\n if (Number.isNaN(ms)) {\n continue;\n }\n\n if (ms < oldestMs || (ms === oldestMs && oldestTs !== null && ts < oldestTs)) {\n oldestMs = ms;\n oldestTs = ts;\n }\n if (ms > newestMs || (ms === newestMs && newestTs !== null && ts > newestTs)) {\n newestMs = ms;\n newestTs = ts;\n }\n }\n\n return { id, bytes, lines, oldest_ts: oldestTs, newest_ts: newestTs };\n}\n\n/**\n * Implements compute history storage stats for the public runtime surface of this module.\n */\nexport function computeHistoryStorageStats(\n streams: Array<{ id: string; raw: string }>,\n options?: { topN?: number },\n): HistoryStorageStats {\n const rawTopN = options?.topN ?? 5;\n const topN = Math.max(0, Math.floor(rawTopN));\n\n const stats: HistoryStreamStat[] = streams.map(({ id, raw }) => parseStreamStat(id, raw));\n\n let totalLines = 0;\n let totalBytes = 0;\n let oldestEntry: HistoryStorageEntryRef | null = null;\n let newestEntry: HistoryStorageEntryRef | null = null;\n let globalOldestMs = Number.POSITIVE_INFINITY;\n let globalNewestMs = Number.NEGATIVE_INFINITY;\n\n for (const stat of stats) {\n totalLines += stat.lines;\n totalBytes += stat.bytes;\n\n if (stat.oldest_ts !== null) {\n const ms = Date.parse(stat.oldest_ts);\n if (\n ms < globalOldestMs ||\n (ms === globalOldestMs && oldestEntry !== null && stat.id < oldestEntry.id)\n ) {\n globalOldestMs = ms;\n oldestEntry = { id: stat.id, ts: stat.oldest_ts };\n }\n }\n\n if (stat.newest_ts !== null) {\n const ms = Date.parse(stat.newest_ts);\n if (\n ms > globalNewestMs ||\n (ms === globalNewestMs && newestEntry !== null && stat.id < newestEntry.id)\n ) {\n globalNewestMs = ms;\n newestEntry = { id: stat.id, ts: stat.newest_ts };\n }\n }\n }\n\n const largestByBytes =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.bytes - a.bytes || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n const deepestByLines =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.lines - a.lines || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n return {\n total_streams: streams.length,\n total_lines: totalLines,\n total_bytes: totalBytes,\n largest_by_bytes: largestByBytes,\n deepest_by_lines: deepestByLines,\n oldest_entry: oldestEntry,\n newest_entry: newestEntry,\n };\n}\n"],"names":[],"mappings":"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","debugId":"67063306-59b8-53f5-8715-fd2e7f8705dd"}
1
+ {"version":3,"sources":["../../../../../../../../cli/commands/stats.ts","../../../../../../../../core/history/history-storage-stats.ts"],"sourcesContent":["/**\n * @module cli/commands/stats\n *\n * Implements the pm stats command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getActiveExtensionRegistrations, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport {\n computeContentFieldUtilization,\n type ContentFieldUtilizationReport,\n} from \"../../core/governance/content-fields.js\";\nimport {\n computeMetadataCoverage,\n groupItemsByDimension,\n lifecycleClassifierFromStatusRegistry,\n type GroupedBreakdown,\n type MetadataCoverageReport,\n} from \"../../core/governance/metadata-coverage.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { computeHistoryStorageStats, type HistoryStorageStats } from \"../../core/history/history-storage-stats.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { resolveRuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type { ItemStatus, ItemType } from \"../../types/index.js\";\n\n/**\n * Documents the stats command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsCommandOptions {\n /** Include aggregate per-stream history storage metrics (sizes, depth, oldest/newest). */\n storage?: boolean;\n /** Include metadata coverage percentages (AC, estimates, resolution, tags, parent) overall and by type. */\n metadataCoverage?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by assignee. */\n byAssignee?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by tag (optionally filtered by --tag-prefix). */\n byTag?: boolean;\n /** Include a lifecycle-bucketed breakdown grouped by priority. */\n byPriority?: boolean;\n /** With --by-tag: only consider tags starting with this prefix (e.g. \"domain:\"). */\n tagPrefix?: string;\n /** Include a content-field utilization breakdown (notes/learnings/files/docs/tests/comments/deps/body usage rates). */\n fieldUtilization?: boolean;\n}\n\n/**\n * Documents the stats result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StatsResult {\n totals: {\n items: number;\n history_streams: number;\n history_entries: number;\n };\n by_type: Record<ItemType, number>;\n by_status: Record<ItemStatus, number>;\n /** Present only with --metadata-coverage: per-field coverage overall and by type. */\n metadata_coverage?: MetadataCoverageReport;\n /** Present only with --by-assignee/--by-tag/--by-priority: lifecycle-bucketed group breakdowns. */\n breakdowns?: {\n assignee?: GroupedBreakdown;\n tag?: GroupedBreakdown;\n priority?: GroupedBreakdown;\n };\n /** Present only with --storage: aggregate history-stream metrics for compaction/planning. */\n storage?: HistoryStorageStats;\n /** Present only with --field-utilization: content-field utilization rates across all items. */\n field_utilization?: ContentFieldUtilizationReport;\n generated_at: string;\n}\n\nfunction zeroByType(itemTypes: string[]): Record<ItemType, number> {\n return itemTypes.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemType, number>,\n );\n}\n\nfunction zeroByStatus(statuses: string[]): Record<ItemStatus, number> {\n return statuses.reduce(\n (acc, value) => {\n acc[value] = 0;\n return acc;\n },\n {} as Record<ItemStatus, number>,\n );\n}\n\nfunction countNonEmptyLines(raw: string): number {\n if (raw.trim().length === 0) {\n return 0;\n }\n return raw\n .split(/\\r?\\n/u)\n .filter((line) => line.trim().length > 0)\n .length;\n}\n\nfunction isNotFoundError(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === \"ENOENT\";\n}\n\nasync function readHistoryStreamContents(pmRoot: string): Promise<Array<{ id: string; raw: string }>> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await pathExists(historyDir))) {\n return [];\n }\n\n await runActiveOnReadHooks({\n path: historyDir,\n scope: \"project\",\n });\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((a, b) => a.localeCompare(b));\n\n const streams: Array<{ id: string; raw: string }> = [];\n for (const file of historyFiles) {\n const historyPath = path.join(historyDir, file);\n let raw: string;\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch (error) {\n if (isNotFoundError(error)) {\n continue;\n }\n throw error;\n }\n await runActiveOnReadHooks({\n path: historyPath,\n scope: \"project\",\n });\n streams.push({ id: file.slice(0, -\".jsonl\".length), raw });\n }\n\n return streams;\n}\n\nexport const _testOnly = {\n zeroByType,\n zeroByStatus,\n countNonEmptyLines,\n readHistoryStreamContents,\n};\n\n/**\n * Implements run stats for the public runtime surface of this module.\n */\nexport async function runStats(global: GlobalOptions, options: StatsCommandOptions = {}): Promise<StatsResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n // Field utilization needs the heavy collections (notes/learnings/files/docs/\n // tests/comments/deps) AND the body, which the light reader drops — so when it\n // is requested we read the WithBody rows and use them for every section.\n const items = options.fieldUtilization\n ? await listAllFrontMatterWithBody(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema)\n : await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"stats\",\n });\n\n const byType = zeroByType(typeRegistry.types);\n const byStatus = zeroByStatus(statusRegistry.definitions.map((definition) => definition.id));\n // zeroByType/zeroByStatus pre-seed a bucket for every registry type/status, and\n // the light front-matter reader drops any item whose type/status falls outside\n // the active registry (parse rejects them) — so every item's bucket is already\n // present here and no on-the-fly initialization is reachable.\n for (const item of items) {\n byType[item.type] += 1;\n byStatus[item.status] += 1;\n }\n\n const streams = await readHistoryStreamContents(pmRoot);\n let historyEntries = 0;\n for (const stream of streams) {\n historyEntries += countNonEmptyLines(stream.raw);\n }\n const storage = options.storage ? computeHistoryStorageStats(streams) : undefined;\n\n const classifier = lifecycleClassifierFromStatusRegistry(statusRegistry);\n const metadataCoverage = options.metadataCoverage ? computeMetadataCoverage(items, classifier) : undefined;\n const breakdowns: NonNullable<StatsResult[\"breakdowns\"]> = {};\n if (options.byAssignee) {\n breakdowns.assignee = groupItemsByDimension(items, \"assignee\", classifier);\n }\n if (options.byTag) {\n breakdowns.tag = groupItemsByDimension(items, \"tag\", classifier, { tagPrefix: options.tagPrefix });\n }\n if (options.byPriority) {\n breakdowns.priority = groupItemsByDimension(items, \"priority\", classifier);\n }\n const hasBreakdowns = Object.keys(breakdowns).length > 0;\n const fieldUtilization = options.fieldUtilization ? computeContentFieldUtilization(items) : undefined;\n\n return {\n totals: {\n items: items.length,\n history_streams: streams.length,\n history_entries: historyEntries,\n },\n by_type: byType,\n by_status: byStatus,\n ...(metadataCoverage ? { metadata_coverage: metadataCoverage } : {}),\n ...(hasBreakdowns ? { breakdowns } : {}),\n ...(storage ? { storage } : {}),\n ...(fieldUtilization ? { field_utilization: fieldUtilization } : {}),\n generated_at: nowIso(),\n };\n}\n","/**\n * Pure aggregate metrics for history streams (JSONL files).\n * No filesystem access — callers read raw stream contents and pass them in.\n * This module has no Node imports; Buffer is available as a global.\n */\n\n/** Per-history-stream size and timestamp summary used by storage diagnostics. */\nexport interface HistoryStreamStat {\n id: string;\n bytes: number;\n lines: number; // non-empty JSONL entry count\n oldest_ts: string | null; // min parseable ts in this stream, else null\n newest_ts: string | null; // max parseable ts in this stream, else null\n}\n\n/**\n * Documents the history storage entry ref payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageEntryRef {\n id: string;\n ts: string;\n}\n\n/**\n * Documents the history storage stats payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryStorageStats {\n total_streams: number;\n total_lines: number;\n total_bytes: number;\n largest_by_bytes: HistoryStreamStat[]; // top-N desc by bytes, tie-break id asc\n deepest_by_lines: HistoryStreamStat[]; // top-N desc by lines, tie-break id asc\n oldest_entry: HistoryStorageEntryRef | null; // global min ts across all streams\n newest_entry: HistoryStorageEntryRef | null; // global max ts across all streams\n}\n\nfunction parseStreamStat(id: string, raw: string): HistoryStreamStat {\n const bytes = Buffer.byteLength(raw, \"utf8\");\n\n let lines = 0;\n let oldestTs: string | null = null;\n let newestTs: string | null = null;\n let oldestMs = Number.POSITIVE_INFINITY;\n let newestMs = Number.NEGATIVE_INFINITY;\n\n for (const rawLine of raw.split(/\\r?\\n/)) {\n const trimmed = rawLine.trim();\n if (trimmed === \"\") {\n continue;\n }\n lines += 1;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n continue;\n }\n\n if (\n parsed === null ||\n typeof parsed !== \"object\" ||\n !(\"ts\" in (parsed as object)) ||\n typeof (parsed as Record<string, unknown>)[\"ts\"] !== \"string\"\n ) {\n continue;\n }\n\n const ts = (parsed as Record<string, unknown>)[\"ts\"] as string;\n const ms = Date.parse(ts);\n if (Number.isNaN(ms)) {\n continue;\n }\n\n if (ms < oldestMs || (ms === oldestMs && oldestTs !== null && ts < oldestTs)) {\n oldestMs = ms;\n oldestTs = ts;\n }\n if (ms > newestMs || (ms === newestMs && newestTs !== null && ts > newestTs)) {\n newestMs = ms;\n newestTs = ts;\n }\n }\n\n return { id, bytes, lines, oldest_ts: oldestTs, newest_ts: newestTs };\n}\n\n/**\n * Implements compute history storage stats for the public runtime surface of this module.\n */\nexport function computeHistoryStorageStats(\n streams: Array<{ id: string; raw: string }>,\n options?: { topN?: number },\n): HistoryStorageStats {\n const rawTopN = options?.topN ?? 5;\n const topN = Math.max(0, Math.floor(rawTopN));\n\n const stats: HistoryStreamStat[] = streams.map(({ id, raw }) => parseStreamStat(id, raw));\n\n let totalLines = 0;\n let totalBytes = 0;\n let oldestEntry: HistoryStorageEntryRef | null = null;\n let newestEntry: HistoryStorageEntryRef | null = null;\n let globalOldestMs = Number.POSITIVE_INFINITY;\n let globalNewestMs = Number.NEGATIVE_INFINITY;\n\n for (const stat of stats) {\n totalLines += stat.lines;\n totalBytes += stat.bytes;\n\n if (stat.oldest_ts !== null) {\n const ms = Date.parse(stat.oldest_ts);\n if (\n ms < globalOldestMs ||\n (ms === globalOldestMs && oldestEntry !== null && stat.id < oldestEntry.id)\n ) {\n globalOldestMs = ms;\n oldestEntry = { id: stat.id, ts: stat.oldest_ts };\n }\n }\n\n if (stat.newest_ts !== null) {\n const ms = Date.parse(stat.newest_ts);\n if (\n ms > globalNewestMs ||\n (ms === globalNewestMs && newestEntry !== null && stat.id < newestEntry.id)\n ) {\n globalNewestMs = ms;\n newestEntry = { id: stat.id, ts: stat.newest_ts };\n }\n }\n }\n\n const largestByBytes =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.bytes - a.bytes || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n const deepestByLines =\n topN === 0\n ? []\n : [...stats]\n .sort((a, b) => b.lines - a.lines || a.id.localeCompare(b.id))\n .slice(0, topN);\n\n return {\n total_streams: streams.length,\n total_lines: totalLines,\n total_bytes: totalBytes,\n largest_by_bytes: largestByBytes,\n deepest_by_lines: deepestByLines,\n oldest_entry: oldestEntry,\n newest_entry: newestEntry,\n };\n}\n"],"names":[],"mappings":"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","debugId":"fb69c821-7bb6-5b15-8cd2-319f496f077e"}
@@ -1,18 +1,21 @@
1
1
  import {
2
2
  flushTelemetryQueueNow
3
- } from "./chunk-TO4KCIOT.js";
3
+ } from "./chunk-QHZO65XW.js";
4
4
  import {
5
5
  nowIso
6
- } from "./chunk-MZG6I2Q2.js";
6
+ } from "./chunk-DRBV5UC2.js";
7
7
  import {
8
- EXIT_CODE,
9
8
  PmCliError,
10
- pathExists,
11
- readFileIfExists,
12
9
  readSettings,
13
- resolveGlobalPmRoot,
14
10
  writeSettings
15
- } from "./chunk-BDDYM4LH.js";
11
+ } from "./chunk-P5YORJRH.js";
12
+ import "./chunk-7C2O74AE.js";
13
+ import {
14
+ EXIT_CODE,
15
+ pathExists,
16
+ readFileIfExists,
17
+ resolveGlobalPmRoot
18
+ } from "./chunk-5VVUKE3U.js";
16
19
 
17
20
  // dist/cli/commands/telemetry.js
18
21
  import fs from "node:fs/promises";
@@ -303,4 +306,4 @@ export {
303
306
  TELEMETRY_SUBCOMMANDS,
304
307
  runTelemetry
305
308
  };
306
- //# sourceMappingURL=telemetry-ZRBM22QD.js.map
309
+ //# sourceMappingURL=telemetry-L2CVOKVN.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../cli/commands/telemetry.ts"],
4
4
  "sourcesContent": ["/**\n * @module cli/commands/telemetry\n *\n * Implements the pm telemetry command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport { flushTelemetryQueueNow } from \"../../core/telemetry/runtime.js\";\n\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_RUNTIME_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\");\nconst DEFAULT_STATS_LIMIT = 20;\n\nexport const TELEMETRY_SUBCOMMANDS = [\"status\", \"flush\", \"stats\", \"clear\"] as const;\n/**\n * Restricts telemetry subcommand values accepted by command, SDK, and storage contracts.\n */\nexport type TelemetrySubcommand = (typeof TELEMETRY_SUBCOMMANDS)[number];\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n}\n\ninterface QueuedTelemetryEventRecord {\n attempts: number;\n client_schema_version?: number;\n event: {\n event_id?: string;\n event_type?: string;\n schema_version?: number;\n command?: string;\n payload?: Record<string, unknown>;\n };\n}\n\ninterface ParsedTelemetryQueue {\n rows_total: number;\n valid_entries: number;\n invalid_rows: number;\n entries: QueuedTelemetryEventRecord[];\n}\n\ninterface TelemetryStatusSummary {\n enabled: boolean;\n endpoint: string;\n queue_path: string;\n state_path: string;\n queue_rows_total: number;\n queue_entries: number;\n queue_invalid_rows: number;\n queue_size_bytes: number;\n last_attempted_flush_at: string | null;\n last_successful_flush_at: string | null;\n last_failed_flush_at: string | null;\n last_failed_flush_error: string | null;\n}\n\n/**\n * Documents the telemetry command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TelemetryCommandOptions {\n subcommand?: string;\n limit?: string | number;\n}\n\ninterface TelemetryStatsBucket {\n command: string;\n count: number;\n event_type_counts: Record<string, number>;\n max_attempts: number;\n event_schema_versions: number[];\n client_schema_versions: number[];\n /**\n * Latency percentiles (nearest-rank) over `duration_ms` from the bucket's\n * `command_finish` events. Present only when at least one finish event carries\n * a finite `duration_ms`; `command_start`/`command_error` events are excluded.\n */\n duration_p50_ms?: number;\n duration_p95_ms?: number;\n duration_max_ms?: number;\n /**\n * Success/failure tally derived from `command_finish` payload `ok`. A finish\n * event whose `ok` is missing or not strictly `true` is counted as an error\n * (conservative). Present only when the bucket has at least one finish event;\n * `ok_count + error_count` equals that finish-event count.\n */\n ok_count?: number;\n error_count?: number;\n error_rate?: number;\n /** Distribution of `command_resolution` over `command_finish` events; present only when non-empty. */\n command_resolution_counts?: Record<string, number>;\n}\n\ninterface TelemetryStatsBucketAccumulator {\n count: number;\n max_attempts: number;\n event_type_counts: Record<string, number>;\n event_schema_versions: Set<number>;\n client_schema_versions: Set<number>;\n finish_durations_ms: number[];\n ok_count: number;\n error_count: number;\n resolution_counts: Record<string, number>;\n}\n\ninterface NormalizedTelemetryQueueEntry {\n command: string;\n eventType: string;\n eventSchemaVersion: number | undefined;\n clientSchemaVersion: number | undefined;\n}\n\n/**\n * Returns the nearest-rank percentile of an ascending-sorted, non-empty array.\n *\n * Uses the nearest-rank method (rank = ceil(fraction × n), 1-based, clamped into\n * range) so the result is always an observed sample value with no interpolation.\n */\nfunction nearestRankPercentile(sortedAscending: number[], fraction: number): number {\n const rank = Math.ceil(fraction * sortedAscending.length);\n const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));\n return sortedAscending[index];\n}\n\nfunction normalizeTelemetryQueueEntry(entry: QueuedTelemetryEventRecord): NormalizedTelemetryQueueEntry {\n const command = typeof entry.event.command === \"string\" && entry.event.command.trim().length > 0\n ? entry.event.command\n : \"<unknown>\";\n const eventType = typeof entry.event.event_type === \"string\" && entry.event.event_type.trim().length > 0\n ? entry.event.event_type\n : \"unknown\";\n const eventSchemaVersion = typeof entry.event.schema_version === \"number\" && Number.isFinite(entry.event.schema_version)\n ? Math.trunc(entry.event.schema_version)\n : undefined;\n const clientSchemaVersion =\n typeof entry.client_schema_version === \"number\" && Number.isFinite(entry.client_schema_version)\n ? Math.trunc(entry.client_schema_version)\n : undefined;\n return { command, eventType, eventSchemaVersion, clientSchemaVersion };\n}\n\nfunction createTelemetryStatsAccumulator(): TelemetryStatsBucketAccumulator {\n return {\n count: 0,\n max_attempts: 0,\n event_type_counts: {},\n event_schema_versions: new Set<number>(),\n client_schema_versions: new Set<number>(),\n finish_durations_ms: [],\n ok_count: 0,\n error_count: 0,\n resolution_counts: {},\n };\n}\n\nfunction recordTelemetryFinishPayload(current: TelemetryStatsBucketAccumulator, payload: Record<string, unknown> | undefined): void {\n const durationMs = typeof payload?.duration_ms === \"number\" && Number.isFinite(payload.duration_ms)\n ? payload.duration_ms\n : undefined;\n if (durationMs !== undefined) {\n current.finish_durations_ms.push(durationMs);\n }\n if (payload?.ok === true) {\n current.ok_count += 1;\n } else {\n current.error_count += 1;\n }\n const resolution = typeof payload?.command_resolution === \"string\" && payload.command_resolution.trim().length > 0\n ? payload.command_resolution\n : undefined;\n if (resolution !== undefined) {\n current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;\n }\n}\n\nfunction recordTelemetryQueueEntry(\n grouped: Map<string, TelemetryStatsBucketAccumulator>,\n entry: QueuedTelemetryEventRecord,\n): void {\n const normalized = normalizeTelemetryQueueEntry(entry);\n const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();\n const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;\n current.count += 1;\n current.max_attempts = Math.max(current.max_attempts, attempts);\n current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;\n if (normalized.eventSchemaVersion !== undefined) {\n current.event_schema_versions.add(normalized.eventSchemaVersion);\n }\n if (normalized.clientSchemaVersion !== undefined) {\n current.client_schema_versions.add(normalized.clientSchemaVersion);\n }\n if (normalized.eventType === \"command_finish\") {\n recordTelemetryFinishPayload(current, entry.event.payload);\n }\n grouped.set(normalized.command, current);\n}\n\nfunction buildTelemetryStatsBucket(command: string, value: TelemetryStatsBucketAccumulator): TelemetryStatsBucket {\n const finishCount = value.ok_count + value.error_count;\n const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);\n const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));\n return {\n command,\n count: value.count,\n event_type_counts: Object.fromEntries(\n Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0])),\n ),\n max_attempts: value.max_attempts,\n event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),\n client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),\n ...(sortedDurations.length > 0\n ? {\n duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),\n duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),\n duration_max_ms: sortedDurations[sortedDurations.length - 1],\n }\n : {}),\n ...(finishCount > 0\n ? {\n ok_count: value.ok_count,\n error_count: value.error_count,\n error_rate: value.error_count / finishCount,\n }\n : {}),\n ...(resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}),\n };\n}\n\nfunction normalizeTelemetrySubcommand(value: string | undefined): TelemetrySubcommand {\n const normalized = (value ?? \"status\").trim().toLowerCase();\n if ((TELEMETRY_SUBCOMMANDS as readonly string[]).includes(normalized)) {\n return normalized as TelemetrySubcommand;\n }\n // `value` is always a defined string here: an undefined subcommand normalizes\n // to \"status\" above (a valid value) and never reaches this throw.\n throw new PmCliError(\n `Unknown pm telemetry subcommand \"${value}\". Allowed: ${TELEMETRY_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_subcommand\",\n examples: [\n \"pm telemetry status\",\n \"pm telemetry flush\",\n \"pm telemetry stats --limit 10\",\n \"pm telemetry clear\",\n ],\n },\n );\n}\n\nfunction parseTelemetryStatsLimit(raw: string | number | undefined): number {\n if (raw === undefined) {\n return DEFAULT_STATS_LIMIT;\n }\n if (typeof raw === \"number\") {\n if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return raw;\n }\n const trimmed = raw.trim();\n if (trimmed.length === 0 || !/^\\d+$/.test(trimmed)) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n const parsed = Number.parseInt(trimmed, 10);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction parseTelemetryQueue(raw: string | null): ParsedTelemetryQueue {\n if (raw === null || raw.trim().length === 0) {\n return {\n rows_total: 0,\n valid_entries: 0,\n invalid_rows: 0,\n entries: [],\n };\n }\n const entries: QueuedTelemetryEventRecord[] = [];\n let rowsTotal = 0;\n let invalidRows = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n rowsTotal += 1;\n try {\n const parsed = JSON.parse(trimmed) as QueuedTelemetryEventRecord;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n typeof parsed.event === \"object\" &&\n parsed.event !== null\n ) {\n entries.push(parsed);\n } else {\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n rows_total: rowsTotal,\n valid_entries: entries.length,\n invalid_rows: invalidRows,\n entries,\n };\n}\n\nasync function readTelemetryRuntimeState(statePath: string): Promise<TelemetryRuntimeStateRecord> {\n const stateRaw = await readFileIfExists(statePath);\n if (stateRaw === null || stateRaw.trim().length === 0) {\n return {};\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return parsed;\n }\n } catch {\n // Ignore malformed state files; status command is observational.\n }\n return {};\n}\n\nasync function buildTelemetryStatusSummary(globalPmRoot: string): Promise<TelemetryStatusSummary> {\n const settings = await readSettings(globalPmRoot);\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const runtimeState = await readTelemetryRuntimeState(statePath);\n return {\n enabled: settings.telemetry.enabled,\n endpoint: settings.telemetry.endpoint,\n queue_path: queuePath,\n state_path: statePath,\n queue_rows_total: queue.rows_total,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_size_bytes: queueRaw === null ? 0 : Buffer.byteLength(queueRaw, \"utf8\"),\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n };\n}\n\nfunction buildTelemetryStatsBuckets(entries: QueuedTelemetryEventRecord[]): TelemetryStatsBucket[] {\n const grouped = new Map<string, TelemetryStatsBucketAccumulator>();\n for (const entry of entries) {\n // Latency + outcome distribution come from command_finish payloads only:\n // command_finish always carries duration_ms/ok/command_resolution at every\n // capture level, while start/error events do not.\n recordTelemetryQueueEntry(grouped, entry);\n }\n return [...grouped.entries()]\n .map(([command, value]) => buildTelemetryStatsBucket(command, value))\n .sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));\n}\n\n/**\n * Implements run telemetry for the public runtime surface of this module.\n */\nexport async function runTelemetry(options: TelemetryCommandOptions, _global: GlobalOptions): Promise<Record<string, unknown>> {\n void _global;\n const subcommand = normalizeTelemetrySubcommand(options.subcommand);\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n if (subcommand === \"status\") {\n return {\n action: \"telemetry\",\n subcommand,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"flush\") {\n const before = await buildTelemetryStatusSummary(globalPmRoot);\n await flushTelemetryQueueNow(globalPmRoot);\n const after = await buildTelemetryStatusSummary(globalPmRoot);\n return {\n action: \"telemetry\",\n subcommand,\n queue_entries_before: before.queue_entries,\n queue_entries_after: after.queue_entries,\n queue_drained: after.queue_entries < before.queue_entries,\n status: after,\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"stats\") {\n const limit = parseTelemetryStatsLimit(options.limit);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const buckets = buildTelemetryStatsBuckets(queue.entries);\n const selected = buckets.slice(0, limit);\n return {\n action: \"telemetry\",\n subcommand,\n limit,\n total_commands: buckets.length,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_rows_total: queue.rows_total,\n truncated: buckets.length > selected.length,\n stats: selected,\n generated_at: nowIso(),\n };\n }\n\n const settings = await readSettings(globalPmRoot);\n const previousEnabled = settings.telemetry.enabled;\n const previousInstallationId = settings.telemetry.installation_id;\n const previousFirstRunPromptCompleted = settings.telemetry.first_run_prompt_completed;\n settings.telemetry.enabled = false;\n settings.telemetry.first_run_prompt_completed = true;\n settings.telemetry.installation_id = \"\";\n const settingsChanged =\n previousEnabled !== settings.telemetry.enabled ||\n previousInstallationId !== settings.telemetry.installation_id ||\n previousFirstRunPromptCompleted !== settings.telemetry.first_run_prompt_completed;\n if (settingsChanged) {\n await writeSettings(globalPmRoot, settings, \"telemetry:clear\");\n }\n\n const telemetryRuntimePath = path.join(globalPmRoot, TELEMETRY_RUNTIME_RELATIVE_PATH);\n const existed = await pathExists(telemetryRuntimePath);\n await fs.rm(telemetryRuntimePath, { recursive: true, force: true });\n const queueExistsAfter = await pathExists(queuePath);\n const stateExistsAfter = await pathExists(statePath);\n return {\n action: \"telemetry\",\n subcommand,\n settings_changed: settingsChanged,\n runtime_dir_removed: existed && !(await pathExists(telemetryRuntimePath)),\n queue_exists_after: queueExistsAfter,\n state_exists_after: stateExistsAfter,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }