@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
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="703e5ff2-f98d-5709-b3f4-e2ddcc4f770f")}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]="444ac065-004e-58be-b6c4-7c7ce2f10d2a")}catch(e){}}();
3
3
  import {
4
4
  buildRemediationMap
5
5
  } from "./chunk-R2EMWY7Q.js";
@@ -8,25 +8,25 @@ import {
8
8
  } from "./chunk-37E72CNS.js";
9
9
  import {
10
10
  scanHistoryDrift
11
- } from "./chunk-OTUHB4HS.js";
11
+ } from "./chunk-TTHCEV5Q.js";
12
12
  import {
13
13
  collectStaleVectorizationIds
14
14
  } from "./chunk-ROGZTCCB.js";
15
- import "./chunk-SLMUGTK3.js";
15
+ import "./chunk-2ASNV4DH.js";
16
16
  import {
17
17
  PM_TELEMETRY_SOURCE_CONTEXT_VALUES,
18
18
  TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS,
19
19
  TELEMETRY_SCHEMA_VERSION
20
- } from "./chunk-AVEE5EHK.js";
20
+ } from "./chunk-LTRAF2D7.js";
21
21
  import {
22
22
  buildCapabilityContractMetadata,
23
23
  buildRegistrationCollisionRemediation,
24
24
  collectUnknownCapabilityGuidance,
25
25
  readManagedExtensionState
26
- } from "./chunk-NU2UEROZ.js";
26
+ } from "./chunk-3AZUFQK6.js";
27
27
  import "./chunk-P4SESZGT.js";
28
- import "./chunk-2D4HATP2.js";
29
- import "./chunk-MAUKX7JC.js";
28
+ import "./chunk-YLZZ6T54.js";
29
+ import "./chunk-ZNT7KEWE.js";
30
30
  import {
31
31
  buildVectorizationEmbeddingIdentity,
32
32
  hasVectorizationEmbeddingIdentityChanged,
@@ -36,25 +36,25 @@ import {
36
36
  resolveProviderConfigSource,
37
37
  resolveSettingsWithSemanticRuntimeDefaults,
38
38
  resolveVectorStores
39
- } from "./chunk-UYUYDGIB.js";
40
- import "./chunk-6AQZPVHQ.js";
41
- import "./chunk-4A3BJ675.js";
42
- import "./chunk-HXTQJXWT.js";
39
+ } from "./chunk-TPOFWBMY.js";
40
+ import "./chunk-KIYCOJ63.js";
41
+ import "./chunk-OTUJZKGI.js";
42
+ import "./chunk-5GVTFFTC.js";
43
43
  import {
44
44
  collectRegisteredItemFieldNames,
45
45
  enforceHistoryStreamPolicyForItems,
46
46
  listAllFrontMatter,
47
47
  listAllFrontMatterWithBody
48
- } from "./chunk-JSU5P7VS.js";
48
+ } from "./chunk-NRZS637N.js";
49
49
  import {
50
50
  effectiveItemFormatVersion,
51
51
  findFirstMergeConflictMarker,
52
52
  parseItemDocument,
53
53
  scanItemFormatVersions
54
- } from "./chunk-QCWF6IYD.js";
54
+ } from "./chunk-KN3URLKS.js";
55
55
  import {
56
56
  nowIso
57
- } from "./chunk-AXIDKKAT.js";
57
+ } from "./chunk-K2VYLVX4.js";
58
58
  import {
59
59
  EXIT_CODE,
60
60
  ITEM_FILE_EXTENSIONS,
@@ -75,7 +75,7 @@ import {
75
75
  resolvePmRoot,
76
76
  runActiveOnReadHooks,
77
77
  toNonEmptyStringOrUndefined
78
- } from "./chunk-7R4QEMZZ.js";
78
+ } from "./chunk-I66WE2HE.js";
79
79
 
80
80
  // dist/cli/commands/health.js
81
81
  import fs from "node:fs/promises";
@@ -183,6 +183,9 @@ async function listItemDocumentPaths(pmRoot, typeToFolder) {
183
183
  itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));
184
184
  return itemPaths;
185
185
  }
