@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,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]="1fc8fa51-3aee-5a13-b07a-4b6a91b781ba")}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]="d7830a17-8330-53f9-8d7b-b978e22febf8")}catch(e){}}();
3
3
  import { mkdir, readFile, rename, stat, unlink, writeFile } from "node:fs/promises";
4
4
  import { basename, dirname, join, resolve } from "node:path";
5
5
  import { executeSearchJsonRequest, normalizeSearchHttpTimeoutMs, resolveSearchHttpFetcher, } from "./http-client.js";
@@ -145,6 +145,15 @@ function normalizeVectorDeleteIds(ids) {
145
145
  function resolveQdrantDeleteTarget(upsertTarget) {
146
146
  return upsertTarget.replace(/\/points\?wait=true$/, "/points/delete?wait=true");
147
147
  }
148
+ function resolveQdrantCollectionTarget(upsertTarget) {
149
+ return upsertTarget.replace(/\/points\?wait=true$/, "");
150
+ }
151
+ function buildQdrantJsonHeaders(store) {
152
+ return {
153
+ "content-type": "application/json",
154
+ ...(store.api_key ? { "api-key": store.api_key } : {}),
155
+ };
156
+ }
148
157
  function getLanceDbLocalTableKey(storePath, table) {
149
158
  return getLanceDbSnapshotPath(storePath, table);
150
159
  }
@@ -281,11 +290,15 @@ async function persistLanceDbLocalTable(storePath, tableName, table) {
281
290
  throw new Error(`LanceDB local snapshot directory create failed at '${snapshotDir}': ${toErrorMessage(error)}`);
282
291
  }
283
292
  const tempPath = join(snapshotDir, `${basename(snapshotPath)}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`);
293
+ // Serialize compactly: the snapshot is an internal, gitignored cache re-read via
294
+ // JSON.parse (whitespace-agnostic). Pretty-printing put every embedding float on its
295
+ // own indented line, roughly doubling file size and parse/serialize cost — a real
296
+ // per-mutation latency tax on large indexes. Compact JSON keeps it instant.
284
297
  const serialized = `${JSON.stringify({
285
298
  version: LANCE_DB_LOCAL_SNAPSHOT_VERSION,
286
299
  table: tableName,
287
300
  records: buildSnapshotRecords(table),
288
- }, null, 2)}\n`;
301
+ })}\n`;
289
302
  try {
290
303
  await writeFile(tempPath, serialized, "utf8");
291
304
  await rename(tempPath, snapshotPath);
@@ -295,6 +308,12 @@ async function persistLanceDbLocalTable(storePath, tableName, table) {
295
308
  throw new Error(`LanceDB local snapshot write failed at '${snapshotPath}': ${toErrorMessage(error)}`);
296
309
  }
297
310
  }
311
+ async function resetLanceDbLocalTable(storePath, tableName) {
312
+ const key = getLanceDbLocalTableKey(storePath, tableName);
313
+ const snapshotPath = getLanceDbSnapshotPath(storePath, tableName);
314
+ await removeSnapshotFile(snapshotPath);
315
+ lanceDbLocalTables.delete(key);
316
+ }
298
317
  function l2Norm(vector) {
299
318
  let sumSq = 0;
300
319
  for (let index = 0; index < vector.length; index += 1) {
@@ -356,10 +375,7 @@ export function buildVectorQueryPlan(store, vector, limit) {
356
375
  return {
357
376
  target,
358
377
  method: "POST",
359
- headers: {
360
- "content-type": "application/json",
361
- ...(store.api_key ? { "api-key": store.api_key } : {}),
362
- },
378
+ headers: buildQdrantJsonHeaders(store),
363
379
  body: {
364
380
  vector: normalizedVector,
365
381
  limit: normalizedLimit,
@@ -385,10 +401,7 @@ export function buildVectorUpsertPlan(store, records) {
385
401
  return {
386
402
  target,
387
403
  method: "POST",
388
- headers: {
389
- "content-type": "application/json",
390
- ...(store.api_key ? { "api-key": store.api_key } : {}),
391
- },
404
+ headers: buildQdrantJsonHeaders(store),
392
405
  body: {
393
406
  points: normalizedRecords,
394
407
  },
@@ -411,10 +424,7 @@ export function buildVectorDeletePlan(store, ids) {
411
424
  return {
412
425
  target,
413
426
  method: "POST",
414
- headers: {
415
- "content-type": "application/json",
416
- ...(store.api_key ? { "api-key": store.api_key } : {}),
417
- },
427
+ headers: buildQdrantJsonHeaders(store),
418
428
  body: {
419
429
  points: normalizedIds,
420
430
  },
@@ -540,5 +550,49 @@ export async function executeVectorDelete(store, ids, options = {}) {
540
550
  }, timeoutMs, fetcher, "delete");
541
551
  return normalizeQdrantUpsertResponse(payload);
542
552
  }
553
+ export async function executeVectorReset(store, knownIds = [], options = {}, vectorDimension) {
554
+ if (store.name === "lancedb") {
555
+ await resetLanceDbLocalTable(store.path, DEFAULT_COLLECTION);
556
+ return { status: "ok" };
557
+ }
558
+ if (vectorDimension !== undefined) {
559
+ if (!Number.isInteger(vectorDimension) || vectorDimension <= 0) {
560
+ throw new Error("Vector reset dimension must be a positive integer when provided");
561
+ }
562
+ const target = resolveVectorStoreRequestTarget(store);
563
+ const collectionTarget = resolveQdrantCollectionTarget(target.upsert_target);
564
+ const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, "Vector request");
565
+ const fetcher = resolveSearchHttpFetcher(options.fetcher, "Vector request");
566
+ const headers = buildQdrantJsonHeaders(store);
567
+ try {
568
+ await executeRemoteVectorPlan(collectionTarget, {
569
+ method: "DELETE",
570
+ headers,
571
+ body: {},
572
+ }, timeoutMs, fetcher, "delete");
573
+ }
574
+ catch (error) {
575
+ if (!toErrorMessage(error).includes("failed with status 404")) {
576
+ throw error;
577
+ }
578
+ }
579
+ const payload = await executeRemoteVectorPlan(collectionTarget, {
580
+ method: "PUT",
581
+ headers,
582
+ body: {
583
+ vectors: {
584
+ size: vectorDimension,
585
+ distance: "Cosine",
586
+ },
587
+ },
588
+ }, timeoutMs, fetcher, "upsert");
589
+ return normalizeQdrantUpsertResponse(payload);
590
+ }
591
+ const idsToDelete = knownIds.map((id) => id.trim()).filter((id) => id.length > 0);
592
+ if (idsToDelete.length === 0) {
593
+ return { status: "ok" };
594
+ }
595
+ return await executeVectorDelete(store, idsToDelete, options);
596
+ }
543
597
  //# sourceMappingURL=vector-stores.js.map
544
- //# debugId=1fc8fa51-3aee-5a13-b07a-4b6a91b781ba
598
+ //# debugId=d7830a17-8330-53f9-8d7b-b978e22febf8
@@ -1 +1 @@
1
- {"version":3,"file":"vector-stores.js","sources":["core/search/vector-stores.ts"],"sourceRoot":"/","sourcesContent":["import type { PmSettings } from \"../../types/index.js\";\nimport { mkdir, readFile, rename, stat, unlink, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport {\n executeSearchJsonRequest,\n normalizeSearchHttpTimeoutMs,\n resolveSearchHttpFetcher,\n} from \"./http-client.js\";\nimport type { SearchHttpFetcher, SearchHttpResponse } from \"./http-client.js\";\nimport {\n isFiniteNumberArray,\n toErrorMessage,\n toNonEmptyString,\n trimTrailingSlashes,\n} from \"../shared/primitives.js\";\n\nexport type VectorStoreName = \"qdrant\" | \"lancedb\";\n\nexport interface QdrantVectorStoreConfig {\n name: \"qdrant\";\n url: string;\n api_key?: string;\n}\n\nexport interface LanceDbVectorStoreConfig {\n name: \"lancedb\";\n path: string;\n}\n\nexport type VectorStoreConfig = QdrantVectorStoreConfig | LanceDbVectorStoreConfig;\n\nexport interface VectorStoreResolution {\n active: VectorStoreConfig | null;\n available: VectorStoreConfig[];\n}\n\nexport interface VectorStoreRequestTarget {\n store: VectorStoreName;\n query_target: string;\n upsert_target: string;\n}\n\nexport interface VectorQueryPlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorRecord {\n id: string;\n vector: number[];\n payload?: Record<string, unknown>;\n}\n\nexport interface VectorUpsertPlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorDeletePlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorQueryHit {\n id: string;\n score: number;\n payload?: Record<string, unknown>;\n}\n\nexport interface VectorUpsertResult {\n status: string;\n}\n\nexport type VectorHttpResponse = SearchHttpResponse;\n\nexport type VectorRequestFetcher = SearchHttpFetcher<VectorHttpResponse>;\n\nexport interface ExecuteVectorRequestOptions {\n timeout_ms?: number;\n fetcher?: VectorRequestFetcher;\n warnings?: string[];\n}\n\ntype VectorSettingsInput = {\n vector_store?: {\n qdrant?: {\n url?: string;\n api_key?: string;\n };\n lancedb?: {\n path?: string;\n };\n };\n};\n\nconst DEFAULT_COLLECTION = \"pm_items\";\nconst LANCE_DB_LOCAL_SNAPSHOT_DIR = \".pm-cli-local-vectors\";\nconst LANCE_DB_LOCAL_SNAPSHOT_VERSION = 1;\ninterface LanceDbLocalTableCacheEntry {\n records: Map<string, VectorRecord>;\n mtimeMs: number | null;\n size: number | null;\n}\n\nconst lanceDbLocalTables = new Map<string, LanceDbLocalTableCacheEntry>();\n\nfunction normalizeVector(value: unknown): number[] {\n if (!isFiniteNumberArray(value) || value.length === 0) {\n throw new Error(\"Vector values must be a non-empty numeric array\");\n }\n return [...value];\n}\n\nfunction normalizeLimit(value: number): number {\n if (!Number.isFinite(value) || value <= 0) {\n throw new Error(\"Vector query limit must be a positive number\");\n }\n return Math.floor(value);\n}\n\nfunction normalizeQdrantQueryResponse(payload: unknown): VectorQueryHit[] {\n const result = (payload as { result?: unknown }).result;\n if (!Array.isArray(result)) {\n throw new TypeError(\"Qdrant query response must include a result array\");\n }\n const hits = result.map((entry, index) => {\n const idValue = (entry as { id?: unknown }).id;\n const idCandidate = typeof idValue === \"number\" ? String(idValue) : idValue;\n const id = toNonEmptyString(idCandidate);\n if (!id) {\n throw new Error(`Qdrant query response entry at index ${index} is missing a non-empty id`);\n }\n\n const score = (entry as { score?: unknown }).score;\n if (typeof score !== \"number\" || !Number.isFinite(score)) {\n throw new TypeError(`Qdrant query response entry at index ${index} is missing a finite numeric score`);\n }\n\n const payloadValue = (entry as { payload?: unknown }).payload;\n if (\n payloadValue !== undefined &&\n (typeof payloadValue !== \"object\" || payloadValue === null || Array.isArray(payloadValue))\n ) {\n throw new Error(`Qdrant query response entry at index ${index} must provide payload as an object when set`);\n }\n\n return {\n id,\n score,\n ...(payloadValue ? { payload: payloadValue as Record<string, unknown> } : {}),\n };\n });\n hits.sort((left, right) => {\n if (left.score !== right.score) {\n return right.score - left.score;\n }\n return left.id.localeCompare(right.id);\n });\n return hits;\n}\n\nfunction normalizeQdrantUpsertResponse(payload: unknown): VectorUpsertResult {\n const nestedStatus = toNonEmptyString((payload as { result?: { status?: unknown } }).result?.status);\n if (nestedStatus) {\n return { status: nestedStatus };\n }\n const topLevelStatus = toNonEmptyString((payload as { status?: unknown }).status);\n if (topLevelStatus) {\n return { status: topLevelStatus };\n }\n throw new Error(\"Qdrant upsert response must include status metadata\");\n}\n\nasync function executeRemoteVectorPlan(\n endpoint: string,\n plan: {\n method: \"POST\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n },\n timeoutMs: number,\n fetcher: VectorRequestFetcher,\n requestKind: \"query\" | \"upsert\" | \"delete\",\n): Promise<unknown> {\n return await executeSearchJsonRequest({\n endpoint,\n method: plan.method,\n headers: plan.headers,\n body: plan.body,\n timeoutMs,\n fetcher,\n requestLabel: `Vector ${requestKind} request`,\n responseLabel: `Vector ${requestKind} response`,\n });\n}\n\nfunction resolveQdrantStore(settings: VectorSettingsInput): QdrantVectorStoreConfig | null {\n const url = toNonEmptyString(settings.vector_store?.qdrant?.url);\n if (!url) {\n return null;\n }\n const apiKey = toNonEmptyString(settings.vector_store?.qdrant?.api_key);\n return {\n name: \"qdrant\",\n url,\n ...(apiKey ? { api_key: apiKey } : {}),\n };\n}\n\nfunction resolveLanceDbStore(settings: VectorSettingsInput): LanceDbVectorStoreConfig | null {\n const lancedbPath = toNonEmptyString(settings.vector_store?.lancedb?.path);\n if (!lancedbPath) {\n return null;\n }\n return {\n name: \"lancedb\",\n path: lancedbPath,\n };\n}\n\nfunction normalizeVectorRecords(records: VectorRecord[]): VectorRecord[] {\n if (!Array.isArray(records) || records.length === 0) {\n throw new Error(\"Vector upsert records must include at least one entry\");\n }\n return records.map((record, index) => {\n const id = toNonEmptyString(record.id);\n if (!id) {\n throw new Error(`Vector upsert record at index ${index} is missing a non-empty id`);\n }\n const vector = normalizeVector(record.vector);\n const payload = record.payload;\n if (payload !== undefined && (typeof payload !== \"object\" || payload === null || Array.isArray(payload))) {\n throw new Error(`Vector upsert record at index ${index} must provide payload as an object when set`);\n }\n return {\n id,\n vector,\n ...(payload ? { payload } : {}),\n };\n });\n}\n\nfunction normalizeVectorDeleteIds(ids: string[]): string[] {\n if (!Array.isArray(ids) || ids.length === 0) {\n throw new Error(\"Vector delete ids must include at least one entry\");\n }\n const normalizedIds = ids\n .map((id, index) => {\n const normalized = toNonEmptyString(id);\n if (!normalized) {\n throw new Error(`Vector delete id at index ${index} is missing a non-empty value`);\n }\n return normalized;\n })\n .sort((left, right) => left.localeCompare(right));\n const uniqueIds: string[] = [];\n for (const id of normalizedIds) {\n if (uniqueIds.at(-1) !== id) {\n uniqueIds.push(id);\n }\n }\n return uniqueIds;\n}\n\nfunction resolveQdrantDeleteTarget(upsertTarget: string): string {\n return upsertTarget.replace(/\\/points\\?wait=true$/, \"/points/delete?wait=true\");\n}\n\nfunction getLanceDbLocalTableKey(storePath: string, table: string): string {\n return getLanceDbSnapshotPath(storePath, table);\n}\n\nfunction getLanceDbSnapshotPath(storePath: string, table: string): string {\n return join(resolve(storePath), LANCE_DB_LOCAL_SNAPSHOT_DIR, `${table}.json`);\n}\n\nfunction isNodeErrorWithCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && (error as { code?: unknown }).code === code;\n}\n\nfunction normalizeSnapshotRecord(entry: unknown, index: number, snapshotPath: string): VectorRecord {\n const id = toNonEmptyString((entry as { id?: unknown }).id);\n if (!id) {\n throw new Error(`LanceDB local snapshot '${snapshotPath}' record at index ${index} is missing a non-empty id`);\n }\n const vector = normalizeVector((entry as { vector?: unknown }).vector);\n const payload = (entry as { payload?: unknown }).payload;\n if (payload !== undefined && (typeof payload !== \"object\" || payload === null || Array.isArray(payload))) {\n throw new Error(\n `LanceDB local snapshot '${snapshotPath}' record '${id}' must provide payload as an object when set`,\n );\n }\n return {\n id,\n vector,\n ...(payload ? { payload: payload as Record<string, unknown> } : {}),\n };\n}\n\nfunction parseLanceDbSnapshot(snapshotPath: string, expectedTable: string, raw: string): Map<string, VectorRecord> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch (error) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' is not valid JSON: ${toErrorMessage(error)}`);\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' must be a JSON object`);\n }\n\n const version = (parsed as { version?: unknown }).version;\n if (version !== LANCE_DB_LOCAL_SNAPSHOT_VERSION) {\n throw new Error(\n `LanceDB local snapshot at '${snapshotPath}' must include version=${LANCE_DB_LOCAL_SNAPSHOT_VERSION}`,\n );\n }\n\n const table = toNonEmptyString((parsed as { table?: unknown }).table);\n if (!table) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' must include a non-empty table value`);\n }\n if (table !== expectedTable) {\n throw new Error(\n `LanceDB local snapshot at '${snapshotPath}' table mismatch: expected '${expectedTable}', received '${table}'`,\n );\n }\n\n const recordsValue = (parsed as { records?: unknown }).records;\n if (!Array.isArray(recordsValue)) {\n throw new TypeError(`LanceDB local snapshot at '${snapshotPath}' must include a records array`);\n }\n\n const tableRecords = new Map<string, VectorRecord>();\n for (let index = 0; index < recordsValue.length; index += 1) {\n const record = normalizeSnapshotRecord(recordsValue[index], index, snapshotPath);\n tableRecords.set(record.id, record);\n }\n return tableRecords;\n}\n\nasync function loadLanceDbLocalTable(storePath: string, table: string): Promise<Map<string, VectorRecord>> {\n const key = getLanceDbLocalTableKey(storePath, table);\n const snapshotPath = getLanceDbSnapshotPath(storePath, table);\n let snapshotStats: { mtimeMs: number; size: number } | null = null;\n try {\n const stats = await stat(snapshotPath);\n snapshotStats = { mtimeMs: stats.mtimeMs, size: stats.size };\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw error;\n }\n }\n\n const cached = lanceDbLocalTables.get(key);\n if (cached && !snapshotStats) {\n if (cached.mtimeMs === null && cached.size === null && cached.records.size === 0) {\n return cached.records;\n }\n const loaded = new Map<string, VectorRecord>();\n lanceDbLocalTables.set(key, { records: loaded, mtimeMs: null, size: null });\n return loaded;\n }\n if (\n cached &&\n snapshotStats &&\n cached.mtimeMs === snapshotStats.mtimeMs &&\n cached.size === snapshotStats.size\n ) {\n return cached.records;\n }\n\n let loaded = new Map<string, VectorRecord>();\n try {\n const raw = await readFile(snapshotPath, \"utf8\");\n loaded = parseLanceDbSnapshot(snapshotPath, table, raw);\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw error;\n }\n }\n lanceDbLocalTables.set(key, {\n records: loaded,\n mtimeMs: snapshotStats?.mtimeMs ?? null,\n size: snapshotStats?.size ?? null,\n });\n return loaded;\n}\n\nfunction buildSnapshotRecords(table: Map<string, VectorRecord>): VectorRecord[] {\n const records = [...table.values()];\n records.sort((left, right) => left.id.localeCompare(right.id));\n return records.map((record) => ({\n id: record.id,\n vector: [...record.vector],\n ...(record.payload ? { payload: record.payload } : {}),\n }));\n}\n\nasync function removeSnapshotFile(snapshotPath: string): Promise<void> {\n try {\n await unlink(snapshotPath);\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw new Error(`LanceDB local snapshot delete failed at '${snapshotPath}': ${toErrorMessage(error)}`);\n }\n }\n}\n\nasync function persistLanceDbLocalTable(storePath: string, tableName: string, table: Map<string, VectorRecord>): Promise<void> {\n const snapshotPath = getLanceDbSnapshotPath(storePath, tableName);\n if (table.size === 0) {\n await removeSnapshotFile(snapshotPath);\n return;\n }\n\n const snapshotDir = dirname(snapshotPath);\n try {\n await mkdir(snapshotDir, { recursive: true });\n } catch (error) {\n throw new Error(\n `LanceDB local snapshot directory create failed at '${snapshotDir}': ${toErrorMessage(error)}`,\n );\n }\n\n const tempPath = join(\n snapshotDir,\n `${basename(snapshotPath)}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`,\n );\n const serialized = `${JSON.stringify(\n {\n version: LANCE_DB_LOCAL_SNAPSHOT_VERSION,\n table: tableName,\n records: buildSnapshotRecords(table),\n },\n null,\n 2,\n )}\\n`;\n try {\n await writeFile(tempPath, serialized, \"utf8\");\n await rename(tempPath, snapshotPath);\n } catch (error) {\n await unlink(tempPath).catch(() => {});\n throw new Error(`LanceDB local snapshot write failed at '${snapshotPath}': ${toErrorMessage(error)}`);\n }\n}\n\nfunction l2Norm(vector: number[]): number {\n let sumSq = 0;\n for (let index = 0; index < vector.length; index += 1) {\n sumSq += vector[index] * vector[index];\n }\n return Math.sqrt(sumSq);\n}\n\nfunction cosineSimilarity(left: number[], right: number[]): number {\n let dotProd = 0;\n for (let index = 0; index < left.length; index += 1) {\n dotProd += left[index] * right[index];\n }\n const leftNorm = l2Norm(left);\n const rightNorm = l2Norm(right);\n if (leftNorm === 0 || rightNorm === 0) {\n return 0;\n }\n return dotProd / (leftNorm * rightNorm);\n}\n\nexport function resolveVectorStores(settings: PmSettings | VectorSettingsInput): VectorStoreResolution {\n const qdrant = resolveQdrantStore(settings);\n const lancedb = resolveLanceDbStore(settings);\n const available = [qdrant, lancedb].filter((entry): entry is VectorStoreConfig => entry !== null);\n // Honor `settings.vector_store.adapter` when set: if both built-in stores\n // are configured, the preferred adapter wins; otherwise fall back to the\n // first available entry (preserves the previous tie-break: qdrant > lancedb).\n // Match case-insensitively so \"Qdrant\" / \"LanceDB\" / \"lancedb\" all work.\n const preferredName = toNonEmptyString(\n (settings as { vector_store?: { adapter?: unknown } }).vector_store?.adapter,\n );\n const preferredKey = preferredName ? preferredName.toLowerCase() : null;\n const preferred = preferredKey\n ? available.find((entry) => entry.name === preferredKey)\n : undefined;\n return {\n active: preferred ?? available[0] ?? null,\n available,\n };\n}\n\nexport function resolveVectorStoreRequestTarget(store: VectorStoreConfig): VectorStoreRequestTarget {\n if (store.name === \"qdrant\") {\n const baseUrl = trimTrailingSlashes(store.url);\n return {\n store: \"qdrant\",\n query_target: `${baseUrl}/collections/${DEFAULT_COLLECTION}/points/search`,\n upsert_target: `${baseUrl}/collections/${DEFAULT_COLLECTION}/points?wait=true`,\n };\n }\n const encodedPath = encodeURIComponent(store.path);\n return {\n store: \"lancedb\",\n query_target: `lancedb://${encodedPath}#${DEFAULT_COLLECTION}`,\n upsert_target: `lancedb://${encodedPath}#${DEFAULT_COLLECTION}`,\n };\n}\n\nexport function buildVectorQueryPlan(store: VectorStoreConfig, vector: number[], limit: number): VectorQueryPlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedVector = normalizeVector(vector);\n const normalizedLimit = normalizeLimit(limit);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n ...(store.api_key ? { \"api-key\": store.api_key } : {}),\n },\n body: {\n vector: normalizedVector,\n limit: normalizedLimit,\n with_payload: true,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n vector: normalizedVector,\n limit: normalizedLimit,\n },\n };\n}\n\nexport function buildVectorUpsertPlan(store: VectorStoreConfig, records: VectorRecord[]): VectorUpsertPlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedRecords = normalizeVectorRecords(records);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n ...(store.api_key ? { \"api-key\": store.api_key } : {}),\n },\n body: {\n points: normalizedRecords,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n records: normalizedRecords,\n },\n };\n}\n\nexport function buildVectorDeletePlan(store: VectorStoreConfig, ids: string[]): VectorDeletePlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedIds = normalizeVectorDeleteIds(ids);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n ...(store.api_key ? { \"api-key\": store.api_key } : {}),\n },\n body: {\n points: normalizedIds,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n ids: normalizedIds,\n },\n };\n}\n\nexport async function executeVectorQuery(\n store: VectorStoreConfig,\n vector: number[],\n limit: number,\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorQueryHit[]> {\n const plan = buildVectorQueryPlan(store, vector, limit);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const queryBody = plan.body as {\n table: string;\n vector: number[];\n limit: number;\n };\n const table = await loadLanceDbLocalTable(lanceDbStore.path, queryBody.table);\n if (table.size === 0) {\n return [];\n }\n const queryVector = normalizeVector(queryBody.vector);\n const queryLimit = normalizeLimit(queryBody.limit);\n const hits: VectorQueryHit[] = [];\n let dimensionMismatchCount = 0;\n for (const record of table.values()) {\n if (record.vector.length !== queryVector.length) {\n dimensionMismatchCount++;\n continue;\n }\n hits.push({\n id: record.id,\n score: cosineSimilarity(queryVector, record.vector),\n ...(record.payload ? { payload: record.payload } : {}),\n });\n }\n if (dimensionMismatchCount > 0 && options.warnings) {\n options.warnings.push(\n `vector_dimension_mismatch:${dimensionMismatchCount} records skipped (expected ${queryVector.length} dimensions)`,\n );\n }\n hits.sort((left, right) => {\n if (left.score !== right.score) {\n return right.score - left.score;\n }\n return left.id.localeCompare(right.id);\n });\n return hits.slice(0, queryLimit);\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n plan.target.query_target,\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"query\",\n );\n return normalizeQdrantQueryResponse(payload);\n}\n\nexport async function executeVectorUpsert(\n store: VectorStoreConfig,\n records: VectorRecord[],\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorUpsertResult> {\n const plan = buildVectorUpsertPlan(store, records);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const upsertBody = plan.body as {\n table: string;\n records: VectorRecord[];\n };\n const key = getLanceDbLocalTableKey(lanceDbStore.path, upsertBody.table);\n const table = await loadLanceDbLocalTable(lanceDbStore.path, upsertBody.table);\n for (const record of upsertBody.records) {\n table.set(record.id, record);\n }\n await persistLanceDbLocalTable(lanceDbStore.path, upsertBody.table, table);\n const snapshotPath = getLanceDbSnapshotPath(lanceDbStore.path, upsertBody.table);\n const snapshotStats = await stat(snapshotPath);\n lanceDbLocalTables.set(key, {\n records: table,\n mtimeMs: snapshotStats.mtimeMs,\n size: snapshotStats.size,\n });\n return { status: \"ok\" };\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n plan.target.upsert_target,\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"upsert\",\n );\n return normalizeQdrantUpsertResponse(payload);\n}\n\nexport async function executeVectorDelete(\n store: VectorStoreConfig,\n ids: string[],\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorUpsertResult> {\n const plan = buildVectorDeletePlan(store, ids);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const deleteBody = plan.body as {\n table: string;\n ids: string[];\n };\n const key = getLanceDbLocalTableKey(lanceDbStore.path, deleteBody.table);\n const table = await loadLanceDbLocalTable(lanceDbStore.path, deleteBody.table);\n if (table.size === 0) {\n return { status: \"ok\" };\n }\n for (const id of deleteBody.ids) {\n table.delete(id);\n }\n await persistLanceDbLocalTable(lanceDbStore.path, deleteBody.table, table);\n if (table.size === 0) {\n lanceDbLocalTables.delete(key);\n } else {\n const snapshotPath = getLanceDbSnapshotPath(lanceDbStore.path, deleteBody.table);\n const snapshotStats = await stat(snapshotPath);\n lanceDbLocalTables.set(key, {\n records: table,\n mtimeMs: snapshotStats.mtimeMs,\n size: snapshotStats.size,\n });\n }\n return { status: \"ok\" };\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n resolveQdrantDeleteTarget(plan.target.upsert_target),\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"delete\",\n );\n return normalizeQdrantUpsertResponse(payload);\n}\n"],"names":[],"mappings":"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","debugId":"1fc8fa51-3aee-5a13-b07a-4b6a91b781ba"}
1
+ {"version":3,"file":"vector-stores.js","sources":["core/search/vector-stores.ts"],"sourceRoot":"/","sourcesContent":["import type { PmSettings } from \"../../types/index.js\";\nimport { mkdir, readFile, rename, stat, unlink, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport {\n executeSearchJsonRequest,\n normalizeSearchHttpTimeoutMs,\n resolveSearchHttpFetcher,\n} from \"./http-client.js\";\nimport type { SearchHttpFetcher, SearchHttpResponse } from \"./http-client.js\";\nimport {\n isFiniteNumberArray,\n toErrorMessage,\n toNonEmptyString,\n trimTrailingSlashes,\n} from \"../shared/primitives.js\";\n\nexport type VectorStoreName = \"qdrant\" | \"lancedb\";\n\nexport interface QdrantVectorStoreConfig {\n name: \"qdrant\";\n url: string;\n api_key?: string;\n}\n\nexport interface LanceDbVectorStoreConfig {\n name: \"lancedb\";\n path: string;\n}\n\nexport type VectorStoreConfig = QdrantVectorStoreConfig | LanceDbVectorStoreConfig;\n\nexport interface VectorStoreResolution {\n active: VectorStoreConfig | null;\n available: VectorStoreConfig[];\n}\n\nexport interface VectorStoreRequestTarget {\n store: VectorStoreName;\n query_target: string;\n upsert_target: string;\n}\n\nexport interface VectorQueryPlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorRecord {\n id: string;\n vector: number[];\n payload?: Record<string, unknown>;\n}\n\nexport interface VectorUpsertPlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorDeletePlan {\n target: VectorStoreRequestTarget;\n method: \"POST\" | \"LOCAL\";\n headers: Record<string, string>;\n body: Record<string, unknown>;\n}\n\nexport interface VectorQueryHit {\n id: string;\n score: number;\n payload?: Record<string, unknown>;\n}\n\nexport interface VectorUpsertResult {\n status: string;\n}\n\nexport type VectorHttpResponse = SearchHttpResponse;\n\nexport type VectorRequestFetcher = SearchHttpFetcher<VectorHttpResponse>;\n\nexport interface ExecuteVectorRequestOptions {\n timeout_ms?: number;\n fetcher?: VectorRequestFetcher;\n warnings?: string[];\n}\n\ntype VectorSettingsInput = {\n vector_store?: {\n qdrant?: {\n url?: string;\n api_key?: string;\n };\n lancedb?: {\n path?: string;\n };\n };\n};\n\ntype RemoteVectorMethod = \"DELETE\" | \"POST\" | \"PUT\";\n\nconst DEFAULT_COLLECTION = \"pm_items\";\nconst LANCE_DB_LOCAL_SNAPSHOT_DIR = \".pm-cli-local-vectors\";\nconst LANCE_DB_LOCAL_SNAPSHOT_VERSION = 1;\ninterface LanceDbLocalTableCacheEntry {\n records: Map<string, VectorRecord>;\n mtimeMs: number | null;\n size: number | null;\n}\n\nconst lanceDbLocalTables = new Map<string, LanceDbLocalTableCacheEntry>();\n\nfunction normalizeVector(value: unknown): number[] {\n if (!isFiniteNumberArray(value) || value.length === 0) {\n throw new Error(\"Vector values must be a non-empty numeric array\");\n }\n return [...value];\n}\n\nfunction normalizeLimit(value: number): number {\n if (!Number.isFinite(value) || value <= 0) {\n throw new Error(\"Vector query limit must be a positive number\");\n }\n return Math.floor(value);\n}\n\nfunction normalizeQdrantQueryResponse(payload: unknown): VectorQueryHit[] {\n const result = (payload as { result?: unknown }).result;\n if (!Array.isArray(result)) {\n throw new TypeError(\"Qdrant query response must include a result array\");\n }\n const hits = result.map((entry, index) => {\n const idValue = (entry as { id?: unknown }).id;\n const idCandidate = typeof idValue === \"number\" ? String(idValue) : idValue;\n const id = toNonEmptyString(idCandidate);\n if (!id) {\n throw new Error(`Qdrant query response entry at index ${index} is missing a non-empty id`);\n }\n\n const score = (entry as { score?: unknown }).score;\n if (typeof score !== \"number\" || !Number.isFinite(score)) {\n throw new TypeError(`Qdrant query response entry at index ${index} is missing a finite numeric score`);\n }\n\n const payloadValue = (entry as { payload?: unknown }).payload;\n if (\n payloadValue !== undefined &&\n (typeof payloadValue !== \"object\" || payloadValue === null || Array.isArray(payloadValue))\n ) {\n throw new Error(`Qdrant query response entry at index ${index} must provide payload as an object when set`);\n }\n\n return {\n id,\n score,\n ...(payloadValue ? { payload: payloadValue as Record<string, unknown> } : {}),\n };\n });\n hits.sort((left, right) => {\n if (left.score !== right.score) {\n return right.score - left.score;\n }\n return left.id.localeCompare(right.id);\n });\n return hits;\n}\n\nfunction normalizeQdrantUpsertResponse(payload: unknown): VectorUpsertResult {\n const nestedStatus = toNonEmptyString((payload as { result?: { status?: unknown } }).result?.status);\n if (nestedStatus) {\n return { status: nestedStatus };\n }\n const topLevelStatus = toNonEmptyString((payload as { status?: unknown }).status);\n if (topLevelStatus) {\n return { status: topLevelStatus };\n }\n throw new Error(\"Qdrant upsert response must include status metadata\");\n}\n\nasync function executeRemoteVectorPlan(\n endpoint: string,\n plan: {\n method: RemoteVectorMethod;\n headers: Record<string, string>;\n body: Record<string, unknown>;\n },\n timeoutMs: number,\n fetcher: VectorRequestFetcher,\n requestKind: \"query\" | \"upsert\" | \"delete\",\n): Promise<unknown> {\n return await executeSearchJsonRequest({\n endpoint,\n method: plan.method,\n headers: plan.headers,\n body: plan.body,\n timeoutMs,\n fetcher,\n requestLabel: `Vector ${requestKind} request`,\n responseLabel: `Vector ${requestKind} response`,\n });\n}\n\nfunction resolveQdrantStore(settings: VectorSettingsInput): QdrantVectorStoreConfig | null {\n const url = toNonEmptyString(settings.vector_store?.qdrant?.url);\n if (!url) {\n return null;\n }\n const apiKey = toNonEmptyString(settings.vector_store?.qdrant?.api_key);\n return {\n name: \"qdrant\",\n url,\n ...(apiKey ? { api_key: apiKey } : {}),\n };\n}\n\nfunction resolveLanceDbStore(settings: VectorSettingsInput): LanceDbVectorStoreConfig | null {\n const lancedbPath = toNonEmptyString(settings.vector_store?.lancedb?.path);\n if (!lancedbPath) {\n return null;\n }\n return {\n name: \"lancedb\",\n path: lancedbPath,\n };\n}\n\nfunction normalizeVectorRecords(records: VectorRecord[]): VectorRecord[] {\n if (!Array.isArray(records) || records.length === 0) {\n throw new Error(\"Vector upsert records must include at least one entry\");\n }\n return records.map((record, index) => {\n const id = toNonEmptyString(record.id);\n if (!id) {\n throw new Error(`Vector upsert record at index ${index} is missing a non-empty id`);\n }\n const vector = normalizeVector(record.vector);\n const payload = record.payload;\n if (payload !== undefined && (typeof payload !== \"object\" || payload === null || Array.isArray(payload))) {\n throw new Error(`Vector upsert record at index ${index} must provide payload as an object when set`);\n }\n return {\n id,\n vector,\n ...(payload ? { payload } : {}),\n };\n });\n}\n\nfunction normalizeVectorDeleteIds(ids: string[]): string[] {\n if (!Array.isArray(ids) || ids.length === 0) {\n throw new Error(\"Vector delete ids must include at least one entry\");\n }\n const normalizedIds = ids\n .map((id, index) => {\n const normalized = toNonEmptyString(id);\n if (!normalized) {\n throw new Error(`Vector delete id at index ${index} is missing a non-empty value`);\n }\n return normalized;\n })\n .sort((left, right) => left.localeCompare(right));\n const uniqueIds: string[] = [];\n for (const id of normalizedIds) {\n if (uniqueIds.at(-1) !== id) {\n uniqueIds.push(id);\n }\n }\n return uniqueIds;\n}\n\nfunction resolveQdrantDeleteTarget(upsertTarget: string): string {\n return upsertTarget.replace(/\\/points\\?wait=true$/, \"/points/delete?wait=true\");\n}\n\nfunction resolveQdrantCollectionTarget(upsertTarget: string): string {\n return upsertTarget.replace(/\\/points\\?wait=true$/, \"\");\n}\n\nfunction buildQdrantJsonHeaders(store: QdrantVectorStoreConfig): Record<string, string> {\n return {\n \"content-type\": \"application/json\",\n ...(store.api_key ? { \"api-key\": store.api_key } : {}),\n };\n}\n\nfunction getLanceDbLocalTableKey(storePath: string, table: string): string {\n return getLanceDbSnapshotPath(storePath, table);\n}\n\nfunction getLanceDbSnapshotPath(storePath: string, table: string): string {\n return join(resolve(storePath), LANCE_DB_LOCAL_SNAPSHOT_DIR, `${table}.json`);\n}\n\nfunction isNodeErrorWithCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && (error as { code?: unknown }).code === code;\n}\n\nfunction normalizeSnapshotRecord(entry: unknown, index: number, snapshotPath: string): VectorRecord {\n const id = toNonEmptyString((entry as { id?: unknown }).id);\n if (!id) {\n throw new Error(`LanceDB local snapshot '${snapshotPath}' record at index ${index} is missing a non-empty id`);\n }\n const vector = normalizeVector((entry as { vector?: unknown }).vector);\n const payload = (entry as { payload?: unknown }).payload;\n if (payload !== undefined && (typeof payload !== \"object\" || payload === null || Array.isArray(payload))) {\n throw new Error(\n `LanceDB local snapshot '${snapshotPath}' record '${id}' must provide payload as an object when set`,\n );\n }\n return {\n id,\n vector,\n ...(payload ? { payload: payload as Record<string, unknown> } : {}),\n };\n}\n\nfunction parseLanceDbSnapshot(snapshotPath: string, expectedTable: string, raw: string): Map<string, VectorRecord> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch (error) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' is not valid JSON: ${toErrorMessage(error)}`);\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' must be a JSON object`);\n }\n\n const version = (parsed as { version?: unknown }).version;\n if (version !== LANCE_DB_LOCAL_SNAPSHOT_VERSION) {\n throw new Error(\n `LanceDB local snapshot at '${snapshotPath}' must include version=${LANCE_DB_LOCAL_SNAPSHOT_VERSION}`,\n );\n }\n\n const table = toNonEmptyString((parsed as { table?: unknown }).table);\n if (!table) {\n throw new Error(`LanceDB local snapshot at '${snapshotPath}' must include a non-empty table value`);\n }\n if (table !== expectedTable) {\n throw new Error(\n `LanceDB local snapshot at '${snapshotPath}' table mismatch: expected '${expectedTable}', received '${table}'`,\n );\n }\n\n const recordsValue = (parsed as { records?: unknown }).records;\n if (!Array.isArray(recordsValue)) {\n throw new TypeError(`LanceDB local snapshot at '${snapshotPath}' must include a records array`);\n }\n\n const tableRecords = new Map<string, VectorRecord>();\n for (let index = 0; index < recordsValue.length; index += 1) {\n const record = normalizeSnapshotRecord(recordsValue[index], index, snapshotPath);\n tableRecords.set(record.id, record);\n }\n return tableRecords;\n}\n\nasync function loadLanceDbLocalTable(storePath: string, table: string): Promise<Map<string, VectorRecord>> {\n const key = getLanceDbLocalTableKey(storePath, table);\n const snapshotPath = getLanceDbSnapshotPath(storePath, table);\n let snapshotStats: { mtimeMs: number; size: number } | null = null;\n try {\n const stats = await stat(snapshotPath);\n snapshotStats = { mtimeMs: stats.mtimeMs, size: stats.size };\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw error;\n }\n }\n\n const cached = lanceDbLocalTables.get(key);\n if (cached && !snapshotStats) {\n if (cached.mtimeMs === null && cached.size === null && cached.records.size === 0) {\n return cached.records;\n }\n const loaded = new Map<string, VectorRecord>();\n lanceDbLocalTables.set(key, { records: loaded, mtimeMs: null, size: null });\n return loaded;\n }\n if (\n cached &&\n snapshotStats &&\n cached.mtimeMs === snapshotStats.mtimeMs &&\n cached.size === snapshotStats.size\n ) {\n return cached.records;\n }\n\n let loaded = new Map<string, VectorRecord>();\n try {\n const raw = await readFile(snapshotPath, \"utf8\");\n loaded = parseLanceDbSnapshot(snapshotPath, table, raw);\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw error;\n }\n }\n lanceDbLocalTables.set(key, {\n records: loaded,\n mtimeMs: snapshotStats?.mtimeMs ?? null,\n size: snapshotStats?.size ?? null,\n });\n return loaded;\n}\n\nfunction buildSnapshotRecords(table: Map<string, VectorRecord>): VectorRecord[] {\n const records = [...table.values()];\n records.sort((left, right) => left.id.localeCompare(right.id));\n return records.map((record) => ({\n id: record.id,\n vector: [...record.vector],\n ...(record.payload ? { payload: record.payload } : {}),\n }));\n}\n\nasync function removeSnapshotFile(snapshotPath: string): Promise<void> {\n try {\n await unlink(snapshotPath);\n } catch (error) {\n if (!isNodeErrorWithCode(error, \"ENOENT\")) {\n throw new Error(`LanceDB local snapshot delete failed at '${snapshotPath}': ${toErrorMessage(error)}`);\n }\n }\n}\n\nasync function persistLanceDbLocalTable(storePath: string, tableName: string, table: Map<string, VectorRecord>): Promise<void> {\n const snapshotPath = getLanceDbSnapshotPath(storePath, tableName);\n if (table.size === 0) {\n await removeSnapshotFile(snapshotPath);\n return;\n }\n\n const snapshotDir = dirname(snapshotPath);\n try {\n await mkdir(snapshotDir, { recursive: true });\n } catch (error) {\n throw new Error(\n `LanceDB local snapshot directory create failed at '${snapshotDir}': ${toErrorMessage(error)}`,\n );\n }\n\n const tempPath = join(\n snapshotDir,\n `${basename(snapshotPath)}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`,\n );\n // Serialize compactly: the snapshot is an internal, gitignored cache re-read via\n // JSON.parse (whitespace-agnostic). Pretty-printing put every embedding float on its\n // own indented line, roughly doubling file size and parse/serialize cost — a real\n // per-mutation latency tax on large indexes. Compact JSON keeps it instant.\n const serialized = `${JSON.stringify({\n version: LANCE_DB_LOCAL_SNAPSHOT_VERSION,\n table: tableName,\n records: buildSnapshotRecords(table),\n })}\\n`;\n try {\n await writeFile(tempPath, serialized, \"utf8\");\n await rename(tempPath, snapshotPath);\n } catch (error) {\n await unlink(tempPath).catch(() => {});\n throw new Error(`LanceDB local snapshot write failed at '${snapshotPath}': ${toErrorMessage(error)}`);\n }\n}\n\nasync function resetLanceDbLocalTable(storePath: string, tableName: string): Promise<void> {\n const key = getLanceDbLocalTableKey(storePath, tableName);\n const snapshotPath = getLanceDbSnapshotPath(storePath, tableName);\n await removeSnapshotFile(snapshotPath);\n lanceDbLocalTables.delete(key);\n}\n\nfunction l2Norm(vector: number[]): number {\n let sumSq = 0;\n for (let index = 0; index < vector.length; index += 1) {\n sumSq += vector[index] * vector[index];\n }\n return Math.sqrt(sumSq);\n}\n\nfunction cosineSimilarity(left: number[], right: number[]): number {\n let dotProd = 0;\n for (let index = 0; index < left.length; index += 1) {\n dotProd += left[index] * right[index];\n }\n const leftNorm = l2Norm(left);\n const rightNorm = l2Norm(right);\n if (leftNorm === 0 || rightNorm === 0) {\n return 0;\n }\n return dotProd / (leftNorm * rightNorm);\n}\n\nexport function resolveVectorStores(settings: PmSettings | VectorSettingsInput): VectorStoreResolution {\n const qdrant = resolveQdrantStore(settings);\n const lancedb = resolveLanceDbStore(settings);\n const available = [qdrant, lancedb].filter((entry): entry is VectorStoreConfig => entry !== null);\n // Honor `settings.vector_store.adapter` when set: if both built-in stores\n // are configured, the preferred adapter wins; otherwise fall back to the\n // first available entry (preserves the previous tie-break: qdrant > lancedb).\n // Match case-insensitively so \"Qdrant\" / \"LanceDB\" / \"lancedb\" all work.\n const preferredName = toNonEmptyString(\n (settings as { vector_store?: { adapter?: unknown } }).vector_store?.adapter,\n );\n const preferredKey = preferredName ? preferredName.toLowerCase() : null;\n const preferred = preferredKey\n ? available.find((entry) => entry.name === preferredKey)\n : undefined;\n return {\n active: preferred ?? available[0] ?? null,\n available,\n };\n}\n\nexport function resolveVectorStoreRequestTarget(store: VectorStoreConfig): VectorStoreRequestTarget {\n if (store.name === \"qdrant\") {\n const baseUrl = trimTrailingSlashes(store.url);\n return {\n store: \"qdrant\",\n query_target: `${baseUrl}/collections/${DEFAULT_COLLECTION}/points/search`,\n upsert_target: `${baseUrl}/collections/${DEFAULT_COLLECTION}/points?wait=true`,\n };\n }\n const encodedPath = encodeURIComponent(store.path);\n return {\n store: \"lancedb\",\n query_target: `lancedb://${encodedPath}#${DEFAULT_COLLECTION}`,\n upsert_target: `lancedb://${encodedPath}#${DEFAULT_COLLECTION}`,\n };\n}\n\nexport function buildVectorQueryPlan(store: VectorStoreConfig, vector: number[], limit: number): VectorQueryPlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedVector = normalizeVector(vector);\n const normalizedLimit = normalizeLimit(limit);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: buildQdrantJsonHeaders(store),\n body: {\n vector: normalizedVector,\n limit: normalizedLimit,\n with_payload: true,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n vector: normalizedVector,\n limit: normalizedLimit,\n },\n };\n}\n\nexport function buildVectorUpsertPlan(store: VectorStoreConfig, records: VectorRecord[]): VectorUpsertPlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedRecords = normalizeVectorRecords(records);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: buildQdrantJsonHeaders(store),\n body: {\n points: normalizedRecords,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n records: normalizedRecords,\n },\n };\n}\n\nexport function buildVectorDeletePlan(store: VectorStoreConfig, ids: string[]): VectorDeletePlan {\n const target = resolveVectorStoreRequestTarget(store);\n const normalizedIds = normalizeVectorDeleteIds(ids);\n if (store.name === \"qdrant\") {\n return {\n target,\n method: \"POST\",\n headers: buildQdrantJsonHeaders(store),\n body: {\n points: normalizedIds,\n },\n };\n }\n return {\n target,\n method: \"LOCAL\",\n headers: {},\n body: {\n table: DEFAULT_COLLECTION,\n ids: normalizedIds,\n },\n };\n}\n\nexport async function executeVectorQuery(\n store: VectorStoreConfig,\n vector: number[],\n limit: number,\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorQueryHit[]> {\n const plan = buildVectorQueryPlan(store, vector, limit);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const queryBody = plan.body as {\n table: string;\n vector: number[];\n limit: number;\n };\n const table = await loadLanceDbLocalTable(lanceDbStore.path, queryBody.table);\n if (table.size === 0) {\n return [];\n }\n const queryVector = normalizeVector(queryBody.vector);\n const queryLimit = normalizeLimit(queryBody.limit);\n const hits: VectorQueryHit[] = [];\n let dimensionMismatchCount = 0;\n for (const record of table.values()) {\n if (record.vector.length !== queryVector.length) {\n dimensionMismatchCount++;\n continue;\n }\n hits.push({\n id: record.id,\n score: cosineSimilarity(queryVector, record.vector),\n ...(record.payload ? { payload: record.payload } : {}),\n });\n }\n if (dimensionMismatchCount > 0 && options.warnings) {\n options.warnings.push(\n `vector_dimension_mismatch:${dimensionMismatchCount} records skipped (expected ${queryVector.length} dimensions)`,\n );\n }\n hits.sort((left, right) => {\n if (left.score !== right.score) {\n return right.score - left.score;\n }\n return left.id.localeCompare(right.id);\n });\n return hits.slice(0, queryLimit);\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n plan.target.query_target,\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"query\",\n );\n return normalizeQdrantQueryResponse(payload);\n}\n\nexport async function executeVectorUpsert(\n store: VectorStoreConfig,\n records: VectorRecord[],\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorUpsertResult> {\n const plan = buildVectorUpsertPlan(store, records);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const upsertBody = plan.body as {\n table: string;\n records: VectorRecord[];\n };\n const key = getLanceDbLocalTableKey(lanceDbStore.path, upsertBody.table);\n const table = await loadLanceDbLocalTable(lanceDbStore.path, upsertBody.table);\n for (const record of upsertBody.records) {\n table.set(record.id, record);\n }\n await persistLanceDbLocalTable(lanceDbStore.path, upsertBody.table, table);\n const snapshotPath = getLanceDbSnapshotPath(lanceDbStore.path, upsertBody.table);\n const snapshotStats = await stat(snapshotPath);\n lanceDbLocalTables.set(key, {\n records: table,\n mtimeMs: snapshotStats.mtimeMs,\n size: snapshotStats.size,\n });\n return { status: \"ok\" };\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n plan.target.upsert_target,\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"upsert\",\n );\n return normalizeQdrantUpsertResponse(payload);\n}\n\nexport async function executeVectorDelete(\n store: VectorStoreConfig,\n ids: string[],\n options: ExecuteVectorRequestOptions = {},\n): Promise<VectorUpsertResult> {\n const plan = buildVectorDeletePlan(store, ids);\n if (plan.method === \"LOCAL\") {\n const lanceDbStore = store as LanceDbVectorStoreConfig;\n const deleteBody = plan.body as {\n table: string;\n ids: string[];\n };\n const key = getLanceDbLocalTableKey(lanceDbStore.path, deleteBody.table);\n const table = await loadLanceDbLocalTable(lanceDbStore.path, deleteBody.table);\n if (table.size === 0) {\n return { status: \"ok\" };\n }\n for (const id of deleteBody.ids) {\n table.delete(id);\n }\n await persistLanceDbLocalTable(lanceDbStore.path, deleteBody.table, table);\n if (table.size === 0) {\n lanceDbLocalTables.delete(key);\n } else {\n const snapshotPath = getLanceDbSnapshotPath(lanceDbStore.path, deleteBody.table);\n const snapshotStats = await stat(snapshotPath);\n lanceDbLocalTables.set(key, {\n records: table,\n mtimeMs: snapshotStats.mtimeMs,\n size: snapshotStats.size,\n });\n }\n return { status: \"ok\" };\n }\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const payload = await executeRemoteVectorPlan(\n resolveQdrantDeleteTarget(plan.target.upsert_target),\n {\n method: \"POST\",\n headers: plan.headers,\n body: plan.body,\n },\n timeoutMs,\n fetcher,\n \"delete\",\n );\n return normalizeQdrantUpsertResponse(payload);\n}\n\nexport async function executeVectorReset(\n store: VectorStoreConfig,\n knownIds: string[] = [],\n options: ExecuteVectorRequestOptions = {},\n vectorDimension?: number,\n): Promise<VectorUpsertResult> {\n if (store.name === \"lancedb\") {\n await resetLanceDbLocalTable(store.path, DEFAULT_COLLECTION);\n return { status: \"ok\" };\n }\n if (vectorDimension !== undefined) {\n if (!Number.isInteger(vectorDimension) || vectorDimension <= 0) {\n throw new Error(\"Vector reset dimension must be a positive integer when provided\");\n }\n const target = resolveVectorStoreRequestTarget(store);\n const collectionTarget = resolveQdrantCollectionTarget(target.upsert_target);\n const timeoutMs = normalizeSearchHttpTimeoutMs(options.timeout_ms, \"Vector request\");\n const fetcher = resolveSearchHttpFetcher(options.fetcher, \"Vector request\");\n const headers = buildQdrantJsonHeaders(store);\n try {\n await executeRemoteVectorPlan(\n collectionTarget,\n {\n method: \"DELETE\",\n headers,\n body: {},\n },\n timeoutMs,\n fetcher,\n \"delete\",\n );\n } catch (error: unknown) {\n if (!toErrorMessage(error).includes(\"failed with status 404\")) {\n throw error;\n }\n }\n const payload = await executeRemoteVectorPlan(\n collectionTarget,\n {\n method: \"PUT\",\n headers,\n body: {\n vectors: {\n size: vectorDimension,\n distance: \"Cosine\",\n },\n },\n },\n timeoutMs,\n fetcher,\n \"upsert\",\n );\n return normalizeQdrantUpsertResponse(payload);\n }\n const idsToDelete = knownIds.map((id) => id.trim()).filter((id) => id.length > 0);\n if (idsToDelete.length === 0) {\n return { status: \"ok\" };\n }\n return await executeVectorDelete(store, idsToDelete, options);\n}\n"],"names":[],"mappings":"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","debugId":"d7830a17-8330-53f9-8d7b-b978e22febf8"}
@@ -0,0 +1,13 @@
1
+ export interface VectorizationEmbeddingIdentity {
2
+ provider: string;
3
+ model: string;
4
+ }
5
+ export interface VectorizationEmbeddingMetadata extends VectorizationEmbeddingIdentity {
6
+ vector_dimension: number;
7
+ }
8
+ export declare function buildVectorizationEmbeddingIdentity(provider: unknown, model: unknown): VectorizationEmbeddingIdentity | null;
9
+ export declare function normalizeVectorizationEmbeddingMetadata(value: unknown): VectorizationEmbeddingMetadata | null;
10
+ export declare function buildVectorizationEmbeddingMetadata(identity: VectorizationEmbeddingIdentity, vectorDimension: number): VectorizationEmbeddingMetadata;
11
+ export declare function hasVectorizationEmbeddingIdentityChanged(metadata: VectorizationEmbeddingMetadata | null | undefined, identity: VectorizationEmbeddingIdentity): boolean;
12
+ export declare function hasVectorizationVectorDimensionChanged(metadata: VectorizationEmbeddingMetadata | null | undefined, vectorDimension: number): boolean;
13
+ export declare function inferConsistentVectorDimension(vectors: readonly number[][], context: string): number;
@@ -0,0 +1,65 @@
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]="918ae1b0-5b96-58f5-b586-3d1dcb074122")}catch(e){}}();
3
+ import { toNonEmptyString } from "../shared/primitives.js";
4
+ export function buildVectorizationEmbeddingIdentity(provider, model) {
5
+ const normalizedProvider = toNonEmptyString(provider);
6
+ const normalizedModel = toNonEmptyString(model);
7
+ if (!normalizedProvider || !normalizedModel) {
8
+ return null;
9
+ }
10
+ return {
11
+ provider: normalizedProvider,
12
+ model: normalizedModel,
13
+ };
14
+ }
15
+ export function normalizeVectorizationEmbeddingMetadata(value) {
16
+ if (value === undefined || value === null) {
17
+ return null;
18
+ }
19
+ if (typeof value !== "object" || Array.isArray(value)) {
20
+ throw new Error("Vectorization embedding metadata must be an object when set");
21
+ }
22
+ const identity = buildVectorizationEmbeddingIdentity(value.provider, value.model);
23
+ const vectorDimension = value.vector_dimension;
24
+ if (!identity || typeof vectorDimension !== "number" || !Number.isInteger(vectorDimension) || vectorDimension <= 0) {
25
+ throw new Error("Vectorization embedding metadata must include provider, model, and positive vector_dimension");
26
+ }
27
+ return {
28
+ ...identity,
29
+ vector_dimension: vectorDimension,
30
+ };
31
+ }
32
+ export function buildVectorizationEmbeddingMetadata(identity, vectorDimension) {
33
+ if (!Number.isInteger(vectorDimension) || vectorDimension <= 0) {
34
+ throw new Error("Vectorization embedding metadata requires a positive vector dimension");
35
+ }
36
+ return {
37
+ provider: identity.provider,
38
+ model: identity.model,
39
+ vector_dimension: vectorDimension,
40
+ };
41
+ }
42
+ export function hasVectorizationEmbeddingIdentityChanged(metadata, identity) {
43
+ return !metadata || metadata.provider !== identity.provider || metadata.model !== identity.model;
44
+ }
45
+ export function hasVectorizationVectorDimensionChanged(metadata, vectorDimension) {
46
+ return Boolean(metadata && metadata.vector_dimension !== vectorDimension);
47
+ }
48
+ export function inferConsistentVectorDimension(vectors, context) {
49
+ if (vectors.length === 0) {
50
+ throw new Error(`${context} returned no vectors`);
51
+ }
52
+ const firstVector = vectors[0];
53
+ const dimension = firstVector.length;
54
+ if (!Number.isInteger(dimension) || dimension <= 0) {
55
+ throw new Error(`${context} returned an empty vector`);
56
+ }
57
+ for (let index = 1; index < vectors.length; index += 1) {
58
+ if (vectors[index]?.length !== dimension) {
59
+ throw new Error(`${context} returned mixed vector dimensions`);
60
+ }
61
+ }
62
+ return dimension;
63
+ }
64
+ //# sourceMappingURL=vectorization-metadata.js.map
65
+ //# debugId=918ae1b0-5b96-58f5-b586-3d1dcb074122
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorization-metadata.js","sources":["core/search/vectorization-metadata.ts"],"sourceRoot":"/","sourcesContent":["import { toNonEmptyString } from \"../shared/primitives.js\";\n\nexport interface VectorizationEmbeddingIdentity {\n provider: string;\n model: string;\n}\n\nexport interface VectorizationEmbeddingMetadata extends VectorizationEmbeddingIdentity {\n vector_dimension: number;\n}\n\nexport function buildVectorizationEmbeddingIdentity(\n provider: unknown,\n model: unknown,\n): VectorizationEmbeddingIdentity | null {\n const normalizedProvider = toNonEmptyString(provider);\n const normalizedModel = toNonEmptyString(model);\n if (!normalizedProvider || !normalizedModel) {\n return null;\n }\n return {\n provider: normalizedProvider,\n model: normalizedModel,\n };\n}\n\nexport function normalizeVectorizationEmbeddingMetadata(value: unknown): VectorizationEmbeddingMetadata | null {\n if (value === undefined || value === null) {\n return null;\n }\n if (typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Vectorization embedding metadata must be an object when set\");\n }\n const identity = buildVectorizationEmbeddingIdentity(\n (value as { provider?: unknown }).provider,\n (value as { model?: unknown }).model,\n );\n const vectorDimension = (value as { vector_dimension?: unknown }).vector_dimension;\n if (!identity || typeof vectorDimension !== \"number\" || !Number.isInteger(vectorDimension) || vectorDimension <= 0) {\n throw new Error(\"Vectorization embedding metadata must include provider, model, and positive vector_dimension\");\n }\n return {\n ...identity,\n vector_dimension: vectorDimension,\n };\n}\n\nexport function buildVectorizationEmbeddingMetadata(\n identity: VectorizationEmbeddingIdentity,\n vectorDimension: number,\n): VectorizationEmbeddingMetadata {\n if (!Number.isInteger(vectorDimension) || vectorDimension <= 0) {\n throw new Error(\"Vectorization embedding metadata requires a positive vector dimension\");\n }\n return {\n provider: identity.provider,\n model: identity.model,\n vector_dimension: vectorDimension,\n };\n}\n\nexport function hasVectorizationEmbeddingIdentityChanged(\n metadata: VectorizationEmbeddingMetadata | null | undefined,\n identity: VectorizationEmbeddingIdentity,\n): boolean {\n return !metadata || metadata.provider !== identity.provider || metadata.model !== identity.model;\n}\n\nexport function hasVectorizationVectorDimensionChanged(\n metadata: VectorizationEmbeddingMetadata | null | undefined,\n vectorDimension: number,\n): boolean {\n return Boolean(metadata && metadata.vector_dimension !== vectorDimension);\n}\n\nexport function inferConsistentVectorDimension(vectors: readonly number[][], context: string): number {\n if (vectors.length === 0) {\n throw new Error(`${context} returned no vectors`);\n }\n const firstVector = vectors[0] as number[];\n const dimension = firstVector.length;\n if (!Number.isInteger(dimension) || dimension <= 0) {\n throw new Error(`${context} returned an empty vector`);\n }\n for (let index = 1; index < vectors.length; index += 1) {\n if (vectors[index]?.length !== dimension) {\n throw new Error(`${context} returned mixed vector dimensions`);\n }\n }\n return dimension;\n}\n"],"names":[],"mappings":"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","debugId":"918ae1b0-5b96-58f5-b586-3d1dcb074122"}
@@ -10,9 +10,9 @@ export declare const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefi
10
10
  export declare const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition;
