@unbrained/pm-cli 2026.6.30 → 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 (628) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +26 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +58 -47
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/aggregate.js +102 -79
  9. package/dist/cli/commands/aggregate.js.map +1 -1
  10. package/dist/cli/commands/calendar.js +339 -303
  11. package/dist/cli/commands/calendar.js.map +1 -1
  12. package/dist/cli/commands/close-many.js +89 -68
  13. package/dist/cli/commands/close-many.js.map +1 -1
  14. package/dist/cli/commands/close.js +157 -129
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/comments-audit.js +50 -42
  17. package/dist/cli/commands/comments-audit.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +443 -879
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/context.js +365 -287
  22. package/dist/cli/commands/context.js.map +1 -1
  23. package/dist/cli/commands/contracts.js +352 -238
  24. package/dist/cli/commands/contracts.js.map +1 -1
  25. package/dist/cli/commands/create.js +483 -434
  26. package/dist/cli/commands/create.js.map +1 -1
  27. package/dist/cli/commands/dedupe-audit.js +46 -39
  28. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  29. package/dist/cli/commands/dedupe-merge.js +88 -69
  30. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  31. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  32. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +129 -78
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/managed-state.js +101 -57
  36. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  37. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  38. package/dist/cli/commands/extension/scaffold.js +214 -186
  39. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  40. package/dist/cli/commands/extension.d.ts +6 -1
  41. package/dist/cli/commands/extension.js +1034 -902
  42. package/dist/cli/commands/extension.js.map +1 -1
  43. package/dist/cli/commands/get.js +114 -81
  44. package/dist/cli/commands/get.js.map +1 -1
  45. package/dist/cli/commands/health.d.ts +17 -0
  46. package/dist/cli/commands/health.js +446 -307
  47. package/dist/cli/commands/health.js.map +1 -1
  48. package/dist/cli/commands/history-compact.js +209 -140
  49. package/dist/cli/commands/history-compact.js.map +1 -1
  50. package/dist/cli/commands/history-redact.js +162 -119
  51. package/dist/cli/commands/history-redact.js.map +1 -1
  52. package/dist/cli/commands/history-repair.js +120 -85
  53. package/dist/cli/commands/history-repair.js.map +1 -1
  54. package/dist/cli/commands/init.d.ts +8 -2
  55. package/dist/cli/commands/init.js +263 -162
  56. package/dist/cli/commands/init.js.map +1 -1
  57. package/dist/cli/commands/list-filter-shared.js +55 -48
  58. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  59. package/dist/cli/commands/list.js +152 -102
  60. package/dist/cli/commands/list.js.map +1 -1
  61. package/dist/cli/commands/next.js +49 -32
  62. package/dist/cli/commands/next.js.map +1 -1
  63. package/dist/cli/commands/plan.js +373 -298
  64. package/dist/cli/commands/plan.js.map +1 -1
  65. package/dist/cli/commands/recurrence-parsers.js +43 -25
  66. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  67. package/dist/cli/commands/reindex.d.ts +21 -5
  68. package/dist/cli/commands/reindex.js +345 -205
  69. package/dist/cli/commands/reindex.js.map +1 -1
  70. package/dist/cli/commands/restore.d.ts +8 -7
  71. package/dist/cli/commands/restore.js +105 -69
  72. package/dist/cli/commands/restore.js.map +1 -1
  73. package/dist/cli/commands/schema.js +33 -30
  74. package/dist/cli/commands/schema.js.map +1 -1
  75. package/dist/cli/commands/search.d.ts +10 -2
  76. package/dist/cli/commands/search.js +595 -536
  77. package/dist/cli/commands/search.js.map +1 -1
  78. package/dist/cli/commands/telemetry.js +98 -87
  79. package/dist/cli/commands/telemetry.js.map +1 -1
  80. package/dist/cli/commands/test-all.js +237 -168
  81. package/dist/cli/commands/test-all.js.map +1 -1
  82. package/dist/cli/commands/test.d.ts +6 -5
  83. package/dist/cli/commands/test.js +530 -464
  84. package/dist/cli/commands/test.js.map +1 -1
  85. package/dist/cli/commands/update-many.js +57 -42
  86. package/dist/cli/commands/update-many.js.map +1 -1
  87. package/dist/cli/commands/update.d.ts +1 -1
  88. package/dist/cli/commands/update.js +764 -747
  89. package/dist/cli/commands/update.js.map +1 -1
  90. package/dist/cli/commands/validate.d.ts +18 -1
  91. package/dist/cli/commands/validate.js +466 -343
  92. package/dist/cli/commands/validate.js.map +1 -1
  93. package/dist/cli/error-guidance.js +399 -357
  94. package/dist/cli/error-guidance.js.map +1 -1
  95. package/dist/cli/extension-command-options.js +48 -21
  96. package/dist/cli/extension-command-options.js.map +1 -1
  97. package/dist/cli/main.d.ts +47 -0
  98. package/dist/cli/main.js +428 -341
  99. package/dist/cli/main.js.map +1 -1
  100. package/dist/cli/migration-gates.js +22 -45
  101. package/dist/cli/migration-gates.js.map +1 -1
  102. package/dist/cli/register-list-query.js +94 -105
  103. package/dist/cli/register-list-query.js.map +1 -1
  104. package/dist/cli/register-mutation.js +400 -416
  105. package/dist/cli/register-mutation.js.map +1 -1
  106. package/dist/cli/register-operations.js +86 -66
  107. package/dist/cli/register-operations.js.map +1 -1
  108. package/dist/cli/register-setup.js +120 -101
  109. package/dist/cli/register-setup.js.map +1 -1
  110. package/dist/cli/registration-helpers.js +117 -122
  111. package/dist/cli/registration-helpers.js.map +1 -1
  112. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
  113. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  114. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
  115. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  116. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
  117. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  118. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
  119. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
  120. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
  121. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
  124. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
  125. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
  127. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
  129. package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
  131. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
  132. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  133. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
  135. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
  137. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
  138. package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
  140. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
  142. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
  144. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
  146. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
  148. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
  150. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  151. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
  152. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
  154. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
  156. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
  158. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
  160. package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
  161. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  162. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  163. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
  164. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
  165. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
  166. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
  167. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
  168. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
  169. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
  171. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
  172. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
  173. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
  174. package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
  176. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
  178. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
  180. package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
  182. package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
  184. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
  185. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
  187. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
  189. package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
  192. package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
  193. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
  194. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
  195. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
  196. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
  198. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
  199. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
  200. package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
  202. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  203. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
  204. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
  206. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  207. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
  208. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
  210. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
  211. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  212. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
  213. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
  214. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  215. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
  216. package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
  218. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
  220. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
  222. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
  225. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
  227. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
  228. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
  229. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  230. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  231. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
  233. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
  235. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  236. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
  237. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
  239. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  240. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
  241. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
  243. package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
  246. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  247. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
  248. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  249. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  250. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
  251. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
  252. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
  253. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
  254. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
  255. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  256. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
  257. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  258. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
  259. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  260. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
  261. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
  262. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  263. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  265. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
  267. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
  268. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
  269. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
  271. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  272. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
  273. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
  274. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
  275. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  276. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
  277. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
  278. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
  279. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
  280. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
  281. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
  282. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
  283. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
  284. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
  285. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
  286. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
  287. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
  288. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
  289. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
  290. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
  291. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
  292. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
  293. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  294. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
  295. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  296. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
  297. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  298. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
  299. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  300. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  301. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
  302. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
  303. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  304. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
  305. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  306. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  307. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
  308. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
  309. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  310. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
  311. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  312. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
  313. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  314. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
  315. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
  316. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
  317. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
  318. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
  319. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  320. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
  321. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  322. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
  323. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
  324. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
  325. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  326. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
  327. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  328. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
  329. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
  330. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
  331. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  332. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
  333. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  334. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
  335. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  336. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
  337. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  338. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
  339. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
  341. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
  343. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
  345. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
  347. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  348. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  349. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  350. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
  351. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
  352. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
  353. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
  354. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
  355. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
  356. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
  357. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  358. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
  359. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  360. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
  361. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
  362. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  363. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  364. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  365. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  366. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
  367. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  368. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
  369. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  370. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  371. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
  372. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
  373. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
  374. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
  375. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
  377. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
  379. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
  381. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  382. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
  383. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  384. package/dist/cli-bundle/main.js +986 -1500
  385. package/dist/cli-bundle/main.js.map +4 -4
  386. package/dist/core/config/nested-settings.js +89 -67
  387. package/dist/core/config/nested-settings.js.map +1 -1
  388. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  389. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  390. package/dist/core/extensions/extension-policy.d.ts +18 -3
  391. package/dist/core/extensions/extension-policy.js +116 -106
  392. package/dist/core/extensions/extension-policy.js.map +1 -1
  393. package/dist/core/extensions/loader.js +310 -232
  394. package/dist/core/extensions/loader.js.map +1 -1
  395. package/dist/core/governance/metadata-coverage.js +20 -28
  396. package/dist/core/governance/metadata-coverage.js.map +1 -1
  397. package/dist/core/history/drift-scan.js +93 -81
  398. package/dist/core/history/drift-scan.js.map +1 -1
  399. package/dist/core/item/item-format.js +523 -410
  400. package/dist/core/item/item-format.js.map +1 -1
  401. package/dist/core/item/item-type-definition.js +14 -14
  402. package/dist/core/item/item-type-definition.js.map +1 -1
  403. package/dist/core/item/type-registry.js +87 -82
  404. package/dist/core/item/type-registry.js.map +1 -1
  405. package/dist/core/output/mutation-projection.js +42 -26
  406. package/dist/core/output/mutation-projection.js.map +1 -1
  407. package/dist/core/schema/runtime-schema.js +34 -28
  408. package/dist/core/schema/runtime-schema.js.map +1 -1
  409. package/dist/core/search/semantic-defaults.js +64 -37
  410. package/dist/core/search/semantic-defaults.js.map +1 -1
  411. package/dist/core/search/vector-stores.js +32 -17
  412. package/dist/core/search/vector-stores.js.map +1 -1
  413. package/dist/core/sentry/helpers.js +31 -28
  414. package/dist/core/sentry/helpers.js.map +1 -1
  415. package/dist/core/sentry/instrument.js +54 -43
  416. package/dist/core/sentry/instrument.js.map +1 -1
  417. package/dist/core/store/front-matter-cache.js +239 -153
  418. package/dist/core/store/front-matter-cache.js.map +1 -1
  419. package/dist/core/store/item-store.js +33 -26
  420. package/dist/core/store/item-store.js.map +1 -1
  421. package/dist/core/store/settings.js +247 -203
  422. package/dist/core/store/settings.js.map +1 -1
  423. package/dist/core/test/background-runs.js +189 -160
  424. package/dist/core/test/background-runs.js.map +1 -1
  425. package/dist/mcp/server.js +387 -367
  426. package/dist/mcp/server.js.map +1 -1
  427. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  428. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  429. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  430. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  431. package/dist/sdk/compose.d.ts +4 -1
  432. package/dist/sdk/compose.js +181 -115
  433. package/dist/sdk/compose.js.map +1 -1
  434. package/docs/RELEASING.md +2 -3
  435. package/package.json +2 -2
  436. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  437. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  438. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  439. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  440. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  443. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  444. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  447. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
  450. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  451. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  456. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  459. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
  462. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
  464. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  465. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  467. package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  469. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  470. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
  471. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
  473. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
  478. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  479. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  481. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  484. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  485. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  486. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
  487. package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
  488. package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
  489. package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
  490. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  491. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
  492. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  493. package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
  494. package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
  495. package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
  496. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
  497. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
  498. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
  499. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
  500. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
  501. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  502. package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
  503. package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
  504. package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
  505. package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
  506. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  507. package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
  508. package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
  509. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  510. package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
  511. package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
  512. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  513. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
  514. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
  515. package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
  516. package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
  517. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
  518. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
  522. package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
  523. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
  524. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
  525. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  526. package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
  527. package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
  529. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
  531. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
  533. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
  534. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  535. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
  536. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
  537. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/commands/health.ts"],
