@unbrained/pm-cli 2026.5.30 → 2026.6.5

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 (578) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/dist/cli/argv-utils.js +7 -3
  3. package/dist/cli/argv-utils.js.map +1 -1
  4. package/dist/cli/bootstrap-args.d.ts +1 -0
  5. package/dist/cli/bootstrap-args.js +23 -3
  6. package/dist/cli/bootstrap-args.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +96 -10
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.d.ts +63 -0
  10. package/dist/cli/commands/close-many.js +302 -0
  11. package/dist/cli/commands/close-many.js.map +1 -0
  12. package/dist/cli/commands/completion.d.ts +1 -0
  13. package/dist/cli/commands/completion.js +241 -27
  14. package/dist/cli/commands/completion.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +4 -4
  16. package/dist/cli/commands/config.js +115 -3
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/contracts.js +191 -162
  19. package/dist/cli/commands/contracts.js.map +1 -1
  20. package/dist/cli/commands/create.d.ts +1 -0
  21. package/dist/cli/commands/create.js +109 -116
  22. package/dist/cli/commands/create.js.map +1 -1
  23. package/dist/cli/commands/extension/doctor.d.ts +12 -0
  24. package/dist/cli/commands/extension/doctor.js +97 -2
  25. package/dist/cli/commands/extension/doctor.js.map +1 -1
  26. package/dist/cli/commands/extension/install-sources.d.ts +2 -0
  27. package/dist/cli/commands/extension/install-sources.js +11 -4
  28. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  29. package/dist/cli/commands/extension/scaffold.js +49 -48
  30. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  31. package/dist/cli/commands/extension.js +51 -23
  32. package/dist/cli/commands/extension.js.map +1 -1
  33. package/dist/cli/commands/get.js +7 -7
  34. package/dist/cli/commands/get.js.map +1 -1
  35. package/dist/cli/commands/health.js +38 -3
  36. package/dist/cli/commands/health.js.map +1 -1
  37. package/dist/cli/commands/index.d.ts +2 -1
  38. package/dist/cli/commands/index.js +4 -3
  39. package/dist/cli/commands/index.js.map +1 -1
  40. package/dist/cli/commands/init.d.ts +10 -0
  41. package/dist/cli/commands/init.js +107 -4
  42. package/dist/cli/commands/init.js.map +1 -1
  43. package/dist/cli/commands/list.d.ts +5 -0
  44. package/dist/cli/commands/list.js +58 -26
  45. package/dist/cli/commands/list.js.map +1 -1
  46. package/dist/cli/commands/reindex.js +164 -48
  47. package/dist/cli/commands/reindex.js.map +1 -1
  48. package/dist/cli/commands/repeatable-metadata-parsers.d.ts +15 -0
  49. package/dist/cli/commands/repeatable-metadata-parsers.js +120 -0
  50. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -0
  51. package/dist/cli/commands/restore.js +25 -4
  52. package/dist/cli/commands/restore.js.map +1 -1
  53. package/dist/cli/commands/schema.d.ts +122 -1
  54. package/dist/cli/commands/schema.js +536 -6
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +18 -0
  57. package/dist/cli/commands/search.js +56 -12
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/test.js +4 -3
  60. package/dist/cli/commands/test.js.map +1 -1
  61. package/dist/cli/commands/update-many.js +69 -140
  62. package/dist/cli/commands/update-many.js.map +1 -1
  63. package/dist/cli/commands/update.d.ts +2 -0
  64. package/dist/cli/commands/update.js +138 -119
  65. package/dist/cli/commands/update.js.map +1 -1
  66. package/dist/cli/commands/validate.d.ts +1 -0
  67. package/dist/cli/commands/validate.js +63 -33
  68. package/dist/cli/commands/validate.js.map +1 -1
  69. package/dist/cli/error-guidance.js +26 -3
  70. package/dist/cli/error-guidance.js.map +1 -1
  71. package/dist/cli/help-content.js +82 -3
  72. package/dist/cli/help-content.js.map +1 -1
  73. package/dist/cli/main.js +377 -23
  74. package/dist/cli/main.js.map +1 -1
  75. package/dist/cli/register-list-query.js +16 -12
  76. package/dist/cli/register-list-query.js.map +1 -1
  77. package/dist/cli/register-mutation.js +217 -47
  78. package/dist/cli/register-mutation.js.map +1 -1
  79. package/dist/cli/register-operations.js +34 -25
  80. package/dist/cli/register-operations.js.map +1 -1
  81. package/dist/cli/register-setup.js +8 -8
  82. package/dist/cli/register-setup.js.map +1 -1
  83. package/dist/cli/registration-helpers.js +35 -5
  84. package/dist/cli/registration-helpers.js.map +1 -1
  85. package/dist/cli/search-refresh.d.ts +2 -0
  86. package/dist/cli/search-refresh.js +13 -0
  87. package/dist/cli/search-refresh.js.map +1 -0
  88. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js +20 -0
  89. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js.map +1 -0
  90. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js +16 -0
  91. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js.map +7 -0
  92. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js +206 -0
  93. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js.map +1 -0
  94. package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js +209 -0
  95. package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js.map +7 -0
  96. package/dist/cli-bundle/chunks/append-5JE3YGXU.js +72 -0
  97. package/dist/cli-bundle/chunks/append-5JE3YGXU.js.map +7 -0
  98. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js +69 -0
  99. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js.map +1 -0
  100. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js +218 -0
  101. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js.map +1 -0
  102. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js +27 -0
  103. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js.map +7 -0
  104. package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js +761 -0
  105. package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js.map +7 -0
  106. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js +5553 -0
  107. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js.map +1 -0
  108. package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js +634 -0
  109. package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js.map +7 -0
  110. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js +1832 -0
  111. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js.map +1 -0
  112. package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js +1891 -0
  113. package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js.map +7 -0
  114. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js +412 -0
  115. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js.map +1 -0
  116. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js +182 -0
  117. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js.map +1 -0
  118. package/dist/cli-bundle/chunks/chunk-7K24QB23.js +698 -0
  119. package/dist/cli-bundle/chunks/chunk-7K24QB23.js.map +1 -0
  120. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js +380 -0
  121. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js.map +1 -0
  122. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js +230 -0
  123. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js.map +1 -0
  124. package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js +185 -0
  125. package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js.map +7 -0
  126. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js +332 -0
  127. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js.map +1 -0
  128. package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js +1681 -0
  129. package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{chunk-PB2YU2E3.js → chunk-BNL6S7QH.js} +28 -70
  131. package/dist/cli-bundle/chunks/chunk-BNL6S7QH.js.map +7 -0
  132. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js +154 -0
  133. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js.map +1 -0
  134. package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js +341 -0
  135. package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js.map +7 -0
  136. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js +1340 -0
  137. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js.map +1 -0
  138. package/dist/cli-bundle/chunks/chunk-D3WUNETC.js +349 -0
  139. package/dist/cli-bundle/chunks/chunk-D3WUNETC.js.map +7 -0
  140. package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js +1714 -0
  141. package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js.map +7 -0
  142. package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js +550 -0
  143. package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js.map +7 -0
  144. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js +1704 -0
  145. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js.map +1 -0
  146. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +56 -0
  147. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +7 -0
  148. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js +2988 -0
  149. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js.map +1 -0
  150. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js +128 -0
  151. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js.map +1 -0
  152. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js +454 -0
  153. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js.map +1 -0
  154. package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js +383 -0
  155. package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js.map +7 -0
  156. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js +57 -0
  157. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js.map +1 -0
  158. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js +3860 -0
  159. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js.map +1 -0
  160. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js +346 -0
  161. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js.map +1 -0
  162. package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js +1356 -0
  163. package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js.map +7 -0
  164. package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js +342 -0
  165. package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js.map +7 -0
  166. package/dist/cli-bundle/chunks/chunk-IUV734HF.js +17 -0
  167. package/dist/cli-bundle/chunks/chunk-IUV734HF.js.map +1 -0
  168. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js +15 -0
  169. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js.map +1 -0
  170. package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js +185 -0
  171. package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js.map +7 -0
  172. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js +130 -0
  173. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js.map +1 -0
  174. package/dist/cli-bundle/chunks/chunk-K47WAYQV.js +60 -0
  175. package/dist/cli-bundle/chunks/chunk-K47WAYQV.js.map +7 -0
  176. package/dist/cli-bundle/chunks/chunk-KA24HME7.js +79 -0
  177. package/dist/cli-bundle/chunks/chunk-KA24HME7.js.map +7 -0
  178. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js +1325 -0
  179. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js.map +1 -0
  180. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js +242 -0
  181. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js.map +1 -0
  182. package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js +221 -0
  183. package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js.map +7 -0
  184. package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js +157 -0
  185. package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js.map +7 -0
  186. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js +24 -0
  187. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js.map +1 -0
  188. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js +80 -0
  189. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js.map +1 -0
  190. package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js +457 -0
  191. package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js.map +7 -0
  192. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js +173 -0
  193. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js.map +1 -0
  194. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js +338 -0
  195. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js.map +1 -0
  196. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js +18 -0
  197. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js.map +7 -0
  198. package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js +3040 -0
  199. package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js.map +7 -0
  200. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js +751 -0
  201. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js +1861 -0
  203. package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js.map +7 -0
  204. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js +20 -0
  205. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js.map +7 -0
  206. package/dist/cli-bundle/chunks/chunk-RANZIID5.js +176 -0
  207. package/dist/cli-bundle/chunks/chunk-RANZIID5.js.map +7 -0
  208. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js +140 -0
  209. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js.map +7 -0
  210. package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js +233 -0
  211. package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js.map +7 -0
  212. package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js +5705 -0
  213. package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js.map +7 -0
  214. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js +76 -0
  215. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js.map +1 -0
  216. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js +631 -0
  217. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js.map +1 -0
  218. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js +540 -0
  219. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js.map +1 -0
  220. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js +422 -0
  221. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js.map +7 -0
  222. package/dist/cli-bundle/chunks/{chunk-RJONRNXN.js → chunk-TK633IVD.js} +51 -32
  223. package/dist/cli-bundle/chunks/chunk-TK633IVD.js.map +7 -0
  224. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js +131 -0
  225. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js.map +7 -0
  226. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js +119 -0
  227. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js.map +1 -0
  228. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js +1664 -0
  229. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js.map +1 -0
  230. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js +186 -0
  231. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js.map +1 -0
  232. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js +182 -0
  233. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js.map +1 -0
  234. package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js +189 -0
  235. package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js.map +7 -0
  236. package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js +1385 -0
  237. package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js.map +7 -0
  238. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +53 -0
  239. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +1 -0
  240. package/dist/cli-bundle/chunks/chunk-XX5LRINW.js +90 -0
  241. package/dist/cli-bundle/chunks/chunk-XX5LRINW.js.map +7 -0
  242. package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js +252 -0
  243. package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js.map +7 -0
  244. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js +3898 -0
  245. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js.map +7 -0
  246. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js +1809 -0
  247. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js.map +1 -0
  248. package/dist/cli-bundle/chunks/claim-AZLP7YFO.js +132 -0
  249. package/dist/cli-bundle/chunks/claim-AZLP7YFO.js.map +7 -0
  250. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js +129 -0
  251. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js.map +1 -0
  252. package/dist/cli-bundle/chunks/close-65DFYAVS.js +17 -0
  253. package/dist/cli-bundle/chunks/close-65DFYAVS.js.map +1 -0
  254. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js +13 -0
  255. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js.map +7 -0
  256. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js +311 -0
  257. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js.map +1 -0
  258. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js +314 -0
  259. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js.map +7 -0
  260. package/dist/cli-bundle/chunks/comments-AGBNSJJH.js +103 -0
  261. package/dist/cli-bundle/chunks/comments-AGBNSJJH.js.map +7 -0
  262. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js +100 -0
  263. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-5ON3ADRH.js +1688 -0
  265. package/dist/cli-bundle/chunks/config-5ON3ADRH.js.map +7 -0
  266. package/dist/cli-bundle/chunks/config-DDPYIA6J.js +1671 -0
  267. package/dist/cli-bundle/chunks/config-DDPYIA6J.js.map +1 -0
  268. package/dist/cli-bundle/chunks/context-E6U3DWVM.js +1471 -0
  269. package/dist/cli-bundle/chunks/context-E6U3DWVM.js.map +7 -0
  270. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js +1461 -0
  271. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js.map +1 -0
  272. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js +1277 -0
  273. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js.map +7 -0
  274. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js +1274 -0
  275. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js.map +1 -0
  276. package/dist/cli-bundle/chunks/create-ATONSAZW.js +27 -0
  277. package/dist/cli-bundle/chunks/create-ATONSAZW.js.map +7 -0
  278. package/dist/cli-bundle/chunks/create-WYFKN2U4.js +31 -0
  279. package/dist/cli-bundle/chunks/create-WYFKN2U4.js.map +1 -0
  280. package/dist/cli-bundle/chunks/delete-RONNH4F4.js +58 -0
  281. package/dist/cli-bundle/chunks/delete-RONNH4F4.js.map +7 -0
  282. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js +55 -0
  283. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js.map +1 -0
  284. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js +225 -0
  285. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js.map +1 -0
  286. package/dist/cli-bundle/chunks/deps-WII3O4HB.js +228 -0
  287. package/dist/cli-bundle/chunks/deps-WII3O4HB.js.map +7 -0
  288. package/dist/cli-bundle/chunks/docs-JMVCFNHH.js +34 -0
  289. package/dist/cli-bundle/chunks/docs-JMVCFNHH.js.map +7 -0
  290. package/dist/cli-bundle/chunks/docs-PDREIMLS.js +31 -0
  291. package/dist/cli-bundle/chunks/docs-PDREIMLS.js.map +1 -0
  292. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js +28 -0
  293. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js.map +1 -0
  294. package/dist/cli-bundle/chunks/extension-G6UXSM5S.js +24 -0
  295. package/dist/cli-bundle/chunks/extension-G6UXSM5S.js.map +7 -0
  296. package/dist/cli-bundle/chunks/files-2PN7UM2D.js +282 -0
  297. package/dist/cli-bundle/chunks/files-2PN7UM2D.js.map +1 -0
  298. package/dist/cli-bundle/chunks/files-MXYS5W4M.js +285 -0
  299. package/dist/cli-bundle/chunks/files-MXYS5W4M.js.map +7 -0
  300. package/dist/cli-bundle/chunks/gc-GT552UJH.js +178 -0
  301. package/dist/cli-bundle/chunks/gc-GT552UJH.js.map +1 -0
  302. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js +181 -0
  303. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js.map +7 -0
  304. package/dist/cli-bundle/chunks/get-CINFEUIY.js +197 -0
  305. package/dist/cli-bundle/chunks/get-CINFEUIY.js.map +7 -0
  306. package/dist/cli-bundle/chunks/get-WXMLRG7M.js +194 -0
  307. package/dist/cli-bundle/chunks/get-WXMLRG7M.js.map +1 -0
  308. package/dist/cli-bundle/chunks/health-5VPOJQ53.js +1258 -0
  309. package/dist/cli-bundle/chunks/health-5VPOJQ53.js.map +1 -0
  310. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js +1261 -0
  311. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js.map +7 -0
  312. package/dist/cli-bundle/chunks/history-6FC4H6HI.js +20 -0
  313. package/dist/cli-bundle/chunks/history-6FC4H6HI.js.map +7 -0
  314. package/dist/cli-bundle/chunks/history-FLZIP7PM.js +24 -0
  315. package/dist/cli-bundle/chunks/history-FLZIP7PM.js.map +1 -0
  316. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js +23 -0
  317. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js.map +1 -0
  318. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js +19 -0
  319. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js.map +7 -0
  320. package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js +196 -0
  321. package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js.map +7 -0
  322. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js +193 -0
  323. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js.map +1 -0
  324. package/dist/cli-bundle/chunks/init-6MRFVOLH.js +20 -0
  325. package/dist/cli-bundle/chunks/init-6MRFVOLH.js.map +1 -0
  326. package/dist/cli-bundle/chunks/init-KHX3FEEM.js +16 -0
  327. package/dist/cli-bundle/chunks/init-KHX3FEEM.js.map +7 -0
  328. package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js +47 -0
  329. package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js.map +7 -0
  330. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js +44 -0
  331. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js.map +1 -0
  332. package/dist/cli-bundle/chunks/list-53LZ2AEO.js +20 -0
  333. package/dist/cli-bundle/chunks/list-53LZ2AEO.js.map +7 -0
  334. package/dist/cli-bundle/chunks/list-DBRECOG4.js +24 -0
  335. package/dist/cli-bundle/chunks/list-DBRECOG4.js.map +1 -0
  336. package/dist/cli-bundle/chunks/notes-42LIC3UE.js +47 -0
  337. package/dist/cli-bundle/chunks/notes-42LIC3UE.js.map +7 -0
  338. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js +44 -0
  339. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js.map +1 -0
  340. package/dist/cli-bundle/chunks/plan-HDQXEUKD.js +1174 -0
  341. package/dist/cli-bundle/chunks/plan-HDQXEUKD.js.map +7 -0
  342. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js +1171 -0
  343. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-list-query-EIVQ5FMR.js → register-list-query-AG3XKXWL.js} +25 -18
  345. package/dist/cli-bundle/chunks/register-list-query-AG3XKXWL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js +227 -0
  347. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js.map +1 -0
  348. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js +813 -0
  349. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js.map +1 -0
  350. package/dist/cli-bundle/chunks/{register-mutation-RSZNPSGI.js → register-mutation-RSMT6DPK.js} +160 -39
  351. package/dist/cli-bundle/chunks/register-mutation-RSMT6DPK.js.map +7 -0
  352. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js +370 -0
  353. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js.map +1 -0
  354. package/dist/cli-bundle/chunks/{register-operations-APUSYDMR.js → register-operations-Q54JQZUN.js} +50 -32
  355. package/dist/cli-bundle/chunks/register-operations-Q54JQZUN.js.map +7 -0
  356. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js +242 -0
  357. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js.map +1 -0
  358. package/dist/cli-bundle/chunks/{register-setup-OZOKSMPJ.js → register-setup-YJKIQRKA.js} +21 -13
  359. package/dist/cli-bundle/chunks/register-setup-YJKIQRKA.js.map +7 -0
  360. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js +21 -0
  361. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js.map +1 -0
  362. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js +17 -0
  363. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js.map +7 -0
  364. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js +770 -0
  365. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js.map +1 -0
  366. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js +780 -0
  367. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js.map +7 -0
  368. package/dist/cli-bundle/chunks/search-5A3BMFA7.js +1144 -0
  369. package/dist/cli-bundle/chunks/search-5A3BMFA7.js.map +7 -0
  370. package/dist/cli-bundle/chunks/search-C7NPB7G7.js +1127 -0
  371. package/dist/cli-bundle/chunks/search-C7NPB7G7.js.map +1 -0
  372. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js +120 -0
  373. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js.map +1 -0
  374. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js +123 -0
  375. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js.map +7 -0
  376. package/dist/cli-bundle/chunks/test-OFYONO3C.js +35 -0
  377. package/dist/cli-bundle/chunks/test-OFYONO3C.js.map +1 -0
  378. package/dist/cli-bundle/chunks/test-RJ4ZF35X.js +31 -0
  379. package/dist/cli-bundle/chunks/test-RJ4ZF35X.js.map +7 -0
  380. package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js +331 -0
  381. package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js.map +7 -0
  382. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js +328 -0
  383. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js.map +1 -0
  384. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js +929 -0
  385. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js.map +1 -0
  386. package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js +939 -0
  387. package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js.map +7 -0
  388. package/dist/cli-bundle/chunks/update-6YEHPVXH.js +25 -0
  389. package/dist/cli-bundle/chunks/update-6YEHPVXH.js.map +1 -0
  390. package/dist/cli-bundle/chunks/update-PYLVHMRD.js +21 -0
  391. package/dist/cli-bundle/chunks/update-PYLVHMRD.js.map +7 -0
  392. package/dist/cli-bundle/chunks/update-many-322CCH2L.js +608 -0
  393. package/dist/cli-bundle/chunks/update-many-322CCH2L.js.map +7 -0
  394. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js +605 -0
  395. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js.map +1 -0
  396. package/dist/cli-bundle/chunks/upgrade-2U727SAM.js +269 -0
  397. package/dist/cli-bundle/chunks/upgrade-2U727SAM.js.map +7 -0
  398. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js +266 -0
  399. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js.map +1 -0
  400. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js +1120 -0
  401. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js.map +1 -0
  402. package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js +1123 -0
  403. package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js.map +7 -0
  404. package/dist/cli-bundle/main.js +615 -121
  405. package/dist/cli-bundle/main.js.map +4 -4
  406. package/dist/core/checkpoint/mutation-checkpoint.d.ts +44 -0
  407. package/dist/core/checkpoint/mutation-checkpoint.js +119 -0
  408. package/dist/core/checkpoint/mutation-checkpoint.js.map +1 -0
  409. package/dist/core/config/positional-value.js +4 -2
  410. package/dist/core/config/positional-value.js.map +1 -1
  411. package/dist/core/diagnostics/remediation.d.ts +73 -0
  412. package/dist/core/diagnostics/remediation.js +328 -0
  413. package/dist/core/diagnostics/remediation.js.map +1 -0
  414. package/dist/core/extensions/extension-hook-runtime.js +9 -2
  415. package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
  416. package/dist/core/extensions/extension-types.d.ts +60 -4
  417. package/dist/core/extensions/extension-types.js +2 -2
  418. package/dist/core/extensions/extension-types.js.map +1 -1
  419. package/dist/core/extensions/index.d.ts +5 -1
  420. package/dist/core/extensions/index.js +61 -2
  421. package/dist/core/extensions/index.js.map +1 -1
  422. package/dist/core/extensions/item-fields.d.ts +5 -1
  423. package/dist/core/extensions/item-fields.js +126 -4
  424. package/dist/core/extensions/item-fields.js.map +1 -1
  425. package/dist/core/extensions/loader.js +283 -8
  426. package/dist/core/extensions/loader.js.map +1 -1
  427. package/dist/core/item/item-format.d.ts +3 -2
  428. package/dist/core/item/item-format.js +15 -10
  429. package/dist/core/item/item-format.js.map +1 -1
  430. package/dist/core/item/item-type-definition.js +6 -2
  431. package/dist/core/item/item-type-definition.js.map +1 -1
  432. package/dist/core/item/status-filter.d.ts +29 -0
  433. package/dist/core/item/status-filter.js +97 -0
  434. package/dist/core/item/status-filter.js.map +1 -0
  435. package/dist/core/item/type-registry.d.ts +4 -0
  436. package/dist/core/item/type-registry.js +12 -2
  437. package/dist/core/item/type-registry.js.map +1 -1
  438. package/dist/core/output/output.js +17 -5
  439. package/dist/core/output/output.js.map +1 -1
  440. package/dist/core/schema/item-types-file.d.ts +15 -0
  441. package/dist/core/schema/item-types-file.js +27 -2
  442. package/dist/core/schema/item-types-file.js.map +1 -1
  443. package/dist/core/schema/runtime-field-filters.js +4 -3
  444. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  445. package/dist/core/schema/runtime-field-values.d.ts +1 -1
  446. package/dist/core/schema/runtime-field-values.js +10 -4
  447. package/dist/core/schema/runtime-field-values.js.map +1 -1
  448. package/dist/core/schema/runtime-schema.js +75 -2
  449. package/dist/core/schema/runtime-schema.js.map +1 -1
  450. package/dist/core/schema/status-defs-file.d.ts +113 -0
  451. package/dist/core/schema/status-defs-file.js +260 -0
  452. package/dist/core/schema/status-defs-file.js.map +1 -0
  453. package/dist/core/schema/type-workflows.d.ts +64 -0
  454. package/dist/core/schema/type-workflows.js +98 -0
  455. package/dist/core/schema/type-workflows.js.map +1 -0
  456. package/dist/core/search/background-refresh.d.ts +53 -0
  457. package/dist/core/search/background-refresh.js +286 -0
  458. package/dist/core/search/background-refresh.js.map +1 -0
  459. package/dist/core/search/cache.d.ts +23 -2
  460. package/dist/core/search/cache.js +135 -30
  461. package/dist/core/search/cache.js.map +1 -1
  462. package/dist/core/search/http-client.d.ts +2 -2
  463. package/dist/core/search/http-client.js +2 -2
  464. package/dist/core/search/http-client.js.map +1 -1
  465. package/dist/core/search/vector-stores.d.ts +1 -0
  466. package/dist/core/search/vector-stores.js +69 -15
  467. package/dist/core/search/vector-stores.js.map +1 -1
  468. package/dist/core/search/vectorization-metadata.d.ts +13 -0
  469. package/dist/core/search/vectorization-metadata.js +65 -0
  470. package/dist/core/search/vectorization-metadata.js.map +1 -0
  471. package/dist/core/shared/constants.d.ts +2 -2
  472. package/dist/core/shared/constants.js +2 -3
  473. package/dist/core/shared/constants.js.map +1 -1
  474. package/dist/core/shared/serialization.d.ts +1 -0
  475. package/dist/core/shared/serialization.js +86 -2
  476. package/dist/core/shared/serialization.js.map +1 -1
  477. package/dist/core/store/front-matter-cache.js +14 -5
  478. package/dist/core/store/front-matter-cache.js.map +1 -1
  479. package/dist/core/store/item-format-migration.js +25 -15
  480. package/dist/core/store/item-format-migration.js.map +1 -1
  481. package/dist/core/store/item-store.d.ts +2 -0
  482. package/dist/core/store/item-store.js +61 -6
  483. package/dist/core/store/item-store.js.map +1 -1
  484. package/dist/core/store/settings-validator.js +22 -2
  485. package/dist/core/store/settings-validator.js.map +1 -1
  486. package/dist/core/store/settings.js +40 -5
  487. package/dist/core/store/settings.js.map +1 -1
  488. package/dist/core/telemetry/consent.js +3 -3
  489. package/dist/core/telemetry/consent.js.map +1 -1
  490. package/dist/core/telemetry/observability.js +4 -3
  491. package/dist/core/telemetry/observability.js.map +1 -1
  492. package/dist/core/telemetry/runtime.d.ts +10 -0
  493. package/dist/core/telemetry/runtime.js +86 -2
  494. package/dist/core/telemetry/runtime.js.map +1 -1
  495. package/dist/mcp/server.js +221 -12
  496. package/dist/mcp/server.js.map +1 -1
  497. package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -2
  498. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  499. package/dist/sdk/cli-contracts/commander-types.js +7 -2
  500. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  501. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  502. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  503. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  504. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -0
  505. package/dist/sdk/cli-contracts/tool-option-contracts.js +53 -3
  506. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  507. package/dist/sdk/cli-contracts/tool-parameter-tables.js +37 -8
  508. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  509. package/dist/sdk/cli-contracts.d.ts +19 -1
  510. package/dist/sdk/cli-contracts.js +211 -18
  511. package/dist/sdk/cli-contracts.js.map +1 -1
  512. package/dist/sdk/errors.d.ts +22 -0
  513. package/dist/sdk/errors.js +46 -0
  514. package/dist/sdk/errors.js.map +1 -0
  515. package/dist/sdk/index.d.ts +2 -1
  516. package/dist/sdk/index.js +3 -2
  517. package/dist/sdk/index.js.map +1 -1
  518. package/dist/sdk/package-import-adapters.js +14 -3
  519. package/dist/sdk/package-import-adapters.js.map +1 -1
  520. package/dist/sdk/runtime.d.ts +1 -0
  521. package/dist/sdk/runtime.js +3 -2
  522. package/dist/sdk/runtime.js.map +1 -1
  523. package/dist/sdk/testing.d.ts +77 -0
  524. package/dist/sdk/testing.js +239 -0
  525. package/dist/sdk/testing.js.map +1 -0
  526. package/dist/types.d.ts +26 -1
  527. package/dist/types.js +3 -2
  528. package/dist/types.js.map +1 -1
  529. package/docs/AGENT_GUIDE.md +21 -2
  530. package/docs/COMMANDS.md +85 -5
  531. package/docs/CONFIGURATION.md +49 -2
  532. package/docs/EXTENSIONS.md +118 -6
  533. package/docs/QUICKSTART.md +2 -0
  534. package/docs/RELEASING.md +3 -3
  535. package/docs/SDK.md +273 -1
  536. package/docs/TESTING.md +17 -0
  537. package/docs/examples/policy-restricted-extension/manifest.json +1 -0
  538. package/docs/examples/starter-extension/index.js +9 -1
  539. package/docs/examples/starter-extension/manifest.json +1 -0
  540. package/package.json +12 -7
  541. package/packages/pm-beads/extensions/beads/index.js +2 -4
  542. package/packages/pm-beads/extensions/beads/index.ts +43 -33
  543. package/packages/pm-beads/extensions/beads/manifest.json +12 -1
  544. package/packages/pm-calendar/README.md +6 -0
  545. package/packages/pm-calendar/extensions/calendar/index.js +6 -1
  546. package/packages/pm-calendar/extensions/calendar/index.ts +6 -1
  547. package/packages/pm-calendar/extensions/calendar/manifest.json +6 -1
  548. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +6 -1
  549. package/packages/pm-guide-shell/README.md +4 -0
  550. package/packages/pm-guide-shell/extensions/guide-shell/index.js +22 -0
  551. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +22 -0
  552. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +6 -1
  553. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +74 -3
  554. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +84 -4
  555. package/packages/pm-lifecycle-hooks/README.md +29 -0
  556. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +18 -0
  557. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +20 -0
  558. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +9 -0
  559. package/packages/pm-lifecycle-hooks/package.json +52 -0
  560. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +13 -1
  561. package/packages/pm-search-advanced/extensions/search-advanced/index.js +69 -1
  562. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +91 -2
  563. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +13 -1
  564. package/packages/pm-templates/extensions/templates/manifest.json +6 -1
  565. package/packages/pm-todos/extensions/todos/index.js +3 -7
  566. package/packages/pm-todos/extensions/todos/index.ts +55 -42
  567. package/packages/pm-todos/extensions/todos/manifest.json +13 -1
  568. package/scripts/bundle-cli.mjs +121 -17
  569. package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js.map +0 -7
  570. package/dist/cli-bundle/chunks/chunk-RJONRNXN.js.map +0 -7
  571. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js +0 -13864
  572. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js.map +0 -7
  573. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js +0 -24225
  574. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js.map +0 -7
  575. package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js.map +0 -7
  576. package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js.map +0 -7
  577. package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js.map +0 -7
  578. package/dist/cli-bundle/chunks/register-setup-OZOKSMPJ.js.map +0 -7