186
+ function shouldReportHistoryDirectoryUnreadable(error) {
187
+ return !(typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT");
188
+ }
186
189
  async function buildIntegrityCheck(pmRoot, typeToFolder, schema) {
187
190
  const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);
188
191
  const itemUnreadable = [];
@@ -224,7 +227,7 @@ async function buildIntegrityCheck(pmRoot, typeToFolder, schema) {
224
227
  try {
225
228
  historyFiles = (await fs.readdir(historyDir)).filter((entry) => entry.endsWith(".jsonl")).sort((left, right) => left.localeCompare(right));
226
229
  } catch (error) {
227
- if (!(typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT")) {
230
+ if (shouldReportHistoryDirectoryUnreadable(error)) {
228
231
  historyUnreadable.push("history");
229
232
  }
230
233
  }
@@ -886,6 +889,92 @@ function parseTelemetryQueue(raw) {
886
889
  maxAttempts
887
890
  };
888
891
  }
892
+ function emptyTelemetryQueueSummary() {
893
+ return { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };
894
+ }
895
+ function parseTelemetryRuntimeState(stateRaw) {
896
+ if (!stateRaw || stateRaw.trim().length === 0) {
897
+ return { runtimeState: {}, stateParseFailed: false };
898
+ }
899
+ try {
900
+ const parsed = JSON.parse(stateRaw);
901
+ if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
902
+ return { runtimeState: parsed, stateParseFailed: false };
903
+ }
904
+ return { runtimeState: {}, stateParseFailed: true };
905
+ } catch {
906
+ return { runtimeState: {}, stateParseFailed: true };
907
+ }
908
+ }
909
+ async function maybeProbeTelemetryEndpoint(settings, checkTelemetry) {
910
+ const endpoint = settings.telemetry.endpoint.trim();
911
+ if (!checkTelemetry || !settings.telemetry.enabled || endpoint.length === 0) {
912
+ return void 0;
913
+ }
914
+ const probe = await probeTelemetryEndpointHealth(endpoint);
915
+ return {
916
+ attempted: true,
917
+ ...probe
918
+ };
919
+ }
920
+ function collectTelemetryQueueWarnings(settings, queueSummary, runtimeState) {
921
+ const warnings = [];
922
+ if (queueSummary.invalidRows > 0) {
923
+ warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);
924
+ }
925
+ if (!settings.telemetry.enabled || queueSummary.validEntries === 0) {
926
+ return warnings;
927
+ }
928
+ const lastSuccess = runtimeState.last_successful_flush_at;
929
+ const lastFailure = runtimeState.last_failed_flush_at;
930
+ const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);
931
+ const neverFlushed = !lastSuccess;
932
+ const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;
933
+ if (activeFailure || neverFlushed || highWater) {
934
+ warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);
935
+ }
936
+ if (queueSummary.highRetryEntries > 0) {
937
+ warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);
938
+ }
939
+ return warnings;
940
+ }
941
+ function collectTelemetryEndpointWarnings(endpointProbe) {
942
+ if (!endpointProbe || endpointProbe.ok !== false) {
943
+ return [];
944
+ }
945
+ return typeof endpointProbe.status === "number" ? [`telemetry_endpoint_probe_http_status:${endpointProbe.status}`] : ["telemetry_endpoint_probe_failed"];
946
+ }
947
+ function collectTelemetrySchemaWarnings(endpointProbe) {
948
+ const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
949
+ if (endpointProbe?.ok === true && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
950
+ return [`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`];
951
+ }
952
+ return [];
953
+ }
954
+ function collectTelemetryOtelWarnings(settings, runtimeState) {
955
+ const pendingOtelSpans = typeof runtimeState.pending_otel_spans === "number" ? runtimeState.pending_otel_spans : 0;
956
+ const lastOtelSuccess = runtimeState.last_otel_success_at;
957
+ const lastOtelFailure = runtimeState.last_otel_failure_at;
958
+ const otelExportFailing = settings.telemetry.enabled && pendingOtelSpans > 0 && Boolean(lastOtelFailure) && // >= so a mixed-outcome batch (success + failure share the same attempt
959
+ // timestamp) still surfaces the warning rather than being masked by the tie.
960
+ (!lastOtelSuccess || lastOtelFailure >= lastOtelSuccess);
961
+ return otelExportFailing ? [`telemetry_otel_export_failing:${pendingOtelSpans}`] : [];
962
+ }
963
+ function buildTelemetryEnvOverrideDetails() {
964
+ return {
965
+ telemetry_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_DISABLED") || telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
966
+ pm_no_telemetry: telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
967
+ telemetry_otel_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_OTEL_DISABLED"),
968
+ telemetry_inline_flush: telemetryEnvFlagEnabled("PM_TELEMETRY_INLINE_FLUSH"),
969
+ telemetry_source_context: telemetrySourceContextOverride()
970
+ };
971
+ }
972
+ function telemetryQueueHasEntries(settings, queueSummary) {
973
+ return settings.telemetry.enabled && queueSummary.validEntries > 0;
974
+ }
975
+ function isTelemetryQueueDraining(queueHasEntries, warnings) {
976
+ return queueHasEntries && warnings.every((warning) => !warning.startsWith("telemetry_queue_pending:") && !warning.startsWith("telemetry_queue_high_retries:"));
977
+ }
889
978
  async function probeTelemetryEndpointHealth(endpoint) {
890
979
  let probeUrl = endpoint;
891
980
  try {
@@ -931,74 +1020,19 @@ async function buildTelemetryCheck(settings, options) {
931
1020
  const queueRaw = await readFileIfExists(queuePath);
932
1021
  const queueExists = queueRaw !== null;
933
1022
  const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, "utf8") : 0;
934
- const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };
1023
+ const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : emptyTelemetryQueueSummary();
935
1024
  const stateRaw = await readFileIfExists(statePath);
936
- let runtimeState = {};
937
- let stateParseFailed = false;
938
- if (stateRaw && stateRaw.trim().length > 0) {
939
- try {
940
- const parsed = JSON.parse(stateRaw);
941
- if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
942
- runtimeState = parsed;
943
- } else {
944
- stateParseFailed = true;
945
- }
946
- } catch {
947
- stateParseFailed = true;
948
- }
949
- }
1025
+ const { runtimeState, stateParseFailed } = parseTelemetryRuntimeState(stateRaw);
950
1026
  const endpoint = settings.telemetry.endpoint.trim();
951
1027
  const endpointDisplay = normalizeEndpointForDisplay(endpoint);
952
- let endpointProbe;
953
- if (options.checkTelemetry && settings.telemetry.enabled && endpoint.length > 0) {
954
- const probe = await probeTelemetryEndpointHealth(endpoint);
955
- endpointProbe = {
956
- attempted: true,
957
- ...probe
958
- };
959
- }
1028
+ const endpointProbe = await maybeProbeTelemetryEndpoint(settings, options.checkTelemetry);
960
1029
  const warnings = [];
961
1030
  if (stateParseFailed) {
962
1031
  warnings.push("telemetry_state_invalid_json");
963
1032
  }
