@unbrained/pm-cli 2026.6.8 → 2026.6.10

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 (527) hide show
  1. package/CHANGELOG.md +74 -11
  2. package/dist/cli/bootstrap-args.js +4 -2
  3. package/dist/cli/bootstrap-args.js.map +1 -1
  4. package/dist/cli/commands/aggregate.d.ts +7 -0
  5. package/dist/cli/commands/aggregate.js +53 -12
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/close.d.ts +1 -0
  8. package/dist/cli/commands/close.js +106 -3
  9. package/dist/cli/commands/close.js.map +1 -1
  10. package/dist/cli/commands/completion.js +20 -7
  11. package/dist/cli/commands/completion.js.map +1 -1
  12. package/dist/cli/commands/context.d.ts +9 -0
  13. package/dist/cli/commands/context.js +149 -20
  14. package/dist/cli/commands/context.js.map +1 -1
  15. package/dist/cli/commands/create.d.ts +1 -0
  16. package/dist/cli/commands/create.js +5 -3
  17. package/dist/cli/commands/create.js.map +1 -1
  18. package/dist/cli/commands/extension.js +4 -2
  19. package/dist/cli/commands/extension.js.map +1 -1
  20. package/dist/cli/commands/health.js +44 -6
  21. package/dist/cli/commands/health.js.map +1 -1
  22. package/dist/cli/commands/history.js +6 -5
  23. package/dist/cli/commands/history.js.map +1 -1
  24. package/dist/cli/commands/linked-test-parsers.d.ts +1 -0
  25. package/dist/cli/commands/linked-test-parsers.js +289 -2
  26. package/dist/cli/commands/linked-test-parsers.js.map +1 -1
  27. package/dist/cli/commands/reindex.d.ts +1 -0
  28. package/dist/cli/commands/reindex.js +33 -4
  29. package/dist/cli/commands/reindex.js.map +1 -1
  30. package/dist/cli/commands/test.d.ts +6 -0
  31. package/dist/cli/commands/test.js +46 -5
  32. package/dist/cli/commands/test.js.map +1 -1
  33. package/dist/cli/extension-command-help.d.ts +1 -0
  34. package/dist/cli/extension-command-help.js +42 -2
  35. package/dist/cli/extension-command-help.js.map +1 -1
  36. package/dist/cli/extension-command-options.d.ts +2 -0
  37. package/dist/cli/extension-command-options.js +89 -17
  38. package/dist/cli/extension-command-options.js.map +1 -1
  39. package/dist/cli/main.js +26 -26
  40. package/dist/cli/main.js.map +1 -1
  41. package/dist/cli/register-list-query.js +3 -2
  42. package/dist/cli/register-list-query.js.map +1 -1
  43. package/dist/cli/register-mutation.js +4 -2
  44. package/dist/cli/register-mutation.js.map +1 -1
  45. package/dist/cli/register-operations.js +15 -6
  46. package/dist/cli/register-operations.js.map +1 -1
  47. package/dist/cli/registration-helpers.js +9 -2
  48. package/dist/cli/registration-helpers.js.map +1 -1
  49. package/dist/cli-bundle/chunks/activity-5QLX6DHN.js +16 -0
  50. package/dist/cli-bundle/chunks/{activity-Q7XMIZIH.js → activity-W6TS5F2L.js} +11 -11
  51. package/dist/cli-bundle/chunks/{aggregate-GBSHSXOB.js → aggregate-NNJLKGEK.js} +64 -24
  52. package/dist/cli-bundle/chunks/aggregate-NNJLKGEK.js.map +7 -0
  53. package/dist/cli-bundle/chunks/{aggregate-HKQJZUBG.js → aggregate-UK2WJ4Z3.js} +65 -25
  54. package/dist/cli-bundle/chunks/aggregate-UK2WJ4Z3.js.map +1 -0
  55. package/dist/cli-bundle/chunks/{append-3RFOU7P5.js → append-7BS36Z2L.js} +8 -8
  56. package/dist/cli-bundle/chunks/{append-OM74OJVT.js → append-DHGTLUZW.js} +8 -8
  57. package/dist/cli-bundle/chunks/{chunk-SDLEYY6A.js → chunk-2MKBPWMK.js} +6 -8
  58. package/dist/cli-bundle/chunks/{chunk-SDLEYY6A.js.map → chunk-2MKBPWMK.js.map} +1 -1
  59. package/dist/cli-bundle/chunks/{chunk-Z2HXAFFH.js → chunk-344GDQTH.js} +2 -2
  60. package/dist/cli-bundle/chunks/{chunk-AEMKH5WQ.js → chunk-3VTWCBXL.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-XLSQ3QLT.js → chunk-4CYHWHZU.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-JS47EKLP.js → chunk-4H2NDEGJ.js} +7 -7
  63. package/dist/cli-bundle/chunks/{chunk-QF4OPBAG.js → chunk-5HH6QRH5.js} +9 -9
  64. package/dist/cli-bundle/chunks/{chunk-5NVJA7IW.js → chunk-5OMABP7I.js} +7 -7
  65. package/dist/cli-bundle/chunks/{chunk-YEFOCDIK.js → chunk-6ADVKPVV.js} +7 -7
  66. package/dist/cli-bundle/chunks/{chunk-SM3RMWGO.js → chunk-6KQS23TX.js} +8 -8
  67. package/dist/cli-bundle/chunks/{chunk-ETZZU5QF.js → chunk-6N46IM44.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-EPWT7BEA.js → chunk-6OSG3EMX.js} +157 -12
  69. package/dist/cli-bundle/chunks/chunk-6OSG3EMX.js.map +1 -0
  70. package/dist/cli-bundle/chunks/{chunk-5WO2VKFA.js → chunk-73PSHEMT.js} +8 -8
  71. package/dist/cli-bundle/chunks/{chunk-J4DKAGTM.js → chunk-7DUVDW7C.js} +3 -3
  72. package/dist/cli-bundle/chunks/{chunk-2BYKYPWY.js → chunk-7GYMMDDW.js} +2 -2
  73. package/dist/cli-bundle/chunks/{chunk-QFVASU44.js → chunk-7TW64BS5.js} +2 -2
  74. package/dist/cli-bundle/chunks/{chunk-VXBUXLVD.js → chunk-A6XVYNQJ.js} +13 -6
  75. package/dist/cli-bundle/chunks/chunk-A6XVYNQJ.js.map +7 -0
  76. package/dist/cli-bundle/chunks/{chunk-KP4KIUQT.js → chunk-ANVZCNL5.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-HOA3GMB6.js → chunk-BE5G7HEL.js} +14 -8
  78. package/dist/cli-bundle/chunks/chunk-BE5G7HEL.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-QWNUDGFQ.js → chunk-CMEHZD6G.js} +163 -11
  80. package/dist/cli-bundle/chunks/chunk-CMEHZD6G.js.map +7 -0
  81. package/dist/cli-bundle/chunks/{chunk-7NQIY7Z6.js → chunk-CTW7QAHM.js} +6 -5
  82. package/dist/cli-bundle/chunks/chunk-CTW7QAHM.js.map +1 -0
  83. package/dist/cli-bundle/chunks/{chunk-UEXNNF3K.js → chunk-D6JZBUZ6.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-F33AQIB4.js → chunk-DEYNERFX.js} +19 -7
  85. package/dist/cli-bundle/chunks/chunk-DEYNERFX.js.map +1 -0
  86. package/dist/cli-bundle/chunks/{chunk-R4XIE7NQ.js → chunk-DMDEC4QP.js} +6 -6
  87. package/dist/cli-bundle/chunks/{chunk-KN4WSESY.js → chunk-DTRIVUTN.js} +5 -5
  88. package/dist/cli-bundle/chunks/{chunk-KS2U7BZ3.js → chunk-EAQLLID6.js} +16 -6
  89. package/dist/cli-bundle/chunks/chunk-EAQLLID6.js.map +1 -0
  90. package/dist/cli-bundle/chunks/{chunk-HP35AVFS.js → chunk-EIS32UA4.js} +2 -2
  91. package/dist/cli-bundle/chunks/chunk-F2PVV7IX.js +528 -0
  92. package/dist/cli-bundle/chunks/chunk-F2PVV7IX.js.map +7 -0
  93. package/dist/cli-bundle/chunks/{chunk-DV27WDA7.js → chunk-GF5XIBUH.js} +70 -9
  94. package/dist/cli-bundle/chunks/chunk-GF5XIBUH.js.map +7 -0
  95. package/dist/cli-bundle/chunks/{chunk-BFJPMUF5.js → chunk-GP6SHEAI.js} +5 -5
  96. package/dist/cli-bundle/chunks/{chunk-URJEZOLB.js → chunk-GRHPU6EM.js} +2 -2
  97. package/dist/cli-bundle/chunks/{chunk-K62SNVVE.js → chunk-I2FM2SMO.js} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-F33VC5EX.js → chunk-IEQ3N7WP.js} +12 -5
  99. package/dist/cli-bundle/chunks/chunk-IEQ3N7WP.js.map +1 -0
  100. package/dist/cli-bundle/chunks/{chunk-AXBUHLW7.js → chunk-K45NAJV2.js} +9 -9
  101. package/dist/cli-bundle/chunks/{chunk-NLVCMVC7.js → chunk-K7SXBA75.js} +2 -2
  102. package/dist/cli-bundle/chunks/{chunk-OVSSE2JP.js → chunk-KHBRV5JU.js} +14 -12
  103. package/dist/cli-bundle/chunks/chunk-KHBRV5JU.js.map +1 -0
  104. package/dist/cli-bundle/chunks/{chunk-D7WK2PKB.js → chunk-KMMUDSSB.js} +112 -7
  105. package/dist/cli-bundle/chunks/chunk-KMMUDSSB.js.map +1 -0
  106. package/dist/cli-bundle/chunks/{chunk-ALSRBNYB.js → chunk-KRZQGRVL.js} +14 -7
  107. package/dist/cli-bundle/chunks/chunk-KRZQGRVL.js.map +1 -0
  108. package/dist/cli-bundle/chunks/{chunk-PQDH3S54.js → chunk-LUJQJR7G.js} +71 -69
  109. package/dist/cli-bundle/chunks/{chunk-PQDH3S54.js.map → chunk-LUJQJR7G.js.map} +1 -1
  110. package/dist/cli-bundle/chunks/{chunk-NDSMKB2I.js → chunk-LYL32FT6.js} +3 -3
  111. package/dist/cli-bundle/chunks/{chunk-ODN53S6H.js → chunk-MF6KSSMF.js} +11 -14
  112. package/dist/cli-bundle/chunks/chunk-MF6KSSMF.js.map +1 -0
  113. package/dist/cli-bundle/chunks/{chunk-Z55JACL2.js → chunk-O64EYNHF.js} +6 -6
  114. package/dist/cli-bundle/chunks/{chunk-3TXWDGPU.js → chunk-OQGJSCZZ.js} +522 -37
  115. package/dist/cli-bundle/chunks/chunk-OQGJSCZZ.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-FO2TYSQZ.js → chunk-OROMGSBP.js} +2 -2
  117. package/dist/cli-bundle/chunks/{chunk-3E3MDBTB.js → chunk-OSGWBWLK.js} +76 -74
  118. package/dist/cli-bundle/chunks/{chunk-3E3MDBTB.js.map → chunk-OSGWBWLK.js.map} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-7WXGR44E.js → chunk-OVNSQHDG.js} +19 -7
  120. package/dist/cli-bundle/chunks/chunk-OVNSQHDG.js.map +7 -0
  121. package/dist/cli-bundle/chunks/{chunk-XZS4MV37.js → chunk-PYULT32I.js} +2 -2
  122. package/dist/cli-bundle/chunks/{chunk-M7UBTVFT.js → chunk-Q6PSD5DZ.js} +3 -3
  123. package/dist/cli-bundle/chunks/{chunk-QQPZYP73.js → chunk-QGIWURY3.js} +12 -12
  124. package/dist/cli-bundle/chunks/{chunk-KCGMABHM.js → chunk-QJ2OIEOC.js} +68 -7
  125. package/dist/cli-bundle/chunks/chunk-QJ2OIEOC.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-XEKZCBCS.js → chunk-SNASEDXB.js} +3 -3
  127. package/dist/cli-bundle/chunks/{chunk-4WYBLB6J.js → chunk-T6QLB34N.js} +3 -3
  128. package/dist/cli-bundle/chunks/{chunk-NGEEXR2R.js → chunk-TALBUVWF.js} +2 -2
  129. package/dist/cli-bundle/chunks/{chunk-FGRJZVXD.js → chunk-TV6FZGVK.js} +3 -3
  130. package/dist/cli-bundle/chunks/{chunk-MSH23UWO.js → chunk-TXWMLDMG.js} +13 -7
  131. package/dist/cli-bundle/chunks/chunk-TXWMLDMG.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-TXKENAQP.js → chunk-TZLGCTA5.js} +5 -4
  133. package/dist/cli-bundle/chunks/chunk-TZLGCTA5.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-4TI3532H.js → chunk-UDWUDUJI.js} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-N4SQZ7L3.js → chunk-UMWF6ZAS.js} +12 -5
  136. package/dist/cli-bundle/chunks/chunk-UMWF6ZAS.js.map +7 -0
  137. package/dist/cli-bundle/chunks/{chunk-BKQMJXWY.js → chunk-UNH3KSHG.js} +4 -6
  138. package/dist/cli-bundle/chunks/{chunk-BKQMJXWY.js.map → chunk-UNH3KSHG.js.map} +1 -1
  139. package/dist/cli-bundle/chunks/{chunk-CBJXWXI5.js → chunk-UY26RIBR.js} +2 -2
  140. package/dist/cli-bundle/chunks/{chunk-TBLBEOEX.js → chunk-VSS3CSTF.js} +9 -9
  141. package/dist/cli-bundle/chunks/{chunk-2YPVCD7T.js → chunk-WBU257Z4.js} +13 -11
  142. package/dist/cli-bundle/chunks/chunk-WBU257Z4.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-YJAKN2N2.js → chunk-WNMRICXH.js} +489 -32
  144. package/dist/cli-bundle/chunks/chunk-WNMRICXH.js.map +1 -0
  145. package/dist/cli-bundle/chunks/chunk-WSWOQP3Z.js +518 -0
  146. package/dist/cli-bundle/chunks/chunk-WSWOQP3Z.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-OTY2YEH5.js → chunk-WWEFBBVF.js} +12 -12
  148. package/dist/cli-bundle/chunks/{chunk-UMMJAJB2.js → chunk-X3IPJU2O.js} +9 -9
  149. package/dist/cli-bundle/chunks/{chunk-KBKJVXUS.js → chunk-X5YC5DZM.js} +111 -6
  150. package/dist/cli-bundle/chunks/chunk-X5YC5DZM.js.map +7 -0
  151. package/dist/cli-bundle/chunks/{chunk-KVXIQDJG.js → chunk-XH6RA5A5.js} +15 -15
  152. package/dist/cli-bundle/chunks/chunk-XH6RA5A5.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{chunk-2HMD3JM2.js → chunk-XRE4CTNP.js} +11 -14
  154. package/dist/cli-bundle/chunks/chunk-XRE4CTNP.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-RISLL7XH.js → chunk-XSCGU4WT.js} +15 -5
  156. package/dist/cli-bundle/chunks/{chunk-RISLL7XH.js.map → chunk-XSCGU4WT.js.map} +2 -2
  157. package/dist/cli-bundle/chunks/{chunk-L3LYL3ID.js → chunk-ZH7C7ZVX.js} +14 -14
  158. package/dist/cli-bundle/chunks/chunk-ZH7C7ZVX.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{claim-NHBIIBOW.js → claim-3TY5LE54.js} +10 -10
  160. package/dist/cli-bundle/chunks/{claim-RNEBQCOO.js → claim-LM4YY6QQ.js} +10 -10
  161. package/dist/cli-bundle/chunks/{close-ZMXL2WDS.js → close-CSD4LEMT.js} +8 -8
  162. package/dist/cli-bundle/chunks/close-SIQCDOBR.js +13 -0
  163. package/dist/cli-bundle/chunks/{close-many-CDPQGQUB.js → close-many-B5SHDX6W.js} +17 -18
  164. package/dist/cli-bundle/chunks/{close-many-CDPQGQUB.js.map → close-many-B5SHDX6W.js.map} +1 -1
  165. package/dist/cli-bundle/chunks/{close-many-IQV5C2SI.js → close-many-WRXB5KVY.js} +15 -16
  166. package/dist/cli-bundle/chunks/{close-many-IQV5C2SI.js.map → close-many-WRXB5KVY.js.map} +1 -1
  167. package/dist/cli-bundle/chunks/{comments-J5Q4IJPH.js → comments-A5ALOYTG.js} +10 -10
  168. package/dist/cli-bundle/chunks/{comments-EFVBHWPT.js → comments-BDDEK3VW.js} +10 -10
  169. package/dist/cli-bundle/chunks/{config-72253M2O.js → config-W2NHDNQT.js} +8 -8
  170. package/dist/cli-bundle/chunks/{config-VFYA6BMI.js → config-YUYBMJOW.js} +8 -8
  171. package/dist/cli-bundle/chunks/{context-AVLO4IFH.js → context-LRJ74NSU.js} +147 -36
  172. package/dist/cli-bundle/chunks/context-LRJ74NSU.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{context-WMSI2D65.js → context-R2QLOJCK.js} +148 -37
  174. package/dist/cli-bundle/chunks/context-R2QLOJCK.js.map +1 -0
  175. package/dist/cli-bundle/chunks/{contracts-D4BN3VSQ.js → contracts-47X7RYUF.js} +4 -4
  176. package/dist/cli-bundle/chunks/{contracts-RGPOBLPL.js → contracts-HJHR4NCD.js} +4 -4
  177. package/dist/cli-bundle/chunks/{copy-H6TXHK7S.js → copy-B7HFOWFB.js} +7 -7
  178. package/dist/cli-bundle/chunks/{copy-WXE3OOLZ.js → copy-P4UVYZ7M.js} +7 -7
  179. package/dist/cli-bundle/chunks/{create-PUAIJEZ7.js → create-5ERJF64D.js} +13 -13
  180. package/dist/cli-bundle/chunks/create-TXNRPS4K.js +27 -0
  181. package/dist/cli-bundle/chunks/{delete-WBME6WG5.js → delete-LX3LGBCH.js} +7 -7
  182. package/dist/cli-bundle/chunks/{delete-PKR2JHLH.js → delete-S3WVK6LP.js} +7 -7
  183. package/dist/cli-bundle/chunks/{deps-4BQEDV4L.js → deps-GWSNH7OZ.js} +7 -7
  184. package/dist/cli-bundle/chunks/{deps-KWHQRO75.js → deps-YSM4LZQD.js} +7 -7
  185. package/dist/cli-bundle/chunks/{docs-SCNBUGSV.js → docs-7RYFBHQD.js} +9 -9
  186. package/dist/cli-bundle/chunks/{docs-364GT3ZR.js → docs-TG6JMVMY.js} +9 -9
  187. package/dist/cli-bundle/chunks/{extension-KK2UPXJD.js → extension-R3LUKMX7.js} +5 -5
  188. package/dist/cli-bundle/chunks/{extension-CRE7JM47.js → extension-VNMRKIHI.js} +5 -5
  189. package/dist/cli-bundle/chunks/{files-66EHM5ZR.js → files-KAKU57OT.js} +9 -9
  190. package/dist/cli-bundle/chunks/{files-3GESQAWL.js → files-QB3EYPMO.js} +9 -9
  191. package/dist/cli-bundle/chunks/{gc-MOQDND5J.js → gc-B747VM4M.js} +3 -3
  192. package/dist/cli-bundle/chunks/{gc-D5IWOKQH.js → gc-KNUPLPSW.js} +3 -3
  193. package/dist/cli-bundle/chunks/{get-7J2ZCBV5.js → get-GMGLIQ5I.js} +11 -11
  194. package/dist/cli-bundle/chunks/{get-WXSLXV3K.js → get-SBL6NHYQ.js} +11 -11
  195. package/dist/cli-bundle/chunks/{health-B6AEM7BV.js → health-IG43Z4KL.js} +47 -19
  196. package/dist/cli-bundle/chunks/health-IG43Z4KL.js.map +1 -0
  197. package/dist/cli-bundle/chunks/{health-YMZGOMVX.js → health-WWZJ5KJS.js} +46 -18
  198. package/dist/cli-bundle/chunks/health-WWZJ5KJS.js.map +7 -0
  199. package/dist/cli-bundle/chunks/history-6UKSZTRT.js +20 -0
  200. package/dist/cli-bundle/chunks/{history-TJTO5GCR.js → history-XCWRXBXC.js} +10 -10
  201. package/dist/cli-bundle/chunks/{history-compact-CKNN6UKW.js → history-compact-IDH7E7VN.js} +11 -11
  202. package/dist/cli-bundle/chunks/{history-compact-N2Q7IR3T.js → history-compact-KICKUCR7.js} +11 -11
  203. package/dist/cli-bundle/chunks/history-redact-HKYBTK6X.js +19 -0
  204. package/dist/cli-bundle/chunks/{history-redact-JUXUOH54.js → history-redact-JJWH3QWK.js} +11 -11
  205. package/dist/cli-bundle/chunks/{history-repair-TDBBSRVK.js → history-repair-7HWBZKXN.js} +11 -11
  206. package/dist/cli-bundle/chunks/{history-repair-CCCPBNTF.js → history-repair-N5HXKJOI.js} +11 -11
  207. package/dist/cli-bundle/chunks/init-27JLDUO2.js +17 -0
  208. package/dist/cli-bundle/chunks/{init-6ZPKD3YN.js → init-OQA3TWIS.js} +9 -9
  209. package/dist/cli-bundle/chunks/{learnings-WYNTYQ5T.js → learnings-L7VQUSVI.js} +10 -10
  210. package/dist/cli-bundle/chunks/{learnings-U7U2FNIO.js → learnings-Z4GAIZQ5.js} +10 -10
  211. package/dist/cli-bundle/chunks/list-6U3CJVXS.js +19 -0
  212. package/dist/cli-bundle/chunks/{list-JGP7ODML.js → list-W5ROBC5U.js} +10 -11
  213. package/dist/cli-bundle/chunks/{notes-P25YVTEG.js → notes-JJDOEDFK.js} +10 -10
  214. package/dist/cli-bundle/chunks/{notes-QIF6A7XS.js → notes-SDCK7BEN.js} +10 -10
  215. package/dist/cli-bundle/chunks/{plan-RACB5PI6.js → plan-H5HYHMBB.js} +13 -13
  216. package/dist/cli-bundle/chunks/{plan-SSBJFWXA.js → plan-W2B5RYR3.js} +13 -13
  217. package/dist/cli-bundle/chunks/{register-list-query-GQAEIG4K.js → register-list-query-QGRFMDWA.js} +20 -20
  218. package/dist/cli-bundle/chunks/register-list-query-QGRFMDWA.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{register-list-query-5IXDPUZ6.js → register-list-query-V4S23735.js} +21 -21
  220. package/dist/cli-bundle/chunks/register-list-query-V4S23735.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{register-mutation-FAS4YG63.js → register-mutation-I57PLUHA.js} +36 -35
  222. package/dist/cli-bundle/chunks/register-mutation-I57PLUHA.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{register-mutation-YZCUILGO.js → register-mutation-ZPZNJXSA.js} +35 -34
  224. package/dist/cli-bundle/chunks/register-mutation-ZPZNJXSA.js.map +7 -0
  225. package/dist/cli-bundle/chunks/{register-operations-S2BOLUPF.js → register-operations-KAMLXAF5.js} +42 -37
  226. package/dist/cli-bundle/chunks/register-operations-KAMLXAF5.js.map +1 -0
  227. package/dist/cli-bundle/chunks/{register-operations-IBYWNJN5.js → register-operations-YEN4YEZ2.js} +41 -36
  228. package/dist/cli-bundle/chunks/register-operations-YEN4YEZ2.js.map +7 -0
  229. package/dist/cli-bundle/chunks/{register-setup-JRZ4UMWZ.js → register-setup-BZ3TNE3G.js} +15 -15
  230. package/dist/cli-bundle/chunks/{register-setup-ABA2JPWO.js → register-setup-WLFL3OUF.js} +15 -15
  231. package/dist/cli-bundle/chunks/restore-GNI2W5CN.js +17 -0
  232. package/dist/cli-bundle/chunks/{restore-K72ZNPEP.js → restore-RGFSPG4K.js} +11 -11
  233. package/dist/cli-bundle/chunks/{schema-UL4B2JX5.js → schema-CCDU3RLC.js} +8 -8
  234. package/dist/cli-bundle/chunks/{schema-3VKRDBLC.js → schema-KZASL323.js} +8 -8
  235. package/dist/cli-bundle/chunks/{search-632WJ7GO.js → search-7KSOLI2E.js} +10 -11
  236. package/dist/cli-bundle/chunks/{search-632WJ7GO.js.map → search-7KSOLI2E.js.map} +1 -1
  237. package/dist/cli-bundle/chunks/{search-EQDHSE4G.js → search-DTL7CO22.js} +12 -13
  238. package/dist/cli-bundle/chunks/{search-EQDHSE4G.js.map → search-DTL7CO22.js.map} +1 -1
  239. package/dist/cli-bundle/chunks/{stats-WLJ3XBF5.js → stats-IOXQMGI6.js} +7 -7
  240. package/dist/cli-bundle/chunks/{stats-O4UTMJMC.js → stats-QNV7B2CE.js} +7 -7
  241. package/dist/cli-bundle/chunks/{telemetry-EUVHFSQU.js → telemetry-IV5C6JOM.js} +4 -4
  242. package/dist/cli-bundle/chunks/{telemetry-NRVWX25E.js → telemetry-NHR5RFXT.js} +4 -4
  243. package/dist/cli-bundle/chunks/test-4Z37CXW4.js +32 -0
  244. package/dist/cli-bundle/chunks/{test-GXUBQNUC.js → test-PIL2CEEB.js} +14 -14
  245. package/dist/cli-bundle/chunks/{test-all-UTFXC7S2.js → test-all-GRLYHBNP.js} +14 -14
  246. package/dist/cli-bundle/chunks/{test-all-XM6OKI3L.js → test-all-MFN4MYCV.js} +14 -14
  247. package/dist/cli-bundle/chunks/{test-runs-IK6E2HNX.js → test-runs-7LRFWWCA.js} +5 -5
  248. package/dist/cli-bundle/chunks/{test-runs-7FHCPEA3.js → test-runs-7WCSC3TY.js} +5 -5
  249. package/dist/cli-bundle/chunks/update-I4G34LKJ.js +21 -0
  250. package/dist/cli-bundle/chunks/{update-U4B4OMHZ.js → update-VI5DBZ3G.js} +15 -15
  251. package/dist/cli-bundle/chunks/{update-many-5KD33MKY.js → update-many-LOTAYUTN.js} +22 -23
  252. package/dist/cli-bundle/chunks/{update-many-5KD33MKY.js.map → update-many-LOTAYUTN.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{update-many-N3YTM7K4.js → update-many-UYMTVF42.js} +24 -25
  254. package/dist/cli-bundle/chunks/{update-many-N3YTM7K4.js.map → update-many-UYMTVF42.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/{upgrade-FFXGO43H.js → upgrade-LT2MLLPS.js} +5 -5
  256. package/dist/cli-bundle/chunks/{upgrade-5SRFLUNW.js → upgrade-ZZSC7CLV.js} +5 -5
  257. package/dist/cli-bundle/chunks/{validate-T3LPWSZG.js → validate-3XRORNMP.js} +16 -16
  258. package/dist/cli-bundle/chunks/{validate-CRWXZILW.js → validate-IQIQSKUX.js} +16 -16
  259. package/dist/cli-bundle/main.js +157 -62
  260. package/dist/cli-bundle/main.js.map +2 -2
  261. package/dist/core/diagnostics/remediation.js +12 -2
  262. package/dist/core/diagnostics/remediation.js.map +1 -1
  263. package/dist/core/extensions/extension-policy.d.ts +14 -1
  264. package/dist/core/extensions/extension-policy.js +38 -3
  265. package/dist/core/extensions/extension-policy.js.map +1 -1
  266. package/dist/core/extensions/extension-types.d.ts +99 -2
  267. package/dist/core/extensions/extension-types.js +28 -2
  268. package/dist/core/extensions/extension-types.js.map +1 -1
  269. package/dist/core/extensions/flag-value-types.d.ts +29 -0
  270. package/dist/core/extensions/flag-value-types.js +78 -0
  271. package/dist/core/extensions/flag-value-types.js.map +1 -0
  272. package/dist/core/extensions/item-field-types.d.ts +22 -0
  273. package/dist/core/extensions/item-field-types.js +43 -0
  274. package/dist/core/extensions/item-field-types.js.map +1 -0
  275. package/dist/core/extensions/item-fields.js +4 -11
  276. package/dist/core/extensions/item-fields.js.map +1 -1
  277. package/dist/core/extensions/loader.d.ts +16 -1
  278. package/dist/core/extensions/loader.js +202 -18
  279. package/dist/core/extensions/loader.js.map +1 -1
  280. package/dist/core/history/replay.d.ts +1 -1
  281. package/dist/core/history/replay.js +13 -4
  282. package/dist/core/history/replay.js.map +1 -1
  283. package/dist/core/output/mutation-projection.d.ts +2 -0
  284. package/dist/core/output/mutation-projection.js +9 -2
  285. package/dist/core/output/mutation-projection.js.map +1 -1
  286. package/dist/core/output/output.d.ts +2 -0
  287. package/dist/core/output/output.js +7 -3
  288. package/dist/core/output/output.js.map +1 -1
  289. package/dist/core/packages/manifest.d.ts +1 -1
  290. package/dist/core/packages/manifest.js +12 -2
  291. package/dist/core/packages/manifest.js.map +1 -1
  292. package/dist/core/shared/command-types.d.ts +1 -0
  293. package/dist/core/shared/command-types.js +2 -2
  294. package/dist/core/shared/command-types.js.map +1 -1
  295. package/dist/core/shared/constants.js +7 -4
  296. package/dist/core/shared/constants.js.map +1 -1
  297. package/dist/core/store/item-store.d.ts +1 -1
  298. package/dist/core/store/item-store.js +3 -3
  299. package/dist/core/store/item-store.js.map +1 -1
  300. package/dist/core/store/settings-read-cache.d.ts +15 -0
  301. package/dist/core/store/settings-read-cache.js +72 -0
  302. package/dist/core/store/settings-read-cache.js.map +1 -0
  303. package/dist/core/store/settings-validator.d.ts +4 -1
  304. package/dist/core/store/settings-validator.js +14 -2
  305. package/dist/core/store/settings-validator.js.map +1 -1
  306. package/dist/core/store/settings.js +166 -16
  307. package/dist/core/store/settings.js.map +1 -1
  308. package/dist/core/telemetry/runtime.d.ts +1 -0
  309. package/dist/core/telemetry/runtime.js +3 -3
  310. package/dist/core/telemetry/runtime.js.map +1 -1
  311. package/dist/core/test/run-selectors.d.ts +27 -0
  312. package/dist/core/test/run-selectors.js +110 -0
  313. package/dist/core/test/run-selectors.js.map +1 -0
  314. package/dist/mcp/server.js +105 -40
  315. package/dist/mcp/server.js.map +1 -1
  316. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  317. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  318. package/dist/sdk/cli-contracts/tool-option-contracts.js +3 -2
  319. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  320. package/dist/sdk/cli-contracts/tool-parameter-tables.js +29 -2
  321. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  322. package/dist/sdk/cli-contracts.js +37 -5
  323. package/dist/sdk/cli-contracts.js.map +1 -1
  324. package/dist/sdk/index.d.ts +7 -2
  325. package/dist/sdk/index.js +3 -3
  326. package/dist/sdk/index.js.map +1 -1
  327. package/dist/sdk/runtime.d.ts +6 -0
  328. package/dist/sdk/runtime.js +51 -3
  329. package/dist/sdk/runtime.js.map +1 -1
  330. package/dist/sdk/testing.d.ts +55 -1
  331. package/dist/sdk/testing.js +92 -2
  332. package/dist/sdk/testing.js.map +1 -1
  333. package/dist/types.d.ts +4 -1
  334. package/dist/types.js +4 -2
  335. package/dist/types.js.map +1 -1
  336. package/docs/AGENT_GUIDE.md +7 -1
  337. package/docs/ARCHITECTURE.md +7 -0
  338. package/docs/COMMANDS.md +37 -3
  339. package/docs/CONFIGURATION.md +1 -1
  340. package/docs/EXTENSIONS.md +59 -53
  341. package/docs/SDK.md +104 -0
  342. package/docs/TESTING.md +60 -0
  343. package/docs/schemas/extension-manifest.schema.json +120 -0
  344. package/package.json +2 -2
  345. package/packages/pm-beads/extensions/beads/manifest.json +10 -0
  346. package/packages/pm-calendar/extensions/calendar/manifest.json +10 -0
  347. package/packages/pm-command-kit/README.md +72 -0
  348. package/packages/pm-command-kit/extensions/command-kit/index.js +181 -0
  349. package/packages/pm-command-kit/extensions/command-kit/index.ts +176 -0
  350. package/packages/pm-command-kit/extensions/command-kit/manifest.json +22 -0
  351. package/packages/pm-command-kit/package.json +53 -0
  352. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +10 -0
  353. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +10 -0
  354. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +10 -0
  355. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +10 -0
  356. package/packages/pm-search-advanced/extensions/search-advanced/index.js +6 -0
  357. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +6 -0
  358. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +10 -0
  359. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +1 -0
  360. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -0
  361. package/packages/pm-templates/extensions/templates/manifest.json +10 -0
  362. package/packages/pm-todos/extensions/todos/manifest.json +10 -0
  363. package/dist/cli-bundle/chunks/activity-A3QKFSSF.js +0 -16
  364. package/dist/cli-bundle/chunks/aggregate-GBSHSXOB.js.map +0 -7
  365. package/dist/cli-bundle/chunks/aggregate-HKQJZUBG.js.map +0 -1
  366. package/dist/cli-bundle/chunks/chunk-2HMD3JM2.js.map +0 -7
  367. package/dist/cli-bundle/chunks/chunk-2YPVCD7T.js.map +0 -7
  368. package/dist/cli-bundle/chunks/chunk-3TXWDGPU.js.map +0 -7
  369. package/dist/cli-bundle/chunks/chunk-7NQIY7Z6.js.map +0 -1
  370. package/dist/cli-bundle/chunks/chunk-7WXGR44E.js.map +0 -7
  371. package/dist/cli-bundle/chunks/chunk-ALSRBNYB.js.map +0 -1
  372. package/dist/cli-bundle/chunks/chunk-D7WK2PKB.js.map +0 -1
  373. package/dist/cli-bundle/chunks/chunk-DV27WDA7.js.map +0 -7
  374. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +0 -56
  375. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +0 -7
  376. package/dist/cli-bundle/chunks/chunk-EPWT7BEA.js.map +0 -1
  377. package/dist/cli-bundle/chunks/chunk-F33AQIB4.js.map +0 -1
  378. package/dist/cli-bundle/chunks/chunk-F33VC5EX.js.map +0 -1
  379. package/dist/cli-bundle/chunks/chunk-HOA3GMB6.js.map +0 -1
  380. package/dist/cli-bundle/chunks/chunk-KBKJVXUS.js.map +0 -7
  381. package/dist/cli-bundle/chunks/chunk-KCGMABHM.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-KS2U7BZ3.js.map +0 -1
  383. package/dist/cli-bundle/chunks/chunk-KVXIQDJG.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-L3LYL3ID.js.map +0 -7
  385. package/dist/cli-bundle/chunks/chunk-MSH23UWO.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-N4SQZ7L3.js.map +0 -7
  387. package/dist/cli-bundle/chunks/chunk-NUKHZZNM.js +0 -252
  388. package/dist/cli-bundle/chunks/chunk-NUKHZZNM.js.map +0 -7
  389. package/dist/cli-bundle/chunks/chunk-ODN53S6H.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-OVSSE2JP.js.map +0 -1
  391. package/dist/cli-bundle/chunks/chunk-QWNUDGFQ.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-TXKENAQP.js.map +0 -7
  393. package/dist/cli-bundle/chunks/chunk-VXBUXLVD.js.map +0 -7
  394. package/dist/cli-bundle/chunks/chunk-XNGMIVQY.js +0 -242
  395. package/dist/cli-bundle/chunks/chunk-XNGMIVQY.js.map +0 -1
  396. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +0 -53
  397. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-YJAKN2N2.js.map +0 -1
  399. package/dist/cli-bundle/chunks/close-UNTFXVM3.js +0 -13
  400. package/dist/cli-bundle/chunks/context-AVLO4IFH.js.map +0 -7
  401. package/dist/cli-bundle/chunks/context-WMSI2D65.js.map +0 -1
  402. package/dist/cli-bundle/chunks/create-EZWAMUKR.js +0 -27
  403. package/dist/cli-bundle/chunks/health-B6AEM7BV.js.map +0 -1
  404. package/dist/cli-bundle/chunks/health-YMZGOMVX.js.map +0 -7
  405. package/dist/cli-bundle/chunks/history-ZERISU2L.js +0 -20
  406. package/dist/cli-bundle/chunks/history-redact-GODBYT5A.js +0 -19
  407. package/dist/cli-bundle/chunks/init-CBZHXBR3.js +0 -17
  408. package/dist/cli-bundle/chunks/list-7MTPPZHC.js +0 -20
  409. package/dist/cli-bundle/chunks/register-list-query-5IXDPUZ6.js.map +0 -1
  410. package/dist/cli-bundle/chunks/register-list-query-GQAEIG4K.js.map +0 -7
  411. package/dist/cli-bundle/chunks/register-mutation-FAS4YG63.js.map +0 -1
  412. package/dist/cli-bundle/chunks/register-mutation-YZCUILGO.js.map +0 -7
  413. package/dist/cli-bundle/chunks/register-operations-IBYWNJN5.js.map +0 -7
  414. package/dist/cli-bundle/chunks/register-operations-S2BOLUPF.js.map +0 -1
  415. package/dist/cli-bundle/chunks/restore-3JRX27QW.js +0 -17
  416. package/dist/cli-bundle/chunks/test-XN7RJL5Z.js +0 -32
  417. package/dist/cli-bundle/chunks/update-LFBSEW3N.js +0 -21
  418. /package/dist/cli-bundle/chunks/{activity-A3QKFSSF.js.map → activity-5QLX6DHN.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{activity-Q7XMIZIH.js.map → activity-W6TS5F2L.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{append-3RFOU7P5.js.map → append-7BS36Z2L.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{append-OM74OJVT.js.map → append-DHGTLUZW.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{chunk-Z2HXAFFH.js.map → chunk-344GDQTH.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{chunk-AEMKH5WQ.js.map → chunk-3VTWCBXL.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{chunk-XLSQ3QLT.js.map → chunk-4CYHWHZU.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{chunk-JS47EKLP.js.map → chunk-4H2NDEGJ.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{chunk-QF4OPBAG.js.map → chunk-5HH6QRH5.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{chunk-5NVJA7IW.js.map → chunk-5OMABP7I.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{chunk-YEFOCDIK.js.map → chunk-6ADVKPVV.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{chunk-SM3RMWGO.js.map → chunk-6KQS23TX.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{chunk-ETZZU5QF.js.map → chunk-6N46IM44.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{chunk-5WO2VKFA.js.map → chunk-73PSHEMT.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{chunk-J4DKAGTM.js.map → chunk-7DUVDW7C.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{chunk-2BYKYPWY.js.map → chunk-7GYMMDDW.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{chunk-QFVASU44.js.map → chunk-7TW64BS5.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{chunk-KP4KIUQT.js.map → chunk-ANVZCNL5.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{chunk-UEXNNF3K.js.map → chunk-D6JZBUZ6.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{chunk-R4XIE7NQ.js.map → chunk-DMDEC4QP.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{chunk-KN4WSESY.js.map → chunk-DTRIVUTN.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{chunk-HP35AVFS.js.map → chunk-EIS32UA4.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{chunk-BFJPMUF5.js.map → chunk-GP6SHEAI.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{chunk-URJEZOLB.js.map → chunk-GRHPU6EM.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{chunk-K62SNVVE.js.map → chunk-I2FM2SMO.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{chunk-AXBUHLW7.js.map → chunk-K45NAJV2.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{chunk-NLVCMVC7.js.map → chunk-K7SXBA75.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{chunk-NDSMKB2I.js.map → chunk-LYL32FT6.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{chunk-Z55JACL2.js.map → chunk-O64EYNHF.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{chunk-FO2TYSQZ.js.map → chunk-OROMGSBP.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{chunk-XZS4MV37.js.map → chunk-PYULT32I.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{chunk-M7UBTVFT.js.map → chunk-Q6PSD5DZ.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{chunk-QQPZYP73.js.map → chunk-QGIWURY3.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{chunk-XEKZCBCS.js.map → chunk-SNASEDXB.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{chunk-4WYBLB6J.js.map → chunk-T6QLB34N.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{chunk-NGEEXR2R.js.map → chunk-TALBUVWF.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{chunk-FGRJZVXD.js.map → chunk-TV6FZGVK.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{chunk-4TI3532H.js.map → chunk-UDWUDUJI.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{chunk-CBJXWXI5.js.map → chunk-UY26RIBR.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{chunk-TBLBEOEX.js.map → chunk-VSS3CSTF.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{chunk-OTY2YEH5.js.map → chunk-WWEFBBVF.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{chunk-UMMJAJB2.js.map → chunk-X3IPJU2O.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{claim-NHBIIBOW.js.map → claim-3TY5LE54.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{claim-RNEBQCOO.js.map → claim-LM4YY6QQ.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{close-ZMXL2WDS.js.map → close-CSD4LEMT.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{close-UNTFXVM3.js.map → close-SIQCDOBR.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{comments-J5Q4IJPH.js.map → comments-A5ALOYTG.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{comments-EFVBHWPT.js.map → comments-BDDEK3VW.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{config-72253M2O.js.map → config-W2NHDNQT.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{config-VFYA6BMI.js.map → config-YUYBMJOW.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{contracts-D4BN3VSQ.js.map → contracts-47X7RYUF.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{contracts-RGPOBLPL.js.map → contracts-HJHR4NCD.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{copy-H6TXHK7S.js.map → copy-B7HFOWFB.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{copy-WXE3OOLZ.js.map → copy-P4UVYZ7M.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{create-PUAIJEZ7.js.map → create-5ERJF64D.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{create-EZWAMUKR.js.map → create-TXNRPS4K.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{delete-WBME6WG5.js.map → delete-LX3LGBCH.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{delete-PKR2JHLH.js.map → delete-S3WVK6LP.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{deps-4BQEDV4L.js.map → deps-GWSNH7OZ.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{deps-KWHQRO75.js.map → deps-YSM4LZQD.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{docs-SCNBUGSV.js.map → docs-7RYFBHQD.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{docs-364GT3ZR.js.map → docs-TG6JMVMY.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{extension-KK2UPXJD.js.map → extension-R3LUKMX7.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{extension-CRE7JM47.js.map → extension-VNMRKIHI.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{files-66EHM5ZR.js.map → files-KAKU57OT.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{files-3GESQAWL.js.map → files-QB3EYPMO.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{gc-MOQDND5J.js.map → gc-B747VM4M.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{gc-D5IWOKQH.js.map → gc-KNUPLPSW.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{get-7J2ZCBV5.js.map → get-GMGLIQ5I.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{get-WXSLXV3K.js.map → get-SBL6NHYQ.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{history-ZERISU2L.js.map → history-6UKSZTRT.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{history-TJTO5GCR.js.map → history-XCWRXBXC.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{history-compact-CKNN6UKW.js.map → history-compact-IDH7E7VN.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{history-compact-N2Q7IR3T.js.map → history-compact-KICKUCR7.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{history-redact-GODBYT5A.js.map → history-redact-HKYBTK6X.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{history-redact-JUXUOH54.js.map → history-redact-JJWH3QWK.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{history-repair-TDBBSRVK.js.map → history-repair-7HWBZKXN.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{history-repair-CCCPBNTF.js.map → history-repair-N5HXKJOI.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{init-CBZHXBR3.js.map → init-27JLDUO2.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{init-6ZPKD3YN.js.map → init-OQA3TWIS.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{learnings-WYNTYQ5T.js.map → learnings-L7VQUSVI.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{learnings-U7U2FNIO.js.map → learnings-Z4GAIZQ5.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{list-7MTPPZHC.js.map → list-6U3CJVXS.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{list-JGP7ODML.js.map → list-W5ROBC5U.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{notes-P25YVTEG.js.map → notes-JJDOEDFK.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{notes-QIF6A7XS.js.map → notes-SDCK7BEN.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{plan-RACB5PI6.js.map → plan-H5HYHMBB.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{plan-SSBJFWXA.js.map → plan-W2B5RYR3.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{register-setup-JRZ4UMWZ.js.map → register-setup-BZ3TNE3G.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{register-setup-ABA2JPWO.js.map → register-setup-WLFL3OUF.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{restore-3JRX27QW.js.map → restore-GNI2W5CN.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{restore-K72ZNPEP.js.map → restore-RGFSPG4K.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{schema-UL4B2JX5.js.map → schema-CCDU3RLC.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{schema-3VKRDBLC.js.map → schema-KZASL323.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{stats-WLJ3XBF5.js.map → stats-IOXQMGI6.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{stats-O4UTMJMC.js.map → stats-QNV7B2CE.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{telemetry-EUVHFSQU.js.map → telemetry-IV5C6JOM.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{telemetry-NRVWX25E.js.map → telemetry-NHR5RFXT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{test-XN7RJL5Z.js.map → test-4Z37CXW4.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{test-GXUBQNUC.js.map → test-PIL2CEEB.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{test-all-UTFXC7S2.js.map → test-all-GRLYHBNP.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{test-all-XM6OKI3L.js.map → test-all-MFN4MYCV.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{test-runs-IK6E2HNX.js.map → test-runs-7LRFWWCA.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{test-runs-7FHCPEA3.js.map → test-runs-7WCSC3TY.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{update-LFBSEW3N.js.map → update-I4G34LKJ.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{update-U4B4OMHZ.js.map → update-VI5DBZ3G.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{upgrade-FFXGO43H.js.map → upgrade-LT2MLLPS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{upgrade-5SRFLUNW.js.map → upgrade-ZZSC7CLV.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{validate-T3LPWSZG.js.map → validate-3XRORNMP.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{validate-CRWXZILW.js.map → validate-IQIQSKUX.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  // dist/core/fs/fs-utils.js
2
2
 
3
- !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]="0b9873ce-4d2c-5248-a389-357401ce7cbc")}catch(e){}}();
3
+ !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]="c3981b80-9acf-59eb-b3e4-2434796a7689")}catch(e){}}();
4
4
  import * as fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import crypto from "node:crypto";
@@ -158,6 +158,7 @@ var EXTENSION_CAPABILITY_CONTRACT = Object.freeze({
158
158
  var KNOWN_EXTENSION_POLICY_MODES = ["off", "warn", "enforce"];
159
159
  var KNOWN_EXTENSION_TRUST_MODES = ["off", "warn", "enforce"];
160
160
  var KNOWN_EXTENSION_SANDBOX_PROFILES = ["none", "restricted", "strict"];
161
+ var KNOWN_PM_MAX_VERSION_EXCEEDED_MODES = ["block", "warn"];
161
162
  var KNOWN_EXTENSION_POLICY_SURFACES = [
162
163
  "commands.override",
163
164
  "commands.handler",
@@ -211,6 +212,23 @@ function createDefaultExtensionGovernancePolicy() {
211
212
  extension_overrides: []
212
213
  };
213
214
  }
215
+ var KNOWN_EXTENSION_MANIFEST_FIELDS = Object.freeze([
216
+ "$schema",
217
+ "name",
218
+ "version",
219
+ "entry",
220
+ "priority",
221
+ "manifest_version",
222
+ "pm_min_version",
223
+ "pm_max_version",
224
+ "engines",
225
+ "trusted",
226
+ "provenance",
227
+ "sandbox_profile",
228
+ "permissions",
229
+ "capabilities",
230
+ "activation"
231
+ ]);
214
232
 
215
233
  // dist/core/shared/constants.js
216
234
  var DEFAULT_STATUS_DEFINITIONS = Object.freeze([
@@ -347,6 +365,7 @@ var FRONT_MATTER_KEY_ORDER = [
347
365
  "test_runs",
348
366
  "docs",
349
367
  "close_reason",
368
+ "duplicate_of",
350
369
  "plan_mode",
351
370
  "plan_scope",
352
371
  "plan_harness",
@@ -362,7 +381,7 @@ var GOVERNANCE_PRESET_DEFAULTS = {
362
381
  create_mode_default: "progressive",
363
382
  close_validation_default: "off",
364
383
  require_close_reason: true,
365
- parent_reference: "warn",
384
+ parent_reference: "strict_error",
366
385
  metadata_profile: "core",
367
386
  force_required_for_stale_lock: false
368
387
  },
@@ -371,7 +390,7 @@ var GOVERNANCE_PRESET_DEFAULTS = {
371
390
  create_mode_default: "progressive",
372
391
  close_validation_default: "warn",
373
392
  require_close_reason: true,
374
- parent_reference: "warn",
393
+ parent_reference: "strict_error",
375
394
  metadata_profile: "core",
376
395
  force_required_for_stale_lock: true
377
396
  },
@@ -516,6 +535,8 @@ var SETTINGS_DEFAULTS = {
516
535
  hierarchy: true,
517
536
  activity: true,
518
537
  progress: true,
538
+ recently_created: true,
539
+ unparented: true,
519
540
  blockers: true,
520
541
  files: true,
521
542
  workload: true,
@@ -1404,6 +1425,128 @@ import fs3 from "node:fs/promises";
1404
1425
  import path5 from "node:path";
1405
1426
  import { pathToFileURL } from "node:url";
1406
1427
 
1428
+ // dist/core/extensions/flag-value-types.js
1429
+ var FLAG_VALUE_KIND_BY_ALIAS = Object.freeze({
1430
+ string: "string",
1431
+ number: "number",
1432
+ int: "number",
1433
+ integer: "number",
1434
+ float: "number",
1435
+ boolean: "boolean",
1436
+ bool: "boolean"
1437
+ });
1438
+ function resolveFlagValueKind(raw) {
1439
+ if (typeof raw !== "string") {
1440
+ return null;
1441
+ }
1442
+ return FLAG_VALUE_KIND_BY_ALIAS[raw.trim().toLowerCase()] ?? null;
1443
+ }
1444
+ function flattenFlagListValue(value) {
1445
+ const entries = [];
1446
+ const collect = (input) => {
1447
+ if (Array.isArray(input)) {
1448
+ for (const item of input) {
1449
+ collect(item);
1450
+ }
1451
+ return;
1452
+ }
1453
+ if (typeof input === "string") {
1454
+ for (const part of input.split(",")) {
1455
+ const trimmed = part.trim();
1456
+ if (trimmed.length > 0) {
1457
+ entries.push(trimmed);
1458
+ }
1459
+ }
1460
+ return;
1461
+ }
1462
+ if (input !== void 0 && input !== null) {
1463
+ entries.push(input);
1464
+ }
1465
+ };
1466
+ collect(value);
1467
+ return entries;
1468
+ }
1469
+ function isFlagDefaultValueCoercible(value, kind) {
1470
+ if (kind === "string") {
1471
+ return true;
1472
+ }
1473
+ if (kind === "number") {
1474
+ if (typeof value === "number") {
1475
+ return Number.isFinite(value);
1476
+ }
1477
+ return typeof value === "string" && value.trim().length > 0 && Number.isFinite(Number(value));
1478
+ }
1479
+ if (typeof value === "boolean") {
1480
+ return true;
1481
+ }
1482
+ return typeof value === "string" && ["true", "false", "1", "0"].includes(value.trim().toLowerCase());
1483
+ }
1484
+
1485
+ // dist/core/shared/levenshtein.js
1486
+ function levenshteinDistanceWithinLimit(left, right, limit) {
1487
+ if (left === right) {
1488
+ return 0;
1489
+ }
1490
+ if (Math.abs(left.length - right.length) > limit) {
1491
+ return null;
1492
+ }
1493
+ const width = right.length + 1;
1494
+ const beforePrevious = new Array(width);
1495
+ const previous = new Array(width);
1496
+ const current = new Array(width);
1497
+ for (let column = 0; column < width; column += 1) {
1498
+ beforePrevious[column] = 0;
1499
+ previous[column] = column;
1500
+ }
1501
+ for (let row = 1; row <= left.length; row += 1) {
1502
+ current[0] = row;
1503
+ let rowMin = current[0];
1504
+ for (let column = 1; column <= right.length; column += 1) {
1505
+ const cost = left[row - 1] === right[column - 1] ? 0 : 1;
1506
+ const substitution = previous[column - 1] + cost;
1507
+ const insertion = current[column - 1] + 1;
1508
+ const deletion = previous[column] + 1;
1509
+ let candidate = Math.min(substitution, insertion, deletion);
1510
+ if (row > 1 && column > 1 && left[row - 1] === right[column - 2] && left[row - 2] === right[column - 1]) {
1511
+ candidate = Math.min(candidate, beforePrevious[column - 2] + 1);
1512
+ }
1513
+ current[column] = candidate;
1514
+ if (candidate < rowMin) {
1515
+ rowMin = candidate;
1516
+ }
1517
+ }
1518
+ if (rowMin > limit) {
1519
+ return null;
1520
+ }
1521
+ for (let column = 0; column < width; column += 1) {
1522
+ beforePrevious[column] = previous[column];
1523
+ previous[column] = current[column];
1524
+ }
1525
+ }
1526
+ const result = previous[right.length];
1527
+ return result <= limit ? result : null;
1528
+ }
1529
+
1530
+ // dist/core/extensions/item-field-types.js
1531
+ var KNOWN_ITEM_FIELD_TYPES = ["string", "number", "boolean", "array", "object"];
1532
+ function normalizeItemFieldType(value) {
1533
+ const normalized = value.trim().toLowerCase();
1534
+ return KNOWN_ITEM_FIELD_TYPES.includes(normalized) ? normalized : null;
1535
+ }
1536
+ function suggestKnownItemFieldType(value) {
1537
+ const normalized = value.trim().toLowerCase();
1538
+ if (normalized.length === 0) {
1539
+ return null;
1540
+ }
1541
+ const limit = Math.max(1, Math.floor(normalized.length * 0.34));
1542
+ for (const candidate of KNOWN_ITEM_FIELD_TYPES) {
1543
+ if (levenshteinDistanceWithinLimit(normalized, candidate, limit) !== null) {
1544
+ return candidate;
1545
+ }
1546
+ }
1547
+ return null;
1548
+ }
1549
+
1407
1550
  // dist/core/extensions/extension-policy.js
1408
1551
  function normalizePolicyName(value) {
1409
1552
  if (typeof value !== "string") {
@@ -1452,6 +1595,29 @@ function normalizePolicySandboxProfile(value) {
1452
1595
  }
1453
1596
  return "none";
1454
1597
  }
1598
+ function normalizePmMaxVersionExceededModeValue(value) {
1599
+ if (typeof value !== "string") {
1600
+ return void 0;
1601
+ }
1602
+ const normalized = value.trim().toLowerCase();
1603
+ return KNOWN_PM_MAX_VERSION_EXCEEDED_MODES.includes(normalized) ? normalized : void 0;
1604
+ }
1605
+ function normalizePmMaxVersionExceededMode(value) {
1606
+ if (typeof value === "string") {
1607
+ const mode = normalizePmMaxVersionExceededModeValue(value) ?? "block";
1608
+ return { global: mode, project: mode };
1609
+ }
1610
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
1611
+ return {
1612
+ global: normalizePmMaxVersionExceededModeValue(value.global) ?? "block",
1613
+ project: normalizePmMaxVersionExceededModeValue(value.project) ?? "block"
1614
+ };
1615
+ }
1616
+ return { global: "block", project: "block" };
1617
+ }
1618
+ function serializePmMaxVersionExceededMode(mode) {
1619
+ return mode.global === mode.project ? mode.global : { global: mode.global, project: mode.project };
1620
+ }
1455
1621
  function toSortedList(values) {
1456
1622
  return [...new Set(values)].sort((left, right) => left.localeCompare(right));
1457
1623
  }
@@ -1495,6 +1661,7 @@ function normalizeExtensionPolicy(settings) {
1495
1661
  const policy = settings.extensions.policy;
1496
1662
  const mode = normalizePolicyMode(policy?.mode);
1497
1663
  const trustMode = normalizePolicyTrustMode(policy?.trust_mode);
1664
+ const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);
1498
1665
  const requireProvenance = policy?.require_provenance === true;
1499
1666
  const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);
1500
1667
  const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);
@@ -1540,6 +1707,7 @@ function normalizeExtensionPolicy(settings) {
1540
1707
  return {
1541
1708
  mode,
1542
1709
  trustMode,
1710
+ pmMaxVersionExceededMode: pmMaxVersionExceededMode2,
1543
1711
  requireProvenance,
1544
1712
  trustedExtensions,
1545
1713
  defaultSandboxProfile,
@@ -1580,6 +1748,7 @@ function serializeExtensionPolicy(policy) {
1580
1748
  return {
1581
1749
  mode: policy.mode,
1582
1750
  trust_mode: policy.trustMode,
1751
+ pm_max_version_exceeded_mode: serializePmMaxVersionExceededMode(policy.pmMaxVersionExceededMode),
1583
1752
  require_provenance: policy.requireProvenance,
1584
1753
  trusted_extensions: toSortedList(policy.trustedExtensions),
1585
1754
  default_sandbox_profile: policy.defaultSandboxProfile,
@@ -1603,6 +1772,7 @@ function hydrateExtensionPolicy(policy) {
1603
1772
  return {
1604
1773
  mode: normalizePolicyMode(policy.mode),
1605
1774
  trustMode: normalizePolicyTrustMode(policy.trust_mode),
1775
+ pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),
1606
1776
  requireProvenance: policy.require_provenance === true,
1607
1777
  trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),
1608
1778
  defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),
@@ -2176,14 +2346,14 @@ function buildEffectiveExtensions(globalCandidates, projectCandidates) {
2176
2346
  }
2177
2347
  return effective;
2178
2348
  }
2179
- async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled) {
2349
+ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMaxVersionExceededMode2) {
2180
2350
  const diagnostics = [];
2181
2351
  const warnings = [];
2182
2352
  const candidates = [];
2183
2353
  const directories = await listExtensionDirectories(extensionsRoot);
2184
2354
  const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);
2185
2355
  for (const directory of directories) {
2186
- const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages);
2356
+ const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2);
2187
2357
  diagnostics.push(scanned.diagnostic);
2188
2358
  warnings.push(...scanned.warnings);
2189
2359
  if (scanned.candidate) {
@@ -2192,7 +2362,7 @@ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled) {
2192
2362
  }
2193
2363
  return { diagnostics, warnings, candidates };
2194
2364
  }
2195
- async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages) {
2365
+ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
2196
2366
  const extensionDir = path5.join(extensionsRoot, directory);
2197
2367
  const manifestPath = path5.join(extensionDir, "manifest.json");
2198
2368
  if (!await pathExists(manifestPath)) {
@@ -2259,7 +2429,7 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
2259
2429
  if (pmVersionCompatibility.warning) {
2260
2430
  extensionWarnings.push(pmVersionCompatibility.warning);
2261
2431
  }
2262
- const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest);
2432
+ const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
2263
2433
  if (pmMaxVersionCompatibility.warning) {
2264
2434
  extensionWarnings.push(pmMaxVersionCompatibility.warning);
2265
2435
  }
@@ -2309,8 +2479,8 @@ async function discoverExtensions(options) {
2309
2479
  }
2310
2480
  const enabled = new Set(configured_enabled);
2311
2481
  const disabled = new Set(configured_disabled);
2312
- const globalScan = await scanExtensionLayer("global", roots.global, enabled, disabled);
2313
- const projectScan = await scanExtensionLayer("project", roots.project, enabled, disabled);
2482
+ const globalScan = await scanExtensionLayer("global", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);
2483
+ const projectScan = await scanExtensionLayer("project", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);
2314
2484
  const policyWarnings = [...policy.warnings];
2315
2485
  const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);
2316
2486
  const effective = [];
@@ -2435,7 +2605,7 @@ async function evaluatePmMinVersionCompatibility(layer, manifest) {
2435
2605
  }
2436
2606
  return { allowed: true };
2437
2607
  }
2438
- async function evaluatePmMaxVersionCompatibility(layer, manifest) {
2608
+ async function evaluatePmMaxVersionCompatibility(layer, manifest, exceededMode) {
2439
2609
  if (typeof manifest.pm_max_version !== "string" || manifest.pm_max_version.trim().length === 0) {
2440
2610
  return { allowed: true };
2441
2611
  }
@@ -2466,6 +2636,12 @@ async function evaluatePmMaxVersionCompatibility(layer, manifest) {
2466
2636
  };
2467
2637
  }
2468
2638
  if (comparison > 0) {
2639
+ if (exceededMode === "warn") {
2640
+ return {
2641
+ allowed: true,
2642
+ warning: `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=${currentVersion}`
2643
+ };
2644
+ }
2469
2645
  return {
2470
2646
  allowed: false,
2471
2647
  warning: `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=${currentVersion}`
@@ -2535,21 +2711,28 @@ async function loadExtensions(options) {
2535
2711
  failed
2536
2712
  };
2537
2713
  }
2714
+ function toActivatableExtension(source) {
2715
+ const activate = source.activate;
2716
+ const activatable = {
2717
+ activate: activate.bind(source)
2718
+ };
2719
+ if (typeof source.deactivate === "function") {
2720
+ const deactivate = source.deactivate;
2721
+ activatable.deactivate = deactivate.bind(source);
2722
+ }
2723
+ return activatable;
2724
+ }
2538
2725
  function resolveActivatableExtension(module) {
2539
2726
  const moduleRecord = asRecordLoose(module);
2540
2727
  if (!moduleRecord) {
2541
2728
  return null;
2542
2729
  }
2543
2730
  if (typeof moduleRecord.activate === "function") {
2544
- return {
2545
- activate: moduleRecord.activate
2546
- };
2731
+ return toActivatableExtension(moduleRecord);
2547
2732
  }
2548
2733
  const defaultExport = asRecordLoose(moduleRecord.default);
2549
2734
  if (defaultExport && typeof defaultExport.activate === "function") {
2550
- return {
2551
- activate: defaultExport.activate
2552
- };
2735
+ return toActivatableExtension(defaultExport);
2553
2736
  }
2554
2737
  return null;
2555
2738
  }
@@ -2676,6 +2859,25 @@ function assertOptionalStringField(name, value) {
2676
2859
  throw new TypeError(`${name} must be a non-empty string when provided`);
2677
2860
  }
2678
2861
  }
2862
+ function isFlagDefaultScalar(value) {
2863
+ return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
2864
+ }
2865
+ function assertOptionalFlagDefaultField(name, value) {
2866
+ if (value === void 0) {
2867
+ return;
2868
+ }
2869
+ if (Array.isArray(value)) {
2870
+ for (const [index, item] of value.entries()) {
2871
+ if (!isFlagDefaultScalar(item)) {
2872
+ throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);
2873
+ }
2874
+ }
2875
+ return;
2876
+ }
2877
+ if (!isFlagDefaultScalar(value)) {
2878
+ throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);
2879
+ }
2880
+ }
2679
2881
  function assertOptionalStringArrayField(name, value) {
2680
2882
  if (value === void 0) {
2681
2883
  return;
@@ -2789,6 +2991,32 @@ function validateFlagDefinitions(flags) {
2789
2991
  assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);
2790
2992
  assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);
2791
2993
  assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);
2994
+ assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);
2995
+ assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);
2996
+ if (Array.isArray(record.default) && record.list !== true) {
2997
+ throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);
2998
+ }
2999
+ assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);
3000
+ }
3001
+ }
3002
+ function assertFlagValueTypeAndDefault(label, record) {
3003
+ const declaredType = (typeof record.value_type === "string" ? record.value_type : void 0) ?? (typeof record.type === "string" ? record.type : void 0);
3004
+ if (declaredType === void 0) {
3005
+ return;
3006
+ }
3007
+ const kind = resolveFlagValueKind(declaredType);
3008
+ if (kind === null) {
3009
+ throw new TypeError(`${label} value_type "${declaredType}" is not a known flag value type (expected one of: string, number, boolean).`);
3010
+ }
3011
+ if (record.default === void 0) {
3012
+ return;
3013
+ }
3014
+ const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];
3015
+ for (const [defaultIndex, defaultValue] of defaults.entries()) {
3016
+ if (!isFlagDefaultValueCoercible(defaultValue, kind)) {
3017
+ const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : "default";
3018
+ throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);
3019
+ }
2792
3020
  }
2793
3021
  }
2794
3022
  function validateItemFieldDefinitions(fields) {
@@ -2798,7 +3026,12 @@ function validateItemFieldDefinitions(fields) {
2798
3026
  for (const [index, raw] of fields.entries()) {
2799
3027
  const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);
2800
3028
  assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);
2801
- assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);
3029
+ const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);
3030
+ if (normalizeItemFieldType(fieldType) === null) {
3031
+ const suggestion = suggestKnownItemFieldType(fieldType);
3032
+ const hint = suggestion ? ` Did you mean "${suggestion}"?` : "";
3033
+ throw new TypeError(`registerItemFields fields[${index}].type "${fieldType}" is not a known field type (expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(", ")}).${hint}`);
3034
+ }
2802
3035
  assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);
2803
3036
  }
2804
3037
  }
@@ -2896,6 +3129,15 @@ function assertExtensionCapability(extension, capability, method) {
2896
3129
  }
2897
3130
  }
2898
3131
  function createExtensionApi(extension, hooks, commands, parsers, preflight, services, renderers, registrations, activationWarnings, policy) {
3132
+ const selfIdentity = Object.freeze({
3133
+ name: extension.name,
3134
+ layer: extension.layer,
3135
+ version: extension.version,
3136
+ capabilities: Object.freeze((extension.capabilities ?? []).filter((capability) => KNOWN_EXTENSION_CAPABILITIES.includes(capability))),
3137
+ pm_min_version: extension.pm_min_version,
3138
+ pm_max_version: extension.pm_max_version,
3139
+ source_package: extension.source_package
3140
+ });
2899
3141
  const extensionRef = {
2900
3142
  layer: extension.layer,
2901
3143
  name: extension.name,
@@ -3337,6 +3579,7 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
3337
3579
  });
3338
3580
  };
3339
3581
  return {
3582
+ extension: selfIdentity,
3340
3583
  registerCommand,
3341
3584
  registerParser,
3342
3585
  registerPreflight,
@@ -3886,6 +4129,8 @@ var CONTEXT_SECTION_VALUES = [
3886
4129
  "hierarchy",
3887
4130
  "activity",
3888
4131
  "progress",
4132
+ "recently_created",
4133
+ "unparented",
3889
4134
  "blockers",
3890
4135
  "files",
3891
4136
  "workload",
@@ -4793,9 +5038,15 @@ var extensionPolicyOverride = vObject({
4793
5038
  allowed_services: vOptional(vArray(vString)),
4794
5039
  blocked_services: vOptional(vArray(vString))
4795
5040
  });
5041
+ var pmMaxVersionExceededModeLiteral = vLiteral("block", "warn");
5042
+ var pmMaxVersionExceededMode = (input) => typeof input === "string" ? pmMaxVersionExceededModeLiteral(input) : vObject({
5043
+ global: vOptional(pmMaxVersionExceededModeLiteral),
5044
+ project: vOptional(pmMaxVersionExceededModeLiteral)
5045
+ })(input);
4796
5046
  var extensionPolicy = vOptional(vObject({
4797
5047
  mode: vOptional(vLiteral("off", "warn", "enforce")),
4798
5048
  trust_mode: vOptional(vLiteral("off", "warn", "enforce")),
5049
+ pm_max_version_exceeded_mode: vOptional(pmMaxVersionExceededMode),
4799
5050
  require_provenance: vOptional(vBoolean),
4800
5051
  trusted_extensions: vOptional(vArray(vString)),
4801
5052
  default_sandbox_profile: vOptional(vLiteral("none", "restricted", "strict")),
@@ -4859,6 +5110,8 @@ var settingsCheck = vObject({
4859
5110
  hierarchy: vOptional(vBoolean),
4860
5111
  activity: vOptional(vBoolean),
4861
5112
  progress: vOptional(vBoolean),
5113
+ recently_created: vOptional(vBoolean),
5114
+ unparented: vOptional(vBoolean),
4862
5115
  blockers: vOptional(vBoolean),
4863
5116
  files: vOptional(vBoolean),
4864
5117
  workload: vOptional(vBoolean),
@@ -4992,6 +5245,71 @@ function normalizeItemTypeDefinition(definition, options = {}) {
4992
5245
  };
4993
5246
  }
4994
5247
 
5248
+ // dist/core/store/settings-read-cache.js
5249
+ import { stat } from "node:fs/promises";
5250
+ var settingsReadCacheByRoot = /* @__PURE__ */ new Map();
5251
+ function normalizeTrackedPaths(paths) {
5252
+ return [...new Set(paths.map((pathValue) => pathValue.trim()).filter((pathValue) => pathValue.length > 0))].sort((left, right) => left.localeCompare(right));
5253
+ }
5254
+ async function readPathSignature(targetPath) {
5255
+ try {
5256
+ const targetStats = await stat(targetPath);
5257
+ return {
5258
+ path: targetPath,
5259
+ mtime_ms: targetStats.mtimeMs,
5260
+ size: targetStats.size
5261
+ };
5262
+ } catch {
5263
+ return {
5264
+ path: targetPath,
5265
+ mtime_ms: null,
5266
+ size: null
5267
+ };
5268
+ }
5269
+ }
5270
+ async function collectSettingsReadCacheSignatures(paths) {
5271
+ const normalizedPaths = normalizeTrackedPaths(paths);
5272
+ const signatures = await Promise.all(normalizedPaths.map((targetPath) => readPathSignature(targetPath)));
5273
+ signatures.sort((left, right) => left.path.localeCompare(right.path));
5274
+ return signatures;
5275
+ }
5276
+ function settingsReadCacheSignaturesEqual(left, right) {
5277
+ if (left.length !== right.length) {
5278
+ return false;
5279
+ }
5280
+ for (let index = 0; index < left.length; index += 1) {
5281
+ const leftEntry = left[index];
5282
+ const rightEntry = right[index];
5283
+ if (leftEntry.path !== rightEntry.path || leftEntry.mtime_ms !== rightEntry.mtime_ms || leftEntry.size !== rightEntry.size) {
5284
+ return false;
5285
+ }
5286
+ }
5287
+ return true;
5288
+ }
5289
+ function getSettingsReadCacheEntry(pmRoot) {
5290
+ return settingsReadCacheByRoot.get(pmRoot);
5291
+ }
5292
+ function setSettingsReadCacheEntry(pmRoot, entry) {
5293
+ const normalizedTrackedPaths = normalizeTrackedPaths(entry.tracked_paths);
5294
+ const normalizedSignatures = [...entry.signatures].map((signature) => ({
5295
+ path: signature.path,
5296
+ mtime_ms: signature.mtime_ms,
5297
+ size: signature.size
5298
+ })).sort((left, right) => left.path.localeCompare(right.path));
5299
+ settingsReadCacheByRoot.set(pmRoot, {
5300
+ tracked_paths: normalizedTrackedPaths,
5301
+ signatures: normalizedSignatures,
5302
+ value: entry.value
5303
+ });
5304
+ }
5305
+ function clearSettingsReadCache(pmRoot) {
5306
+ if (pmRoot) {
5307
+ settingsReadCacheByRoot.delete(pmRoot);
5308
+ return;
5309
+ }
5310
+ settingsReadCacheByRoot.clear();
5311
+ }
5312
+
4995
5313
  // dist/core/store/settings.js
4996
5314
  var SETTINGS_WRITE_OP = "settings:write";
4997
5315
  var SETTINGS_PERSIST_SOURCE_SYMBOL = /* @__PURE__ */ Symbol("pm.settings.persist_source");
@@ -5158,6 +5476,74 @@ function getSettingsPersistSourceSnapshot(settings) {
5158
5476
  }
5159
5477
  return candidate;
5160
5478
  }
5479
+ function cloneSettingsReadResult(result) {
5480
+ const clonedSettings = structuredClone(result.settings);
5481
+ const persistSource = getSettingsPersistSourceSnapshot(result.settings);
5482
+ if (persistSource) {
5483
+ attachSettingsPersistSourceSnapshot(clonedSettings, structuredClone(persistSource));
5484
+ }
5485
+ return {
5486
+ settings: clonedSettings,
5487
+ metadata: {
5488
+ has_explicit_item_format: result.metadata.has_explicit_item_format
5489
+ },
5490
+ warnings: [...result.warnings]
5491
+ };
5492
+ }
5493
+ function resolveSettingsReadTrackedPaths(pmRoot, schema, settingsPath) {
5494
+ const normalizedSchema = normalizeRuntimeSchemaSettings(schema);
5495
+ return [
5496
+ settingsPath,
5497
+ filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types),
5498
+ filePathForSchemaSection(pmRoot, normalizedSchema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),
5499
+ filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),
5500
+ filePathForSchemaSection(pmRoot, normalizedSchema.files.workflows, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows)
5501
+ ];
5502
+ }
5503
+ async function cacheSettingsReadResult(pmRoot, trackedPaths, result) {
5504
+ const signatures = await collectSettingsReadCacheSignatures(trackedPaths);
5505
+ setSettingsReadCacheEntry(pmRoot, {
5506
+ tracked_paths: trackedPaths,
5507
+ signatures,
5508
+ value: cloneSettingsReadResult(result)
5509
+ });
5510
+ }
5511
+ async function cacheSettingsReadResultSafe(pmRoot, trackedPaths, result) {
5512
+ try {
5513
+ await cacheSettingsReadResult(pmRoot, trackedPaths, result);
5514
+ } catch {
5515
+ clearSettingsReadCache(pmRoot);
5516
+ }
5517
+ }
5518
+ function findSettingsReadCacheSignature(signatures, targetPath) {
5519
+ return signatures.find((signature) => signature.path === targetPath);
5520
+ }
5521
+ function selectedSettingsReadCacheSignaturesEqual(before, after, targetPaths) {
5522
+ for (const targetPath of targetPaths) {
5523
+ const beforeSignature = findSettingsReadCacheSignature(before, targetPath);
5524
+ const afterSignature = findSettingsReadCacheSignature(after, targetPath);
5525
+ if (!beforeSignature || !afterSignature || !settingsReadCacheSignaturesEqual([beforeSignature], [afterSignature])) {
5526
+ return false;
5527
+ }
5528
+ }
5529
+ return true;
5530
+ }
5531
+ async function cacheSettingsReadResultIfStable(pmRoot, trackedPaths, result, stableSignatures, stablePaths) {
5532
+ try {
5533
+ const currentSignatures = await collectSettingsReadCacheSignatures(trackedPaths);
5534
+ if (!selectedSettingsReadCacheSignaturesEqual(stableSignatures, currentSignatures, stablePaths)) {
5535
+ clearSettingsReadCache(pmRoot);
5536
+ return;
5537
+ }
5538
+ setSettingsReadCacheEntry(pmRoot, {
5539
+ tracked_paths: trackedPaths,
5540
+ signatures: currentSignatures,
5541
+ value: cloneSettingsReadResult(result)
5542
+ });
5543
+ } catch {
5544
+ clearSettingsReadCache(pmRoot);
5545
+ }
5546
+ }
5161
5547
  function resolvePersistedFileBackedSchemaSections(settings, source) {
5162
5548
  const normalizedSchema = normalizeRuntimeSchemaSettings(settings.schema);
5163
5549
  const currentItemTypeDefinitions = normalizeItemTypeDefinitions(settings.item_types?.definitions);
@@ -5305,11 +5691,33 @@ function normalizeExtensionPolicyOverrides(overrides) {
5305
5691
  }
5306
5692
  return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
5307
5693
  }
5694
+ function normalizePmMaxVersionExceededModeValue2(value) {
5695
+ return value === "block" || value === "warn" ? value : void 0;
5696
+ }
5697
+ function normalizePmMaxVersionExceededModeSetting(value) {
5698
+ if (typeof value === "string") {
5699
+ return normalizePmMaxVersionExceededModeValue2(value);
5700
+ }
5701
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
5702
+ const global = normalizePmMaxVersionExceededModeValue2(value.global);
5703
+ const project = normalizePmMaxVersionExceededModeValue2(value.project);
5704
+ if (global === void 0 && project === void 0) {
5705
+ return void 0;
5706
+ }
5707
+ return {
5708
+ ...global !== void 0 ? { global } : {},
5709
+ ...project !== void 0 ? { project } : {}
5710
+ };
5711
+ }
5712
+ return void 0;
5713
+ }
5308
5714
  function normalizeExtensionPolicySettings(policy) {
5309
5715
  const defaults = SETTINGS_DEFAULTS.extensions.policy;
5716
+ const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededModeSetting(policy?.pm_max_version_exceeded_mode);
5310
5717
  return {
5311
5718
  mode: normalizeExtensionPolicyMode(policy?.mode),
5312
5719
  trust_mode: normalizeExtensionTrustMode(policy?.trust_mode),
5720
+ ...pmMaxVersionExceededMode2 !== void 0 ? { pm_max_version_exceeded_mode: pmMaxVersionExceededMode2 } : {},
5313
5721
  require_provenance: policy?.require_provenance === true,
5314
5722
  trusted_extensions: normalizeLowerStringList(policy?.trusted_extensions ?? defaults.trusted_extensions),
5315
5723
  default_sandbox_profile: normalizeExtensionSandboxProfile(policy?.default_sandbox_profile),
@@ -5598,6 +6006,7 @@ function serializeSettings(settings, options = {}) {
5598
6006
  ordered.extensions.policy = orderObject(ordered.extensions.policy ?? {}, [
5599
6007
  "mode",
5600
6008
  "trust_mode",
6009
+ "pm_max_version_exceeded_mode",
5601
6010
  "require_provenance",
5602
6011
  "trusted_extensions",
5603
6012
  "default_sandbox_profile",
@@ -5664,28 +6073,52 @@ function serializeSettings(settings, options = {}) {
5664
6073
  }
5665
6074
  async function readSettingsWithMetadata(pmRoot) {
5666
6075
  const settingsPath = getSettingsPath(pmRoot);
5667
- const raw = await readFileIfExists(settingsPath);
5668
- if (raw === null) {
5669
- return buildFallbackSettingsReadResult();
5670
- }
6076
+ let trackedPathsForFailure = [settingsPath];
5671
6077
  await runActiveOnReadHooks({
5672
6078
  path: settingsPath,
5673
6079
  scope: "project"
5674
6080
  });
6081
+ const cachedResult = getSettingsReadCacheEntry(pmRoot);
6082
+ if (cachedResult) {
6083
+ const currentSignatures = await collectSettingsReadCacheSignatures(cachedResult.tracked_paths);
6084
+ if (settingsReadCacheSignaturesEqual(currentSignatures, cachedResult.signatures)) {
6085
+ return cloneSettingsReadResult(cachedResult.value);
6086
+ }
6087
+ }
6088
+ const settingsOnlySignatures = await collectSettingsReadCacheSignatures([settingsPath]);
6089
+ const raw = await readFileIfExists(settingsPath);
6090
+ if (raw === null) {
6091
+ const fallback = buildFallbackSettingsReadResult();
6092
+ await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsOnlySignatures, [settingsPath]);
6093
+ return fallback;
6094
+ }
6095
+ const settingsSignaturesAfterRead = await collectSettingsReadCacheSignatures([settingsPath]);
6096
+ if (!settingsReadCacheSignaturesEqual(settingsOnlySignatures, settingsSignaturesAfterRead)) {
6097
+ clearSettingsReadCache(pmRoot);
6098
+ return readSettingsWithMetadata(pmRoot);
6099
+ }
5675
6100
  let parsed;
5676
6101
  try {
5677
6102
  parsed = JSON.parse(raw);
5678
6103
  } catch {
5679
- return buildFallbackSettingsReadResult("settings_read_invalid_json");
6104
+ const fallback = buildFallbackSettingsReadResult("settings_read_invalid_json");
6105
+ await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
6106
+ return fallback;
5680
6107
  }
5681
6108
  const validated = validateSettings(parsed);
5682
6109
  if (!validated.success) {
5683
- return buildFallbackSettingsReadResult("settings_read_invalid_schema");
6110
+ const fallback = buildFallbackSettingsReadResult("settings_read_invalid_schema");
6111
+ await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
6112
+ return fallback;
5684
6113
  }
5685
6114
  try {
5686
6115
  const mergedSettings = mergeSettings(validated.data);
6116
+ const trackedPaths = resolveSettingsReadTrackedPaths(pmRoot, mergedSettings.schema, settingsPath);
6117
+ trackedPathsForFailure = trackedPaths;
6118
+ const signaturesBeforeSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
5687
6119
  const schemaScaffold = await ensureRuntimeSchemaFileScaffold(pmRoot, mergedSettings.schema);
5688
6120
  const loadedSchemaSections = await loadRuntimeSchemaFromOptionalFiles(pmRoot, mergedSettings.schema);
6121
+ const signaturesAfterSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
5689
6122
  const settings = {
5690
6123
  ...mergedSettings,
5691
6124
  item_types: {
@@ -5697,7 +6130,7 @@ async function readSettingsWithMetadata(pmRoot) {
5697
6130
  schema: loadedSchemaSections.schema
5698
6131
  };
5699
6132
  attachSettingsPersistSourceSnapshot(settings, buildSettingsPersistSourceSnapshot(validated.data, settings));
5700
- return {
6133
+ const result = {
5701
6134
  settings,
5702
6135
  metadata: {
5703
6136
  has_explicit_item_format: hasExplicitItemFormat(parsed)
@@ -5708,8 +6141,24 @@ async function readSettingsWithMetadata(pmRoot) {
5708
6141
  ...loadedSchemaSections.warnings
5709
6142
  ]
5710
6143
  };
6144
+ if (schemaScaffold.created_paths.length === 0) {
6145
+ if (!settingsReadCacheSignaturesEqual(signaturesBeforeSchemaLoad, signaturesAfterSchemaLoad)) {
6146
+ clearSettingsReadCache(pmRoot);
6147
+ } else {
6148
+ setSettingsReadCacheEntry(pmRoot, {
6149
+ tracked_paths: trackedPaths,
6150
+ signatures: signaturesAfterSchemaLoad,
6151
+ value: cloneSettingsReadResult(result)
6152
+ });
6153
+ }
6154
+ } else {
6155
+ clearSettingsReadCache(pmRoot);
6156
+ }
6157
+ return result;
5711
6158
  } catch {
5712
- return buildFallbackSettingsReadResult("settings_read_merge_failed");
6159
+ const fallback = buildFallbackSettingsReadResult("settings_read_merge_failed");
6160
+ await cacheSettingsReadResultSafe(pmRoot, trackedPathsForFailure, fallback);
6161
+ return fallback;
5713
6162
  }
5714
6163
  }
5715
6164
  async function readSettings(pmRoot) {
@@ -5720,11 +6169,15 @@ async function writeSettings(pmRoot, settings, op = SETTINGS_WRITE_OP) {
5720
6169
  await writeFileAtomic(settingsPath, serializeSettings(settings, {
5721
6170
  persist_source: getSettingsPersistSourceSnapshot(settings)
5722
6171
  }));
5723
- await runActiveOnWriteHooks({
5724
- path: settingsPath,
5725
- scope: "project",
5726
- op
5727
- });
6172
+ try {
6173
+ await runActiveOnWriteHooks({
6174
+ path: settingsPath,
6175
+ scope: "project",
6176
+ op
6177
+ });
6178
+ } finally {
6179
+ clearSettingsReadCache(pmRoot);
6180
+ }
5728
6181
  }
5729
6182
 
5730
6183
  export {
@@ -5782,6 +6235,10 @@ export {
5782
6235
  coercePositiveInteger,
5783
6236
  coerceNumberInRange,
5784
6237
  asRecordOrNull,
6238
+ resolveFlagValueKind,
6239
+ flattenFlagListValue,
6240
+ levenshteinDistanceWithinLimit,
6241
+ normalizeItemFieldType,
5785
6242
  parseUnknownExtensionCapabilityWarning,
5786
6243
  parseLegacyExtensionCapabilityAliasWarning,
5787
6244
  createEmptyExtensionRegistrationRegistry,
@@ -5859,6 +6316,6 @@ export {
5859
6316
  readSettings,
5860
6317
  writeSettings
5861
6318
  };
5862
- //# sourceMappingURL=chunk-YJAKN2N2.js.map
6319
+ //# sourceMappingURL=chunk-WNMRICXH.js.map
5863
6320
 
5864
- //# debugId=0b9873ce-4d2c-5248-a389-357401ce7cbc
6321
+ //# debugId=c3981b80-9acf-59eb-b3e4-2434796a7689