@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
@@ -4,7 +4,7 @@
4
4
  * Implements the pm reindex command surface and its agent-facing runtime behavior.
5
5
  */
6
6
 
7
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aa59b937-1085-5a08-9ac6-84c64d6b6a8f")}catch(e){}}();
7
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8dd50c77-d026-565f-8f07-e63602a44f09")}catch(e){}}();
8
8
  import fs from "node:fs/promises";
9
9
  import path from "node:path";
10
10
  import { toNonEmptyStringOrUndefined } from "../../core/shared/primitives.js";
@@ -127,6 +127,7 @@ export const _testOnly = {
127
127
  collectLedgerOrphanIds,
128
128
  resetVectorStoreForReindex,
129
129
  pruneReindexOrphanVectors,
130
+ upsertReindexVectors,
130
131
  };
131
132
  function resolveExtensionSearchEmbedding(settings) {
132
133
  const registrations = getActiveExtensionRegistrations();
@@ -178,16 +179,18 @@ function resolveExtensionVectorAdapter(settings) {
178
179
  return null;
179
180
  }
180
181
  const runtimeDefinition = registration.runtime_definition ?? registration.definition;
181
- const name = toOptionalNonEmptyString(runtimeDefinition.name) ??
182
+ const adapterDisplayName = toOptionalNonEmptyString(runtimeDefinition.name) ??
182
183
  toOptionalNonEmptyString(registration.definition.name);
183
- const upsert = runtimeDefinition.upsert;
184
- const deleteHandler = runtimeDefinition.delete;
185
- if (!name || typeof upsert !== "function") {
184
+ /* c8 ignore start -- resolveRegisteredVectorStoreAdapter only returns registrations with a normalized runtime or definition name */
185
+ if (!adapterDisplayName) {
186
186
  return null;
187
187
  }
188
+ /* c8 ignore stop */
189
+ const upsert = runtimeDefinition.upsert;
190
+ const deleteHandler = runtimeDefinition.delete;
188
191
  return {
189
- name,
190
- upsert: upsert,
192
+ adapterName: adapterDisplayName,
193
+ ...(typeof upsert === "function" ? { upsert: upsert } : {}),
191
194
  ...(typeof deleteHandler === "function" ? { delete: deleteHandler } : {}),
192
195
  };
193
196
  }
@@ -299,11 +302,11 @@ async function resetVectorStoreForReindex(activeVectorStore, extensionVectorAdap
299
302
  await Promise.resolve(extensionVectorAdapter.delete({ ids: knownIds.sort((left, right) => left.localeCompare(right)), settings }));
300
303
  }
301
304
  catch (error) {
302
- throw new PmCliError(`Extension vector adapter "${extensionVectorAdapter.name}" failed to delete vectors during reindex reset: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
305
+ throw new PmCliError(`Extension vector adapter "${extensionVectorAdapter.adapterName}" failed to delete vectors during reindex reset: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
303
306
  }
304
307
  }
305
308
  else if (knownIds.length > 0) {
306
- semanticWarnings.push(`search_semantic_reindex_reset_skipped:adapter=${extensionVectorAdapter.name}:known_ids=${knownIds.length}`);
309
+ semanticWarnings.push(`search_semantic_reindex_reset_skipped:adapter=${extensionVectorAdapter.adapterName}:known_ids=${knownIds.length}`);
307
310
  }
308
311
  if (!activeVectorStore) {
309
312
  return;
@@ -323,11 +326,11 @@ async function pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapt
323
326
  await Promise.resolve(extensionVectorAdapter.delete({ ids: orphanIds, settings }));
324
327
  }
325
328
  catch (error) {
326
- throw new PmCliError(`Extension vector adapter "${extensionVectorAdapter.name}" failed to delete orphan vectors during reindex: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
329
+ throw new PmCliError(`Extension vector adapter "${extensionVectorAdapter.adapterName}" failed to delete orphan vectors during reindex: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
327
330
  }
328
331
  }
329
332
  else {
330
- semanticWarnings.push(`search_semantic_reindex_orphan_prune_skipped:adapter=${extensionVectorAdapter.name}:count=${orphanIds.length}`);
333
+ semanticWarnings.push(`search_semantic_reindex_orphan_prune_skipped:adapter=${extensionVectorAdapter.adapterName}:count=${orphanIds.length}`);
331
334
  }
332
335
  if (!activeVectorStore) {
333
336
  return;
@@ -337,6 +340,293 @@ async function pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapt
337
340
  await executeVectorDelete(activeVectorStore, orphanIds);
338
341
  }
339
342
  }