964
- if (queueSummary.invalidRows > 0) {
965
- warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);
966
- }
967
- const queueHasEntries = settings.telemetry.enabled && queueSummary.validEntries > 0;
968
- if (queueHasEntries) {
969
- const lastSuccess = runtimeState.last_successful_flush_at;
970
- const lastFailure = runtimeState.last_failed_flush_at;
971
- const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);
972
- const neverFlushed = !lastSuccess;
973
- const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;
974
- const highRetries = queueSummary.highRetryEntries > 0;
975
- if (activeFailure || neverFlushed || highWater) {
976
- warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);
977
- }
978
- if (highRetries) {
979
- warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);
980
- }
981
- }
982
- if (endpointProbe && !endpointProbe.ok) {
983
- if (typeof endpointProbe.status === "number") {
984
- warnings.push(`telemetry_endpoint_probe_http_status:${endpointProbe.status}`);
985
- } else {
986
- warnings.push("telemetry_endpoint_probe_failed");
987
- }
988
- }
989
- const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
990
- if (endpointProbe && endpointProbe.ok && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
991
- warnings.push(`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`);
992
- }
1033
+ warnings.push(...collectTelemetryQueueWarnings(settings, queueSummary, runtimeState), ...collectTelemetryEndpointWarnings(endpointProbe), ...collectTelemetrySchemaWarnings(endpointProbe), ...collectTelemetryOtelWarnings(settings, runtimeState));
1034
+ const queueHasEntries = telemetryQueueHasEntries(settings, queueSummary);
993
1035
  const pendingOtelSpans = typeof runtimeState.pending_otel_spans === "number" ? runtimeState.pending_otel_spans : 0;
994
- const lastOtelSuccess = runtimeState.last_otel_success_at;
995
- const lastOtelFailure = runtimeState.last_otel_failure_at;
996
- const otelExportFailing = settings.telemetry.enabled && pendingOtelSpans > 0 && Boolean(lastOtelFailure) && // >= so a mixed-outcome batch (success + failure share the same attempt
997
- // timestamp) still surfaces the warning rather than being masked by the tie.
998
- (!lastOtelSuccess || lastOtelFailure >= lastOtelSuccess);
999
- if (otelExportFailing) {
1000
- warnings.push(`telemetry_otel_export_failing:${pendingOtelSpans}`);
1001
- }
1002
1036
  return {
1003
1037
  check: {
1004
1038
  name: "telemetry",
@@ -1011,7 +1045,7 @@ async function buildTelemetryCheck(settings, options) {
1011
1045
  queue_path: queuePath,
1012
1046
  queue_exists: queueExists,
1013
1047
  queue_entries: queueSummary.validEntries,
1014
- queue_draining: queueHasEntries && warnings.every((warning) => !warning.startsWith("telemetry_queue_pending:") && !warning.startsWith("telemetry_queue_high_retries:")),
1048
+ queue_draining: isTelemetryQueueDraining(queueHasEntries, warnings),
1015
1049
  queue_invalid_rows: queueSummary.invalidRows,
1016
1050
  queue_rows_total: queueSummary.totalRows,
1017
1051
  queue_size_bytes: queueSizeBytes,
@@ -1028,18 +1062,8 @@ async function buildTelemetryCheck(settings, options) {
1028
1062
  last_otel_success_at: runtimeState.last_otel_success_at ?? null,
1029
1063
  last_otel_failure_at: runtimeState.last_otel_failure_at ?? null,
1030
1064
  last_otel_failure_error: runtimeState.last_otel_failure_error ?? null,
1031
- endpoint_probe: endpointProbe ?? {
1032
- attempted: false
1033
- },
1034
- /* c8 ignore start -- env-override combinations are validated through runtime integration suites */
1035
- env_overrides: {
1036
- telemetry_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_DISABLED") || telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
1037
- pm_no_telemetry: telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
1038
- telemetry_otel_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_OTEL_DISABLED"),
1039
- telemetry_inline_flush: telemetryEnvFlagEnabled("PM_TELEMETRY_INLINE_FLUSH"),
1040
- telemetry_source_context: telemetrySourceContextOverride()
1041
- }
1042
- /* c8 ignore stop */
1065
+ endpoint_probe: endpointProbe ?? { attempted: false },
1066
+ env_overrides: buildTelemetryEnvOverrideDetails()
1043
1067
  }
1044
1068
  },
1045
1069
  warnings
@@ -1122,71 +1146,128 @@ async function buildHistoryDriftCheck(pmRoot, items) {
1122
1146
  warnings
1123
1147
  };
1124
1148
  }
1125
- async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, verboseStaleItems) {
1149
+ function buildVectorizationRuntimeSnapshot(settings) {
1126
1150
  const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);
1127
1151
  const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);
1128
1152
  const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings);
1129
1153
  const runtimeEmbeddingIdentity = providerResolution.active ? buildVectorizationEmbeddingIdentity(providerResolution.active.name, providerResolution.active.model) : null;
