@unbrained/pm-cli 2026.7.1 → 2026.7.2

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 (563) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cli/commander-usage.d.ts +2 -0
  3. package/dist/cli/commander-usage.js +58 -47
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.js +102 -79
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +278 -243
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.js +89 -68
  10. package/dist/cli/commands/close-many.js.map +1 -1
  11. package/dist/cli/commands/close.js +157 -129
  12. package/dist/cli/commands/close.js.map +1 -1
  13. package/dist/cli/commands/comments-audit.js +50 -42
  14. package/dist/cli/commands/comments-audit.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +2 -0
  16. package/dist/cli/commands/config.js +443 -879
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/context.js +365 -287
  19. package/dist/cli/commands/context.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +352 -238
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/dedupe-audit.js +46 -39
  23. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  24. package/dist/cli/commands/dedupe-merge.js +88 -69
  25. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  26. package/dist/cli/commands/get.js +114 -81
  27. package/dist/cli/commands/get.js.map +1 -1
  28. package/dist/cli/commands/health.d.ts +17 -0
  29. package/dist/cli/commands/health.js +446 -307
  30. package/dist/cli/commands/health.js.map +1 -1
  31. package/dist/cli/commands/history-compact.js +209 -140
  32. package/dist/cli/commands/history-compact.js.map +1 -1
  33. package/dist/cli/commands/history-redact.js +162 -119
  34. package/dist/cli/commands/history-redact.js.map +1 -1
  35. package/dist/cli/commands/history-repair.js +120 -85
  36. package/dist/cli/commands/history-repair.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +8 -2
  38. package/dist/cli/commands/init.js +263 -162
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.js +152 -102
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/next.js +49 -32
  43. package/dist/cli/commands/next.js.map +1 -1
  44. package/dist/cli/commands/plan.js +373 -298
  45. package/dist/cli/commands/plan.js.map +1 -1
  46. package/dist/cli/commands/recurrence-parsers.js +43 -25
  47. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  48. package/dist/cli/commands/reindex.d.ts +21 -5
  49. package/dist/cli/commands/reindex.js +345 -205
  50. package/dist/cli/commands/reindex.js.map +1 -1
  51. package/dist/cli/commands/restore.d.ts +8 -7
  52. package/dist/cli/commands/restore.js +105 -69
  53. package/dist/cli/commands/restore.js.map +1 -1
  54. package/dist/cli/commands/schema.js +33 -30
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +10 -2
  57. package/dist/cli/commands/search.js +503 -470
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/telemetry.js +98 -87
  60. package/dist/cli/commands/telemetry.js.map +1 -1
  61. package/dist/cli/commands/test-all.js +237 -168
  62. package/dist/cli/commands/test-all.js.map +1 -1
  63. package/dist/cli/commands/test.d.ts +6 -5
  64. package/dist/cli/commands/test.js +424 -344
  65. package/dist/cli/commands/test.js.map +1 -1
  66. package/dist/cli/commands/update-many.js +57 -42
  67. package/dist/cli/commands/update-many.js.map +1 -1
  68. package/dist/cli/commands/update.d.ts +1 -1
  69. package/dist/cli/commands/update.js +738 -671
  70. package/dist/cli/commands/update.js.map +1 -1
  71. package/dist/cli/commands/validate.d.ts +18 -1
  72. package/dist/cli/commands/validate.js +466 -343
  73. package/dist/cli/commands/validate.js.map +1 -1
  74. package/dist/cli/error-guidance.js +399 -357
  75. package/dist/cli/error-guidance.js.map +1 -1
  76. package/dist/cli/main.d.ts +47 -0
  77. package/dist/cli/main.js +428 -341
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migration-gates.js +22 -45
  80. package/dist/cli/migration-gates.js.map +1 -1
  81. package/dist/cli/register-list-query.js +94 -105
  82. package/dist/cli/register-list-query.js.map +1 -1
  83. package/dist/cli/register-mutation.js +400 -416
  84. package/dist/cli/register-mutation.js.map +1 -1
  85. package/dist/cli/register-operations.js +86 -66
  86. package/dist/cli/register-operations.js.map +1 -1
  87. package/dist/cli/register-setup.js +120 -101
  88. package/dist/cli/register-setup.js.map +1 -1
  89. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
  90. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  91. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
  92. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
  94. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  95. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
  96. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
  97. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
  98. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
  102. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
  104. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  105. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
  109. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
  113. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
  115. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
  117. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
  119. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
  121. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  122. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
  123. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
  125. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
  127. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
  129. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
  131. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  134. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
  140. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  141. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
  143. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
  144. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
  146. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
  148. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
  150. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
  151. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
  153. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
  154. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
  156. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
  163. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
  166. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
  167. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
  168. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
  170. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
  171. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
  173. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  174. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
  175. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
  176. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
  178. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
  179. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
  181. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
  182. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  183. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
  184. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
  186. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
  189. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
  191. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
  192. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
  193. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
  195. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
  197. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
  199. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
  201. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  202. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
  203. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
  205. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
  206. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
  207. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
  209. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  210. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
  213. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
  214. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
  215. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
  216. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  217. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
  218. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
  220. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  221. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
  222. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
  223. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  224. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  225. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  226. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  227. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
  228. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
  229. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
  230. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
  232. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  233. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
  234. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
  235. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
  236. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  237. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
  238. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
  239. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
  240. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
  241. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
  242. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
  243. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
  244. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
  245. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
  246. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
  247. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
  248. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
  249. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
  250. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
  251. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
  252. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
  253. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
  254. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
  256. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
  258. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  259. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
  260. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  261. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  262. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
  263. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
  264. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
  266. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  267. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  268. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
  269. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
  270. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
  272. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
  274. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  275. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
  276. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
  277. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
  278. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
  279. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
  280. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  281. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
  282. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  283. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
  284. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
  285. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
  286. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  287. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
  288. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
  290. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
  291. package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
  292. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
  294. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
  296. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
  298. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
  300. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
  302. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
  304. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
  306. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
  308. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  309. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  310. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  311. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
  312. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
  313. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
  314. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
  315. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
  316. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
  317. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
  318. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  319. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
  320. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
  322. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
  323. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  324. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  326. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  327. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
  328. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
  330. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  331. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  332. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
  333. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
  334. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
  335. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
  336. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
  338. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
  339. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
  340. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
  342. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  343. package/dist/cli-bundle/main.js +945 -812
  344. package/dist/cli-bundle/main.js.map +3 -3
  345. package/dist/core/config/nested-settings.js +89 -67
  346. package/dist/core/config/nested-settings.js.map +1 -1
  347. package/dist/core/governance/metadata-coverage.js +20 -28
  348. package/dist/core/governance/metadata-coverage.js.map +1 -1
  349. package/dist/core/history/drift-scan.js +93 -81
  350. package/dist/core/history/drift-scan.js.map +1 -1
  351. package/dist/core/item/item-type-definition.js +14 -14
  352. package/dist/core/item/item-type-definition.js.map +1 -1
  353. package/dist/core/item/type-registry.js +87 -82
  354. package/dist/core/item/type-registry.js.map +1 -1
  355. package/dist/core/output/mutation-projection.js +42 -26
  356. package/dist/core/output/mutation-projection.js.map +1 -1
  357. package/dist/core/schema/runtime-schema.js +34 -28
  358. package/dist/core/schema/runtime-schema.js.map +1 -1
  359. package/dist/core/search/semantic-defaults.js +64 -37
  360. package/dist/core/search/semantic-defaults.js.map +1 -1
  361. package/dist/core/search/vector-stores.js +32 -17
  362. package/dist/core/search/vector-stores.js.map +1 -1
  363. package/dist/core/sentry/helpers.js +31 -28
  364. package/dist/core/sentry/helpers.js.map +1 -1
  365. package/dist/core/sentry/instrument.js +54 -43
  366. package/dist/core/sentry/instrument.js.map +1 -1
  367. package/dist/core/store/front-matter-cache.js +239 -153
  368. package/dist/core/store/front-matter-cache.js.map +1 -1
  369. package/dist/core/store/item-store.js +33 -26
  370. package/dist/core/store/item-store.js.map +1 -1
  371. package/dist/core/store/settings.js +247 -203
  372. package/dist/core/store/settings.js.map +1 -1
  373. package/dist/core/test/background-runs.js +189 -160
  374. package/dist/core/test/background-runs.js.map +1 -1
  375. package/package.json +2 -2
  376. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  377. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  378. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  379. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  380. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  381. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-4DSGXSBL.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  394. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  396. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  400. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-UYUYDGIB.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  411. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  413. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  414. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  415. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  416. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  417. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  418. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  419. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  420. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  421. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  422. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  423. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  424. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  425. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  426. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  427. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  428. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  429. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  430. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  431. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  432. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  433. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  434. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  435. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  437. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  439. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  440. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  441. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  442. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  443. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  444. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  445. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  446. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  447. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  448. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  450. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  451. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  452. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  453. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  454. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  455. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  456. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  457. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  458. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-CUC4JY3U.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