343
+ function createReindexSemanticSummary(mode) {
344
+ return {
345
+ enabled: mode !== "keyword",
346
+ stale_items: 0,
347
+ unchanged_items: 0,
348
+ embedded_items: 0,
349
+ vector_upserted: 0,
350
+ batches_completed: 0,
351
+ };
352
+ }
353
+ function buildReindexManifest(mode, generatedAt, metadataDocuments) {
354
+ return {
355
+ version: 1,
356
+ mode,
357
+ generated_at: generatedAt,
358
+ total_items: metadataDocuments.length,
359
+ items: metadataDocuments.map((document) => ({
360
+ id: document.metadata.id,
361
+ type: document.metadata.type,
362
+ status: document.metadata.status,
363
+ priority: document.metadata.priority,
364
+ updated_at: document.metadata.updated_at,
365
+ })),
366
+ };
367
+ }
368
+ function assertSemanticRuntimeAvailable(params) {
369
+ if (params.requestedMode === "keyword") {
370
+ return {
371
+ activeEmbeddingProvider: null,
372
+ activeVectorStore: null,
373
+ };
374
+ }
375
+ const providerResolution = resolveEmbeddingProviders(params.settings);
376
+ if (!providerResolution.active && !params.extensionEmbedding) {
377
+ throw new PmCliError(`Reindex mode '${params.requestedMode}' requires a configured embedding provider in settings.providers.openai/settings.providers.ollama or an extension provider selected by settings.search.provider`, EXIT_CODE.USAGE);
378
+ }
379
+ const vectorResolution = resolveVectorStores(params.settings);
380
+ if (!vectorResolution.active && !params.extensionVectorAdapter) {
381
+ throw new PmCliError(`Reindex mode '${params.requestedMode}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`, EXIT_CODE.USAGE);
382
+ }
383
+ return {
384
+ activeEmbeddingProvider: providerResolution.active,
385
+ activeVectorStore: vectorResolution.active,
386
+ };
387
+ }
388
+ async function loadReindexCorpus(params) {
389
+ const typeRegistry = resolveItemTypeRegistry(params.settings, getActiveExtensionRegistrations());
390
+ const loadedCandidates = await loadDocumentCandidates(params.pmRoot, params.settings.item_format, typeRegistry.type_to_folder, params.settings.schema);
391
+ return {
392
+ documentCandidates: loadedCandidates.candidates,
393
+ warnings: [...loadedCandidates.warnings],
394
+ metadataDocuments: loadedCandidates.candidates.map((candidate) => ({
395
+ metadata: candidate.metadata,
396
+ body: typeof candidate.body === "string" ? candidate.body : "",
397
+ })),
398
+ };
399
+ }
400
+ async function appendKeywordLedgerWarnings(params) {
401
+ const ledger = await readVectorizationStatusLedger(params.pmRoot);
402
+ params.reindexWarnings.push(...ledger.warnings);
403
+ if (params.forceFullSemantic) {
404
+ params.reindexWarnings.push("search_semantic_reindex_full_ignored:mode_keyword");
405
+ }
406
+ if (!ledger.embedding) {
407
+ return;
408
+ }
409
+ const currentEmbeddingIdentity = (() => {
410
+ try {
411
+ return resolveReindexEmbeddingIdentity(params.settings, resolveEmbeddingProviders(params.settings).active, params.extensionEmbedding);
412
+ }
413
+ catch {
414
+ return null;
415
+ }
416
+ })();
417
+ if (currentEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(ledger.embedding, currentEmbeddingIdentity)) {
418
+ params.reindexWarnings.push("search_semantic_reindex_requires_rebuild:embedding_identity_changed");
419
+ params.reindexWarnings.push(EMBEDDING_MIGRATION_REINDEX_HINT);
420
+ }
421
+ }
422
+ async function planSemanticReindex(params) {
423
+ const ledger = await readVectorizationStatusLedger(params.pmRoot);
424
+ params.semanticWarnings.push(...ledger.warnings);
425
+ const embeddingIdentity = resolveReindexEmbeddingIdentity(params.settings, params.activeEmbeddingProvider, params.extensionEmbedding);
426
+ const currentIds = new Set(params.metadataDocuments.map((document) => document.metadata.id));
427
+ const orphanIds = collectLedgerOrphanIds(ledger.entries, currentIds);
428
+ const resetRequired = hasVectorizationEmbeddingIdentityChanged(ledger.embedding, embeddingIdentity);
429
+ if (params.forceFullSemantic && !resetRequired) {
430
+ params.semanticWarnings.push("search_semantic_reindex_full_rebuild_forced");
431
+ }
432
+ const staleSourceDocuments = params.forceFullSemantic || resetRequired
433
+ ? params.metadataDocuments
434
+ : params.metadataDocuments.filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at);
435
+ const staleIds = new Set(staleSourceDocuments.map((document) => document.metadata.id));
436
+ const staleDocuments = staleIds.size > 0
437
+ ? await hydrateDocuments(params.pmRoot, params.documentCandidates, params.settings.schema, params.reindexWarnings, staleIds)
438
+ : [];
439
+ return {
440
+ ledgerEntries: ledger.entries,
441
+ ledgerEmbedding: ledger.embedding,
442
+ orphanIds,
443
+ resetRequired,
444
+ staleDocuments,
445
+ freshDocuments: params.metadataDocuments.length - staleDocuments.length,
446
+ };
447
+ }
448
+ async function rerunSemanticEmbeddingAfterDimensionChange(params) {
449
+ const staleIds = new Set(params.metadataDocuments.map((document) => document.metadata.id));
450
+ const staleDocuments = await hydrateDocuments(params.pmRoot, params.documentCandidates, params.settings.schema, params.reindexWarnings, staleIds);
451
+ params.semanticSummary.stale_items = staleDocuments.length;
452
+ params.semanticSummary.unchanged_items = 0;
453
+ emitReindexProgress(params.progressEnabled, `embedding_dimension_changed reset_items=${staleDocuments.length}`);
454
+ const embeddingResult = await executeReindexEmbedding(params.settings, params.requestedMode, params.activeEmbeddingProvider, params.extensionEmbedding, staleDocuments, params.semanticWarnings, params.semanticSummary, params.progressEnabled);
455
+ return {
456
+ ...embeddingResult,
457
+ staleDocuments,
458
+ vectorDimension: inferConsistentVectorDimension(embeddingResult.vectors, "Reindex embeddings"),
459
+ };
460
+ }
461
+ async function resolveSemanticEmbeddingForUpsert(params) {
462
+ let embeddingResult = await executeReindexEmbedding(params.settings, params.requestedMode, params.activeEmbeddingProvider, params.extensionEmbedding, params.staleDocuments, params.semanticWarnings, params.semanticSummary, params.progressEnabled);
463
+ let vectors = embeddingResult.vectors;
464
+ let actualEmbeddingIdentity = embeddingResult.embeddingIdentity;
465
+ let vectorDimension = inferConsistentVectorDimension(vectors, "Reindex embeddings");
466
+ const dimensionChanged = !params.resetRequired &&
467
+ (hasVectorizationEmbeddingIdentityChanged(params.ledgerEmbedding, actualEmbeddingIdentity) ||
468
+ hasVectorizationVectorDimensionChanged(params.ledgerEmbedding, vectorDimension));
469
+ if (!dimensionChanged) {
470
+ return {
471
+ vectors,
472
+ embeddingIdentity: actualEmbeddingIdentity,
473
+ staleDocuments: params.staleDocuments,
474
+ vectorDimension,
475
+ resetRequired: params.resetRequired,
476
+ };
477
+ }
478
+ const rerun = await rerunSemanticEmbeddingAfterDimensionChange(params);
479
+ vectors = rerun.vectors;
480
+ actualEmbeddingIdentity = rerun.embeddingIdentity;
481
+ vectorDimension = rerun.vectorDimension;
482
+ return {
483
+ vectors,
484
+ embeddingIdentity: actualEmbeddingIdentity,
485
+ staleDocuments: rerun.staleDocuments,
486
+ vectorDimension,
487
+ resetRequired: true,
488
+ };
489
+ }
490
+ async function upsertReindexVectors(params) {
491
+ if (params.extensionVectorAdapter) {
492
+ try {
493
+ const adapterName = params.extensionVectorAdapter.adapterName;
494
+ emitReindexProgress(params.progressEnabled, `vector_upsert_start adapter=${adapterName} points=${params.points.length}`);
495
+ if (typeof params.extensionVectorAdapter.upsert !== "function") {
496
+ throw new PmCliError(`Extension vector adapter "${adapterName}" does not support upserting vectors.`, EXIT_CODE.USAGE);
497
+ }
498
+ await Promise.resolve(params.extensionVectorAdapter.upsert({ points: params.points, settings: params.settings }));
499
+ params.semanticSummary.vector_upserted = params.points.length;
500
+ emitReindexProgress(params.progressEnabled, `vector_upsert_complete adapter=${adapterName}`);
501
+ return;
502
+ }
503
+ catch (error) {
504
+ if (error instanceof PmCliError) {
505
+ throw error;
506
+ }
507
+ if (!params.activeVectorStore) {
508
+ throw new PmCliError(`Extension vector adapter "${params.extensionVectorAdapter.adapterName}" failed to upsert vectors: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
509
+ }
510
+ params.semanticWarnings.push(`Extension vector adapter "${params.extensionVectorAdapter.adapterName}" failed; falling back to built-in vector store (${error instanceof Error ? error.message : String(error)})`);
511
+ emitReindexProgress(params.progressEnabled, "vector_upsert_fallback built_in_store");
512
+ }
513
+ }
514
+ if (params.activeVectorStore) {
515
+ emitReindexProgress(params.progressEnabled, `vector_upsert_start adapter=${params.activeVectorStore.name} points=${params.points.length}`);
516
+ await executeVectorUpsert(params.activeVectorStore, params.points);
517
+ params.semanticSummary.vector_upserted = params.points.length;
518
+ emitReindexProgress(params.progressEnabled, `vector_upsert_complete adapter=${params.activeVectorStore.name}`);
519
+ return;
520
+ }
521
+ /* c8 ignore start -- guarded by semantic-mode provider/vector-store preflight above */
522
+ throw new PmCliError(`No vector upsert executor available for reindex mode '${params.requestedMode}'`, EXIT_CODE.USAGE);
523
+ /* c8 ignore stop */
524
+ }
525
+ function buildReindexVectorPoints(staleDocuments, vectors) {
526
+ return staleDocuments.map((document, index) => ({
527
+ id: document.metadata.id,
528
+ vector: assertVector(vectors[index], `reindex embeddings output at index ${index}`),
529
+ payload: {
530
+ id: document.metadata.id,
531
+ type: document.metadata.type,
532
+ status: document.metadata.status,
533
+ priority: document.metadata.priority,
534
+ updated_at: document.metadata.updated_at,
535
+ },
536
+ }));
537
+ }
538
+ async function executeSemanticVectorRefresh(params) {
539
+ emitReindexProgress(params.progressEnabled, `embedding_start items=${params.plan.staleDocuments.length} unchanged_items=${params.plan.freshDocuments}`);
540
+ const embedding = await resolveSemanticEmbeddingForUpsert({
541
+ pmRoot: params.pmRoot,
542
+ settings: params.settings,
543
+ requestedMode: params.requestedMode,
544
+ activeEmbeddingProvider: params.activeEmbeddingProvider,
545
+ extensionEmbedding: params.extensionEmbedding,
546
+ documentCandidates: params.documentCandidates,
547
+ metadataDocuments: params.metadataDocuments,
548
+ staleDocuments: params.plan.staleDocuments,
549
+ ledgerEmbedding: params.plan.ledgerEmbedding,
550
+ resetRequired: params.plan.resetRequired,
551
+ semanticWarnings: params.semanticWarnings,
552
+ reindexWarnings: params.reindexWarnings,
553
+ semanticSummary: params.semanticSummary,
554
+ progressEnabled: params.progressEnabled,
555
+ });
556
+ if (embedding.resetRequired) {
557
+ emitReindexProgress(params.progressEnabled, "vector_reset_start");
558
+ await resetVectorStoreForReindex(params.activeVectorStore, params.extensionVectorAdapter, params.plan.ledgerEntries, params.settings, params.semanticWarnings, params.plan.ledgerEmbedding ? embedding.vectorDimension : undefined);
559
+ emitReindexProgress(params.progressEnabled, "vector_reset_complete");
560
+ }
561
+ else {
562
+ await pruneReindexOrphanVectors(params.activeVectorStore, params.extensionVectorAdapter, params.plan.orphanIds, params.settings, params.semanticWarnings);
563
+ }
564
+ const points = buildReindexVectorPoints(embedding.staleDocuments, embedding.vectors);
565
+ params.semanticSummary.embedded_items = embedding.vectors.length;
566
+ await upsertReindexVectors({
567
+ requestedMode: params.requestedMode,
568
+ activeVectorStore: params.activeVectorStore,
569
+ extensionVectorAdapter: params.extensionVectorAdapter,
570
+ settings: params.settings,
571
+ points,
572
+ semanticWarnings: params.semanticWarnings,
573
+ semanticSummary: params.semanticSummary,
574
+ progressEnabled: params.progressEnabled,
575
+ });
576
+ return {
577
+ staleDocuments: embedding.staleDocuments,
578
+ embeddingMetadata: buildVectorizationEmbeddingMetadata(embedding.embeddingIdentity, embedding.vectorDimension),
579
+ };
580
+ }
581
+ async function runSemanticReindex(params) {
582
+ const plan = await planSemanticReindex(params);
583
+ params.semanticSummary.stale_items = plan.staleDocuments.length;
584
+ params.semanticSummary.unchanged_items = plan.freshDocuments;
585
+ const vectorizationLedgerEntries = Object.fromEntries(params.metadataDocuments.map((document) => [document.metadata.id, document.metadata.updated_at]));
586
+ emitReindexProgress(params.progressEnabled, `semantic_stale_items stale=${plan.staleDocuments.length} total=${params.metadataDocuments.length} unchanged=${plan.freshDocuments} full=${params.forceFullSemantic || plan.resetRequired}`);
587
+ if (plan.staleDocuments.length === 0) {
588
+ emitReindexProgress(params.progressEnabled, `embedding_skipped unchanged_items=${plan.freshDocuments}`);
589
+ params.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${plan.freshDocuments}`);
590
+ await pruneReindexOrphanVectors(params.activeVectorStore, params.extensionVectorAdapter, plan.orphanIds, params.settings, params.semanticWarnings);
591
+ return {
592
+ documentsForKeywordArtifacts: params.documentsForKeywordArtifacts,
593
+ vectorizationLedgerEntries,
594
+ vectorizationEmbeddingMetadata: plan.ledgerEmbedding,
595
+ };
596
+ }
597
+ const refresh = await executeSemanticVectorRefresh({ ...params, plan });
598
+ if (plan.freshDocuments > 0) {
599
+ params.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${plan.freshDocuments}`);
600
+ }
601
+ const staleDocumentsById = new Map(refresh.staleDocuments.map((document) => [document.metadata.id, document]));
602
+ return {
603
+ documentsForKeywordArtifacts: params.metadataDocuments.map((document) => staleDocumentsById.get(document.metadata.id) ?? document),
604
+ vectorizationLedgerEntries,
605
+ vectorizationEmbeddingMetadata: refresh.embeddingMetadata,
606
+ };
607
+ }
608
+ async function writeReindexArtifacts(params) {
609
+ const manifestPath = path.join(params.pmRoot, MANIFEST_PATH);
610
+ const embeddingsPath = path.join(params.pmRoot, EMBEDDINGS_PATH);
611
+ const keywordCorpusFields = resolveSearchCorpusFields(params.settings);
612
+ const embeddingsLines = params.documentsForKeywordArtifacts
613
+ .map((document) => JSON.stringify(buildKeywordRecord(document, params.mode, keywordCorpusFields)))
614
+ .join("\n");
615
+ emitReindexProgress(params.progressEnabled, "writing keyword artifacts");
616
+ await writeFileAtomic(manifestPath, `${JSON.stringify(params.manifest, null, 2)}\n`);
617
+ await writeFileAtomic(embeddingsPath, `${embeddingsLines}\n`);
618
+ const vectorizationWarnings = [];
619
+ if (params.mode !== "keyword") {
620
+ try {
621
+ emitReindexProgress(params.progressEnabled, "writing vectorization status ledger");
622
+ await writeVectorizationStatusLedger(params.pmRoot, params.vectorizationLedgerEntries, params.vectorizationEmbeddingMetadata);
623
+ }
624
+ catch (error) {
625
+ vectorizationWarnings.push(`search_vectorization_status_ledger_write_failed:${error instanceof Error ? error.message : String(error)}`);
626
+ }
627
+ }
628
+ return vectorizationWarnings;
629
+ }
340
630
  /**
341
631
  * Implements run reindex for the public runtime surface of this module.
342
632
  */
@@ -369,216 +659,66 @@ export async function runReindex(options, global) {
369
659
  throw error;
370
660
  }
371
661
  try {
372
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
373
662
  const extensionEmbedding = resolveExtensionSearchEmbedding(settings);
374
663
  const extensionVectorAdapter = resolveExtensionVectorAdapter(settings);
375
- let activeEmbeddingProvider = null;
376
- let activeVectorStore = null;
377
- if (requestedMode !== "keyword") {
378
- const providerResolution = resolveEmbeddingProviders(settings);
379
- if (!providerResolution.active && !extensionEmbedding) {
380
- throw new PmCliError(`Reindex mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai/settings.providers.ollama or an extension provider selected by settings.search.provider`, EXIT_CODE.USAGE);
381
- }
382
- const vectorResolution = resolveVectorStores(settings);
383
- if (!vectorResolution.active && !extensionVectorAdapter) {
384
- throw new PmCliError(`Reindex mode '${requestedMode}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`, EXIT_CODE.USAGE);
385
- }
386
- activeEmbeddingProvider = providerResolution.active;
387
- activeVectorStore = vectorResolution.active;
388
- }
664
+ const semanticRuntime = assertSemanticRuntimeAvailable({
665
+ requestedMode,
666
+ settings,
667
+ extensionEmbedding,
668
+ extensionVectorAdapter,
669
+ });
389
670
  const mode = requestedMode;
390
671
  emitReindexProgress(progressEnabled, "loading item corpus");
391
- const loadedCandidates = await loadDocumentCandidates(pmRoot, settings.item_format, typeRegistry.type_to_folder, settings.schema);
392
- const reindexWarnings = [...loadedCandidates.warnings];
393
- const documentCandidates = loadedCandidates.candidates;
394
- const metadataDocuments = documentCandidates.map((candidate) => ({
395
- metadata: candidate.metadata,
396
- body: typeof candidate.body === "string" ? candidate.body : "",
397
- }));
672
+ const corpus = await loadReindexCorpus({ pmRoot, settings });
673
+ const reindexWarnings = corpus.warnings;
674
+ const { documentCandidates, metadataDocuments } = corpus;
398
675
  emitReindexProgress(progressEnabled, `loaded_items=${metadataDocuments.length}`);
399
676
  const generatedAt = nowIso();
400
- const manifest = {
401
- version: 1,
402
- mode,
403
- generated_at: generatedAt,
404
- total_items: metadataDocuments.length,
405
- items: metadataDocuments.map((document) => ({
406
- id: document.metadata.id,
407
- type: document.metadata.type,
408
- status: document.metadata.status,
409
- priority: document.metadata.priority,
410
- updated_at: document.metadata.updated_at,
411
- })),
412
- };
677
+ const manifest = buildReindexManifest(mode, generatedAt, metadataDocuments);
413
678
  const manifestPath = path.join(pmRoot, MANIFEST_PATH);
414
679
  const embeddingsPath = path.join(pmRoot, EMBEDDINGS_PATH);
415
680
  let documentsForKeywordArtifacts = mode === "keyword"
416
681
  ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings)
417
682
  : metadataDocuments;
418
683
  const semanticWarnings = [];
419
- const vectorizationLedgerEntries = {};
684
+ let vectorizationLedgerEntries = {};
420
685
  let vectorizationEmbeddingMetadata = null;
421
- const semanticSummary = {
422
- enabled: mode !== "keyword",
423
- stale_items: 0,
424
- unchanged_items: 0,
425
- embedded_items: 0,
426
- vector_upserted: 0,
427
- batches_completed: 0,
428
- };
686
+ const semanticSummary = createReindexSemanticSummary(mode);
429
687
  if (mode === "keyword") {
430
- const ledger = await readVectorizationStatusLedger(pmRoot);
431
- reindexWarnings.push(...ledger.warnings);
432
- if (forceFullSemantic) {
433
- reindexWarnings.push("search_semantic_reindex_full_ignored:mode_keyword");
434
- }
435
- if (ledger.embedding) {
436
- const currentEmbeddingIdentity = (() => {
437
- try {
438
- return resolveReindexEmbeddingIdentity(settings, resolveEmbeddingProviders(settings).active, extensionEmbedding);
439
- }
440
- catch {
441
- return null;
442
- }
443
- })();
444
- if (currentEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(ledger.embedding, currentEmbeddingIdentity)) {
445
- reindexWarnings.push("search_semantic_reindex_requires_rebuild:embedding_identity_changed");
446
- reindexWarnings.push(EMBEDDING_MIGRATION_REINDEX_HINT);
447
- }
448
- }
688
+ await appendKeywordLedgerWarnings({ pmRoot, settings, forceFullSemantic, extensionEmbedding, reindexWarnings });
449
689
  }
450
- if (mode !== "keyword" && metadataDocuments.length > 0) {
451
- const ledger = await readVectorizationStatusLedger(pmRoot);
452
- semanticWarnings.push(...ledger.warnings);
453
- const embeddingIdentity = resolveReindexEmbeddingIdentity(settings, activeEmbeddingProvider, extensionEmbedding);
454
- const currentIds = new Set(metadataDocuments.map((document) => document.metadata.id));
455
- const orphanIds = collectLedgerOrphanIds(ledger.entries, currentIds);
456
- let resetRequired = hasVectorizationEmbeddingIdentityChanged(ledger.embedding, embeddingIdentity);
457
- if (forceFullSemantic && !resetRequired) {
458
- semanticWarnings.push("search_semantic_reindex_full_rebuild_forced");
459
- }
460
- const staleSourceDocuments = forceFullSemantic || resetRequired
461
- ? metadataDocuments
462
- : metadataDocuments.filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at);
463
- let staleIds = new Set(staleSourceDocuments.map((document) => document.metadata.id));
464
- let staleDocuments = staleIds.size > 0
465
- ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds)
466
- : [];
467
- let freshDocuments = metadataDocuments.length - staleDocuments.length;
468
- semanticSummary.stale_items = staleDocuments.length;
469
- semanticSummary.unchanged_items = freshDocuments;
470
- for (const document of metadataDocuments) {
471
- vectorizationLedgerEntries[document.metadata.id] = document.metadata.updated_at;
472
- }
473
- emitReindexProgress(progressEnabled, `semantic_stale_items stale=${staleDocuments.length} total=${metadataDocuments.length} unchanged=${freshDocuments} full=${forceFullSemantic || resetRequired}`);
474
- if (staleDocuments.length === 0) {
475
- emitReindexProgress(progressEnabled, `embedding_skipped unchanged_items=${freshDocuments}`);
476
- semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);
477
- }
478
- else {
479
- emitReindexProgress(progressEnabled, `embedding_start items=${staleDocuments.length} unchanged_items=${freshDocuments}`);
480
- let embeddingResult = await executeReindexEmbedding(settings, requestedMode, activeEmbeddingProvider, extensionEmbedding, staleDocuments, semanticWarnings, semanticSummary, progressEnabled);
481
- let vectors = embeddingResult.vectors;
482
- let actualEmbeddingIdentity = embeddingResult.embeddingIdentity;
483
- let vectorDimension = inferConsistentVectorDimension(vectors, "Reindex embeddings");
484
- if (!resetRequired &&
485
- (hasVectorizationEmbeddingIdentityChanged(ledger.embedding, actualEmbeddingIdentity) ||
486
- hasVectorizationVectorDimensionChanged(ledger.embedding, vectorDimension))) {
487
- resetRequired = true;
488
- staleIds = new Set(metadataDocuments.map((document) => document.metadata.id));
489
- staleDocuments = await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds);
490
- freshDocuments = 0;
491
- semanticSummary.stale_items = staleDocuments.length;
492
- semanticSummary.unchanged_items = 0;
493
- emitReindexProgress(progressEnabled, `embedding_dimension_changed reset_items=${staleDocuments.length}`);
494
- embeddingResult = await executeReindexEmbedding(settings, requestedMode, activeEmbeddingProvider, extensionEmbedding, staleDocuments, semanticWarnings, semanticSummary, progressEnabled);
495
- vectors = embeddingResult.vectors;
496
- actualEmbeddingIdentity = embeddingResult.embeddingIdentity;
497
- vectorDimension = inferConsistentVectorDimension(vectors, "Reindex embeddings");
498
- }
499
- if (resetRequired) {
500
- emitReindexProgress(progressEnabled, "vector_reset_start");
501
- await resetVectorStoreForReindex(activeVectorStore, extensionVectorAdapter, ledger.entries, settings, semanticWarnings, ledger.embedding ? vectorDimension : undefined);
502
- emitReindexProgress(progressEnabled, "vector_reset_complete");
503
- }
504
- else {
505
- await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);
506
- }
507
- vectorizationEmbeddingMetadata = buildVectorizationEmbeddingMetadata(actualEmbeddingIdentity, vectorDimension);
508
- const points = staleDocuments.map((document, index) => ({
509
- id: document.metadata.id,
510
- vector: assertVector(vectors[index], `reindex embeddings output at index ${index}`),
511
- payload: {
512
- id: document.metadata.id,
513
- type: document.metadata.type,
514
- status: document.metadata.status,
515
- priority: document.metadata.priority,
516
- updated_at: document.metadata.updated_at,
517
- },
518
- }));
519
- semanticSummary.embedded_items = vectors.length;
520
- /* c8 ignore start -- semantic preflight guarantees a vector upsert executor path */
521
- if (extensionVectorAdapter) {
522
- try {
523
- emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${extensionVectorAdapter.name} points=${points.length}`);
524
- await Promise.resolve(extensionVectorAdapter.upsert({
525
- points,
526
- settings,
527
- }));
528
- semanticSummary.vector_upserted = points.length;
529
- emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${extensionVectorAdapter.name}`);
530
- }
531
- catch (error) {
532
- if (!activeVectorStore) {
533
- throw new PmCliError(`Extension vector adapter "${extensionVectorAdapter.name}" failed to upsert vectors: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
534
- }
535
- semanticWarnings.push(`Extension vector adapter "${extensionVectorAdapter.name}" failed; falling back to built-in vector store (${error instanceof Error ? error.message : String(error)})`);
536
- emitReindexProgress(progressEnabled, "vector_upsert_fallback built_in_store");
537
- await executeVectorUpsert(activeVectorStore, points);
538
- semanticSummary.vector_upserted = points.length;
539
- emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);
540
- }
541
- }
542
- else if (activeVectorStore) {
543
- emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${activeVectorStore.name} points=${points.length}`);
544
- await executeVectorUpsert(activeVectorStore, points);
545
- semanticSummary.vector_upserted = points.length;
546
- emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);
547
- }
548
- else {
549
- /* c8 ignore start -- guarded by semantic-mode provider/vector-store preflight above */
550
- throw new PmCliError(`No vector upsert executor available for reindex mode '${requestedMode}'`, EXIT_CODE.USAGE);
551
- /* c8 ignore stop */
552
- }
553
- /* c8 ignore stop */
554
- if (freshDocuments > 0) {
555
- semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);
556
- }
557
- const staleDocumentsById = new Map(staleDocuments.map((document) => [document.metadata.id, document]));
558
- documentsForKeywordArtifacts = metadataDocuments.map((document) => staleDocumentsById.get(document.metadata.id) ?? document);
559
- }
560
- if (staleDocuments.length === 0) {
561
- await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);
562
- vectorizationEmbeddingMetadata = ledger.embedding;
563
- }
564
- }
565
- const keywordCorpusFields = resolveSearchCorpusFields(settings);
566
- const embeddingsLines = documentsForKeywordArtifacts
567
- .map((document) => JSON.stringify(buildKeywordRecord(document, mode, keywordCorpusFields)))
568
- .join("\n");
569
- emitReindexProgress(progressEnabled, "writing keyword artifacts");
570
- await writeFileAtomic(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
571
- await writeFileAtomic(embeddingsPath, `${embeddingsLines}\n`);
572
- const vectorizationWarnings = [];
573
690
  if (mode !== "keyword") {
574
- try {
575
- emitReindexProgress(progressEnabled, "writing vectorization status ledger");
576
- await writeVectorizationStatusLedger(pmRoot, vectorizationLedgerEntries, vectorizationEmbeddingMetadata);
577
- }
578
- catch (error) {
579
- vectorizationWarnings.push(`search_vectorization_status_ledger_write_failed:${error instanceof Error ? error.message : String(error)}`);
580
- }
691
+ const semantic = await runSemanticReindex({
692
+ pmRoot,
693
+ settings,
694
+ requestedMode,
695
+ activeEmbeddingProvider: semanticRuntime.activeEmbeddingProvider,
696
+ activeVectorStore: semanticRuntime.activeVectorStore,
697
+ extensionEmbedding,
698
+ extensionVectorAdapter,
699
+ documentCandidates,
700
+ metadataDocuments,
701
+ documentsForKeywordArtifacts,
702
+ forceFullSemantic,
703
+ reindexWarnings,
704
+ semanticWarnings,
705
+ semanticSummary,
706
+ progressEnabled,
707
+ });
708
+ documentsForKeywordArtifacts = semantic.documentsForKeywordArtifacts;
709
+ vectorizationLedgerEntries = semantic.vectorizationLedgerEntries;
710
+ vectorizationEmbeddingMetadata = semantic.vectorizationEmbeddingMetadata;
581
711
  }
712
+ const vectorizationWarnings = await writeReindexArtifacts({
713
+ pmRoot,
714
+ mode,
715
+ manifest,
716
+ documentsForKeywordArtifacts,
717
+ settings,
718
+ vectorizationLedgerEntries,
719
+ vectorizationEmbeddingMetadata,
720
+ progressEnabled,
721
+ });
582
722
  const hookWarnings = [
583
723
  ...(await runActiveOnWriteHooks({
584
724
  path: manifestPath,
@@ -614,4 +754,4 @@ export async function runReindex(options, global) {
614
754
  }
615
755
  }
616
756
  //# sourceMappingURL=reindex.js.map
617
- //# debugId=aa59b937-1085-5a08-9ac6-84c64d6b6a8f
757
+ //# debugId=8dd50c77-d026-565f-8f07-e63602a44f09