1130
- const semanticRuntimeAvailable = Boolean(providerResolution.active && vectorStoreResolution.active);
1131
- const ledgerBefore = await readVectorizationStatusLedger(pmRoot);
1132
- const staleBefore = semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];
1133
- let refreshResult = {
1154
+ return {
1155
+ runtimeDefaults,
1156
+ providerResolution,
1157
+ vectorStoreResolution,
1158
+ runtimeEmbeddingIdentity,
1159
+ semanticRuntimeAvailable: Boolean(providerResolution.active && vectorStoreResolution.active)
1160
+ };
1161
+ }
1162
+ function emptyVectorizationRefreshResult() {
1163
+ return {
1134
1164
  refreshed: [],
1135
1165
  skipped: [],
1136
1166
  warnings: []
1137
1167
  };
1138
- if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {
1139
- refreshResult = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, staleBefore, {
1140
- settings: runtimeDefaults.settings,
1141
- apply_runtime_defaults: false
1142
- });
1168
+ }
1169
+ async function refreshStaleVectorizationItems(params) {
1170
+ if (!params.refreshPolicy.enabled || !params.snapshot.semanticRuntimeAvailable || params.staleBefore.length === 0) {
1171
+ return emptyVectorizationRefreshResult();
1143
1172
  }
1144
- const ledgerAfter = await readVectorizationStatusLedger(pmRoot);
1145
- const staleAfter = semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];
1146
- const strictVectorizationWarnings = !runtimeDefaults.auto_ollama_defaults_applied;
1147
- const embeddingIdentityChanged = strictVectorizationWarnings && semanticRuntimeAvailable && Boolean(ledgerBefore.embedding && runtimeEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(ledgerBefore.embedding, runtimeEmbeddingIdentity));
1148
- const warningSet = /* @__PURE__ */ new Set([...ledgerBefore.warnings, ...ledgerAfter.warnings]);
1149
- if (strictVectorizationWarnings) {
1150
- for (const warning of refreshResult.warnings) {
1173
+ return refreshSemanticEmbeddingsForMutatedItems(params.pmRoot, params.staleBefore, {
1174
+ settings: params.snapshot.runtimeDefaults.settings,
1175
+ apply_runtime_defaults: false
1176
+ });
1177
+ }
1178
+ function vectorizationEmbeddingIdentityChanged(params) {
1179
+ return params.strictVectorizationWarnings && params.semanticRuntimeAvailable && Boolean(params.ledgerBefore.embedding && params.runtimeEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(params.ledgerBefore.embedding, params.runtimeEmbeddingIdentity));
1180
+ }
1181
+ function collectVectorizationWarnings(params) {
1182
+ const warningSet = /* @__PURE__ */ new Set([...params.ledgerBefore.warnings, ...params.ledgerAfter.warnings]);
1183
+ if (params.strictVectorizationWarnings) {
1184
+ for (const warning of params.refreshResult.warnings) {
1151
1185
  warningSet.add(warning);
1152
1186
  }
1153
1187
  }
1154
- if (embeddingIdentityChanged) {
1188
+ if (params.embeddingIdentityChanged) {
1155
1189
  warningSet.add("vectorization_embedding_identity_changed");
1156
1190
  }
1157
- if (strictVectorizationWarnings && semanticRuntimeAvailable && staleAfter.length > 0) {
1158
- warningSet.add(`vectorization_stale_items_remaining:${staleAfter.length}`);
1191
+ if (params.strictVectorizationWarnings && params.semanticRuntimeAvailable && params.staleAfter.length > 0) {
1192
+ warningSet.add(`vectorization_stale_items_remaining:${params.staleAfter.length}`);
1159
1193
  }
1160
- const warnings = [...warningSet].sort((left, right) => left.localeCompare(right));
1194
+ return [...warningSet].sort((left, right) => left.localeCompare(right));
1195
+ }
1196
+ function resolveVectorizationRefreshSkippedReason(refreshPolicy, semanticRuntimeAvailable, staleBefore) {
1197
+ if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {
1198
+ return null;
1199
+ }
1200
+ if (!refreshPolicy.enabled) {
1201
+ return "refresh_disabled";
1202
+ }
1203
+ return semanticRuntimeAvailable ? "no_stale_items" : "semantic_runtime_unavailable";
1204
+ }
1205
+ function buildVectorizationProviderDetails(settings, snapshot) {
1206
+ const activeProvider = snapshot.providerResolution.active?.name ?? null;
1207
+ const activeVectorStore = snapshot.vectorStoreResolution.active?.name ?? null;
1208
+ return {
1209
+ provider_active: activeProvider,
1210
+ // GH-244: surface the persisted (possibly empty) configured value and
1211
+ // how the active resolution was sourced, so a config audit can tell
1212
+ // "auto-detected" apart from a genuine misconfiguration when
1213
+ // settings.search.provider / vector_store.adapter are empty strings.
1214
+ provider_configured: typeof settings.search?.provider === "string" ? settings.search.provider : null,
1215
+ provider_source: resolveProviderConfigSource(activeProvider, settings.search?.provider ?? null),
1216
+ vector_store_active: activeVectorStore,
1217
+ vector_store_configured: typeof settings.vector_store?.adapter === "string" ? settings.vector_store.adapter : null,
1218
+ vector_store_source: resolveProviderConfigSource(activeVectorStore, settings.vector_store?.adapter ?? null)
1219
+ };
1220
+ }
1221
+ function buildVectorizationRefreshPolicyDetails(refreshPolicy) {
1222
+ return {
1223
+ enabled: refreshPolicy.enabled,
1224
+ check_only: refreshPolicy.checkOnly,
1225
+ no_refresh: refreshPolicy.noRefresh,
1226
+ refresh_vectors: refreshPolicy.refreshVectors
1227
+ };
1228
+ }
1229
+ function vectorizationRefreshAttempted(refreshPolicy, semanticRuntimeAvailable, staleBefore) {
1230
+ return refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable;
1231
+ }
1232
+ async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, verboseStaleItems) {
1233
+ const snapshot = buildVectorizationRuntimeSnapshot(settings);
1234
+ const ledgerBefore = await readVectorizationStatusLedger(pmRoot);
1235
+ const staleBefore = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];
1236
+ const refreshResult = await refreshStaleVectorizationItems({ pmRoot, snapshot, refreshPolicy, staleBefore });
1237
+ const ledgerAfter = await readVectorizationStatusLedger(pmRoot);
1238
+ const staleAfter = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];
1239
+ const strictVectorizationWarnings = !snapshot.runtimeDefaults.auto_ollama_defaults_applied;
1240
+ const embeddingIdentityChanged = vectorizationEmbeddingIdentityChanged({
1241
+ strictVectorizationWarnings,
1242
+ semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,
1243
+ ledgerBefore,
1244
+ runtimeEmbeddingIdentity: snapshot.runtimeEmbeddingIdentity
1245
+ });
1246
+ const warnings = collectVectorizationWarnings({
1247
+ ledgerBefore,
1248
+ ledgerAfter,
1249
+ refreshResult,
1250
+ strictVectorizationWarnings,
1251
+ semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,
1252
+ embeddingIdentityChanged,
1253
+ staleAfter
1254
+ });
1161
1255
  const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);
1162
1256
  const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);