@@ -7,17 +7,17 @@ import {
7
7
  resolveSearchScoreThreshold,
8
8
  resolveSearchTuning,
9
9
  runSearch
10
- } from "./chunk-BZCEN4JA.js";
10
+ } from "./chunk-6ZMBJRDJ.js";
11
11
  import "./chunk-VPLDQMW2.js";
12
- import "./chunk-4DSGXSBL.js";
13
- import "./chunk-3S2KT7NG.js";
12
+ import "./chunk-7TH5NMVB.js";
13
+ import "./chunk-W47SML5B.js";
14
14
  import "./chunk-R23CSHGI.js";
15
- import "./chunk-NFDPYAIP.js";
16
- import "./chunk-4DUVCVLZ.js";
17
- import "./chunk-3K2M5OYU.js";
18
- import "./chunk-BHO33VBQ.js";
19
- import "./chunk-WYDHYJPO.js";
20
- import "./chunk-RVUALSJF.js";
15
+ import "./chunk-36UGKF4O.js";
16
+ import "./chunk-JMK5GCK2.js";
17
+ import "./chunk-JXAUVO6X.js";
18
+ import "./chunk-IEEJQCZ4.js";
19
+ import "./chunk-AIAIXG7I.js";
20
+ import "./chunk-7NSPKJUS.js";
21
21
  export {
22
22
  _testOnlySearchCommand,
23
23
  classifyImplicitSemanticFallbackReason,
@@ -28,4 +28,4 @@ export {
28
28
  resolveSearchTuning,
29
29
  runSearch
30
30
  };
31
- //# sourceMappingURL=search-KILGT37L.js.map
31
+ //# sourceMappingURL=search-FP7MEU4S.js.map
@@ -9,17 +9,17 @@ import {
9
9
  resolveSearchScoreThreshold,
10
10
  resolveSearchTuning,
11
11
  runSearch
12
- } from "./chunk-FFMQB7WR.js";
12
+ } from "./chunk-SYVUU7EK.js";
13
13
  import "./chunk-ROGZTCCB.js";