@@ -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 {\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 { buildSearchCorpus, buildSemanticCorpusInput } from \"../../core/search/corpus.js\";\nimport { executeEmbeddingBatchesWithRetry } from \"../../core/search/embedding-batches.js\";\nimport { readVectorizationStatusLedger, writeVectorizationStatusLedger } from \"../../core/search/cache.js\";\nimport { resolveEmbeddingProviders } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { executeVectorUpsert, resolveVectorStores } from \"../../core/search/vector-stores.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 REINDEX_LOCK_ID = \"reindex\";\n\nexport interface ReindexOptions {\n mode?: string;\n progress?: 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 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 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\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 resolveExtensionVectorUpsert(settings: PmSettings): { name: string; upsert: ExtensionVectorUpsert } | 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 if (!name || typeof upsert !== \"function\") {\n return null;\n }\n return {\n name,\n upsert: upsert as ExtensionVectorUpsert,\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\nexport async function runReindex(options: ReindexOptions, global: GlobalOptions): Promise<ReindexResult> {\n const requestedMode = parseMode(options.mode);\n const progressEnabled = shouldEmitReindexProgress(options);\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 extensionVectorUpsert = resolveExtensionVectorUpsert(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 && !extensionVectorUpsert) {\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 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\" && metadataDocuments.length > 0) {\n const ledger = await readVectorizationStatusLedger(pmRoot);\n semanticWarnings.push(...ledger.warnings);\n const staleIds = new Set(\n metadataDocuments\n .filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at)\n .map((document) => document.metadata.id),\n );\n const staleDocuments = staleIds.size > 0\n ? await hydrateDocuments(pmRoot, documentCandidates, settings.schema, reindexWarnings, staleIds)\n : [];\n const 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 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 const semanticProviderName = activeEmbeddingProvider?.name ?? extensionEmbedding?.name;\n const corpusInputs = staleDocuments.map((document) => buildSemanticCorpusInput(document, { providerName: semanticProviderName }));\n let vectors: number[][] = [];\n if (extensionEmbedding) {\n try {\n vectors = await executeExtensionEmbedding(extensionEmbedding, settings, corpusInputs);\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 }\n emitReindexProgress(progressEnabled, `embedding_complete vectors=${vectors.length}`);\n if (vectors.length !== staleDocuments.length) {\n throw new PmCliError(\n `Embedding output size mismatch (expected ${staleDocuments.length}, received ${vectors.length})`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\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 (extensionVectorUpsert) {\n try {\n emitReindexProgress(progressEnabled, `vector_upsert_start adapter=${extensionVectorUpsert.name} points=${points.length}`);\n await Promise.resolve(\n extensionVectorUpsert.upsert({\n points,\n settings,\n }),\n );\n semanticSummary.vector_upserted = points.length;\n emitReindexProgress(progressEnabled, `vector_upsert_complete adapter=${extensionVectorUpsert.name}`);\n } catch (error: unknown) {\n if (!activeVectorStore) {\n throw new PmCliError(\n `Extension vector adapter \"${extensionVectorUpsert.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 \"${extensionVectorUpsert.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 }\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);\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":"1e9c9703-7163-5383-9e69-53a9f1ca5e25"}
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 { buildSearchCorpus, buildSemanticCorpusInput } 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\";\n\nexport interface ReindexOptions {\n mode?: string;\n progress?: 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 corpusInputs = documents.map((document) => buildSemanticCorpusInput(document, { providerName: semanticProviderName }));\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 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\" && 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 let staleIds = new Set(\n (resetRequired ? metadataDocuments : metadataDocuments.filter((document) => ledger.entries[document.metadata.id] !== document.metadata.updated_at))\n .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 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":"bbb5cb16-bba7-5e73-a168-d012e48c5d88"}
@@ -0,0 +1,15 @@
1
+ import type { CalendarEvent, Reminder } from "../../types/index.js";
2
+ import { type RecurrenceEmptyNumericGuard } from "./recurrence-parsers.js";
3
+ type EmptyValueGuard = "defined" | "truthy";
4
+ type ReminderValueMode = "raw" | "trimmed";
5
+ interface ParseReminderEntriesOptions {
6
+ valueMode: ReminderValueMode;
7
+ }
8
+ interface ParseEventEntriesOptions {
9
+ allDayEmptyGuard: EmptyValueGuard;
10
+ recurrenceEmptyNumericGuard: RecurrenceEmptyNumericGuard;
11
+ }
12
+ export declare function parseReminderEntries(raw: string[], nowValue: Date, options: ParseReminderEntriesOptions): Reminder[];
13
+ export declare function parseEventEntries(raw: string[], nowValue: Date, options: ParseEventEntriesOptions): CalendarEvent[];
14
+ export declare function parseTypeOptionEntries(raw: string[]): Record<string, string>;
15
+ export {};
@@ -0,0 +1,120 @@
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]="1f8d48a8-041d-5a4c-9dd2-a175d9be03ea")}catch(e){}}();
3
+ import { parseCsvKv } from "../../core/item/parse.js";
4
+ import { EXIT_CODE } from "../../core/shared/constants.js";
5
+ import { PmCliError } from "../../core/shared/errors.js";
6
+ import { resolveIsoOrRelative } from "../../core/shared/time.js";
7
+ import { resolveEventEndAt } from "./event-validation-messages.js";
8
+ import { parseEventBoolean, parseRecurrenceRule, } from "./recurrence-parsers.js";
9
+ function optionalString(value, mode) {
10
+ return mode === "trimmed" ? value?.trim() : value;
11
+ }
12
+ function isProvided(value, guard) {
13
+ return guard === "defined" ? value !== undefined : Boolean(value);
14
+ }
15
+ export function parseReminderEntries(raw, nowValue, options) {
16
+ return raw.map((entry) => {
17
+ const kv = parseCsvKv(entry, "--reminder");
18
+ const atRaw = optionalString(kv.at ?? kv.date, options.valueMode);
19
+ const textRaw = optionalString(kv.text ?? kv.title, options.valueMode);
20
+ if (!atRaw || !textRaw) {
21
+ throw new PmCliError("--reminder requires at=<iso|relative> or date=<iso|relative>, plus text=<value> or title=<value>", EXIT_CODE.USAGE);
22
+ }
23
+ const text = textRaw.trim();
24
+ if (!text) {
25
+ throw new PmCliError("--reminder text must not be empty", EXIT_CODE.USAGE);
26
+ }
27
+ return {
28
+ at: resolveIsoOrRelative(atRaw, nowValue, "reminder.at"),
29
+ text,
30
+ };
31
+ });
32
+ }
33
+ export function parseEventEntries(raw, nowValue, options) {
34
+ return raw.map((entry) => {
35
+ const kv = parseCsvKv(entry, "--event");
36
+ const startRaw = (kv.start ?? kv.date)?.trim();
37
+ if (!startRaw) {
38
+ throw new PmCliError("--event requires start=<iso|relative> or date=<iso|relative>", EXIT_CODE.USAGE);
39
+ }
40
+ const startAt = resolveIsoOrRelative(startRaw, nowValue, "event.start");
41
+ const endRaw = kv.end?.trim();
42
+ const durationRaw = kv.duration?.trim();
43
+ const endAt = resolveEventEndAt(startAt, endRaw, durationRaw, nowValue);
44
+ const titleRaw = kv.title;
45
+ const descriptionRaw = kv.description;
46
+ const locationRaw = kv.location;
47
+ const timezoneRaw = kv.timezone;
48
+ const title = titleRaw?.trim();
49
+ const description = descriptionRaw?.trim();
50
+ const location = locationRaw?.trim();
51
+ const timezone = timezoneRaw?.trim();
52
+ if (titleRaw !== undefined && !title) {
53
+ throw new PmCliError("--event title must not be empty", EXIT_CODE.USAGE);
54
+ }
55
+ if (descriptionRaw !== undefined && !description) {
56
+ throw new PmCliError("--event description must not be empty", EXIT_CODE.USAGE);
57
+ }
58
+ if (locationRaw !== undefined && !location) {
59
+ throw new PmCliError("--event location must not be empty", EXIT_CODE.USAGE);
60
+ }
61
+ if (timezoneRaw !== undefined && !timezone) {
62
+ throw new PmCliError("--event timezone must not be empty", EXIT_CODE.USAGE);
63
+ }
64
+ const allDayRaw = kv.all_day?.trim();
65
+ const recurrence = parseRecurrenceRule(kv, startAt, nowValue, options.recurrenceEmptyNumericGuard);
66
+ const allDay = isProvided(allDayRaw, options.allDayEmptyGuard)
67
+ ? parseEventBoolean(allDayRaw, "--event all_day")
68
+ : undefined;
69
+ return {
70
+ start_at: startAt,
71
+ end_at: endAt,
72
+ title,
73
+ description,
74
+ location,
75
+ all_day: allDay,
76
+ timezone,
77
+ recurrence,
78
+ };
79
+ });
80
+ }
81
+ export function parseTypeOptionEntries(raw) {
82
+ const values = {};
83
+ for (const entry of raw) {
84
+ const trimmedEntry = entry.trim();
85
+ if (trimmedEntry.length === 0) {
86
+ throw new PmCliError("--type-option values must not be empty", EXIT_CODE.USAGE);
87
+ }
88
+ let key;
89
+ let value;
90
+ const prefersStructuredKv = trimmedEntry.includes(",") ||
91
+ trimmedEntry.includes("\n") ||
92
+ trimmedEntry.startsWith("```") ||
93
+ /^(?:[-*+]\s+)?(?:key|value)\s*[:=]/i.test(trimmedEntry);
94
+ if (prefersStructuredKv) {
95
+ const kv = parseCsvKv(trimmedEntry, "--type-option");
96
+ key = kv.key?.trim();
97
+ value = kv.value?.trim();
98
+ }
99
+ else {
100
+ const equalsIndex = trimmedEntry.indexOf("=");
101
+ const colonIndex = trimmedEntry.indexOf(":");
102
+ let separatorIndex = equalsIndex;
103
+ if (equalsIndex <= 0 && colonIndex > 0) {
104
+ separatorIndex = colonIndex;
105
+ }
106
+ if (separatorIndex <= 0 || separatorIndex === trimmedEntry.length - 1) {
107
+ throw new PmCliError("--type-option requires key=value or key=<name>,value=<value> entries", EXIT_CODE.USAGE);
108
+ }
109
+ key = trimmedEntry.slice(0, separatorIndex).trim();
110
+ value = trimmedEntry.slice(separatorIndex + 1).trim();
111
+ }
112
+ if (!key || !value) {
113
+ throw new PmCliError("--type-option requires key and value", EXIT_CODE.USAGE);
114
+ }
115
+ values[key] = value;
116
+ }
117
+ return Object.fromEntries(Object.entries(values).sort((left, right) => left[0].localeCompare(right[0])));
118
+ }
119
+ //# sourceMappingURL=repeatable-metadata-parsers.js.map
120
+ //# debugId=1f8d48a8-041d-5a4c-9dd2-a175d9be03ea
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeatable-metadata-parsers.js","sources":["cli/commands/repeatable-metadata-parsers.ts"],"sourceRoot":"/","sourcesContent":["import { parseCsvKv } from \"../../core/item/parse.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport type { CalendarEvent, Reminder } from \"../../types/index.js\";\nimport { resolveEventEndAt } from \"./event-validation-messages.js\";\nimport {\n parseEventBoolean,\n parseRecurrenceRule,\n type RecurrenceEmptyNumericGuard,\n} from \"./recurrence-parsers.js\";\n\ntype EmptyValueGuard = \"defined\" | \"truthy\";\ntype ReminderValueMode = \"raw\" | \"trimmed\";\n\ninterface ParseReminderEntriesOptions {\n valueMode: ReminderValueMode;\n}\n\ninterface ParseEventEntriesOptions {\n allDayEmptyGuard: EmptyValueGuard;\n recurrenceEmptyNumericGuard: RecurrenceEmptyNumericGuard;\n}\n\nfunction optionalString(value: string | undefined, mode: ReminderValueMode): string | undefined {\n return mode === \"trimmed\" ? value?.trim() : value;\n}\n\nfunction isProvided(value: string | undefined, guard: EmptyValueGuard): boolean {\n return guard === \"defined\" ? value !== undefined : Boolean(value);\n}\n\nexport function parseReminderEntries(raw: string[], nowValue: Date, options: ParseReminderEntriesOptions): Reminder[] {\n return raw.map((entry) => {\n const kv = parseCsvKv(entry, \"--reminder\");\n const atRaw = optionalString(kv.at ?? kv.date, options.valueMode);\n const textRaw = optionalString(kv.text ?? kv.title, options.valueMode);\n if (!atRaw || !textRaw) {\n throw new PmCliError(\"--reminder requires at=<iso|relative> or date=<iso|relative>, plus text=<value> or title=<value>\", EXIT_CODE.USAGE);\n }\n const text = textRaw.trim();\n if (!text) {\n throw new PmCliError(\"--reminder text must not be empty\", EXIT_CODE.USAGE);\n }\n return {\n at: resolveIsoOrRelative(atRaw, nowValue, \"reminder.at\"),\n text,\n };\n });\n}\n\nexport function parseEventEntries(raw: string[], nowValue: Date, options: ParseEventEntriesOptions): CalendarEvent[] {\n return raw.map((entry) => {\n const kv = parseCsvKv(entry, \"--event\");\n const startRaw = (kv.start ?? kv.date)?.trim();\n if (!startRaw) {\n throw new PmCliError(\"--event requires start=<iso|relative> or date=<iso|relative>\", EXIT_CODE.USAGE);\n }\n const startAt = resolveIsoOrRelative(startRaw, nowValue, \"event.start\");\n const endRaw = kv.end?.trim();\n const durationRaw = kv.duration?.trim();\n const endAt = resolveEventEndAt(startAt, endRaw, durationRaw, nowValue);\n\n const titleRaw = kv.title;\n const descriptionRaw = kv.description;\n const locationRaw = kv.location;\n const timezoneRaw = kv.timezone;\n\n const title = titleRaw?.trim();\n const description = descriptionRaw?.trim();\n const location = locationRaw?.trim();\n const timezone = timezoneRaw?.trim();\n if (titleRaw !== undefined && !title) {\n throw new PmCliError(\"--event title must not be empty\", EXIT_CODE.USAGE);\n }\n if (descriptionRaw !== undefined && !description) {\n throw new PmCliError(\"--event description must not be empty\", EXIT_CODE.USAGE);\n }\n if (locationRaw !== undefined && !location) {\n throw new PmCliError(\"--event location must not be empty\", EXIT_CODE.USAGE);\n }\n if (timezoneRaw !== undefined && !timezone) {\n throw new PmCliError(\"--event timezone must not be empty\", EXIT_CODE.USAGE);\n }\n\n const allDayRaw = kv.all_day?.trim();\n const recurrence = parseRecurrenceRule(kv, startAt, nowValue, options.recurrenceEmptyNumericGuard);\n const allDay = isProvided(allDayRaw, options.allDayEmptyGuard)\n ? parseEventBoolean(allDayRaw as string, \"--event all_day\")\n : undefined;\n\n return {\n start_at: startAt,\n end_at: endAt,\n title,\n description,\n location,\n all_day: allDay,\n timezone,\n recurrence,\n };\n });\n}\n\nexport function parseTypeOptionEntries(raw: string[]): Record<string, string> {\n const values: Record<string, string> = {};\n for (const entry of raw) {\n const trimmedEntry = entry.trim();\n if (trimmedEntry.length === 0) {\n throw new PmCliError(\"--type-option values must not be empty\", EXIT_CODE.USAGE);\n }\n let key: string | undefined;\n let value: string | undefined;\n const prefersStructuredKv =\n trimmedEntry.includes(\",\") ||\n trimmedEntry.includes(\"\\n\") ||\n trimmedEntry.startsWith(\"```\") ||\n /^(?:[-*+]\\s+)?(?:key|value)\\s*[:=]/i.test(trimmedEntry);\n if (prefersStructuredKv) {\n const kv = parseCsvKv(trimmedEntry, \"--type-option\");\n key = kv.key?.trim();\n value = kv.value?.trim();\n } else {\n const equalsIndex = trimmedEntry.indexOf(\"=\");\n const colonIndex = trimmedEntry.indexOf(\":\");\n let separatorIndex = equalsIndex;\n if (equalsIndex <= 0 && colonIndex > 0) {\n separatorIndex = colonIndex;\n }\n if (separatorIndex <= 0 || separatorIndex === trimmedEntry.length - 1) {\n throw new PmCliError(\n \"--type-option requires key=value or key=<name>,value=<value> entries\",\n EXIT_CODE.USAGE,\n );\n }\n key = trimmedEntry.slice(0, separatorIndex).trim();\n value = trimmedEntry.slice(separatorIndex + 1).trim();\n }\n if (!key || !value) {\n throw new PmCliError(\"--type-option requires key and value\", EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n return Object.fromEntries(Object.entries(values).sort((left, right) => left[0].localeCompare(right[0])));\n}\n"],"names":[],"mappings":"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","debugId":"1f8d48a8-041d-5a4c-9dd2-a175d9be03ea"}
@@ -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]="d40fa5ec-9a3f-52de-980b-b83b2e0021d1")}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]="33d24f2b-7b7a-5588-9a53-e0511add3644")}catch(e){}}();
3
3
  import jsonPatch from "fast-json-patch";
