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