11
11
  export declare const PM_DIRNAME = ".agents/pm";
12
12
  export declare const SETTINGS_FILENAME = "settings.json";
13
- export declare const PM_CORE_REQUIRED_SUBDIRS: readonly ["", "epics", "features", "tasks", "chores", "issues", "schema", "history", "index", "search", "extensions", "locks"];
13
+ export declare const PM_CORE_REQUIRED_SUBDIRS: readonly ["", "epics", "features", "tasks", "chores", "issues", "schema", "history", "search", "extensions", "locks"];
14
14
  export declare const PM_OPTIONAL_TYPE_SUBDIRS: readonly ["decisions", "events", "reminders", "milestones", "meetings", "plans"];
15
- export declare const PM_REQUIRED_SUBDIRS: readonly ["", "epics", "features", "tasks", "chores", "issues", "schema", "history", "index", "search", "extensions", "locks", "decisions", "events", "reminders", "milestones", "meetings", "plans"];
15
+ export declare const PM_REQUIRED_SUBDIRS: readonly ["", "epics", "features", "tasks", "chores", "issues", "schema", "history", "search", "extensions", "locks", "decisions", "events", "reminders", "milestones", "meetings", "plans"];
16
16
  export declare const TYPE_TO_FOLDER: Record<BuiltinItemType, string>;