14
- import "./chunk-UYUYDGIB.js";
15
- import "./chunk-5CGRF3L5.js";
14
+ import "./chunk-TPOFWBMY.js";
15
+ import "./chunk-Q6K2OACU.js";
16
16
  import "./chunk-QB7XMHJW.js";
17
- import "./chunk-3VGN2UWE.js";
18
- import "./chunk-UZIWVBE6.js";
19
- import "./chunk-JSU5P7VS.js";
20
- import "./chunk-QCWF6IYD.js";
21
- import "./chunk-AXIDKKAT.js";
22
- import "./chunk-7R4QEMZZ.js";
17
+ import "./chunk-EMPGXBUF.js";
18
+ import "./chunk-2CHRYUXL.js";
19
+ import "./chunk-NRZS637N.js";
20
+ import "./chunk-KN3URLKS.js";
21
+ import "./chunk-K2VYLVX4.js";
22
+ import "./chunk-I66WE2HE.js";
23
23
  export {
24
24
  _testOnlySearchCommand,
25
25
  classifyImplicitSemanticFallbackReason,
@@ -30,6 +30,6 @@ export {
30
30
  resolveSearchTuning,
31
31
  runSearch
32
32
  };
33
- //# sourceMappingURL=search-AXPXKZER.js.map
33
+ //# sourceMappingURL=search-K4CFLQ5S.js.map
34
34
 
35
35
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3
@@ -7,16 +7,16 @@ import {
7
7
  computeMetadataCoverage,
8
8
  groupItemsByDimension,
9
9
  lifecycleClassifierFromStatusRegistry
10
- } from "./chunk-3VGN2UWE.js";
10
+ } from "./chunk-EMPGXBUF.js";
11
11
  import {
12
12
  enforceHistoryStreamPolicyForItems,
13
13
  listAllFrontMatterLight,
14
14
  listAllFrontMatterWithBody
15
- } from "./chunk-JSU5P7VS.js";
16
- import "./chunk-QCWF6IYD.js";
15
+ } from "./chunk-NRZS637N.js";
16
+ import "./chunk-KN3URLKS.js";
17
17
  import {
18
18
  nowIso
19
- } from "./chunk-AXIDKKAT.js";
19
+ } from "./chunk-K2VYLVX4.js";
20
20
  import {
21
21
  EXIT_CODE,
22
22
  PmCliError,
@@ -28,7 +28,7 @@ import {
28
28
  resolvePmRoot,
29
29
  resolveRuntimeStatusRegistry,
30
30
  runActiveOnReadHooks
31
- } from "./chunk-7R4QEMZZ.js";
31
+ } from "./chunk-I66WE2HE.js";
32
32
 