4
+ "sourcesContent": ["/**\n * @module cli/commands/health\n *\n * Implements the pm health command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { activateExtensions, getActiveExtensionRegistrations, loadExtensions, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n type LoadedExtension,\n} from \"../../core/extensions/loader.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { scanHistoryDrift } from \"../../core/history/drift-scan.js\";\nimport { scanLockHealth } from \"../../core/lock/lock-gc.js\";\nimport {\n readVectorizationStatusLedger,\n refreshSemanticEmbeddingsForMutatedItems,\n} from \"../../core/search/cache.js\";\nimport { resolveEmbeddingProviders, resolveProviderConfigSource } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { collectStaleVectorizationIds } from \"../../core/search/staleness.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n hasVectorizationEmbeddingIdentityChanged,\n} from \"../../core/search/vectorization-metadata.js\";\nimport { resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport { EXIT_CODE, PM_CORE_REQUIRED_SUBDIRS, PM_OPTIONAL_TYPE_SUBDIRS } from \"../../core/shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../../core/shared/conflict-markers.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { effectiveItemFormatVersion, scanItemFormatVersions } from \"../../core/item/item-format-version.js\";\nimport { listAllFrontMatter, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport {\n PM_TELEMETRY_SOURCE_CONTEXT_VALUES,\n TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS,\n TELEMETRY_SCHEMA_VERSION,\n} from \"../../core/telemetry/runtime.js\";\n\nconst PM_TELEMETRY_SOURCE_CONTEXT_SET = new Set<string>(PM_TELEMETRY_SOURCE_CONTEXT_VALUES);\nimport {\n getItemFormatFromPath,\n getSettingsPath,\n ITEM_FILE_EXTENSIONS,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../../core/store/paths.js\";\nimport { readSettingsWithMetadata } from \"../../core/store/settings.js\";\nimport { buildRemediationMap } from \"../../core/diagnostics/remediation.js\";\nimport type { HistoryCompactPolicy, ItemFormat, ItemMetadata, PmSettings } from \"../../types/index.js\";\nimport { readManagedExtensionState } from \"./extension.js\";\nimport {\n buildCapabilityContractMetadata,\n buildRegistrationCollisionRemediation,\n collectUnknownCapabilityGuidance,\n} from \"./extension/doctor.js\";\n\ntype HealthStatus = \"ok\" | \"warn\";\ntype MigrationRuntimeStatus = \"pending\" | \"failed\" | \"applied\";\n\n/**\n * Documents the health check payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthCheck {\n name:\n | \"settings\"\n | \"directories\"\n | \"settings_values\"\n | \"telemetry\"\n | \"extensions\"\n | \"storage\"\n | \"locks\"\n | \"integrity\"\n | \"history_drift\"\n | \"vectorization\";\n status: HealthStatus;\n details: Record<string, unknown>;\n}\n\n/**\n * Documents the health result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthResult {\n ok: boolean;\n checks: HealthCheck[];\n warning_count?: number;\n warnings: string[];\n projection?: {\n mode: \"brief\" | \"summary\" | \"full\";\n warning_count: number;\n warnings_truncated: boolean;\n detail_limit: number;\n omitted_checks?: HealthCheck[\"name\"][];\n };\n generated_at: string;\n}\n\n/**\n * Documents the run health options payload exchanged by command, SDK, and package integrations.\n */\nexport interface RunHealthOptions {\n strictDirectories?: boolean;\n checkOnly?: boolean;\n checkTelemetry?: boolean;\n noRefresh?: boolean;\n refreshVectors?: boolean;\n verboseStaleItems?: boolean;\n skipVectors?: boolean;\n skipIntegrity?: boolean;\n skipDrift?: boolean;\n full?: boolean;\n brief?: boolean;\n summary?: boolean;\n}\n\ninterface VectorRefreshPolicy {\n enabled: boolean;\n checkOnly: boolean;\n noRefresh: boolean;\n refreshVectors: boolean;\n}\n\ninterface MigrationStatusEntry {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: MigrationRuntimeStatus;\n reason?: string;\n}\n\ninterface MigrationStatusSummary {\n applied: MigrationStatusEntry[];\n pending: MigrationStatusEntry[];\n failed: MigrationStatusEntry[];\n applied_count: number;\n pending_count: number;\n failed_count: number;\n}\n\ninterface ExtensionHealthTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n load_failure_count: number;\n activation_failure_count: number;\n migration_failed_count: number;\n migration_pending_count: number;\n managed_state_warning_count: number;\n managed_extension_entries_count: number;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unknown_capability_count: number;\n top_warnings: string[];\n remediation: string[];\n}\n\ntype ItemWithBody = Awaited<ReturnType<typeof listAllFrontMatterWithBody>>[number];\nconst STALE_VECTORIZATION_SUMMARY_LIMIT = 25;\nconst BRIEF_HEALTH_DETAIL_LIMIT = 8;\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS = 2_500;\nconst TELEMETRY_QUEUE_HIGH_WATER_MARK = 500;\nconst TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD = TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS - 3;\nconst TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS = [\n \"x-pm-telemetry-max-schema-version\",\n \"x-pm-telemetry-max-version\",\n] as const;\n\n/**\n * Advisory warnings are surfaced for visibility but never flip overall health to\n * not-ok. Telemetry is opt-out, non-critical observability: a queued/unreachable\n * telemetry endpoint or corrupt local telemetry state is not a project-health\n * failure and must not block agents that gate on `pm health` `ok`. History\n * over-compaction-threshold warnings are likewise advisory maintenance hints —\n * a deep stream is healthy, just a candidate for `pm history-compact`.\n */\nfunction isAdvisoryHealthWarning(warning: string): boolean {\n return warning.startsWith(\"telemetry_\") || warning.startsWith(\"history_stream_over_compact_threshold:\");\n}\n\nfunction warningCode(value: string): string {\n const normalized = value.trim();\n const separator = normalized.indexOf(\":\");\n if (separator === -1) {\n return normalized;\n }\n return normalized.slice(0, separator);\n}\n\nfunction normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction isExpectedUnmanagedExtension(name: string, directory: string): boolean {\n const normalizedName = normalizeExtensionNameForMatch(name);\n const normalizedDirectory = normalizeExtensionNameForMatch(directory);\n if (normalizedName.startsWith(\"builtin-\")) {\n return true;\n }\n return normalizedDirectory === \"beads\" || normalizedDirectory === \"todos\";\n}\n\nasync function isDirectory(targetPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(targetPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Summary of the history-stream directory used by the storage health check.\n * `over_threshold` is populated only when the compaction policy is enabled —\n * counting entries requires reading every stream, so the default (policy-off)\n * path stays a cheap directory listing.\n */\ninterface HistoryStreamSummary {\n count: number;\n warnings: string[];\n over_threshold: string[];\n max_entries: number | null;\n}\n\nasync function countHistoryStreams(\n pmRoot: string,\n compactPolicy: HistoryCompactPolicy,\n): Promise<HistoryStreamSummary> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await isDirectory(historyDir))) {\n return { count: 0, warnings: [], over_threshold: [], max_entries: null };\n }\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((left, right) => left.localeCompare(right));\n\n const policyActive = compactPolicy.enabled;\n const maxEntries = policyActive ? compactPolicy.max_entries : null;\n const warnings: string[] = [];\n const overThreshold: string[] = [];\n for (const fileName of historyFiles) {\n const streamPath = path.join(historyDir, fileName);\n warnings.push(...(await runActiveOnReadHooks({ path: streamPath, scope: \"project\" })));\n if (!policyActive) {\n continue;\n }\n const raw = await fs.readFile(streamPath, \"utf8\");\n let entries = 0;\n for (const line of raw.split(/\\r?\\n/)) {\n if (line.trim().length > 0) {\n entries += 1;\n }\n }\n if (entries > compactPolicy.max_entries) {\n overThreshold.push(fileName.slice(0, -\".jsonl\".length));\n }\n }\n\n return {\n count: historyFiles.length,\n warnings: [...warnings, ...overThreshold.map((id) => `history_stream_over_compact_threshold:${id}`)],\n over_threshold: overThreshold,\n max_entries: maxEntries,\n };\n}\n\nfunction normalizeRelativePath(pmRoot: string, targetPath: string): string {\n return path.relative(pmRoot, targetPath).replaceAll(\"\\\\\", \"/\");\n}\n\nasync function listItemDocumentPaths(pmRoot: string, typeToFolder: Record<string, string>): Promise<string[]> {\n const folders = [...new Set(Object.values(typeToFolder))].sort((left, right) => left.localeCompare(right));\n const itemPaths: string[] = [];\n for (const folder of folders) {\n const directoryPath = path.join(pmRoot, folder);\n let entries: string[] = [];\n try {\n entries = await fs.readdir(directoryPath);\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n continue;\n }\n continue;\n }\n for (const entry of entries) {\n if (!ITEM_FILE_EXTENSIONS.some((extension) => entry.toLowerCase().endsWith(extension))) {\n continue;\n }\n itemPaths.push(path.join(directoryPath, entry));\n }\n }\n itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));\n return itemPaths;\n}\n\nfunction shouldReportHistoryDirectoryUnreadable(error: unknown): boolean {\n return !(typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\");\n}\n\nasync function buildIntegrityCheck(\n pmRoot: string,\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);\n const itemUnreadable: string[] = [];\n const itemConflictMarkers: Array<{ path: string; line: number; marker: string }> = [];\n const itemParseFailures: string[] = [];\n const formatVersionEntries: Array<{ ref: string; version: number }> = [];\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n\n for (const itemPath of itemPaths) {\n const relativePath = normalizeRelativePath(pmRoot, itemPath);\n let raw = \"\";\n try {\n raw = await fs.readFile(itemPath, \"utf8\");\n } catch {\n itemUnreadable.push(relativePath);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n itemConflictMarkers.push({\n path: relativePath,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n try {\n const parsed = parseItemDocument(raw, { format: getItemFormatFromPath(itemPath) as ItemFormat, schema, extensionFieldNames });\n formatVersionEntries.push({ ref: relativePath, version: effectiveItemFormatVersion(parsed.metadata) });\n } catch {\n itemParseFailures.push(relativePath);\n }\n }\n const formatVersionScan = scanItemFormatVersions(formatVersionEntries);\n\n const historyDir = path.join(pmRoot, \"history\");\n const historyUnreadable: string[] = [];\n const historyConflictMarkers: Array<{ id: string; line: number; marker: string }> = [];\n const historyInvalidJson: Array<{ id: string; line: number }> = [];\n let historyFiles: string[] = [];\n try {\n historyFiles = (await fs.readdir(historyDir)).filter((entry) => entry.endsWith(\".jsonl\")).sort((left, right) => left.localeCompare(right));\n } catch (error: unknown) {\n /* c8 ignore start -- ENOENT/non-ENOENT differentiation requires filesystem fault injection */\n if (shouldReportHistoryDirectoryUnreadable(error)) {\n historyUnreadable.push(\"history\");\n }\n /* c8 ignore stop */\n }\n for (const fileName of historyFiles) {\n const itemId = fileName.slice(0, -\".jsonl\".length);\n const historyPath = path.join(historyDir, fileName);\n let raw = \"\";\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch {\n historyUnreadable.push(itemId);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n historyConflictMarkers.push({\n id: itemId,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n const lines = raw.split(/\\r?\\n/);\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index]?.trim();\n if (!line) {\n continue;\n }\n try {\n JSON.parse(line);\n } catch {\n historyInvalidJson.push({\n id: itemId,\n line: index + 1,\n });\n }\n }\n }\n\n const warnings = [\n ...itemUnreadable.map((entry) => `integrity_item_unreadable:${entry}`),\n ...itemConflictMarkers.map((entry) => `integrity_item_conflict_marker:${entry.path}:L${entry.line}`),\n ...itemParseFailures.map((entry) => `integrity_item_parse_failed:${entry}`),\n ...historyUnreadable.map((entry) => `integrity_history_unreadable:${entry}`),\n ...historyConflictMarkers.map((entry) => `integrity_history_conflict_marker:${entry.id}:L${entry.line}`),\n ...historyInvalidJson.map((entry) => `integrity_history_invalid_json:${entry.id}:L${entry.line}`),\n /* c8 ignore start -- outdated-version items are unreachable until CURRENT_ITEM_FORMAT_VERSION advances past the baseline (an effective version below 1 cannot occur); the per-item mapping is covered in item-format-version.spec, and the ahead path below is covered by health-command.spec */\n ...formatVersionScan.outdated.map((entry) => `integrity_item_outdated_format_version:${entry}`),\n /* c8 ignore stop */\n ...formatVersionScan.ahead.map((entry) => `integrity_item_ahead_format_version:${entry}`),\n ];\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n\n return {\n check: {\n name: \"integrity\",\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_item_files: itemPaths.length,\n checked_history_streams: historyFiles.length,\n counts: {\n item_unreadable: itemUnreadable.length,\n item_conflict_markers: itemConflictMarkers.length,\n item_parse_failures: itemParseFailures.length,\n history_unreadable: historyUnreadable.length,\n history_conflict_markers: historyConflictMarkers.length,\n history_invalid_json: historyInvalidJson.length,\n item_outdated_format_version: formatVersionScan.outdated.length,\n item_ahead_format_version: formatVersionScan.ahead.length,\n },\n item_unreadable: itemUnreadable,\n item_conflict_markers: itemConflictMarkers,\n item_parse_failures: itemParseFailures,\n item_outdated_format_version: formatVersionScan.outdated,\n item_ahead_format_version: formatVersionScan.ahead,\n history_unreadable: historyUnreadable,\n history_conflict_markers: historyConflictMarkers,\n history_invalid_json: historyInvalidJson,\n },\n },\n warnings: normalizedWarnings,\n };\n}\n\n/* c8 ignore start -- activate export shape variants are exercised through integration load tests */\nfunction hasActivateExport(moduleRecord: Record<string, unknown>): boolean {\n if (typeof moduleRecord.activate === \"function\") {\n return true;\n }\n const defaultExport = moduleRecord.default;\n if (typeof defaultExport !== \"object\" || defaultExport === null) {\n return false;\n }\n return typeof (defaultExport as Record<string, unknown>).activate === \"function\";\n}\n/* c8 ignore stop */\n\nfunction summarizeLoadedExtension(extension: LoadedExtension): Record<string, unknown> {\n const summary: Record<string, unknown> = {\n layer: extension.layer,\n directory: extension.directory,\n manifest_path: extension.manifest_path,\n name: extension.name,\n version: extension.version,\n entry: extension.entry,\n priority: extension.priority,\n entry_path: extension.entry_path,\n has_activate: hasActivateExport(extension.module as Record<string, unknown>),\n };\n /* c8 ignore start -- capability list optionality is exercised by extension load integration suites */\n if (Array.isArray(extension.capabilities)) {\n summary.capabilities = [...extension.capabilities];\n }\n /* c8 ignore stop */\n return summary;\n}\n\nfunction resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicitId = toNonEmptyStringOrUndefined(definition.id);\n if (explicitId) {\n return explicitId;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\nfunction resolveMigrationStatus(definition: Record<string, unknown>): MigrationRuntimeStatus {\n const rawStatus = toNonEmptyStringOrUndefined(definition.status);\n const normalized = rawStatus?.toLowerCase();\n if (normalized === \"failed\") {\n return \"failed\";\n }\n if (normalized === \"applied\") {\n return \"applied\";\n }\n return \"pending\";\n}\n\nfunction resolveMigrationFailureReason(definition: Record<string, unknown>): string | undefined {\n return toNonEmptyStringOrUndefined(definition.reason) ?? toNonEmptyStringOrUndefined(definition.error) ?? toNonEmptyStringOrUndefined(definition.message);\n}\n\n/* c8 ignore start -- comparator tie-break branches are deterministic ordering glue exercised via migration integration tests */\nfunction compareMigrationEntries(left: MigrationStatusEntry, right: MigrationStatusEntry): number {\n const byLayer = (left.layer ?? \"\").localeCompare(right.layer ?? \"\");\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = (left.name ?? \"\").localeCompare(right.name ?? \"\");\n if (byName !== 0) {\n return byName;\n }\n return (left.id ?? \"\").localeCompare(right.id ?? \"\");\n}\n/* c8 ignore stop */\n\nfunction summarizeMigrationStatuses(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): { summary: MigrationStatusSummary; warnings: string[] } {\n const applied: MigrationStatusEntry[] = [];\n const pending: MigrationStatusEntry[] = [];\n const failed: MigrationStatusEntry[] = [];\n\n migrations.forEach((migration, index) => {\n const id = resolveMigrationId(migration.definition, index);\n const status = resolveMigrationStatus(migration.definition);\n if (status === \"applied\") {\n applied.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n return;\n }\n if (status === \"failed\") {\n failed.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n reason: resolveMigrationFailureReason(migration.definition),\n });\n return;\n }\n pending.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n });\n\n applied.sort(compareMigrationEntries);\n pending.sort(compareMigrationEntries);\n failed.sort(compareMigrationEntries);\n\n const warnings = [\n ...failed.map((entry) => `extension_migration_failed:${entry.layer}:${entry.name}:${entry.id}`),\n ...pending.map((entry) => `extension_migration_pending:${entry.layer}:${entry.name}:${entry.id}`),\n ];\n\n return {\n summary: {\n applied,\n pending,\n failed,\n applied_count: applied.length,\n pending_count: pending.length,\n failed_count: failed.length,\n },\n warnings,\n };\n}\n\nfunction buildExtensionHealthTriageSummary(\n warnings: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n migrationStatus: MigrationStatusSummary,\n managedStateWarningCount: number,\n managedExtensionEntriesCount: number,\n unmanagedLoadedExtensions: string[],\n unmanagedExpectedExtensions: string[],\n unmanagedActionRequiredExtensions: string[],\n): ExtensionHealthTriageSummary {\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n const warningCodes = [...new Set(normalizedWarnings.map((value) => warningCode(value)))].sort((left, right) =>\n left.localeCompare(right),\n );\n const unknownCapabilityCount = normalizedWarnings.filter((warning) => warning.startsWith(\"extension_capability_unknown:\")).length;\n const updateHealthPartial = unmanagedActionRequiredExtensions.length > 0;\n const updateHealthCoverage = updateHealthPartial ? \"partial\" : \"full\";\n const remediation: string[] = [];\n const registrationCollisionRemediation = buildRegistrationCollisionRemediation(normalizedWarnings, {\n deactivate: \"pm extension --deactivate <name> --project/--global\",\n doctor: \"pm extension --doctor --project/--global --detail deep --trace\",\n });\n if (registrationCollisionRemediation) {\n remediation.push(registrationCollisionRemediation);\n }\n if (loadFailureCount > 0) {\n remediation.push(\"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\");\n }\n if (activationFailureCount > 0) {\n remediation.push(\"Review checks[name=extensions].details.activation.failed in pm health --json for activation error details.\");\n }\n if (migrationStatus.failed_count > 0 || migrationStatus.pending_count > 0) {\n remediation.push(\"Resolve pending/failed extension migrations before write commands; use --force only when policy allows.\");\n }\n if (managedStateWarningCount > 0) {\n remediation.push(\"Run pm extension --manage --project and pm extension --manage --global to refresh managed-state diagnostics.\");\n }\n if (unknownCapabilityCount > 0) {\n remediation.push(\n `Unknown extension capabilities detected. Allowed capabilities: ${KNOWN_EXTENSION_CAPABILITIES.join(\", \")}. ` +\n \"Review extension_capability_unknown warning details for suggested replacements.\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_capability_legacy_alias:\"))) {\n remediation.push(\n \"Legacy extension capability aliases were auto-remapped to canonical capabilities. \" +\n \"Update manifests to canonical names (migration/validation -> schema).\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_command_definition_legacy_handler_alias:\"))) {\n remediation.push(\n \"Extension command definitions using legacy handler were auto-remapped. \" +\n \"Update command definitions to use run: (context) => ... for forward compatibility.\",\n );\n }\n if (updateHealthPartial) {\n remediation.push(\n \"Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via pm extension --manage --project/--global --fix-managed-state, pm extension --adopt-all --project/--global, or pm extension --adopt <name>.\",\n );\n } else if (unmanagedLoadedExtensions.length > 0) {\n remediation.push(\n \"Loaded unmanaged extensions are currently treated as informational. Use pm extension --manage --project/--global --fix-managed-state to adopt them for update checks.\",\n );\n }\n if (remediation.length === 0) {\n remediation.push(\"No immediate action required. Re-run pm health after extension configuration changes.\");\n }\n return {\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n warning_count: normalizedWarnings.length,\n warning_codes: warningCodes,\n load_failure_count: loadFailureCount,\n activation_failure_count: activationFailureCount,\n migration_failed_count: migrationStatus.failed_count,\n migration_pending_count: migrationStatus.pending_count,\n managed_state_warning_count: managedStateWarningCount,\n managed_extension_entries_count: managedExtensionEntriesCount,\n unmanaged_loaded_extension_count: unmanagedLoadedExtensions.length,\n unmanaged_loaded_extensions: unmanagedLoadedExtensions,\n unmanaged_expected_extension_count: unmanagedExpectedExtensions.length,\n unmanaged_expected_extensions: unmanagedExpectedExtensions,\n unmanaged_action_required_extension_count: unmanagedActionRequiredExtensions.length,\n unmanaged_action_required_extensions: unmanagedActionRequiredExtensions,\n update_health_coverage: updateHealthCoverage,\n update_health_partial: updateHealthPartial,\n unknown_capability_count: unknownCapabilityCount,\n top_warnings: normalizedWarnings.slice(0, 8),\n remediation,\n };\n}\n\nasync function buildExtensionCheck(\n pmRoot: string,\n settings: PmSettings,\n noExtensionsFlag: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: noExtensionsFlag,\n });\n const loadedSummaries = loadResult.loaded.map((extension) => summarizeLoadedExtension(extension));\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n const [projectManagedState, globalManagedState] = await Promise.all([\n readManagedExtensionState(loadResult.roots.project),\n readManagedExtensionState(loadResult.roots.global),\n ]);\n const migrationStatus = summarizeMigrationStatuses(activationResult.registrations.migrations);\n const activationDetails = {\n failed: activationResult.failed,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n command_override_count: activationResult.command_override_count,\n command_handler_count: activationResult.command_handler_count,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n registration_counts: activationResult.registration_counts,\n registrations: activationResult.registrations,\n migration_status: migrationStatus.summary,\n managed_extensions: {\n project: {\n path: projectManagedState.path,\n count: projectManagedState.state.entries.length,\n entries: projectManagedState.state.entries,\n },\n global: {\n path: globalManagedState.path,\n count: globalManagedState.state.entries.length,\n entries: globalManagedState.state.entries,\n },\n },\n };\n /* c8 ignore start -- unmanaged/expected grouping matrices are exercised in doctor + extension integration suites */\n const managedProjectNames = new Set(\n projectManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)),\n );\n const managedGlobalNames = new Set(globalManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)));\n const unmanagedLoadedEntries = [\n ...new Map(\n loadResult.loaded\n .filter((entry) => {\n const managedNames = entry.layer === \"project\" ? managedProjectNames : managedGlobalNames;\n return !managedNames.has(normalizeExtensionNameForMatch(entry.name));\n })\n .map((entry) => [\n `${entry.layer}:${entry.name}`,\n {\n layer: entry.layer,\n name: entry.name,\n directory: entry.directory,\n },\n ]),\n ).values(),\n ].sort((left, right) => {\n const leftKey = `${left.layer}:${left.name}`;\n const rightKey = `${right.layer}:${right.name}`;\n return leftKey.localeCompare(rightKey);\n });\n const unmanagedLoadedExtensions = unmanagedLoadedEntries\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedExpectedExtensions = unmanagedLoadedEntries\n .filter((entry) => isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedActionRequiredExtensions = unmanagedLoadedEntries\n .filter((entry) => !isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n /* c8 ignore stop */\n const updateCoverageWarnings =\n unmanagedActionRequiredExtensions.length > 0\n ? [`extension_update_health_partial_coverage:skipped_unmanaged:${unmanagedActionRequiredExtensions.length}`]\n : [];\n const extensionWarnings = [\n ...loadResult.warnings,\n ...activationDetails.warnings,\n ...migrationStatus.warnings,\n ...projectManagedState.warnings,\n ...globalManagedState.warnings,\n ...updateCoverageWarnings,\n ];\n const capabilityGuidance = collectUnknownCapabilityGuidance(extensionWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const extensionTriage = buildExtensionHealthTriageSummary(\n extensionWarnings,\n loadResult.failed.length,\n activationResult.failed.length,\n migrationStatus.summary,\n projectManagedState.warnings.length + globalManagedState.warnings.length,\n projectManagedState.state.entries.length + globalManagedState.state.entries.length,\n unmanagedLoadedExtensions,\n unmanagedExpectedExtensions,\n unmanagedActionRequiredExtensions,\n );\n\n return {\n check: {\n name: \"extensions\",\n status: extensionWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n ...loadResult,\n loaded: loadedSummaries,\n warnings: extensionWarnings,\n activation: activationDetails,\n triage: extensionTriage,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n } as Record<string, unknown>,\n },\n warnings: extensionWarnings,\n };\n}\n\nfunction summarizeList(values: string[], limit: number): { values: string[]; truncated: boolean } {\n if (values.length <= limit) {\n return { values, truncated: false };\n }\n return {\n values: values.slice(0, limit),\n truncated: true,\n };\n}\n\nfunction summarizeRecordList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n return {\n count: value.length,\n sample: value.slice(0, limit),\n truncated: value.length > limit,\n };\n}\n\nfunction summarizeExtensionRecord(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {};\n }\n const record = value as Record<string, unknown>;\n return {\n layer: record.layer,\n directory: record.directory,\n name: record.name,\n version: record.version,\n enabled: record.enabled,\n status: record.status,\n has_activate: record.has_activate,\n capabilities: record.capabilities,\n };\n}\n\nfunction summarizeExtensionList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n const summary = summarizeRecordList(value, limit);\n return {\n ...summary,\n sample: summary.sample.map((entry) => summarizeExtensionRecord(entry)),\n };\n}\n\nfunction summarizeStringList(value: unknown, limit: number): { count: number; sample: string[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n const strings = value.filter((entry): entry is string => typeof entry === \"string\");\n return {\n count: strings.length,\n sample: strings.slice(0, limit),\n truncated: strings.length > limit,\n };\n}\n\n/* c8 ignore start -- brief/summary projection matrix branches are validated in projection integration tests */\nfunction summarizeHealthCheckDetails(check: HealthCheck, limit: number): Record<string, unknown> {\n const details = check.details;\n if (check.name === \"settings\") {\n return {\n version: details.version,\n id_prefix: details.id_prefix,\n locks_ttl_seconds: details.locks_ttl_seconds,\n warnings: summarizeStringList(details.warnings, limit),\n };\n }\n if (check.name === \"directories\") {\n return {\n required_count: Array.isArray(details.required) ? details.required.length : 0,\n optional_count: Array.isArray(details.optional) ? details.optional.length : 0,\n missing_required: summarizeStringList(details.missing_required, limit),\n missing_optional: summarizeStringList(details.missing_optional, limit),\n missing: summarizeStringList(details.missing, limit),\n strict_directories: details.strict_directories,\n };\n }\n if (check.name === \"settings_values\") {\n return {\n warnings: summarizeStringList(details.warnings, limit),\n };\n }\n if (check.name === \"telemetry\") {\n return {\n enabled: details.enabled,\n capture_level: details.capture_level,\n endpoint: details.endpoint,\n queue_exists: details.queue_exists,\n queue_entries: details.queue_entries,\n queue_draining: details.queue_draining,\n queue_invalid_rows: details.queue_invalid_rows,\n queue_rows_total: details.queue_rows_total,\n last_successful_flush_at: details.last_successful_flush_at,\n last_failed_flush_at: details.last_failed_flush_at,\n endpoint_probe: details.endpoint_probe,\n env_overrides: details.env_overrides,\n };\n }\n if (check.name === \"extensions\") {\n const activation = typeof details.activation === \"object\" && details.activation !== null ? (details.activation as Record<string, unknown>) : {};\n return {\n disabled_by_flag: details.disabled_by_flag,\n discovered: summarizeExtensionList(details.discovered, limit),\n effective: summarizeExtensionList(details.effective, limit),\n loaded: summarizeExtensionList(details.loaded, limit),\n failed: summarizeRecordList(details.failed, limit),\n warnings: summarizeStringList(details.warnings, limit),\n activation: {\n failed: summarizeRecordList(activation.failed, limit),\n warnings: summarizeStringList(activation.warnings, limit),\n hook_counts: activation.hook_counts,\n command_handler_count: activation.command_handler_count,\n service_override_count: activation.service_override_count,\n renderer_override_count: activation.renderer_override_count,\n registration_counts: activation.registration_counts,\n migration_status:\n typeof activation.migration_status === \"object\" && activation.migration_status !== null\n ? {\n applied_count: (activation.migration_status as Record<string, unknown>).applied_count,\n pending_count: (activation.migration_status as Record<string, unknown>).pending_count,\n failed_count: (activation.migration_status as Record<string, unknown>).failed_count,\n }\n : null,\n },\n triage: details.triage,\n capability_contract: details.capability_contract,\n capability_guidance: summarizeRecordList(details.capability_guidance, limit),\n };\n }\n if (check.name === \"storage\") {\n return details;\n }\n if (check.name === \"locks\") {\n // Counts only: drops remediation_map, which is full-output-only by contract.\n return {\n active_lock_count: details.active_lock_count,\n stale_lock_count: details.stale_lock_count,\n unreadable_lock_count: details.unreadable_lock_count,\n unparseable_lock_count: details.unparseable_lock_count,\n };\n }\n if (check.name === \"integrity\") {\n return {\n checked_item_files: details.checked_item_files,\n checked_history_streams: details.checked_history_streams,\n counts: details.counts,\n item_unreadable: summarizeStringList(details.item_unreadable, limit),\n item_conflict_markers: summarizeRecordList(details.item_conflict_markers, limit),\n item_parse_failures: summarizeStringList(details.item_parse_failures, limit),\n history_unreadable: summarizeStringList(details.history_unreadable, limit),\n history_conflict_markers: summarizeRecordList(details.history_conflict_markers, limit),\n history_invalid_json: summarizeRecordList(details.history_invalid_json, limit),\n skipped: details.skipped,\n };\n }\n if (check.name === \"history_drift\") {\n return {\n checked_items: details.checked_items,\n counts: details.counts,\n drifted_items: summarizeStringList(details.drifted_items, limit),\n missing_streams: summarizeStringList(details.missing_streams, limit),\n unreadable_streams: summarizeStringList(details.unreadable_streams, limit),\n hash_mismatches: summarizeStringList(details.hash_mismatches, limit),\n chain_mismatches: summarizeStringList(details.chain_mismatches, limit),\n skipped: details.skipped,\n };\n }\n if (check.name === \"vectorization\") {\n return {\n semantic_runtime_available: details.semantic_runtime_available,\n compatibility_mode_auto_defaults: details.compatibility_mode_auto_defaults,\n auto_ollama_defaults_applied: details.auto_ollama_defaults_applied,\n refresh_policy: details.refresh_policy,\n provider_active: details.provider_active,\n vector_store_active: details.vector_store_active,\n items: details.items,\n ledger_entries_before: details.ledger_entries_before,\n stale_items_before_total: details.stale_items_before_total,\n stale_items_before: summarizeStringList(details.stale_items_before, limit),\n refresh_attempted: details.refresh_attempted,\n refresh_skipped_reason: details.refresh_skipped_reason,\n refresh_result: details.refresh_result,\n ledger_entries_after: details.ledger_entries_after,\n stale_items_after_total: details.stale_items_after_total,\n stale_items_after: summarizeStringList(details.stale_items_after, limit),\n skipped: details.skipped,\n };\n }\n return details;\n}\n/* c8 ignore stop */\n\nfunction applyBriefHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n return {\n ok: result.ok,\n checks: result.checks.map((check) => ({\n name: check.name,\n status: check.status,\n details: summarizeHealthCheckDetails(check, BRIEF_HEALTH_DETAIL_LIMIT),\n })),\n warnings: warningsSummary.sample,\n projection: {\n mode: \"brief\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction isSkippedHealthCheck(check: HealthCheck): boolean {\n return check.details.skipped === true;\n}\n\nfunction applySummaryHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n const omittedChecks = result.checks.filter(isSkippedHealthCheck).map((check) => check.name);\n return {\n ok: result.ok,\n checks: result.checks\n .filter((check) => !isSkippedHealthCheck(check))\n .map((check) => ({\n name: check.name,\n status: check.status,\n details: {},\n })),\n warning_count: warningsSummary.count,\n warnings: warningsSummary.sample,\n projection: {\n mode: \"summary\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n omitted_checks: omittedChecks,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction selectStaleItemDetail(\n values: string[],\n verboseStaleItems: boolean,\n): {\n values: string[];\n truncated: boolean;\n total: number;\n} {\n if (verboseStaleItems) {\n return {\n values,\n truncated: false,\n total: values.length,\n };\n }\n const summary = summarizeList(values, STALE_VECTORIZATION_SUMMARY_LIMIT);\n return {\n values: summary.values,\n truncated: summary.truncated,\n total: values.length,\n };\n}\n\ntype VectorizationRuntimeDefaults = ReturnType<typeof resolveSettingsWithSemanticRuntimeDefaults>;\ntype VectorizationProviderResolution = ReturnType<typeof resolveEmbeddingProviders>;\ntype VectorizationStoreResolution = ReturnType<typeof resolveVectorStores>;\ntype VectorizationLedger = Awaited<ReturnType<typeof readVectorizationStatusLedger>>;\ntype VectorizationRefreshResult = Awaited<ReturnType<typeof refreshSemanticEmbeddingsForMutatedItems>>;\n\ninterface VectorizationRuntimeSnapshot {\n runtimeDefaults: VectorizationRuntimeDefaults;\n providerResolution: VectorizationProviderResolution;\n vectorStoreResolution: VectorizationStoreResolution;\n runtimeEmbeddingIdentity: ReturnType<typeof buildVectorizationEmbeddingIdentity> | null;\n semanticRuntimeAvailable: boolean;\n}\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n pending_otel_spans?: number;\n last_otel_attempt_at?: string;\n last_otel_success_at?: string;\n last_otel_failure_at?: string;\n last_otel_failure_error?: string;\n}\n\nfunction telemetryEnvFlagEnabled(\n envKey: \"PM_TELEMETRY_DISABLED\" | \"PM_TELEMETRY_OTEL_DISABLED\" | \"PM_NO_TELEMETRY\" | \"PM_TELEMETRY_INLINE_FLUSH\",\n): boolean {\n const value = (process.env[envKey] ?? \"\").trim().toLowerCase();\n return value === \"1\" || value === \"true\" || value === \"yes\" || value === \"on\";\n}\n\n/* c8 ignore start -- environment override permutations are covered by runtime integration tests */\nfunction telemetrySourceContextOverride(): string | null {\n // Only report an override the runtime actually honours: runtime.ts ignores any\n // value outside the enum and falls back to the inferred context, so health must\n // report null for an unrecognized value rather than implying it took effect.\n const value = (process.env.PM_TELEMETRY_SOURCE_CONTEXT ?? \"\").trim().toLowerCase();\n return PM_TELEMETRY_SOURCE_CONTEXT_SET.has(value) ? value : null;\n}\n/* c8 ignore stop */\n\nfunction normalizeEndpointForDisplay(rawEndpoint: string): string {\n const trimmed = rawEndpoint.trim();\n if (trimmed.length === 0) {\n return \"\";\n }\n try {\n const parsed = new URL(trimmed);\n parsed.username = \"\";\n parsed.password = \"\";\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n } catch {\n return trimmed;\n }\n}\n\nfunction parseTelemetryQueue(raw: string): {\n validEntries: number;\n invalidRows: number;\n totalRows: number;\n highRetryEntries: number;\n maxAttempts: number;\n} {\n let validEntries = 0;\n let invalidRows = 0;\n let totalRows = 0;\n let highRetryEntries = 0;\n let maxAttempts = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n totalRows += 1;\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n Number.isFinite(parsed.attempts)\n ) {\n const attempts = Math.max(0, Math.trunc(parsed.attempts));\n validEntries += 1;\n maxAttempts = Math.max(maxAttempts, attempts);\n if (attempts >= TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD) {\n highRetryEntries += 1;\n }\n } else {\n /* c8 ignore next -- invalid queue rows are covered by end-to-end telemetry fixtures */\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n validEntries,\n invalidRows,\n totalRows,\n highRetryEntries,\n maxAttempts,\n };\n}\n\ntype TelemetryQueueSummary = ReturnType<typeof parseTelemetryQueue>;\n\ninterface TelemetryEndpointProbeSummary {\n attempted: boolean;\n probe_url?: string;\n ok?: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}\n\nfunction emptyTelemetryQueueSummary(): TelemetryQueueSummary {\n return { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };\n}\n\n/* c8 ignore start -- telemetry state corruption and otel-failure branches require runtime-coordinated fixture mutation */\nfunction parseTelemetryRuntimeState(stateRaw: string | null): { runtimeState: TelemetryRuntimeStateRecord; stateParseFailed: boolean } {\n if (!stateRaw || stateRaw.trim().length === 0) {\n return { runtimeState: {}, stateParseFailed: false };\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return { runtimeState: parsed, stateParseFailed: false };\n }\n return { runtimeState: {}, stateParseFailed: true };\n } catch {\n return { runtimeState: {}, stateParseFailed: true };\n }\n}\n\nasync function maybeProbeTelemetryEndpoint(\n settings: PmSettings,\n checkTelemetry: boolean,\n): Promise<TelemetryEndpointProbeSummary | undefined> {\n const endpoint = settings.telemetry.endpoint.trim();\n if (!checkTelemetry || !settings.telemetry.enabled || endpoint.length === 0) {\n return undefined;\n }\n const probe = await probeTelemetryEndpointHealth(endpoint);\n return {\n attempted: true,\n ...probe,\n };\n}\n\nfunction collectTelemetryQueueWarnings(\n settings: PmSettings,\n queueSummary: TelemetryQueueSummary,\n runtimeState: TelemetryRuntimeStateRecord,\n): string[] {\n const warnings: string[] = [];\n if (queueSummary.invalidRows > 0) {\n warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);\n }\n if (!settings.telemetry.enabled || queueSummary.validEntries === 0) {\n return warnings;\n }\n const lastSuccess = runtimeState.last_successful_flush_at;\n const lastFailure = runtimeState.last_failed_flush_at;\n const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);\n const neverFlushed = !lastSuccess;\n const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;\n if (activeFailure || neverFlushed || highWater) {\n warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);\n }\n if (queueSummary.highRetryEntries > 0) {\n warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);\n }\n return warnings;\n}\n\nfunction collectTelemetryEndpointWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n if (!endpointProbe || endpointProbe.ok !== false) {\n return [];\n }\n return typeof endpointProbe.status === \"number\"\n ? [`telemetry_endpoint_probe_http_status:${endpointProbe.status}`]\n : [\"telemetry_endpoint_probe_failed\"];\n}\n\nfunction collectTelemetrySchemaWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? \"\", 10);\n if (endpointProbe?.ok === true && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {\n return [`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`];\n }\n return [];\n}\n\nfunction collectTelemetryOtelWarnings(settings: PmSettings, runtimeState: TelemetryRuntimeStateRecord): string[] {\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n const lastOtelSuccess = runtimeState.last_otel_success_at;\n const lastOtelFailure = runtimeState.last_otel_failure_at;\n const otelExportFailing =\n settings.telemetry.enabled &&\n pendingOtelSpans > 0 &&\n Boolean(lastOtelFailure) &&\n // >= so a mixed-outcome batch (success + failure share the same attempt\n // timestamp) still surfaces the warning rather than being masked by the tie.\n (!lastOtelSuccess || (lastOtelFailure as string) >= lastOtelSuccess);\n return otelExportFailing ? [`telemetry_otel_export_failing:${pendingOtelSpans}`] : [];\n}\n\nfunction buildTelemetryEnvOverrideDetails(): Record<string, unknown> {\n return {\n telemetry_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_DISABLED\") || telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n pm_no_telemetry: telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n telemetry_otel_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_OTEL_DISABLED\"),\n telemetry_inline_flush: telemetryEnvFlagEnabled(\"PM_TELEMETRY_INLINE_FLUSH\"),\n telemetry_source_context: telemetrySourceContextOverride(),\n };\n}\n/* c8 ignore stop */\n\nfunction telemetryQueueHasEntries(settings: PmSettings, queueSummary: TelemetryQueueSummary): boolean {\n return settings.telemetry.enabled && queueSummary.validEntries > 0;\n}\n\nfunction isTelemetryQueueDraining(queueHasEntries: boolean, warnings: string[]): boolean {\n return (\n queueHasEntries &&\n warnings.every(\n (warning) => !warning.startsWith(\"telemetry_queue_pending:\") && !warning.startsWith(\"telemetry_queue_high_retries:\"),\n )\n );\n}\n\nasync function probeTelemetryEndpointHealth(endpoint: string): Promise<{\n probe_url: string;\n ok: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}> {\n let probeUrl = endpoint;\n try {\n const parsed = new URL(endpoint);\n parsed.pathname = \"/healthz\";\n parsed.search = \"\";\n parsed.hash = \"\";\n probeUrl = parsed.toString();\n } catch {\n // keep original endpoint when URL parsing fails\n }\n try {\n const response = await fetch(probeUrl, {\n method: \"GET\",\n signal: AbortSignal.timeout(TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS),\n });\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: response.ok,\n status: response.status,\n max_schema_version: (() => {\n for (const headerName of TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS) {\n const value = response.headers.get(headerName)?.trim();\n if (value && value.length > 0) {\n return value;\n }\n }\n return undefined;\n })(),\n };\n } catch (error: unknown) {\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: false,\n /* c8 ignore next -- non-Error throwables require transport-layer fault injection */\n error: error instanceof Error ? error.message : \"probe_failed\",\n };\n }\n}\n\nasync function buildTelemetryCheck(\n settings: PmSettings,\n options: { checkTelemetry: boolean },\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n\n const queueRaw = await readFileIfExists(queuePath);\n const queueExists = queueRaw !== null;\n const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, \"utf8\") : 0;\n const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : emptyTelemetryQueueSummary();\n\n const stateRaw = await readFileIfExists(statePath);\n const { runtimeState, stateParseFailed } = parseTelemetryRuntimeState(stateRaw);\n\n const endpoint = settings.telemetry.endpoint.trim();\n const endpointDisplay = normalizeEndpointForDisplay(endpoint);\n const endpointProbe = await maybeProbeTelemetryEndpoint(settings, options.checkTelemetry);\n\n const warnings: string[] = [];\n if (stateParseFailed) {\n warnings.push(\"telemetry_state_invalid_json\");\n }\n warnings.push(\n ...collectTelemetryQueueWarnings(settings, queueSummary, runtimeState),\n ...collectTelemetryEndpointWarnings(endpointProbe),\n ...collectTelemetrySchemaWarnings(endpointProbe),\n ...collectTelemetryOtelWarnings(settings, runtimeState),\n );\n const queueHasEntries = telemetryQueueHasEntries(settings, queueSummary);\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n\n return {\n check: {\n name: \"telemetry\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n enabled: settings.telemetry.enabled,\n capture_level: settings.telemetry.capture_level,\n endpoint: endpointDisplay,\n global_pm_root: globalPmRoot,\n queue_path: queuePath,\n queue_exists: queueExists,\n queue_entries: queueSummary.validEntries,\n queue_draining: isTelemetryQueueDraining(queueHasEntries, warnings),\n queue_invalid_rows: queueSummary.invalidRows,\n queue_rows_total: queueSummary.totalRows,\n queue_size_bytes: queueSizeBytes,\n queue_high_retry_entries: queueSummary.highRetryEntries,\n queue_high_retry_threshold: TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD,\n queue_max_attempts: queueSummary.maxAttempts,\n runtime_state_path: statePath,\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n pending_otel_spans: pendingOtelSpans,\n last_otel_attempt_at: runtimeState.last_otel_attempt_at ?? null,\n last_otel_success_at: runtimeState.last_otel_success_at ?? null,\n last_otel_failure_at: runtimeState.last_otel_failure_at ?? null,\n last_otel_failure_error: runtimeState.last_otel_failure_error ?? null,\n endpoint_probe: endpointProbe ?? { attempted: false },\n env_overrides: buildTelemetryEnvOverrideDetails(),\n },\n },\n warnings,\n };\n}\n\n/**\n * Read-only locks check (pm-xo1n): surfaces active/stale/unreadable/unparseable\n * lock counts using the exact classification `pm gc --scope locks` acts on, so\n * agents can gate on stale item-claim locks before running gc speculatively.\n */\nasync function buildLocksCheck(pmRoot: string): Promise<{ check: HealthCheck; warnings: string[] }> {\n /* c8 ignore start -- scan failure branches require filesystem-level fault injection */\n let scan: Awaited<ReturnType<typeof scanLockHealth>>;\n try {\n scan = await scanLockHealth(pmRoot);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n check: {\n name: \"locks\",\n status: \"warn\",\n details: {\n active_lock_count: 0,\n stale_lock_count: 0,\n unreadable_lock_count: 0,\n unparseable_lock_count: 0,\n scan_failed: true,\n error: message,\n pm_root: pmRoot,\n },\n },\n warnings: [`locks_scan_failed:${message}`],\n };\n }\n const warnings: string[] = [];\n if (scan.stale_lock_count > 0) {\n warnings.push(`locks_stale_count:${scan.stale_lock_count}`);\n }\n if (scan.unreadable_lock_count > 0) {\n warnings.push(`locks_unreadable:${scan.unreadable_lock_count}`);\n }\n /* c8 ignore stop */\n return {\n check: {\n name: \"locks\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n active_lock_count: scan.active_lock_count,\n stale_lock_count: scan.stale_lock_count,\n unreadable_lock_count: scan.unreadable_lock_count,\n unparseable_lock_count: scan.unparseable_lock_count,\n },\n },\n warnings,\n };\n}\n\nasync function buildHistoryDriftCheck(\n pmRoot: string,\n items: ItemWithBody[],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const cacheHitVerification = \"metadata\" as const;\n const { missingStreams, unreadableStreams, hashMismatches, chainMismatches, driftedItems } = await scanHistoryDrift(\n pmRoot,\n items,\n { cacheHitVerification },\n );\n const warnings = [\n ...missingStreams.map((id) => `history_drift_missing_stream:${id}`),\n ...unreadableStreams.map((id) => `history_drift_unreadable_stream:${id}`),\n ...hashMismatches.map((id) => `history_drift_hash_mismatch:${id}`),\n ...chainMismatches.map((id) => `history_drift_chain_mismatch:${id}`),\n ];\n return {\n check: {\n name: \"history_drift\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_items: items.length,\n cache_hit_verification: cacheHitVerification,\n drifted_items: driftedItems,\n counts: {\n drifted: driftedItems.length,\n missing_streams: missingStreams.length,\n unreadable_streams: unreadableStreams.length,\n hash_mismatches: hashMismatches.length,\n chain_mismatches: chainMismatches.length,\n },\n missing_streams: missingStreams,\n unreadable_streams: unreadableStreams,\n hash_mismatches: hashMismatches,\n chain_mismatches: chainMismatches,\n },\n },\n warnings,\n };\n}\n\nfunction buildVectorizationRuntimeSnapshot(settings: PmSettings): VectorizationRuntimeSnapshot {\n const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);\n const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);\n const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings);\n const runtimeEmbeddingIdentity = providerResolution.active\n ? buildVectorizationEmbeddingIdentity(providerResolution.active.name, providerResolution.active.model)\n : null;\n return {\n runtimeDefaults,\n providerResolution,\n vectorStoreResolution,\n runtimeEmbeddingIdentity,\n semanticRuntimeAvailable: Boolean(providerResolution.active && vectorStoreResolution.active),\n };\n}\n\nfunction emptyVectorizationRefreshResult(): VectorizationRefreshResult {\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n}\n\nasync function refreshStaleVectorizationItems(params: {\n pmRoot: string;\n snapshot: VectorizationRuntimeSnapshot;\n refreshPolicy: VectorRefreshPolicy;\n staleBefore: string[];\n}): Promise<VectorizationRefreshResult> {\n if (!params.refreshPolicy.enabled || !params.snapshot.semanticRuntimeAvailable || params.staleBefore.length === 0) {\n return emptyVectorizationRefreshResult();\n }\n return refreshSemanticEmbeddingsForMutatedItems(params.pmRoot, params.staleBefore, {\n settings: params.snapshot.runtimeDefaults.settings,\n apply_runtime_defaults: false,\n });\n}\n\nfunction vectorizationEmbeddingIdentityChanged(params: {\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n ledgerBefore: VectorizationLedger;\n runtimeEmbeddingIdentity: VectorizationRuntimeSnapshot[\"runtimeEmbeddingIdentity\"];\n}): boolean {\n return (\n params.strictVectorizationWarnings &&\n params.semanticRuntimeAvailable &&\n Boolean(\n params.ledgerBefore.embedding &&\n params.runtimeEmbeddingIdentity &&\n hasVectorizationEmbeddingIdentityChanged(params.ledgerBefore.embedding, params.runtimeEmbeddingIdentity),\n )\n );\n}\n\n/* c8 ignore start -- strict-vectorization warning synthesis branches are integration-only policy permutations */\nfunction collectVectorizationWarnings(params: {\n ledgerBefore: VectorizationLedger;\n ledgerAfter: VectorizationLedger;\n refreshResult: VectorizationRefreshResult;\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n embeddingIdentityChanged: boolean;\n staleAfter: string[];\n}): string[] {\n const warningSet = new Set<string>([...params.ledgerBefore.warnings, ...params.ledgerAfter.warnings]);\n if (params.strictVectorizationWarnings) {\n for (const warning of params.refreshResult.warnings) {\n warningSet.add(warning);\n }\n }\n if (params.embeddingIdentityChanged) {\n warningSet.add(\"vectorization_embedding_identity_changed\");\n }\n if (params.strictVectorizationWarnings && params.semanticRuntimeAvailable && params.staleAfter.length > 0) {\n warningSet.add(`vectorization_stale_items_remaining:${params.staleAfter.length}`);\n }\n return [...warningSet].sort((left, right) => left.localeCompare(right));\n}\n/* c8 ignore stop */\n\nfunction resolveVectorizationRefreshSkippedReason(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): string | null {\n if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {\n return null;\n }\n if (!refreshPolicy.enabled) {\n return \"refresh_disabled\";\n }\n return semanticRuntimeAvailable ? \"no_stale_items\" : \"semantic_runtime_unavailable\";\n}\n\nfunction buildVectorizationProviderDetails(settings: PmSettings, snapshot: VectorizationRuntimeSnapshot): Record<string, unknown> {\n const activeProvider = snapshot.providerResolution.active?.name ?? null;\n const activeVectorStore = snapshot.vectorStoreResolution.active?.name ?? null;\n return {\n provider_active: activeProvider,\n // GH-244: surface the persisted (possibly empty) configured value and\n // how the active resolution was sourced, so a config audit can tell\n // \"auto-detected\" apart from a genuine misconfiguration when\n // settings.search.provider / vector_store.adapter are empty strings.\n provider_configured: typeof settings.search?.provider === \"string\" ? settings.search.provider : null,\n provider_source: resolveProviderConfigSource(activeProvider, settings.search?.provider ?? null),\n vector_store_active: activeVectorStore,\n vector_store_configured: typeof settings.vector_store?.adapter === \"string\" ? settings.vector_store.adapter : null,\n vector_store_source: resolveProviderConfigSource(activeVectorStore, settings.vector_store?.adapter ?? null),\n };\n}\n\nfunction buildVectorizationRefreshPolicyDetails(refreshPolicy: VectorRefreshPolicy): Record<string, unknown> {\n return {\n enabled: refreshPolicy.enabled,\n check_only: refreshPolicy.checkOnly,\n no_refresh: refreshPolicy.noRefresh,\n refresh_vectors: refreshPolicy.refreshVectors,\n };\n}\n\nfunction vectorizationRefreshAttempted(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): boolean {\n return refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable;\n}\n\nasync function buildVectorizationCheck(\n pmRoot: string,\n settings: PmSettings,\n items: ItemWithBody[],\n refreshPolicy: VectorRefreshPolicy,\n verboseStaleItems: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const snapshot = buildVectorizationRuntimeSnapshot(settings);\n const ledgerBefore = await readVectorizationStatusLedger(pmRoot);\n const staleBefore = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];\n const refreshResult = await refreshStaleVectorizationItems({ pmRoot, snapshot, refreshPolicy, staleBefore });\n const ledgerAfter = await readVectorizationStatusLedger(pmRoot);\n const staleAfter = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];\n const strictVectorizationWarnings = !snapshot.runtimeDefaults.auto_ollama_defaults_applied;\n const embeddingIdentityChanged = vectorizationEmbeddingIdentityChanged({\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n ledgerBefore,\n runtimeEmbeddingIdentity: snapshot.runtimeEmbeddingIdentity,\n });\n const warnings = collectVectorizationWarnings({\n ledgerBefore,\n ledgerAfter,\n refreshResult,\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n embeddingIdentityChanged,\n staleAfter,\n });\n const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);\n const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);\n const refreshAttempted = vectorizationRefreshAttempted(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore);\n\n return {\n check: {\n name: \"vectorization\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n semantic_runtime_available: snapshot.semanticRuntimeAvailable,\n compatibility_mode_auto_defaults: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n auto_ollama_defaults_applied: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n refresh_policy: buildVectorizationRefreshPolicyDetails(refreshPolicy),\n ...buildVectorizationProviderDetails(settings, snapshot),\n embedding_identity_changed: embeddingIdentityChanged,\n embedding_identity_before: ledgerBefore.embedding ?? null,\n embedding_identity_runtime: snapshot.runtimeEmbeddingIdentity ?? null,\n items: items.length,\n ledger_entries_before: Object.keys(ledgerBefore.entries).length,\n stale_items_detail_mode: verboseStaleItems ? \"full\" : \"summary\",\n stale_items_summary_limit: STALE_VECTORIZATION_SUMMARY_LIMIT,\n stale_items_before_total: staleBeforeDetail.total,\n stale_items_before: staleBeforeDetail.values,\n stale_items_before_truncated: staleBeforeDetail.truncated,\n refresh_attempted: refreshAttempted,\n refresh_skipped_reason: resolveVectorizationRefreshSkippedReason(\n refreshPolicy,\n snapshot.semanticRuntimeAvailable,\n staleBefore,\n ),\n refresh_result: refreshResult,\n ledger_entries_after: Object.keys(ledgerAfter.entries).length,\n stale_items_after_total: staleAfterDetail.total,\n stale_items_after: staleAfterDetail.values,\n stale_items_after_truncated: staleAfterDetail.truncated,\n },\n },\n warnings,\n };\n}\n\nfunction validateSettingsValues(settings: PmSettings): string[] {\n const warnings: string[] = [];\n if (settings.id_prefix.trim().length === 0) {\n warnings.push(\"settings:id_prefix_empty\");\n }\n if (settings.locks.ttl_seconds <= 0) {\n warnings.push(\"settings:locks_ttl_non_positive\");\n }\n return warnings;\n}\n\nfunction resolveVectorRefreshPolicy(options: RunHealthOptions): VectorRefreshPolicy {\n const checkOnly = options.checkOnly === true;\n const noRefresh = options.noRefresh === true || checkOnly;\n const refreshVectors = options.refreshVectors === true;\n if (refreshVectors && checkOnly) {\n throw new PmCliError(\"--check-only cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n if (refreshVectors && options.noRefresh === true) {\n throw new PmCliError(\"--no-refresh cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n return {\n enabled: refreshVectors || !noRefresh,\n checkOnly,\n noRefresh,\n refreshVectors,\n };\n}\n\ntype HealthCheckResult = { check: HealthCheck; warnings: string[] };\ntype HealthTypeRegistry = ReturnType<typeof resolveItemTypeRegistry>;\n\ninterface HealthDirectoryState {\n requiredDirs: string[];\n optionalDirs: string[];\n missingRequiredDirs: string[];\n missingOptionalDirs: string[];\n missingDirs: string[];\n hookWarnings: string[];\n}\n\ninterface HealthSkipPolicy {\n summaryMode: boolean;\n skipIntegrity: boolean;\n skipDrift: boolean;\n skipVectors: boolean;\n}\n\nfunction resolveHealthDirectoryLists(typeRegistry: HealthTypeRegistry): {\n requiredDirs: string[];\n optionalDirs: string[];\n optionalDirSet: Set<string>;\n} {\n const optionalBuiltinDirs = new Set<string>(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));\n const requiredDirSet = new Set<string>(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));\n const optionalDirSet = new Set<string>();\n for (const folder of typeRegistry.folders) {\n if (optionalBuiltinDirs.has(folder)) {\n optionalDirSet.add(folder);\n continue;\n }\n requiredDirSet.add(folder);\n }\n return {\n requiredDirs: [...requiredDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirs: [...optionalDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirSet,\n };\n}\n\nasync function scanHealthDirectories(\n pmRoot: string,\n typeRegistry: HealthTypeRegistry,\n strictDirectories: boolean,\n): Promise<HealthDirectoryState> {\n const { requiredDirs, optionalDirs, optionalDirSet } = resolveHealthDirectoryLists(typeRegistry);\n const missingRequiredDirs: string[] = [];\n const missingOptionalDirs: string[] = [];\n const hookWarnings: string[] = [];\n for (const relativeDir of [...requiredDirs, ...optionalDirs]) {\n const directoryPath = path.join(pmRoot, relativeDir);\n hookWarnings.push(...(await runActiveOnReadHooks({ path: directoryPath, scope: \"project\" })));\n if (await isDirectory(directoryPath)) {\n continue;\n }\n if (optionalDirSet.has(relativeDir)) {\n missingOptionalDirs.push(relativeDir);\n } else {\n missingRequiredDirs.push(relativeDir);\n }\n }\n return {\n requiredDirs,\n optionalDirs,\n missingRequiredDirs,\n missingOptionalDirs,\n missingDirs: strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs],\n hookWarnings,\n };\n}\n\nfunction resolveHealthSkipPolicy(options: RunHealthOptions): HealthSkipPolicy {\n const summaryMode = options.summary === true && options.full !== true;\n const fastProjectionCheckOnly =\n options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;\n return {\n summaryMode,\n skipIntegrity: (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true,\n skipDrift: (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true,\n skipVectors: (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true,\n };\n}\n\nasync function readHealthItems(params: {\n pmRoot: string;\n settings: PmSettings;\n typeRegistry: HealthTypeRegistry;\n skipPolicy: HealthSkipPolicy;\n itemReadWarnings: string[];\n}): Promise<Array<ItemMetadata | ItemWithBody>> {\n if (params.skipPolicy.skipDrift && params.skipPolicy.skipVectors) {\n return listAllFrontMatter(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n }\n return listAllFrontMatterWithBody(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n}\n\nfunction buildSkippedHealthCheck(name: Extract<HealthCheck[\"name\"], \"integrity\" | \"history_drift\" | \"vectorization\">): HealthCheckResult {\n return { check: { name, status: \"ok\", details: { skipped: true } }, warnings: [] };\n}\n\nfunction buildSettingsHealthCheck(\n settingsPath: string,\n settings: PmSettings,\n normalizedSettingsReadWarnings: string[],\n): HealthCheck {\n return {\n name: \"settings\",\n /* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */\n status: normalizedSettingsReadWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n path: settingsPath,\n version: settings.version,\n id_prefix: settings.id_prefix,\n locks_ttl_seconds: settings.locks.ttl_seconds,\n warnings: normalizedSettingsReadWarnings,\n },\n };\n}\n\nfunction buildDirectoriesHealthCheck(directoryState: HealthDirectoryState, strictDirectories: boolean): HealthCheck {\n return {\n name: \"directories\",\n status: directoryState.missingDirs.length === 0 ? \"ok\" : \"warn\",\n details: {\n required: directoryState.requiredDirs,\n optional: directoryState.optionalDirs,\n missing_required: directoryState.missingRequiredDirs,\n missing_optional: directoryState.missingOptionalDirs,\n missing: directoryState.missingDirs,\n strict_directories: strictDirectories,\n },\n };\n}\n\nfunction buildSettingsValuesHealthCheck(settingWarnings: string[]): HealthCheck {\n return {\n name: \"settings_values\",\n status: settingWarnings.length === 0 ? \"ok\" : \"warn\",\n details: { warnings: settingWarnings },\n };\n}\n\nfunction buildStorageHealthCheck(\n items: Array<ItemMetadata | ItemWithBody>,\n settings: PmSettings,\n historySummary: HistoryStreamSummary,\n): HealthCheck {\n return {\n name: \"storage\",\n status: historySummary.over_threshold.length === 0 ? \"ok\" : \"warn\",\n details: {\n items: items.length,\n history_streams: historySummary.count,\n ...(historySummary.max_entries !== null\n ? {\n compact_policy: {\n enabled: settings.history.compact_policy.enabled,\n max_entries: historySummary.max_entries,\n trigger: settings.history.compact_policy.trigger,\n over_threshold_count: historySummary.over_threshold.length,\n over_threshold: historySummary.over_threshold,\n },\n }\n : {}),\n },\n };\n}\n\nfunction collectHealthWarnings(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n normalizedItemReadWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historyPolicyWarnings: string[];\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): string[] {\n const warnings = [\n ...params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n ...params.normalizedSettingsReadWarnings,\n ...params.settingWarnings,\n ...params.normalizedItemReadWarnings,\n ...params.telemetryCheck.warnings,\n ...params.extensionCheck.warnings,\n ...params.historyPolicyWarnings,\n ...params.historySummary.warnings,\n ...params.locksCheck.warnings,\n ...params.integrityCheck.warnings,\n ...params.historyDriftCheck.warnings,\n ...params.vectorizationCheck.warnings,\n ...params.directoryState.hookWarnings,\n ];\n return [...new Set(warnings)];\n}\n\nfunction extractHistoryDriftedCount(historyDriftCheck: HealthCheckResult): number {\n const counts = historyDriftCheck.check.details.counts as { drifted?: unknown } | undefined;\n return typeof counts?.drifted === \"number\" ? counts.drifted : 0;\n}\n\nfunction buildHealthRemediationSources(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): Record<HealthCheck[\"name\"], string[]> {\n return {\n settings: params.normalizedSettingsReadWarnings,\n directories: params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n settings_values: params.settingWarnings,\n telemetry: params.telemetryCheck.warnings,\n extensions: params.extensionCheck.warnings,\n storage: params.historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),\n locks: params.locksCheck.warnings,\n integrity: params.integrityCheck.warnings,\n history_drift: params.historyDriftCheck.warnings,\n vectorization: params.vectorizationCheck.warnings,\n };\n}\n\nfunction rewriteBulkHealthRemediation(params: {\n check: HealthCheck;\n remediationMap: Record<string, string>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n if (params.check.name === \"history_drift\" && params.historyDriftedCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-repair --all\";\n }\n }\n if (params.check.name === \"storage\" && params.overThresholdCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-compact --all-streams\";\n }\n }\n}\n\nfunction attachHealthRemediationMaps(params: {\n checks: HealthCheck[];\n remediationSources: Record<HealthCheck[\"name\"], string[]>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n for (const check of params.checks) {\n const remediationMap = buildRemediationMap(params.remediationSources[check.name]);\n rewriteBulkHealthRemediation({\n check,\n remediationMap,\n historyDriftedCount: params.historyDriftedCount,\n overThresholdCount: params.overThresholdCount,\n });\n if (Object.keys(remediationMap).length > 0) {\n check.details = { ...check.details, remediation_map: remediationMap };\n }\n }\n}\n\nfunction projectHealthResult(result: HealthResult, options: RunHealthOptions, summaryMode: boolean): HealthResult {\n if (summaryMode) {\n return applySummaryHealthProjection(result);\n }\n return options.brief === true ? applyBriefHealthProjection(result) : result;\n}\n\n/**\n * Implements run health for the public runtime surface of this module.\n */\nexport async function runHealth(global: GlobalOptions, options: RunHealthOptions = {}): Promise<HealthResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settingsPath = getSettingsPath(pmRoot);\n if (!(await pathExists(settingsPath))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);\n const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const strictDirectories = options.strictDirectories === true;\n const refreshPolicy = resolveVectorRefreshPolicy(options);\n const directoryState = await scanHealthDirectories(pmRoot, typeRegistry, strictDirectories);\n const settingWarnings = validateSettingsValues(settings);\n const telemetryCheck = await buildTelemetryCheck(settings, {\n checkTelemetry: options.checkTelemetry === true,\n });\n const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));\n const skipPolicy = resolveHealthSkipPolicy(options);\n const itemReadWarnings: string[] = [];\n const items = await readHealthItems({ pmRoot, settings, typeRegistry, skipPolicy, itemReadWarnings });\n const itemsWithBody = items as Array<ItemMetadata & { body: string }>;\n const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];\n const historyPolicy = skipPolicy.skipDrift\n ? { warnings: [] }\n : await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"health\",\n });\n const historySummary = await countHistoryStreams(pmRoot, settings.history.compact_policy);\n const locksCheck = await buildLocksCheck(pmRoot);\n const integrityCheck = skipPolicy.skipIntegrity\n ? buildSkippedHealthCheck(\"integrity\")\n : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);\n const historyDriftCheck = skipPolicy.skipDrift\n ? buildSkippedHealthCheck(\"history_drift\")\n : await buildHistoryDriftCheck(pmRoot, itemsWithBody);\n const vectorizationCheck = skipPolicy.skipVectors\n ? buildSkippedHealthCheck(\"vectorization\")\n : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);\n\n const checks: HealthCheck[] = [\n buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings),\n buildDirectoriesHealthCheck(directoryState, strictDirectories),\n buildSettingsValuesHealthCheck(settingWarnings),\n telemetryCheck.check,\n extensionCheck.check,\n buildStorageHealthCheck(items, settings, historySummary),\n locksCheck.check,\n integrityCheck.check,\n historyDriftCheck.check,\n vectorizationCheck.check,\n ];\n\n const normalizedWarnings = collectHealthWarnings({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n normalizedItemReadWarnings,\n telemetryCheck,\n extensionCheck,\n historyPolicyWarnings: historyPolicy.warnings,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n });\n attachHealthRemediationMaps({\n checks,\n remediationSources: buildHealthRemediationSources({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n telemetryCheck,\n extensionCheck,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n }),\n historyDriftedCount: extractHistoryDriftedCount(historyDriftCheck),\n overThresholdCount: historySummary.over_threshold.length,\n });\n // Telemetry is an opt-out, non-critical observability feature. Its operational\n // state (queue backlog, unreachable endpoint, corrupt local state) is advisory:\n // it must never flip overall project health to not-ok. Such warnings are still\n // surfaced in `warnings` and the telemetry check's own `warn` status.\n const blockingWarnings = normalizedWarnings.filter((warning) => !isAdvisoryHealthWarning(warning));\n const result: HealthResult = {\n ok: blockingWarnings.length === 0,\n checks,\n warnings: normalizedWarnings,\n generated_at: nowIso(),\n };\n return projectHealthResult(result, options, skipPolicy.summaryMode);\n}\n\nexport const _testOnlyHealthCommand = {\n buildExtensionHealthTriageSummary,\n buildCapabilityContractMetadata,\n buildVectorizationProviderDetails,\n collectUnknownCapabilityGuidance,\n isAdvisoryHealthWarning,\n isDirectory,\n isExpectedUnmanagedExtension,\n listItemDocumentPaths,\n normalizeEndpointForDisplay,\n normalizeExtensionNameForMatch,\n parseTelemetryQueue,\n probeTelemetryEndpointHealth,\n selectStaleItemDetail,\n summarizeHealthCheckDetails,\n summarizeExtensionList,\n summarizeRecordList,\n summarizeStringList,\n telemetryEnvFlagEnabled,\n warningCode,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["global"]
7
+ }
@@ -0,0 +1,18 @@
1
+ import {
2
+ readHistoryEntries,
3
+ runHistory
4
+ } from "./chunk-A6VOGKBA.js";
5
+ import {
6
+ verifyHistoryChain
7
+ } from "./chunk-N2JSWVWG.js";
8
+ import "./chunk-JMK5GCK2.js";
9
+ import "./chunk-JXAUVO6X.js";
10
+ import "./chunk-IEEJQCZ4.js";
11
+ import "./chunk-AIAIXG7I.js";
12
+ import "./chunk-7NSPKJUS.js";
13
+ export {
14
+ readHistoryEntries,
15
+ runHistory,
16
+ verifyHistoryChain
17
+ };
18
+ //# sourceMappingURL=history-DD7L7BNL.js.map
@@ -3,20 +3,20 @@
3
3
  import {
4
4
  readHistoryEntries,
5
5
  runHistory
6
- } from "./chunk-VMY7MZEM.js";
6
+ } from "./chunk-HQTPRV4D.js";
7
7
  import {
8
8
  verifyHistoryChain
9
- } from "./chunk-SJZTPVFT.js";
10
- import "./chunk-JVQ7UOYC.js";
11
- import "./chunk-KGQ3W65B.js";
12
- import "./chunk-V3KLX7U7.js";
13
- import "./chunk-KRASIL6M.js";
14
- import "./chunk-CY5IJMUM.js";
9
+ } from "./chunk-2ASNV4DH.js";
10
+ import "./chunk-2CHRYUXL.js";
11
+ import "./chunk-NRZS637N.js";
12
+ import "./chunk-KN3URLKS.js";
13
+ import "./chunk-K2VYLVX4.js";
14
+ import "./chunk-I66WE2HE.js";
15
15
  export {
16
16
  readHistoryEntries,
17
17
  runHistory,
18
18
  verifyHistoryChain
19
19
  };
20
- //# sourceMappingURL=history-X4OSES6K.js.map
20
+ //# sourceMappingURL=history-IL7XCEX2.js.map
21
21
 
22
22
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3