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