17
17
  export declare const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string>;
18
18
  type BuiltinGovernancePreset = Exclude<GovernancePreset, "custom">;
@@ -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]="0658378d-3fa8-59fa-ab4a-8f1bba265e01")}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]="027bbaac-2c77-535b-b51f-e1a51a9fccdb")}catch(e){}}();
3
3
  import { createDefaultExtensionGovernancePolicy } from "../extensions/extension-types.js";
4
4
  /**
5
5
  * Canonical default lifecycle status model and workflow role mapping.
@@ -55,7 +55,6 @@ export const PM_CORE_REQUIRED_SUBDIRS = [
55
55
  "issues",
56
56
  "schema",
57
57
  "history",
58
- "index",
59
58
  "search",
60
59
  "extensions",
61
60
  "locks",
@@ -375,4 +374,4 @@ export function resolveTelemetryErrorCategory(errorCode) {
375
374
  return "unknown";
376
375
  }
377
376
  //# sourceMappingURL=constants.js.map
378
- //# debugId=0658378d-3fa8-59fa-ab4a-8f1bba265e01
377
+ //# debugId=027bbaac-2c77-535b-b51f-e1a51a9fccdb
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["core/shared/constants.ts"],"sourceRoot":"/","sourcesContent":["import type {\n BuiltinItemType,\n GovernancePreset,\n GovernanceSettings,\n ItemFrontMatter,\n PmSettings,\n RuntimeStatusDefinition,\n RuntimeWorkflowDefinition,\n} from \"../../types/index.js\";\nimport { createDefaultExtensionGovernancePolicy } from \"../extensions/extension-types.js\";\n\n/**\n * Canonical default lifecycle status model and workflow role mapping.\n *\n * Single source of truth: `SETTINGS_DEFAULTS.schema` references these, and\n * `src/core/schema/runtime-schema.ts` re-exports them as\n * `DEFAULT_RUNTIME_STATUS_DEFINITIONS` / `DEFAULT_RUNTIME_WORKFLOW`.\n */\nexport const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = Object.freeze([\n {\n id: \"draft\",\n roles: [\"draft\"],\n },\n {\n id: \"open\",\n roles: [\"active\", \"default_open\"],\n },\n {\n id: \"in_progress\",\n aliases: [\"in-progress\"],\n roles: [\"active\"],\n },\n {\n id: \"blocked\",\n roles: [\"blocked\"],\n },\n {\n id: \"closed\",\n roles: [\"terminal\", \"terminal_done\", \"default_close\"],\n },\n {\n id: \"canceled\",\n aliases: [\"cancelled\"],\n roles: [\"terminal\", \"terminal_canceled\", \"default_cancel\"],\n },\n]);\n\nexport const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition = Object.freeze({\n draft_status: \"draft\",\n open_status: \"open\",\n in_progress_status: \"in_progress\",\n blocked_status: \"blocked\",\n close_status: \"closed\",\n canceled_status: \"canceled\",\n});\n\nexport const PM_DIRNAME = \".agents/pm\";\nexport const SETTINGS_FILENAME = \"settings.json\";\n\nexport const PM_CORE_REQUIRED_SUBDIRS = [\n \"\",\n \"epics\",\n \"features\",\n \"tasks\",\n \"chores\",\n \"issues\",\n \"schema\",\n \"history\",\n \"index\",\n \"search\",\n \"extensions\",\n \"locks\",\n] as const;\n\nexport const PM_OPTIONAL_TYPE_SUBDIRS = [\n \"decisions\",\n \"events\",\n \"reminders\",\n \"milestones\",\n \"meetings\",\n \"plans\",\n] as const;\n\nexport const PM_REQUIRED_SUBDIRS = [...PM_CORE_REQUIRED_SUBDIRS, ...PM_OPTIONAL_TYPE_SUBDIRS] as const;\n\nexport const TYPE_TO_FOLDER: Record<BuiltinItemType, string> = {\n Epic: \"epics\",\n Feature: \"features\",\n Task: \"tasks\",\n Chore: \"chores\",\n Issue: \"issues\",\n Decision: \"decisions\",\n Event: \"events\",\n Reminder: \"reminders\",\n Milestone: \"milestones\",\n Meeting: \"meetings\",\n Plan: \"plans\",\n};\n\nexport const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string> = [\n \"id\",\n \"title\",\n \"description\",\n \"type\",\n \"source_type\",\n \"type_options\",\n \"status\",\n \"priority\",\n \"tags\",\n \"created_at\",\n \"updated_at\",\n \"deadline\",\n \"reminders\",\n \"events\",\n \"closed_at\",\n \"assignee\",\n \"source_owner\",\n \"author\",\n \"estimated_minutes\",\n \"acceptance_criteria\",\n \"design\",\n \"external_ref\",\n \"definition_of_ready\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"why_now\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"repro_steps\",\n \"resolution\",\n \"expected_result\",\n \"actual_result\",\n \"affected_version\",\n \"fixed_version\",\n \"component\",\n \"regression\",\n \"customer_impact\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"test_runs\",\n \"docs\",\n \"close_reason\",\n \"plan_mode\",\n \"plan_scope\",\n \"plan_harness\",\n \"plan_resume_context\",\n \"plan_validation\",\n \"plan_decisions\",\n \"plan_discoveries\",\n \"plan_steps\",\n];\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\n\nexport const GOVERNANCE_PRESET_DEFAULTS: Record<BuiltinGovernancePreset, Omit<GovernanceSettings, \"preset\">> = {\n minimal: {\n ownership_enforcement: \"none\",\n create_mode_default: \"progressive\",\n close_validation_default: \"off\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: false,\n },\n default: {\n ownership_enforcement: \"warn\",\n create_mode_default: \"progressive\",\n close_validation_default: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: true,\n },\n strict: {\n ownership_enforcement: \"strict\",\n create_mode_default: \"strict\",\n close_validation_default: \"strict\",\n parent_reference: \"strict_error\",\n metadata_profile: \"strict\",\n force_required_for_stale_lock: true,\n },\n};\n\nexport const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS = [\n \"no active blocker\",\n \"ready for planned execution sequencing\",\n \"work completed\",\n \"work is closed\",\n] as const;\n\nexport const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS = {\n blocked_reason: [\"no active blocker because work is closed\", \"work is closed\"],\n resolution: [\"closed with implementation evidence\", \"closed with verification evidence\", \"work completed and recorded\", \"work is closed\"],\n actual_result: [\"closed and recorded\", \"work completed\", \"work completed and recorded\"],\n} as const;\n\nfunction cloneOptionalArray<T>(values: readonly T[] | undefined): T[] | undefined {\n return values ? [...values] : undefined;\n}\n\nexport const SETTINGS_DEFAULTS: PmSettings = {\n version: 1,\n id_prefix: \"pm-\",\n author_default: \"\",\n item_format: \"toon\",\n locks: {\n ttl_seconds: 1800,\n },\n output: {\n default_format: \"toon\",\n },\n history: {\n missing_stream: \"auto_create\",\n },\n validation: {\n sprint_release_format: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n metadata_required_fields: [],\n lifecycle_stale_blocker_reason_patterns: [...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],\n lifecycle_closure_like_blocked_reason_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason,\n ],\n lifecycle_closure_like_resolution_patterns: [...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],\n lifecycle_closure_like_actual_result_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result,\n ],\n },\n governance: {\n preset: \"minimal\",\n ...GOVERNANCE_PRESET_DEFAULTS.minimal,\n },\n workflow: {\n definition_of_done: [],\n },\n testing: {\n record_results_to_items: false,\n },\n telemetry: {\n enabled: true,\n first_run_prompt_completed: false,\n capture_level: \"redacted\",\n endpoint: \"https://pm-cli.unbrained.dev/v1/events\",\n installation_id: \"\",\n retention_days: 365,\n },\n agent_guidance: {\n prompt_completed: false,\n declined: false,\n declined_at: \"\",\n template_version: 1,\n last_checked_files: [],\n },\n item_types: {\n definitions: [],\n },\n schema: {\n version: 1,\n files: {\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n },\n statuses: DEFAULT_STATUS_DEFINITIONS.map((definition) => ({\n ...definition,\n aliases: cloneOptionalArray(definition.aliases),\n roles: cloneOptionalArray(definition.roles),\n })),\n fields: [],\n workflow: { ...DEFAULT_WORKFLOW_DEFINITION },\n unknown_field_policy: \"allow\",\n },\n extensions: {\n enabled: [],\n disabled: [],\n policy: createDefaultExtensionGovernancePolicy(),\n },\n search: {\n score_threshold: 0,\n hybrid_semantic_weight: 0.7,\n max_results: 50,\n embedding_model: \"\",\n embedding_batch_size: 32,\n embedding_timeout_ms: 30_000,\n scanner_max_batch_retries: 3,\n provider: \"\",\n mutation_refresh_policy: \"semantic_configured\",\n },\n providers: {\n openai: {\n base_url: \"\",\n api_key: \"\",\n model: \"\",\n },\n ollama: {\n base_url: \"\",\n model: \"\",\n },\n },\n context: {\n default_depth: \"brief\",\n activity_limit: 10,\n stale_threshold_days: 7,\n sections: {\n hierarchy: true,\n activity: true,\n progress: true,\n blockers: true,\n files: true,\n workload: true,\n staleness: true,\n tests: true,\n },\n },\n vector_store: {\n adapter: \"\",\n qdrant: {\n url: \"\",\n api_key: \"\",\n },\n lancedb: {\n path: \"\",\n },\n },\n};\n\nexport const EMPTY_CANONICAL_DOCUMENT = {\n metadata: {},\n body: \"\",\n};\n\nexport const EXIT_CODE = {\n SUCCESS: 0,\n GENERIC_FAILURE: 1,\n USAGE: 2,\n NOT_FOUND: 3,\n CONFLICT: 4,\n DEPENDENCY_FAILED: 5,\n} as const;\n\nexport type TelemetryErrorCategory = \"usage\" | \"validation\" | \"conflict\" | \"runtime\" | \"unknown\";\n\nexport const TELEMETRY_ERROR_CATEGORY_BY_CODE: Readonly<Record<string, TelemetryErrorCategory>> = Object.freeze({\n unknown_command: \"usage\",\n unknown_option: \"usage\",\n missing_required_option: \"usage\",\n missing_required_argument: \"usage\",\n invalid_command_usage: \"usage\",\n invalid_argument_value: \"validation\",\n health_findings: \"validation\",\n validation_findings: \"validation\",\n close_through_update: \"validation\",\n no_update_fields: \"validation\",\n unsupported_update_option: \"validation\",\n tracker_not_initialized: \"validation\",\n item_not_found: \"validation\",\n ownership_conflict: \"conflict\",\n lock_conflict: \"conflict\",\n terminal_state_conflict: \"conflict\",\n dependency_failed: \"runtime\",\n command_failed: \"runtime\",\n unknown_error: \"runtime\",\n});\n\nexport function resolveTelemetryErrorCategory(errorCode: string | undefined): TelemetryErrorCategory {\n const normalized = (errorCode ?? \"\").trim().toLowerCase();\n if (normalized.length === 0) {\n return \"unknown\";\n }\n const explicit = TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];\n if (typeof explicit === \"string\") {\n return explicit;\n }\n if (normalized.includes(\"conflict\") || normalized.includes(\"locked\")) {\n return \"conflict\";\n }\n if (normalized.startsWith(\"unknown_\") || normalized.startsWith(\"missing_required_\")) {\n return \"usage\";\n }\n if (normalized.startsWith(\"invalid_\") || normalized.endsWith(\"_not_found\") || normalized.includes(\"validation\")) {\n return \"validation\";\n }\n if (normalized.endsWith(\"_error\") || normalized.endsWith(\"_failed\")) {\n return \"runtime\";\n }\n return \"unknown\";\n}\n"],"names":[],"mappings":"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","debugId":"0658378d-3fa8-59fa-ab4a-8f1bba265e01"}
1
+ {"version":3,"file":"constants.js","sources":["core/shared/constants.ts"],"sourceRoot":"/","sourcesContent":["import type {\n BuiltinItemType,\n GovernancePreset,\n GovernanceSettings,\n ItemFrontMatter,\n PmSettings,\n RuntimeStatusDefinition,\n RuntimeWorkflowDefinition,\n} from \"../../types/index.js\";\nimport { createDefaultExtensionGovernancePolicy } from \"../extensions/extension-types.js\";\n\n/**\n * Canonical default lifecycle status model and workflow role mapping.\n *\n * Single source of truth: `SETTINGS_DEFAULTS.schema` references these, and\n * `src/core/schema/runtime-schema.ts` re-exports them as\n * `DEFAULT_RUNTIME_STATUS_DEFINITIONS` / `DEFAULT_RUNTIME_WORKFLOW`.\n */\nexport const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = Object.freeze([\n {\n id: \"draft\",\n roles: [\"draft\"],\n },\n {\n id: \"open\",\n roles: [\"active\", \"default_open\"],\n },\n {\n id: \"in_progress\",\n aliases: [\"in-progress\"],\n roles: [\"active\"],\n },\n {\n id: \"blocked\",\n roles: [\"blocked\"],\n },\n {\n id: \"closed\",\n roles: [\"terminal\", \"terminal_done\", \"default_close\"],\n },\n {\n id: \"canceled\",\n aliases: [\"cancelled\"],\n roles: [\"terminal\", \"terminal_canceled\", \"default_cancel\"],\n },\n]);\n\nexport const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition = Object.freeze({\n draft_status: \"draft\",\n open_status: \"open\",\n in_progress_status: \"in_progress\",\n blocked_status: \"blocked\",\n close_status: \"closed\",\n canceled_status: \"canceled\",\n});\n\nexport const PM_DIRNAME = \".agents/pm\";\nexport const SETTINGS_FILENAME = \"settings.json\";\n\nexport const PM_CORE_REQUIRED_SUBDIRS = [\n \"\",\n \"epics\",\n \"features\",\n \"tasks\",\n \"chores\",\n \"issues\",\n \"schema\",\n \"history\",\n \"search\",\n \"extensions\",\n \"locks\",\n] as const;\n\nexport const PM_OPTIONAL_TYPE_SUBDIRS = [\n \"decisions\",\n \"events\",\n \"reminders\",\n \"milestones\",\n \"meetings\",\n \"plans\",\n] as const;\n\nexport const PM_REQUIRED_SUBDIRS = [...PM_CORE_REQUIRED_SUBDIRS, ...PM_OPTIONAL_TYPE_SUBDIRS] as const;\n\nexport const TYPE_TO_FOLDER: Record<BuiltinItemType, string> = {\n Epic: \"epics\",\n Feature: \"features\",\n Task: \"tasks\",\n Chore: \"chores\",\n Issue: \"issues\",\n Decision: \"decisions\",\n Event: \"events\",\n Reminder: \"reminders\",\n Milestone: \"milestones\",\n Meeting: \"meetings\",\n Plan: \"plans\",\n};\n\nexport const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string> = [\n \"id\",\n \"title\",\n \"description\",\n \"type\",\n \"source_type\",\n \"type_options\",\n \"status\",\n \"priority\",\n \"tags\",\n \"created_at\",\n \"updated_at\",\n \"deadline\",\n \"reminders\",\n \"events\",\n \"closed_at\",\n \"assignee\",\n \"source_owner\",\n \"author\",\n \"estimated_minutes\",\n \"acceptance_criteria\",\n \"design\",\n \"external_ref\",\n \"definition_of_ready\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"why_now\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"repro_steps\",\n \"resolution\",\n \"expected_result\",\n \"actual_result\",\n \"affected_version\",\n \"fixed_version\",\n \"component\",\n \"regression\",\n \"customer_impact\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"test_runs\",\n \"docs\",\n \"close_reason\",\n \"plan_mode\",\n \"plan_scope\",\n \"plan_harness\",\n \"plan_resume_context\",\n \"plan_validation\",\n \"plan_decisions\",\n \"plan_discoveries\",\n \"plan_steps\",\n];\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\n\nexport const GOVERNANCE_PRESET_DEFAULTS: Record<BuiltinGovernancePreset, Omit<GovernanceSettings, \"preset\">> = {\n minimal: {\n ownership_enforcement: \"none\",\n create_mode_default: \"progressive\",\n close_validation_default: \"off\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: false,\n },\n default: {\n ownership_enforcement: \"warn\",\n create_mode_default: \"progressive\",\n close_validation_default: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: true,\n },\n strict: {\n ownership_enforcement: \"strict\",\n create_mode_default: \"strict\",\n close_validation_default: \"strict\",\n parent_reference: \"strict_error\",\n metadata_profile: \"strict\",\n force_required_for_stale_lock: true,\n },\n};\n\nexport const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS = [\n \"no active blocker\",\n \"ready for planned execution sequencing\",\n \"work completed\",\n \"work is closed\",\n] as const;\n\nexport const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS = {\n blocked_reason: [\"no active blocker because work is closed\", \"work is closed\"],\n resolution: [\"closed with implementation evidence\", \"closed with verification evidence\", \"work completed and recorded\", \"work is closed\"],\n actual_result: [\"closed and recorded\", \"work completed\", \"work completed and recorded\"],\n} as const;\n\nfunction cloneOptionalArray<T>(values: readonly T[] | undefined): T[] | undefined {\n return values ? [...values] : undefined;\n}\n\nexport const SETTINGS_DEFAULTS: PmSettings = {\n version: 1,\n id_prefix: \"pm-\",\n author_default: \"\",\n item_format: \"toon\",\n locks: {\n ttl_seconds: 1800,\n },\n output: {\n default_format: \"toon\",\n },\n history: {\n missing_stream: \"auto_create\",\n },\n validation: {\n sprint_release_format: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n metadata_required_fields: [],\n lifecycle_stale_blocker_reason_patterns: [...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],\n lifecycle_closure_like_blocked_reason_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason,\n ],\n lifecycle_closure_like_resolution_patterns: [...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],\n lifecycle_closure_like_actual_result_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result,\n ],\n },\n governance: {\n preset: \"minimal\",\n ...GOVERNANCE_PRESET_DEFAULTS.minimal,\n },\n workflow: {\n definition_of_done: [],\n },\n testing: {\n record_results_to_items: false,\n },\n telemetry: {\n enabled: true,\n first_run_prompt_completed: false,\n capture_level: \"redacted\",\n endpoint: \"https://pm-cli.unbrained.dev/v1/events\",\n installation_id: \"\",\n retention_days: 365,\n },\n agent_guidance: {\n prompt_completed: false,\n declined: false,\n declined_at: \"\",\n template_version: 1,\n last_checked_files: [],\n },\n item_types: {\n definitions: [],\n },\n schema: {\n version: 1,\n files: {\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n },\n statuses: DEFAULT_STATUS_DEFINITIONS.map((definition) => ({\n ...definition,\n aliases: cloneOptionalArray(definition.aliases),\n roles: cloneOptionalArray(definition.roles),\n })),\n fields: [],\n workflow: { ...DEFAULT_WORKFLOW_DEFINITION },\n unknown_field_policy: \"allow\",\n },\n extensions: {\n enabled: [],\n disabled: [],\n policy: createDefaultExtensionGovernancePolicy(),\n },\n search: {\n score_threshold: 0,\n hybrid_semantic_weight: 0.7,\n max_results: 50,\n embedding_model: \"\",\n embedding_batch_size: 32,\n embedding_timeout_ms: 30_000,\n scanner_max_batch_retries: 3,\n provider: \"\",\n mutation_refresh_policy: \"semantic_configured\",\n },\n providers: {\n openai: {\n base_url: \"\",\n api_key: \"\",\n model: \"\",\n },\n ollama: {\n base_url: \"\",\n model: \"\",\n },\n },\n context: {\n default_depth: \"brief\",\n activity_limit: 10,\n stale_threshold_days: 7,\n sections: {\n hierarchy: true,\n activity: true,\n progress: true,\n blockers: true,\n files: true,\n workload: true,\n staleness: true,\n tests: true,\n },\n },\n vector_store: {\n adapter: \"\",\n qdrant: {\n url: \"\",\n api_key: \"\",\n },\n lancedb: {\n path: \"\",\n },\n },\n};\n\nexport const EMPTY_CANONICAL_DOCUMENT = {\n metadata: {},\n body: \"\",\n};\n\nexport const EXIT_CODE = {\n SUCCESS: 0,\n GENERIC_FAILURE: 1,\n USAGE: 2,\n NOT_FOUND: 3,\n CONFLICT: 4,\n DEPENDENCY_FAILED: 5,\n} as const;\n\nexport type TelemetryErrorCategory = \"usage\" | \"validation\" | \"conflict\" | \"runtime\" | \"unknown\";\n\nexport const TELEMETRY_ERROR_CATEGORY_BY_CODE: Readonly<Record<string, TelemetryErrorCategory>> = Object.freeze({\n unknown_command: \"usage\",\n unknown_option: \"usage\",\n missing_required_option: \"usage\",\n missing_required_argument: \"usage\",\n invalid_command_usage: \"usage\",\n invalid_argument_value: \"validation\",\n health_findings: \"validation\",\n validation_findings: \"validation\",\n close_through_update: \"validation\",\n no_update_fields: \"validation\",\n unsupported_update_option: \"validation\",\n tracker_not_initialized: \"validation\",\n item_not_found: \"validation\",\n ownership_conflict: \"conflict\",\n lock_conflict: \"conflict\",\n terminal_state_conflict: \"conflict\",\n dependency_failed: \"runtime\",\n command_failed: \"runtime\",\n unknown_error: \"runtime\",\n});\n\nexport function resolveTelemetryErrorCategory(errorCode: string | undefined): TelemetryErrorCategory {\n const normalized = (errorCode ?? \"\").trim().toLowerCase();\n if (normalized.length === 0) {\n return \"unknown\";\n }\n const explicit = TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];\n if (typeof explicit === \"string\") {\n return explicit;\n }\n if (normalized.includes(\"conflict\") || normalized.includes(\"locked\")) {\n return \"conflict\";\n }\n if (normalized.startsWith(\"unknown_\") || normalized.startsWith(\"missing_required_\")) {\n return \"usage\";\n }\n if (normalized.startsWith(\"invalid_\") || normalized.endsWith(\"_not_found\") || normalized.includes(\"validation\")) {\n return \"validation\";\n }\n if (normalized.endsWith(\"_error\") || normalized.endsWith(\"_failed\")) {\n return \"runtime\";\n }\n return \"unknown\";\n}\n"],"names":[],"mappings":"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","debugId":"027bbaac-2c77-535b-b51f-e1a51a9fccdb"}
@@ -1,3 +1,4 @@
1
1
  export declare function stableStringify(value: unknown): string;
2
+ export declare function stableValueEquals(left: unknown, right: unknown): boolean;
2
3
  export declare function sha256Hex(value: string): string;
3
4
  export declare function orderObject<T extends Record<string, unknown>>(value: T, keyOrder: ReadonlyArray<string>): Record<string, unknown>;