@unbrained/pm-cli 2026.6.5 → 2026.6.6

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 (413) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/README.md +12 -4
  4. package/dist/cli/commands/completion.js +21 -7
  5. package/dist/cli/commands/completion.js.map +1 -1
  6. package/dist/cli/commands/contracts.js +5 -3
  7. package/dist/cli/commands/contracts.js.map +1 -1
  8. package/dist/cli/commands/gc.d.ts +8 -1
  9. package/dist/cli/commands/gc.js +26 -3
  10. package/dist/cli/commands/gc.js.map +1 -1
  11. package/dist/cli/commands/health.js +15 -2
  12. package/dist/cli/commands/health.js.map +1 -1
  13. package/dist/cli/commands/history.d.ts +4 -1
  14. package/dist/cli/commands/history.js +12 -24
  15. package/dist/cli/commands/history.js.map +1 -1
  16. package/dist/cli/commands/index.d.ts +1 -0
  17. package/dist/cli/commands/index.js +3 -2
  18. package/dist/cli/commands/index.js.map +1 -1
  19. package/dist/cli/commands/stats.d.ts +8 -1
  20. package/dist/cli/commands/stats.js +18 -17
  21. package/dist/cli/commands/stats.js.map +1 -1
  22. package/dist/cli/commands/telemetry.d.ts +8 -0
  23. package/dist/cli/commands/telemetry.js +253 -0
  24. package/dist/cli/commands/telemetry.js.map +1 -0
  25. package/dist/cli/help-content.js +11 -2
  26. package/dist/cli/help-content.js.map +1 -1
  27. package/dist/cli/register-list-query.js +7 -4
  28. package/dist/cli/register-list-query.js.map +1 -1
  29. package/dist/cli/register-operations.js +29 -6
  30. package/dist/cli/register-operations.js.map +1 -1
  31. package/dist/cli-bundle/chunks/activity-CVXTCHYY.js +16 -0
  32. package/dist/cli-bundle/chunks/{activity-3RWRRNOW.js → activity-JM6DTDND.js} +11 -11
  33. package/dist/cli-bundle/chunks/{aggregate-J35K7WZB.js → aggregate-GI7WSZPH.js} +10 -10
  34. package/dist/cli-bundle/chunks/{aggregate-OOAGKWRG.js → aggregate-VNAHUNNF.js} +10 -10
  35. package/dist/cli-bundle/chunks/{append-5JE3YGXU.js → append-7H5N64R2.js} +8 -8
  36. package/dist/cli-bundle/chunks/{append-PNN6UIBZ.js → append-WMKRXKCE.js} +8 -8
  37. package/dist/cli-bundle/chunks/{chunk-D5X7N6FI.js → chunk-23YFZ3IG.js} +12 -12
  38. package/dist/cli-bundle/chunks/{chunk-FVXM3GKS.js → chunk-2HVRUSQA.js} +3 -3
  39. package/dist/cli-bundle/chunks/{chunk-V3JQ4IPL.js → chunk-2RSPZI5H.js} +102 -22
  40. package/dist/cli-bundle/chunks/chunk-2RSPZI5H.js.map +1 -0
  41. package/dist/cli-bundle/chunks/{chunk-SZQCER6S.js → chunk-2VBQ6ZXS.js} +2 -2
  42. package/dist/cli-bundle/chunks/{chunk-A6PEXMYN.js → chunk-2VVCGBNV.js} +9 -9
  43. package/dist/cli-bundle/chunks/{chunk-UOVLWB47.js → chunk-3BWOVLTH.js} +8 -8
  44. package/dist/cli-bundle/chunks/{chunk-5IRA6IYD.js → chunk-3FI4SEFT.js} +5 -5
  45. package/dist/cli-bundle/chunks/{chunk-3OH4DAEB.js → chunk-3LB74A67.js} +6 -6
  46. package/dist/cli-bundle/chunks/{chunk-GFWHHMVV.js → chunk-3VAM3NNM.js} +3 -3
  47. package/dist/cli-bundle/chunks/{chunk-4QCR4QW3.js → chunk-4LL6TK5B.js} +5 -5
  48. package/dist/cli-bundle/chunks/{chunk-TBQVUNVH.js → chunk-52MAOQ6J.js} +4 -4
  49. package/dist/cli-bundle/chunks/{chunk-5KB4X7YY.js → chunk-5FDATVEZ.js} +4 -4
  50. package/dist/cli-bundle/chunks/{chunk-4LTBNUYT.js → chunk-5SFCOO6B.js} +76 -7
  51. package/dist/cli-bundle/chunks/{chunk-4LTBNUYT.js.map → chunk-5SFCOO6B.js.map} +1 -1
  52. package/dist/cli-bundle/chunks/{chunk-GCAVRLGE.js → chunk-6ER6DXH5.js} +9 -9
  53. package/dist/cli-bundle/chunks/{chunk-26KTVXJW.js → chunk-6P6GGMOG.js} +2 -2
  54. package/dist/cli-bundle/chunks/{chunk-MISYRLEP.js → chunk-77GFDHGF.js} +2 -2
  55. package/dist/cli-bundle/chunks/{chunk-HPH6X4ZZ.js → chunk-AO442XLN.js} +3 -3
  56. package/dist/cli-bundle/chunks/{chunk-ORTLYVA4.js → chunk-AY43SBIN.js} +6 -6
  57. package/dist/cli-bundle/chunks/{chunk-D3WUNETC.js → chunk-BQHUILZS.js} +5 -5
  58. package/dist/cli-bundle/chunks/{chunk-KCMIYKTA.js → chunk-E5FJNAZA.js} +3 -3
  59. package/dist/cli-bundle/chunks/{chunk-OIQIXTNB.js → chunk-ECCMVXGM.js} +3 -3
  60. package/dist/cli-bundle/chunks/{chunk-5PAOPUZX.js → chunk-FRAUKRU2.js} +5 -5
  61. package/dist/cli-bundle/chunks/{chunk-JQI2HE55.js → chunk-GCOQW437.js} +3 -3
  62. package/dist/cli-bundle/chunks/{chunk-CWT53EYT.js → chunk-GGYWB3Y2.js} +6 -6
  63. package/dist/cli-bundle/chunks/{chunk-ATBVS6WW.js → chunk-GU2ZJ2VV.js} +5 -5
  64. package/dist/cli-bundle/chunks/{chunk-ASQM3IF5.js → chunk-GXSUPCBV.js} +5 -4
  65. package/dist/cli-bundle/chunks/{chunk-SSFMJCPF.js → chunk-HZGUAH22.js} +2 -2
  66. package/dist/cli-bundle/chunks/{chunk-GPGAYASV.js → chunk-I2HSTRJF.js} +5 -5
  67. package/dist/cli-bundle/chunks/{chunk-RQAWLSUU.js → chunk-I6BNFU5X.js} +3 -3
  68. package/dist/cli-bundle/chunks/{chunk-OUF3ARDX.js → chunk-IJGCZSIQ.js} +12 -12
  69. package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js +1491 -0
  70. package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js.map +1 -0
  71. package/dist/cli-bundle/chunks/{chunk-XX5LRINW.js → chunk-KAG77BY3.js} +2 -2
  72. package/dist/cli-bundle/chunks/{chunk-BNL6S7QH.js → chunk-KJ33AOCY.js} +3 -3
  73. package/dist/cli-bundle/chunks/{chunk-4PJQSECJ.js → chunk-KJE2FOS4.js} +2 -2
  74. package/dist/cli-bundle/chunks/{chunk-GNHVV4SY.js → chunk-KWU6HG75.js} +37 -14
  75. package/dist/cli-bundle/chunks/chunk-KWU6HG75.js.map +1 -0
  76. package/dist/cli-bundle/chunks/{chunk-KBG47ZOY.js → chunk-LB3RUL2N.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-HZOS2UG5.js → chunk-LCM63IXU.js} +2 -2
  78. package/dist/cli-bundle/chunks/{chunk-VGO2T3TY.js → chunk-ME2YH6FN.js} +7 -7
  79. package/dist/cli-bundle/chunks/{chunk-ZRVSMOMR.js → chunk-MITFDD35.js} +12 -12
  80. package/dist/cli-bundle/chunks/{chunk-Y2AKE2HS.js → chunk-N7ACFE26.js} +3 -3
  81. package/dist/cli-bundle/chunks/{chunk-AXXKLVTW.js → chunk-NUZ5HKR4.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-KK6YPGH3.js → chunk-OVQCEJPG.js} +2 -2
  83. package/dist/cli-bundle/chunks/{chunk-B3N4TKNL.js → chunk-OZ7NSQHL.js} +8 -8
  84. package/dist/cli-bundle/chunks/{chunk-TK633IVD.js → chunk-PDDFYW4X.js} +5 -5
  85. package/dist/cli-bundle/chunks/{chunk-DFIZGAI5.js → chunk-PIU6RSL3.js} +9 -9
  86. package/dist/cli-bundle/chunks/{chunk-O5IBJE6S.js → chunk-PO3GSVFV.js} +2 -2
  87. package/dist/cli-bundle/chunks/{chunk-WIKR7KFL.js → chunk-PRJCELV4.js} +108 -21
  88. package/dist/cli-bundle/chunks/chunk-PRJCELV4.js.map +7 -0
  89. package/dist/cli-bundle/chunks/{chunk-ZQ4F6EC4.js → chunk-PROOHX4K.js} +38 -15
  90. package/dist/cli-bundle/chunks/chunk-PROOHX4K.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-N5YF3VFN.js → chunk-Q7SPNHLW.js} +8 -8
  92. package/dist/cli-bundle/chunks/{chunk-RANZIID5.js → chunk-QO7EBBOM.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-LDJK7SHN.js → chunk-R6UFP2GE.js} +7 -7
  94. package/dist/cli-bundle/chunks/{chunk-CCUFLH4J.js → chunk-RWPSOIEE.js} +7 -7
  95. package/dist/cli-bundle/chunks/{chunk-UFCG3SWR.js → chunk-RZN6VURO.js} +3 -3
  96. package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js +1501 -0
  97. package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js.map +7 -0
  98. package/dist/cli-bundle/chunks/{chunk-KA24HME7.js → chunk-T3LC5LKB.js} +2 -2
  99. package/dist/cli-bundle/chunks/{chunk-NQP3ECKF.js → chunk-TCD3R2PF.js} +2 -2
  100. package/dist/cli-bundle/chunks/{chunk-EHXPIKKP.js → chunk-TPH5XEVD.js} +3 -3
  101. package/dist/cli-bundle/chunks/{chunk-SRVKTWPR.js → chunk-U5SXYXSY.js} +75 -6
  102. package/dist/cli-bundle/chunks/{chunk-SRVKTWPR.js.map → chunk-U5SXYXSY.js.map} +2 -2
  103. package/dist/cli-bundle/chunks/{chunk-T2ORWB6D.js → chunk-UBOPJT3S.js} +9 -9
  104. package/dist/cli-bundle/chunks/{chunk-S3CV7JGJ.js → chunk-UM2GBHS4.js} +5 -4
  105. package/dist/cli-bundle/chunks/{chunk-G5BACLYH.js → chunk-W7XABV4H.js} +8 -8
  106. package/dist/cli-bundle/chunks/{chunk-K47WAYQV.js → chunk-WKY2IBOQ.js} +3 -3
  107. package/dist/cli-bundle/chunks/{chunk-7K24QB23.js → chunk-WOPXVEZP.js} +5 -5
  108. package/dist/cli-bundle/chunks/{chunk-DFUSXJDE.js → chunk-WSMOSYRD.js} +12 -12
  109. package/dist/cli-bundle/chunks/{chunk-CJDQB2ED.js → chunk-XLTD2HN3.js} +2 -2
  110. package/dist/cli-bundle/chunks/{chunk-TQ3ZK6VD.js → chunk-XSJCLN2R.js} +3 -3
  111. package/dist/cli-bundle/chunks/{chunk-XG7RJYHV.js → chunk-XTGLRY2Y.js} +6 -6
  112. package/dist/cli-bundle/chunks/{chunk-JB4RGL4V.js → chunk-YL2DJGYS.js} +7 -7
  113. package/dist/cli-bundle/chunks/{claim-AZLP7YFO.js → claim-4DBF6RVG.js} +10 -10
  114. package/dist/cli-bundle/chunks/{claim-ZFA7HKU4.js → claim-X2P4IB7J.js} +10 -10
  115. package/dist/cli-bundle/chunks/close-3HDWDA3L.js +13 -0
  116. package/dist/cli-bundle/chunks/{close-65DFYAVS.js → close-PTYFA45H.js} +8 -8
  117. package/dist/cli-bundle/chunks/{close-many-UKZSQGM7.js → close-many-7CGIDPTJ.js} +15 -15
  118. package/dist/cli-bundle/chunks/{close-many-AKPZNSGI.js → close-many-ERFO6LHR.js} +15 -15
  119. package/dist/cli-bundle/chunks/{comments-CJWXQI7X.js → comments-OONGABK5.js} +10 -10
  120. package/dist/cli-bundle/chunks/{comments-AGBNSJJH.js → comments-QKBYCWKD.js} +10 -10
  121. package/dist/cli-bundle/chunks/{config-DDPYIA6J.js → config-6FXCQKIF.js} +8 -8
  122. package/dist/cli-bundle/chunks/{config-5ON3ADRH.js → config-U4RZ4CQB.js} +8 -8
  123. package/dist/cli-bundle/chunks/{context-E6U3DWVM.js → context-FYYJGFWS.js} +13 -13
  124. package/dist/cli-bundle/chunks/{context-ZOJEN5VT.js → context-YMJ3Z2HQ.js} +13 -13
  125. package/dist/cli-bundle/chunks/{contracts-LCSX5R53.js → contracts-QDB6OMLQ.js} +10 -6
  126. package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js.map +1 -0
  127. package/dist/cli-bundle/chunks/{contracts-CXSFM45B.js → contracts-RFSPGVVJ.js} +9 -5
  128. package/dist/cli-bundle/chunks/{contracts-LCSX5R53.js.map → contracts-RFSPGVVJ.js.map} +7 -1
  129. package/dist/cli-bundle/chunks/{create-WYFKN2U4.js → create-I5L4EYYZ.js} +13 -13
  130. package/dist/cli-bundle/chunks/create-JTZNCTQC.js +27 -0
  131. package/dist/cli-bundle/chunks/{delete-ZXWC56WO.js → delete-7HPGI4GZ.js} +7 -7
  132. package/dist/cli-bundle/chunks/{delete-RONNH4F4.js → delete-VXUPH5RS.js} +7 -7
  133. package/dist/cli-bundle/chunks/{deps-WII3O4HB.js → deps-JSRRWC3Z.js} +7 -7
  134. package/dist/cli-bundle/chunks/{deps-EHXIFOZR.js → deps-SCZIFK2Z.js} +7 -7
  135. package/dist/cli-bundle/chunks/{docs-PDREIMLS.js → docs-GJK6K4VP.js} +9 -9
  136. package/dist/cli-bundle/chunks/{docs-JMVCFNHH.js → docs-WW4N3MBM.js} +9 -9
  137. package/dist/cli-bundle/chunks/{extension-G6UXSM5S.js → extension-J7IBMFTD.js} +4 -4
  138. package/dist/cli-bundle/chunks/{extension-B4ROVWJD.js → extension-VDY2U33M.js} +4 -4
  139. package/dist/cli-bundle/chunks/{files-2PN7UM2D.js → files-ISZJGILQ.js} +9 -9
  140. package/dist/cli-bundle/chunks/{files-MXYS5W4M.js → files-WKOD326U.js} +9 -9
  141. package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js +362 -0
  142. package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js.map +1 -0
  143. package/dist/cli-bundle/chunks/gc-ULPVWMTN.js +372 -0
  144. package/dist/cli-bundle/chunks/gc-ULPVWMTN.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{get-WXMLRG7M.js → get-RV37HT3G.js} +10 -10
  146. package/dist/cli-bundle/chunks/{get-CINFEUIY.js → get-WXU6WI5P.js} +10 -10
  147. package/dist/cli-bundle/chunks/{health-IT5DBPRJ.js → health-6L6EH4WR.js} +26 -13
  148. package/dist/cli-bundle/chunks/health-6L6EH4WR.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{health-5VPOJQ53.js → health-LOI2HHKB.js} +27 -14
  150. package/dist/cli-bundle/chunks/health-LOI2HHKB.js.map +1 -0
  151. package/dist/cli-bundle/chunks/history-2BA3T5AE.js +20 -0
  152. package/dist/cli-bundle/chunks/{history-FLZIP7PM.js → history-PKN67D5O.js} +10 -10
  153. package/dist/cli-bundle/chunks/history-redact-JBZNXHGR.js +19 -0
  154. package/dist/cli-bundle/chunks/{history-redact-SSZBAD76.js → history-redact-V4FOJGS7.js} +11 -11
  155. package/dist/cli-bundle/chunks/{history-repair-KC5ZOJRZ.js → history-repair-HIBCBIKK.js} +11 -11
  156. package/dist/cli-bundle/chunks/{history-repair-X7CO5JJZ.js → history-repair-SDMHR7JT.js} +11 -11
  157. package/dist/cli-bundle/chunks/init-HIVSNX3O.js +16 -0
  158. package/dist/cli-bundle/chunks/{init-6MRFVOLH.js → init-P56QYWJF.js} +8 -8
  159. package/dist/cli-bundle/chunks/{learnings-DCX55BNX.js → learnings-GDFRG5J7.js} +10 -10
  160. package/dist/cli-bundle/chunks/{learnings-A3CLB5CO.js → learnings-MIXSESLK.js} +10 -10
  161. package/dist/cli-bundle/chunks/{list-DBRECOG4.js → list-FGOWQMSM.js} +10 -10
  162. package/dist/cli-bundle/chunks/list-MUSQNMTD.js +20 -0
  163. package/dist/cli-bundle/chunks/{notes-42LIC3UE.js → notes-4XVSH2AZ.js} +10 -10
  164. package/dist/cli-bundle/chunks/{notes-P5O3VMQ3.js → notes-5UK3GEH2.js} +10 -10
  165. package/dist/cli-bundle/chunks/{plan-IGTE3WOJ.js → plan-DUMBV3QB.js} +13 -13
  166. package/dist/cli-bundle/chunks/{plan-HDQXEUKD.js → plan-SLMODHWX.js} +13 -13
  167. package/dist/cli-bundle/chunks/{register-list-query-EMNSIUO4.js → register-list-query-POCFZ5JW.js} +24 -22
  168. package/dist/cli-bundle/chunks/{register-list-query-EMNSIUO4.js.map → register-list-query-POCFZ5JW.js.map} +1 -1
  169. package/dist/cli-bundle/chunks/{register-list-query-AG3XKXWL.js → register-list-query-WST76HSQ.js} +23 -21
  170. package/dist/cli-bundle/chunks/{register-list-query-AG3XKXWL.js.map → register-list-query-WST76HSQ.js.map} +2 -2
  171. package/dist/cli-bundle/chunks/{register-mutation-M3YS6XDO.js → register-mutation-N5GSUZJV.js} +30 -30
  172. package/dist/cli-bundle/chunks/{register-mutation-RSMT6DPK.js → register-mutation-OA675SOU.js} +30 -30
  173. package/dist/cli-bundle/chunks/{register-operations-KYUOOOOD.js → register-operations-GNHBE5I3.js} +47 -34
  174. package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js.map +1 -0
  175. package/dist/cli-bundle/chunks/{register-operations-Q54JQZUN.js → register-operations-N3PMHXH5.js} +46 -33
  176. package/dist/cli-bundle/chunks/{register-operations-Q54JQZUN.js.map → register-operations-N3PMHXH5.js.map} +2 -2
  177. package/dist/cli-bundle/chunks/{register-setup-DI6P7X75.js → register-setup-JIMPKJKV.js} +15 -15
  178. package/dist/cli-bundle/chunks/{register-setup-YJKIQRKA.js → register-setup-ZHJI2DI3.js} +15 -15
  179. package/dist/cli-bundle/chunks/restore-D4RGNX33.js +17 -0
  180. package/dist/cli-bundle/chunks/{restore-2XVTBLKQ.js → restore-PBL6T5TW.js} +11 -11
  181. package/dist/cli-bundle/chunks/{schema-V6BX65Q2.js → schema-2NOO6NGB.js} +8 -8
  182. package/dist/cli-bundle/chunks/{schema-LVXZWFGY.js → schema-EBI4NLUO.js} +8 -8
  183. package/dist/cli-bundle/chunks/{search-C7NPB7G7.js → search-JPUQTVCY.js} +10 -10
  184. package/dist/cli-bundle/chunks/{search-5A3BMFA7.js → search-OA6JX27A.js} +10 -10
  185. package/dist/cli-bundle/chunks/stats-CV54BAWY.js +202 -0
  186. package/dist/cli-bundle/chunks/stats-CV54BAWY.js.map +1 -0
  187. package/dist/cli-bundle/chunks/stats-XYB6KTFG.js +212 -0
  188. package/dist/cli-bundle/chunks/stats-XYB6KTFG.js.map +7 -0
  189. package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js +251 -0
  190. package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js.map +7 -0
  191. package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js +248 -0
  192. package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js.map +1 -0
  193. package/dist/cli-bundle/chunks/{test-RJ4ZF35X.js → test-MXX3E5JL.js} +13 -13
  194. package/dist/cli-bundle/chunks/{test-OFYONO3C.js → test-WBROAJIE.js} +13 -13
  195. package/dist/cli-bundle/chunks/{test-all-OJE6CIO7.js → test-all-N6NSRDTV.js} +13 -13
  196. package/dist/cli-bundle/chunks/{test-all-EEMKNTGU.js → test-all-NTOZ7C3M.js} +13 -13
  197. package/dist/cli-bundle/chunks/{test-runs-IPOPFOAF.js → test-runs-V6A7LPWZ.js} +5 -5
  198. package/dist/cli-bundle/chunks/{test-runs-L2M7WKH7.js → test-runs-WMVTQU3Y.js} +5 -5
  199. package/dist/cli-bundle/chunks/update-OSV3NAQB.js +25 -0
  200. package/dist/cli-bundle/chunks/update-YRXSUGYQ.js +21 -0
  201. package/dist/cli-bundle/chunks/{update-many-DYWGW57M.js → update-many-EM6OXYGO.js} +22 -22
  202. package/dist/cli-bundle/chunks/{update-many-322CCH2L.js → update-many-KGGEYABR.js} +22 -22
  203. package/dist/cli-bundle/chunks/{upgrade-2U727SAM.js → upgrade-BLI7XBAJ.js} +4 -4
  204. package/dist/cli-bundle/chunks/{upgrade-3W3RVSNM.js → upgrade-LXPOQKFV.js} +4 -4
  205. package/dist/cli-bundle/chunks/{validate-ZFVWPEEN.js → validate-AGOAUOVW.js} +15 -15
  206. package/dist/cli-bundle/chunks/{validate-GZ24NYHO.js → validate-L5J6A7YO.js} +15 -15
  207. package/dist/cli-bundle/main.js +42 -1451
  208. package/dist/cli-bundle/main.js.map +4 -4
  209. package/dist/core/history/history-diff.d.ts +47 -0
  210. package/dist/core/history/history-diff.js +152 -0
  211. package/dist/core/history/history-diff.js.map +1 -0
  212. package/dist/core/history/history-storage-stats.d.ts +31 -0
  213. package/dist/core/history/history-storage-stats.js +101 -0
  214. package/dist/core/history/history-storage-stats.js.map +1 -0
  215. package/dist/core/lock/lock-gc.d.ts +46 -0
  216. package/dist/core/lock/lock-gc.js +194 -0
  217. package/dist/core/lock/lock-gc.js.map +1 -0
  218. package/dist/core/shared/serial-queue.d.ts +12 -0
  219. package/dist/core/shared/serial-queue.js +43 -0
  220. package/dist/core/shared/serial-queue.js.map +1 -0
  221. package/dist/core/store/settings.d.ts +19 -1
  222. package/dist/core/store/settings.js +92 -7
  223. package/dist/core/store/settings.js.map +1 -1
  224. package/dist/core/telemetry/observability.js +3 -3
  225. package/dist/core/telemetry/observability.js.map +1 -1
  226. package/dist/core/telemetry/runtime.js +16 -4
  227. package/dist/core/telemetry/runtime.js.map +1 -1
  228. package/dist/mcp/server.d.ts +1 -0
  229. package/dist/mcp/server.js +155 -37
  230. package/dist/mcp/server.js.map +1 -1
  231. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  232. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  233. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  234. package/dist/sdk/cli-contracts/tool-parameter-tables.js +10 -7
  235. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  236. package/dist/sdk/cli-contracts.d.ts +23 -0
  237. package/dist/sdk/cli-contracts.js +41 -7
  238. package/dist/sdk/cli-contracts.js.map +1 -1
  239. package/docs/AGENT_GUIDE.md +1 -1
  240. package/docs/ARCHITECTURE.md +11 -1
  241. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  242. package/docs/COMMANDS.md +33 -2
  243. package/docs/CONFIGURATION.md +9 -1
  244. package/docs/EXTENSIONS.md +7 -0
  245. package/docs/EXTENSION_AUTHOR_CONTRACTS.md +73 -0
  246. package/docs/ONBOARDING.md +165 -0
  247. package/docs/QUICKSTART.md +1 -1
  248. package/docs/README.md +12 -4
  249. package/docs/RELEASING.md +36 -1
  250. package/docs/TESTING.md +19 -1
  251. package/package.json +5 -2
  252. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  253. package/plugins/pm-claude/README.md +7 -4
  254. package/plugins/pm-claude/agents/pm-coordinator.md +1 -1
  255. package/plugins/pm-claude/commands/pm-init.md +1 -1
  256. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js +0 -16
  257. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js.map +0 -1
  258. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js.map +0 -1
  259. package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js.map +0 -7
  260. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js.map +0 -7
  261. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js +0 -13
  262. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js.map +0 -7
  263. package/dist/cli-bundle/chunks/create-ATONSAZW.js +0 -27
  264. package/dist/cli-bundle/chunks/gc-GT552UJH.js +0 -178
  265. package/dist/cli-bundle/chunks/gc-GT552UJH.js.map +0 -1
  266. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js +0 -181
  267. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js.map +0 -7
  268. package/dist/cli-bundle/chunks/health-5VPOJQ53.js.map +0 -1
  269. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js.map +0 -7
  270. package/dist/cli-bundle/chunks/history-6FC4H6HI.js +0 -20
  271. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js +0 -19
  272. package/dist/cli-bundle/chunks/init-KHX3FEEM.js +0 -16
  273. package/dist/cli-bundle/chunks/list-53LZ2AEO.js +0 -20
  274. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js.map +0 -1
  275. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js +0 -17
  276. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js +0 -120
  277. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js.map +0 -1
  278. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js +0 -123
  279. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js.map +0 -7
  280. package/dist/cli-bundle/chunks/update-6YEHPVXH.js +0 -25
  281. package/dist/cli-bundle/chunks/update-PYLVHMRD.js +0 -21
  282. /package/dist/cli-bundle/chunks/{activity-P5BUMWP3.js.map → activity-CVXTCHYY.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{activity-3RWRRNOW.js.map → activity-JM6DTDND.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{aggregate-J35K7WZB.js.map → aggregate-GI7WSZPH.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{aggregate-OOAGKWRG.js.map → aggregate-VNAHUNNF.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{append-5JE3YGXU.js.map → append-7H5N64R2.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{append-PNN6UIBZ.js.map → append-WMKRXKCE.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-D5X7N6FI.js.map → chunk-23YFZ3IG.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-FVXM3GKS.js.map → chunk-2HVRUSQA.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-SZQCER6S.js.map → chunk-2VBQ6ZXS.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-A6PEXMYN.js.map → chunk-2VVCGBNV.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-UOVLWB47.js.map → chunk-3BWOVLTH.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-5IRA6IYD.js.map → chunk-3FI4SEFT.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-3OH4DAEB.js.map → chunk-3LB74A67.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-GFWHHMVV.js.map → chunk-3VAM3NNM.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-4QCR4QW3.js.map → chunk-4LL6TK5B.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-TBQVUNVH.js.map → chunk-52MAOQ6J.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-5KB4X7YY.js.map → chunk-5FDATVEZ.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-GCAVRLGE.js.map → chunk-6ER6DXH5.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-26KTVXJW.js.map → chunk-6P6GGMOG.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-MISYRLEP.js.map → chunk-77GFDHGF.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-HPH6X4ZZ.js.map → chunk-AO442XLN.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-ORTLYVA4.js.map → chunk-AY43SBIN.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-D3WUNETC.js.map → chunk-BQHUILZS.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-KCMIYKTA.js.map → chunk-E5FJNAZA.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-OIQIXTNB.js.map → chunk-ECCMVXGM.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-5PAOPUZX.js.map → chunk-FRAUKRU2.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-JQI2HE55.js.map → chunk-GCOQW437.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-CWT53EYT.js.map → chunk-GGYWB3Y2.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-ATBVS6WW.js.map → chunk-GU2ZJ2VV.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-ASQM3IF5.js.map → chunk-GXSUPCBV.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-SSFMJCPF.js.map → chunk-HZGUAH22.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-GPGAYASV.js.map → chunk-I2HSTRJF.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-RQAWLSUU.js.map → chunk-I6BNFU5X.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-OUF3ARDX.js.map → chunk-IJGCZSIQ.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-XX5LRINW.js.map → chunk-KAG77BY3.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-BNL6S7QH.js.map → chunk-KJ33AOCY.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-4PJQSECJ.js.map → chunk-KJE2FOS4.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-KBG47ZOY.js.map → chunk-LB3RUL2N.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-HZOS2UG5.js.map → chunk-LCM63IXU.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-VGO2T3TY.js.map → chunk-ME2YH6FN.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-ZRVSMOMR.js.map → chunk-MITFDD35.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-Y2AKE2HS.js.map → chunk-N7ACFE26.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-AXXKLVTW.js.map → chunk-NUZ5HKR4.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-KK6YPGH3.js.map → chunk-OVQCEJPG.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-B3N4TKNL.js.map → chunk-OZ7NSQHL.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-TK633IVD.js.map → chunk-PDDFYW4X.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-DFIZGAI5.js.map → chunk-PIU6RSL3.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-O5IBJE6S.js.map → chunk-PO3GSVFV.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-N5YF3VFN.js.map → chunk-Q7SPNHLW.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-RANZIID5.js.map → chunk-QO7EBBOM.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-LDJK7SHN.js.map → chunk-R6UFP2GE.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-CCUFLH4J.js.map → chunk-RWPSOIEE.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-UFCG3SWR.js.map → chunk-RZN6VURO.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-KA24HME7.js.map → chunk-T3LC5LKB.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-NQP3ECKF.js.map → chunk-TCD3R2PF.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-EHXPIKKP.js.map → chunk-TPH5XEVD.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-T2ORWB6D.js.map → chunk-UBOPJT3S.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-S3CV7JGJ.js.map → chunk-UM2GBHS4.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-G5BACLYH.js.map → chunk-W7XABV4H.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-K47WAYQV.js.map → chunk-WKY2IBOQ.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-7K24QB23.js.map → chunk-WOPXVEZP.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-DFUSXJDE.js.map → chunk-WSMOSYRD.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-CJDQB2ED.js.map → chunk-XLTD2HN3.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-TQ3ZK6VD.js.map → chunk-XSJCLN2R.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-XG7RJYHV.js.map → chunk-XTGLRY2Y.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-JB4RGL4V.js.map → chunk-YL2DJGYS.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{claim-AZLP7YFO.js.map → claim-4DBF6RVG.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{claim-ZFA7HKU4.js.map → claim-X2P4IB7J.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{close-RMHQ3KWH.js.map → close-3HDWDA3L.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{close-65DFYAVS.js.map → close-PTYFA45H.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{close-many-UKZSQGM7.js.map → close-many-7CGIDPTJ.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{close-many-AKPZNSGI.js.map → close-many-ERFO6LHR.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{comments-CJWXQI7X.js.map → comments-OONGABK5.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{comments-AGBNSJJH.js.map → comments-QKBYCWKD.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{config-DDPYIA6J.js.map → config-6FXCQKIF.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{config-5ON3ADRH.js.map → config-U4RZ4CQB.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{context-E6U3DWVM.js.map → context-FYYJGFWS.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{context-ZOJEN5VT.js.map → context-YMJ3Z2HQ.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{create-WYFKN2U4.js.map → create-I5L4EYYZ.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{create-ATONSAZW.js.map → create-JTZNCTQC.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{delete-ZXWC56WO.js.map → delete-7HPGI4GZ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{delete-RONNH4F4.js.map → delete-VXUPH5RS.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{deps-WII3O4HB.js.map → deps-JSRRWC3Z.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{deps-EHXIFOZR.js.map → deps-SCZIFK2Z.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{docs-PDREIMLS.js.map → docs-GJK6K4VP.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{docs-JMVCFNHH.js.map → docs-WW4N3MBM.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{extension-G6UXSM5S.js.map → extension-J7IBMFTD.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{extension-B4ROVWJD.js.map → extension-VDY2U33M.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{files-2PN7UM2D.js.map → files-ISZJGILQ.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{files-MXYS5W4M.js.map → files-WKOD326U.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{get-WXMLRG7M.js.map → get-RV37HT3G.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{get-CINFEUIY.js.map → get-WXU6WI5P.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{history-6FC4H6HI.js.map → history-2BA3T5AE.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{history-FLZIP7PM.js.map → history-PKN67D5O.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{history-redact-XKYEZDBL.js.map → history-redact-JBZNXHGR.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{history-redact-SSZBAD76.js.map → history-redact-V4FOJGS7.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{history-repair-KC5ZOJRZ.js.map → history-repair-HIBCBIKK.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{history-repair-X7CO5JJZ.js.map → history-repair-SDMHR7JT.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{init-KHX3FEEM.js.map → init-HIVSNX3O.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{init-6MRFVOLH.js.map → init-P56QYWJF.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{learnings-DCX55BNX.js.map → learnings-GDFRG5J7.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{learnings-A3CLB5CO.js.map → learnings-MIXSESLK.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{list-DBRECOG4.js.map → list-FGOWQMSM.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{list-53LZ2AEO.js.map → list-MUSQNMTD.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{notes-42LIC3UE.js.map → notes-4XVSH2AZ.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{notes-P5O3VMQ3.js.map → notes-5UK3GEH2.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{plan-IGTE3WOJ.js.map → plan-DUMBV3QB.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{plan-HDQXEUKD.js.map → plan-SLMODHWX.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{register-mutation-M3YS6XDO.js.map → register-mutation-N5GSUZJV.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{register-mutation-RSMT6DPK.js.map → register-mutation-OA675SOU.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{register-setup-DI6P7X75.js.map → register-setup-JIMPKJKV.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{register-setup-YJKIQRKA.js.map → register-setup-ZHJI2DI3.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{restore-JL5QIH7H.js.map → restore-D4RGNX33.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{restore-2XVTBLKQ.js.map → restore-PBL6T5TW.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{schema-V6BX65Q2.js.map → schema-2NOO6NGB.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{schema-LVXZWFGY.js.map → schema-EBI4NLUO.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{search-C7NPB7G7.js.map → search-JPUQTVCY.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{search-5A3BMFA7.js.map → search-OA6JX27A.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{test-RJ4ZF35X.js.map → test-MXX3E5JL.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{test-OFYONO3C.js.map → test-WBROAJIE.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{test-all-OJE6CIO7.js.map → test-all-N6NSRDTV.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{test-all-EEMKNTGU.js.map → test-all-NTOZ7C3M.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{test-runs-IPOPFOAF.js.map → test-runs-V6A7LPWZ.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{test-runs-L2M7WKH7.js.map → test-runs-WMVTQU3Y.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{update-6YEHPVXH.js.map → update-OSV3NAQB.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{update-PYLVHMRD.js.map → update-YRXSUGYQ.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{update-many-DYWGW57M.js.map → update-many-EM6OXYGO.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{update-many-322CCH2L.js.map → update-many-KGGEYABR.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{upgrade-2U727SAM.js.map → upgrade-BLI7XBAJ.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{upgrade-3W3RVSNM.js.map → upgrade-LXPOQKFV.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{validate-ZFVWPEEN.js.map → validate-AGOAUOVW.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{validate-GZ24NYHO.js.map → validate-L5J6A7YO.js.map} +0 -0
@@ -0,0 +1,372 @@
1
+ import {
2
+ nowIso
3
+ } from "./chunk-QO7EBBOM.js";
4
+ import {
5
+ EXIT_CODE,
6
+ PmCliError,
7
+ getSettingsPath,
8
+ pathExists,
9
+ readSettings,
10
+ resolvePmRoot,
11
+ runActiveOnIndexHooks,
12
+ runActiveOnReadHooks,
13
+ runActiveOnWriteHooks
14
+ } from "./chunk-U5SXYXSY.js";
15
+
16
+ // dist/cli/commands/gc.js
17
+ import fs2 from "node:fs/promises";
18
+ import path2 from "node:path";
19
+
20
+ // dist/core/lock/lock-gc.js
21
+ import fs from "node:fs/promises";
22
+ import path from "node:path";
23
+ !(function() {
24
+ try {
25
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
26
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1a412027-5c73-58d4-b696-4a909dde88a8");
27
+ } catch (e2) {
28
+ }
29
+ })();
30
+ function parseLock(raw) {
31
+ let parsed;
32
+ try {
33
+ parsed = JSON.parse(raw);
34
+ } catch {
35
+ return null;
36
+ }
37
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
38
+ return null;
39
+ }
40
+ const candidate = parsed;
41
+ const { id, owner, created_at, ttl_seconds } = candidate;
42
+ if (typeof id !== "string" || typeof owner !== "string" || typeof created_at !== "string" || typeof ttl_seconds !== "number" || !Number.isFinite(ttl_seconds)) {
43
+ return null;
44
+ }
45
+ return { id, owner, created_at, ttl_seconds };
46
+ }
47
+ function isErrno(error, code) {
48
+ return typeof error === "object" && error !== null && "code" in error && error.code === code;
49
+ }
50
+ async function runLockGc(pmRoot, options) {
51
+ const { dryRun, hooks } = options;
52
+ const nowMs = options.now ?? Date.now();
53
+ const locksDir = path.join(pmRoot, "locks");
54
+ const result = {
55
+ scanned: 0,
56
+ removed: [],
57
+ retained: [],
58
+ warnings: [],
59
+ entries: []
60
+ };
61
+ let dirEntries;
62
+ try {
63
+ const raw = await fs.readdir(locksDir);
64
+ dirEntries = raw.filter((f) => f.endsWith(".lock")).sort();
65
+ } catch (error) {
66
+ if (isErrno(error, "ENOENT")) {
67
+ return result;
68
+ }
69
+ throw error;
70
+ }
71
+ for (const file of dirEntries) {
72
+ result.scanned += 1;
73
+ const absPath = path.join(locksDir, file);
74
+ const relPath = `locks/${file}`;
75
+ if (hooks?.onRead) {
76
+ const hookWarnings = await hooks.onRead(absPath);
77
+ result.warnings.push(...hookWarnings);
78
+ }
79
+ let raw;
80
+ try {
81
+ raw = await fs.readFile(absPath, "utf8");
82
+ } catch (readError) {
83
+ if (isErrno(readError, "ENOENT")) {
84
+ result.scanned -= 1;
85
+ continue;
86
+ }
87
+ result.warnings.push(`lock_unreadable:${file}`);
88
+ result.retained.push(relPath);
89
+ result.entries.push({
90
+ file,
91
+ id: null,
92
+ owner: null,
93
+ created_at: null,
94
+ ttl_seconds: null,
95
+ age_seconds: null,
96
+ stale: false,
97
+ reason: "unparseable"
98
+ });
99
+ continue;
100
+ }
101
+ const lock = parseLock(raw);
102
+ if (lock === null) {
103
+ result.warnings.push(`lock_unparseable:${file}`);
104
+ result.retained.push(relPath);
105
+ result.entries.push({
106
+ file,
107
+ id: null,
108
+ owner: null,
109
+ created_at: null,
110
+ ttl_seconds: null,
111
+ age_seconds: null,
112
+ stale: false,
113
+ reason: "unparseable"
114
+ });
115
+ continue;
116
+ }
117
+ const createdAtMs = Date.parse(lock.created_at);
118
+ if (!Number.isFinite(createdAtMs)) {
119
+ result.warnings.push(`lock_invalid_timestamp:${file}`);
120
+ result.retained.push(relPath);
121
+ result.entries.push({
122
+ file,
123
+ id: lock.id,
124
+ owner: lock.owner,
125
+ created_at: lock.created_at,
126
+ ttl_seconds: lock.ttl_seconds,
127
+ age_seconds: null,
128
+ stale: false,
129
+ reason: "unparseable"
130
+ });
131
+ continue;
132
+ }
133
+ const ageMs = nowMs - createdAtMs;
134
+ const age_seconds = Math.floor(ageMs / 1e3);
135
+ const stale = ageMs > lock.ttl_seconds * 1e3;
136
+ if (!stale) {
137
+ result.retained.push(relPath);
138
+ result.entries.push({
139
+ file,
140
+ id: lock.id,
141
+ owner: lock.owner,
142
+ created_at: lock.created_at,
143
+ ttl_seconds: lock.ttl_seconds,
144
+ age_seconds,
145
+ stale: false,
146
+ reason: "active"
147
+ });
148
+ continue;
149
+ }
150
+ if (!dryRun) {
151
+ try {
152
+ await fs.unlink(absPath);
153
+ } catch (unlinkError) {
154
+ if (!isErrno(unlinkError, "ENOENT")) {
155
+ result.warnings.push(`lock_remove_failed:${file}`);
156
+ result.retained.push(relPath);
157
+ result.entries.push({
158
+ file,
159
+ id: lock.id,
160
+ owner: lock.owner,
161
+ created_at: lock.created_at,
162
+ ttl_seconds: lock.ttl_seconds,
163
+ age_seconds,
164
+ stale: true,
165
+ reason: "expired"
166
+ });
167
+ continue;
168
+ }
169
+ }
170
+ if (hooks?.onWrite) {
171
+ const hookWarnings = await hooks.onWrite(absPath);
172
+ result.warnings.push(...hookWarnings);
173
+ }
174
+ }
175
+ result.removed.push(relPath);
176
+ result.entries.push({
177
+ file,
178
+ id: lock.id,
179
+ owner: lock.owner,
180
+ created_at: lock.created_at,
181
+ ttl_seconds: lock.ttl_seconds,
182
+ age_seconds,
183
+ stale: true,
184
+ reason: "expired"
185
+ });
186
+ }
187
+ return result;
188
+ }
189
+
190
+ // dist/cli/commands/gc.js
191
+ !(function() {
192
+ try {
193
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
194
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "ddcbdf59-d0c8-5ae8-84e3-c4af1966deb6");
195
+ } catch (e2) {
196
+ }
197
+ })();
198
+ var GC_SCOPE_VALUES = ["index", "embeddings", "runtime", "locks"];
199
+ var GC_TARGETS = [
200
+ {
201
+ scope: "index",
202
+ relativePath: "index/manifest.json",
203
+ kind: "file"
204
+ },
205
+ {
206
+ scope: "embeddings",
207
+ relativePath: "search/embeddings.jsonl",
208
+ kind: "file"
209
+ },
210
+ {
211
+ scope: "embeddings",
212
+ relativePath: "search/vectorization-status.json",
213
+ kind: "file"
214
+ },
215
+ {
216
+ scope: "embeddings",
217
+ relativePath: "search/lancedb",
218
+ kind: "directory"
219
+ },
220
+ {
221
+ scope: "runtime",
222
+ relativePath: "runtime/test-runs",
223
+ kind: "directory"
224
+ }
225
+ ];
226
+ function isErrno2(error, code) {
227
+ return typeof error === "object" && error !== null && "code" in error && error.code === code;
228
+ }
229
+ async function removeCacheFile(pmRoot, target, dryRun) {
230
+ const relativePath = target.relativePath;
231
+ const absolutePath = path2.join(pmRoot, relativePath);
232
+ const warnings = await runActiveOnReadHooks({
233
+ path: absolutePath,
234
+ scope: "project"
235
+ });
236
+ try {
237
+ const stats = await fs2.stat(absolutePath);
238
+ if (target.kind === "file" && !stats.isFile()) {
239
+ return {
240
+ removed: false,
241
+ warnings: [...warnings, `not_a_file:${relativePath}`]
242
+ };
243
+ }
244
+ if (target.kind === "directory" && !stats.isDirectory()) {
245
+ return {
246
+ removed: false,
247
+ warnings: [...warnings, `not_a_directory:${relativePath}`]
248
+ };
249
+ }
250
+ if (dryRun) {
251
+ return {
252
+ removed: true,
253
+ warnings
254
+ };
255
+ }
256
+ if (target.kind === "file") {
257
+ await fs2.unlink(absolutePath);
258
+ } else {
259
+ await fs2.rm(absolutePath, { recursive: true, force: true });
260
+ }
261
+ const writeWarnings = await runActiveOnWriteHooks({
262
+ path: absolutePath,
263
+ scope: "project",
264
+ op: "gc:remove"
265
+ });
266
+ return {
267
+ removed: true,
268
+ warnings: [...warnings, ...writeWarnings]
269
+ };
270
+ } catch (error) {
271
+ if (isErrno2(error, "ENOENT")) {
272
+ return {
273
+ removed: false,
274
+ warnings
275
+ };
276
+ }
277
+ throw error;
278
+ }
279
+ }
280
+ function parseScopes(raw) {
281
+ if (!raw || raw.length === 0) {
282
+ return [...GC_SCOPE_VALUES];
283
+ }
284
+ const tokens = raw.flatMap((entry) => entry.split(",")).map((entry) => entry.trim().toLowerCase()).filter((entry) => entry.length > 0);
285
+ if (tokens.length === 0) {
286
+ throw new PmCliError(`--scope requires at least one value (${GC_SCOPE_VALUES.join(",")})`, EXIT_CODE.USAGE);
287
+ }
288
+ const resolved = /* @__PURE__ */ new Set();
289
+ for (const token of tokens) {
290
+ if (!GC_SCOPE_VALUES.includes(token)) {
291
+ throw new PmCliError(`Invalid --scope value "${token}". Expected one or more of: ${GC_SCOPE_VALUES.join(", ")}`, EXIT_CODE.USAGE);
292
+ }
293
+ resolved.add(token);
294
+ }
295
+ return GC_SCOPE_VALUES.filter((scope) => resolved.has(scope));
296
+ }
297
+ function buildGcGuidance(params) {
298
+ const guidance = [];
299
+ if (params.dryRun) {
300
+ guidance.push("Dry-run preview only: no cache artifacts were deleted.");
301
+ }
302
+ const searchScopeSelected = params.scopes.includes("index") || params.scopes.includes("embeddings");
303
+ const searchArtifactsAffected = params.removed.some((entry) => entry === "index/manifest.json" || entry === "search/embeddings.jsonl" || entry === "search/vectorization-status.json" || entry === "search/lancedb");
304
+ if (searchScopeSelected && searchArtifactsAffected) {
305
+ guidance.push('Search artifacts were removed; run "pm install search-advanced --project" if reindex is unavailable, then "pm reindex --mode keyword" (and "--mode semantic" when semantic search is enabled) before search-heavy workflows.');
306
+ }
307
+ return guidance;
308
+ }
309
+ async function runGc(global2, options = {}) {
310
+ const pmRoot = resolvePmRoot(process.cwd(), global2.path);
311
+ if (!await pathExists(getSettingsPath(pmRoot))) {
312
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
313
+ }
314
+ await readSettings(pmRoot);
315
+ const dryRun = options.dryRun === true;
316
+ const scopes = parseScopes(options.scope);
317
+ const selectedTargets = GC_TARGETS.filter((target) => scopes.includes(target.scope));
318
+ const removed = [];
319
+ const retained = [];
320
+ const warnings = [];
321
+ for (const target of selectedTargets) {
322
+ const result = await removeCacheFile(pmRoot, target, dryRun);
323
+ if (result.removed) {
324
+ removed.push(target.relativePath);
325
+ } else {
326
+ retained.push(target.relativePath);
327
+ }
328
+ warnings.push(...result.warnings);
329
+ }
330
+ let locksSummary;
331
+ if (scopes.includes("locks")) {
332
+ const lockResult = await runLockGc(pmRoot, {
333
+ dryRun,
334
+ hooks: {
335
+ onRead: (lockPath) => runActiveOnReadHooks({ path: lockPath, scope: "project" }),
336
+ onWrite: (lockPath) => runActiveOnWriteHooks({ path: lockPath, scope: "project", op: "gc:lock_remove" })
337
+ }
338
+ });
339
+ removed.push(...lockResult.removed);
340
+ retained.push(...lockResult.retained);
341
+ warnings.push(...lockResult.warnings);
342
+ locksSummary = {
343
+ scanned: lockResult.scanned,
344
+ removed: lockResult.removed.length,
345
+ retained: lockResult.retained.length
346
+ };
347
+ }
348
+ warnings.push(...await runActiveOnIndexHooks({
349
+ mode: dryRun ? "gc:dry-run" : "gc",
350
+ total_items: selectedTargets.length
351
+ }));
352
+ const guidance = buildGcGuidance({
353
+ dryRun,
354
+ scopes,
355
+ removed
356
+ });
357
+ return {
358
+ ok: warnings.length === 0,
359
+ dry_run: dryRun,
360
+ scope: scopes,
361
+ removed,
362
+ retained,
363
+ warnings,
364
+ ...locksSummary ? { locks: locksSummary } : {},
365
+ guidance,
366
+ generated_at: nowIso()
367
+ };
368
+ }
369
+ export {
370
+ runGc
371
+ };
372
+ //# sourceMappingURL=gc-ULPVWMTN.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/commands/gc.ts", "../../../../../../../../core/lock/lock-gc.ts"],
4
+ "sourcesContent": ["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { runActiveOnIndexHooks, runActiveOnReadHooks, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { runLockGc } from \"../../core/lock/lock-gc.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\n\nconst GC_SCOPE_VALUES = [\"index\", \"embeddings\", \"runtime\", \"locks\"] as const;\ntype GcScope = (typeof GC_SCOPE_VALUES)[number];\n\ninterface GcTarget {\n scope: GcScope;\n relativePath: string;\n kind: \"file\" | \"directory\";\n}\n\nconst GC_TARGETS: readonly GcTarget[] = [\n {\n scope: \"index\",\n relativePath: \"index/manifest.json\",\n kind: \"file\",\n },\n {\n scope: \"embeddings\",\n relativePath: \"search/embeddings.jsonl\",\n kind: \"file\",\n },\n {\n scope: \"embeddings\",\n relativePath: \"search/vectorization-status.json\",\n kind: \"file\",\n },\n {\n scope: \"embeddings\",\n relativePath: \"search/lancedb\",\n kind: \"directory\",\n },\n {\n scope: \"runtime\",\n relativePath: \"runtime/test-runs\",\n kind: \"directory\",\n },\n] as const;\n\nexport interface GcCommandOptions {\n dryRun?: boolean;\n scope?: string[];\n}\n\nexport interface GcLocksSummary {\n scanned: number;\n removed: number;\n retained: number;\n}\n\nexport interface GcResult {\n ok: boolean;\n dry_run: boolean;\n scope: GcScope[];\n removed: string[];\n retained: string[];\n warnings: string[];\n guidance: string[];\n /** Present only when the locks scope was selected. Summarizes the stale-lock sweep. */\n locks?: GcLocksSummary;\n generated_at: string;\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === code;\n}\n\nasync function removeCacheFile(\n pmRoot: string,\n target: GcTarget,\n dryRun: boolean,\n): Promise<{ removed: boolean; warnings: string[] }> {\n const relativePath = target.relativePath;\n const absolutePath = path.join(pmRoot, relativePath);\n const warnings = await runActiveOnReadHooks({\n path: absolutePath,\n scope: \"project\",\n });\n try {\n const stats = await fs.stat(absolutePath);\n if (target.kind === \"file\" && !stats.isFile()) {\n return {\n removed: false,\n warnings: [...warnings, `not_a_file:${relativePath}`],\n };\n }\n if (target.kind === \"directory\" && !stats.isDirectory()) {\n return {\n removed: false,\n warnings: [...warnings, `not_a_directory:${relativePath}`],\n };\n }\n if (dryRun) {\n return {\n removed: true,\n warnings,\n };\n }\n if (target.kind === \"file\") {\n await fs.unlink(absolutePath);\n } else {\n await fs.rm(absolutePath, { recursive: true, force: true });\n }\n const writeWarnings = await runActiveOnWriteHooks({\n path: absolutePath,\n scope: \"project\",\n op: \"gc:remove\",\n });\n return {\n removed: true,\n warnings: [...warnings, ...writeWarnings],\n };\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return {\n removed: false,\n warnings,\n };\n }\n throw error;\n }\n}\n\nfunction parseScopes(raw: string[] | undefined): GcScope[] {\n if (!raw || raw.length === 0) {\n return [...GC_SCOPE_VALUES];\n }\n const tokens = raw\n .flatMap((entry) => entry.split(\",\"))\n .map((entry) => entry.trim().toLowerCase())\n .filter((entry) => entry.length > 0);\n if (tokens.length === 0) {\n throw new PmCliError(`--scope requires at least one value (${GC_SCOPE_VALUES.join(\",\")})`, EXIT_CODE.USAGE);\n }\n const resolved = new Set<GcScope>();\n for (const token of tokens) {\n if (!(GC_SCOPE_VALUES as readonly string[]).includes(token)) {\n throw new PmCliError(\n `Invalid --scope value \"${token}\". Expected one or more of: ${GC_SCOPE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n resolved.add(token as GcScope);\n }\n return GC_SCOPE_VALUES.filter((scope) => resolved.has(scope));\n}\n\nfunction buildGcGuidance(params: {\n dryRun: boolean;\n scopes: GcScope[];\n removed: string[];\n}): string[] {\n const guidance: string[] = [];\n if (params.dryRun) {\n guidance.push(\"Dry-run preview only: no cache artifacts were deleted.\");\n }\n const searchScopeSelected = params.scopes.includes(\"index\") || params.scopes.includes(\"embeddings\");\n const searchArtifactsAffected = params.removed.some(\n (entry) =>\n entry === \"index/manifest.json\" ||\n entry === \"search/embeddings.jsonl\" ||\n entry === \"search/vectorization-status.json\" ||\n entry === \"search/lancedb\",\n );\n if (searchScopeSelected && searchArtifactsAffected) {\n guidance.push(\n 'Search artifacts were removed; run \"pm install search-advanced --project\" if reindex is unavailable, then \"pm reindex --mode keyword\" (and \"--mode semantic\" when semantic search is enabled) before search-heavy workflows.',\n );\n }\n return guidance;\n}\n\nexport async function runGc(global: GlobalOptions, options: GcCommandOptions = {}): Promise<GcResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n await readSettings(pmRoot);\n const dryRun = options.dryRun === true;\n const scopes = parseScopes(options.scope);\n const selectedTargets = GC_TARGETS.filter((target) => scopes.includes(target.scope));\n\n const removed: string[] = [];\n const retained: string[] = [];\n const warnings: string[] = [];\n\n for (const target of selectedTargets) {\n const result = await removeCacheFile(pmRoot, target, dryRun);\n if (result.removed) {\n removed.push(target.relativePath);\n } else {\n retained.push(target.relativePath);\n }\n warnings.push(...result.warnings);\n }\n\n // The locks scope is not a path-based GC_TARGET: it sweeps the locks/ directory\n // and removes only locks whose own embedded ttl has expired (crashed-process\n // debris), retaining active and unparseable locks. See core/lock/lock-gc.ts.\n let locksSummary: GcLocksSummary | undefined;\n if (scopes.includes(\"locks\")) {\n const lockResult = await runLockGc(pmRoot, {\n dryRun,\n hooks: {\n onRead: (lockPath) => runActiveOnReadHooks({ path: lockPath, scope: \"project\" }),\n onWrite: (lockPath) => runActiveOnWriteHooks({ path: lockPath, scope: \"project\", op: \"gc:lock_remove\" }),\n },\n });\n removed.push(...lockResult.removed);\n retained.push(...lockResult.retained);\n warnings.push(...lockResult.warnings);\n locksSummary = {\n scanned: lockResult.scanned,\n removed: lockResult.removed.length,\n retained: lockResult.retained.length,\n };\n }\n\n warnings.push(\n ...(await runActiveOnIndexHooks({\n mode: dryRun ? \"gc:dry-run\" : \"gc\",\n total_items: selectedTargets.length,\n })),\n );\n const guidance = buildGcGuidance({\n dryRun,\n scopes,\n removed,\n });\n\n return {\n ok: warnings.length === 0,\n dry_run: dryRun,\n scope: scopes,\n removed,\n retained,\n warnings,\n ...(locksSummary ? { locks: locksSummary } : {}),\n guidance,\n generated_at: nowIso(),\n };\n}\n", "/**\n * lock-gc.ts — Stale lock file garbage collector.\n *\n * Safety-first policy: if a lock file cannot be read or parsed, it is RETAINED\n * rather than deleted. We only remove locks whose staleness can be conclusively\n * determined from the lock's own embedded `ttl_seconds` field.\n *\n * Staleness formula: (now_ms - Date.parse(created_at)) > ttl_seconds * 1000\n * Zero ttl means any lock older than 0 ms is stale. Negative ttl means always stale.\n */\n\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport interface StaleLockScanEntry {\n /** e.g. \"pm-abc1.lock\" */\n file: string;\n /** parsed id, or null if unparseable */\n id: string | null;\n owner: string | null;\n created_at: string | null;\n ttl_seconds: number | null;\n /** floor((now - created_at)/1000), null if unparseable */\n age_seconds: number | null;\n /** true only when classified expired */\n stale: boolean;\n reason: \"expired\" | \"active\" | \"unparseable\";\n}\n\nexport interface LockGcHooks {\n onRead?: (lockPath: string) => Promise<string[]> | string[];\n onWrite?: (lockPath: string) => Promise<string[]> | string[];\n}\n\nexport interface LockGcOptions {\n dryRun: boolean;\n /** epoch ms; defaults to Date.now() — injectable for deterministic tests */\n now?: number;\n hooks?: LockGcHooks;\n}\n\nexport interface LockGcResult {\n /** number of *.lock files examined */\n scanned: number;\n /** relative paths like \"locks/pm-abc1.lock\" (removed, or would-remove under dryRun) */\n removed: string[];\n /** relative paths retained (active OR unparseable — never delete what we can't reason about) */\n retained: string[];\n warnings: string[];\n /** one per scanned *.lock file, sorted by file name asc */\n entries: StaleLockScanEntry[];\n}\n\ninterface ParsedLock {\n id: string;\n owner: string;\n created_at: string;\n ttl_seconds: number;\n}\n\nfunction parseLock(raw: string): ParsedLock | null {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n return null;\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return null;\n }\n const candidate = parsed as Record<string, unknown>;\n const { id, owner, created_at, ttl_seconds } = candidate;\n if (\n typeof id !== \"string\" ||\n typeof owner !== \"string\" ||\n typeof created_at !== \"string\" ||\n typeof ttl_seconds !== \"number\" ||\n !Number.isFinite(ttl_seconds)\n ) {\n return null;\n }\n return { id, owner, created_at, ttl_seconds };\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === code\n );\n}\n\nexport async function runLockGc(pmRoot: string, options: LockGcOptions): Promise<LockGcResult> {\n const { dryRun, hooks } = options;\n const nowMs = options.now ?? Date.now();\n const locksDir = path.join(pmRoot, \"locks\");\n\n const result: LockGcResult = {\n scanned: 0,\n removed: [],\n retained: [],\n warnings: [],\n entries: [],\n };\n\n let dirEntries: string[];\n try {\n const raw = await fs.readdir(locksDir);\n dirEntries = raw.filter((f) => f.endsWith(\".lock\")).sort();\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return result;\n }\n throw error;\n }\n\n for (const file of dirEntries) {\n result.scanned += 1;\n const absPath = path.join(locksDir, file);\n const relPath = `locks/${file}`;\n\n // --- onRead hook ---\n if (hooks?.onRead) {\n const hookWarnings = await hooks.onRead(absPath);\n result.warnings.push(...hookWarnings);\n }\n\n // --- read file ---\n let raw: string;\n try {\n raw = await fs.readFile(absPath, \"utf8\");\n } catch (readError: unknown) {\n if (isErrno(readError, \"ENOENT\")) {\n // Disappeared between readdir and readFile — treat as a ghost; skip quietly.\n result.scanned -= 1;\n continue;\n }\n result.warnings.push(`lock_unreadable:${file}`);\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: null,\n owner: null,\n created_at: null,\n ttl_seconds: null,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n });\n continue;\n }\n\n // --- parse ---\n const lock = parseLock(raw);\n if (lock === null) {\n result.warnings.push(`lock_unparseable:${file}`);\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: null,\n owner: null,\n created_at: null,\n ttl_seconds: null,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n });\n continue;\n }\n\n // --- validate timestamp ---\n const createdAtMs = Date.parse(lock.created_at);\n if (!Number.isFinite(createdAtMs)) {\n result.warnings.push(`lock_invalid_timestamp:${file}`);\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n });\n continue;\n }\n\n const ageMs = nowMs - createdAtMs;\n const age_seconds = Math.floor(ageMs / 1000);\n const stale = ageMs > lock.ttl_seconds * 1000;\n\n if (!stale) {\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds,\n stale: false,\n reason: \"active\",\n });\n continue;\n }\n\n // --- stale: remove or preview ---\n if (!dryRun) {\n try {\n await fs.unlink(absPath);\n } catch (unlinkError: unknown) {\n if (!isErrno(unlinkError, \"ENOENT\")) {\n result.warnings.push(`lock_remove_failed:${file}`);\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds,\n stale: true,\n reason: \"expired\",\n });\n continue;\n }\n // ENOENT on unlink = already gone (race); treat as removed\n }\n // onWrite hook after successful removal\n if (hooks?.onWrite) {\n const hookWarnings = await hooks.onWrite(absPath);\n result.warnings.push(...hookWarnings);\n }\n }\n\n result.removed.push(relPath);\n result.entries.push({\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds,\n stale: true,\n reason: \"expired\",\n });\n }\n\n return result;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA,OAAOA,SAAQ;AACf,OAAOC,WAAU;;;ACUjB,OAAO,QAAQ;AACf,OAAO,UAAU;;;;;;;;AAgDjB,SAAS,UAAU,KAAW;AAC5B,MAAI;AACJ,MAAI;AACF,aAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;AACN,WAAO;EACT;AACA,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E,WAAO;EACT;AACA,QAAM,YAAY;AAClB,QAAM,EAAE,IAAI,OAAO,YAAY,YAAW,IAAK;AAC/C,MACE,OAAO,OAAO,YACd,OAAO,UAAU,YACjB,OAAO,eAAe,YACtB,OAAO,gBAAgB,YACvB,CAAC,OAAO,SAAS,WAAW,GAC5B;AACA,WAAO;EACT;AACA,SAAO,EAAE,IAAI,OAAO,YAAY,YAAW;AAC7C;AAEA,SAAS,QAAQ,OAAgB,MAAY;AAC3C,SACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA4B,SAAS;AAE1C;AAEA,eAAsB,UAAU,QAAgB,SAAsB;AACpE,QAAM,EAAE,QAAQ,MAAK,IAAK;AAC1B,QAAM,QAAQ,QAAQ,OAAO,KAAK,IAAG;AACrC,QAAM,WAAW,KAAK,KAAK,QAAQ,OAAO;AAE1C,QAAM,SAAuB;IAC3B,SAAS;IACT,SAAS,CAAA;IACT,UAAU,CAAA;IACV,UAAU,CAAA;IACV,SAAS,CAAA;;AAGX,MAAI;AACJ,MAAI;AACF,UAAM,MAAM,MAAM,GAAG,QAAQ,QAAQ;AACrC,iBAAa,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC,EAAE,KAAI;EAC1D,SAAS,OAAgB;AACvB,QAAI,QAAQ,OAAO,QAAQ,GAAG;AAC5B,aAAO;IACT;AACA,UAAM;EACR;AAEA,aAAW,QAAQ,YAAY;AAC7B,WAAO,WAAW;AAClB,UAAM,UAAU,KAAK,KAAK,UAAU,IAAI;AACxC,UAAM,UAAU,SAAS,IAAI;AAG7B,QAAI,OAAO,QAAQ;AACjB,YAAM,eAAe,MAAM,MAAM,OAAO,OAAO;AAC/C,aAAO,SAAS,KAAK,GAAG,YAAY;IACtC;AAGA,QAAI;AACJ,QAAI;AACF,YAAM,MAAM,GAAG,SAAS,SAAS,MAAM;IACzC,SAAS,WAAoB;AAC3B,UAAI,QAAQ,WAAW,QAAQ,GAAG;AAEhC,eAAO,WAAW;AAClB;MACF;AACA,aAAO,SAAS,KAAK,mBAAmB,IAAI,EAAE;AAC9C,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK;QAClB;QACA,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,aAAa;QACb,aAAa;QACb,OAAO;QACP,QAAQ;OACT;AACD;IACF;AAGA,UAAM,OAAO,UAAU,GAAG;AAC1B,QAAI,SAAS,MAAM;AACjB,aAAO,SAAS,KAAK,oBAAoB,IAAI,EAAE;AAC/C,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK;QAClB;QACA,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,aAAa;QACb,aAAa;QACb,OAAO;QACP,QAAQ;OACT;AACD;IACF;AAGA,UAAM,cAAc,KAAK,MAAM,KAAK,UAAU;AAC9C,QAAI,CAAC,OAAO,SAAS,WAAW,GAAG;AACjC,aAAO,SAAS,KAAK,0BAA0B,IAAI,EAAE;AACrD,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK;QAClB;QACA,IAAI,KAAK;QACT,OAAO,KAAK;QACZ,YAAY,KAAK;QACjB,aAAa,KAAK;QAClB,aAAa;QACb,OAAO;QACP,QAAQ;OACT;AACD;IACF;AAEA,UAAM,QAAQ,QAAQ;AACtB,UAAM,cAAc,KAAK,MAAM,QAAQ,GAAI;AAC3C,UAAM,QAAQ,QAAQ,KAAK,cAAc;AAEzC,QAAI,CAAC,OAAO;AACV,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK;QAClB;QACA,IAAI,KAAK;QACT,OAAO,KAAK;QACZ,YAAY,KAAK;QACjB,aAAa,KAAK;QAClB;QACA,OAAO;QACP,QAAQ;OACT;AACD;IACF;AAGA,QAAI,CAAC,QAAQ;AACX,UAAI;AACF,cAAM,GAAG,OAAO,OAAO;MACzB,SAAS,aAAsB;AAC7B,YAAI,CAAC,QAAQ,aAAa,QAAQ,GAAG;AACnC,iBAAO,SAAS,KAAK,sBAAsB,IAAI,EAAE;AACjD,iBAAO,SAAS,KAAK,OAAO;AAC5B,iBAAO,QAAQ,KAAK;YAClB;YACA,IAAI,KAAK;YACT,OAAO,KAAK;YACZ,YAAY,KAAK;YACjB,aAAa,KAAK;YAClB;YACA,OAAO;YACP,QAAQ;WACT;AACD;QACF;MAEF;AAEA,UAAI,OAAO,SAAS;AAClB,cAAM,eAAe,MAAM,MAAM,QAAQ,OAAO;AAChD,eAAO,SAAS,KAAK,GAAG,YAAY;MACtC;IACF;AAEA,WAAO,QAAQ,KAAK,OAAO;AAC3B,WAAO,QAAQ,KAAK;MAClB;MACA,IAAI,KAAK;MACT,OAAO,KAAK;MACZ,YAAY,KAAK;MACjB,aAAa,KAAK;MAClB;MACA,OAAO;MACP,QAAQ;KACT;EACH;AAEA,SAAO;AACT;;;;;;;;;;AD/OA,IAAM,kBAAkB,CAAC,SAAS,cAAc,WAAW,OAAO;AASlE,IAAM,aAAkC;EACtC;IACE,OAAO;IACP,cAAc;IACd,MAAM;;EAER;IACE,OAAO;IACP,cAAc;IACd,MAAM;;EAER;IACE,OAAO;IACP,cAAc;IACd,MAAM;;EAER;IACE,OAAO;IACP,cAAc;IACd,MAAM;;EAER;IACE,OAAO;IACP,cAAc;IACd,MAAM;;;AA4BV,SAASC,SAAQ,OAAgB,MAAY;AAC3C,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAU,MAA4B,SAAS;AACjH;AAEA,eAAe,gBACb,QACA,QACA,QAAe;AAEf,QAAM,eAAe,OAAO;AAC5B,QAAM,eAAeC,MAAK,KAAK,QAAQ,YAAY;AACnD,QAAM,WAAW,MAAM,qBAAqB;IAC1C,MAAM;IACN,OAAO;GACR;AACD,MAAI;AACF,UAAM,QAAQ,MAAMC,IAAG,KAAK,YAAY;AACxC,QAAI,OAAO,SAAS,UAAU,CAAC,MAAM,OAAM,GAAI;AAC7C,aAAO;QACL,SAAS;QACT,UAAU,CAAC,GAAG,UAAU,cAAc,YAAY,EAAE;;IAExD;AACA,QAAI,OAAO,SAAS,eAAe,CAAC,MAAM,YAAW,GAAI;AACvD,aAAO;QACL,SAAS;QACT,UAAU,CAAC,GAAG,UAAU,mBAAmB,YAAY,EAAE;;IAE7D;AACA,QAAI,QAAQ;AACV,aAAO;QACL,SAAS;QACT;;IAEJ;AACA,QAAI,OAAO,SAAS,QAAQ;AAC1B,YAAMA,IAAG,OAAO,YAAY;IAC9B,OAAO;AACL,YAAMA,IAAG,GAAG,cAAc,EAAE,WAAW,MAAM,OAAO,KAAI,CAAE;IAC5D;AACA,UAAM,gBAAgB,MAAM,sBAAsB;MAChD,MAAM;MACN,OAAO;MACP,IAAI;KACL;AACD,WAAO;MACL,SAAS;MACT,UAAU,CAAC,GAAG,UAAU,GAAG,aAAa;;EAE5C,SAAS,OAAgB;AACvB,QAAIF,SAAQ,OAAO,QAAQ,GAAG;AAC5B,aAAO;QACL,SAAS;QACT;;IAEJ;AACA,UAAM;EACR;AACF;AAEA,SAAS,YAAY,KAAyB;AAC5C,MAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAC5B,WAAO,CAAC,GAAG,eAAe;EAC5B;AACA,QAAM,SAAS,IACZ,QAAQ,CAAC,UAAU,MAAM,MAAM,GAAG,CAAC,EACnC,IAAI,CAAC,UAAU,MAAM,KAAI,EAAG,YAAW,CAAE,EACzC,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AACrC,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI,WAAW,wCAAwC,gBAAgB,KAAK,GAAG,CAAC,KAAK,UAAU,KAAK;EAC5G;AACA,QAAM,WAAW,oBAAI,IAAG;AACxB,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAE,gBAAsC,SAAS,KAAK,GAAG;AAC3D,YAAM,IAAI,WACR,0BAA0B,KAAK,+BAA+B,gBAAgB,KAAK,IAAI,CAAC,IACxF,UAAU,KAAK;IAEnB;AACA,aAAS,IAAI,KAAgB;EAC/B;AACA,SAAO,gBAAgB,OAAO,CAAC,UAAU,SAAS,IAAI,KAAK,CAAC;AAC9D;AAEA,SAAS,gBAAgB,QAIxB;AACC,QAAM,WAAqB,CAAA;AAC3B,MAAI,OAAO,QAAQ;AACjB,aAAS,KAAK,wDAAwD;EACxE;AACA,QAAM,sBAAsB,OAAO,OAAO,SAAS,OAAO,KAAK,OAAO,OAAO,SAAS,YAAY;AAClG,QAAM,0BAA0B,OAAO,QAAQ,KAC7C,CAAC,UACC,UAAU,yBACV,UAAU,6BACV,UAAU,sCACV,UAAU,gBAAgB;AAE9B,MAAI,uBAAuB,yBAAyB;AAClD,aAAS,KACP,8NAA8N;EAElO;AACA,SAAO;AACT;AAEA,eAAsB,MAAMG,SAAuB,UAA4B,CAAA,GAAE;AAC/E,QAAM,SAAS,cAAc,QAAQ,IAAG,GAAIA,QAAO,IAAI;AACvD,MAAI,CAAE,MAAM,WAAW,gBAAgB,MAAM,CAAC,GAAI;AAChD,UAAM,IAAI,WAAW,iCAAiC,MAAM,wBAAwB,UAAU,SAAS;EACzG;AAEA,QAAM,aAAa,MAAM;AACzB,QAAM,SAAS,QAAQ,WAAW;AAClC,QAAM,SAAS,YAAY,QAAQ,KAAK;AACxC,QAAM,kBAAkB,WAAW,OAAO,CAAC,WAAW,OAAO,SAAS,OAAO,KAAK,CAAC;AAEnF,QAAM,UAAoB,CAAA;AAC1B,QAAM,WAAqB,CAAA;AAC3B,QAAM,WAAqB,CAAA;AAE3B,aAAW,UAAU,iBAAiB;AACpC,UAAM,SAAS,MAAM,gBAAgB,QAAQ,QAAQ,MAAM;AAC3D,QAAI,OAAO,SAAS;AAClB,cAAQ,KAAK,OAAO,YAAY;IAClC,OAAO;AACL,eAAS,KAAK,OAAO,YAAY;IACnC;AACA,aAAS,KAAK,GAAG,OAAO,QAAQ;EAClC;AAKA,MAAI;AACJ,MAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,UAAM,aAAa,MAAM,UAAU,QAAQ;MACzC;MACA,OAAO;QACL,QAAQ,CAAC,aAAa,qBAAqB,EAAE,MAAM,UAAU,OAAO,UAAS,CAAE;QAC/E,SAAS,CAAC,aAAa,sBAAsB,EAAE,MAAM,UAAU,OAAO,WAAW,IAAI,iBAAgB,CAAE;;KAE1G;AACD,YAAQ,KAAK,GAAG,WAAW,OAAO;AAClC,aAAS,KAAK,GAAG,WAAW,QAAQ;AACpC,aAAS,KAAK,GAAG,WAAW,QAAQ;AACpC,mBAAe;MACb,SAAS,WAAW;MACpB,SAAS,WAAW,QAAQ;MAC5B,UAAU,WAAW,SAAS;;EAElC;AAEA,WAAS,KACP,GAAI,MAAM,sBAAsB;IAC9B,MAAM,SAAS,eAAe;IAC9B,aAAa,gBAAgB;GAC9B,CAAE;AAEL,QAAM,WAAW,gBAAgB;IAC/B;IACA;IACA;GACD;AAED,SAAO;IACL,IAAI,SAAS,WAAW;IACxB,SAAS;IACT,OAAO;IACP;IACA;IACA;IACA,GAAI,eAAe,EAAE,OAAO,aAAY,IAAK,CAAA;IAC7C;IACA,cAAc,OAAM;;AAExB;",
6
+ "names": ["fs", "path", "isErrno", "path", "fs", "global"]
7
+ }
@@ -2,21 +2,21 @@
2
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]="ee4af23f-e74f-5512-a4da-786f9a459b45")}catch(e){}}();
3
3
  import {
4
4
  readHistoryEntries
5
- } from "./chunk-V3JQ4IPL.js";
6
- import "./chunk-ASQM3IF5.js";
7
- import "./chunk-GFWHHMVV.js";
5
+ } from "./chunk-2RSPZI5H.js";
6
+ import "./chunk-GXSUPCBV.js";
7
+ import "./chunk-3VAM3NNM.js";
8
8
  import {
9
9
  buildItemNotFoundError,
10
10
  locateItem,
11
11
  readLocatedItem,
12
12
  toItemRecord
13
- } from "./chunk-CWT53EYT.js";
14
- import "./chunk-SSFMJCPF.js";
15
- import "./chunk-KBG47ZOY.js";
13
+ } from "./chunk-GGYWB3Y2.js";
14
+ import "./chunk-HZGUAH22.js";
15
+ import "./chunk-LB3RUL2N.js";
16
16
  import {
17
17
  resolveItemTypeRegistry
18
- } from "./chunk-SZQCER6S.js";
19
- import "./chunk-NQP3ECKF.js";
18
+ } from "./chunk-2VBQ6ZXS.js";
19
+ import "./chunk-TCD3R2PF.js";
20
20
  import {
21
21
  EXIT_CODE,
22
22
  FRONT_MATTER_KEY_ORDER,
@@ -28,7 +28,7 @@ import {
28
28
  readSettings,
29
29
  resolvePmRoot,
30
30
  resolveRuntimeFieldRegistry
31
- } from "./chunk-4LTBNUYT.js";
31
+ } from "./chunk-5SFCOO6B.js";
32
32
 
33
33
  // dist/cli/commands/get.js
34
34
  var GET_DEPTH_VALUES = ["brief", "standard", "deep"];
@@ -189,6 +189,6 @@ async function runGet(id, global, options = {}) {
189
189
  export {
190
190
  runGet
191
191
  };
192
- //# sourceMappingURL=get-WXMLRG7M.js.map
192
+ //# sourceMappingURL=get-RV37HT3G.js.map
193
193
 
194
194
  //# debugId=ee4af23f-e74f-5512-a4da-786f9a459b45
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  readHistoryEntries
3
- } from "./chunk-WIKR7KFL.js";
4
- import "./chunk-S3CV7JGJ.js";
5
- import "./chunk-K47WAYQV.js";
3
+ } from "./chunk-PRJCELV4.js";
4
+ import "./chunk-UM2GBHS4.js";
5
+ import "./chunk-WKY2IBOQ.js";
6
6
  import {
7
7
  buildItemNotFoundError,
8
8
  locateItem,
9
9
  readLocatedItem,
10
10
  toItemRecord
11
- } from "./chunk-XG7RJYHV.js";
12
- import "./chunk-KA24HME7.js";
13
- import "./chunk-HPH6X4ZZ.js";
11
+ } from "./chunk-XTGLRY2Y.js";
12
+ import "./chunk-T3LC5LKB.js";
13
+ import "./chunk-AO442XLN.js";
14
14
  import {
15
15
  resolveItemTypeRegistry
16
- } from "./chunk-4PJQSECJ.js";
17
- import "./chunk-RANZIID5.js";
16
+ } from "./chunk-KJE2FOS4.js";
17
+ import "./chunk-QO7EBBOM.js";
18
18
  import {
19
19
  EXIT_CODE,
20
20
  FRONT_MATTER_KEY_ORDER,
@@ -26,7 +26,7 @@ import {
26
26
  readSettings,
27
27
  resolvePmRoot,
28
28
  resolveRuntimeFieldRegistry
29
- } from "./chunk-SRVKTWPR.js";
29
+ } from "./chunk-U5SXYXSY.js";
30
30
 
31
31
  // dist/cli/commands/get.js
32
32
  !(function() {
@@ -194,4 +194,4 @@ async function runGet(id, global2, options = {}) {
194
194
  export {
195
195
  runGet
196
196
  };
197
- //# sourceMappingURL=get-CINFEUIY.js.map
197
+ //# sourceMappingURL=get-WXU6WI5P.js.map
@@ -1,40 +1,40 @@
1
1
  import {
2
2
  buildRemediationMap,
3
3
  scanHistoryDrift
4
- } from "./chunk-TBQVUNVH.js";
4
+ } from "./chunk-52MAOQ6J.js";
5
5
  import {
6
6
  collectStaleVectorizationIds
7
7
  } from "./chunk-QAJBIGRA.js";
8
- import "./chunk-S3CV7JGJ.js";
8
+ import "./chunk-UM2GBHS4.js";
9
9
  import {
10
10
  buildRegistrationCollisionRemediation,
11
11
  readManagedExtensionState
12
- } from "./chunk-OIQIXTNB.js";
12
+ } from "./chunk-ECCMVXGM.js";
13
13
  import {
14
14
  readVectorizationStatusLedger,
15
15
  refreshSemanticEmbeddingsForMutatedItems,
16
16
  resolveEmbeddingProviders,
17
17
  resolveSettingsWithSemanticRuntimeDefaults,
18
18
  resolveVectorStores
19
- } from "./chunk-5IRA6IYD.js";
19
+ } from "./chunk-3FI4SEFT.js";
20
20
  import "./chunk-3HUE7XOF.js";
21
21
  import {
22
22
  collectRegisteredItemFieldNames,
23
23
  enforceHistoryStreamPolicyForItems,
24
24
  listAllFrontMatter,
25
25
  listAllFrontMatterWithBody
26
- } from "./chunk-XG7RJYHV.js";
27
- import "./chunk-KA24HME7.js";
26
+ } from "./chunk-XTGLRY2Y.js";
27
+ import "./chunk-T3LC5LKB.js";
28
28
  import {
29
29
  findFirstMergeConflictMarker,
30
30
  parseItemDocument
31
- } from "./chunk-HPH6X4ZZ.js";
31
+ } from "./chunk-AO442XLN.js";
32
32
  import {
33
33
  resolveItemTypeRegistry
34
- } from "./chunk-4PJQSECJ.js";
34
+ } from "./chunk-KJE2FOS4.js";
35
35
  import {
36
36
  nowIso
37
- } from "./chunk-RANZIID5.js";
37
+ } from "./chunk-QO7EBBOM.js";
38
38
  import {
39
39
  EXIT_CODE,
40
40
  EXTENSION_CAPABILITY_CONTRACT,
@@ -57,7 +57,7 @@ import {
57
57
  resolvePmRoot,
58
58
  runActiveOnReadHooks,
59
59
  toNonEmptyStringOrUndefined
60
- } from "./chunk-SRVKTWPR.js";
60
+ } from "./chunk-U5SXYXSY.js";
61
61
 
62
62
  // dist/cli/commands/health.js
63
63
  import fs from "node:fs/promises";
@@ -65,7 +65,7 @@ import path from "node:path";
65
65
  !(function() {
66
66
  try {
67
67
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
68
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b3e623d5-2959-599f-8790-cf31386eee4e");
68
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a137a89f-1c34-566c-b550-1805d2e9cf43");
69
69
  } catch (e2) {
70
70
  }
71
71
  })();
@@ -75,6 +75,10 @@ var TELEMETRY_QUEUE_RELATIVE_PATH = path.join("runtime", "telemetry", "events.js
75
75
  var TELEMETRY_STATE_RELATIVE_PATH = path.join("runtime", "telemetry", "state.json");
76
76
  var TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS = 2500;
77
77
  var TELEMETRY_QUEUE_HIGH_WATER_MARK = 500;
78
+ var TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS = [
79
+ "x-pm-telemetry-max-schema-version",
80
+ "x-pm-telemetry-max-version"
81
+ ];
78
82
  function isAdvisoryHealthWarning(warning) {
79
83
  return warning.startsWith("telemetry_");
80
84
  }
@@ -871,7 +875,16 @@ async function probeTelemetryEndpointHealth(endpoint) {
871
875
  return {
872
876
  probe_url: normalizeEndpointForDisplay(probeUrl),
873
877
  ok: response.ok,
874
- status: response.status
878
+ status: response.status,
879
+ max_schema_version: (() => {
880
+ for (const headerName of TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS) {
881
+ const value = response.headers.get(headerName)?.trim();
882
+ if (value && value.length > 0) {
883
+ return value;
884
+ }
885
+ }
886
+ return void 0;
887
+ })()
875
888
  };
876
889
  } catch (error) {
877
890
  return {
@@ -1258,4 +1271,4 @@ async function runHealth(global2, options = {}) {
1258
1271
  export {
1259
1272
  runHealth
1260
1273
  };
1261
- //# sourceMappingURL=health-IT5DBPRJ.js.map
1274
+ //# sourceMappingURL=health-6L6EH4WR.js.map