33
33
  // dist/cli/commands/stats.js
34
34
  import fs from "node:fs/promises";
@@ -232,6 +232,6 @@ export {
232
232
  _testOnly,
233
233
  runStats
234
234
  };
235
- //# sourceMappingURL=stats-PSYVVTNZ.js.map
235
+ //# sourceMappingURL=stats-NJJCALEZ.js.map
236
236
 
237
237
  //# debugId=67063306-59b8-53f5-8715-fd2e7f8705dd
@@ -5,16 +5,16 @@ import {
5
5
  computeMetadataCoverage,
6
6
  groupItemsByDimension,
7
7
  lifecycleClassifierFromStatusRegistry
8
- } from "./chunk-NFDPYAIP.js";
8
+ } from "./chunk-36UGKF4O.js";
9
9
  import {
10
10
  enforceHistoryStreamPolicyForItems,
11
11
  listAllFrontMatterLight,
12
12
  listAllFrontMatterWithBody
13
- } from "./chunk-3K2M5OYU.js";
14
- import "./chunk-BHO33VBQ.js";
13
+ } from "./chunk-JXAUVO6X.js";
14
+ import "./chunk-IEEJQCZ4.js";
15
15
  import {
16
16
  nowIso
17
- } from "./chunk-WYDHYJPO.js";
17
+ } from "./chunk-AIAIXG7I.js";
18
18
  import {
19
19
  EXIT_CODE,
20
20
  PmCliError,
@@ -26,7 +26,7 @@ import {
26
26
  resolvePmRoot,
27
27
  resolveRuntimeStatusRegistry,
28
28
  runActiveOnReadHooks
29
- } from "./chunk-RVUALSJF.js";
29
+ } from "./chunk-7NSPKJUS.js";
30
30
 