4
4
  import fs from "node:fs/promises";
5
5
  import { pathExists, readFileIfExists, writeFileAtomic } from "../../core/fs/fs-utils.js";
@@ -13,7 +13,7 @@ import { acquireLock } from "../../core/lock/lock.js";
13
13
  import { EXIT_CODE } from "../../core/shared/constants.js";
14
14
  import { PmCliError } from "../../core/shared/errors.js";
15
15
  import { nowIso } from "../../core/shared/time.js";
16
- import { getActiveExtensionRegistrations, runActiveOnWriteHooks } from "../../core/extensions/index.js";
16
+ import { getActiveExtensionRegistrations, projectAfterCommandItemSnapshot, recordAfterCommandAffectedItem, runActiveOnWriteHooks, } from "../../core/extensions/index.js";
17
17
  import { locateItem, readLocatedItem } from "../../core/store/item-store.js";
18
18
  import { getHistoryPath, getItemPath, getSettingsPath, resolvePmRoot } from "../../core/store/paths.js";
19
19
  import { readSettings } from "../../core/store/settings.js";
@@ -299,18 +299,39 @@ export async function runRestore(id, target, options, global) {
299
299
  }
300
300
  throw error;
301
301
  }
302
+ const restoreChangedFields = changedFields(resolvedCurrentDocument, restoredDocument);
302
303
  const hookWarnings = [
303
304
  ...(await runActiveOnWriteHooks({
304
305
  path: restoredItemPath,
305
306
  scope: "project",
306
307
  op: "restore",
308
+ item_id: restoredDocument.metadata.id,
309
+ item_type: restoredDocument.metadata.type,
310
+ before: resolvedCurrentDocument,
311
+ after: restoredDocument,
312
+ changed_fields: ["restored"],
307
313
  })),
308
314
  ...(await runActiveOnWriteHooks({
309
315
  path: subject.historyPath,
310
316
  scope: "project",
311
317
  op: "restore:history",
318
+ item_id: restoredDocument.metadata.id,
319
+ item_type: restoredDocument.metadata.type,
320
+ before: resolvedCurrentDocument,
321
+ after: restoredDocument,
322
+ changed_fields: ["restored"],
312
323
  })),
313
324
  ];