1257
+ const refreshAttempted = vectorizationRefreshAttempted(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore);
1163
1258
  return {
1164
1259
  check: {
1165
1260
  name: "vectorization",
1166
1261
  status: warnings.length === 0 ? "ok" : "warn",
1167
1262
  details: {
1168
- semantic_runtime_available: semanticRuntimeAvailable,
1169
- compatibility_mode_auto_defaults: runtimeDefaults.auto_ollama_defaults_applied,
1170
- auto_ollama_defaults_applied: runtimeDefaults.auto_ollama_defaults_applied,
1171
- refresh_policy: {
1172
- enabled: refreshPolicy.enabled,
1173
- check_only: refreshPolicy.checkOnly,
1174
- no_refresh: refreshPolicy.noRefresh,
1175
- refresh_vectors: refreshPolicy.refreshVectors
1176
- },
1177
- provider_active: providerResolution.active?.name ?? null,
1178
- // GH-244: surface the persisted (possibly empty) configured value and
1179
- // how the active resolution was sourced, so a config audit can tell
1180
- // "auto-detected" apart from a genuine misconfiguration when
1181
- // settings.search.provider / vector_store.adapter are empty strings.
1182
- provider_configured: typeof settings.search?.provider === "string" ? settings.search.provider : null,
1183
- provider_source: resolveProviderConfigSource(providerResolution.active?.name ?? null, settings.search?.provider ?? null),
1184
- vector_store_active: vectorStoreResolution.active?.name ?? null,
1185
- vector_store_configured: typeof settings.vector_store?.adapter === "string" ? settings.vector_store.adapter : null,
1186
- vector_store_source: resolveProviderConfigSource(vectorStoreResolution.active?.name ?? null, settings.vector_store?.adapter ?? null),
1263
+ semantic_runtime_available: snapshot.semanticRuntimeAvailable,
1264
+ compatibility_mode_auto_defaults: snapshot.runtimeDefaults.auto_ollama_defaults_applied,
1265
+ auto_ollama_defaults_applied: snapshot.runtimeDefaults.auto_ollama_defaults_applied,
1266
+ refresh_policy: buildVectorizationRefreshPolicyDetails(refreshPolicy),
1267
+ ...buildVectorizationProviderDetails(settings, snapshot),
1187
1268
  embedding_identity_changed: embeddingIdentityChanged,
1188
1269
  embedding_identity_before: ledgerBefore.embedding ?? null,
1189
- embedding_identity_runtime: runtimeEmbeddingIdentity ?? null,
1270
+ embedding_identity_runtime: snapshot.runtimeEmbeddingIdentity ?? null,
1190
1271
  items: items.length,
1191
1272
  ledger_entries_before: Object.keys(ledgerBefore.entries).length,
1192
1273
  stale_items_detail_mode: verboseStaleItems ? "full" : "summary",
@@ -1194,8 +1275,8 @@ async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, v
1194
1275
  stale_items_before_total: staleBeforeDetail.total,
1195
1276
  stale_items_before: staleBeforeDetail.values,
1196
1277
  stale_items_before_truncated: staleBeforeDetail.truncated,
1197
- refresh_attempted: refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable,
1198
- refresh_skipped_reason: refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0 ? null : !refreshPolicy.enabled ? "refresh_disabled" : !semanticRuntimeAvailable ? "semantic_runtime_unavailable" : "no_stale_items",
1278
+ refresh_attempted: refreshAttempted,
1279
+ refresh_skipped_reason: resolveVectorizationRefreshSkippedReason(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore),
1199
1280
  refresh_result: refreshResult,
1200
1281
  ledger_entries_after: Object.keys(ledgerAfter.entries).length,
1201
1282
  stale_items_after_total: staleAfterDetail.total,
@@ -1233,17 +1314,7 @@ function resolveVectorRefreshPolicy(options) {
1233
1314
  refreshVectors
1234
1315
  };
1235
1316
  }
1236
- async function runHealth(global, options = {}) {
1237
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1238
- const settingsPath = getSettingsPath(pmRoot);
1239
- if (!await pathExists(settingsPath)) {
1240
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
1241
- }
1242
- const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);
1243
- const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];
1244
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1245
- const strictDirectories = options.strictDirectories === true;
1246
- const refreshPolicy = resolveVectorRefreshPolicy(options);
1317
+ function resolveHealthDirectoryLists(typeRegistry) {
1247
1318
  const optionalBuiltinDirs = new Set(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));
1248
1319
  const requiredDirSet = new Set(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));
1249
1320
  const optionalDirSet = /* @__PURE__ */ new Set();
@@ -1254,41 +1325,202 @@ async function runHealth(global, options = {}) {
1254
1325
  }
1255
1326
  requiredDirSet.add(folder);
1256
1327
  }