31
31
  // dist/cli/commands/stats.js
32
32
  import fs from "node:fs/promises";
@@ -244,4 +244,4 @@ export {
244
244
  _testOnly,
245
245
  runStats
246
246
  };
247
- //# sourceMappingURL=stats-W5KNVJWQ.js.map
247
+ //# sourceMappingURL=stats-XT6QRKQY.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  flushTelemetryQueueNow
3
- } from "./chunk-GJ326ZKX.js";
3
+ } from "./chunk-H4GRLYJS.js";
4
4
  import {
5
5
  nowIso
6
- } from "./chunk-WYDHYJPO.js";
6
+ } from "./chunk-AIAIXG7I.js";
7
7
  import {
8
8
  EXIT_CODE,
9
9
  PmCliError,
@@ -12,7 +12,7 @@ import {
12
12
  readSettings,
13
13
  resolveGlobalPmRoot,
14
14
  writeSettings
15
- } from "./chunk-RVUALSJF.js";
15
+ } from "./chunk-7NSPKJUS.js";
16
16
 
17
17
  // dist/cli/commands/telemetry.js
18
18
  import fs from "node:fs/promises";
@@ -20,7 +20,7 @@ import path from "node:path";
20
20
  !(function() {
21
21
  try {
22
22
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
23
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "859d6b37-ab86-5c58-9fa1-4417222c238c");
23
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "73a9de9c-dca7-5204-98b7-0b422515da56");
24
24
  } catch (e2) {
25
25
  }
26
26
  })();
@@ -34,6 +34,83 @@ function nearestRankPercentile(sortedAscending, fraction) {
34
34
  const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));
35
35
  return sortedAscending[index];
36
36
  }