325
+ recordAfterCommandAffectedItem({
326
+ id: restoredDocument.metadata.id,
327
+ op: "restore",
328
+ item_type: restoredDocument.metadata.type,
329
+ previous_status: resolvedCurrentDocument.metadata.status,
330
+ status: restoredDocument.metadata.status,
331
+ previous: projectAfterCommandItemSnapshot(resolvedCurrentDocument.metadata, restoreChangedFields),
332
+ current: projectAfterCommandItemSnapshot(restoredDocument.metadata, restoreChangedFields),
333
+ changed_fields: restoreChangedFields,
334
+ });
314
335
  const targetEntry = history[resolvedTarget.historyIndex];
315
336
  return {
316
337
  item: restoredDocument.metadata,
@@ -321,7 +342,7 @@ export async function runRestore(id, target, options, global) {
321
342
  entry_ts: targetEntry.ts,
322
343
  entry_op: targetEntry.op,
323
344
  },
324
- changed_fields: changedFields(resolvedCurrentDocument, restoredDocument),
345
+ changed_fields: restoreChangedFields,
325
346
  warnings: [...subject.historyPolicyWarnings, ...ownershipWarnings, ...hookWarnings],
326
347
  };
327
348
  }
@@ -330,4 +351,4 @@ export async function runRestore(id, target, options, global) {
330
351
  }
331
352
  }
332
353
  //# sourceMappingURL=restore.js.map
333
- //# debugId=d40fa5ec-9a3f-52de-980b-b83b2e0021d1
354
+ //# debugId=33d24f2b-7b7a-5588-9a53-e0511add3644