1257
- const requiredDirs = [...requiredDirSet].sort((left, right) => left.localeCompare(right));
1258
- const optionalDirs = [...optionalDirSet].sort((left, right) => left.localeCompare(right));
1328
+ return {
1329
+ requiredDirs: [...requiredDirSet].sort((left, right) => left.localeCompare(right)),
1330
+ optionalDirs: [...optionalDirSet].sort((left, right) => left.localeCompare(right)),
1331
+ optionalDirSet
1332
+ };
1333
+ }
1334
+ async function scanHealthDirectories(pmRoot, typeRegistry, strictDirectories) {
1335
+ const { requiredDirs, optionalDirs, optionalDirSet } = resolveHealthDirectoryLists(typeRegistry);
1259
1336
  const missingRequiredDirs = [];
1260
1337
  const missingOptionalDirs = [];
1261
1338
  const hookWarnings = [];
1262
1339
  for (const relativeDir of [...requiredDirs, ...optionalDirs]) {
1263
1340
  const directoryPath = path.join(pmRoot, relativeDir);
1264
- hookWarnings.push(...await runActiveOnReadHooks({
1265
- path: directoryPath,
1266
- scope: "project"
1267
- }));
1268
- if (!await isDirectory(directoryPath)) {
1269
- if (optionalDirSet.has(relativeDir)) {
1270
- missingOptionalDirs.push(relativeDir);
1271
- } else {
1272
- missingRequiredDirs.push(relativeDir);
1273
- }
1341
+ hookWarnings.push(...await runActiveOnReadHooks({ path: directoryPath, scope: "project" }));
1342
+ if (await isDirectory(directoryPath)) {
1343
+ continue;
1344
+ }
1345
+ if (optionalDirSet.has(relativeDir)) {
1346
+ missingOptionalDirs.push(relativeDir);
1347
+ } else {
1348
+ missingRequiredDirs.push(relativeDir);
1274
1349
  }
1275
1350
  }
1276
- const missingDirs = strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs];
1351
+ return {
1352
+ requiredDirs,
1353
+ optionalDirs,
1354
+ missingRequiredDirs,
1355
+ missingOptionalDirs,
1356
+ missingDirs: strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs],
1357
+ hookWarnings
1358
+ };
1359
+ }
1360
+ function resolveHealthSkipPolicy(options) {
1361
+ const summaryMode = options.summary === true && options.full !== true;
1362
+ const fastProjectionCheckOnly = options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;
1363
+ return {
1364
+ summaryMode,
1365
+ skipIntegrity: (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true,
1366
+ skipDrift: (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true,
1367
+ skipVectors: (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true
1368
+ };
1369
+ }
1370
+ async function readHealthItems(params) {
1371
+ if (params.skipPolicy.skipDrift && params.skipPolicy.skipVectors) {
1372
+ return listAllFrontMatter(params.pmRoot, params.settings.item_format, params.typeRegistry.type_to_folder, params.itemReadWarnings, params.settings.schema);
1373
+ }
1374
+ return listAllFrontMatterWithBody(params.pmRoot, params.settings.item_format, params.typeRegistry.type_to_folder, params.itemReadWarnings, params.settings.schema);
1375
+ }
1376
+ function buildSkippedHealthCheck(name) {
1377
+ return { check: { name, status: "ok", details: { skipped: true } }, warnings: [] };
1378
+ }
1379
+ function buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings) {
1380
+ return {
1381
+ name: "settings",
1382
+ /* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */
1383
+ status: normalizedSettingsReadWarnings.length === 0 ? "ok" : "warn",
1384
+ details: {
1385
+ path: settingsPath,
1386
+ version: settings.version,
1387
+ id_prefix: settings.id_prefix,
1388
+ locks_ttl_seconds: settings.locks.ttl_seconds,
1389
+ warnings: normalizedSettingsReadWarnings
1390
+ }
1391
+ };
1392
+ }
1393
+ function buildDirectoriesHealthCheck(directoryState, strictDirectories) {
1394
+ return {
1395
+ name: "directories",
1396
+ status: directoryState.missingDirs.length === 0 ? "ok" : "warn",
1397
+ details: {
1398
+ required: directoryState.requiredDirs,
1399
+ optional: directoryState.optionalDirs,
1400
+ missing_required: directoryState.missingRequiredDirs,
1401
+ missing_optional: directoryState.missingOptionalDirs,
1402
+ missing: directoryState.missingDirs,
1403
+ strict_directories: strictDirectories
1404
+ }
1405
+ };
1406
+ }
1407
+ function buildSettingsValuesHealthCheck(settingWarnings) {
1408
+ return {
1409
+ name: "settings_values",
1410
+ status: settingWarnings.length === 0 ? "ok" : "warn",
1411
+ details: { warnings: settingWarnings }
1412
+ };
1413
+ }
1414
+ function buildStorageHealthCheck(items, settings, historySummary) {
1415
+ return {
1416
+ name: "storage",
1417
+ status: historySummary.over_threshold.length === 0 ? "ok" : "warn",
1418
+ details: {
1419
+ items: items.length,
1420
+ history_streams: historySummary.count,
1421
+ ...historySummary.max_entries !== null ? {
1422
+ compact_policy: {
1423
+ enabled: settings.history.compact_policy.enabled,
1424
+ max_entries: historySummary.max_entries,
1425
+ trigger: settings.history.compact_policy.trigger,
1426
+ over_threshold_count: historySummary.over_threshold.length,
1427
+ over_threshold: historySummary.over_threshold
1428
+ }
1429
+ } : {}
1430
+ }
1431
+ };
1432
+ }
1433
+ function collectHealthWarnings(params) {
1434
+ const warnings = [
1435
+ ...params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),
1436
+ ...params.normalizedSettingsReadWarnings,
1437
+ ...params.settingWarnings,
1438
+ ...params.normalizedItemReadWarnings,
1439
+ ...params.telemetryCheck.warnings,
1440
+ ...params.extensionCheck.warnings,
1441
+ ...params.historyPolicyWarnings,
1442
+ ...params.historySummary.warnings,
1443
+ ...params.locksCheck.warnings,
1444
+ ...params.integrityCheck.warnings,
1445
+ ...params.historyDriftCheck.warnings,
1446
+ ...params.vectorizationCheck.warnings,
1447
+ ...params.directoryState.hookWarnings
1448
+ ];
1449
+ return [...new Set(warnings)];
1450
+ }
1451
+ function extractHistoryDriftedCount(historyDriftCheck) {
1452
+ const counts = historyDriftCheck.check.details.counts;
1453
+ return typeof counts?.drifted === "number" ? counts.drifted : 0;
1454
+ }
1455
+ function buildHealthRemediationSources(params) {
1456
+ return {
1457
+ settings: params.normalizedSettingsReadWarnings,
1458
+ directories: params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),
1459
+ settings_values: params.settingWarnings,
1460
+ telemetry: params.telemetryCheck.warnings,
1461
+ extensions: params.extensionCheck.warnings,
1462
+ storage: params.historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),
1463
+ locks: params.locksCheck.warnings,
1464
+ integrity: params.integrityCheck.warnings,
1465
+ history_drift: params.historyDriftCheck.warnings,
1466
+ vectorization: params.vectorizationCheck.warnings
1467
+ };
1468
+ }
1469
+ function rewriteBulkHealthRemediation(params) {
1470
+ if (params.check.name === "history_drift" && params.historyDriftedCount > 1) {
1471
+ for (const code of Object.keys(params.remediationMap)) {
1472
+ params.remediationMap[code] = "pm history-repair --all";
1473
+ }
1474
+ }
1475
+ if (params.check.name === "storage" && params.overThresholdCount > 1) {
1476
+ for (const code of Object.keys(params.remediationMap)) {
1477
+ params.remediationMap[code] = "pm history-compact --all-streams";
1478
+ }
1479
+ }
1480
+ }
1481
+ function attachHealthRemediationMaps(params) {
1482
+ for (const check of params.checks) {
1483
+ const remediationMap = buildRemediationMap(params.remediationSources[check.name]);
1484
+ rewriteBulkHealthRemediation({
1485
+ check,
1486
+ remediationMap,
1487
+ historyDriftedCount: params.historyDriftedCount,
1488
+ overThresholdCount: params.overThresholdCount
1489
+ });
1490
+ if (Object.keys(remediationMap).length > 0) {
1491
+ check.details = { ...check.details, remediation_map: remediationMap };
1492
+ }
1493
+ }
1494
+ }
1495
+ function projectHealthResult(result, options, summaryMode) {
1496
+ if (summaryMode) {
1497
+ return applySummaryHealthProjection(result);
1498
+ }
1499
+ return options.brief === true ? applyBriefHealthProjection(result) : result;
1500
+ }
1501
+ async function runHealth(global, options = {}) {
1502
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
1503
+ const settingsPath = getSettingsPath(pmRoot);
1504
+ if (!await pathExists(settingsPath)) {
1505
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
1506
+ }
1507
+ const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);
1508
+ const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];
1509
+ const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1510
+ const strictDirectories = options.strictDirectories === true;
1511
+ const refreshPolicy = resolveVectorRefreshPolicy(options);
1512
+ const directoryState = await scanHealthDirectories(pmRoot, typeRegistry, strictDirectories);
1277
1513
  const settingWarnings = validateSettingsValues(settings);