37
+ function normalizeTelemetryQueueEntry(entry) {
38
+ const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
39
+ const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
40
+ const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
41
+ const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
42
+ return { command, eventType, eventSchemaVersion, clientSchemaVersion };
43
+ }
44
+ function createTelemetryStatsAccumulator() {
45
+ return {
46
+ count: 0,
47
+ max_attempts: 0,
48
+ event_type_counts: {},
49
+ event_schema_versions: /* @__PURE__ */ new Set(),
50
+ client_schema_versions: /* @__PURE__ */ new Set(),
51
+ finish_durations_ms: [],
52
+ ok_count: 0,
53
+ error_count: 0,
54
+ resolution_counts: {}
55
+ };
56
+ }
57
+ function recordTelemetryFinishPayload(current, payload) {
58
+ const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
59
+ if (durationMs !== void 0) {
60
+ current.finish_durations_ms.push(durationMs);
61
+ }
62
+ if (payload?.ok === true) {
63
+ current.ok_count += 1;
64
+ } else {
65
+ current.error_count += 1;
66
+ }
67
+ const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
68
+ if (resolution !== void 0) {
69
+ current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
70
+ }
71
+ }
72
+ function recordTelemetryQueueEntry(grouped, entry) {
73
+ const normalized = normalizeTelemetryQueueEntry(entry);
74
+ const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();
75
+ const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;
76
+ current.count += 1;
77
+ current.max_attempts = Math.max(current.max_attempts, attempts);
78
+ current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;
79
+ if (normalized.eventSchemaVersion !== void 0) {
80
+ current.event_schema_versions.add(normalized.eventSchemaVersion);
81
+ }
82
+ if (normalized.clientSchemaVersion !== void 0) {
83
+ current.client_schema_versions.add(normalized.clientSchemaVersion);
84
+ }
85
+ if (normalized.eventType === "command_finish") {
86
+ recordTelemetryFinishPayload(current, entry.event.payload);
87
+ }
88
+ grouped.set(normalized.command, current);
89
+ }
90
+ function buildTelemetryStatsBucket(command, value) {
91
+ const finishCount = value.ok_count + value.error_count;
92
+ const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
93
+ const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
94
+ return {
95
+ command,
96
+ count: value.count,
97
+ event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
98
+ max_attempts: value.max_attempts,
99
+ event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
100
+ client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
101
+ ...sortedDurations.length > 0 ? {
102
+ duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
103
+ duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
104
+ duration_max_ms: sortedDurations[sortedDurations.length - 1]
105
+ } : {},
106
+ ...finishCount > 0 ? {
107
+ ok_count: value.ok_count,
108
+ error_count: value.error_count,
109
+ error_rate: value.error_count / finishCount
110
+ } : {},
111
+ ...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
112
+ };
113
+ }
37
114
  function normalizeTelemetrySubcommand(value) {
38
115
  const normalized = (value ?? "status").trim().toLowerCase();
39
116
  if (TELEMETRY_SUBCOMMANDS.includes(normalized)) {
@@ -144,72 +221,9 @@ async function buildTelemetryStatusSummary(globalPmRoot) {
144
221
  function buildTelemetryStatsBuckets(entries) {
145
222
  const grouped = /* @__PURE__ */ new Map();
146
223
  for (const entry of entries) {
147
- const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
148
- const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
149
- const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
150
- const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
151
- const current = grouped.get(command) ?? {
152
- count: 0,
153
- max_attempts: 0,
154
- event_type_counts: {},
155
- event_schema_versions: /* @__PURE__ */ new Set(),
156
- client_schema_versions: /* @__PURE__ */ new Set(),
157
- finish_durations_ms: [],
158
- ok_count: 0,
159
- error_count: 0,
160
- resolution_counts: {}
161
- };
162
- current.count += 1;
163
- current.max_attempts = Math.max(current.max_attempts, Math.max(0, Math.trunc(entry.attempts)));
164
- current.event_type_counts[eventType] = (current.event_type_counts[eventType] ?? 0) + 1;
165
- if (eventSchemaVersion !== void 0) {
166
- current.event_schema_versions.add(eventSchemaVersion);
167
- }
168
- if (clientSchemaVersion !== void 0) {
169
- current.client_schema_versions.add(clientSchemaVersion);
170
- }
171
- if (eventType === "command_finish") {
172
- const payload = entry.event.payload;
173
- const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
174
- if (durationMs !== void 0) {
175
- current.finish_durations_ms.push(durationMs);
176
- }
177
- if (payload?.ok === true) {
178
- current.ok_count += 1;
179
- } else {
180
- current.error_count += 1;
181
- }
182
- const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
183
- if (resolution !== void 0) {
184
- current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
185
- }
186
- }
187
- grouped.set(command, current);
224
+ recordTelemetryQueueEntry(grouped, entry);
188
225
  }
189
- return [...grouped.entries()].map(([command, value]) => {
190
- const finishCount = value.ok_count + value.error_count;
191
- const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
192
- const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
193
- return {
194
- command,
195
- count: value.count,
196
- event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
197
- max_attempts: value.max_attempts,
198
- event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
199
- client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
200
- ...sortedDurations.length > 0 ? {
201
- duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
202
- duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
203
- duration_max_ms: sortedDurations[sortedDurations.length - 1]
204
- } : {},
205
- ...finishCount > 0 ? {
206
- ok_count: value.ok_count,
207
- error_count: value.error_count,
208
- error_rate: value.error_count / finishCount
209
- } : {},
210
- ...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
211
- };
212
- }).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
226
+ return [...grouped.entries()].map(([command, value]) => buildTelemetryStatsBucket(command, value)).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
213
227
  }
214
228
  async function runTelemetry(options, _global) {
215
229
  void _global;
@@ -289,4 +303,4 @@ export {
289
303
  TELEMETRY_SUBCOMMANDS,
290
304
  runTelemetry
291
305
  };
292
- //# sourceMappingURL=telemetry-GAHHQTOS.js.map
306
+ //# sourceMappingURL=telemetry-5SQ5UDXC.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/commands/telemetry.ts"],
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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",
6
+ "names": []
7
+ }
@@ -1,11 +1,11 @@
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]="15b48ad8-a1a0-5365-be25-0b8682a800f8")}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]="fdec6e18-ebbc-5924-b761-36a1fbf0b092")}catch(e){}}();
3
3
  import {
4
4
  flushTelemetryQueueNow
5
- } from "./chunk-AVEE5EHK.js";
5
+ } from "./chunk-LTRAF2D7.js";
6
6
  import {
7
7
  nowIso
8
- } from "./chunk-AXIDKKAT.js";
8
+ } from "./chunk-K2VYLVX4.js";
9
9
  import {
10
10
  EXIT_CODE,
11
11
  PmCliError,
@@ -14,7 +14,7 @@ import {
14
14
  readSettings,
15
15
  resolveGlobalPmRoot,
16
16
  writeSettings
17
- } from "./chunk-7R4QEMZZ.js";
17
+ } from "./chunk-I66WE2HE.js";
18
18
 
