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