1278
1514
  const telemetryCheck = await buildTelemetryCheck(settings, {
1279
1515
  checkTelemetry: options.checkTelemetry === true
1280
1516
  });
1281
1517
  const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));
1282
- const summaryMode = options.summary === true && options.full !== true;
1283
- const fastProjectionCheckOnly = options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;
1284
- const skipIntegrity = (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true;
1285
- const skipDrift = (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true;
1286
- const skipVectors = (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true;
1518
+ const skipPolicy = resolveHealthSkipPolicy(options);
1287
1519
  const itemReadWarnings = [];
1288
- const items = skipDrift && skipVectors ? await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, itemReadWarnings, settings.schema) : await listAllFrontMatterWithBody(pmRoot, settings.item_format, typeRegistry.type_to_folder, itemReadWarnings, settings.schema);
1520
+ const items = await readHealthItems({ pmRoot, settings, typeRegistry, skipPolicy, itemReadWarnings });
1289
1521
  const itemsWithBody = items;
1290
1522
  const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];
1291
- const historyPolicy = skipDrift ? { warnings: [] } : await enforceHistoryStreamPolicyForItems({
1523
+ const historyPolicy = skipPolicy.skipDrift ? { warnings: [] } : await enforceHistoryStreamPolicyForItems({
1292
1524
  pmRoot,
1293
1525
  settings,
1294
1526
  itemIds: items.map((item) => item.id),
@@ -1296,110 +1528,52 @@ async function runHealth(global, options = {}) {
1296
1528
  });
1297
1529
  const historySummary = await countHistoryStreams(pmRoot, settings.history.compact_policy);
1298
1530
  const locksCheck = await buildLocksCheck(pmRoot);
1299
- const integrityCheck = skipIntegrity ? { check: { name: "integrity", status: "ok", details: { skipped: true } }, warnings: [] } : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);
1300
- const historyDriftCheck = skipDrift ? { check: { name: "history_drift", status: "ok", details: { skipped: true } }, warnings: [] } : await buildHistoryDriftCheck(pmRoot, itemsWithBody);
1301
- const vectorizationCheck = skipVectors ? { check: { name: "vectorization", status: "ok", details: { skipped: true } }, warnings: [] } : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);
1531
+ const integrityCheck = skipPolicy.skipIntegrity ? buildSkippedHealthCheck("integrity") : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);
1532
+ const historyDriftCheck = skipPolicy.skipDrift ? buildSkippedHealthCheck("history_drift") : await buildHistoryDriftCheck(pmRoot, itemsWithBody);
1533
+ const vectorizationCheck = skipPolicy.skipVectors ? buildSkippedHealthCheck("vectorization") : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);
1302
1534
  const checks = [
1303
- {
1304
- name: "settings",
1305
- /* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */
1306
- status: normalizedSettingsReadWarnings.length === 0 ? "ok" : "warn",
1307
- details: {
1308
- path: settingsPath,
1309
- version: settings.version,
1310
- id_prefix: settings.id_prefix,
1311
- locks_ttl_seconds: settings.locks.ttl_seconds,
1312
- warnings: normalizedSettingsReadWarnings
1313
- }
1314
- },
1315
- {
1316
- name: "directories",
1317
- status: missingDirs.length === 0 ? "ok" : "warn",
1318
- details: {
1319
- required: requiredDirs,
1320
- optional: optionalDirs,
1321
- missing_required: missingRequiredDirs,
1322
- missing_optional: missingOptionalDirs,
1323
- missing: missingDirs,
1324
- strict_directories: strictDirectories
1325
- }
1326
- },
1327
- {
1328
- name: "settings_values",
1329
- status: settingWarnings.length === 0 ? "ok" : "warn",
1330
- details: {
1331
- warnings: settingWarnings
1332
- }
1333
- },
1535
+ buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings),
1536
+ buildDirectoriesHealthCheck(directoryState, strictDirectories),
1537
+ buildSettingsValuesHealthCheck(settingWarnings),
1334
1538
  telemetryCheck.check,
1335
1539
  extensionCheck.check,