19
19
  // dist/cli/commands/telemetry.js
20
20
  import fs from "node:fs/promises";
@@ -29,6 +29,83 @@ function nearestRankPercentile(sortedAscending, fraction) {
29
29
  const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));
30
30
  return sortedAscending[index];
31
31
  }
32
+ function normalizeTelemetryQueueEntry(entry) {
33
+ const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
34
+ const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
35
+ const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
36
+ const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
37
+ return { command, eventType, eventSchemaVersion, clientSchemaVersion };
38
+ }
39
+ function createTelemetryStatsAccumulator() {
40
+ return {
41
+ count: 0,
42
+ max_attempts: 0,
43
+ event_type_counts: {},
44
+ event_schema_versions: /* @__PURE__ */ new Set(),
45
+ client_schema_versions: /* @__PURE__ */ new Set(),
46
+ finish_durations_ms: [],
47
+ ok_count: 0,
48
+ error_count: 0,
49
+ resolution_counts: {}
50
+ };
51
+ }
52
+ function recordTelemetryFinishPayload(current, payload) {
53
+ const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
54
+ if (durationMs !== void 0) {
55
+ current.finish_durations_ms.push(durationMs);
56
+ }
57
+ if (payload?.ok === true) {
58
+ current.ok_count += 1;
59
+ } else {
60
+ current.error_count += 1;
61
+ }
62
+ const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
63
+ if (resolution !== void 0) {
64
+ current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
65
+ }
66
+ }
67
+ function recordTelemetryQueueEntry(grouped, entry) {
68
+ const normalized = normalizeTelemetryQueueEntry(entry);
69
+ const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();
70
+ const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;
71
+ current.count += 1;
72
+ current.max_attempts = Math.max(current.max_attempts, attempts);
73
+ current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;
74
+ if (normalized.eventSchemaVersion !== void 0) {
75
+ current.event_schema_versions.add(normalized.eventSchemaVersion);
76
+ }
77
+ if (normalized.clientSchemaVersion !== void 0) {
78
+ current.client_schema_versions.add(normalized.clientSchemaVersion);
79
+ }
80
+ if (normalized.eventType === "command_finish") {
81
+ recordTelemetryFinishPayload(current, entry.event.payload);
82
+ }
83
+ grouped.set(normalized.command, current);
84
+ }
85
+ function buildTelemetryStatsBucket(command, value) {
86
+ const finishCount = value.ok_count + value.error_count;
87
+ const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
88
+ const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
89
+ return {
90
+ command,
91
+ count: value.count,
92
+ event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
93
+ max_attempts: value.max_attempts,
94
+ event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
95
+ client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
96
+ ...sortedDurations.length > 0 ? {
97
+ duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
98
+ duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
99
+ duration_max_ms: sortedDurations[sortedDurations.length - 1]
100
+ } : {},
101
+ ...finishCount > 0 ? {
102
+ ok_count: value.ok_count,
103
+ error_count: value.error_count,
104
+ error_rate: value.error_count / finishCount
105
+ } : {},
106
+ ...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
107
+ };
108
+ }
32
109
  function normalizeTelemetrySubcommand(value) {
33
110
  const normalized = (value ?? "status").trim().toLowerCase();
34
111
  if (TELEMETRY_SUBCOMMANDS.includes(normalized)) {
@@ -139,72 +216,9 @@ async function buildTelemetryStatusSummary(globalPmRoot) {
139
216
  function buildTelemetryStatsBuckets(entries) {
140
217
  const grouped = /* @__PURE__ */ new Map();
141
218
  for (const entry of entries) {
142
- const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
143
- const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
144
- const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
145
- const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
146
- const current = grouped.get(command) ?? {
147
- count: 0,
148
- max_attempts: 0,
149
- event_type_counts: {},
150
- event_schema_versions: /* @__PURE__ */ new Set(),
151
- client_schema_versions: /* @__PURE__ */ new Set(),
152
- finish_durations_ms: [],
153
- ok_count: 0,
154
- error_count: 0,
155
- resolution_counts: {}
156
- };
157
- current.count += 1;
158
- current.max_attempts = Math.max(current.max_attempts, Math.max(0, Math.trunc(entry.attempts)));
159
- current.event_type_counts[eventType] = (current.event_type_counts[eventType] ?? 0) + 1;
160
- if (eventSchemaVersion !== void 0) {
161
- current.event_schema_versions.add(eventSchemaVersion);
162
- }
163
- if (clientSchemaVersion !== void 0) {
164
- current.client_schema_versions.add(clientSchemaVersion);
165
- }
166
- if (eventType === "command_finish") {
167
- const payload = entry.event.payload;
168
- const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
169
- if (durationMs !== void 0) {
170
- current.finish_durations_ms.push(durationMs);
171
- }
172
- if (payload?.ok === true) {
173
- current.ok_count += 1;
174
- } else {
175
- current.error_count += 1;
176
- }
177
- const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
178
- if (resolution !== void 0) {
179
- current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
180
- }
181
- }
182
- grouped.set(command, current);
219
+ recordTelemetryQueueEntry(grouped, entry);
183
220
  }
184
- return [...grouped.entries()].map(([command, value]) => {
185
- const finishCount = value.ok_count + value.error_count;
186
- const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
187
- const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
188
- return {
189
- command,
190
- count: value.count,
191
- event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
192
- max_attempts: value.max_attempts,
193
- event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
194
- client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
195
- ...sortedDurations.length > 0 ? {
196
- duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
197
- duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
198
- duration_max_ms: sortedDurations[sortedDurations.length - 1]
199
- } : {},
200
- ...finishCount > 0 ? {
201
- ok_count: value.ok_count,
202
- error_count: value.error_count,
203
- error_rate: value.error_count / finishCount
204
- } : {},
205
- ...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
206
- };
207
- }).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
221
+ return [...grouped.entries()].map(([command, value]) => buildTelemetryStatsBucket(command, value)).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
208
222
  }
209
223
  async function runTelemetry(options, _global) {
210
224
  void _global;
@@ -284,6 +298,6 @@ export {
284
298
  TELEMETRY_SUBCOMMANDS,
285
299
  runTelemetry
286
300
  };
287
- //# sourceMappingURL=telemetry-BZUF6H7G.js.map
301
+ //# sourceMappingURL=telemetry-HVXFZA2U.js.map
288
302
 
289
- //# debugId=15b48ad8-a1a0-5365-be25-0b8682a800f8
303
+ //# debugId=fdec6e18-ebbc-5924-b761-36a1fbf0b092
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../cli/commands/telemetry.ts"],"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"],"names":[],"mappings":"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","debugId":"fdec6e18-ebbc-5924-b761-36a1fbf0b092"}