@unbrained/pm-cli 2026.6.13 → 2026.6.16

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 (770) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +1 -1
  3. package/dist/cli/bootstrap-args.d.ts +29 -0
  4. package/dist/cli/bootstrap-args.js +11 -4
  5. package/dist/cli/bootstrap-args.js.map +1 -1
  6. package/dist/cli/commander-usage.d.ts +12 -0
  7. package/dist/cli/commander-usage.js +18 -7
  8. package/dist/cli/commander-usage.js.map +1 -1
  9. package/dist/cli/commands/activity.d.ts +19 -0
  10. package/dist/cli/commands/activity.js +12 -2
  11. package/dist/cli/commands/activity.js.map +1 -1
  12. package/dist/cli/commands/aggregate.d.ts +58 -0
  13. package/dist/cli/commands/aggregate.js +48 -15
  14. package/dist/cli/commands/aggregate.js.map +1 -1
  15. package/dist/cli/commands/annotation-command.d.ts +6 -1
  16. package/dist/cli/commands/annotation-command.js +72 -2
  17. package/dist/cli/commands/annotation-command.js.map +1 -1
  18. package/dist/cli/commands/append.js +4 -3
  19. package/dist/cli/commands/append.js.map +1 -1
  20. package/dist/cli/commands/close-many.d.ts +20 -0
  21. package/dist/cli/commands/close-many.js +14 -23
  22. package/dist/cli/commands/close-many.js.map +1 -1
  23. package/dist/cli/commands/close.js +37 -4
  24. package/dist/cli/commands/close.js.map +1 -1
  25. package/dist/cli/commands/comments-audit.js +3 -2
  26. package/dist/cli/commands/comments-audit.js.map +1 -1
  27. package/dist/cli/commands/comments.d.ts +2 -0
  28. package/dist/cli/commands/comments.js +49 -23
  29. package/dist/cli/commands/comments.js.map +1 -1
  30. package/dist/cli/commands/completion.js +269 -8
  31. package/dist/cli/commands/completion.js.map +1 -1
  32. package/dist/cli/commands/config.d.ts +51 -1
  33. package/dist/cli/commands/config.js +50 -12
  34. package/dist/cli/commands/config.js.map +1 -1
  35. package/dist/cli/commands/context.d.ts +79 -1
  36. package/dist/cli/commands/context.js +151 -25
  37. package/dist/cli/commands/context.js.map +1 -1
  38. package/dist/cli/commands/contracts.d.ts +80 -1
  39. package/dist/cli/commands/contracts.js +54 -4
  40. package/dist/cli/commands/contracts.js.map +1 -1
  41. package/dist/cli/commands/create.d.ts +49 -0
  42. package/dist/cli/commands/create.js +105 -7
  43. package/dist/cli/commands/create.js.map +1 -1
  44. package/dist/cli/commands/dedupe-audit.d.ts +33 -0
  45. package/dist/cli/commands/dedupe-audit.js +18 -14
  46. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  47. package/dist/cli/commands/deps.js +7 -4
  48. package/dist/cli/commands/deps.js.map +1 -1
  49. package/dist/cli/commands/event-validation-messages.js +3 -3
  50. package/dist/cli/commands/event-validation-messages.js.map +1 -1
  51. package/dist/cli/commands/extension/bundled-catalog.d.ts +7 -0
  52. package/dist/cli/commands/extension/bundled-catalog.js +19 -15
  53. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  54. package/dist/cli/commands/extension/install-sources.d.ts +41 -1
  55. package/dist/cli/commands/extension/install-sources.js +26 -8
  56. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  57. package/dist/cli/commands/extension/shared.d.ts +5 -0
  58. package/dist/cli/commands/extension/shared.js +9 -3
  59. package/dist/cli/commands/extension/shared.js.map +1 -1
  60. package/dist/cli/commands/extension.d.ts +133 -1
  61. package/dist/cli/commands/extension.js +127 -9
  62. package/dist/cli/commands/extension.js.map +1 -1
  63. package/dist/cli/commands/files.d.ts +30 -1
  64. package/dist/cli/commands/files.js +21 -2
  65. package/dist/cli/commands/files.js.map +1 -1
  66. package/dist/cli/commands/focus.d.ts +11 -0
  67. package/dist/cli/commands/focus.js +86 -0
  68. package/dist/cli/commands/focus.js.map +1 -0
  69. package/dist/cli/commands/get.d.ts +9 -2
  70. package/dist/cli/commands/get.js +34 -6
  71. package/dist/cli/commands/get.js.map +1 -1
  72. package/dist/cli/commands/guide.d.ts +5 -0
  73. package/dist/cli/commands/guide.js +6 -3
  74. package/dist/cli/commands/guide.js.map +1 -1
  75. package/dist/cli/commands/health.d.ts +109 -0
  76. package/dist/cli/commands/health.js +87 -35
  77. package/dist/cli/commands/health.js.map +1 -1
  78. package/dist/cli/commands/history-compact.js +27 -36
  79. package/dist/cli/commands/history-compact.js.map +1 -1
  80. package/dist/cli/commands/history-redact.d.ts +46 -0
  81. package/dist/cli/commands/history-redact.js +99 -67
  82. package/dist/cli/commands/history-redact.js.map +1 -1
  83. package/dist/cli/commands/history-repair.js +34 -37
  84. package/dist/cli/commands/history-repair.js.map +1 -1
  85. package/dist/cli/commands/history.js +6 -2
  86. package/dist/cli/commands/history.js.map +1 -1
  87. package/dist/cli/commands/index.d.ts +1 -0
  88. package/dist/cli/commands/index.js +3 -2
  89. package/dist/cli/commands/index.js.map +1 -1
  90. package/dist/cli/commands/init-agent-guidance.d.ts +54 -0
  91. package/dist/cli/commands/init-agent-guidance.js +31 -4
  92. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  93. package/dist/cli/commands/init.d.ts +36 -1
  94. package/dist/cli/commands/init.js +38 -5
  95. package/dist/cli/commands/init.js.map +1 -1
  96. package/dist/cli/commands/learnings.js +4 -3
  97. package/dist/cli/commands/learnings.js.map +1 -1
  98. package/dist/cli/commands/linked-test-parsers.d.ts +5 -0
  99. package/dist/cli/commands/linked-test-parsers.js +5 -2
  100. package/dist/cli/commands/linked-test-parsers.js.map +1 -1
  101. package/dist/cli/commands/list-filter-shared.d.ts +8 -0
  102. package/dist/cli/commands/list-filter-shared.js +70 -0
  103. package/dist/cli/commands/list-filter-shared.js.map +1 -0
  104. package/dist/cli/commands/list.d.ts +116 -0
  105. package/dist/cli/commands/list.js +194 -6
  106. package/dist/cli/commands/list.js.map +1 -1
  107. package/dist/cli/commands/normalize.js +16 -2
  108. package/dist/cli/commands/normalize.js.map +1 -1
  109. package/dist/cli/commands/notes.js +4 -3
  110. package/dist/cli/commands/notes.js.map +1 -1
  111. package/dist/cli/commands/plan.js +3 -2
  112. package/dist/cli/commands/plan.js.map +1 -1
  113. package/dist/cli/commands/reindex.d.ts +83 -0
  114. package/dist/cli/commands/reindex.js +45 -10
  115. package/dist/cli/commands/reindex.js.map +1 -1
  116. package/dist/cli/commands/restore.d.ts +40 -1
  117. package/dist/cli/commands/restore.js +27 -2
  118. package/dist/cli/commands/restore.js.map +1 -1
  119. package/dist/cli/commands/schema.d.ts +18 -0
  120. package/dist/cli/commands/schema.js +30 -3
  121. package/dist/cli/commands/schema.js.map +1 -1
  122. package/dist/cli/commands/search.d.ts +289 -1
  123. package/dist/cli/commands/search.js +367 -60
  124. package/dist/cli/commands/search.js.map +1 -1
  125. package/dist/cli/commands/stats.d.ts +38 -0
  126. package/dist/cli/commands/stats.js +38 -10
  127. package/dist/cli/commands/stats.js.map +1 -1
  128. package/dist/cli/commands/telemetry.js +5 -3
  129. package/dist/cli/commands/telemetry.js.map +1 -1
  130. package/dist/cli/commands/templates.d.ts +18 -0
  131. package/dist/cli/commands/templates.js +9 -2
  132. package/dist/cli/commands/templates.js.map +1 -1
  133. package/dist/cli/commands/test-all.d.ts +5 -0
  134. package/dist/cli/commands/test-all.js +9 -3
  135. package/dist/cli/commands/test-all.js.map +1 -1
  136. package/dist/cli/commands/test.d.ts +70 -1
  137. package/dist/cli/commands/test.js +84 -3
  138. package/dist/cli/commands/test.js.map +1 -1
  139. package/dist/cli/commands/update-many.d.ts +34 -1
  140. package/dist/cli/commands/update-many.js +60 -31
  141. package/dist/cli/commands/update-many.js.map +1 -1
  142. package/dist/cli/commands/update.d.ts +71 -0
  143. package/dist/cli/commands/update.js +74 -8
  144. package/dist/cli/commands/update.js.map +1 -1
  145. package/dist/cli/commands/upgrade.d.ts +28 -1
  146. package/dist/cli/commands/upgrade.js +17 -4
  147. package/dist/cli/commands/upgrade.js.map +1 -1
  148. package/dist/cli/commands/validate.d.ts +114 -0
  149. package/dist/cli/commands/validate.js +153 -8
  150. package/dist/cli/commands/validate.js.map +1 -1
  151. package/dist/cli/error-guidance.d.ts +30 -0
  152. package/dist/cli/error-guidance.js +41 -6
  153. package/dist/cli/error-guidance.js.map +1 -1
  154. package/dist/cli/extension-command-options.js +9 -7
  155. package/dist/cli/extension-command-options.js.map +1 -1
  156. package/dist/cli/help-content.d.ts +8 -0
  157. package/dist/cli/help-content.js +30 -6
  158. package/dist/cli/help-content.js.map +1 -1
  159. package/dist/cli/help-json-payload.d.ts +19 -1
  160. package/dist/cli/help-json-payload.js +16 -7
  161. package/dist/cli/help-json-payload.js.map +1 -1
  162. package/dist/cli/main.d.ts +223 -0
  163. package/dist/cli/main.js +203 -45
  164. package/dist/cli/main.js.map +1 -1
  165. package/dist/cli/register-list-query.js +62 -5
  166. package/dist/cli/register-list-query.js.map +1 -1
  167. package/dist/cli/register-mutation.d.ts +16 -0
  168. package/dist/cli/register-mutation.js +210 -40
  169. package/dist/cli/register-mutation.js.map +1 -1
  170. package/dist/cli/register-operations.d.ts +8 -0
  171. package/dist/cli/register-operations.js +33 -11
  172. package/dist/cli/register-operations.js.map +1 -1
  173. package/dist/cli/register-setup.js +9 -6
  174. package/dist/cli/register-setup.js.map +1 -1
  175. package/dist/cli/registration-helpers.d.ts +4 -0
  176. package/dist/cli/registration-helpers.js +124 -38
  177. package/dist/cli/registration-helpers.js.map +1 -1
  178. package/dist/cli-bundle/chunks/activity-5P2KQCTH.js +18 -0
  179. package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js → activity-MJGTX4LO.js} +13 -11
  180. package/dist/cli-bundle/chunks/{aggregate-XEBW22UQ.js → aggregate-MH3GROKB.js} +54 -25
  181. package/dist/cli-bundle/chunks/aggregate-MH3GROKB.js.map +7 -0
  182. package/dist/cli-bundle/chunks/{aggregate-IRHJWEKG.js → aggregate-OUGCDFNC.js} +55 -26
  183. package/dist/cli-bundle/chunks/aggregate-OUGCDFNC.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{append-N2AWXKZC.js → append-2Q4BPUBW.js} +10 -10
  185. package/dist/cli-bundle/chunks/{append-N2AWXKZC.js.map → append-2Q4BPUBW.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{append-NL67JNJU.js → append-VCRUG2W6.js} +11 -11
  187. package/dist/cli-bundle/chunks/append-VCRUG2W6.js.map +1 -0
  188. package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js → chunk-2IUJBMKS.js} +10 -9
  189. package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js.map → chunk-2IUJBMKS.js.map} +2 -2
  190. package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js → chunk-2JEGCDYT.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js → chunk-3WAULYOY.js} +3 -3
  192. package/dist/cli-bundle/chunks/{chunk-AGG32LKL.js → chunk-3XOXWOGA.js} +359 -19
  193. package/dist/cli-bundle/chunks/chunk-3XOXWOGA.js.map +1 -0
  194. package/dist/cli-bundle/chunks/{chunk-XXLMJDUB.js → chunk-4KBK4BA3.js} +13 -15
  195. package/dist/cli-bundle/chunks/chunk-4KBK4BA3.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-UCVJP4JL.js → chunk-4VLB4JH2.js} +51 -8
  197. package/dist/cli-bundle/chunks/chunk-4VLB4JH2.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-BVL5KGVA.js → chunk-656HPQPO.js} +27 -12
  199. package/dist/cli-bundle/chunks/chunk-656HPQPO.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-LYNQ3NGI.js → chunk-667XI4UJ.js} +309 -20
  201. package/dist/cli-bundle/chunks/chunk-667XI4UJ.js.map +1 -0
  202. package/dist/cli-bundle/chunks/{chunk-W6KNFAMZ.js → chunk-6BV7ENQL.js} +9 -8
  203. package/dist/cli-bundle/chunks/chunk-6BV7ENQL.js.map +7 -0
  204. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js +35 -0
  205. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js.map +7 -0
  206. package/dist/cli-bundle/chunks/{chunk-7SM7VA5I.js → chunk-6NQXMGYU.js} +19 -8
  207. package/dist/cli-bundle/chunks/chunk-6NQXMGYU.js.map +7 -0
  208. package/dist/cli-bundle/chunks/{chunk-AAUYXSFF.js → chunk-764O7EUA.js} +223 -50
  209. package/dist/cli-bundle/chunks/chunk-764O7EUA.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js → chunk-7AGIXLNK.js} +3 -3
  211. package/dist/cli-bundle/chunks/chunk-7EILPFMA.js +404 -0
  212. package/dist/cli-bundle/chunks/chunk-7EILPFMA.js.map +7 -0
  213. package/dist/cli-bundle/chunks/{chunk-L6YQONLM.js → chunk-7K2MXFMX.js} +11 -13
  214. package/dist/cli-bundle/chunks/chunk-7K2MXFMX.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-HZOX5BYD.js → chunk-7L5VOUYP.js} +6 -17
  216. package/dist/cli-bundle/chunks/chunk-7L5VOUYP.js.map +7 -0
  217. package/dist/cli-bundle/chunks/chunk-7ZGKNHUL.js +61 -0
  218. package/dist/cli-bundle/chunks/chunk-7ZGKNHUL.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{chunk-TOX7YQ7X.js → chunk-A576QZDL.js} +223 -50
  220. package/dist/cli-bundle/chunks/chunk-A576QZDL.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-RFR2YQGO.js → chunk-AERT7KT3.js} +5 -5
  222. package/dist/cli-bundle/chunks/chunk-ASM4DVRW.js +58 -0
  223. package/dist/cli-bundle/chunks/chunk-ASM4DVRW.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-SQDKAEKG.js → chunk-B5Q7XC4K.js} +117 -37
  225. package/dist/cli-bundle/chunks/chunk-B5Q7XC4K.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-RHYBR6G7.js → chunk-BJWTFOZM.js} +74 -14
  227. package/dist/cli-bundle/chunks/chunk-BJWTFOZM.js.map +1 -0
  228. package/dist/cli-bundle/chunks/{chunk-4ZKKZMLH.js → chunk-CBMETQ2U.js} +104 -30
  229. package/dist/cli-bundle/chunks/chunk-CBMETQ2U.js.map +1 -0
  230. package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js → chunk-E6J2PEK6.js} +3 -3
  231. package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js → chunk-F2GC6L3N.js} +3 -3
  232. package/dist/cli-bundle/chunks/{chunk-3VULHQNS.js → chunk-F7WSO5UX.js} +7 -18
  233. package/dist/cli-bundle/chunks/chunk-F7WSO5UX.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js → chunk-FTAZLAR7.js} +8 -5
  235. package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js.map → chunk-FTAZLAR7.js.map} +1 -1
  236. package/dist/cli-bundle/chunks/{chunk-AUDDXKNX.js → chunk-FXNT5LPX.js} +77 -9
  237. package/dist/cli-bundle/chunks/chunk-FXNT5LPX.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-IZHCCG4S.js → chunk-G2YVUY7I.js} +14 -9
  239. package/dist/cli-bundle/chunks/chunk-G2YVUY7I.js.map +1 -0
  240. package/dist/cli-bundle/chunks/{chunk-5HSAHRYA.js → chunk-G3CEIXTV.js} +68 -19
  241. package/dist/cli-bundle/chunks/chunk-G3CEIXTV.js.map +7 -0
  242. package/dist/cli-bundle/chunks/{chunk-QQG4HEX7.js → chunk-GAVE4MYM.js} +37 -63
  243. package/dist/cli-bundle/chunks/chunk-GAVE4MYM.js.map +1 -0
  244. package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js → chunk-GQ4JKNMV.js} +4 -4
  245. package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js.map → chunk-GQ4JKNMV.js.map} +1 -1
  246. package/dist/cli-bundle/chunks/{chunk-MACCNKSZ.js → chunk-GYMG7AG6.js} +36 -62
  247. package/dist/cli-bundle/chunks/chunk-GYMG7AG6.js.map +7 -0
  248. package/dist/cli-bundle/chunks/{chunk-7CRFV6JR.js → chunk-H6EH6ENJ.js} +362 -22
  249. package/dist/cli-bundle/chunks/chunk-H6EH6ENJ.js.map +7 -0
  250. package/dist/cli-bundle/chunks/{chunk-2J2AH4V5.js → chunk-HDIDUME4.js} +45 -13
  251. package/dist/cli-bundle/chunks/chunk-HDIDUME4.js.map +1 -0
  252. package/dist/cli-bundle/chunks/{chunk-2ANTZBYF.js → chunk-HPELHUTG.js} +122 -45
  253. package/dist/cli-bundle/chunks/chunk-HPELHUTG.js.map +1 -0
  254. package/dist/cli-bundle/chunks/{chunk-VNC2HBL4.js → chunk-II7OGE3V.js} +20 -9
  255. package/dist/cli-bundle/chunks/chunk-II7OGE3V.js.map +1 -0
  256. package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js → chunk-ILHLIA47.js} +5 -5
  257. package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js.map → chunk-ILHLIA47.js.map} +1 -1
  258. package/dist/cli-bundle/chunks/{chunk-4TPFXE2R.js → chunk-IMQG4VR3.js} +118 -74
  259. package/dist/cli-bundle/chunks/chunk-IMQG4VR3.js.map +1 -0
  260. package/dist/cli-bundle/chunks/{chunk-MGAQ6KZG.js → chunk-IQVB3YDD.js} +82 -21
  261. package/dist/cli-bundle/chunks/chunk-IQVB3YDD.js.map +7 -0
  262. package/dist/cli-bundle/chunks/{chunk-WLH7X4RN.js → chunk-KQ3LAMDO.js} +45 -13
  263. package/dist/cli-bundle/chunks/chunk-KQ3LAMDO.js.map +7 -0
  264. package/dist/cli-bundle/chunks/{chunk-S2CDTRJ6.js → chunk-KTVETP66.js} +379 -271
  265. package/dist/cli-bundle/chunks/chunk-KTVETP66.js.map +1 -0
  266. package/dist/cli-bundle/chunks/{chunk-36BCSMKP.js → chunk-KZYVTOG5.js} +26 -11
  267. package/dist/cli-bundle/chunks/chunk-KZYVTOG5.js.map +7 -0
  268. package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js → chunk-L6FJPOT4.js} +11 -10
  269. package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js.map → chunk-L6FJPOT4.js.map} +1 -1
  270. package/dist/cli-bundle/chunks/{chunk-LFW5NQUP.js → chunk-LV5FFQ7M.js} +405 -290
  271. package/dist/cli-bundle/chunks/chunk-LV5FFQ7M.js.map +7 -0
  272. package/dist/cli-bundle/chunks/{chunk-PNYAAB4S.js → chunk-LWGMDLQ6.js} +8 -3
  273. package/dist/cli-bundle/chunks/chunk-LWGMDLQ6.js.map +1 -0
  274. package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js → chunk-M23HXJL3.js} +2 -2
  275. package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js → chunk-MJZUZ2QE.js} +3 -3
  276. package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js → chunk-NCIBNERT.js} +4 -4
  277. package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js.map → chunk-NCIBNERT.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{chunk-6TBR5AZ2.js → chunk-NIQHNDBZ.js} +76 -8
  279. package/dist/cli-bundle/chunks/chunk-NIQHNDBZ.js.map +7 -0
  280. package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js → chunk-O46LTCXQ.js} +4 -4
  281. package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js → chunk-OCTQJP42.js} +19 -8
  282. package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js.map → chunk-OCTQJP42.js.map} +2 -2
  283. package/dist/cli-bundle/chunks/{chunk-HLEGAQXT.js → chunk-OLTYNVJR.js} +5 -5
  284. package/dist/cli-bundle/chunks/{chunk-IXVSSHGV.js → chunk-OY3P2I6B.js} +13 -8
  285. package/dist/cli-bundle/chunks/chunk-OY3P2I6B.js.map +7 -0
  286. package/dist/cli-bundle/chunks/{chunk-KHGTYCJ6.js → chunk-PZD7WPUC.js} +69 -20
  287. package/dist/cli-bundle/chunks/chunk-PZD7WPUC.js.map +1 -0
  288. package/dist/cli-bundle/chunks/{chunk-4FHLNNW7.js → chunk-Q5RLUCP3.js} +74 -14
  289. package/dist/cli-bundle/chunks/chunk-Q5RLUCP3.js.map +7 -0
  290. package/dist/cli-bundle/chunks/{chunk-SOHXUA2Q.js → chunk-RKKIH2ZQ.js} +116 -36
  291. package/dist/cli-bundle/chunks/chunk-RKKIH2ZQ.js.map +1 -0
  292. package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js → chunk-SPYPC5CB.js} +3 -3
  293. package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js.map → chunk-SPYPC5CB.js.map} +1 -1
  294. package/dist/cli-bundle/chunks/{chunk-SGMGMCIF.js → chunk-SY4GKIWT.js} +82 -21
  295. package/dist/cli-bundle/chunks/chunk-SY4GKIWT.js.map +1 -0
  296. package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js → chunk-SY4PZWIZ.js} +7 -4
  297. package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js.map → chunk-SY4PZWIZ.js.map} +2 -2
  298. package/dist/cli-bundle/chunks/{chunk-HWHONML5.js → chunk-T5VU7ROQ.js} +4 -4
  299. package/dist/cli-bundle/chunks/{chunk-JWXTOYBI.js → chunk-TIRZIQRP.js} +121 -44
  300. package/dist/cli-bundle/chunks/chunk-TIRZIQRP.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{chunk-PEH7SZD2.js → chunk-TUB3DZAZ.js} +105 -31
  302. package/dist/cli-bundle/chunks/chunk-TUB3DZAZ.js.map +7 -0
  303. package/dist/cli-bundle/chunks/chunk-UAR2VNCK.js +394 -0
  304. package/dist/cli-bundle/chunks/chunk-UAR2VNCK.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js → chunk-UBMCSJXX.js} +3 -3
  306. package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js → chunk-UUKORJSN.js} +4 -4
  307. package/dist/cli-bundle/chunks/{chunk-R4VWYWRN.js → chunk-W3HFLORZ.js} +7 -2
  308. package/dist/cli-bundle/chunks/chunk-W3HFLORZ.js.map +7 -0
  309. package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js → chunk-WZCQVABQ.js} +2 -2
  310. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js +32 -0
  311. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js.map +1 -0
  312. package/dist/cli-bundle/chunks/{chunk-M3SI2REU.js → chunk-XLNNCKTN.js} +322 -19
  313. package/dist/cli-bundle/chunks/chunk-XLNNCKTN.js.map +7 -0
  314. package/dist/cli-bundle/chunks/{chunk-4JHJ7YG2.js → chunk-XNOY7TCB.js} +118 -74
  315. package/dist/cli-bundle/chunks/chunk-XNOY7TCB.js.map +7 -0
  316. package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js → chunk-YGRPBFMA.js} +2 -2
  317. package/dist/cli-bundle/chunks/{chunk-JW7D6437.js → chunk-YXTLI4XP.js} +20 -9
  318. package/dist/cli-bundle/chunks/chunk-YXTLI4XP.js.map +1 -0
  319. package/dist/cli-bundle/chunks/{chunk-TSXWFN3L.js → chunk-Z3MUNQRV.js} +52 -9
  320. package/dist/cli-bundle/chunks/chunk-Z3MUNQRV.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js → chunk-ZJRDVYZI.js} +4 -4
  322. package/dist/cli-bundle/chunks/{chunk-32XSW44C.js → chunk-ZONXMSVB.js} +10 -9
  323. package/dist/cli-bundle/chunks/chunk-ZONXMSVB.js.map +1 -0
  324. package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js → claim-4APLUXJW.js} +10 -10
  325. package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js → claim-NEO7AGWH.js} +10 -10
  326. package/dist/cli-bundle/chunks/{close-SPUFW5QR.js → close-3QABBNGU.js} +8 -8
  327. package/dist/cli-bundle/chunks/close-ILMZR3D7.js +13 -0
  328. package/dist/cli-bundle/chunks/{close-many-GKAJX54X.js → close-many-MIZLTYGL.js} +32 -20
  329. package/dist/cli-bundle/chunks/close-many-MIZLTYGL.js.map +1 -0
  330. package/dist/cli-bundle/chunks/{close-many-GL6NRUU5.js → close-many-Q7Y5AHQI.js} +31 -19
  331. package/dist/cli-bundle/chunks/close-many-Q7Y5AHQI.js.map +7 -0
  332. package/dist/cli-bundle/chunks/{comments-5FPT6L7N.js → comments-DAIQPOMU.js} +55 -31
  333. package/dist/cli-bundle/chunks/comments-DAIQPOMU.js.map +1 -0
  334. package/dist/cli-bundle/chunks/{comments-TOLOYWNI.js → comments-IWFSVM4P.js} +54 -30
  335. package/dist/cli-bundle/chunks/comments-IWFSVM4P.js.map +7 -0
  336. package/dist/cli-bundle/chunks/{config-4MN45TIH.js → config-IOJELD6O.js} +45 -19
  337. package/dist/cli-bundle/chunks/config-IOJELD6O.js.map +1 -0
  338. package/dist/cli-bundle/chunks/{config-7N6D7YJE.js → config-PXTMAYV3.js} +44 -18
  339. package/dist/cli-bundle/chunks/config-PXTMAYV3.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{context-AQSLE7DZ.js → context-QHJSCJW4.js} +128 -39
  341. package/dist/cli-bundle/chunks/context-QHJSCJW4.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{context-U3PUJMVN.js → context-XZS2VFKU.js} +127 -38
  343. package/dist/cli-bundle/chunks/context-XZS2VFKU.js.map +7 -0
  344. package/dist/cli-bundle/chunks/{contracts-ITSJXO3O.js → contracts-B7U4OJTV.js} +54 -10
  345. package/dist/cli-bundle/chunks/contracts-B7U4OJTV.js.map +1 -0
  346. package/dist/cli-bundle/chunks/{contracts-H7KCQXLY.js → contracts-NSBVLXQ3.js} +54 -10
  347. package/dist/cli-bundle/chunks/contracts-NSBVLXQ3.js.map +7 -0
  348. package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js → copy-Q64T5FD4.js} +7 -7
  349. package/dist/cli-bundle/chunks/{copy-C4W522JM.js → copy-SG34LCMU.js} +7 -7
  350. package/dist/cli-bundle/chunks/create-F5HZX2S4.js +30 -0
  351. package/dist/cli-bundle/chunks/{create-4EQNELMY.js → create-IPAX2SNL.js} +16 -13
  352. package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js → delete-TLXR7LJ2.js} +7 -7
  353. package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js → delete-VH3L7DZ6.js} +7 -7
  354. package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js → deps-J3HBBLDB.js} +9 -10
  355. package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js.map → deps-J3HBBLDB.js.map} +2 -2
  356. package/dist/cli-bundle/chunks/{deps-HV2C2L46.js → deps-XV6JJ6IN.js} +10 -11
  357. package/dist/cli-bundle/chunks/deps-XV6JJ6IN.js.map +1 -0
  358. package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js → docs-GWDEB7JH.js} +9 -9
  359. package/dist/cli-bundle/chunks/{docs-RJQPLROO.js → docs-RCLNSKID.js} +9 -9
  360. package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js → extension-5RN65LHT.js} +7 -5
  361. package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js → extension-7KO2NX2A.js} +7 -5
  362. package/dist/cli-bundle/chunks/{files-OIFN3DQX.js → files-3TCQHUHA.js} +25 -11
  363. package/dist/cli-bundle/chunks/files-3TCQHUHA.js.map +1 -0
  364. package/dist/cli-bundle/chunks/{files-LIFDKNCN.js → files-5FDUPSEA.js} +24 -10
  365. package/dist/cli-bundle/chunks/files-5FDUPSEA.js.map +7 -0
  366. package/dist/cli-bundle/chunks/focus-7AQMNRSU.js +109 -0
  367. package/dist/cli-bundle/chunks/focus-7AQMNRSU.js.map +7 -0
  368. package/dist/cli-bundle/chunks/focus-HQXBYPKM.js +106 -0
  369. package/dist/cli-bundle/chunks/focus-HQXBYPKM.js.map +1 -0
  370. package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js → gc-2FGKYRJ4.js} +3 -3
  371. package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js → gc-5B6ABL3Z.js} +3 -3
  372. package/dist/cli-bundle/chunks/{get-SAB7CRBG.js → get-FUMVOJQD.js} +43 -16
  373. package/dist/cli-bundle/chunks/get-FUMVOJQD.js.map +1 -0
  374. package/dist/cli-bundle/chunks/{get-K7UULTQF.js → get-H5BZTW4A.js} +42 -15
  375. package/dist/cli-bundle/chunks/get-H5BZTW4A.js.map +7 -0
  376. package/dist/cli-bundle/chunks/{health-NUVZYIEV.js → health-JSVOR6B4.js} +75 -49
  377. package/dist/cli-bundle/chunks/health-JSVOR6B4.js.map +1 -0
  378. package/dist/cli-bundle/chunks/{health-VJWH3ZFK.js → health-LE2ZQGSM.js} +74 -48
  379. package/dist/cli-bundle/chunks/health-LE2ZQGSM.js.map +7 -0
  380. package/dist/cli-bundle/chunks/{history-GYFD2DJW.js → history-QO4JVJJP.js} +10 -10
  381. package/dist/cli-bundle/chunks/history-SSXGGTVZ.js +20 -0
  382. package/dist/cli-bundle/chunks/{history-compact-WQZQ6KXM.js → history-compact-ID74DOUI.js} +37 -46
  383. package/dist/cli-bundle/chunks/history-compact-ID74DOUI.js.map +7 -0
  384. package/dist/cli-bundle/chunks/{history-compact-SLL6ESXH.js → history-compact-SDFRPZ4V.js} +38 -47
  385. package/dist/cli-bundle/chunks/history-compact-SDFRPZ4V.js.map +1 -0
  386. package/dist/cli-bundle/chunks/history-redact-VBH44Y7F.js +21 -0
  387. package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js → history-redact-Z4P5MM3G.js} +13 -11
  388. package/dist/cli-bundle/chunks/{history-repair-UCYS55ZX.js → history-repair-ANHEYWKF.js} +43 -48
  389. package/dist/cli-bundle/chunks/history-repair-ANHEYWKF.js.map +7 -0
  390. package/dist/cli-bundle/chunks/{history-repair-BJCGM6Q3.js → history-repair-CKE7GLZR.js} +44 -49
  391. package/dist/cli-bundle/chunks/history-repair-CKE7GLZR.js.map +1 -0
  392. package/dist/cli-bundle/chunks/init-7FBQO77A.js +19 -0
  393. package/dist/cli-bundle/chunks/{init-MXV57LKL.js → init-K6MSMB37.js} +11 -9
  394. package/dist/cli-bundle/chunks/{learnings-QKJOKEAO.js → learnings-VIS3NOQV.js} +13 -12
  395. package/dist/cli-bundle/chunks/learnings-VIS3NOQV.js.map +7 -0
  396. package/dist/cli-bundle/chunks/{learnings-L6KTZGOT.js → learnings-YYNB64GN.js} +14 -13
  397. package/dist/cli-bundle/chunks/learnings-YYNB64GN.js.map +1 -0
  398. package/dist/cli-bundle/chunks/list-7UE44A2R.js +29 -0
  399. package/dist/cli-bundle/chunks/list-UHMA3N2K.js +33 -0
  400. package/dist/cli-bundle/chunks/{notes-3NLK7WTZ.js → notes-2HRMV67I.js} +14 -13
  401. package/dist/cli-bundle/chunks/notes-2HRMV67I.js.map +1 -0
  402. package/dist/cli-bundle/chunks/{notes-HMCB7TK6.js → notes-IN3UMA7W.js} +13 -12
  403. package/dist/cli-bundle/chunks/notes-IN3UMA7W.js.map +7 -0
  404. package/dist/cli-bundle/chunks/{plan-DWBYI5C6.js → plan-I3SVH7FV.js} +16 -15
  405. package/dist/cli-bundle/chunks/plan-I3SVH7FV.js.map +1 -0
  406. package/dist/cli-bundle/chunks/{plan-NANUWH4T.js → plan-PAWCCAPW.js} +15 -14
  407. package/dist/cli-bundle/chunks/plan-PAWCCAPW.js.map +7 -0
  408. package/dist/cli-bundle/chunks/{register-list-query-PWQ5F2VI.js → register-list-query-N7Z7RTDM.js} +31 -22
  409. package/dist/cli-bundle/chunks/register-list-query-N7Z7RTDM.js.map +7 -0
  410. package/dist/cli-bundle/chunks/{register-list-query-SMMMLSWW.js → register-list-query-OTIK4DVA.js} +32 -23
  411. package/dist/cli-bundle/chunks/register-list-query-OTIK4DVA.js.map +1 -0
  412. package/dist/cli-bundle/chunks/{register-mutation-QKFPTIZG.js → register-mutation-UFZK6Q57.js} +216 -66
  413. package/dist/cli-bundle/chunks/register-mutation-UFZK6Q57.js.map +7 -0
  414. package/dist/cli-bundle/chunks/{register-mutation-ZYJQ4DVP.js → register-mutation-XFORLS6D.js} +210 -67
  415. package/dist/cli-bundle/chunks/register-mutation-XFORLS6D.js.map +1 -0
  416. package/dist/cli-bundle/chunks/{register-operations-2FMZ6WEF.js → register-operations-6ZCLKRBG.js} +53 -39
  417. package/dist/cli-bundle/chunks/register-operations-6ZCLKRBG.js.map +7 -0
  418. package/dist/cli-bundle/chunks/{register-operations-BAFQURZG.js → register-operations-ITE7JTH3.js} +54 -40
  419. package/dist/cli-bundle/chunks/register-operations-ITE7JTH3.js.map +1 -0
  420. package/dist/cli-bundle/chunks/{register-setup-QN2XV7UL.js → register-setup-7RKGE4BQ.js} +18 -21
  421. package/dist/cli-bundle/chunks/register-setup-7RKGE4BQ.js.map +1 -0
  422. package/dist/cli-bundle/chunks/{register-setup-DQEIKBIP.js → register-setup-7UKEFKT6.js} +17 -20
  423. package/dist/cli-bundle/chunks/register-setup-7UKEFKT6.js.map +7 -0
  424. package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js → restore-NNVPBBVJ.js} +13 -11
  425. package/dist/cli-bundle/chunks/restore-XXXLQ2XC.js +19 -0
  426. package/dist/cli-bundle/chunks/{schema-RNVJ55V2.js → schema-3HCLXCFX.js} +27 -9
  427. package/dist/cli-bundle/chunks/schema-3HCLXCFX.js.map +7 -0
  428. package/dist/cli-bundle/chunks/{schema-ZZ7ZDM2X.js → schema-3YKCQ3VO.js} +28 -10
  429. package/dist/cli-bundle/chunks/schema-3YKCQ3VO.js.map +1 -0
  430. package/dist/cli-bundle/chunks/{search-BJ457C2A.js → search-NQ42NC6A.js} +328 -71
  431. package/dist/cli-bundle/chunks/search-NQ42NC6A.js.map +7 -0
  432. package/dist/cli-bundle/chunks/{search-FQDZXX7P.js → search-V7PZ2ICH.js} +328 -71
  433. package/dist/cli-bundle/chunks/search-V7PZ2ICH.js.map +1 -0
  434. package/dist/cli-bundle/chunks/{stats-DUQWCVOS.js → stats-7KD4PJC5.js} +41 -16
  435. package/dist/cli-bundle/chunks/stats-7KD4PJC5.js.map +7 -0
  436. package/dist/cli-bundle/chunks/{stats-CUG3ZHOI.js → stats-GRHO6RFB.js} +42 -17
  437. package/dist/cli-bundle/chunks/stats-GRHO6RFB.js.map +1 -0
  438. package/dist/cli-bundle/chunks/{telemetry-33MRGX4Z.js → telemetry-H5GLXNG5.js} +6 -6
  439. package/dist/cli-bundle/chunks/telemetry-H5GLXNG5.js.map +7 -0
  440. package/dist/cli-bundle/chunks/{telemetry-RK2VX75A.js → telemetry-TRRYZXWT.js} +7 -7
  441. package/dist/cli-bundle/chunks/telemetry-TRRYZXWT.js.map +1 -0
  442. package/dist/cli-bundle/chunks/test-6CZNIIGA.js +34 -0
  443. package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js → test-7GVQ3VMN.js} +16 -14
  444. package/dist/cli-bundle/chunks/{test-all-ANYQ33O2.js → test-all-3LF2OZD2.js} +23 -16
  445. package/dist/cli-bundle/chunks/test-all-3LF2OZD2.js.map +7 -0
  446. package/dist/cli-bundle/chunks/{test-all-ARSMX33Q.js → test-all-ODVADHV6.js} +24 -17
  447. package/dist/cli-bundle/chunks/test-all-ODVADHV6.js.map +1 -0
  448. package/dist/cli-bundle/chunks/{test-runs-5URSD34O.js → test-runs-LYT6ZTNQ.js} +62 -65
  449. package/dist/cli-bundle/chunks/test-runs-LYT6ZTNQ.js.map +1 -0
  450. package/dist/cli-bundle/chunks/{test-runs-XNACGSNQ.js → test-runs-RVP6VWN7.js} +61 -64
  451. package/dist/cli-bundle/chunks/test-runs-RVP6VWN7.js.map +7 -0
  452. package/dist/cli-bundle/chunks/update-MPGM6SBE.js +28 -0
  453. package/dist/cli-bundle/chunks/update-UN75XW3C.js +24 -0
  454. package/dist/cli-bundle/chunks/{update-many-6B7PJ33I.js → update-many-FCU6RKTO.js} +80 -34
  455. package/dist/cli-bundle/chunks/update-many-FCU6RKTO.js.map +1 -0
  456. package/dist/cli-bundle/chunks/{update-many-724JCVDE.js → update-many-XSEQJ24X.js} +79 -33
  457. package/dist/cli-bundle/chunks/update-many-XSEQJ24X.js.map +7 -0
  458. package/dist/cli-bundle/chunks/{upgrade-ALBEZAI7.js → upgrade-A6TL3INC.js} +22 -8
  459. package/dist/cli-bundle/chunks/upgrade-A6TL3INC.js.map +7 -0
  460. package/dist/cli-bundle/chunks/{upgrade-QHRGDBSA.js → upgrade-FOB5LHO5.js} +23 -9
  461. package/dist/cli-bundle/chunks/upgrade-FOB5LHO5.js.map +1 -0
  462. package/dist/cli-bundle/chunks/{validate-IQRYFXIV.js → validate-7BLDG3AT.js} +221 -30
  463. package/dist/cli-bundle/chunks/validate-7BLDG3AT.js.map +1 -0
  464. package/dist/cli-bundle/chunks/{validate-UY6DRCG5.js → validate-EHL3MI2V.js} +235 -30
  465. package/dist/cli-bundle/chunks/validate-EHL3MI2V.js.map +7 -0
  466. package/dist/cli-bundle/main.js +270 -139
  467. package/dist/cli-bundle/main.js.map +3 -3
  468. package/dist/cli.d.ts +10 -0
  469. package/dist/cli.js +21 -8
  470. package/dist/cli.js.map +1 -1
  471. package/dist/core/diagnostics/remediation.js +7 -2
  472. package/dist/core/diagnostics/remediation.js.map +1 -1
  473. package/dist/core/extensions/extension-policy.js +14 -15
  474. package/dist/core/extensions/extension-policy.js.map +1 -1
  475. package/dist/core/extensions/item-fields.js +4 -5
  476. package/dist/core/extensions/item-fields.js.map +1 -1
  477. package/dist/core/extensions/loader.d.ts +75 -1
  478. package/dist/core/extensions/loader.js +56 -32
  479. package/dist/core/extensions/loader.js.map +1 -1
  480. package/dist/core/governance/content-fields.d.ts +84 -0
  481. package/dist/core/governance/content-fields.js +182 -0
  482. package/dist/core/governance/content-fields.js.map +1 -0
  483. package/dist/core/governance/issue-codes.d.ts +51 -0
  484. package/dist/core/governance/issue-codes.js +95 -0
  485. package/dist/core/governance/issue-codes.js.map +1 -0
  486. package/dist/core/governance/metadata-coverage.d.ts +168 -0
  487. package/dist/core/governance/metadata-coverage.js +362 -0
  488. package/dist/core/governance/metadata-coverage.js.map +1 -0
  489. package/dist/core/history/history-rewrite.d.ts +22 -0
  490. package/dist/core/history/history-rewrite.js +38 -2
  491. package/dist/core/history/history-rewrite.js.map +1 -1
  492. package/dist/core/history/history.d.ts +7 -0
  493. package/dist/core/history/history.js +6 -2
  494. package/dist/core/history/history.js.map +1 -1
  495. package/dist/core/io/body-file.d.ts +14 -0
  496. package/dist/core/io/body-file.js +47 -0
  497. package/dist/core/io/body-file.js.map +1 -0
  498. package/dist/core/item/item-format.d.ts +46 -1
  499. package/dist/core/item/item-format.js +51 -60
  500. package/dist/core/item/item-format.js.map +1 -1
  501. package/dist/core/item/parse.d.ts +9 -0
  502. package/dist/core/item/parse.js +10 -16
  503. package/dist/core/item/parse.js.map +1 -1
  504. package/dist/core/item/type-registry.d.ts +1 -0
  505. package/dist/core/item/type-registry.js +8 -10
  506. package/dist/core/item/type-registry.js.map +1 -1
  507. package/dist/core/lock/lock.d.ts +26 -0
  508. package/dist/core/lock/lock.js +10 -2
  509. package/dist/core/lock/lock.js.map +1 -1
  510. package/dist/core/output/output.d.ts +7 -0
  511. package/dist/core/output/output.js +6 -2
  512. package/dist/core/output/output.js.map +1 -1
  513. package/dist/core/schema/item-types-file.d.ts +25 -2
  514. package/dist/core/schema/item-types-file.js +78 -6
  515. package/dist/core/schema/item-types-file.js.map +1 -1
  516. package/dist/core/schema/runtime-schema.d.ts +7 -0
  517. package/dist/core/schema/runtime-schema.js +23 -16
  518. package/dist/core/schema/runtime-schema.js.map +1 -1
  519. package/dist/core/search/cache.d.ts +19 -1
  520. package/dist/core/search/cache.js +11 -3
  521. package/dist/core/search/cache.js.map +1 -1
  522. package/dist/core/search/corpus.d.ts +36 -2
  523. package/dist/core/search/corpus.js +120 -24
  524. package/dist/core/search/corpus.js.map +1 -1
  525. package/dist/core/search/providers.d.ts +19 -0
  526. package/dist/core/search/providers.js +19 -2
  527. package/dist/core/search/providers.js.map +1 -1
  528. package/dist/core/sentry/instrument.d.ts +1 -0
  529. package/dist/core/sentry/instrument.js +6 -2
  530. package/dist/core/sentry/instrument.js.map +1 -1
  531. package/dist/core/session/session-state.d.ts +16 -0
  532. package/dist/core/session/session-state.js +48 -0
  533. package/dist/core/session/session-state.js.map +1 -0
  534. package/dist/core/shared/constants.d.ts +8 -0
  535. package/dist/core/shared/constants.js +11 -2
  536. package/dist/core/shared/constants.js.map +1 -1
  537. package/dist/core/shared/text-normalization.js +4 -3
  538. package/dist/core/shared/text-normalization.js.map +1 -1
  539. package/dist/core/shared/time.d.ts +13 -0
  540. package/dist/core/shared/time.js +19 -7
  541. package/dist/core/shared/time.js.map +1 -1
  542. package/dist/core/store/item-store.d.ts +11 -0
  543. package/dist/core/store/item-store.js +12 -3
  544. package/dist/core/store/item-store.js.map +1 -1
  545. package/dist/core/store/settings-validator.d.ts +2 -0
  546. package/dist/core/store/settings-validator.js +25 -2
  547. package/dist/core/store/settings-validator.js.map +1 -1
  548. package/dist/core/store/settings.d.ts +60 -1
  549. package/dist/core/store/settings.js +100 -46
  550. package/dist/core/store/settings.js.map +1 -1
  551. package/dist/core/telemetry/observability.js +10 -8
  552. package/dist/core/telemetry/observability.js.map +1 -1
  553. package/dist/core/telemetry/runtime.d.ts +272 -1
  554. package/dist/core/telemetry/runtime.js +358 -37
  555. package/dist/core/telemetry/runtime.js.map +1 -1
  556. package/dist/core/test/background-runs.d.ts +35 -0
  557. package/dist/core/test/background-runs.js +72 -61
  558. package/dist/core/test/background-runs.js.map +1 -1
  559. package/dist/core/test/run-selectors.js +5 -4
  560. package/dist/core/test/run-selectors.js.map +1 -1
  561. package/dist/core/validate/estimate-defaults.d.ts +39 -0
  562. package/dist/core/validate/estimate-defaults.js +117 -0
  563. package/dist/core/validate/estimate-defaults.js.map +1 -0
  564. package/dist/core/validate/fix-planning.d.ts +21 -3
  565. package/dist/core/validate/fix-planning.js +31 -4
  566. package/dist/core/validate/fix-planning.js.map +1 -1
  567. package/dist/core/validate/missing-link-owners.d.ts +64 -0
  568. package/dist/core/validate/missing-link-owners.js +98 -0
  569. package/dist/core/validate/missing-link-owners.js.map +1 -0
  570. package/dist/mcp/server.d.ts +61 -0
  571. package/dist/mcp/server.js +50 -7
  572. package/dist/mcp/server.js.map +1 -1
  573. package/dist/mcp/tool-definitions.js +17 -4
  574. package/dist/mcp/tool-definitions.js.map +1 -1
  575. package/dist/sdk/cli-contracts/commander-types.js +13 -2
  576. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  577. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  578. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  579. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  580. package/dist/sdk/cli-contracts/tool-option-contracts.js +110 -2
  581. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  582. package/dist/sdk/cli-contracts/tool-parameter-tables.js +83 -8
  583. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  584. package/dist/sdk/cli-contracts.d.ts +28 -0
  585. package/dist/sdk/cli-contracts.js +164 -11
  586. package/dist/sdk/cli-contracts.js.map +1 -1
  587. package/dist/types.d.ts +17 -1
  588. package/dist/types.js +3 -3
  589. package/dist/types.js.map +1 -1
  590. package/docs/AGENT_GUIDE.md +15 -3
  591. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  592. package/docs/COMMANDS.md +136 -7
  593. package/docs/CONFIGURATION.md +52 -0
  594. package/docs/TESTING.md +6 -4
  595. package/package.json +6 -4
  596. package/packages/pm-calendar/extensions/calendar/runtime.js +6 -0
  597. package/packages/pm-calendar/extensions/calendar/runtime.ts +12 -0
  598. package/packages/pm-todos/extensions/todos/runtime.ts +5 -0
  599. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  600. package/plugins/pm-claude/README.md +3 -3
  601. package/plugins/pm-claude/commands/pm-init.md +1 -1
  602. package/plugins/pm-codex/README.md +1 -1
  603. package/scripts/bundle-cli.mjs +46 -37
  604. package/scripts/finalize-build.mjs +20 -9
  605. package/scripts/prepare-build-cache.mjs +27 -16
  606. package/dist/cli-bundle/chunks/activity-XIOTGZMU.js +0 -16
  607. package/dist/cli-bundle/chunks/aggregate-IRHJWEKG.js.map +0 -1
  608. package/dist/cli-bundle/chunks/aggregate-XEBW22UQ.js.map +0 -7
  609. package/dist/cli-bundle/chunks/append-NL67JNJU.js.map +0 -1
  610. package/dist/cli-bundle/chunks/chunk-2ANTZBYF.js.map +0 -1
  611. package/dist/cli-bundle/chunks/chunk-2J2AH4V5.js.map +0 -1
  612. package/dist/cli-bundle/chunks/chunk-32XSW44C.js.map +0 -1
  613. package/dist/cli-bundle/chunks/chunk-36BCSMKP.js.map +0 -7
  614. package/dist/cli-bundle/chunks/chunk-3VULHQNS.js.map +0 -1
  615. package/dist/cli-bundle/chunks/chunk-4FHLNNW7.js.map +0 -7
  616. package/dist/cli-bundle/chunks/chunk-4JHJ7YG2.js.map +0 -7
  617. package/dist/cli-bundle/chunks/chunk-4TPFXE2R.js.map +0 -1
  618. package/dist/cli-bundle/chunks/chunk-4ZKKZMLH.js.map +0 -1
  619. package/dist/cli-bundle/chunks/chunk-5HSAHRYA.js.map +0 -7
  620. package/dist/cli-bundle/chunks/chunk-6TBR5AZ2.js.map +0 -7
  621. package/dist/cli-bundle/chunks/chunk-7CRFV6JR.js.map +0 -7
  622. package/dist/cli-bundle/chunks/chunk-7SM7VA5I.js.map +0 -7
  623. package/dist/cli-bundle/chunks/chunk-AAUYXSFF.js.map +0 -7
  624. package/dist/cli-bundle/chunks/chunk-AGG32LKL.js.map +0 -1
  625. package/dist/cli-bundle/chunks/chunk-AUDDXKNX.js.map +0 -1
  626. package/dist/cli-bundle/chunks/chunk-BVL5KGVA.js.map +0 -1
  627. package/dist/cli-bundle/chunks/chunk-C24PWDFG.js +0 -138
  628. package/dist/cli-bundle/chunks/chunk-C24PWDFG.js.map +0 -7
  629. package/dist/cli-bundle/chunks/chunk-HZOX5BYD.js.map +0 -7
  630. package/dist/cli-bundle/chunks/chunk-IXVSSHGV.js.map +0 -7
  631. package/dist/cli-bundle/chunks/chunk-IZHCCG4S.js.map +0 -1
  632. package/dist/cli-bundle/chunks/chunk-JW7D6437.js.map +0 -1
  633. package/dist/cli-bundle/chunks/chunk-JWXTOYBI.js.map +0 -7
  634. package/dist/cli-bundle/chunks/chunk-KHGTYCJ6.js.map +0 -1
  635. package/dist/cli-bundle/chunks/chunk-L6YQONLM.js.map +0 -1
  636. package/dist/cli-bundle/chunks/chunk-LFW5NQUP.js.map +0 -7
  637. package/dist/cli-bundle/chunks/chunk-LYNQ3NGI.js.map +0 -1
  638. package/dist/cli-bundle/chunks/chunk-M3SI2REU.js.map +0 -7
  639. package/dist/cli-bundle/chunks/chunk-MACCNKSZ.js.map +0 -7
  640. package/dist/cli-bundle/chunks/chunk-MGAQ6KZG.js.map +0 -7
  641. package/dist/cli-bundle/chunks/chunk-PEH7SZD2.js.map +0 -7
  642. package/dist/cli-bundle/chunks/chunk-PNYAAB4S.js.map +0 -1
  643. package/dist/cli-bundle/chunks/chunk-QQG4HEX7.js.map +0 -1
  644. package/dist/cli-bundle/chunks/chunk-R4VWYWRN.js.map +0 -7
  645. package/dist/cli-bundle/chunks/chunk-RHYBR6G7.js.map +0 -1
  646. package/dist/cli-bundle/chunks/chunk-S2CDTRJ6.js.map +0 -1
  647. package/dist/cli-bundle/chunks/chunk-SGMGMCIF.js.map +0 -1
  648. package/dist/cli-bundle/chunks/chunk-SOHXUA2Q.js.map +0 -1
  649. package/dist/cli-bundle/chunks/chunk-SQDKAEKG.js.map +0 -7
  650. package/dist/cli-bundle/chunks/chunk-TOX7YQ7X.js.map +0 -1
  651. package/dist/cli-bundle/chunks/chunk-TSXWFN3L.js.map +0 -1
  652. package/dist/cli-bundle/chunks/chunk-UCVJP4JL.js.map +0 -7
  653. package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js +0 -128
  654. package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js.map +0 -1
  655. package/dist/cli-bundle/chunks/chunk-VNC2HBL4.js.map +0 -1
  656. package/dist/cli-bundle/chunks/chunk-W6KNFAMZ.js.map +0 -7
  657. package/dist/cli-bundle/chunks/chunk-WLH7X4RN.js.map +0 -7
  658. package/dist/cli-bundle/chunks/chunk-XXLMJDUB.js.map +0 -7
  659. package/dist/cli-bundle/chunks/close-WOG5WTMZ.js +0 -13
  660. package/dist/cli-bundle/chunks/close-many-GKAJX54X.js.map +0 -1
  661. package/dist/cli-bundle/chunks/close-many-GL6NRUU5.js.map +0 -7
  662. package/dist/cli-bundle/chunks/comments-5FPT6L7N.js.map +0 -1
  663. package/dist/cli-bundle/chunks/comments-TOLOYWNI.js.map +0 -7
  664. package/dist/cli-bundle/chunks/config-4MN45TIH.js.map +0 -1
  665. package/dist/cli-bundle/chunks/config-7N6D7YJE.js.map +0 -7
  666. package/dist/cli-bundle/chunks/context-AQSLE7DZ.js.map +0 -1
  667. package/dist/cli-bundle/chunks/context-U3PUJMVN.js.map +0 -7
  668. package/dist/cli-bundle/chunks/contracts-H7KCQXLY.js.map +0 -7
  669. package/dist/cli-bundle/chunks/contracts-ITSJXO3O.js.map +0 -1
  670. package/dist/cli-bundle/chunks/create-NW3K7LVG.js +0 -27
  671. package/dist/cli-bundle/chunks/deps-HV2C2L46.js.map +0 -1
  672. package/dist/cli-bundle/chunks/files-LIFDKNCN.js.map +0 -7
  673. package/dist/cli-bundle/chunks/files-OIFN3DQX.js.map +0 -1
  674. package/dist/cli-bundle/chunks/get-K7UULTQF.js.map +0 -7
  675. package/dist/cli-bundle/chunks/get-SAB7CRBG.js.map +0 -1
  676. package/dist/cli-bundle/chunks/health-NUVZYIEV.js.map +0 -1
  677. package/dist/cli-bundle/chunks/health-VJWH3ZFK.js.map +0 -7
  678. package/dist/cli-bundle/chunks/history-IUVN4NTN.js +0 -20
  679. package/dist/cli-bundle/chunks/history-compact-SLL6ESXH.js.map +0 -1
  680. package/dist/cli-bundle/chunks/history-compact-WQZQ6KXM.js.map +0 -7
  681. package/dist/cli-bundle/chunks/history-redact-75KIIJUJ.js +0 -19
  682. package/dist/cli-bundle/chunks/history-repair-BJCGM6Q3.js.map +0 -1
  683. package/dist/cli-bundle/chunks/history-repair-UCYS55ZX.js.map +0 -7
  684. package/dist/cli-bundle/chunks/init-JJFYRUKG.js +0 -17
  685. package/dist/cli-bundle/chunks/learnings-L6KTZGOT.js.map +0 -1
  686. package/dist/cli-bundle/chunks/learnings-QKJOKEAO.js.map +0 -7
  687. package/dist/cli-bundle/chunks/list-GGVPXEV6.js +0 -23
  688. package/dist/cli-bundle/chunks/list-VOQDQHA4.js +0 -19
  689. package/dist/cli-bundle/chunks/notes-3NLK7WTZ.js.map +0 -1
  690. package/dist/cli-bundle/chunks/notes-HMCB7TK6.js.map +0 -7
  691. package/dist/cli-bundle/chunks/plan-DWBYI5C6.js.map +0 -1
  692. package/dist/cli-bundle/chunks/plan-NANUWH4T.js.map +0 -7
  693. package/dist/cli-bundle/chunks/register-list-query-PWQ5F2VI.js.map +0 -7
  694. package/dist/cli-bundle/chunks/register-list-query-SMMMLSWW.js.map +0 -1
  695. package/dist/cli-bundle/chunks/register-mutation-QKFPTIZG.js.map +0 -7
  696. package/dist/cli-bundle/chunks/register-mutation-ZYJQ4DVP.js.map +0 -1
  697. package/dist/cli-bundle/chunks/register-operations-2FMZ6WEF.js.map +0 -7
  698. package/dist/cli-bundle/chunks/register-operations-BAFQURZG.js.map +0 -1
  699. package/dist/cli-bundle/chunks/register-setup-DQEIKBIP.js.map +0 -7
  700. package/dist/cli-bundle/chunks/register-setup-QN2XV7UL.js.map +0 -1
  701. package/dist/cli-bundle/chunks/restore-DRBNXJJH.js +0 -17
  702. package/dist/cli-bundle/chunks/schema-RNVJ55V2.js.map +0 -7
  703. package/dist/cli-bundle/chunks/schema-ZZ7ZDM2X.js.map +0 -1
  704. package/dist/cli-bundle/chunks/search-BJ457C2A.js.map +0 -7
  705. package/dist/cli-bundle/chunks/search-FQDZXX7P.js.map +0 -1
  706. package/dist/cli-bundle/chunks/stats-CUG3ZHOI.js.map +0 -1
  707. package/dist/cli-bundle/chunks/stats-DUQWCVOS.js.map +0 -7
  708. package/dist/cli-bundle/chunks/telemetry-33MRGX4Z.js.map +0 -7
  709. package/dist/cli-bundle/chunks/telemetry-RK2VX75A.js.map +0 -1
  710. package/dist/cli-bundle/chunks/test-SDMYEQHH.js +0 -32
  711. package/dist/cli-bundle/chunks/test-all-ANYQ33O2.js.map +0 -7
  712. package/dist/cli-bundle/chunks/test-all-ARSMX33Q.js.map +0 -1
  713. package/dist/cli-bundle/chunks/test-runs-5URSD34O.js.map +0 -1
  714. package/dist/cli-bundle/chunks/test-runs-XNACGSNQ.js.map +0 -7
  715. package/dist/cli-bundle/chunks/update-PD46VOXI.js +0 -21
  716. package/dist/cli-bundle/chunks/update-U235A7WP.js +0 -25
  717. package/dist/cli-bundle/chunks/update-many-6B7PJ33I.js.map +0 -1
  718. package/dist/cli-bundle/chunks/update-many-724JCVDE.js.map +0 -7
  719. package/dist/cli-bundle/chunks/upgrade-ALBEZAI7.js.map +0 -7
  720. package/dist/cli-bundle/chunks/upgrade-QHRGDBSA.js.map +0 -1
  721. package/dist/cli-bundle/chunks/validate-IQRYFXIV.js.map +0 -1
  722. package/dist/cli-bundle/chunks/validate-UY6DRCG5.js.map +0 -7
  723. /package/dist/cli-bundle/chunks/{activity-XIOTGZMU.js.map → activity-5P2KQCTH.js.map} +0 -0
  724. /package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js.map → activity-MJGTX4LO.js.map} +0 -0
  725. /package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js.map → chunk-2JEGCDYT.js.map} +0 -0
  726. /package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js.map → chunk-3WAULYOY.js.map} +0 -0
  727. /package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js.map → chunk-7AGIXLNK.js.map} +0 -0
  728. /package/dist/cli-bundle/chunks/{chunk-RFR2YQGO.js.map → chunk-AERT7KT3.js.map} +0 -0
  729. /package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js.map → chunk-E6J2PEK6.js.map} +0 -0
  730. /package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js.map → chunk-F2GC6L3N.js.map} +0 -0
  731. /package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js.map → chunk-M23HXJL3.js.map} +0 -0
  732. /package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js.map → chunk-MJZUZ2QE.js.map} +0 -0
  733. /package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js.map → chunk-O46LTCXQ.js.map} +0 -0
  734. /package/dist/cli-bundle/chunks/{chunk-HLEGAQXT.js.map → chunk-OLTYNVJR.js.map} +0 -0
  735. /package/dist/cli-bundle/chunks/{chunk-HWHONML5.js.map → chunk-T5VU7ROQ.js.map} +0 -0
  736. /package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js.map → chunk-UBMCSJXX.js.map} +0 -0
  737. /package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js.map → chunk-UUKORJSN.js.map} +0 -0
  738. /package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js.map → chunk-WZCQVABQ.js.map} +0 -0
  739. /package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js.map → chunk-YGRPBFMA.js.map} +0 -0
  740. /package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js.map → chunk-ZJRDVYZI.js.map} +0 -0
  741. /package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js.map → claim-4APLUXJW.js.map} +0 -0
  742. /package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js.map → claim-NEO7AGWH.js.map} +0 -0
  743. /package/dist/cli-bundle/chunks/{close-SPUFW5QR.js.map → close-3QABBNGU.js.map} +0 -0
  744. /package/dist/cli-bundle/chunks/{close-WOG5WTMZ.js.map → close-ILMZR3D7.js.map} +0 -0
  745. /package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js.map → copy-Q64T5FD4.js.map} +0 -0
  746. /package/dist/cli-bundle/chunks/{copy-C4W522JM.js.map → copy-SG34LCMU.js.map} +0 -0
  747. /package/dist/cli-bundle/chunks/{create-NW3K7LVG.js.map → create-F5HZX2S4.js.map} +0 -0
  748. /package/dist/cli-bundle/chunks/{create-4EQNELMY.js.map → create-IPAX2SNL.js.map} +0 -0
  749. /package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js.map → delete-TLXR7LJ2.js.map} +0 -0
  750. /package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js.map → delete-VH3L7DZ6.js.map} +0 -0
  751. /package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js.map → docs-GWDEB7JH.js.map} +0 -0
  752. /package/dist/cli-bundle/chunks/{docs-RJQPLROO.js.map → docs-RCLNSKID.js.map} +0 -0
  753. /package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js.map → extension-5RN65LHT.js.map} +0 -0
  754. /package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js.map → extension-7KO2NX2A.js.map} +0 -0
  755. /package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js.map → gc-2FGKYRJ4.js.map} +0 -0
  756. /package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js.map → gc-5B6ABL3Z.js.map} +0 -0
  757. /package/dist/cli-bundle/chunks/{history-GYFD2DJW.js.map → history-QO4JVJJP.js.map} +0 -0
  758. /package/dist/cli-bundle/chunks/{history-IUVN4NTN.js.map → history-SSXGGTVZ.js.map} +0 -0
  759. /package/dist/cli-bundle/chunks/{history-redact-75KIIJUJ.js.map → history-redact-VBH44Y7F.js.map} +0 -0
  760. /package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js.map → history-redact-Z4P5MM3G.js.map} +0 -0
  761. /package/dist/cli-bundle/chunks/{init-JJFYRUKG.js.map → init-7FBQO77A.js.map} +0 -0
  762. /package/dist/cli-bundle/chunks/{init-MXV57LKL.js.map → init-K6MSMB37.js.map} +0 -0
  763. /package/dist/cli-bundle/chunks/{list-VOQDQHA4.js.map → list-7UE44A2R.js.map} +0 -0
  764. /package/dist/cli-bundle/chunks/{list-GGVPXEV6.js.map → list-UHMA3N2K.js.map} +0 -0
  765. /package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js.map → restore-NNVPBBVJ.js.map} +0 -0
  766. /package/dist/cli-bundle/chunks/{restore-DRBNXJJH.js.map → restore-XXXLQ2XC.js.map} +0 -0
  767. /package/dist/cli-bundle/chunks/{test-SDMYEQHH.js.map → test-6CZNIIGA.js.map} +0 -0
  768. /package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js.map → test-7GVQ3VMN.js.map} +0 -0
  769. /package/dist/cli-bundle/chunks/{update-U235A7WP.js.map → update-MPGM6SBE.js.map} +0 -0
  770. /package/dist/cli-bundle/chunks/{update-PD46VOXI.js.map → update-UN75XW3C.js.map} +0 -0