1336
- {
1337
- name: "storage",
1338
- status: historySummary.over_threshold.length === 0 ? "ok" : "warn",
1339
- details: {
1340
- items: items.length,
1341
- history_streams: historySummary.count,
1342
- ...historySummary.max_entries !== null ? {
1343
- compact_policy: {
1344
- enabled: settings.history.compact_policy.enabled,
1345
- max_entries: historySummary.max_entries,
1346
- trigger: settings.history.compact_policy.trigger,
1347
- over_threshold_count: historySummary.over_threshold.length,
1348
- over_threshold: historySummary.over_threshold
1349
- }
1350
- } : {}
1351
- }
1352
- },
1540
+ buildStorageHealthCheck(items, settings, historySummary),
1353
1541
  locksCheck.check,
1354
1542
  integrityCheck.check,
1355
1543
  historyDriftCheck.check,
1356
1544
  vectorizationCheck.check
1357
1545
  ];
1358
- const warnings = [
1359
- ...missingDirs.map((dir) => `missing_directory:${dir}`),
1360
- ...normalizedSettingsReadWarnings,
1361
- ...settingWarnings,
1362
- ...normalizedItemReadWarnings,
1363
- ...telemetryCheck.warnings,
1364
- ...extensionCheck.warnings,
1365
- ...historyPolicy.warnings,
1366
- ...historySummary.warnings,
1367
- ...locksCheck.warnings,
1368
- ...integrityCheck.warnings,
1369
- ...historyDriftCheck.warnings,
1370
- ...vectorizationCheck.warnings,
1371
- ...hookWarnings
1372
- ];
1373
- const normalizedWarnings = [...new Set(warnings)];
1374
- const checkRemediationSources = {
1375
- settings: normalizedSettingsReadWarnings,
1376
- directories: missingDirs.map((dir) => `missing_directory:${dir}`),
1377
- settings_values: settingWarnings,
1378
- telemetry: telemetryCheck.warnings,
1379
- extensions: extensionCheck.warnings,
1380
- storage: historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),
1381
- locks: locksCheck.warnings,
1382
- integrity: integrityCheck.warnings,
1383
- history_drift: historyDriftCheck.warnings,
1384
- vectorization: vectorizationCheck.warnings
1385
- };
1386
- const historyDriftedCount = typeof historyDriftCheck.check.details.counts?.drifted === "number" ? historyDriftCheck.check.details.counts.drifted : 0;
1387
- for (const check of checks) {
1388
- const remediationMap = buildRemediationMap(checkRemediationSources[check.name]);
1389
- if (check.name === "history_drift" && historyDriftedCount > 1) {
1390
- for (const code of Object.keys(remediationMap)) {
1391
- remediationMap[code] = "pm history-repair --all";
1392
- }
1393
- }
1394
- if (check.name === "storage" && historySummary.over_threshold.length > 1) {
1395
- for (const code of Object.keys(remediationMap)) {
1396
- remediationMap[code] = "pm history-compact --all-streams";
1397
- }
1398
- }
1399
- if (Object.keys(remediationMap).length > 0) {
1400
- check.details = { ...check.details, remediation_map: remediationMap };
1401
- }
1402
- }
1546
+ const normalizedWarnings = collectHealthWarnings({
1547
+ directoryState,
1548
+ normalizedSettingsReadWarnings,
1549
+ settingWarnings,
1550
+ normalizedItemReadWarnings,
1551
+ telemetryCheck,
1552
+ extensionCheck,
1553
+ historyPolicyWarnings: historyPolicy.warnings,
1554
+ historySummary,
1555
+ locksCheck,
1556
+ integrityCheck,
1557
+ historyDriftCheck,
1558
+ vectorizationCheck
1559
+ });
1560
+ attachHealthRemediationMaps({
1561
+ checks,
1562
+ remediationSources: buildHealthRemediationSources({
1563
+ directoryState,
1564
+ normalizedSettingsReadWarnings,
1565
+ settingWarnings,
1566
+ telemetryCheck,
1567
+ extensionCheck,
1568
+ historySummary,
1569
+ locksCheck,
1570
+ integrityCheck,
1571
+ historyDriftCheck,
1572
+ vectorizationCheck
1573
+ }),
1574
+ historyDriftedCount: extractHistoryDriftedCount(historyDriftCheck),
1575
+ overThresholdCount: historySummary.over_threshold.length
1576
+ });
1403
1577
  const blockingWarnings = normalizedWarnings.filter((warning) => !isAdvisoryHealthWarning(warning));
1404
1578
  const result = {
1405
1579
  ok: blockingWarnings.length === 0,
@@ -1407,14 +1581,12 @@ async function runHealth(global, options = {}) {
1407
1581
  warnings: normalizedWarnings,
1408
1582
  generated_at: nowIso()
1409
1583
  };
1410
- if (summaryMode) {
1411
- return applySummaryHealthProjection(result);
1412
- }
1413
- return options.brief === true ? applyBriefHealthProjection(result) : result;
1584
+ return projectHealthResult(result, options, skipPolicy.summaryMode);
1414
1585
  }
1415
1586
  var _testOnlyHealthCommand = {
1416
1587
  buildExtensionHealthTriageSummary,
1417
1588
  buildCapabilityContractMetadata,
1589
+ buildVectorizationProviderDetails,
1418
1590
  collectUnknownCapabilityGuidance,
1419
1591
  isAdvisoryHealthWarning,
1420
1592
  isDirectory,
@@ -1436,6 +1608,6 @@ export {
1436
1608
  _testOnlyHealthCommand,
1437
1609
  runHealth
1438
1610
  };
1439
- //# sourceMappingURL=health-3IPFLKXB.js.map
1611
+ //# sourceMappingURL=health-L2U3AFKV.js.map
1440
1612
 
1441
- //# debugId=703e5ff2-f98d-5709-b3f4-e2ddcc4f770f
1613
+ //# debugId=444ac065-004e-58be-b6c4-7c7ce2f10d2a