@@ -1,4 +1,9 @@
1
+ import { resolveEmbeddingProviders } from "../../core/search/providers.js";
2
+ import { resolveVectorStores } from "../../core/search/vector-stores.js";
3
+ import type { VectorizationEmbeddingIdentity } from "../../core/search/vectorization-metadata.js";
1
4
  import type { GlobalOptions } from "../../core/shared/command-types.js";
5
+ import { type CachedDocumentCandidate } from "../../core/store/front-matter-cache.js";
6
+ import type { ItemDocument, PmSettings } from "../../types/index.js";
2
7
  export interface ReindexOptions {
3
8
  mode?: string;
4
9
  progress?: boolean;
@@ -23,4 +28,82 @@ export interface ReindexResult {
23
28
  warnings: string[];
24
29
  generated_at: string;
25
30
  }
31
+ declare function shouldEmitReindexProgress(options: ReindexOptions): boolean;
32
+ declare function emitReindexProgress(enabled: boolean, message: string): void;
33
+ declare function parseMode(raw: string | undefined): "keyword" | "semantic" | "hybrid";
34
+ declare function hydrateDocuments(pmRoot: string, candidates: CachedDocumentCandidate[], schema: PmSettings["schema"], warnings: string[], itemIds?: Set<string>): Promise<ItemDocument[]>;
35
+ declare function buildKeywordRecord(document: ItemDocument, mode: "keyword" | "semantic" | "hybrid", corpusFields?: string[]): Record<string, unknown>;
36
+ type ExtensionEmbedBatch = (context: {
37
+ inputs: string[];
38
+ settings: PmSettings;
39
+ model: string;
40
+ }) => Promise<number[][]> | number[][];
41
+ type ExtensionEmbedOne = (context: {
42
+ input: string;
43
+ settings: PmSettings;
44
+ model: string;
45
+ }) => Promise<number[]> | number[];
46
+ type ExtensionVectorUpsert = (context: {
47
+ points: Array<{
48
+ id: string;
49
+ vector: number[];
50
+ payload: Record<string, unknown>;
51
+ }>;
52
+ settings: PmSettings;
53
+ }) => Promise<void> | void;
54
+ type ExtensionVectorDelete = (context: {
55
+ ids: string[];
56
+ settings: PmSettings;
57
+ }) => Promise<void> | void;
58
+ interface ExtensionVectorAdapter {
59
+ name: string;
60
+ upsert: ExtensionVectorUpsert;
61
+ delete?: ExtensionVectorDelete;
62
+ }
63
+ interface ReindexEmbeddingExecutionResult {
64
+ vectors: number[][];
65
+ embeddingIdentity: VectorizationEmbeddingIdentity;
66
+ }
67
+ export declare const _testOnly: {
68
+ shouldEmitReindexProgress: typeof shouldEmitReindexProgress;
69
+ emitReindexProgress: typeof emitReindexProgress;
70
+ parseMode: typeof parseMode;
71
+ hydrateDocuments: typeof hydrateDocuments;
72
+ buildKeywordRecord: typeof buildKeywordRecord;
73
+ resolveExtensionSearchEmbedding: typeof resolveExtensionSearchEmbedding;
74
+ resolveExtensionVectorAdapter: typeof resolveExtensionVectorAdapter;
75
+ assertVector: typeof assertVector;
76
+ executeExtensionEmbedding: typeof executeExtensionEmbedding;
77
+ resolveExtensionEmbeddingModel: typeof resolveExtensionEmbeddingModel;
78
+ resolveReindexEmbeddingIdentity: typeof resolveReindexEmbeddingIdentity;
79
+ executeReindexEmbedding: typeof executeReindexEmbedding;
80
+ collectLedgerOrphanIds: typeof collectLedgerOrphanIds;
81
+ resetVectorStoreForReindex: typeof resetVectorStoreForReindex;
82
+ pruneReindexOrphanVectors: typeof pruneReindexOrphanVectors;
83
+ };
84
+ declare function resolveExtensionSearchEmbedding(settings: PmSettings): {
85
+ name: string;
86
+ embedBatch?: ExtensionEmbedBatch;
87
+ embed?: ExtensionEmbedOne;
88
+ } | null;
89
+ declare function resolveExtensionVectorAdapter(settings: PmSettings): ExtensionVectorAdapter | null;
90
+ declare function assertVector(value: unknown, context: string): number[];
91
+ declare function executeExtensionEmbedding(extensionEmbedding: {
92
+ name: string;
93
+ embedBatch?: ExtensionEmbedBatch;
94
+ embed?: ExtensionEmbedOne;
95
+ }, settings: PmSettings, corpusInputs: string[]): Promise<number[][]>;
96
+ declare function resolveExtensionEmbeddingModel(settings: PmSettings): string;
97
+ declare function resolveReindexEmbeddingIdentity(settings: PmSettings, activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>["active"], extensionEmbedding: {
98
+ name: string;
99
+ } | null): VectorizationEmbeddingIdentity;
100
+ declare function collectLedgerOrphanIds(ledgerEntries: Record<string, string>, currentIds: Set<string>): string[];
101
+ declare function executeReindexEmbedding(settings: PmSettings, requestedMode: "keyword" | "semantic" | "hybrid", activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>["active"], extensionEmbedding: {
102
+ name: string;
103
+ embedBatch?: ExtensionEmbedBatch;
104
+ embed?: ExtensionEmbedOne;
105
+ } | null, documents: ItemDocument[], semanticWarnings: string[], semanticSummary: ReindexResult["semantic"], progressEnabled: boolean): Promise<ReindexEmbeddingExecutionResult>;
106
+ declare function resetVectorStoreForReindex(activeVectorStore: ReturnType<typeof resolveVectorStores>["active"], extensionVectorAdapter: ExtensionVectorAdapter | null, ledgerEntries: Record<string, string>, settings: PmSettings, semanticWarnings: string[], vectorDimension?: number): Promise<void>;
107
+ declare function pruneReindexOrphanVectors(activeVectorStore: ReturnType<typeof resolveVectorStores>["active"], extensionVectorAdapter: ExtensionVectorAdapter | null, orphanIds: string[], settings: PmSettings, semanticWarnings: string[]): Promise<void>;
26
108
  export declare function runReindex(options: ReindexOptions, global: GlobalOptions): Promise<ReindexResult>;
109
+ export {};
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8b10a718-9470-5745-96b0-ca5d0e9f6404")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2ad2d609-875e-582b-8ad4-362bc75c62f3")}catch(e){}}();
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { toNonEmptyStringOrUndefined } from "../../core/shared/primitives.js";
@@ -10,7 +10,7 @@ import { pathExists, writeFileAtomic } from "../../core/fs/fs-utils.js";
10
10
  import { resolveItemTypeRegistry } from "../../core/item/type-registry.js";
11
11
  import { parseItemDocument } from "../../core/item/item-format.js";
12
12
  import { acquireLock } from "../../core/lock/lock.js";
13
- import { buildSearchCorpus, buildSemanticCorpusInput, resolveSemanticCorpusCharacterLimit, } from "../../core/search/corpus.js";
13
+ import { buildSearchCorpus, buildSemanticCorpusInput, resolveSearchCorpusFields, resolveSemanticCorpusCharacterLimit, } from "../../core/search/corpus.js";
14
14
  import { executeEmbeddingBatchesWithRetry } from "../../core/search/embedding-batches.js";
15
15
  import { readVectorizationStatusLedger, writeVectorizationStatusLedger } from "../../core/search/cache.js";
16
16
  import { REINDEX_LOCK_ID } from "../../core/search/background-refresh.js";
@@ -96,30 +96,54 @@ async function hydrateDocuments(pmRoot, candidates, schema, warnings, itemIds) {
96
96
  }
97
97
  return hydrated;
98
98
  }
99
- function buildKeywordRecord(document, mode) {
99
+ function buildKeywordRecord(document, mode, corpusFields) {
100
100
  const item = document.metadata;
101
101
  return {
102
102
  id: item.id,
103
103
  mode,
104
104
  updated_at: item.updated_at,
105
- corpus: buildSearchCorpus(document),
105
+ corpus: buildSearchCorpus(document, { fields: corpusFields }),
106
106
  };
107
107
  }
108
108
  const toOptionalNonEmptyString = toNonEmptyStringOrUndefined;
109
+ export const _testOnly = {
110
+ shouldEmitReindexProgress,
111
+ emitReindexProgress,
112
+ parseMode,
113
+ hydrateDocuments,
114
+ buildKeywordRecord,
115
+ resolveExtensionSearchEmbedding,
116
+ resolveExtensionVectorAdapter,
117
+ assertVector,
118
+ executeExtensionEmbedding,
119
+ resolveExtensionEmbeddingModel,
120
+ resolveReindexEmbeddingIdentity,
121
+ executeReindexEmbedding,
122
+ collectLedgerOrphanIds,
123
+ resetVectorStoreForReindex,
124
+ pruneReindexOrphanVectors,
125
+ };
109
126
  function resolveExtensionSearchEmbedding(settings) {
110
127
  const registrations = getActiveExtensionRegistrations();
111
128
  const providerName = toOptionalNonEmptyString(settings.search?.provider);
129
+ if (!providerName) {
130
+ return null;
131
+ }
112
132
  const registration = resolveRegisteredSearchProvider(registrations, providerName);
113
133
  if (!registration) {
114
134
  return null;
115
135
  }
116
136
  const runtimeDefinition = registration.runtime_definition ?? registration.definition;
117
137
  const name = toOptionalNonEmptyString(runtimeDefinition.name) ??
118
- toOptionalNonEmptyString(registration.definition.name) ??
119
- providerName;
138
+ toOptionalNonEmptyString(registration.definition.name);
139
+ // resolveRegisteredSearchProvider only matches a registration whose normalized
140
+ // runtime/registered definition name equals providerName, so `name` here is always
141
+ // that non-empty value; the guard exists solely to narrow string | undefined.
142
+ /* c8 ignore start -- unreachable: a matched provider registration always carries a normalized name */
120
143
  if (!name) {
121
144
  return null;
122
145
  }
146
+ /* c8 ignore stop */
123
147
  const embedBatch = runtimeDefinition.embedBatch;
124
148
  const embedBatchSnake = runtimeDefinition.embed_batch;
125
149
  const embed = runtimeDefinition.embed;
@@ -141,14 +165,16 @@ function resolveExtensionSearchEmbedding(settings) {
141
165
  function resolveExtensionVectorAdapter(settings) {
142
166
  const registrations = getActiveExtensionRegistrations();
143
167
  const adapterName = toOptionalNonEmptyString(settings.vector_store?.adapter);
168
+ if (!adapterName) {
169
+ return null;
170
+ }
144
171
  const registration = resolveRegisteredVectorStoreAdapter(registrations, adapterName);
145
172
  if (!registration) {
146
173
  return null;
147
174
  }
148
175
  const runtimeDefinition = registration.runtime_definition ?? registration.definition;
149
176
  const name = toOptionalNonEmptyString(runtimeDefinition.name) ??
150
- toOptionalNonEmptyString(registration.definition.name) ??
151
- adapterName;
177
+ toOptionalNonEmptyString(registration.definition.name);
152
178
  const upsert = runtimeDefinition.upsert;
153
179
  const deleteHandler = runtimeDefinition.delete;
154
180
  if (!name || typeof upsert !== "function") {
@@ -215,9 +241,11 @@ function collectLedgerOrphanIds(ledgerEntries, currentIds) {
215
241
  async function executeReindexEmbedding(settings, requestedMode, activeEmbeddingProvider, extensionEmbedding, documents, semanticWarnings, semanticSummary, progressEnabled) {
216
242
  const semanticProviderName = extensionEmbedding?.name ?? activeEmbeddingProvider?.name;
217
243
  const corpusCharacterLimit = resolveSemanticCorpusCharacterLimit(semanticProviderName, settings.search.embedding_corpus_max_characters).maxCharacters;
244
+ const corpusFields = resolveSearchCorpusFields(settings);
218
245
  const corpusInputs = documents.map((document) => buildSemanticCorpusInput(document, {
219
246
  providerName: semanticProviderName,
220
247
  maxCharacters: corpusCharacterLimit,
248
+ fields: corpusFields,
221
249
  }));
222
250
  let vectors = [];
223
251
  let embeddingIdentity = null;
@@ -481,6 +509,7 @@ export async function runReindex(options, global) {
481
509
  },
482
510
  }));
483
511
  semanticSummary.embedded_items = vectors.length;
512
+ /* c8 ignore start -- semantic preflight guarantees a vector upsert executor path */
484
513
  if (extensionVectorAdapter) {
485
514
  try {
486
515
  emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${extensionVectorAdapter.name} points=${points.length}`);
@@ -509,8 +538,11 @@ export async function runReindex(options, global) {
509
538
  emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);
510
539
  }
511
540
  else {
541
+ /* c8 ignore start -- guarded by semantic-mode provider/vector-store preflight above */
512
542
  throw new PmCliError(`No vector upsert executor available for reindex mode '${requestedMode}'`, EXIT_CODE.USAGE);
543
+ /* c8 ignore stop */
513
544
  }
545
+ /* c8 ignore stop */
514
546
  if (freshDocuments > 0) {
515
547
  semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);
516
548
  }
@@ -522,7 +554,10 @@ export async function runReindex(options, global) {
522
554
  vectorizationEmbeddingMetadata = ledger.embedding;
523
555
  }
524
556
  }
525
- const embeddingsLines = documentsForKeywordArtifacts.map((document) => JSON.stringify(buildKeywordRecord(document, mode))).join("\n");
557
+ const keywordCorpusFields = resolveSearchCorpusFields(settings);
558
+ const embeddingsLines = documentsForKeywordArtifacts
559
+ .map((document) => JSON.stringify(buildKeywordRecord(document, mode, keywordCorpusFields)))
560
+ .join("\n");
526
561
  emitReindexProgress(progressEnabled, "writing keyword artifacts");
527
562
  await writeFileAtomic(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
528
563
  await writeFileAtomic(embeddingsPath, `${embeddingsLines}\n`);
@@ -571,4 +606,4 @@ export async function runReindex(options, global) {
571
606
  }
572
607
  }
573
608
  //# sourceMappingURL=reindex.js.map
574
- //# debugId=8b10a718-9470-5745-96b0-ca5d0e9f6404
609
+ //# debugId=2ad2d609-875e-582b-8ad4-362bc75c62f3
@@ -1 +1 @@
1
- {"version":3,"file":"reindex.js","sources":["cli/commands/reindex.ts"],"sourceRoot":"/","sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { getActiveExtensionRegistrations, runActiveOnIndexHooks, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n resolveRegisteredSearchProvider,\n resolveRegisteredVectorStoreAdapter,\n} from \"../../core/extensions/runtime-registrations.js\";\nimport { pathExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { acquireLock } from \"../../core/lock/lock.js\";\nimport {\n buildSearchCorpus,\n buildSemanticCorpusInput,\n resolveSemanticCorpusCharacterLimit,\n} from \"../../core/search/corpus.js\";\nimport { executeEmbeddingBatchesWithRetry } from \"../../core/search/embedding-batches.js\";\nimport { readVectorizationStatusLedger, writeVectorizationStatusLedger } from \"../../core/search/cache.js\";\nimport { REINDEX_LOCK_ID } from \"../../core/search/background-refresh.js\";\nimport { resolveEmbeddingProviders } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { executeVectorDelete, executeVectorReset, executeVectorUpsert, resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n buildVectorizationEmbeddingMetadata,\n hasVectorizationEmbeddingIdentityChanged,\n hasVectorizationVectorDimensionChanged,\n inferConsistentVectorDimension,\n} from \"../../core/search/vectorization-metadata.js\";\nimport type {\n VectorizationEmbeddingIdentity,\n VectorizationEmbeddingMetadata,\n} from \"../../core/search/vectorization-metadata.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllDocumentCandidatesCached, type CachedDocumentCandidate } from \"../../core/store/front-matter-cache.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type { ItemDocument, PmSettings } from \"../../types/index.js\";\n\nconst MANIFEST_PATH = \"index/manifest.json\";\nconst EMBEDDINGS_PATH = \"search/embeddings.jsonl\";\nconst EMBEDDING_MIGRATION_REINDEX_HINT =\n \"Provider or model has changed since last index. Run pm reindex --mode semantic to rebuild.\";\n\nexport interface ReindexOptions {\n mode?: string;\n progress?: boolean;\n full?: boolean;\n}\n\nexport interface ReindexResult {\n ok: boolean;\n mode: \"keyword\" | \"semantic\" | \"hybrid\";\n total_items: number;\n semantic: {\n enabled: boolean;\n stale_items: number;\n unchanged_items: number;\n embedded_items: number;\n vector_upserted: number;\n batches_completed: number;\n };\n artifacts: {\n manifest: string;\n embeddings: string;\n };\n warnings: string[];\n generated_at: string;\n}\n\nfunction shouldEmitReindexProgress(options: ReindexOptions): boolean {\n return options.progress === true || process.stderr.isTTY === true;\n}\n\nfunction emitReindexProgress(enabled: boolean, message: string): void {\n if (!enabled) {\n return;\n }\n try {\n process.stderr.write(`[pm reindex] ${message}\\n`);\n } catch {\n // Ignore transient stderr write failures.\n }\n}\n\nfunction parseMode(raw: string | undefined): \"keyword\" | \"semantic\" | \"hybrid\" {\n const normalized = (raw ?? \"keyword\").trim().toLowerCase();\n if (normalized === \"keyword\") {\n return \"keyword\";\n }\n if (normalized === \"semantic\" || normalized === \"hybrid\") {\n return normalized;\n }\n throw new PmCliError(\"Reindex mode must be one of keyword|semantic|hybrid\", EXIT_CODE.USAGE);\n}\n\nasync function loadDocumentCandidates(\n pmRoot: string,\n itemFormat: \"toon\" | \"json_markdown\",\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ candidates: CachedDocumentCandidate[]; warnings: string[] }> {\n const warnings: string[] = [];\n const candidates = await listAllDocumentCandidatesCached(pmRoot, itemFormat, typeToFolder, warnings, schema);\n return {\n candidates,\n warnings,\n };\n}\n\nasync function hydrateDocuments(\n pmRoot: string,\n candidates: CachedDocumentCandidate[],\n schema: PmSettings[\"schema\"],\n warnings: string[],\n itemIds?: Set<string>,\n): Promise<ItemDocument[]> {\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n const hydrated: ItemDocument[] = [];\n for (const candidate of candidates) {\n if (itemIds && !itemIds.has(candidate.metadata.id)) {\n continue;\n }\n if (typeof candidate.body === \"string\") {\n hydrated.push({\n metadata: candidate.metadata,\n body: candidate.body,\n });\n continue;\n }\n try {\n const raw = await fs.readFile(candidate.item_path, \"utf8\");\n const parsed = parseItemDocument(raw, {\n format: candidate.item_format,\n schema,\n extensionFieldNames,\n onWarning: (warning) => warnings.push(warning),\n });\n hydrated.push({\n metadata: candidate.metadata,\n body: parsed.body,\n });\n } catch {\n warnings.push(`item_list_item_read_failed:${path.relative(pmRoot, candidate.item_path)}`);\n hydrated.push({\n metadata: candidate.metadata,\n body: \"\",\n });\n }\n }\n return hydrated;\n}\n\nfunction buildKeywordRecord(document: ItemDocument, mode: \"keyword\" | \"semantic\" | \"hybrid\"): Record<string, unknown> {\n const item = document.metadata;\n return {\n id: item.id,\n mode,\n updated_at: item.updated_at,\n corpus: buildSearchCorpus(document),\n };\n}\n\ntype ExtensionEmbedBatch = (context: {\n inputs: string[];\n settings: PmSettings;\n model: string;\n}) => Promise<number[][]> | number[][];\n\ntype ExtensionEmbedOne = (context: {\n input: string;\n settings: PmSettings;\n model: string;\n}) => Promise<number[]> | number[];\n\ntype ExtensionVectorUpsert = (context: {\n points: Array<{\n id: string;\n vector: number[];\n payload: Record<string, unknown>;\n }>;\n settings: PmSettings;\n}) => Promise<void> | void;\n\ntype ExtensionVectorDelete = (context: {\n ids: string[];\n settings: PmSettings;\n}) => Promise<void> | void;\n\ninterface ExtensionVectorAdapter {\n name: string;\n upsert: ExtensionVectorUpsert;\n delete?: ExtensionVectorDelete;\n}\n\ninterface ReindexEmbeddingExecutionResult {\n vectors: number[][];\n embeddingIdentity: VectorizationEmbeddingIdentity;\n}\n\nconst toOptionalNonEmptyString = toNonEmptyStringOrUndefined;\n\nfunction resolveExtensionSearchEmbedding(\n settings: PmSettings,\n): { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne } | null {\n const registrations = getActiveExtensionRegistrations();\n const providerName = toOptionalNonEmptyString(settings.search?.provider);\n const registration = resolveRegisteredSearchProvider(registrations, providerName);\n if (!registration) {\n return null;\n }\n const runtimeDefinition = registration.runtime_definition ?? registration.definition;\n const name =\n toOptionalNonEmptyString((runtimeDefinition as { name?: unknown }).name) ??\n toOptionalNonEmptyString((registration.definition as { name?: unknown }).name) ??\n providerName;\n if (!name) {\n return null;\n }\n const embedBatch = (runtimeDefinition as { embedBatch?: unknown; embed_batch?: unknown }).embedBatch;\n const embedBatchSnake = (runtimeDefinition as { embedBatch?: unknown; embed_batch?: unknown }).embed_batch;\n const embed = (runtimeDefinition as { embed?: unknown }).embed;\n const resolvedEmbedBatch =\n typeof embedBatch === \"function\"\n ? (embedBatch as ExtensionEmbedBatch)\n : typeof embedBatchSnake === \"function\"\n ? (embedBatchSnake as ExtensionEmbedBatch)\n : undefined;\n const resolvedEmbed = typeof embed === \"function\" ? (embed as ExtensionEmbedOne) : undefined;\n if (!resolvedEmbedBatch && !resolvedEmbed) {\n return null;\n }\n return {\n name,\n embedBatch: resolvedEmbedBatch,\n embed: resolvedEmbed,\n };\n}\n\nfunction resolveExtensionVectorAdapter(settings: PmSettings): ExtensionVectorAdapter | null {\n const registrations = getActiveExtensionRegistrations();\n const adapterName = toOptionalNonEmptyString(settings.vector_store?.adapter);\n const registration = resolveRegisteredVectorStoreAdapter(registrations, adapterName);\n if (!registration) {\n return null;\n }\n const runtimeDefinition = registration.runtime_definition ?? registration.definition;\n const name =\n toOptionalNonEmptyString((runtimeDefinition as { name?: unknown }).name) ??\n toOptionalNonEmptyString((registration.definition as { name?: unknown }).name) ??\n adapterName;\n const upsert = (runtimeDefinition as { upsert?: unknown }).upsert;\n const deleteHandler = (runtimeDefinition as { delete?: unknown }).delete;\n if (!name || typeof upsert !== \"function\") {\n return null;\n }\n return {\n name,\n upsert: upsert as ExtensionVectorUpsert,\n ...(typeof deleteHandler === \"function\" ? { delete: deleteHandler as ExtensionVectorDelete } : {}),\n };\n}\n\nfunction assertVector(value: unknown, context: string): number[] {\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"number\" || !Number.isFinite(entry))) {\n throw new PmCliError(`Invalid vector returned by ${context}`, EXIT_CODE.GENERIC_FAILURE);\n }\n return value;\n}\n\nasync function executeExtensionEmbedding(\n extensionEmbedding: { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne },\n settings: PmSettings,\n corpusInputs: string[],\n): Promise<number[][]> {\n const model = settings.search?.embedding_model?.trim() || \"text-embedding-3-small\";\n if (extensionEmbedding.embedBatch) {\n const vectors = await Promise.resolve(\n extensionEmbedding.embedBatch({\n inputs: corpusInputs,\n settings,\n model,\n }),\n );\n if (!Array.isArray(vectors)) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" embedBatch must return an array of vectors`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n return vectors.map((vector, index) =>\n assertVector(vector, `extension search provider \"${extensionEmbedding.name}\" embedBatch output at index ${index}`),\n );\n }\n if (!extensionEmbedding.embed) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" does not implement embed/embedBatch`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n const vectors: number[][] = [];\n for (const [index, input] of corpusInputs.entries()) {\n const vector = await Promise.resolve(\n extensionEmbedding.embed({\n input,\n settings,\n model,\n }),\n );\n vectors.push(assertVector(vector, `extension search provider \"${extensionEmbedding.name}\" embed output at index ${index}`));\n }\n return vectors;\n}\n\nfunction resolveExtensionEmbeddingModel(settings: PmSettings): string {\n return settings.search?.embedding_model?.trim() || \"text-embedding-3-small\";\n}\n\nfunction resolveReindexEmbeddingIdentity(\n settings: PmSettings,\n activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"],\n extensionEmbedding: { name: string } | null,\n): VectorizationEmbeddingIdentity {\n const identity = extensionEmbedding\n ? buildVectorizationEmbeddingIdentity(extensionEmbedding.name, resolveExtensionEmbeddingModel(settings))\n : activeEmbeddingProvider\n ? buildVectorizationEmbeddingIdentity(activeEmbeddingProvider.name, activeEmbeddingProvider.model)\n : null;\n if (!identity) {\n throw new PmCliError(\n `No embedding identity available for semantic reindex mode`,\n EXIT_CODE.USAGE,\n );\n }\n return identity;\n}\n\nfunction collectLedgerOrphanIds(ledgerEntries: Record<string, string>, currentIds: Set<string>): string[] {\n return Object.keys(ledgerEntries)\n .filter((id) => !currentIds.has(id))\n .sort((left, right) => left.localeCompare(right));\n}\n\nasync function executeReindexEmbedding(\n settings: PmSettings,\n requestedMode: \"keyword\" | \"semantic\" | \"hybrid\",\n activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"],\n extensionEmbedding: { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne } | null,\n documents: ItemDocument[],\n semanticWarnings: string[],\n semanticSummary: ReindexResult[\"semantic\"],\n progressEnabled: boolean,\n): Promise<ReindexEmbeddingExecutionResult> {\n const semanticProviderName = extensionEmbedding?.name ?? activeEmbeddingProvider?.name;\n const corpusCharacterLimit = resolveSemanticCorpusCharacterLimit(\n semanticProviderName,\n settings.search.embedding_corpus_max_characters,\n ).maxCharacters;\n const corpusInputs = documents.map((document) =>\n buildSemanticCorpusInput(document, {\n providerName: semanticProviderName,\n maxCharacters: corpusCharacterLimit,\n }),\n );\n let vectors: number[][] = [];\n let embeddingIdentity: VectorizationEmbeddingIdentity | null = null;\n if (extensionEmbedding) {\n try {\n vectors = await executeExtensionEmbedding(extensionEmbedding, settings, corpusInputs);\n embeddingIdentity = buildVectorizationEmbeddingIdentity(extensionEmbedding.name, resolveExtensionEmbeddingModel(settings));\n } catch (error: unknown) {\n if (!activeEmbeddingProvider) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" failed to generate embeddings: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n semanticWarnings.push(\n `Extension search provider \"${extensionEmbedding.name}\" failed; falling back to built-in provider (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n }\n if (vectors.length === 0) {\n if (!activeEmbeddingProvider) {\n throw new PmCliError(\n `No embedding executor available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n }\n const embeddingResult = await executeEmbeddingBatchesWithRetry(activeEmbeddingProvider, settings, corpusInputs, {\n onProgress: (event) => {\n if (event.phase === \"complete\") {\n semanticSummary.batches_completed = event.batch_index;\n }\n emitReindexProgress(\n progressEnabled,\n `embedding_batch_${event.phase} batch=${event.batch_index}/${event.batch_total} size=${event.batch_size} completed_inputs=${event.completed_inputs}/${event.total_inputs}`,\n );\n },\n });\n semanticWarnings.push(...embeddingResult.warnings);\n vectors = embeddingResult.vectors;\n embeddingIdentity = buildVectorizationEmbeddingIdentity(activeEmbeddingProvider.name, activeEmbeddingProvider.model);\n }\n emitReindexProgress(progressEnabled, `embedding_complete vectors=${vectors.length}`);\n if (vectors.length !== documents.length) {\n throw new PmCliError(\n `Embedding output size mismatch (expected ${documents.length}, received ${vectors.length})`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n if (!embeddingIdentity) {\n throw new PmCliError(\n `No embedding identity available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n }\n return { vectors, embeddingIdentity };\n}\n\nasync function resetVectorStoreForReindex(\n activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"],\n extensionVectorAdapter: ExtensionVectorAdapter | null,\n ledgerEntries: Record<string, string>,\n settings: PmSettings,\n semanticWarnings: string[],\n vectorDimension?: number,\n): Promise<void> {\n const knownIds = Object.keys(ledgerEntries);\n if (extensionVectorAdapter) {\n if (knownIds.length > 0 && extensionVectorAdapter.delete) {\n try {\n await Promise.resolve(extensionVectorAdapter.delete({ ids: knownIds.sort((left, right) => left.localeCompare(right)), settings }));\n } catch (error: unknown) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to delete vectors during reindex reset: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n } else if (knownIds.length > 0) {\n semanticWarnings.push(\n `search_semantic_reindex_reset_skipped:adapter=${extensionVectorAdapter.name}:known_ids=${knownIds.length}`,\n );\n }\n if (!activeVectorStore) {\n return;\n }\n }\n if (activeVectorStore) {\n await executeVectorReset(activeVectorStore, knownIds, {}, vectorDimension);\n }\n}\n\nasync function pruneReindexOrphanVectors(\n activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"],\n extensionVectorAdapter: ExtensionVectorAdapter | null,\n orphanIds: string[],\n settings: PmSettings,\n semanticWarnings: string[],\n): Promise<void> {\n if (orphanIds.length === 0) {\n return;\n }\n if (extensionVectorAdapter) {\n if (extensionVectorAdapter.delete) {\n try {\n await Promise.resolve(extensionVectorAdapter.delete({ ids: orphanIds, settings }));\n } catch (error: unknown) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to delete orphan vectors during reindex: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n } else {\n semanticWarnings.push(\n `search_semantic_reindex_orphan_prune_skipped:adapter=${extensionVectorAdapter.name}:count=${orphanIds.length}`,\n );\n }\n if (!activeVectorStore) {\n return;\n }\n }\n if (activeVectorStore) {\n await executeVectorDelete(activeVectorStore, orphanIds);\n }\n}\n\nexport async function runReindex(options: ReindexOptions, global: GlobalOptions): Promise<ReindexResult> {\n const requestedMode = parseMode(options.mode);\n const progressEnabled = shouldEmitReindexProgress(options);\n const forceFullSemantic = options.full === true;\n emitReindexProgress(progressEnabled, `start mode=${requestedMode}`);\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = resolveSettingsWithSemanticRuntimeDefaults(await readSettings(pmRoot)).settings;\n let releaseReindexLock: (() => Promise<void>) | null = null;\n try {\n releaseReindexLock = await acquireLock(\n pmRoot,\n REINDEX_LOCK_ID,\n settings.locks.ttl_seconds,\n process.env.PM_AUTHOR ?? \"pm-reindex\",\n false,\n settings.governance.force_required_for_stale_lock,\n );\n } catch (error: unknown) {\n if (error instanceof PmCliError && error.exitCode === EXIT_CODE.CONFLICT) {\n throw new PmCliError(\n \"Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.\",\n EXIT_CODE.CONFLICT,\n {\n code: \"reindex_already_running\",\n type: \"urn:pm-cli:error:reindex_already_running\",\n why: \"Semantic reindex can be expensive and duplicate runs compete for the same local embedding model and vector store.\",\n nextSteps: [\n \"Check active pm reindex processes before starting another reindex.\",\n \"Rerun with --progress when you need non-interactive visibility.\",\n ],\n },\n );\n }\n throw error;\n }\n\n try {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const extensionEmbedding = resolveExtensionSearchEmbedding(settings);\n const extensionVectorAdapter = resolveExtensionVectorAdapter(settings);\n let activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"] = null;\n let activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"] = null;\n if (requestedMode !== \"keyword\") {\n const providerResolution = resolveEmbeddingProviders(settings);\n if (!providerResolution.active && !extensionEmbedding) {\n throw new PmCliError(\n `Reindex mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai/settings.providers.ollama or an extension provider selected by settings.search.provider`,\n EXIT_CODE.USAGE,\n );\n }\n const vectorResolution = resolveVectorStores(settings);\n if (!vectorResolution.active && !extensionVectorAdapter) {\n throw new PmCliError(\n `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`,\n EXIT_CODE.USAGE,\n );\n }\n activeEmbeddingProvider = providerResolution.active;\n activeVectorStore = vectorResolution.active;\n }\n const mode = requestedMode;\n emitReindexProgress(progressEnabled, \"loading item corpus\");\n const loadedCandidates = await loadDocumentCandidates(pmRoot, settings.item_format, typeRegistry.type_to_folder, settings.schema);\n const reindexWarnings = [...loadedCandidates.warnings];\n const documentCandidates = loadedCandidates.candidates;\n const metadataDocuments: ItemDocument[] = documentCandidates.map((candidate) => ({\n metadata: candidate.metadata,\n body: typeof candidate.body === \"string\" ? candidate.body : \"\",\n }));\n emitReindexProgress(progressEnabled, `loaded_items=${metadataDocuments.length}`);\n const generatedAt = nowIso();\n\n const manifest = {\n version: 1,\n mode,\n generated_at: generatedAt,\n total_items: metadataDocuments.length,\n items: metadataDocuments.map((document) => ({\n id: document.metadata.id,\n type: document.metadata.type,\n status: document.metadata.status,\n priority: document.metadata.priority,\n updated_at: document.metadata.updated_at,\n })),\n };\n\n const manifestPath = path.join(pmRoot, MANIFEST_PATH);\n const embeddingsPath = path.join(pmRoot, EMBEDDINGS_PATH);\n\n let documentsForKeywordArtifacts =\n mode === \"keyword\"\n ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings)\n : metadataDocuments;\n const semanticWarnings: string[] = [];\n const vectorizationLedgerEntries: Record<string, string> = {};\n let vectorizationEmbeddingMetadata: VectorizationEmbeddingMetadata | null = null;\n const semanticSummary = {\n enabled: mode !== \"keyword\",\n stale_items: 0,\n unchanged_items: 0,\n embedded_items: 0,\n vector_upserted: 0,\n batches_completed: 0,\n };\n if (mode === \"keyword\") {\n const ledger = await readVectorizationStatusLedger(pmRoot);\n reindexWarnings.push(...ledger.warnings);\n if (forceFullSemantic) {\n reindexWarnings.push(\"search_semantic_reindex_full_ignored:mode_keyword\");\n }\n if (ledger.embedding) {\n const currentEmbeddingIdentity = (() => {\n try {\n return resolveReindexEmbeddingIdentity(settings, resolveEmbeddingProviders(settings).active, extensionEmbedding);\n } catch {\n return null;\n }\n })();\n if (currentEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(ledger.embedding, currentEmbeddingIdentity)) {\n reindexWarnings.push(\"search_semantic_reindex_requires_rebuild:embedding_identity_changed\");\n reindexWarnings.push(EMBEDDING_MIGRATION_REINDEX_HINT);\n }\n }\n }\n if (mode !== \"keyword\" && metadataDocuments.length > 0) {\n const ledger = await readVectorizationStatusLedger(pmRoot);\n semanticWarnings.push(...ledger.warnings);\n const embeddingIdentity = resolveReindexEmbeddingIdentity(settings, activeEmbeddingProvider, extensionEmbedding);\n const currentIds = new Set(metadataDocuments.map((document) => document.metadata.id));\n const orphanIds = collectLedgerOrphanIds(ledger.entries, currentIds);\n let resetRequired = hasVectorizationEmbeddingIdentityChanged(ledger.embedding, embeddingIdentity);\n if (forceFullSemantic && !resetRequired) {\n semanticWarnings.push(\"search_semantic_reindex_full_rebuild_forced\");\n }\n const staleSourceDocuments =\n forceFullSemantic || resetRequired\n ? metadataDocuments\n : metadataDocuments.filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at);\n let staleIds = new Set(\n staleSourceDocuments.map((document) => document.metadata.id),\n );\n let staleDocuments = staleIds.size > 0\n ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds)\n : [];\n let freshDocuments = metadataDocuments.length - staleDocuments.length;\n semanticSummary.stale_items = staleDocuments.length;\n semanticSummary.unchanged_items = freshDocuments;\n for (const document of metadataDocuments) {\n vectorizationLedgerEntries[document.metadata.id] = document.metadata.updated_at;\n }\n emitReindexProgress(\n progressEnabled,\n `semantic_stale_items stale=${staleDocuments.length} total=${metadataDocuments.length} unchanged=${freshDocuments} full=${forceFullSemantic || resetRequired}`,\n );\n if (staleDocuments.length === 0) {\n emitReindexProgress(progressEnabled, `embedding_skipped unchanged_items=${freshDocuments}`);\n semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);\n } else {\n emitReindexProgress(progressEnabled, `embedding_start items=${staleDocuments.length} unchanged_items=${freshDocuments}`);\n let embeddingResult = await executeReindexEmbedding(\n settings,\n requestedMode,\n activeEmbeddingProvider,\n extensionEmbedding,\n staleDocuments,\n semanticWarnings,\n semanticSummary,\n progressEnabled,\n );\n let vectors = embeddingResult.vectors;\n let actualEmbeddingIdentity = embeddingResult.embeddingIdentity;\n let vectorDimension = inferConsistentVectorDimension(vectors, \"Reindex embeddings\");\n if (\n !resetRequired &&\n (hasVectorizationEmbeddingIdentityChanged(ledger.embedding, actualEmbeddingIdentity) ||\n hasVectorizationVectorDimensionChanged(ledger.embedding, vectorDimension))\n ) {\n resetRequired = true;\n staleIds = new Set(metadataDocuments.map((document) => document.metadata.id));\n staleDocuments = await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds);\n freshDocuments = 0;\n semanticSummary.stale_items = staleDocuments.length;\n semanticSummary.unchanged_items = 0;\n emitReindexProgress(progressEnabled, `embedding_dimension_changed reset_items=${staleDocuments.length}`);\n embeddingResult = await executeReindexEmbedding(\n settings,\n requestedMode,\n activeEmbeddingProvider,\n extensionEmbedding,\n staleDocuments,\n semanticWarnings,\n semanticSummary,\n progressEnabled,\n );\n vectors = embeddingResult.vectors;\n actualEmbeddingIdentity = embeddingResult.embeddingIdentity;\n vectorDimension = inferConsistentVectorDimension(vectors, \"Reindex embeddings\");\n }\n if (resetRequired) {\n emitReindexProgress(progressEnabled, \"vector_reset_start\");\n await resetVectorStoreForReindex(\n activeVectorStore,\n extensionVectorAdapter,\n ledger.entries,\n settings,\n semanticWarnings,\n ledger.embedding ? vectorDimension : undefined,\n );\n emitReindexProgress(progressEnabled, \"vector_reset_complete\");\n } else {\n await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);\n }\n vectorizationEmbeddingMetadata = buildVectorizationEmbeddingMetadata(actualEmbeddingIdentity, vectorDimension);\n const points = staleDocuments.map((document, index) => ({\n id: document.metadata.id,\n vector: assertVector(vectors[index], `reindex embeddings output at index ${index}`),\n payload: {\n id: document.metadata.id,\n type: document.metadata.type,\n status: document.metadata.status,\n priority: document.metadata.priority,\n updated_at: document.metadata.updated_at,\n },\n }));\n semanticSummary.embedded_items = vectors.length;\n if (extensionVectorAdapter) {\n try {\n emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${extensionVectorAdapter.name} points=${points.length}`);\n await Promise.resolve(\n extensionVectorAdapter.upsert({\n points,\n settings,\n }),\n );\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${extensionVectorAdapter.name}`);\n } catch (error: unknown) {\n if (!activeVectorStore) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to upsert vectors: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n semanticWarnings.push(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed; falling back to built-in vector store (${error instanceof Error ? error.message : String(error)})`,\n );\n emitReindexProgress(progressEnabled, \"vector_upsert_fallback built_in_store\");\n await executeVectorUpsert(activeVectorStore, points);\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);\n }\n } else if (activeVectorStore) {\n emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${activeVectorStore.name} points=${points.length}`);\n await executeVectorUpsert(activeVectorStore, points);\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);\n } else {\n throw new PmCliError(\n `No vector upsert executor available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n }\n if (freshDocuments > 0) {\n semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);\n }\n const staleDocumentsById = new Map(staleDocuments.map((document) => [document.metadata.id, document]));\n documentsForKeywordArtifacts = metadataDocuments.map(\n (document) => staleDocumentsById.get(document.metadata.id) ?? document,\n );\n }\n if (staleDocuments.length === 0) {\n await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);\n vectorizationEmbeddingMetadata = ledger.embedding;\n }\n }\n const embeddingsLines = documentsForKeywordArtifacts.map((document) => JSON.stringify(buildKeywordRecord(document, mode))).join(\"\\n\");\n emitReindexProgress(progressEnabled, \"writing keyword artifacts\");\n await writeFileAtomic(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n await writeFileAtomic(embeddingsPath, `${embeddingsLines}\\n`);\n const vectorizationWarnings: string[] = [];\n if (mode !== \"keyword\") {\n try {\n emitReindexProgress(progressEnabled, \"writing vectorization status ledger\");\n await writeVectorizationStatusLedger(pmRoot, vectorizationLedgerEntries, vectorizationEmbeddingMetadata);\n } catch (error: unknown) {\n vectorizationWarnings.push(\n `search_vectorization_status_ledger_write_failed:${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n const hookWarnings = [\n ...(await runActiveOnWriteHooks({\n path: manifestPath,\n scope: \"project\",\n op: \"reindex:manifest\",\n })),\n ...(await runActiveOnWriteHooks({\n path: embeddingsPath,\n scope: \"project\",\n op: \"reindex:embeddings\",\n })),\n ...(await runActiveOnIndexHooks({\n mode,\n total_items: metadataDocuments.length,\n })),\n ];\n emitReindexProgress(progressEnabled, \"done\");\n\n return {\n ok: true,\n mode,\n total_items: metadataDocuments.length,\n semantic: semanticSummary,\n artifacts: {\n manifest: MANIFEST_PATH,\n embeddings: EMBEDDINGS_PATH,\n },\n warnings: [...reindexWarnings, ...semanticWarnings, ...vectorizationWarnings, ...hookWarnings],\n generated_at: generatedAt,\n };\n } finally {\n await releaseReindexLock?.();\n }\n}\n"],"names":[],"mappings":"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","debugId":"8b10a718-9470-5745-96b0-ca5d0e9f6404"}
1
+ {"version":3,"file":"reindex.js","sources":["cli/commands/reindex.ts"],"sourceRoot":"/","sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { getActiveExtensionRegistrations, runActiveOnIndexHooks, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n resolveRegisteredSearchProvider,\n resolveRegisteredVectorStoreAdapter,\n} from \"../../core/extensions/runtime-registrations.js\";\nimport { pathExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { acquireLock } from \"../../core/lock/lock.js\";\nimport {\n buildSearchCorpus,\n buildSemanticCorpusInput,\n resolveSearchCorpusFields,\n resolveSemanticCorpusCharacterLimit,\n} from \"../../core/search/corpus.js\";\nimport { executeEmbeddingBatchesWithRetry } from \"../../core/search/embedding-batches.js\";\nimport { readVectorizationStatusLedger, writeVectorizationStatusLedger } from \"../../core/search/cache.js\";\nimport { REINDEX_LOCK_ID } from \"../../core/search/background-refresh.js\";\nimport { resolveEmbeddingProviders } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { executeVectorDelete, executeVectorReset, executeVectorUpsert, resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n buildVectorizationEmbeddingMetadata,\n hasVectorizationEmbeddingIdentityChanged,\n hasVectorizationVectorDimensionChanged,\n inferConsistentVectorDimension,\n} from \"../../core/search/vectorization-metadata.js\";\nimport type {\n VectorizationEmbeddingIdentity,\n VectorizationEmbeddingMetadata,\n} from \"../../core/search/vectorization-metadata.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllDocumentCandidatesCached, type CachedDocumentCandidate } from \"../../core/store/front-matter-cache.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type { ItemDocument, PmSettings } from \"../../types/index.js\";\n\nconst MANIFEST_PATH = \"index/manifest.json\";\nconst EMBEDDINGS_PATH = \"search/embeddings.jsonl\";\nconst EMBEDDING_MIGRATION_REINDEX_HINT =\n \"Provider or model has changed since last index. Run pm reindex --mode semantic to rebuild.\";\n\nexport interface ReindexOptions {\n mode?: string;\n progress?: boolean;\n full?: boolean;\n}\n\nexport interface ReindexResult {\n ok: boolean;\n mode: \"keyword\" | \"semantic\" | \"hybrid\";\n total_items: number;\n semantic: {\n enabled: boolean;\n stale_items: number;\n unchanged_items: number;\n embedded_items: number;\n vector_upserted: number;\n batches_completed: number;\n };\n artifacts: {\n manifest: string;\n embeddings: string;\n };\n warnings: string[];\n generated_at: string;\n}\n\nfunction shouldEmitReindexProgress(options: ReindexOptions): boolean {\n return options.progress === true || process.stderr.isTTY === true;\n}\n\nfunction emitReindexProgress(enabled: boolean, message: string): void {\n if (!enabled) {\n return;\n }\n try {\n process.stderr.write(`[pm reindex] ${message}\\n`);\n } catch {\n // Ignore transient stderr write failures.\n }\n}\n\nfunction parseMode(raw: string | undefined): \"keyword\" | \"semantic\" | \"hybrid\" {\n const normalized = (raw ?? \"keyword\").trim().toLowerCase();\n if (normalized === \"keyword\") {\n return \"keyword\";\n }\n if (normalized === \"semantic\" || normalized === \"hybrid\") {\n return normalized;\n }\n throw new PmCliError(\"Reindex mode must be one of keyword|semantic|hybrid\", EXIT_CODE.USAGE);\n}\n\nasync function loadDocumentCandidates(\n pmRoot: string,\n itemFormat: \"toon\" | \"json_markdown\",\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ candidates: CachedDocumentCandidate[]; warnings: string[] }> {\n const warnings: string[] = [];\n const candidates = await listAllDocumentCandidatesCached(pmRoot, itemFormat, typeToFolder, warnings, schema);\n return {\n candidates,\n warnings,\n };\n}\n\nasync function hydrateDocuments(\n pmRoot: string,\n candidates: CachedDocumentCandidate[],\n schema: PmSettings[\"schema\"],\n warnings: string[],\n itemIds?: Set<string>,\n): Promise<ItemDocument[]> {\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n const hydrated: ItemDocument[] = [];\n for (const candidate of candidates) {\n if (itemIds && !itemIds.has(candidate.metadata.id)) {\n continue;\n }\n if (typeof candidate.body === \"string\") {\n hydrated.push({\n metadata: candidate.metadata,\n body: candidate.body,\n });\n continue;\n }\n try {\n const raw = await fs.readFile(candidate.item_path, \"utf8\");\n const parsed = parseItemDocument(raw, {\n format: candidate.item_format,\n schema,\n extensionFieldNames,\n onWarning: (warning) => warnings.push(warning),\n });\n hydrated.push({\n metadata: candidate.metadata,\n body: parsed.body,\n });\n } catch {\n warnings.push(`item_list_item_read_failed:${path.relative(pmRoot, candidate.item_path)}`);\n hydrated.push({\n metadata: candidate.metadata,\n body: \"\",\n });\n }\n }\n return hydrated;\n}\n\nfunction buildKeywordRecord(\n document: ItemDocument,\n mode: \"keyword\" | \"semantic\" | \"hybrid\",\n corpusFields?: string[],\n): Record<string, unknown> {\n const item = document.metadata;\n return {\n id: item.id,\n mode,\n updated_at: item.updated_at,\n corpus: buildSearchCorpus(document, { fields: corpusFields }),\n };\n}\n\ntype ExtensionEmbedBatch = (context: {\n inputs: string[];\n settings: PmSettings;\n model: string;\n}) => Promise<number[][]> | number[][];\n\ntype ExtensionEmbedOne = (context: {\n input: string;\n settings: PmSettings;\n model: string;\n}) => Promise<number[]> | number[];\n\ntype ExtensionVectorUpsert = (context: {\n points: Array<{\n id: string;\n vector: number[];\n payload: Record<string, unknown>;\n }>;\n settings: PmSettings;\n}) => Promise<void> | void;\n\ntype ExtensionVectorDelete = (context: {\n ids: string[];\n settings: PmSettings;\n}) => Promise<void> | void;\n\ninterface ExtensionVectorAdapter {\n name: string;\n upsert: ExtensionVectorUpsert;\n delete?: ExtensionVectorDelete;\n}\n\ninterface ReindexEmbeddingExecutionResult {\n vectors: number[][];\n embeddingIdentity: VectorizationEmbeddingIdentity;\n}\n\nconst toOptionalNonEmptyString = toNonEmptyStringOrUndefined;\n\nexport const _testOnly = {\n shouldEmitReindexProgress,\n emitReindexProgress,\n parseMode,\n hydrateDocuments,\n buildKeywordRecord,\n resolveExtensionSearchEmbedding,\n resolveExtensionVectorAdapter,\n assertVector,\n executeExtensionEmbedding,\n resolveExtensionEmbeddingModel,\n resolveReindexEmbeddingIdentity,\n executeReindexEmbedding,\n collectLedgerOrphanIds,\n resetVectorStoreForReindex,\n pruneReindexOrphanVectors,\n};\n\nfunction resolveExtensionSearchEmbedding(\n settings: PmSettings,\n): { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne } | null {\n const registrations = getActiveExtensionRegistrations();\n const providerName = toOptionalNonEmptyString(settings.search?.provider);\n if (!providerName) {\n return null;\n }\n const registration = resolveRegisteredSearchProvider(registrations, providerName);\n if (!registration) {\n return null;\n }\n const runtimeDefinition = registration.runtime_definition ?? registration.definition;\n const name =\n toOptionalNonEmptyString((runtimeDefinition as { name?: unknown }).name) ??\n toOptionalNonEmptyString((registration.definition as { name?: unknown }).name);\n // resolveRegisteredSearchProvider only matches a registration whose normalized\n // runtime/registered definition name equals providerName, so `name` here is always\n // that non-empty value; the guard exists solely to narrow string | undefined.\n /* c8 ignore start -- unreachable: a matched provider registration always carries a normalized name */\n if (!name) {\n return null;\n }\n /* c8 ignore stop */\n const embedBatch = (runtimeDefinition as { embedBatch?: unknown; embed_batch?: unknown }).embedBatch;\n const embedBatchSnake = (runtimeDefinition as { embedBatch?: unknown; embed_batch?: unknown }).embed_batch;\n const embed = (runtimeDefinition as { embed?: unknown }).embed;\n const resolvedEmbedBatch =\n typeof embedBatch === \"function\"\n ? (embedBatch as ExtensionEmbedBatch)\n : typeof embedBatchSnake === \"function\"\n ? (embedBatchSnake as ExtensionEmbedBatch)\n : undefined;\n const resolvedEmbed = typeof embed === \"function\" ? (embed as ExtensionEmbedOne) : undefined;\n if (!resolvedEmbedBatch && !resolvedEmbed) {\n return null;\n }\n return {\n name,\n embedBatch: resolvedEmbedBatch,\n embed: resolvedEmbed,\n };\n}\n\nfunction resolveExtensionVectorAdapter(settings: PmSettings): ExtensionVectorAdapter | null {\n const registrations = getActiveExtensionRegistrations();\n const adapterName = toOptionalNonEmptyString(settings.vector_store?.adapter);\n if (!adapterName) {\n return null;\n }\n const registration = resolveRegisteredVectorStoreAdapter(registrations, adapterName);\n if (!registration) {\n return null;\n }\n const runtimeDefinition = registration.runtime_definition ?? registration.definition;\n const name =\n toOptionalNonEmptyString((runtimeDefinition as { name?: unknown }).name) ??\n toOptionalNonEmptyString((registration.definition as { name?: unknown }).name);\n const upsert = (runtimeDefinition as { upsert?: unknown }).upsert;\n const deleteHandler = (runtimeDefinition as { delete?: unknown }).delete;\n if (!name || typeof upsert !== \"function\") {\n return null;\n }\n return {\n name,\n upsert: upsert as ExtensionVectorUpsert,\n ...(typeof deleteHandler === \"function\" ? { delete: deleteHandler as ExtensionVectorDelete } : {}),\n };\n}\n\nfunction assertVector(value: unknown, context: string): number[] {\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"number\" || !Number.isFinite(entry))) {\n throw new PmCliError(`Invalid vector returned by ${context}`, EXIT_CODE.GENERIC_FAILURE);\n }\n return value;\n}\n\nasync function executeExtensionEmbedding(\n extensionEmbedding: { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne },\n settings: PmSettings,\n corpusInputs: string[],\n): Promise<number[][]> {\n const model = settings.search?.embedding_model?.trim() || \"text-embedding-3-small\";\n if (extensionEmbedding.embedBatch) {\n const vectors = await Promise.resolve(\n extensionEmbedding.embedBatch({\n inputs: corpusInputs,\n settings,\n model,\n }),\n );\n if (!Array.isArray(vectors)) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" embedBatch must return an array of vectors`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n return vectors.map((vector, index) =>\n assertVector(vector, `extension search provider \"${extensionEmbedding.name}\" embedBatch output at index ${index}`),\n );\n }\n if (!extensionEmbedding.embed) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" does not implement embed/embedBatch`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n const vectors: number[][] = [];\n for (const [index, input] of corpusInputs.entries()) {\n const vector = await Promise.resolve(\n extensionEmbedding.embed({\n input,\n settings,\n model,\n }),\n );\n vectors.push(assertVector(vector, `extension search provider \"${extensionEmbedding.name}\" embed output at index ${index}`));\n }\n return vectors;\n}\n\nfunction resolveExtensionEmbeddingModel(settings: PmSettings): string {\n return settings.search?.embedding_model?.trim() || \"text-embedding-3-small\";\n}\n\nfunction resolveReindexEmbeddingIdentity(\n settings: PmSettings,\n activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"],\n extensionEmbedding: { name: string } | null,\n): VectorizationEmbeddingIdentity {\n const identity = extensionEmbedding\n ? buildVectorizationEmbeddingIdentity(extensionEmbedding.name, resolveExtensionEmbeddingModel(settings))\n : activeEmbeddingProvider\n ? buildVectorizationEmbeddingIdentity(activeEmbeddingProvider.name, activeEmbeddingProvider.model)\n : null;\n if (!identity) {\n throw new PmCliError(\n `No embedding identity available for semantic reindex mode`,\n EXIT_CODE.USAGE,\n );\n }\n return identity;\n}\n\nfunction collectLedgerOrphanIds(ledgerEntries: Record<string, string>, currentIds: Set<string>): string[] {\n return Object.keys(ledgerEntries)\n .filter((id) => !currentIds.has(id))\n .sort((left, right) => left.localeCompare(right));\n}\n\nasync function executeReindexEmbedding(\n settings: PmSettings,\n requestedMode: \"keyword\" | \"semantic\" | \"hybrid\",\n activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"],\n extensionEmbedding: { name: string; embedBatch?: ExtensionEmbedBatch; embed?: ExtensionEmbedOne } | null,\n documents: ItemDocument[],\n semanticWarnings: string[],\n semanticSummary: ReindexResult[\"semantic\"],\n progressEnabled: boolean,\n): Promise<ReindexEmbeddingExecutionResult> {\n const semanticProviderName = extensionEmbedding?.name ?? activeEmbeddingProvider?.name;\n const corpusCharacterLimit = resolveSemanticCorpusCharacterLimit(\n semanticProviderName,\n settings.search.embedding_corpus_max_characters,\n ).maxCharacters;\n const corpusFields = resolveSearchCorpusFields(settings);\n const corpusInputs = documents.map((document) =>\n buildSemanticCorpusInput(document, {\n providerName: semanticProviderName,\n maxCharacters: corpusCharacterLimit,\n fields: corpusFields,\n }),\n );\n let vectors: number[][] = [];\n let embeddingIdentity: VectorizationEmbeddingIdentity | null = null;\n if (extensionEmbedding) {\n try {\n vectors = await executeExtensionEmbedding(extensionEmbedding, settings, corpusInputs);\n embeddingIdentity = buildVectorizationEmbeddingIdentity(extensionEmbedding.name, resolveExtensionEmbeddingModel(settings));\n } catch (error: unknown) {\n if (!activeEmbeddingProvider) {\n throw new PmCliError(\n `Extension search provider \"${extensionEmbedding.name}\" failed to generate embeddings: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n semanticWarnings.push(\n `Extension search provider \"${extensionEmbedding.name}\" failed; falling back to built-in provider (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n }\n if (vectors.length === 0) {\n if (!activeEmbeddingProvider) {\n throw new PmCliError(\n `No embedding executor available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n }\n const embeddingResult = await executeEmbeddingBatchesWithRetry(activeEmbeddingProvider, settings, corpusInputs, {\n onProgress: (event) => {\n if (event.phase === \"complete\") {\n semanticSummary.batches_completed = event.batch_index;\n }\n emitReindexProgress(\n progressEnabled,\n `embedding_batch_${event.phase} batch=${event.batch_index}/${event.batch_total} size=${event.batch_size} completed_inputs=${event.completed_inputs}/${event.total_inputs}`,\n );\n },\n });\n semanticWarnings.push(...embeddingResult.warnings);\n vectors = embeddingResult.vectors;\n embeddingIdentity = buildVectorizationEmbeddingIdentity(activeEmbeddingProvider.name, activeEmbeddingProvider.model);\n }\n emitReindexProgress(progressEnabled, `embedding_complete vectors=${vectors.length}`);\n if (vectors.length !== documents.length) {\n throw new PmCliError(\n `Embedding output size mismatch (expected ${documents.length}, received ${vectors.length})`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n if (!embeddingIdentity) {\n throw new PmCliError(\n `No embedding identity available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n }\n return { vectors, embeddingIdentity };\n}\n\nasync function resetVectorStoreForReindex(\n activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"],\n extensionVectorAdapter: ExtensionVectorAdapter | null,\n ledgerEntries: Record<string, string>,\n settings: PmSettings,\n semanticWarnings: string[],\n vectorDimension?: number,\n): Promise<void> {\n const knownIds = Object.keys(ledgerEntries);\n if (extensionVectorAdapter) {\n if (knownIds.length > 0 && extensionVectorAdapter.delete) {\n try {\n await Promise.resolve(extensionVectorAdapter.delete({ ids: knownIds.sort((left, right) => left.localeCompare(right)), settings }));\n } catch (error: unknown) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to delete vectors during reindex reset: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n } else if (knownIds.length > 0) {\n semanticWarnings.push(\n `search_semantic_reindex_reset_skipped:adapter=${extensionVectorAdapter.name}:known_ids=${knownIds.length}`,\n );\n }\n if (!activeVectorStore) {\n return;\n }\n }\n if (activeVectorStore) {\n await executeVectorReset(activeVectorStore, knownIds, {}, vectorDimension);\n }\n}\n\nasync function pruneReindexOrphanVectors(\n activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"],\n extensionVectorAdapter: ExtensionVectorAdapter | null,\n orphanIds: string[],\n settings: PmSettings,\n semanticWarnings: string[],\n): Promise<void> {\n if (orphanIds.length === 0) {\n return;\n }\n if (extensionVectorAdapter) {\n if (extensionVectorAdapter.delete) {\n try {\n await Promise.resolve(extensionVectorAdapter.delete({ ids: orphanIds, settings }));\n } catch (error: unknown) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to delete orphan vectors during reindex: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n } else {\n semanticWarnings.push(\n `search_semantic_reindex_orphan_prune_skipped:adapter=${extensionVectorAdapter.name}:count=${orphanIds.length}`,\n );\n }\n if (!activeVectorStore) {\n return;\n }\n }\n if (activeVectorStore) {\n await executeVectorDelete(activeVectorStore, orphanIds);\n }\n}\n\nexport async function runReindex(options: ReindexOptions, global: GlobalOptions): Promise<ReindexResult> {\n const requestedMode = parseMode(options.mode);\n const progressEnabled = shouldEmitReindexProgress(options);\n const forceFullSemantic = options.full === true;\n emitReindexProgress(progressEnabled, `start mode=${requestedMode}`);\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = resolveSettingsWithSemanticRuntimeDefaults(await readSettings(pmRoot)).settings;\n let releaseReindexLock: (() => Promise<void>) | null = null;\n try {\n releaseReindexLock = await acquireLock(\n pmRoot,\n REINDEX_LOCK_ID,\n settings.locks.ttl_seconds,\n process.env.PM_AUTHOR ?? \"pm-reindex\",\n false,\n settings.governance.force_required_for_stale_lock,\n );\n } catch (error: unknown) {\n if (error instanceof PmCliError && error.exitCode === EXIT_CODE.CONFLICT) {\n throw new PmCliError(\n \"Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.\",\n EXIT_CODE.CONFLICT,\n {\n code: \"reindex_already_running\",\n type: \"urn:pm-cli:error:reindex_already_running\",\n why: \"Semantic reindex can be expensive and duplicate runs compete for the same local embedding model and vector store.\",\n nextSteps: [\n \"Check active pm reindex processes before starting another reindex.\",\n \"Rerun with --progress when you need non-interactive visibility.\",\n ],\n },\n );\n }\n throw error;\n }\n\n try {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const extensionEmbedding = resolveExtensionSearchEmbedding(settings);\n const extensionVectorAdapter = resolveExtensionVectorAdapter(settings);\n let activeEmbeddingProvider: ReturnType<typeof resolveEmbeddingProviders>[\"active\"] = null;\n let activeVectorStore: ReturnType<typeof resolveVectorStores>[\"active\"] = null;\n if (requestedMode !== \"keyword\") {\n const providerResolution = resolveEmbeddingProviders(settings);\n if (!providerResolution.active && !extensionEmbedding) {\n throw new PmCliError(\n `Reindex mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai/settings.providers.ollama or an extension provider selected by settings.search.provider`,\n EXIT_CODE.USAGE,\n );\n }\n const vectorResolution = resolveVectorStores(settings);\n if (!vectorResolution.active && !extensionVectorAdapter) {\n throw new PmCliError(\n `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`,\n EXIT_CODE.USAGE,\n );\n }\n activeEmbeddingProvider = providerResolution.active;\n activeVectorStore = vectorResolution.active;\n }\n const mode = requestedMode;\n emitReindexProgress(progressEnabled, \"loading item corpus\");\n const loadedCandidates = await loadDocumentCandidates(pmRoot, settings.item_format, typeRegistry.type_to_folder, settings.schema);\n const reindexWarnings = [...loadedCandidates.warnings];\n const documentCandidates = loadedCandidates.candidates;\n const metadataDocuments: ItemDocument[] = documentCandidates.map((candidate) => ({\n metadata: candidate.metadata,\n body: typeof candidate.body === \"string\" ? candidate.body : \"\",\n }));\n emitReindexProgress(progressEnabled, `loaded_items=${metadataDocuments.length}`);\n const generatedAt = nowIso();\n\n const manifest = {\n version: 1,\n mode,\n generated_at: generatedAt,\n total_items: metadataDocuments.length,\n items: metadataDocuments.map((document) => ({\n id: document.metadata.id,\n type: document.metadata.type,\n status: document.metadata.status,\n priority: document.metadata.priority,\n updated_at: document.metadata.updated_at,\n })),\n };\n\n const manifestPath = path.join(pmRoot, MANIFEST_PATH);\n const embeddingsPath = path.join(pmRoot, EMBEDDINGS_PATH);\n\n let documentsForKeywordArtifacts =\n mode === \"keyword\"\n ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings)\n : metadataDocuments;\n const semanticWarnings: string[] = [];\n const vectorizationLedgerEntries: Record<string, string> = {};\n let vectorizationEmbeddingMetadata: VectorizationEmbeddingMetadata | null = null;\n const semanticSummary = {\n enabled: mode !== \"keyword\",\n stale_items: 0,\n unchanged_items: 0,\n embedded_items: 0,\n vector_upserted: 0,\n batches_completed: 0,\n };\n if (mode === \"keyword\") {\n const ledger = await readVectorizationStatusLedger(pmRoot);\n reindexWarnings.push(...ledger.warnings);\n if (forceFullSemantic) {\n reindexWarnings.push(\"search_semantic_reindex_full_ignored:mode_keyword\");\n }\n if (ledger.embedding) {\n const currentEmbeddingIdentity = (() => {\n try {\n return resolveReindexEmbeddingIdentity(settings, resolveEmbeddingProviders(settings).active, extensionEmbedding);\n } catch {\n return null;\n }\n })();\n if (currentEmbeddingIdentity && hasVectorizationEmbeddingIdentityChanged(ledger.embedding, currentEmbeddingIdentity)) {\n reindexWarnings.push(\"search_semantic_reindex_requires_rebuild:embedding_identity_changed\");\n reindexWarnings.push(EMBEDDING_MIGRATION_REINDEX_HINT);\n }\n }\n }\n if (mode !== \"keyword\" && metadataDocuments.length > 0) {\n const ledger = await readVectorizationStatusLedger(pmRoot);\n semanticWarnings.push(...ledger.warnings);\n const embeddingIdentity = resolveReindexEmbeddingIdentity(settings, activeEmbeddingProvider, extensionEmbedding);\n const currentIds = new Set(metadataDocuments.map((document) => document.metadata.id));\n const orphanIds = collectLedgerOrphanIds(ledger.entries, currentIds);\n let resetRequired = hasVectorizationEmbeddingIdentityChanged(ledger.embedding, embeddingIdentity);\n if (forceFullSemantic && !resetRequired) {\n semanticWarnings.push(\"search_semantic_reindex_full_rebuild_forced\");\n }\n const staleSourceDocuments =\n forceFullSemantic || resetRequired\n ? metadataDocuments\n : metadataDocuments.filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at);\n let staleIds = new Set(\n staleSourceDocuments.map((document) => document.metadata.id),\n );\n let staleDocuments = staleIds.size > 0\n ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds)\n : [];\n let freshDocuments = metadataDocuments.length - staleDocuments.length;\n semanticSummary.stale_items = staleDocuments.length;\n semanticSummary.unchanged_items = freshDocuments;\n for (const document of metadataDocuments) {\n vectorizationLedgerEntries[document.metadata.id] = document.metadata.updated_at;\n }\n emitReindexProgress(\n progressEnabled,\n `semantic_stale_items stale=${staleDocuments.length} total=${metadataDocuments.length} unchanged=${freshDocuments} full=${forceFullSemantic || resetRequired}`,\n );\n if (staleDocuments.length === 0) {\n emitReindexProgress(progressEnabled, `embedding_skipped unchanged_items=${freshDocuments}`);\n semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);\n } else {\n emitReindexProgress(progressEnabled, `embedding_start items=${staleDocuments.length} unchanged_items=${freshDocuments}`);\n let embeddingResult = await executeReindexEmbedding(\n settings,\n requestedMode,\n activeEmbeddingProvider,\n extensionEmbedding,\n staleDocuments,\n semanticWarnings,\n semanticSummary,\n progressEnabled,\n );\n let vectors = embeddingResult.vectors;\n let actualEmbeddingIdentity = embeddingResult.embeddingIdentity;\n let vectorDimension = inferConsistentVectorDimension(vectors, \"Reindex embeddings\");\n if (\n !resetRequired &&\n (hasVectorizationEmbeddingIdentityChanged(ledger.embedding, actualEmbeddingIdentity) ||\n hasVectorizationVectorDimensionChanged(ledger.embedding, vectorDimension))\n ) {\n resetRequired = true;\n staleIds = new Set(metadataDocuments.map((document) => document.metadata.id));\n staleDocuments = await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds);\n freshDocuments = 0;\n semanticSummary.stale_items = staleDocuments.length;\n semanticSummary.unchanged_items = 0;\n emitReindexProgress(progressEnabled, `embedding_dimension_changed reset_items=${staleDocuments.length}`);\n embeddingResult = await executeReindexEmbedding(\n settings,\n requestedMode,\n activeEmbeddingProvider,\n extensionEmbedding,\n staleDocuments,\n semanticWarnings,\n semanticSummary,\n progressEnabled,\n );\n vectors = embeddingResult.vectors;\n actualEmbeddingIdentity = embeddingResult.embeddingIdentity;\n vectorDimension = inferConsistentVectorDimension(vectors, \"Reindex embeddings\");\n }\n if (resetRequired) {\n emitReindexProgress(progressEnabled, \"vector_reset_start\");\n await resetVectorStoreForReindex(\n activeVectorStore,\n extensionVectorAdapter,\n ledger.entries,\n settings,\n semanticWarnings,\n ledger.embedding ? vectorDimension : undefined,\n );\n emitReindexProgress(progressEnabled, \"vector_reset_complete\");\n } else {\n await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);\n }\n vectorizationEmbeddingMetadata = buildVectorizationEmbeddingMetadata(actualEmbeddingIdentity, vectorDimension);\n const points = staleDocuments.map((document, index) => ({\n id: document.metadata.id,\n vector: assertVector(vectors[index], `reindex embeddings output at index ${index}`),\n payload: {\n id: document.metadata.id,\n type: document.metadata.type,\n status: document.metadata.status,\n priority: document.metadata.priority,\n updated_at: document.metadata.updated_at,\n },\n }));\n semanticSummary.embedded_items = vectors.length;\n /* c8 ignore start -- semantic preflight guarantees a vector upsert executor path */\n if (extensionVectorAdapter) {\n try {\n emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${extensionVectorAdapter.name} points=${points.length}`);\n await Promise.resolve(\n extensionVectorAdapter.upsert({\n points,\n settings,\n }),\n );\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${extensionVectorAdapter.name}`);\n } catch (error: unknown) {\n if (!activeVectorStore) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed to upsert vectors: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n semanticWarnings.push(\n `Extension vector adapter \"${extensionVectorAdapter.name}\" failed; falling back to built-in vector store (${error instanceof Error ? error.message : String(error)})`,\n );\n emitReindexProgress(progressEnabled, \"vector_upsert_fallback built_in_store\");\n await executeVectorUpsert(activeVectorStore, points);\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);\n }\n } else if (activeVectorStore) {\n emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${activeVectorStore.name} points=${points.length}`);\n await executeVectorUpsert(activeVectorStore, points);\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${activeVectorStore.name}`);\n } else {\n /* c8 ignore start -- guarded by semantic-mode provider/vector-store preflight above */\n throw new PmCliError(\n `No vector upsert executor available for reindex mode '${requestedMode}'`,\n EXIT_CODE.USAGE,\n );\n /* c8 ignore stop */\n }\n /* c8 ignore stop */\n if (freshDocuments > 0) {\n semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${freshDocuments}`);\n }\n const staleDocumentsById = new Map(staleDocuments.map((document) => [document.metadata.id, document]));\n documentsForKeywordArtifacts = metadataDocuments.map(\n (document) => staleDocumentsById.get(document.metadata.id) ?? document,\n );\n }\n if (staleDocuments.length === 0) {\n await pruneReindexOrphanVectors(activeVectorStore, extensionVectorAdapter, orphanIds, settings, semanticWarnings);\n vectorizationEmbeddingMetadata = ledger.embedding;\n }\n }\n const keywordCorpusFields = resolveSearchCorpusFields(settings);\n const embeddingsLines = documentsForKeywordArtifacts\n .map((document) => JSON.stringify(buildKeywordRecord(document, mode, keywordCorpusFields)))\n .join(\"\\n\");\n emitReindexProgress(progressEnabled, \"writing keyword artifacts\");\n await writeFileAtomic(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n await writeFileAtomic(embeddingsPath, `${embeddingsLines}\\n`);\n const vectorizationWarnings: string[] = [];\n if (mode !== \"keyword\") {\n try {\n emitReindexProgress(progressEnabled, \"writing vectorization status ledger\");\n await writeVectorizationStatusLedger(pmRoot, vectorizationLedgerEntries, vectorizationEmbeddingMetadata);\n } catch (error: unknown) {\n vectorizationWarnings.push(\n `search_vectorization_status_ledger_write_failed:${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n const hookWarnings = [\n ...(await runActiveOnWriteHooks({\n path: manifestPath,\n scope: \"project\",\n op: \"reindex:manifest\",\n })),\n ...(await runActiveOnWriteHooks({\n path: embeddingsPath,\n scope: \"project\",\n op: \"reindex:embeddings\",\n })),\n ...(await runActiveOnIndexHooks({\n mode,\n total_items: metadataDocuments.length,\n })),\n ];\n emitReindexProgress(progressEnabled, \"done\");\n\n return {\n ok: true,\n mode,\n total_items: metadataDocuments.length,\n semantic: semanticSummary,\n artifacts: {\n manifest: MANIFEST_PATH,\n embeddings: EMBEDDINGS_PATH,\n },\n warnings: [...reindexWarnings, ...semanticWarnings, ...vectorizationWarnings, ...hookWarnings],\n generated_at: generatedAt,\n };\n } finally {\n await releaseReindexLock?.();\n }\n}\n"],"names":[],"mappings":"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","debugId":"2ad2d609-875e-582b-8ad4-362bc75c62f3"}
@@ -1,5 +1,19 @@
1
+ import { type ReplayDocument as CanonicalReplayDocument } from "../../core/history/replay.js";
1
2
  import type { GlobalOptions } from "../../core/shared/command-types.js";
2
- import type { ItemMetadata } from "../../types/index.js";
3
+ import { locateItem } from "../../core/store/item-store.js";
4
+ import { readSettings } from "../../core/store/settings.js";
5
+ import type { HistoryEntry, HistoryPatchOp, ItemDocument, ItemMetadata } from "../../types/index.js";
6
+ interface ResolvedRestoreTarget {
7
+ kind: "version" | "timestamp";
8
+ raw: string;
9
+ historyIndex: number;
10
+ }
11
+ interface ResolvedRestoreSubject {
12
+ id: string;
13
+ historyPath: string;
14
+ located: Awaited<ReturnType<typeof locateItem>>;
15
+ historyPolicyWarnings: string[];
16
+ }
3
17
  export interface RestoreCommandOptions {
4
18
  author?: string;
5
19
  message?: string;
@@ -17,4 +31,29 @@ export interface RestoreResult {
17
31
  changed_fields: string[];
18
32
  warnings: string[];
19
33
  }
34
+ declare function ensureReplayTarget(target: string, history: HistoryEntry[]): ResolvedRestoreTarget;
35
+ declare function extractPatchFailureContext(patch: HistoryPatchOp[], error: unknown): {
36
+ patchIndex?: number;
37
+ op?: string;
38
+ path?: string;
39
+ from?: string;
40
+ reason?: string;
41
+ };
42
+ declare function applyHistoryPatch(current: CanonicalReplayDocument, patch: HistoryPatchOp[], entryNumber: number, entryOp: string): CanonicalReplayDocument;
43
+ declare function replayToTarget(history: HistoryEntry[], targetIndex: number): CanonicalReplayDocument;
44
+ declare function ensureMaterializedRestoreTarget(replayDocument: CanonicalReplayDocument, target: ResolvedRestoreTarget): CanonicalReplayDocument;
45
+ declare function replayCurrentDocument(history: HistoryEntry[]): ItemDocument;
46
+ declare function resolveRestoreSubject(pmRoot: string, id: string, settings: Awaited<ReturnType<typeof readSettings>>, typeToFolder: Record<string, string>): Promise<ResolvedRestoreSubject>;
47
+ declare function changedFields(beforeDocument: ItemDocument, afterDocument: ItemDocument): string[];
20
48
  export declare function runRestore(id: string, target: string, options: RestoreCommandOptions, global: GlobalOptions): Promise<RestoreResult>;
49
+ export declare const _testOnlyRestoreCommand: {
50
+ applyHistoryPatch: typeof applyHistoryPatch;
51
+ changedFields: typeof changedFields;
52
+ ensureMaterializedRestoreTarget: typeof ensureMaterializedRestoreTarget;
53
+ ensureReplayTarget: typeof ensureReplayTarget;
54
+ extractPatchFailureContext: typeof extractPatchFailureContext;
55
+ replayCurrentDocument: typeof replayCurrentDocument;
56
+ replayToTarget: typeof replayToTarget;
57
+ resolveRestoreSubject: typeof resolveRestoreSubject;
58
+ };
59
+ export {};