@unbrained/pm-cli 2026.7.3 → 2026.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CONTRIBUTING.md +36 -7
  3. package/README.md +1 -9
  4. package/dist/cli/commands/calendar.d.ts +3 -2
  5. package/dist/cli/commands/calendar.js +5 -5
  6. package/dist/cli/commands/calendar.js.map +1 -1
  7. package/dist/cli/commands/claim.js +17 -3
  8. package/dist/cli/commands/claim.js.map +1 -1
  9. package/dist/cli/commands/close.js +34 -16
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +231 -345
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/copy.js +3 -3
  14. package/dist/cli/commands/copy.js.map +1 -1
  15. package/dist/cli/commands/create.d.ts +9 -59
  16. package/dist/cli/commands/create.js +162 -132
  17. package/dist/cli/commands/create.js.map +1 -1
  18. package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
  19. package/dist/cli/commands/extension/bundled-catalog.js +15 -2
  20. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  21. package/dist/cli/commands/extension/describe.d.ts +6 -3
  22. package/dist/cli/commands/extension/describe.js +21 -9
  23. package/dist/cli/commands/extension/describe.js.map +1 -1
  24. package/dist/cli/commands/extension/doctor.d.ts +0 -4
  25. package/dist/cli/commands/extension/doctor.js +3 -3
  26. package/dist/cli/commands/extension/doctor.js.map +1 -1
  27. package/dist/cli/commands/extension/scaffold.js +59 -133
  28. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  29. package/dist/cli/commands/extension/shared.d.ts +2 -7
  30. package/dist/cli/commands/extension/shared.js +4 -10
  31. package/dist/cli/commands/extension/shared.js.map +1 -1
  32. package/dist/cli/commands/extension.js +33 -8
  33. package/dist/cli/commands/extension.js.map +1 -1
  34. package/dist/cli/commands/files.js +3 -3
  35. package/dist/cli/commands/files.js.map +1 -1
  36. package/dist/cli/commands/history-compact.js +9 -18
  37. package/dist/cli/commands/history-compact.js.map +1 -1
  38. package/dist/cli/commands/history-repair.js +9 -19
  39. package/dist/cli/commands/history-repair.js.map +1 -1
  40. package/dist/cli/commands/init-agent-guidance.js +133 -97
  41. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  42. package/dist/cli/commands/init.js +3 -3
  43. package/dist/cli/commands/init.js.map +1 -1
  44. package/dist/cli/commands/item-filter-options.d.ts +2 -0
  45. package/dist/cli/commands/item-filter-options.js +2 -2
  46. package/dist/cli/commands/item-filter-options.js.map +1 -1
  47. package/dist/cli/commands/mutation-command-options.d.ts +78 -0
  48. package/dist/cli/commands/mutation-command-options.js +10 -0
  49. package/dist/cli/commands/mutation-command-options.js.map +1 -0
  50. package/dist/cli/commands/profile.js +3 -3
  51. package/dist/cli/commands/profile.js.map +1 -1
  52. package/dist/cli/commands/reindex.js +4 -4
  53. package/dist/cli/commands/reindex.js.map +1 -1
  54. package/dist/cli/commands/restore.js +3 -3
  55. package/dist/cli/commands/restore.js.map +1 -1
  56. package/dist/cli/commands/schema.js +10 -10
  57. package/dist/cli/commands/schema.js.map +1 -1
  58. package/dist/cli/commands/shared-unset-fields.d.ts +19 -0
  59. package/dist/cli/commands/shared-unset-fields.js +31 -2
  60. package/dist/cli/commands/shared-unset-fields.js.map +1 -1
  61. package/dist/cli/commands/update.d.ts +2 -59
  62. package/dist/cli/commands/update.js +29 -98
  63. package/dist/cli/commands/update.js.map +1 -1
  64. package/dist/cli/commands/validate.js +4 -4
  65. package/dist/cli/commands/validate.js.map +1 -1
  66. package/dist/cli/error-guidance.js +107 -7
  67. package/dist/cli/error-guidance.js.map +1 -1
  68. package/dist/cli/main.d.ts +6 -2
  69. package/dist/cli/main.js +33 -12
  70. package/dist/cli/main.js.map +1 -1
  71. package/dist/cli/register-list-query.js +4 -2
  72. package/dist/cli/register-list-query.js.map +1 -1
  73. package/dist/cli/registration-helpers.js +12 -6
  74. package/dist/cli/registration-helpers.js.map +1 -1
  75. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
  76. package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js → activity-YKAKZTZ4.js} +11 -9
  77. package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js → aggregate-EQX2RGB7.js} +16 -13
  78. package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js.map → aggregate-EQX2RGB7.js.map} +1 -1
  79. package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js → aggregate-PEGZGJXD.js} +18 -15
  80. package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js.map → aggregate-PEGZGJXD.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{append-EZESUVJT.js → append-CZGUZ45Q.js} +11 -8
  82. package/dist/cli-bundle/chunks/{append-EZESUVJT.js.map → append-CZGUZ45Q.js.map} +1 -1
  83. package/dist/cli-bundle/chunks/{append-JFG4WQMG.js → append-NSQBCXZJ.js} +13 -10
  84. package/dist/cli-bundle/chunks/{append-JFG4WQMG.js.map → append-NSQBCXZJ.js.map} +1 -1
  85. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
  86. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
  87. package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js → chunk-3PL6LEKP.js} +16 -14
  88. package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js.map → chunk-3PL6LEKP.js.map} +1 -1
  89. package/dist/cli-bundle/chunks/{chunk-6KRFL33E.js → chunk-3U3VEWK6.js} +277 -119
  90. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js → chunk-3Y4OESPP.js} +14 -12
  92. package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js.map → chunk-3Y4OESPP.js.map} +1 -1
  93. package/dist/cli-bundle/chunks/{chunk-HB4FAT3O.js → chunk-4LRVSBO6.js} +21 -15
  94. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +7 -0
  95. package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js → chunk-4OFLJHX6.js} +7 -5
  96. package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js.map → chunk-4OFLJHX6.js.map} +1 -1
  97. package/dist/cli-bundle/chunks/{chunk-JPATY4SE.js → chunk-4QQ6PM7M.js} +45 -557
  98. package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
  99. package/dist/cli-bundle/chunks/{chunk-6CDCWKSX.js → chunk-53BTLLAF.js} +68 -331
  100. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-4WB6S4YX.js → chunk-57C2RLW5.js} +277 -112
  102. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js → chunk-5B3X4Y22.js} +52 -63
  104. package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js.map → chunk-5B3X4Y22.js.map} +3 -3
  105. package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js → chunk-5J2XPTAD.js} +10 -8
  106. package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js.map → chunk-5J2XPTAD.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js → chunk-5JE6SMYS.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-MHRS5FUX.js → chunk-5JZ7APJU.js} +153 -108
  109. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-KHVGM5CS.js → chunk-5VVUKE3U.js} +544 -2368
  111. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{chunk-RJH5VQHW.js → chunk-75U6M5ZD.js} +22 -16
  113. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +1 -0
  114. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
  115. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js → chunk-7EQNAZX2.js} +14 -12
  117. package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js.map → chunk-7EQNAZX2.js.map} +1 -1
  118. package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
  119. package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-ERG65A2L.js → chunk-7MDXZAZS.js} +29 -7
  121. package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-OGLGI22K.js → chunk-7QH7DHUB.js} +74 -8
  123. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js → chunk-7WYXBPYQ.js} +7 -5
  125. package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js.map → chunk-7WYXBPYQ.js.map} +1 -1
  126. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
  127. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
  128. package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js → chunk-ABRA3BHY.js} +18 -16
  129. package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js.map → chunk-ABRA3BHY.js.map} +2 -2
  130. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
  131. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js → chunk-BFVHCAOO.js} +9 -7
  133. package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js.map → chunk-BFVHCAOO.js.map} +1 -1
  134. package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js → chunk-BVEUCSH2.js} +6 -4
  135. package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js.map → chunk-BVEUCSH2.js.map} +1 -1
  136. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
  137. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
  138. package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js → chunk-D3UCE7RW.js} +7 -5
  139. package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js.map → chunk-D3UCE7RW.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
  141. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
  142. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
  143. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
  144. package/dist/cli-bundle/chunks/{chunk-AJHYQCBJ.js → chunk-DRBV5UC2.js} +8 -23
  145. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
  146. package/dist/cli-bundle/chunks/{chunk-NZ7QIUP5.js → chunk-E2FUG6GD.js} +67 -351
  147. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +7 -0
  148. package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js → chunk-EEY54JMF.js} +5 -3
  149. package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js.map → chunk-EEY54JMF.js.map} +1 -1
  150. package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js → chunk-EZFKWSC7.js} +94 -16
  151. package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js.map → chunk-EZFKWSC7.js.map} +4 -4
  152. package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js → chunk-FDBARR33.js} +40 -19
  153. package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js.map → chunk-FDBARR33.js.map} +3 -3
  154. package/dist/cli-bundle/chunks/{chunk-WRYERRZX.js → chunk-FGQKEDE4.js} +36 -12
  155. package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
  156. package/dist/cli-bundle/chunks/{chunk-CXR3CMBQ.js → chunk-FJRKQREY.js} +10 -18
  157. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
  158. package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js → chunk-FUM6UMY4.js} +10 -11
  159. package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js.map → chunk-FUM6UMY4.js.map} +1 -1
  160. package/dist/cli-bundle/chunks/{chunk-TQ6AX5SQ.js → chunk-GIWXVMZ3.js} +140 -334
  161. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
  162. package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js → chunk-HBYZDSK5.js} +19 -17
  163. package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js.map → chunk-HBYZDSK5.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js → chunk-HJE4JTKQ.js} +6 -4
  165. package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js.map → chunk-HJE4JTKQ.js.map} +1 -1
  166. package/dist/cli-bundle/chunks/{chunk-YSDFIY7N.js → chunk-HK72NWAD.js} +89 -18
  167. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
  168. package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js → chunk-IJ6CO3JV.js} +41 -20
  169. package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js.map → chunk-IJ6CO3JV.js.map} +1 -1
  170. package/dist/cli-bundle/chunks/{chunk-YF746GTH.js → chunk-JFCVQXZX.js} +139 -326
  171. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js → chunk-JLA7EVYV.js} +12 -10
  173. package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js.map → chunk-JLA7EVYV.js.map} +1 -1
  174. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
  175. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
  176. package/dist/cli-bundle/chunks/{chunk-32IUNTG4.js → chunk-K3AGVXSF.js} +37 -13
  177. package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
  178. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
  179. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
  180. package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
  181. package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
  182. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
  183. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js → chunk-KLG4ZULO.js} +12 -10
  185. package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js.map → chunk-KLG4ZULO.js.map} +1 -1
  186. package/dist/cli-bundle/chunks/{chunk-XRYSCRZR.js → chunk-LEKT4K7I.js} +74 -8
  187. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
  188. package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js → chunk-MNZ7DRNC.js} +13 -10
  189. package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js.map → chunk-MNZ7DRNC.js.map} +1 -1
  190. package/dist/cli-bundle/chunks/{chunk-4EXFFP7T.js → chunk-MTTXDAK4.js} +206 -147
  191. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
  192. package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js → chunk-MZ7VNEVY.js} +8 -6
  193. package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js.map → chunk-MZ7VNEVY.js.map} +1 -1
  194. package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js → chunk-N6DNM2FA.js} +2 -2
  195. package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js → chunk-N7X4WP6L.js} +11 -8
  196. package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js.map → chunk-N7X4WP6L.js.map} +1 -1
  197. package/dist/cli-bundle/chunks/{chunk-U3S2B7TA.js → chunk-NBFCNJ7Q.js} +206 -147
  198. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
  199. package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js → chunk-NER3KUUS.js} +2 -2
  200. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
  201. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
  203. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
  204. package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js → chunk-OESSOFJ4.js} +14 -12
  205. package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js.map → chunk-OESSOFJ4.js.map} +1 -1
  206. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
  207. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-FUFFPIYA.js → chunk-OWTIRHX4.js} +28 -6
  209. package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js → chunk-P3VRG72Q.js} +10 -8
  211. package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js.map → chunk-P3VRG72Q.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
  213. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
  214. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
  215. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
  216. package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js → chunk-PDXT6Q55.js} +2 -2
  217. package/dist/cli-bundle/chunks/{chunk-EJ2OCBHF.js → chunk-PJ3A56YF.js} +46 -537
  218. package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js → chunk-PPAJG4GB.js} +13 -10
  220. package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js.map → chunk-PPAJG4GB.js.map} +1 -1
  221. package/dist/cli-bundle/chunks/{chunk-572FKBRL.js → chunk-PPE4YUQM.js} +1725 -1663
  222. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js → chunk-QHZO65XW.js} +8 -6
  224. package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js.map → chunk-QHZO65XW.js.map} +1 -1
  225. package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js → chunk-R3ZBLGTC.js} +9 -10
  226. package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js.map → chunk-R3ZBLGTC.js.map} +2 -2
  227. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
  228. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
  229. package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js → chunk-RX3HQSYG.js} +2 -2
  230. package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js → chunk-S4APD35C.js} +4 -4
  231. package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js → chunk-S5AYOUT5.js} +8 -6
  232. package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js.map → chunk-S5AYOUT5.js.map} +1 -1
  233. package/dist/cli-bundle/chunks/{chunk-SYE6WMV6.js → chunk-STPSZ2XY.js} +19 -744
  234. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
  235. package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js → chunk-T35XLYZF.js} +2 -2
  236. package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js → chunk-T3ABIMGW.js} +5 -3
  237. package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js.map → chunk-T3ABIMGW.js.map} +1 -1
  238. package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js → chunk-T3F4DF23.js} +16 -14
  239. package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js.map → chunk-T3F4DF23.js.map} +1 -1
  240. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
  241. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
  242. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
  243. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
  244. package/dist/cli-bundle/chunks/{chunk-ECU6MMTQ.js → chunk-TSPKZRRW.js} +50 -116
  245. package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
  246. package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js → chunk-TT42JUMF.js} +4 -4
  247. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
  248. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
  249. package/dist/cli-bundle/chunks/{chunk-RAHINBVP.js → chunk-UI5BJ6DO.js} +1339 -1277
  250. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
  251. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
  252. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
  253. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
  254. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
  255. package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
  256. package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js → chunk-VZIYHZDX.js} +11 -8
  258. package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js.map → chunk-VZIYHZDX.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js → chunk-WISPVC2E.js} +9 -7
  260. package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js.map → chunk-WISPVC2E.js.map} +1 -1
  261. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
  262. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
  263. package/dist/cli-bundle/chunks/{chunk-HQAF23Q2.js → chunk-XQCG2JGW.js} +17 -749
  264. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
  265. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
  266. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
  267. package/dist/cli-bundle/chunks/{chunk-L4SLHV6G.js → chunk-YD5FML7K.js} +464 -2239
  268. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
  269. package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js → chunk-YFIE7YK6.js} +7 -5
  270. package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js.map → chunk-YFIE7YK6.js.map} +1 -1
  271. package/dist/cli-bundle/chunks/{chunk-WYOIIFSE.js → chunk-YMABYTNG.js} +49 -115
  272. package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js → chunk-YOF5VPKM.js} +2 -2
  274. package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js → chunk-YPPVU5GX.js} +11 -9
  275. package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js.map → chunk-YPPVU5GX.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js → chunk-YQMMMONE.js} +6 -4
  277. package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js.map → chunk-YQMMMONE.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js → chunk-YSAH5FY5.js} +16 -14
  279. package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js.map → chunk-YSAH5FY5.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{chunk-KS6ATO47.js → chunk-YZIR4R3U.js} +153 -108
  281. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +7 -0
  282. package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js → chunk-Z2CRRZYF.js} +14 -12
  283. package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js.map → chunk-Z2CRRZYF.js.map} +1 -1
  284. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
  285. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
  286. package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js → chunk-ZCJAA3JK.js} +8 -6
  287. package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js.map → chunk-ZCJAA3JK.js.map} +1 -1
  288. package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js → chunk-ZD34OFFQ.js} +5 -3
  289. package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js.map → chunk-ZD34OFFQ.js.map} +1 -1
  290. package/dist/cli-bundle/chunks/{chunk-67LARBDL.js → chunk-ZJB3UV5U.js} +54 -58
  291. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
  292. package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js → chunk-ZMD35NYG.js} +2 -2
  293. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
  294. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{claim-5GU7OE67.js → claim-4DROPSIS.js} +30 -13
  296. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{claim-2BGBGSVI.js → claim-VX54TV5U.js} +29 -12
  298. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{close-AFVKPR57.js → close-3YRR3XY6.js} +9 -7
  300. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
  301. package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js → close-many-AP4MWU36.js} +21 -18
  302. package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js.map → close-many-AP4MWU36.js.map} +1 -1
  303. package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js → close-many-OMZIGZB4.js} +19 -16
  304. package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js.map → close-many-OMZIGZB4.js.map} +1 -1
  305. package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js → comments-MIW5MZOX.js} +12 -9
  306. package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js.map → comments-MIW5MZOX.js.map} +1 -1
  307. package/dist/cli-bundle/chunks/{comments-RW23R3VE.js → comments-SAG5LSKL.js} +14 -11
  308. package/dist/cli-bundle/chunks/{comments-RW23R3VE.js.map → comments-SAG5LSKL.js.map} +1 -1
  309. package/dist/cli-bundle/chunks/{config-AUM5WBYA.js → config-DJJKZB5R.js} +20 -17
  310. package/dist/cli-bundle/chunks/{config-AUM5WBYA.js.map → config-DJJKZB5R.js.map} +1 -1
  311. package/dist/cli-bundle/chunks/{config-OZWSA2NP.js → config-V57QD47V.js} +22 -19
  312. package/dist/cli-bundle/chunks/{config-OZWSA2NP.js.map → config-V57QD47V.js.map} +1 -1
  313. package/dist/cli-bundle/chunks/{context-PKCEHQY3.js → context-4OQGIPSO.js} +15 -12
  314. package/dist/cli-bundle/chunks/{context-OYXRGY7S.js → context-WLA6IAWE.js} +15 -12
  315. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
  316. package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
  317. package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js → copy-LEE6P6EM.js} +17 -14
  318. package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js.map → copy-LEE6P6EM.js.map} +2 -2
  319. package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js → copy-OTJOWFL6.js} +18 -15
  320. package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js.map → copy-OTJOWFL6.js.map} +1 -1
  321. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
  322. package/dist/cli-bundle/chunks/{create-PM45M6PE.js → create-XWWQFQ6S.js} +14 -12
  323. package/dist/cli-bundle/chunks/{delete-7YXHYG67.js → delete-62JQTYT4.js} +10 -7
  324. package/dist/cli-bundle/chunks/{delete-7YXHYG67.js.map → delete-62JQTYT4.js.map} +1 -1
  325. package/dist/cli-bundle/chunks/{delete-LPISP43T.js → delete-HQKGRNRZ.js} +12 -9
  326. package/dist/cli-bundle/chunks/{delete-LPISP43T.js.map → delete-HQKGRNRZ.js.map} +1 -1
  327. package/dist/cli-bundle/chunks/{deps-WATKQDE3.js → deps-55FTG6Z5.js} +12 -9
  328. package/dist/cli-bundle/chunks/{deps-WATKQDE3.js.map → deps-55FTG6Z5.js.map} +1 -1
  329. package/dist/cli-bundle/chunks/{deps-N2T26FME.js → deps-L2FPIAD3.js} +10 -7
  330. package/dist/cli-bundle/chunks/{deps-N2T26FME.js.map → deps-L2FPIAD3.js.map} +1 -1
  331. package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js → docs-6CRCSVKK.js} +11 -9
  332. package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js.map → docs-6CRCSVKK.js.map} +1 -1
  333. package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js → docs-S6UTOTO5.js} +9 -7
  334. package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js.map → docs-S6UTOTO5.js.map} +1 -1
  335. package/dist/cli-bundle/chunks/{eval-6DCLG52D.js → eval-N6UHFWVO.js} +15 -11
  336. package/dist/cli-bundle/chunks/{eval-6DCLG52D.js.map → eval-N6UHFWVO.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js → eval-PHOTWYHI.js} +17 -13
  338. package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js.map → eval-PHOTWYHI.js.map} +1 -1
  339. package/dist/cli-bundle/chunks/{extension-BNINIMT7.js → extension-NBAH62ML.js} +17 -11
  340. package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js → extension-ZF6ZZPOU.js} +17 -11
  341. package/dist/cli-bundle/chunks/{files-FUYPSOFJ.js → files-6P57MRKL.js} +14 -11
  342. package/dist/cli-bundle/chunks/files-6P57MRKL.js.map +7 -0
  343. package/dist/cli-bundle/chunks/{files-6SGKHS6O.js → files-JPU3FNJ7.js} +15 -12
  344. package/dist/cli-bundle/chunks/files-JPU3FNJ7.js.map +1 -0
  345. package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js → focus-LFZ6IDBR.js} +15 -11
  346. package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js.map → focus-LFZ6IDBR.js.map} +1 -1
  347. package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js → focus-WNMYCVYA.js} +13 -9
  348. package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js.map → focus-WNMYCVYA.js.map} +1 -1
  349. package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js → gc-AETFKZ44.js} +10 -7
  350. package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js.map → gc-AETFKZ44.js.map} +1 -1
  351. package/dist/cli-bundle/chunks/{gc-TDWSDR66.js → gc-RLBP4QVN.js} +12 -9
  352. package/dist/cli-bundle/chunks/{gc-TDWSDR66.js.map → gc-RLBP4QVN.js.map} +1 -1
  353. package/dist/cli-bundle/chunks/{get-LY6M2JIM.js → get-NH2MPBCI.js} +18 -15
  354. package/dist/cli-bundle/chunks/{get-LY6M2JIM.js.map → get-NH2MPBCI.js.map} +1 -1
  355. package/dist/cli-bundle/chunks/{get-2WGLX74N.js → get-P4ZQXCPZ.js} +16 -13
  356. package/dist/cli-bundle/chunks/{get-2WGLX74N.js.map → get-P4ZQXCPZ.js.map} +1 -1
  357. package/dist/cli-bundle/chunks/{health-4RKHYS3T.js → health-3GVPMQBL.js} +36 -29
  358. package/dist/cli-bundle/chunks/{health-4RKHYS3T.js.map → health-3GVPMQBL.js.map} +1 -1
  359. package/dist/cli-bundle/chunks/{health-TMFVNYRA.js → health-DNTM72GJ.js} +34 -27
  360. package/dist/cli-bundle/chunks/{health-TMFVNYRA.js.map → health-DNTM72GJ.js.map} +1 -1
  361. package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
  362. package/dist/cli-bundle/chunks/{history-SGRRS72R.js → history-SGPYRAFT.js} +10 -8
  363. package/dist/cli-bundle/chunks/{history-compact-LOED43R3.js → history-compact-3F6VELO7.js} +26 -30
  364. package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js.map +7 -0
  365. package/dist/cli-bundle/chunks/{history-compact-V5DNAQHH.js → history-compact-656Y2TN4.js} +27 -31
  366. package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js.map +1 -0
  367. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
  368. package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js → history-redact-54ICFKXM.js} +11 -9
  369. package/dist/cli-bundle/chunks/{history-repair-PGYQJMGD.js → history-repair-4N6SDVHK.js} +25 -30
  370. package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js.map +7 -0
  371. package/dist/cli-bundle/chunks/{history-repair-4WVBVHFR.js → history-repair-EVTO6LIH.js} +26 -31
  372. package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js.map +1 -0
  373. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
  374. package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
  375. package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js → learnings-2HTPZNGZ.js} +10 -8
  376. package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js.map → learnings-2HTPZNGZ.js.map} +1 -1
  377. package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js → learnings-YBIHY3D6.js} +12 -10
  378. package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js.map → learnings-YBIHY3D6.js.map} +1 -1
  379. package/dist/cli-bundle/chunks/{list-472TIOVK.js → list-64LHZ3HM.js} +10 -8
  380. package/dist/cli-bundle/chunks/{list-D7BF5CL2.js → list-7LXBTEKI.js} +10 -8
  381. package/dist/cli-bundle/chunks/{next-SFQZVX2B.js → next-7ODPAQ4U.js} +22 -18
  382. package/dist/cli-bundle/chunks/{next-SFQZVX2B.js.map → next-7ODPAQ4U.js.map} +1 -1
  383. package/dist/cli-bundle/chunks/{next-D5STGWI2.js → next-ODJUM4ZM.js} +24 -20
  384. package/dist/cli-bundle/chunks/{next-D5STGWI2.js.map → next-ODJUM4ZM.js.map} +1 -1
  385. package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js → notes-72YXN5JX.js} +10 -8
  386. package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js.map → notes-72YXN5JX.js.map} +1 -1
  387. package/dist/cli-bundle/chunks/{notes-W4UEICGF.js → notes-NJ7IQJX4.js} +12 -10
  388. package/dist/cli-bundle/chunks/{notes-W4UEICGF.js.map → notes-NJ7IQJX4.js.map} +1 -1
  389. package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js → plan-R4NDQ27E.js} +18 -15
  390. package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js.map → plan-R4NDQ27E.js.map} +1 -1
  391. package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js → plan-XWY5T67S.js} +20 -17
  392. package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js.map → plan-XWY5T67S.js.map} +1 -1
  393. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
  394. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
  395. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
  396. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
  397. package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js → register-list-query-5H66WFYF.js} +24 -21
  398. package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +7 -0
  399. package/dist/cli-bundle/chunks/{register-list-query-GAPQ6DM3.js → register-list-query-FB3FNDLZ.js} +25 -22
  400. package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js.map → register-list-query-FB3FNDLZ.js.map} +1 -7
  401. package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js → register-mutation-UJO23C7R.js} +42 -39
  402. package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js.map → register-mutation-UJO23C7R.js.map} +1 -1
  403. package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js → register-mutation-Z2ETYHKS.js} +40 -37
  404. package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
  405. package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js → register-operations-A3XAM5J7.js} +39 -36
  406. package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js.map → register-operations-A3XAM5J7.js.map} +1 -1
  407. package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js → register-operations-SG7HBSUP.js} +37 -34
  408. package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js.map → register-operations-SG7HBSUP.js.map} +1 -1
  409. package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js → register-setup-I45OGJUV.js} +25 -19
  410. package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js.map → register-setup-I45OGJUV.js.map} +1 -1
  411. package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js → register-setup-K6U3NVY5.js} +23 -17
  412. package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js.map → register-setup-K6U3NVY5.js.map} +1 -1
  413. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
  414. package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js → restore-YJ2ET6AT.js} +11 -9
  415. package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
  416. package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
  417. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
  418. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
  419. package/dist/cli-bundle/chunks/{schema-VBCELP5G.js → schema-2PUXCZ25.js} +10 -7
  420. package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js → schema-Y6DXXK2F.js} +10 -7
  421. package/dist/cli-bundle/chunks/{search-7UBETML4.js → search-3S72CTD6.js} +13 -10
  422. package/dist/cli-bundle/chunks/{search-R227JOL6.js → search-WNUNBQXO.js} +13 -10
  423. package/dist/cli-bundle/chunks/{stats-FAG7COEH.js → stats-IJYTRQGV.js} +13 -10
  424. package/dist/cli-bundle/chunks/{stats-FAG7COEH.js.map → stats-IJYTRQGV.js.map} +1 -1
  425. package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js → stats-L2D5Y2O5.js} +15 -12
  426. package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js.map → stats-L2D5Y2O5.js.map} +1 -1
  427. package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js → telemetry-L2CVOKVN.js} +11 -8
  428. package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js.map → telemetry-L2CVOKVN.js.map} +1 -1
  429. package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js → telemetry-QBYWQA76.js} +13 -10
  430. package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js.map → telemetry-QBYWQA76.js.map} +1 -1
  431. package/dist/cli-bundle/chunks/{test-QY44WAMR.js → test-DQ2QFJ7W.js} +21 -15
  432. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
  433. package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js → test-all-636NTRTT.js} +26 -19
  434. package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js.map → test-all-636NTRTT.js.map} +1 -1
  435. package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js → test-all-DWYK3RG6.js} +24 -17
  436. package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js.map → test-all-DWYK3RG6.js.map} +1 -1
  437. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
  438. package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
  439. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
  440. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
  441. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
  442. package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
  443. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
  444. package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
  445. package/dist/cli-bundle/chunks/{update-many-RATAARHU.js → update-many-DC7X3EWM.js} +32 -29
  446. package/dist/cli-bundle/chunks/{update-many-RATAARHU.js.map → update-many-DC7X3EWM.js.map} +1 -1
  447. package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js → update-many-SLLAMHT7.js} +34 -31
  448. package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js.map → update-many-SLLAMHT7.js.map} +1 -1
  449. package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js → upgrade-HFFXLZJA.js} +19 -12
  450. package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js.map → upgrade-HFFXLZJA.js.map} +1 -1
  451. package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js → upgrade-UYQKM7RF.js} +21 -14
  452. package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js.map → upgrade-UYQKM7RF.js.map} +1 -1
  453. package/dist/cli-bundle/chunks/{validate-NRY6MFXN.js → validate-PA4FDTOV.js} +35 -28
  454. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +7 -0
  455. package/dist/cli-bundle/chunks/{validate-GAJ6FUSI.js → validate-Z7L75YEJ.js} +35 -28
  456. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +1 -0
  457. package/dist/cli-bundle/main.js +173 -57
  458. package/dist/cli-bundle/main.js.map +2 -2
  459. package/dist/cli-bundle/sdk-runtime.js +247 -0
  460. package/dist/cli-bundle/sdk-runtime.js.map +7 -0
  461. package/dist/cli-bundle/sdk-testing.js +101 -0
  462. package/dist/cli-bundle/sdk-testing.js.map +7 -0
  463. package/dist/cli-bundle/sdk.js +787 -0
  464. package/dist/cli-bundle/sdk.js.map +7 -0
  465. package/dist/core/config/nested-settings.d.ts +4 -3
  466. package/dist/core/config/nested-settings.js +17 -6
  467. package/dist/core/config/nested-settings.js.map +1 -1
  468. package/dist/core/extensions/activation-summary.d.ts +6 -0
  469. package/dist/core/extensions/activation-summary.js +10 -4
  470. package/dist/core/extensions/activation-summary.js.map +1 -1
  471. package/dist/core/extensions/capability-usage.d.ts +6 -0
  472. package/dist/core/extensions/capability-usage.js +10 -4
  473. package/dist/core/extensions/capability-usage.js.map +1 -1
  474. package/dist/core/extensions/extension-types.d.ts +6 -2
  475. package/dist/core/extensions/extension-types.js +2 -2
  476. package/dist/core/extensions/extension-types.js.map +1 -1
  477. package/dist/core/extensions/loader.d.ts +3 -0
  478. package/dist/core/extensions/loader.js +11 -19
  479. package/dist/core/extensions/loader.js.map +1 -1
  480. package/dist/core/history/history-rewrite.d.ts +10 -0
  481. package/dist/core/history/history-rewrite.js +28 -4
  482. package/dist/core/history/history-rewrite.js.map +1 -1
  483. package/dist/core/item/parent-reference-policy.d.ts +9 -1
  484. package/dist/core/item/parent-reference-policy.js +28 -4
  485. package/dist/core/item/parent-reference-policy.js.map +1 -1
  486. package/dist/core/item/type-registry.d.ts +1 -0
  487. package/dist/core/item/type-registry.js +153 -177
  488. package/dist/core/item/type-registry.js.map +1 -1
  489. package/dist/core/lock/lock.d.ts +28 -1
  490. package/dist/core/lock/lock.js +254 -20
  491. package/dist/core/lock/lock.js.map +1 -1
  492. package/dist/core/search/background-refresh.js +7 -19
  493. package/dist/core/search/background-refresh.js.map +1 -1
  494. package/dist/core/search/http-client.d.ts +0 -1
  495. package/dist/core/search/http-client.js +3 -3
  496. package/dist/core/search/http-client.js.map +1 -1
  497. package/dist/core/shared/constants.js +3 -2
  498. package/dist/core/shared/constants.js.map +1 -1
  499. package/dist/core/shared/errors.d.ts +1 -0
  500. package/dist/core/shared/errors.js +2 -2
  501. package/dist/core/shared/errors.js.map +1 -1
  502. package/dist/core/shared/primitives.d.ts +12 -0
  503. package/dist/core/shared/primitives.js +29 -2
  504. package/dist/core/shared/primitives.js.map +1 -1
  505. package/dist/core/store/item-store.js +3 -3
  506. package/dist/core/store/item-store.js.map +1 -1
  507. package/dist/core/store/settings-validator.d.ts +1 -0
  508. package/dist/core/store/settings-validator.js +6 -3
  509. package/dist/core/store/settings-validator.js.map +1 -1
  510. package/dist/core/store/settings.js +3 -3
  511. package/dist/core/store/settings.js.map +1 -1
  512. package/dist/core/validate/fix-planning.d.ts +0 -2
  513. package/dist/core/validate/fix-planning.js +3 -3
  514. package/dist/core/validate/fix-planning.js.map +1 -1
  515. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  516. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  517. package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
  518. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  519. package/dist/sdk/cli-contracts/tool-option-contracts.js +4 -2
  520. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  521. package/dist/sdk/cli-contracts/tool-schema.js +55 -94
  522. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  523. package/dist/sdk/errors.d.ts +21 -2
  524. package/dist/sdk/errors.js +8 -2
  525. package/dist/sdk/errors.js.map +1 -1
  526. package/dist/sdk/package-import-adapters.d.ts +90 -2
  527. package/dist/sdk/package-import-adapters.js +275 -3
  528. package/dist/sdk/package-import-adapters.js.map +1 -1
  529. package/dist/sdk/runtime.d.ts +1 -1
  530. package/dist/sdk/runtime.js +3 -3
  531. package/dist/sdk/runtime.js.map +1 -1
  532. package/dist/sdk/testing.js +41 -19
  533. package/dist/sdk/testing.js.map +1 -1
  534. package/dist/types.d.ts +6 -0
  535. package/dist/types.js +2 -2
  536. package/dist/types.js.map +1 -1
  537. package/docs/ARCHITECTURE.md +27 -0
  538. package/docs/CONFIGURATION.md +3 -0
  539. package/docs/README.md +1 -0
  540. package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
  541. package/docs/TESTING.md +5 -1
  542. package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
  543. package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
  544. package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
  545. package/package.json +14 -26
  546. package/packages/pm-beads/extensions/beads/package.json +3 -0
  547. package/packages/pm-beads/extensions/beads/runtime-loader.ts +50 -41
  548. package/packages/pm-beads/extensions/beads/runtime.ts +106 -223
  549. package/packages/pm-calendar/extensions/calendar/package.json +3 -0
  550. package/packages/pm-calendar/extensions/calendar/runtime.ts +21 -18
  551. package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
  552. package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
  553. package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
  554. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +9 -11
  555. package/packages/pm-kanban/extensions/kanban/package.json +3 -0
  556. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
  557. package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
  558. package/packages/pm-templates/extensions/templates/package.json +3 -0
  559. package/packages/pm-todos/extensions/todos/package.json +3 -0
  560. package/packages/pm-todos/extensions/todos/runtime-loader.ts +62 -72
  561. package/packages/pm-todos/extensions/todos/runtime.ts +61 -257
  562. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +73 -31
  563. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +80 -34
  564. package/scripts/bundle-cli.mjs +12 -2
  565. package/scripts/install.ps1 +7 -7
  566. package/dist/cli-bundle/chunks/activity-BIML7K2D.js +0 -16
  567. package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +0 -1
  568. package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +0 -7
  569. package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +0 -1
  570. package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +0 -1
  571. package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +0 -1
  572. package/dist/cli-bundle/chunks/chunk-6CDCWKSX.js.map +0 -1
  573. package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +0 -7
  574. package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +0 -7
  575. package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
  576. package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +0 -1
  577. package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +0 -1
  578. package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +0 -1
  579. package/dist/cli-bundle/chunks/chunk-ERG65A2L.js.map +0 -1
  580. package/dist/cli-bundle/chunks/chunk-FUFFPIYA.js.map +0 -7
  581. package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +0 -7
  582. package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +0 -7
  583. package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +0 -7
  584. package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +0 -7
  585. package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +0 -7
  586. package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +0 -1
  587. package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +0 -1
  588. package/dist/cli-bundle/chunks/chunk-NZ7QIUP5.js.map +0 -7
  589. package/dist/cli-bundle/chunks/chunk-OGLGI22K.js.map +0 -1
  590. package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +0 -7
  591. package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +0 -1
  592. package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +0 -1
  593. package/dist/cli-bundle/chunks/chunk-TQ6AX5SQ.js.map +0 -7
  594. package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +0 -1
  595. package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +0 -7
  596. package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +0 -7
  597. package/dist/cli-bundle/chunks/chunk-XRYSCRZR.js.map +0 -7
  598. package/dist/cli-bundle/chunks/chunk-YF746GTH.js.map +0 -1
  599. package/dist/cli-bundle/chunks/chunk-YSDFIY7N.js.map +0 -1
  600. package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
  601. package/dist/cli-bundle/chunks/claim-2BGBGSVI.js.map +0 -7
  602. package/dist/cli-bundle/chunks/claim-5GU7OE67.js.map +0 -1
  603. package/dist/cli-bundle/chunks/close-6YODBUIV.js +0 -14
  604. package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +0 -28
  605. package/dist/cli-bundle/chunks/files-6SGKHS6O.js.map +0 -1
  606. package/dist/cli-bundle/chunks/files-FUYPSOFJ.js.map +0 -7
  607. package/dist/cli-bundle/chunks/history-CGNQJXFE.js +0 -18
  608. package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +0 -7
  609. package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +0 -1
  610. package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +0 -19
  611. package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +0 -1
  612. package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +0 -7
  613. package/dist/cli-bundle/chunks/init-4GESW7RM.js +0 -26
  614. package/dist/cli-bundle/chunks/init-XIDPABA4.js +0 -22
  615. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js +0 -1243
  616. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +0 -7
  617. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js +0 -1205
  618. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +0 -1
  619. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +0 -1
  620. package/dist/cli-bundle/chunks/restore-EXHU34EU.js +0 -17
  621. package/dist/cli-bundle/chunks/test-SY76DZTO.js +0 -35
  622. package/dist/cli-bundle/chunks/update-A7EICML6.js +0 -24
  623. package/dist/cli-bundle/chunks/update-IKJZWLQC.js +0 -28
  624. package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +0 -1
  625. package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +0 -7
  626. /package/dist/cli-bundle/chunks/{activity-BIML7K2D.js.map → activity-4XQIDNM5.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js.map → activity-YKAKZTZ4.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js.map → chunk-5JE6SMYS.js.map} +0 -0
  629. /package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js.map → chunk-N6DNM2FA.js.map} +0 -0
  630. /package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js.map → chunk-NER3KUUS.js.map} +0 -0
  631. /package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js.map → chunk-PDXT6Q55.js.map} +0 -0
  632. /package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js.map → chunk-RX3HQSYG.js.map} +0 -0
  633. /package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js.map → chunk-S4APD35C.js.map} +0 -0
  634. /package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js.map → chunk-T35XLYZF.js.map} +0 -0
  635. /package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js.map → chunk-TT42JUMF.js.map} +0 -0
  636. /package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js.map → chunk-YOF5VPKM.js.map} +0 -0
  637. /package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js.map → chunk-ZMD35NYG.js.map} +0 -0
  638. /package/dist/cli-bundle/chunks/{close-AFVKPR57.js.map → close-3YRR3XY6.js.map} +0 -0
  639. /package/dist/cli-bundle/chunks/{close-6YODBUIV.js.map → close-OB2Y4QP5.js.map} +0 -0
  640. /package/dist/cli-bundle/chunks/{context-PKCEHQY3.js.map → context-4OQGIPSO.js.map} +0 -0
  641. /package/dist/cli-bundle/chunks/{context-OYXRGY7S.js.map → context-WLA6IAWE.js.map} +0 -0
  642. /package/dist/cli-bundle/chunks/{create-Z7YCH3BE.js.map → contracts-HXJLKCRI.js.map} +0 -0
  643. /package/dist/cli-bundle/chunks/{create-PM45M6PE.js.map → contracts-OJEXMKVW.js.map} +0 -0
  644. /package/dist/cli-bundle/chunks/{extension-BNINIMT7.js.map → create-WKOZKPQR.js.map} +0 -0
  645. /package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js.map → create-XWWQFQ6S.js.map} +0 -0
  646. /package/dist/cli-bundle/chunks/{history-CGNQJXFE.js.map → extension-NBAH62ML.js.map} +0 -0
  647. /package/dist/cli-bundle/chunks/{history-SGRRS72R.js.map → extension-ZF6ZZPOU.js.map} +0 -0
  648. /package/dist/cli-bundle/chunks/{history-redact-N3JK7VBW.js.map → history-RYKLC72X.js.map} +0 -0
  649. /package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js.map → history-SGPYRAFT.js.map} +0 -0
  650. /package/dist/cli-bundle/chunks/{init-XIDPABA4.js.map → history-redact-4H3FCKF3.js.map} +0 -0
  651. /package/dist/cli-bundle/chunks/{init-4GESW7RM.js.map → history-redact-54ICFKXM.js.map} +0 -0
  652. /package/dist/cli-bundle/chunks/{list-D7BF5CL2.js.map → init-RPIPQUNV.js.map} +0 -0
  653. /package/dist/cli-bundle/chunks/{list-472TIOVK.js.map → init-SKQAESQS.js.map} +0 -0
  654. /package/dist/cli-bundle/chunks/{restore-EXHU34EU.js.map → list-64LHZ3HM.js.map} +0 -0
  655. /package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js.map → list-7LXBTEKI.js.map} +0 -0
  656. /package/dist/cli-bundle/chunks/{schema-VBCELP5G.js.map → restore-PXOFL6AM.js.map} +0 -0
  657. /package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js.map → restore-YJ2ET6AT.js.map} +0 -0
  658. /package/dist/cli-bundle/chunks/{search-R227JOL6.js.map → schema-2PUXCZ25.js.map} +0 -0
  659. /package/dist/cli-bundle/chunks/{search-7UBETML4.js.map → schema-Y6DXXK2F.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{test-QY44WAMR.js.map → search-3S72CTD6.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{test-SY76DZTO.js.map → search-WNUNBQXO.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{update-IKJZWLQC.js.map → test-DQ2QFJ7W.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{update-A7EICML6.js.map → test-W7QBLVJS.js.map} +0 -0
@@ -172,12 +172,22 @@ function resolvePmCliVersion(metaUrl, fallbackRelativeSegments = []) {
172
172
  return void 0;
173
173
  }
174
174
  }
175
+ function resolveConfiguredPmPackageRoot(env = process.env, envName = "PM_CLI_PACKAGE_ROOT", metaUrl, fallbackRelativeSegments = []) {
176
+ const envRoot = env[envName];
177
+ if (typeof envRoot === "string" && envRoot.trim().length > 0) {
178
+ return path3.resolve(envRoot.trim());
179
+ }
180
+ if (metaUrl) {
181
+ return resolvePmPackageRootFromModule(metaUrl, fallbackRelativeSegments);
182
+ }
183
+ return process.cwd();
184
+ }
175
185
 
176
186
  // dist/core/extensions/extension-types.js
177
187
  !(function() {
178
188
  try {
179
189
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
180
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "add4a412-10a4-5c04-b3a2-998cc74fdd38");
190
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "0fdb02e4-60e7-5f4c-9f06-d2ec2f03f792");
181
191
  } catch (e2) {
182
192
  }
183
193
  })();
@@ -265,7 +275,7 @@ function createDefaultExtensionGovernancePolicy() {
265
275
  !(function() {
266
276
  try {
267
277
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
268
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a6013abb-eda6-5fdb-a9c3-2216599fb9b7");
278
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3a76b425-d6cd-5ba4-a77f-bd95a7deb473");
269
279
  } catch (e2) {
270
280
  }
271
281
  })();
@@ -464,7 +474,8 @@ var SETTINGS_DEFAULTS = {
464
474
  author_default: "",
465
475
  item_format: "toon",
466
476
  locks: {
467
- ttl_seconds: 1800
477
+ ttl_seconds: 1800,
478
+ wait_ms: 3e3
468
479
  },
469
480
  checkpoints: {
470
481
  retention_days: 14
@@ -667,7 +678,7 @@ function resolveTelemetryErrorCategory(errorCode) {
667
678
  !(function() {
668
679
  try {
669
680
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
670
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "46812059-b93e-5599-a222-4ac0de6f4911");
681
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "6e5bac32-d895-5fce-9fc0-9c0615399b61");
671
682
  } catch (e2) {
672
683
  }
673
684
  })();
@@ -880,7 +891,7 @@ function normalizeItemTypeDefinition(definition, options = {}) {
880
891
  !(function() {
881
892
  try {
882
893
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
883
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "e9e27e2d-967c-5e17-8266-d661f65b78ac");
894
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "563d02b1-6a96-539c-9e2c-dc118aa5dd72");
884
895
  } catch (e2) {
885
896
  }
886
897
  })();
@@ -1026,116 +1037,85 @@ var UPDATE_COMMAND_OPTION_ALIASES = {
1026
1037
  "allow-audit-update": "allowAuditUpdate",
1027
1038
  allow_audit_update: "allowAuditUpdate"
1028
1039
  };
1029
- var CREATE_COMMAND_OPTION_FLAG_LABELS = {
1030
- title: "--title",
1031
- description: "--description",
1032
- type: "--type",
1033
- status: "--status",
1034
- priority: "--priority",
1035
- tags: "--tags",
1036
- body: "--body",
1037
- deadline: "--deadline",
1038
- estimatedMinutes: "--estimate/--estimated-minutes",
1039
- acceptanceCriteria: "--acceptance-criteria/--ac",
1040
- definitionOfReady: "--definition-of-ready",
1041
- order: "--order/--rank",
1042
- goal: "--goal",
1043
- objective: "--objective",
1044
- value: "--value",
1045
- impact: "--impact",
1046
- outcome: "--outcome",
1047
- whyNow: "--why-now",
1048
- author: "--author",
1049
- message: "--message",
1050
- assignee: "--assignee",
1051
- parent: "--parent",
1052
- reviewer: "--reviewer",
1053
- risk: "--risk",
1054
- confidence: "--confidence",
1055
- sprint: "--sprint",
1056
- release: "--release",
1057
- blockedBy: "--blocked-by",
1058
- blockedReason: "--blocked-reason",
1059
- unblockNote: "--unblock-note",
1060
- reporter: "--reporter",
1061
- severity: "--severity",
1062
- environment: "--environment",
1063
- reproSteps: "--repro-steps",
1064
- resolution: "--resolution",
1065
- expectedResult: "--expected-result",
1066
- actualResult: "--actual-result",
1067
- affectedVersion: "--affected-version",
1068
- fixedVersion: "--fixed-version",
1069
- component: "--component",
1070
- regression: "--regression",
1071
- customerImpact: "--customer-impact",
1072
- dep: "--dep",
1073
- comment: "--comment",
1074
- note: "--note",
1075
- learning: "--learning",
1076
- file: "--file",
1077
- test: "--test",
1078
- doc: "--doc",
1079
- reminder: "--reminder",
1080
- event: "--event",
1081
- typeOption: "--type-option"
1082
- };
1083
- var UPDATE_COMMAND_OPTION_FLAG_LABELS = {
1084
- title: "--title",
1085
- description: "--description",
1086
- body: "--body",
1087
- status: "--status",
1088
- closeReason: "--close-reason",
1089
- priority: "--priority",
1090
- type: "--type",
1091
- tags: "--tags",
1092
- deadline: "--deadline",
1093
- estimatedMinutes: "--estimate/--estimated-minutes",
1094
- acceptanceCriteria: "--acceptance-criteria/--ac",
1095
- definitionOfReady: "--definition-of-ready",
1096
- order: "--order/--rank",
1097
- goal: "--goal",
1098
- objective: "--objective",
1099
- value: "--value",
1100
- impact: "--impact",
1101
- outcome: "--outcome",
1102
- whyNow: "--why-now",
1103
- assignee: "--assignee",
1104
- parent: "--parent",
1105
- reviewer: "--reviewer",
1106
- risk: "--risk",
1107
- confidence: "--confidence",
1108
- sprint: "--sprint",
1109
- release: "--release",
1110
- blockedBy: "--blocked-by",
1111
- blockedReason: "--blocked-reason",
1112
- unblockNote: "--unblock-note",
1113
- reporter: "--reporter",
1114
- severity: "--severity",
1115
- environment: "--environment",
1116
- reproSteps: "--repro-steps",
1117
- resolution: "--resolution",
1118
- expectedResult: "--expected-result",
1119
- actualResult: "--actual-result",
1120
- affectedVersion: "--affected-version",
1121
- fixedVersion: "--fixed-version",
1122
- component: "--component",
1123
- regression: "--regression",
1124
- customerImpact: "--customer-impact",
1125
- comment: "--comment",
1126
- note: "--note",
1127
- learning: "--learning",
1128
- file: "--file",
1129
- test: "--test",
1130
- doc: "--doc",
1131
- reminder: "--reminder",
1132
- event: "--event",
1133
- typeOption: "--type-option",
1134
- allowAuditUpdate: "--allow-audit-update",
1135
- author: "--author",
1136
- message: "--message",
1137
- force: "--force"
1138
- };
1040
+ var COMMON_MUTATION_COMMAND_OPTION_FLAG_LABEL_ENTRIES = [
1041
+ ["deadline", "--deadline"],
1042
+ ["estimatedMinutes", "--estimate/--estimated-minutes"],
1043
+ ["acceptanceCriteria", "--acceptance-criteria/--ac"],
1044
+ ["definitionOfReady", "--definition-of-ready"],
1045
+ ["order", "--order/--rank"],
1046
+ ["goal", "--goal"],
1047
+ ["objective", "--objective"],
1048
+ ["value", "--value"],
1049
+ ["impact", "--impact"],
1050
+ ["outcome", "--outcome"],
1051
+ ["whyNow", "--why-now"],
1052
+ ["assignee", "--assignee"],
1053
+ ["parent", "--parent"],
1054
+ ["reviewer", "--reviewer"],
1055
+ ["risk", "--risk"],
1056
+ ["confidence", "--confidence"],
1057
+ ["sprint", "--sprint"],
1058
+ ["release", "--release"],
1059
+ ["blockedBy", "--blocked-by"],
1060
+ ["blockedReason", "--blocked-reason"],
1061
+ ["unblockNote", "--unblock-note"],
1062
+ ["reporter", "--reporter"],
1063
+ ["severity", "--severity"],
1064
+ ["environment", "--environment"],
1065
+ ["reproSteps", "--repro-steps"],
1066
+ ["resolution", "--resolution"],
1067
+ ["expectedResult", "--expected-result"],
1068
+ ["actualResult", "--actual-result"],
1069
+ ["affectedVersion", "--affected-version"],
1070
+ ["fixedVersion", "--fixed-version"],
1071
+ ["component", "--component"],
1072
+ ["regression", "--regression"],
1073
+ ["customerImpact", "--customer-impact"]
1074
+ ];
1075
+ var LINKED_RESOURCE_COMMAND_OPTION_FLAG_LABEL_ENTRIES = [
1076
+ ["comment", "--comment"],
1077
+ ["note", "--note"],
1078
+ ["learning", "--learning"],
1079
+ ["file", "--file"],
1080
+ ["test", "--test"],
1081
+ ["doc", "--doc"],
1082
+ ["reminder", "--reminder"],
1083
+ ["event", "--event"],
1084
+ ["typeOption", "--type-option"]
1085
+ ];
1086
+ function commandOptionLabelMap(entries) {
1087
+ return Object.fromEntries(entries);
1088
+ }
1089
+ var CREATE_COMMAND_OPTION_FLAG_LABELS = commandOptionLabelMap([
1090
+ ["title", "--title"],
1091
+ ["description", "--description"],
1092
+ ["type", "--type"],
1093
+ ["status", "--status"],
1094
+ ["priority", "--priority"],
1095
+ ["tags", "--tags"],
1096
+ ["body", "--body"],
1097
+ ...COMMON_MUTATION_COMMAND_OPTION_FLAG_LABEL_ENTRIES,
1098
+ ["author", "--author"],
1099
+ ["message", "--message"],
1100
+ ["dep", "--dep"],
1101
+ ...LINKED_RESOURCE_COMMAND_OPTION_FLAG_LABEL_ENTRIES
1102
+ ]);
1103
+ var UPDATE_COMMAND_OPTION_FLAG_LABELS = commandOptionLabelMap([
1104
+ ["title", "--title"],
1105
+ ["description", "--description"],
1106
+ ["body", "--body"],
1107
+ ["status", "--status"],
1108
+ ["closeReason", "--close-reason"],
1109
+ ["priority", "--priority"],
1110
+ ["type", "--type"],
1111
+ ["tags", "--tags"],
1112
+ ...COMMON_MUTATION_COMMAND_OPTION_FLAG_LABEL_ENTRIES,
1113
+ ...LINKED_RESOURCE_COMMAND_OPTION_FLAG_LABEL_ENTRIES,
1114
+ ["allowAuditUpdate", "--allow-audit-update"],
1115
+ ["author", "--author"],
1116
+ ["message", "--message"],
1117
+ ["force", "--force"]
1118
+ ]);
1139
1119
  function normalizeCommandOptionToken(value) {
1140
1120
  return value.trim().replace(/^--+/, "").toLowerCase();
1141
1121
  }
@@ -1280,6 +1260,27 @@ function resolveDefinitionOptions(normalizedDefinition, existing) {
1280
1260
  function resolveDefinitionCommandOptionPolicies(normalizedDefinition, existing) {
1281
1261
  return normalizedDefinition.command_option_policies ? normalizedDefinition.command_option_policies : existing?.command_option_policies ? [...existing.command_option_policies] : [];
1282
1262
  }
1263
+ function buildResolvedTypeDefinition(normalizedDefinition, existing) {
1264
+ const keepName = existing?.name ?? normalizedDefinition.name;
1265
+ const description = normalizedDefinition.description ?? existing?.description;
1266
+ const defaultStatus = normalizedDefinition.default_status ?? existing?.default_status;
1267
+ const resolvedDefinition = {
1268
+ name: keepName,
1269
+ folder: normalizedDefinition.folder ?? existing?.folder ?? toDefaultFolder(keepName),
1270
+ aliases: normalizeItemTypeStringList([...existing?.aliases ?? [], ...normalizedDefinition.aliases ?? []]),
1271
+ required_create_fields: resolveDefinitionRequiredCreateFields(normalizedDefinition, existing),
1272
+ required_create_repeatables: resolveDefinitionRequiredCreateRepeatables(normalizedDefinition, existing),
1273
+ options: resolveDefinitionOptions(normalizedDefinition, existing),
1274
+ command_option_policies: resolveDefinitionCommandOptionPolicies(normalizedDefinition, existing)
1275
+ };
1276
+ if (description) {
1277
+ resolvedDefinition.description = description;
1278
+ }
1279
+ if (defaultStatus) {
1280
+ resolvedDefinition.default_status = defaultStatus;
1281
+ }
1282
+ return resolvedDefinition;
1283
+ }
1283
1284
  function applyTypeDefinitions(source, target) {
1284
1285
  for (const rawDefinition of source) {
1285
1286
  const normalizedDefinition = normalizeTypeDefinition(rawDefinition);
@@ -1288,25 +1289,7 @@ function applyTypeDefinitions(source, target) {
1288
1289
  }
1289
1290
  const lowerName = normalizedDefinition.name.toLowerCase();
1290
1291
  const existing = target.get(lowerName);
1291
- const keepName = existing?.name ?? normalizedDefinition.name;
1292
- const folder = normalizedDefinition.folder ?? existing?.folder ?? toDefaultFolder(keepName);
1293
- const aliases = normalizeItemTypeStringList([
1294
- ...existing?.aliases ?? [],
1295
- ...normalizedDefinition.aliases ?? []
1296
- ]);
1297
- const defaultStatus = normalizedDefinition.default_status ?? existing?.default_status;
1298
- const description = normalizedDefinition.description ?? existing?.description;
1299
- target.set(lowerName, {
1300
- name: keepName,
1301
- ...description ? { description } : {},
1302
- ...defaultStatus ? { default_status: defaultStatus } : {},
1303
- folder,
1304
- aliases,
1305
- required_create_fields: resolveDefinitionRequiredCreateFields(normalizedDefinition, existing),
1306
- required_create_repeatables: resolveDefinitionRequiredCreateRepeatables(normalizedDefinition, existing),
1307
- options: resolveDefinitionOptions(normalizedDefinition, existing),
1308
- command_option_policies: resolveDefinitionCommandOptionPolicies(normalizedDefinition, existing)
1309
- });
1292
+ target.set(lowerName, buildResolvedTypeDefinition(normalizedDefinition, existing));
1310
1293
  }
1311
1294
  }
1312
1295
  function collectExtensionTypeDefinitions(registrations) {
@@ -1377,55 +1360,62 @@ function resolveTypeDefinition(typeName, registry) {
1377
1360
  }
1378
1361
  return registry.by_type[resolvedName];
1379
1362
  }
1380
- function resolveCommandOptionPolicyState(typeDefinition, command, baseRequiredOptions) {
1381
- const errors = [];
1382
- const required = /* @__PURE__ */ new Set();
1383
- const hidden = /* @__PURE__ */ new Set();
1384
- const disabled = /* @__PURE__ */ new Set();
1363
+ function applyBaseRequiredCommandOptions(state, typeDefinition, command, baseRequiredOptions) {
1385
1364
  for (const rawBase of baseRequiredOptions) {
1386
1365
  const canonical = canonicalizeCommandOptionKey(command, rawBase);
1387
- if (!canonical) {
1388
- errors.push(`Unsupported base required option "${rawBase}" for command "${command}" on type "${typeDefinition.name}"`);
1366
+ if (canonical) {
1367
+ state.required.add(canonical);
1389
1368
  continue;
1390
1369
  }
1391
- required.add(canonical);
1370
+ state.errors.push(`Unsupported base required option "${rawBase}" for command "${command}" on type "${typeDefinition.name}"`);
1371
+ }
1372
+ }
1373
+ function applyBooleanPolicySet(target, option, enabled) {
1374
+ if (enabled) {
1375
+ target.add(option);
1376
+ return;
1377
+ }
1378
+ target.delete(option);
1379
+ }
1380
+ function applyCommandOptionPolicy(state, typeDefinition, command, policy) {
1381
+ const canonical = canonicalizeCommandOptionKey(command, policy.option);
1382
+ if (!canonical) {
1383
+ state.errors.push(`Unsupported command_option_policies option "${policy.option}" for command "${command}" on type "${typeDefinition.name}"`);
1384
+ return;
1385
+ }
1386
+ if (policy.required !== void 0) {
1387
+ applyBooleanPolicySet(state.required, canonical, policy.required);
1392
1388
  }
1389
+ if (policy.visible !== void 0) {
1390
+ applyBooleanPolicySet(state.hidden, canonical, !policy.visible);
1391
+ }
1392
+ if (policy.enabled !== void 0) {
1393
+ applyBooleanPolicySet(state.disabled, canonical, !policy.enabled);
1394
+ }
1395
+ }
1396
+ function applyCommandOptionPolicies(state, typeDefinition, command) {
1393
1397
  for (const policy of typeDefinition.command_option_policies) {
1394
- if (policy.command !== command) {
1395
- continue;
1396
- }
1397
- const canonical = canonicalizeCommandOptionKey(command, policy.option);
1398
- if (!canonical) {
1399
- errors.push(`Unsupported command_option_policies option "${policy.option}" for command "${command}" on type "${typeDefinition.name}"`);
1400
- continue;
1401
- }
1402
- if (policy.required !== void 0) {
1403
- if (policy.required) {
1404
- required.add(canonical);
1405
- } else {
1406
- required.delete(canonical);
1407
- }
1408
- }
1409
- if (policy.visible !== void 0) {
1410
- if (policy.visible) {
1411
- hidden.delete(canonical);
1412
- } else {
1413
- hidden.add(canonical);
1414
- }
1415
- }
1416
- if (policy.enabled !== void 0) {
1417
- if (policy.enabled) {
1418
- disabled.delete(canonical);
1419
- } else {
1420
- disabled.add(canonical);
1421
- }
1398
+ if (policy.command === command) {
1399
+ applyCommandOptionPolicy(state, typeDefinition, command, policy);
1422
1400
  }
1423
1401
  }
1424
- for (const option of required) {
1425
- if (disabled.has(option)) {
1426
- errors.push(`Option "${option}" cannot be both required and disabled for command "${command}" on type "${typeDefinition.name}"`);
1402
+ }
1403
+ function appendRequiredDisabledPolicyErrors(state, typeDefinition, command) {
1404
+ for (const option of state.required) {
1405
+ if (state.disabled.has(option)) {
1406
+ state.errors.push(`Option "${option}" cannot be both required and disabled for command "${command}" on type "${typeDefinition.name}"`);
1427
1407
  }
1428
1408
  }
1409
+ }
1410
+ function resolveCommandOptionPolicyState(typeDefinition, command, baseRequiredOptions) {
1411
+ const errors = [];
1412
+ const required = /* @__PURE__ */ new Set();
1413
+ const hidden = /* @__PURE__ */ new Set();
1414
+ const disabled = /* @__PURE__ */ new Set();
1415
+ const state = { required, hidden, disabled, errors };
1416
+ applyBaseRequiredCommandOptions(state, typeDefinition, command, baseRequiredOptions);
1417
+ applyCommandOptionPolicies(state, typeDefinition, command);
1418
+ appendRequiredDisabledPolicyErrors(state, typeDefinition, command);
1429
1419
  return {
1430
1420
  required: [...required],
1431
1421
  hidden: [...hidden].sort((left, right) => left.localeCompare(right)),
@@ -1632,7 +1622,7 @@ function getTestRunResultPath(pmRoot, runId) {
1632
1622
  !(function() {
1633
1623
  try {
1634
1624
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1635
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d9690125-4747-50c0-850b-610233f6143d");
1625
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "f9d3b558-3b10-5f06-a2d1-7ceb16119586");
1636
1626
  } catch (e2) {
1637
1627
  }
1638
1628
  })();
@@ -1690,6 +1680,23 @@ function asRecordLoose(value) {
1690
1680
  }
1691
1681
  return value;
1692
1682
  }
1683
+ function asPropertyRecord(value) {
1684
+ if (typeof value !== "object" && typeof value !== "function" || value === null) {
1685
+ return null;
1686
+ }
1687
+ return value;
1688
+ }
1689
+ function resolveActivatablePropertyRecord(value) {
1690
+ const moduleRecord = asPropertyRecord(value);
1691
+ if (!moduleRecord) {
1692
+ return null;
1693
+ }
1694
+ if (typeof moduleRecord.activate === "function") {
1695
+ return moduleRecord;
1696
+ }
1697
+ const defaultExport = asPropertyRecord(moduleRecord.default);
1698
+ return typeof defaultExport?.activate === "function" ? defaultExport : null;
1699
+ }
1693
1700
 
1694
1701
  // dist/core/shared/levenshtein.js
1695
1702
  !(function() {
@@ -1743,6 +1750,139 @@ function levenshteinDistanceWithinLimit(left, right, limit) {
1743
1750
  return result <= limit ? result : null;
1744
1751
  }
1745
1752
 
1753
+ // dist/core/extensions/extension-capability-aliases.js
1754
+ !(function() {
1755
+ try {
1756
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1757
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5723464e-1f10-5a39-96a9-787c0052a036");
1758
+ } catch (e2) {
1759
+ }
1760
+ })();
1761
+ function normalizeNames(values) {
1762
+ return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((a, b) => a.localeCompare(b));
1763
+ }
1764
+ function isKnownExtensionCapability(value) {
1765
+ return KNOWN_EXTENSION_CAPABILITIES.includes(value);
1766
+ }
1767
+ function normalizeKnownExtensionCapability(value) {
1768
+ const normalized = value.trim().toLowerCase();
1769
+ return isKnownExtensionCapability(normalized) ? normalized : null;
1770
+ }
1771
+ function collectUnknownExtensionCapabilities(capabilities) {
1772
+ return capabilities.filter((capability) => !isKnownExtensionCapability(capability));
1773
+ }
1774
+ function resolveLegacyExtensionCapabilityAlias(capability) {
1775
+ const normalized = capability.trim().toLowerCase();
1776
+ if (normalized.length === 0) {
1777
+ return null;
1778
+ }
1779
+ return EXTENSION_CAPABILITY_LEGACY_ALIASES[normalized] ?? null;
1780
+ }
1781
+ function normalizeManifestCapabilities(rawCapabilities) {
1782
+ const normalizedCapabilities = normalizeNames([...rawCapabilities].map((value) => value.toLowerCase()));
1783
+ const remappedCapabilities = [];
1784
+ const legacyAliases = [];
1785
+ for (const capability of normalizedCapabilities) {
1786
+ const legacyAliasTarget = resolveLegacyExtensionCapabilityAlias(capability);
1787
+ if (legacyAliasTarget) {
1788
+ remappedCapabilities.push(legacyAliasTarget);
1789
+ legacyAliases.push({
1790
+ alias: capability,
1791
+ target: legacyAliasTarget
1792
+ });
1793
+ continue;
1794
+ }
1795
+ remappedCapabilities.push(capability);
1796
+ }
1797
+ const dedupedLegacyAliases = [...new Map(legacyAliases.map((entry) => [`${entry.alias}>${entry.target}`, entry])).values()].sort((left, right) => left.alias.localeCompare(right.alias));
1798
+ return {
1799
+ capabilities: normalizeNames(remappedCapabilities),
1800
+ legacy_aliases: dedupedLegacyAliases
1801
+ };
1802
+ }
1803
+ function suggestKnownExtensionCapability(capability) {
1804
+ const normalized = capability.trim().toLowerCase();
1805
+ if (normalized.length === 0) {
1806
+ return null;
1807
+ }
1808
+ const legacyAlias = resolveLegacyExtensionCapabilityAlias(normalized);
1809
+ if (legacyAlias) {
1810
+ return legacyAlias;
1811
+ }
1812
+ const maxDistance = Math.max(1, Math.floor(normalized.length * 0.34));
1813
+ let bestMatch = null;
1814
+ let bestDistance = Number.POSITIVE_INFINITY;
1815
+ for (const candidate of KNOWN_EXTENSION_CAPABILITIES) {
1816
+ const distance = levenshteinDistanceWithinLimit(normalized, candidate, maxDistance);
1817
+ if (distance !== null && distance < bestDistance) {
1818
+ bestDistance = distance;
1819
+ bestMatch = candidate;
1820
+ }
1821
+ }
1822
+ return bestMatch;
1823
+ }
1824
+ function formatUnknownExtensionCapabilityWarning(layer, name, capability) {
1825
+ const allowed = KNOWN_EXTENSION_CAPABILITIES.join(",");
1826
+ const suggested = suggestKnownExtensionCapability(capability) ?? "none";
1827
+ return `extension_capability_unknown:${layer}:${name}:${capability}:allowed=${allowed}:suggested=${suggested}`;
1828
+ }
1829
+ function formatLegacyExtensionCapabilityAliasWarning(layer, name, aliases) {
1830
+ const aliasesToken = aliases.map((entry) => `${entry.alias}>${entry.target}`).join(",");
1831
+ return `extension_capability_legacy_alias:${layer}:${name}:aliases=${aliasesToken}`;
1832
+ }
1833
+ function parseUnknownExtensionCapabilityWarning(warning) {
1834
+ const match = /^extension_capability_unknown:(global|project):([^:]+):([^:]+):allowed=([^:]+):suggested=([^:]+)$/.exec(warning.trim());
1835
+ if (!match) {
1836
+ return null;
1837
+ }
1838
+ const [, layerRaw, name, capability, allowedRaw, suggestedRaw] = match;
1839
+ const layer = layerRaw;
1840
+ const allowed_capabilities = allowedRaw.split(",").map((value) => value.trim()).filter((value) => value.length > 0);
1841
+ const legacyAlias = resolveLegacyExtensionCapabilityAlias(capability);
1842
+ const suggestedFromWarning = suggestedRaw === "none" ? void 0 : suggestedRaw;
1843
+ const suggested_capability = suggestedFromWarning ?? legacyAlias ?? void 0;
1844
+ const suggestion_source = suggested_capability ? legacyAlias === suggested_capability ? "legacy_alias" : "nearest_match" : void 0;
1845
+ return {
1846
+ layer,
1847
+ name,
1848
+ capability,
1849
+ allowed_capabilities,
1850
+ capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
1851
+ suggested_capability,
1852
+ suggestion_source,
1853
+ legacy_alias_target: legacyAlias ?? void 0
1854
+ };
1855
+ }
1856
+ function parseLegacyExtensionCapabilityAliasWarning(warning) {
1857
+ const match = /^extension_capability_legacy_alias:(global|project):([^:]+):aliases=(.+)$/.exec(warning.trim());
1858
+ if (!match) {
1859
+ return [];
1860
+ }
1861
+ const [, layerRaw, name, aliasesRaw] = match;
1862
+ const layer = layerRaw;
1863
+ const allowedCapabilities = [...KNOWN_EXTENSION_CAPABILITIES];
1864
+ const parsed = [];
1865
+ for (const token of aliasesRaw.split(",")) {
1866
+ const [rawAlias, rawTarget] = token.split(">");
1867
+ const alias = rawAlias?.trim();
1868
+ const target = rawTarget?.trim().toLowerCase();
1869
+ if (!alias || !target || !isKnownExtensionCapability(target)) {
1870
+ continue;
1871
+ }
1872
+ parsed.push({
1873
+ layer,
1874
+ name,
1875
+ capability: alias,
1876
+ allowed_capabilities: allowedCapabilities,
1877
+ capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
1878
+ suggested_capability: target,
1879
+ suggestion_source: "legacy_alias",
1880
+ legacy_alias_target: target
1881
+ });
1882
+ }
1883
+ return parsed;
1884
+ }
1885
+
1746
1886
  // dist/core/extensions/extension-registries.js
1747
1887
  !(function() {
1748
1888
  try {
@@ -2416,177 +2556,44 @@ function evaluatePmMaxVersionBound(required, currentVersion, exceededMode) {
2416
2556
  return { kind: "pm_max_version", status: "ok", allowed: true, required: declared, current: currentVersion };
2417
2557
  }
2418
2558
 
2419
- // dist/core/extensions/extension-capability-aliases.js
2559
+ // dist/core/extensions/extension-policy.js
2420
2560
  !(function() {
2421
2561
  try {
2422
2562
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2423
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5723464e-1f10-5a39-96a9-787c0052a036");
2563
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbc43b74-6872-52c3-859a-64fe84c02b5b");
2424
2564
  } catch (e2) {
2425
2565
  }
2426
2566
  })();
2427
- function normalizeNames(values) {
2428
- return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((a, b) => a.localeCompare(b));
2567
+ function normalizePolicyName(value) {
2568
+ if (typeof value !== "string") {
2569
+ return "";
2570
+ }
2571
+ return value.trim().toLowerCase();
2429
2572
  }
2430
- function isKnownExtensionCapability(value) {
2431
- return KNOWN_EXTENSION_CAPABILITIES.includes(value);
2573
+ function normalizePolicyStringSet(values) {
2574
+ return new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0));
2432
2575
  }
2433
- function normalizeKnownExtensionCapability(value) {
2576
+ function normalizePolicySurfaceToken(value) {
2434
2577
  const normalized = value.trim().toLowerCase();
2435
- return isKnownExtensionCapability(normalized) ? normalized : null;
2436
- }
2437
- function collectUnknownExtensionCapabilities(capabilities) {
2438
- return capabilities.filter((capability) => !isKnownExtensionCapability(capability));
2439
- }
2440
- function resolveLegacyExtensionCapabilityAlias(capability) {
2441
- const normalized = capability.trim().toLowerCase();
2442
2578
  if (normalized.length === 0) {
2443
- return null;
2579
+ return "";
2444
2580
  }
2445
- return EXTENSION_CAPABILITY_LEGACY_ALIASES[normalized] ?? null;
2446
- }
2447
- function normalizeManifestCapabilities(rawCapabilities) {
2448
- const normalizedCapabilities = normalizeNames([...rawCapabilities].map((value) => value.toLowerCase()));
2449
- const remappedCapabilities = [];
2450
- const legacyAliases = [];
2451
- for (const capability of normalizedCapabilities) {
2452
- const legacyAliasTarget = resolveLegacyExtensionCapabilityAlias(capability);
2453
- if (legacyAliasTarget) {
2454
- remappedCapabilities.push(legacyAliasTarget);
2455
- legacyAliases.push({
2456
- alias: capability,
2457
- target: legacyAliasTarget
2458
- });
2459
- continue;
2460
- }
2461
- remappedCapabilities.push(capability);
2581
+ const segments = normalized.split(/[.:/]/).map((segment) => segment.replace(/[\s_-]+/g, "")).filter((segment) => segment.length > 0);
2582
+ if (segments.length === 0) {
2583
+ return "";
2462
2584
  }
2463
- const dedupedLegacyAliases = [...new Map(legacyAliases.map((entry) => [`${entry.alias}>${entry.target}`, entry])).values()].sort((left, right) => left.alias.localeCompare(right.alias));
2464
- return {
2465
- capabilities: normalizeNames(remappedCapabilities),
2466
- legacy_aliases: dedupedLegacyAliases
2467
- };
2585
+ if (segments.length === 1) {
2586
+ return segments[0];
2587
+ }
2588
+ return `${segments[0]}.${segments.slice(1).join("")}`;
2468
2589
  }
2469
- function suggestKnownExtensionCapability(capability) {
2470
- const normalized = capability.trim().toLowerCase();
2471
- if (normalized.length === 0) {
2472
- return null;
2473
- }
2474
- const legacyAlias = resolveLegacyExtensionCapabilityAlias(normalized);
2475
- if (legacyAlias) {
2476
- return legacyAlias;
2477
- }
2478
- const maxDistance = Math.max(1, Math.floor(normalized.length * 0.34));
2479
- let bestMatch = null;
2480
- let bestDistance = Number.POSITIVE_INFINITY;
2481
- for (const candidate of KNOWN_EXTENSION_CAPABILITIES) {
2482
- const distance = levenshteinDistanceWithinLimit(normalized, candidate, maxDistance);
2483
- if (distance !== null && distance < bestDistance) {
2484
- bestDistance = distance;
2485
- bestMatch = candidate;
2486
- }
2487
- }
2488
- return bestMatch;
2489
- }
2490
- function formatUnknownExtensionCapabilityWarning(layer, name, capability) {
2491
- const allowed = KNOWN_EXTENSION_CAPABILITIES.join(",");
2492
- const suggested = suggestKnownExtensionCapability(capability) ?? "none";
2493
- return `extension_capability_unknown:${layer}:${name}:${capability}:allowed=${allowed}:suggested=${suggested}`;
2494
- }
2495
- function formatLegacyExtensionCapabilityAliasWarning(layer, name, aliases) {
2496
- const aliasesToken = aliases.map((entry) => `${entry.alias}>${entry.target}`).join(",");
2497
- return `extension_capability_legacy_alias:${layer}:${name}:aliases=${aliasesToken}`;
2498
- }
2499
- function parseUnknownExtensionCapabilityWarning(warning) {
2500
- const match = /^extension_capability_unknown:(global|project):([^:]+):([^:]+):allowed=([^:]+):suggested=([^:]+)$/.exec(warning.trim());
2501
- if (!match) {
2502
- return null;
2503
- }
2504
- const [, layerRaw, name, capability, allowedRaw, suggestedRaw] = match;
2505
- const layer = layerRaw;
2506
- const allowed_capabilities = allowedRaw.split(",").map((value) => value.trim()).filter((value) => value.length > 0);
2507
- const legacyAlias = resolveLegacyExtensionCapabilityAlias(capability);
2508
- const suggestedFromWarning = suggestedRaw === "none" ? void 0 : suggestedRaw;
2509
- const suggested_capability = suggestedFromWarning ?? legacyAlias ?? void 0;
2510
- const suggestion_source = suggested_capability ? legacyAlias === suggested_capability ? "legacy_alias" : "nearest_match" : void 0;
2511
- return {
2512
- layer,
2513
- name,
2514
- capability,
2515
- allowed_capabilities,
2516
- capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
2517
- suggested_capability,
2518
- suggestion_source,
2519
- legacy_alias_target: legacyAlias ?? void 0
2520
- };
2521
- }
2522
- function parseLegacyExtensionCapabilityAliasWarning(warning) {
2523
- const match = /^extension_capability_legacy_alias:(global|project):([^:]+):aliases=(.+)$/.exec(warning.trim());
2524
- if (!match) {
2525
- return [];
2526
- }
2527
- const [, layerRaw, name, aliasesRaw] = match;
2528
- const layer = layerRaw;
2529
- const allowedCapabilities = [...KNOWN_EXTENSION_CAPABILITIES];
2530
- const parsed = [];
2531
- for (const token of aliasesRaw.split(",")) {
2532
- const [rawAlias, rawTarget] = token.split(">");
2533
- const alias = rawAlias?.trim();
2534
- const target = rawTarget?.trim().toLowerCase();
2535
- if (!alias || !target || !isKnownExtensionCapability(target)) {
2536
- continue;
2537
- }
2538
- parsed.push({
2539
- layer,
2540
- name,
2541
- capability: alias,
2542
- allowed_capabilities: allowedCapabilities,
2543
- capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
2544
- suggested_capability: target,
2545
- suggestion_source: "legacy_alias",
2546
- legacy_alias_target: target
2547
- });
2548
- }
2549
- return parsed;
2550
- }
2551
-
2552
- // dist/core/extensions/extension-policy.js
2553
- !(function() {
2554
- try {
2555
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2556
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbc43b74-6872-52c3-859a-64fe84c02b5b");
2557
- } catch (e2) {
2558
- }
2559
- })();
2560
- function normalizePolicyName(value) {
2561
- if (typeof value !== "string") {
2562
- return "";
2563
- }
2564
- return value.trim().toLowerCase();
2565
- }
2566
- function normalizePolicyStringSet(values) {
2567
- return new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0));
2568
- }
2569
- function normalizePolicySurfaceToken(value) {
2570
- const normalized = value.trim().toLowerCase();
2571
- if (normalized.length === 0) {
2572
- return "";
2573
- }
2574
- const segments = normalized.split(/[.:/]/).map((segment) => segment.replace(/[\s_-]+/g, "")).filter((segment) => segment.length > 0);
2575
- if (segments.length === 0) {
2576
- return "";
2577
- }
2578
- if (segments.length === 1) {
2579
- return segments[0];
2580
- }
2581
- return `${segments[0]}.${segments.slice(1).join("")}`;
2582
- }
2583
- function normalizePolicySurfaceSet(values) {
2584
- return new Set((values ?? []).map((value) => normalizePolicySurfaceToken(value)).filter((value) => value.length > 0));
2585
- }
2586
- function normalizePolicyMode(value) {
2587
- const normalized = normalizePolicyName(value);
2588
- if (KNOWN_EXTENSION_POLICY_MODES.includes(normalized)) {
2589
- return normalized;
2590
+ function normalizePolicySurfaceSet(values) {
2591
+ return new Set((values ?? []).map((value) => normalizePolicySurfaceToken(value)).filter((value) => value.length > 0));
2592
+ }
2593
+ function normalizePolicyMode(value) {
2594
+ const normalized = normalizePolicyName(value);
2595
+ if (KNOWN_EXTENSION_POLICY_MODES.includes(normalized)) {
2596
+ return normalized;
2590
2597
  }
2591
2598
  return "off";
2592
2599
  }
@@ -3023,7 +3030,7 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
3023
3030
  !(function() {
3024
3031
  try {
3025
3032
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
3026
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "c04aa899-5cba-5907-be3e-4db7c63b7f13");
3033
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "07458218-1762-56b2-932e-adfacc4fa916");
3027
3034
  } catch (e2) {
3028
3035
  }
3029
3036
  })();
@@ -3398,14 +3405,14 @@ function buildEffectiveExtensions(globalCandidates, projectCandidates) {
3398
3405
  }
3399
3406
  return effective;
3400
3407
  }
3401
- async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMaxVersionExceededMode2) {
3408
+ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMaxVersionExceededMode) {
3402
3409
  const diagnostics = [];
3403
3410
  const warnings = [];
3404
3411
  const candidates = [];
3405
3412
  const directories = await listExtensionDirectories(extensionsRoot);
3406
3413
  const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);
3407
3414
  for (const directory of directories) {
3408
- const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2);
3415
+ const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode);
3409
3416
  diagnostics.push(scanned.diagnostic);
3410
3417
  warnings.push(...scanned.warnings);
3411
3418
  if (scanned.candidate) {
@@ -3453,13 +3460,13 @@ function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory,
3453
3460
  }
3454
3461
  return extensionWarnings;
3455
3462
  }
3456
- async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
3463
+ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode) {
3457
3464
  const extensionDir = path5.join(extensionsRoot, directory);
3458
3465
  const manifestPath = path5.join(extensionDir, "manifest.json");
3459
3466
  if (!await pathExists(manifestPath)) {
3460
3467
  return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
3461
3468
  }
3462
- let manifest = null;
3469
+ let manifest;
3463
3470
  try {
3464
3471
  const parsed = JSON.parse(await fs3.readFile(manifestPath, "utf8"));
3465
3472
  manifest = parseManifest(parsed);
@@ -3475,7 +3482,7 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
3475
3482
  const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
3476
3483
  const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
3477
3484
  const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
3478
- const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
3485
+ const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);
3479
3486
  const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
3480
3487
  const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
3481
3488
  const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
@@ -3670,7 +3677,8 @@ async function loadExtensions(options) {
3670
3677
  failed
3671
3678
  };
3672
3679
  }
3673
- for (const extension of discovery.effective) {
3680
+ const extensionsToLoad = typeof options.extensionFilter === "function" ? discovery.effective.filter(options.extensionFilter) : discovery.effective;
3681
+ for (const extension of extensionsToLoad) {
3674
3682
  try {
3675
3683
  const importHref = await resolveExtensionImportHref(extension, options);
3676
3684
  const module = await import(importHref);
@@ -3695,6 +3703,8 @@ async function loadExtensions(options) {
3695
3703
  failed
3696
3704
  };
3697
3705
  }
3706
+ var DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5e3;
3707
+ var MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2147483647;
3698
3708
  function toActivatableExtension(source) {
3699
3709
  const activate = source.activate;
3700
3710
  const activatable = {
@@ -3707,18 +3717,78 @@ function toActivatableExtension(source) {
3707
3717
  return activatable;
3708
3718
  }
3709
3719
  function resolveActivatableExtension(module) {
3710
- const moduleRecord = asRecordLoose(module);
3711
- if (!moduleRecord) {
3712
- return null;
3720
+ const activatableRecord = resolveActivatablePropertyRecord(module);
3721
+ return activatableRecord ? toActivatableExtension(activatableRecord) : null;
3722
+ }
3723
+ async function deactivateExtensions(loadResult, activationResult, options = {}) {
3724
+ const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);
3725
+ const failedActivationKeys = new Set((activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`));
3726
+ const targets = [];
3727
+ for (const extension of loadResult.loaded) {
3728
+ if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {
3729
+ continue;
3730
+ }
3731
+ const activatable = resolveActivatableExtension(extension.module);
3732
+ if (!activatable || typeof activatable.deactivate !== "function") {
3733
+ continue;
3734
+ }
3735
+ targets.push({ extension, deactivate: activatable.deactivate });
3713
3736
  }
3714
- if (typeof moduleRecord.activate === "function") {
3715
- return toActivatableExtension(moduleRecord);
3737
+ const outcomes = await Promise.all(targets.map(async ({ extension, deactivate }) => {
3738
+ try {
3739
+ await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);
3740
+ return { ok: true };
3741
+ } catch (error) {
3742
+ return { ok: false, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };
3743
+ }
3744
+ }));
3745
+ const warnings = [];
3746
+ const failed = [];
3747
+ let deactivated = 0;
3748
+ for (const outcome of outcomes) {
3749
+ if (outcome.ok) {
3750
+ deactivated += 1;
3751
+ continue;
3752
+ }
3753
+ warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);
3754
+ failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });
3755
+ }
3756
+ return { deactivated, warnings, failed };
3757
+ }
3758
+ function normalizeExtensionDeactivateTimeout(rawTimeout) {
3759
+ if (typeof rawTimeout !== "number" || rawTimeout < 0) {
3760
+ return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;
3761
+ }
3762
+ if (rawTimeout === 0 || rawTimeout === Infinity) {
3763
+ return 0;
3716
3764
  }
3717
- const defaultExport = asRecordLoose(moduleRecord.default);
3718
- if (defaultExport && typeof defaultExport.activate === "function") {
3719
- return toActivatableExtension(defaultExport);
3765
+ if (!Number.isFinite(rawTimeout)) {
3766
+ return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;
3767
+ }
3768
+ return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));
3769
+ }
3770
+ async function runExtensionDeactivateWithTimeout(deactivate, timeoutMs) {
3771
+ if (timeoutMs === 0) {
3772
+ await deactivate();
3773
+ return;
3774
+ }
3775
+ let timeoutHandle;
3776
+ try {
3777
+ const deactivatePromise = Promise.resolve().then(() => deactivate());
3778
+ deactivatePromise.catch(() => {
3779
+ });
3780
+ await Promise.race([
3781
+ deactivatePromise,
3782
+ new Promise((_, reject) => {
3783
+ timeoutHandle = setTimeout(() => {
3784
+ reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));
3785
+ }, timeoutMs);
3786
+ timeoutHandle.unref?.();
3787
+ })
3788
+ ]);
3789
+ } finally {
3790
+ clearTimeout(timeoutHandle);
3720
3791
  }
3721
- return null;
3722
3792
  }
3723
3793
  function isOutputRendererFormat(value) {
3724
3794
  return value === "toon" || value === "json";
@@ -4876,10 +4946,21 @@ async function activateExtensions(loadResult) {
4876
4946
  !(function() {
4877
4947
  try {
4878
4948
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
4879
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "7cc05bac-f673-59a1-9d51-64361cf5a939");
4949
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4e149e81-498e-561d-8c32-c3f3aec2e2d2");
4880
4950
  } catch (e2) {
4881
4951
  }
4882
4952
  })();
4953
+ var EXTENSION_CAPABILITY_REGISTRATION_SURFACES = {
4954
+ commands: ["registerCommand", "command override", "command handler"],
4955
+ renderers: ["registerRenderer"],
4956
+ hooks: ["hooks.beforeCommand", "hooks.afterCommand", "hooks.onWrite", "hooks.onRead", "hooks.onIndex"],
4957
+ schema: ["registerFlags", "registerItemFields", "registerItemTypes", "registerMigration", "registerProfile"],
4958
+ importers: ["registerImporter", "registerExporter"],
4959
+ search: ["registerSearchProvider", "registerVectorStoreAdapter"],
4960
+ parser: ["registerParser"],
4961
+ preflight: ["registerPreflight"],
4962
+ services: ["registerService"]
4963
+ };
4883
4964
  var USAGE_KEY_SEPARATOR = ":";
4884
4965
  function usageKey(layer, name) {
4885
4966
  return `${layer}${USAGE_KEY_SEPARATOR}${normalizeExtensionName(name)}`;
@@ -4942,10 +5023,16 @@ function attributeCapabilityUsage(activation) {
4942
5023
  }
4943
5024
  function collectUsedExtensionCapabilities(activation, options = {}) {
4944
5025
  const usage = attributeCapabilityUsage(activation);
4945
- const filter = options.extensionName !== void 0 ? normalizeExtensionName(options.extensionName) : null;
5026
+ const filters = /* @__PURE__ */ new Set();
5027
+ if (options.extensionName !== void 0) {
5028
+ filters.add(normalizeExtensionName(options.extensionName));
5029
+ }
5030
+ for (const name of options.extensionNames ?? []) {
5031
+ filters.add(normalizeExtensionName(name));
5032
+ }
4946
5033
  const used = /* @__PURE__ */ new Set();
4947
5034
  for (const [key, capabilities] of usage) {
4948
- if (filter !== null && usageKeyName(key) !== filter) {
5035
+ if (filters.size > 0 && !filters.has(usageKeyName(key))) {
4949
5036
  continue;
4950
5037
  }
4951
5038
  for (const capability of capabilities) {
@@ -4970,347 +5057,99 @@ function reconcileExtensionCapabilityUsage(loaded, activation) {
4970
5057
  return reconciliations;
4971
5058
  }
4972
5059
 
4973
- // dist/core/extensions/index.js
5060
+ // dist/core/schema/runtime-schema.js
5061
+ import path6 from "node:path";
4974
5062
  !(function() {
4975
5063
  try {
4976
5064
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
4977
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "abe62b94-a55a-5cdf-8f1a-34360ddc4c25");
5065
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "917b7841-d25b-594e-9c0e-dbecbf1a3fbe");
4978
5066
  } catch (e2) {
4979
5067
  }
4980
5068
  })();
4981
- var activeExtensionHooks = null;
4982
- var activeExtensionCommands = null;
4983
- var activeExtensionParsers = null;
4984
- var activeExtensionPreflight = null;
4985
- var activeExtensionServices = null;
4986
- var activeExtensionRenderers = null;
4987
- var activeExtensionRegistrations = null;
4988
- var activeCommandContext = null;
4989
- var activeCommandResult = void 0;
4990
- var activeAfterCommandAffectedItems = [];
4991
- var AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS = /* @__PURE__ */ new Set([
4992
- "body",
4993
- "comments",
4994
- "dependencies",
4995
- "docs",
4996
- "events",
4997
- "files",
4998
- "learnings",
4999
- "notes",
5000
- "reminders",
5001
- "test_runs",
5002
- "tests"
5003
- ]);
5004
- function setActiveExtensionHooks(hooks) {
5005
- activeExtensionHooks = hooks;
5006
- }
5007
- function setActiveExtensionCommands(commands) {
5008
- activeExtensionCommands = commands;
5009
- }
5010
- function setActiveExtensionParsers(parsers) {
5011
- activeExtensionParsers = parsers;
5012
- }
5013
- function setActiveExtensionPreflight(preflight) {
5014
- activeExtensionPreflight = preflight;
5015
- }
5016
- function setActiveExtensionServices(services) {
5017
- activeExtensionServices = services;
5018
- }
5019
- function setActiveExtensionRenderers(renderers) {
5020
- activeExtensionRenderers = renderers;
5069
+ var DEFAULT_RUNTIME_SCHEMA_FILE_PATHS = Object.freeze({
5070
+ types: "schema/types.json",
5071
+ statuses: "schema/statuses.json",
5072
+ fields: "schema/fields.json",
5073
+ workflows: "schema/workflows.json"
5074
+ });
5075
+ var DEFAULT_RUNTIME_WORKFLOW = DEFAULT_WORKFLOW_DEFINITION;
5076
+ var DEFAULT_RUNTIME_STATUS_DEFINITIONS = DEFAULT_STATUS_DEFINITIONS;
5077
+ var DEFAULT_RUNTIME_FIELD_COMMANDS = ["create", "update"];
5078
+ var RUNTIME_STATUS_ROLE_SET = new Set(RUNTIME_STATUS_ROLE_VALUES);
5079
+ var RUNTIME_FIELD_TYPE_SET = new Set(RUNTIME_FIELD_TYPE_VALUES);
5080
+ var RUNTIME_FIELD_COMMAND_SET = new Set(RUNTIME_FIELD_COMMAND_VALUES);
5081
+ var RUNTIME_UNKNOWN_FIELD_POLICY_SET = new Set(RUNTIME_UNKNOWN_FIELD_POLICY_VALUES);
5082
+ function normalizeStringList(values) {
5083
+ const candidates = Array.isArray(values) ? values : [];
5084
+ return [...new Set(candidates.map((value) => typeof value === "string" ? value.trim() : "").filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
5021
5085
  }
5022
- function setActiveExtensionRegistrations(registrations) {
5023
- activeExtensionRegistrations = registrations;
5086
+ function normalizeStatusToken(value) {
5087
+ return typeof value === "string" ? value.trim().toLowerCase().replaceAll(/[\s-]+/g, "_") : "";
5024
5088
  }
5025
- function getActiveExtensionRegistrations() {
5026
- return activeExtensionRegistrations;
5089
+ function normalizeStatusId(value) {
5090
+ if (typeof value !== "string" || value.length === 0) {
5091
+ return void 0;
5092
+ }
5093
+ const normalized = normalizeStatusToken(value);
5094
+ return normalized.length > 0 ? normalized : void 0;
5027
5095
  }
5028
- function setActiveCommandContext(context) {
5029
- activeCommandContext = context;
5096
+ function stripFlagPrefix(value) {
5097
+ return value.startsWith("--") ? value.slice(2) : value;
5030
5098
  }
5031
- function setActiveCommandResult(result) {
5032
- activeCommandResult = result;
5099
+ function normalizeCliToken(value) {
5100
+ return typeof value === "string" ? stripFlagPrefix(value.trim().toLowerCase().replaceAll(/[\s_]+/g, "-")) : "";
5033
5101
  }
5034
- function getActiveCommandResult() {
5035
- return activeCommandResult;
5102
+ function keyToDefaultCliFlag(value) {
5103
+ return value.replaceAll("_", "-");
5036
5104
  }
5037
- function recordAfterCommandAffectedItem(item) {
5038
- if (!item || (activeExtensionHooks?.afterCommand?.length ?? 0) === 0) {
5039
- return;
5105
+ function toCamelCase(input) {
5106
+ const segments = input.replaceAll(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((segment) => segment.length > 0).map((segment) => segment.toLowerCase());
5107
+ if (segments.length === 0) {
5108
+ return input;
5040
5109
  }
5041
- activeAfterCommandAffectedItems.push(item);
5110
+ const [first, ...rest] = segments;
5111
+ return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join("")}`;
5042
5112
  }
5043
- function projectAfterCommandItemSnapshot(metadata, changedFields) {
5044
- if (!metadata || !metadata.id) {
5045
- return {};
5113
+ function normalizeRuntimeStatusDefinition(definition, fallbackOrder) {
5114
+ const id = normalizeStatusId(definition.id);
5115
+ if (!id) {
5116
+ return null;
5046
5117
  }
5047
- const snapshot = {
5048
- id: metadata.id,
5049
- type: metadata.type,
5050
- status: metadata.status
5118
+ const aliases = normalizeStringList(definition.aliases).map((value) => normalizeStatusToken(value)).filter((value) => value !== id);
5119
+ const roles = normalizeStringList(definition.roles).filter((value) => RUNTIME_STATUS_ROLE_SET.has(value));
5120
+ const description = definition.description?.trim();
5121
+ const order = typeof definition.order === "number" && Number.isFinite(definition.order) ? definition.order : fallbackOrder;
5122
+ return {
5123
+ id,
5124
+ aliases,
5125
+ roles,
5126
+ description: description && description.length > 0 ? description : void 0,
5127
+ order
5051
5128
  };
5052
- if (!Array.isArray(changedFields)) {
5053
- return snapshot;
5054
- }
5055
- const source = metadata;
5056
- for (const field of changedFields) {
5057
- if (typeof field !== "string") {
5058
- continue;
5059
- }
5060
- const actualField = field.startsWith("unset:") ? field.slice("unset:".length) : field;
5061
- if (actualField === "id" || actualField === "type" || actualField === "status" || AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS.has(actualField)) {
5062
- continue;
5063
- }
5064
- if (Object.hasOwn(source, actualField) && source[actualField] !== void 0) {
5065
- snapshot[actualField] = source[actualField];
5066
- }
5067
- }
5068
- return snapshot;
5069
5129
  }
5070
- function consumeAfterCommandAffectedItems() {
5071
- if (activeAfterCommandAffectedItems.length === 0) {
5072
- return void 0;
5130
+ function normalizeRuntimeWorkflow(workflow) {
5131
+ return {
5132
+ draft_status: normalizeStatusId(workflow?.draft_status),
5133
+ open_status: normalizeStatusId(workflow?.open_status),
5134
+ in_progress_status: normalizeStatusId(workflow?.in_progress_status),
5135
+ blocked_status: normalizeStatusId(workflow?.blocked_status),
5136
+ close_status: normalizeStatusId(workflow?.close_status),
5137
+ canceled_status: normalizeStatusId(workflow?.canceled_status)
5138
+ };
5139
+ }
5140
+ function appendTypeWorkflowPair(record, pair) {
5141
+ if (!Array.isArray(pair) || pair.length !== 2) {
5142
+ return;
5073
5143
  }
5074
- const affected = activeAfterCommandAffectedItems;
5075
- activeAfterCommandAffectedItems = [];
5076
- return affected;
5077
- }
5078
- function clearActiveExtensionHooks() {
5079
- activeExtensionHooks = null;
5080
- activeExtensionCommands = null;
5081
- activeExtensionParsers = null;
5082
- activeExtensionPreflight = null;
5083
- activeExtensionServices = null;
5084
- activeExtensionRenderers = null;
5085
- activeExtensionRegistrations = null;
5086
- activeCommandContext = null;
5087
- activeCommandResult = void 0;
5088
- activeAfterCommandAffectedItems = [];
5089
- }
5090
- async function runActiveOnWriteHooks(context) {
5091
- if (!activeExtensionHooks) {
5092
- return [];
5144
+ const from = normalizeStatusToken(pair[0]);
5145
+ const to = normalizeStatusToken(pair[1]);
5146
+ if (from.length === 0 || to.length === 0) {
5147
+ return;
5093
5148
  }
5094
- return runOnWriteHooks(activeExtensionHooks, context);
5095
- }
5096
- async function runActiveOnReadHooks(context) {
5097
- if (!activeExtensionHooks) {
5098
- return [];
5149
+ if (record.pairs.some((candidate) => candidate[0] === from && candidate[1] === to)) {
5150
+ return;
5099
5151
  }
5100
- return runOnReadHooks(activeExtensionHooks, context);
5101
- }
5102
- function hasActiveOnReadHooks() {
5103
- return (activeExtensionHooks?.onRead?.length ?? 0) > 0;
5104
- }
5105
- async function runActiveOnIndexHooks(context) {
5106
- if (!activeExtensionHooks) {
5107
- return [];
5108
- }
5109
- return runOnIndexHooks(activeExtensionHooks, context);
5110
- }
5111
- function runActiveCommandOverride(result) {
5112
- if (!activeExtensionCommands || !activeCommandContext) {
5113
- return {
5114
- overridden: false,
5115
- result,
5116
- warnings: []
5117
- };
5118
- }
5119
- return runCommandOverride(activeExtensionCommands, {
5120
- command: activeCommandContext.command,
5121
- args: [...activeCommandContext.args],
5122
- options: activeCommandContext.options ? { ...activeCommandContext.options } : {},
5123
- global: activeCommandContext.global ? { ...activeCommandContext.global } : void 0,
5124
- pm_root: activeCommandContext.pm_root,
5125
- result
5126
- });
5127
- }
5128
- async function runActiveCommandHandler(context) {
5129
- if (!activeExtensionCommands) {
5130
- return {
5131
- handled: false,
5132
- result: null,
5133
- warnings: []
5134
- };
5135
- }
5136
- return runCommandHandler(activeExtensionCommands, context);
5137
- }
5138
- async function runActiveParserOverride(context) {
5139
- if (!activeExtensionParsers) {
5140
- return {
5141
- overridden: false,
5142
- context: {
5143
- command: context.command,
5144
- args: [...context.args],
5145
- options: { ...context.options },
5146
- global: { ...context.global },
5147
- pm_root: context.pm_root
5148
- },
5149
- warnings: []
5150
- };
5151
- }
5152
- return runParserOverride(activeExtensionParsers, context);
5153
- }
5154
- async function runActivePreflightOverride(context) {
5155
- if (!activeExtensionPreflight) {
5156
- return {
5157
- overridden: false,
5158
- context: {
5159
- command: context.command,
5160
- args: [...context.args],
5161
- options: { ...context.options },
5162
- global: { ...context.global },
5163
- pm_root: context.pm_root
5164
- },
5165
- decision: { ...context.decision },
5166
- warnings: []
5167
- };
5168
- }
5169
- return runPreflightOverride(activeExtensionPreflight, context);
5170
- }
5171
- function runActiveRendererOverride(format, result) {
5172
- if (!activeExtensionRenderers) {
5173
- return {
5174
- overridden: false,
5175
- rendered: null,
5176
- warnings: []
5177
- };
5178
- }
5179
- return runRendererOverride(activeExtensionRenderers, {
5180
- format,
5181
- command: activeCommandContext?.command,
5182
- args: activeCommandContext ? [...activeCommandContext.args] : [],
5183
- options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},
5184
- global: activeCommandContext?.global ? { ...activeCommandContext.global } : void 0,
5185
- pm_root: activeCommandContext?.pm_root,
5186
- result
5187
- });
5188
- }
5189
- function buildServiceContext(service, payload) {
5190
- return {
5191
- service,
5192
- command: activeCommandContext?.command,
5193
- args: activeCommandContext ? [...activeCommandContext.args] : [],
5194
- options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},
5195
- global: activeCommandContext?.global ? { ...activeCommandContext.global } : void 0,
5196
- pm_root: activeCommandContext?.pm_root,
5197
- payload
5198
- };
5199
- }
5200
- async function runActiveServiceOverride(service, payload) {
5201
- if (!activeExtensionServices) {
5202
- return {
5203
- handled: false,
5204
- result: payload,
5205
- warnings: []
5206
- };
5207
- }
5208
- return runServiceOverride(activeExtensionServices, buildServiceContext(service, payload));
5209
- }
5210
- function runActiveServiceOverrideSync(service, payload) {
5211
- if (!activeExtensionServices) {
5212
- return {
5213
- handled: false,
5214
- result: payload,
5215
- warnings: []
5216
- };
5217
- }
5218
- return runServiceOverrideSync(activeExtensionServices, buildServiceContext(service, payload));
5219
- }
5220
-
5221
- // dist/core/schema/runtime-schema.js
5222
- import path6 from "node:path";
5223
- !(function() {
5224
- try {
5225
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5226
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "917b7841-d25b-594e-9c0e-dbecbf1a3fbe");
5227
- } catch (e2) {
5228
- }
5229
- })();
5230
- var DEFAULT_RUNTIME_SCHEMA_FILE_PATHS = Object.freeze({
5231
- types: "schema/types.json",
5232
- statuses: "schema/statuses.json",
5233
- fields: "schema/fields.json",
5234
- workflows: "schema/workflows.json"
5235
- });
5236
- var DEFAULT_RUNTIME_WORKFLOW = DEFAULT_WORKFLOW_DEFINITION;
5237
- var DEFAULT_RUNTIME_STATUS_DEFINITIONS = DEFAULT_STATUS_DEFINITIONS;
5238
- var DEFAULT_RUNTIME_FIELD_COMMANDS = ["create", "update"];
5239
- var RUNTIME_STATUS_ROLE_SET = new Set(RUNTIME_STATUS_ROLE_VALUES);
5240
- var RUNTIME_FIELD_TYPE_SET = new Set(RUNTIME_FIELD_TYPE_VALUES);
5241
- var RUNTIME_FIELD_COMMAND_SET = new Set(RUNTIME_FIELD_COMMAND_VALUES);
5242
- var RUNTIME_UNKNOWN_FIELD_POLICY_SET = new Set(RUNTIME_UNKNOWN_FIELD_POLICY_VALUES);
5243
- function normalizeStringList(values) {
5244
- const candidates = Array.isArray(values) ? values : [];
5245
- return [...new Set(candidates.map((value) => typeof value === "string" ? value.trim() : "").filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
5246
- }
5247
- function normalizeStatusToken(value) {
5248
- return typeof value === "string" ? value.trim().toLowerCase().replaceAll(/[\s-]+/g, "_") : "";
5249
- }
5250
- function normalizeStatusId(value) {
5251
- if (typeof value !== "string" || value.length === 0) {
5252
- return void 0;
5253
- }
5254
- const normalized = normalizeStatusToken(value);
5255
- return normalized.length > 0 ? normalized : void 0;
5256
- }
5257
- function stripFlagPrefix(value) {
5258
- return value.startsWith("--") ? value.slice(2) : value;
5259
- }
5260
- function normalizeCliToken(value) {
5261
- return typeof value === "string" ? stripFlagPrefix(value.trim().toLowerCase().replaceAll(/[\s_]+/g, "-")) : "";
5262
- }
5263
- function keyToDefaultCliFlag(value) {
5264
- return value.replaceAll("_", "-");
5265
- }
5266
- function toCamelCase(input) {
5267
- const segments = input.replaceAll(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((segment) => segment.length > 0).map((segment) => segment.toLowerCase());
5268
- if (segments.length === 0) {
5269
- return input;
5270
- }
5271
- const [first, ...rest] = segments;
5272
- return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join("")}`;
5273
- }
5274
- function normalizeRuntimeStatusDefinition(definition, fallbackOrder) {
5275
- const id = normalizeStatusId(definition.id);
5276
- if (!id) {
5277
- return null;
5278
- }
5279
- const aliases = normalizeStringList(definition.aliases).map((value) => normalizeStatusToken(value)).filter((value) => value !== id);
5280
- const roles = normalizeStringList(definition.roles).filter((value) => RUNTIME_STATUS_ROLE_SET.has(value));
5281
- const description = definition.description?.trim();
5282
- const order = typeof definition.order === "number" && Number.isFinite(definition.order) ? definition.order : fallbackOrder;
5283
- return {
5284
- id,
5285
- aliases,
5286
- roles,
5287
- description: description && description.length > 0 ? description : void 0,
5288
- order
5289
- };
5290
- }
5291
- function normalizeRuntimeWorkflow(workflow) {
5292
- return {
5293
- draft_status: normalizeStatusId(workflow?.draft_status),
5294
- open_status: normalizeStatusId(workflow?.open_status),
5295
- in_progress_status: normalizeStatusId(workflow?.in_progress_status),
5296
- blocked_status: normalizeStatusId(workflow?.blocked_status),
5297
- close_status: normalizeStatusId(workflow?.close_status),
5298
- canceled_status: normalizeStatusId(workflow?.canceled_status)
5299
- };
5300
- }
5301
- function appendTypeWorkflowPair(record, pair) {
5302
- if (!Array.isArray(pair) || pair.length !== 2) {
5303
- return;
5304
- }
5305
- const from = normalizeStatusToken(pair[0]);
5306
- const to = normalizeStatusToken(pair[1]);
5307
- if (from.length === 0 || to.length === 0) {
5308
- return;
5309
- }
5310
- if (record.pairs.some((candidate) => candidate[0] === from && candidate[1] === to)) {
5311
- return;
5312
- }
5313
- record.pairs.push([from, to]);
5152
+ record.pairs.push([from, to]);
5314
5153
  }
5315
5154
  function normalizedTypeWorkflowEntry(entry) {
5316
5155
  const rawType = typeof entry?.type === "string" ? entry.type.trim() : "";
@@ -5803,1664 +5642,6 @@ function statusIsTerminal(status, registry) {
5803
5642
  return registry.terminal_statuses.has(normalized);
5804
5643
  }
5805
5644
 
5806
- // dist/core/shared/errors.js
5807
- !(function() {
5808
- try {
5809
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5810
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "45a4107c-5ef6-5d5c-9798-6df69f0edec3");
5811
- } catch (e2) {
5812
- }
5813
- })();
5814
- var PmCliError = class extends Error {
5815
- exitCode;
5816
- context;
5817
- constructor(message, exitCode, context = {}) {
5818
- super(message);
5819
- this.name = "PmCliError";
5820
- this.exitCode = exitCode;
5821
- this.context = context;
5822
- }
5823
- };
5824
-
5825
- // dist/core/shared/serialization.js
5826
- import crypto2 from "node:crypto";
5827
- !(function() {
5828
- try {
5829
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5830
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "54cbe570-d9f5-5515-8d0c-0fce0e06fe03");
5831
- } catch (e2) {
5832
- }
5833
- })();
5834
- function sortScalarValue(value) {
5835
- if (value === null)
5836
- return null;
5837
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
5838
- return value;
5839
- }
5840
- if (typeof value === "bigint") {
5841
- return value.toString();
5842
- }
5843
- if (value === void 0) {
5844
- return "undefined";
5845
- }
5846
- if (typeof value === "symbol") {
5847
- return value.toString();
5848
- }
5849
- if (typeof value === "function") {
5850
- return `[function:${value.name || "anonymous"}]`;
5851
- }
5852
- return void 0;
5853
- }
5854
- function sortPlainObjectKeys(value) {
5855
- const sortedKeys = Object.keys(value).sort();
5856
- const result = {};
5857
- for (const key of sortedKeys) {
5858
- const nested = value[key];
5859
- if (nested === void 0) {
5860
- continue;
5861
- }
5862
- result[key] = sortObjectKeys(nested);
5863
- }
5864
- return result;
5865
- }
5866
- function sortObjectKeys(value) {
5867
- const scalarValue = sortScalarValue(value);
5868
- if (scalarValue !== void 0) {
5869
- return scalarValue;
5870
- }
5871
- if (Array.isArray(value)) {
5872
- return value.map((entry) => sortObjectKeys(entry));
5873
- }
5874
- if (value instanceof Date) {
5875
- return value.toISOString();
5876
- }
5877
- const maybeJson = value;
5878
- if (typeof maybeJson.toJSON === "function") {
5879
- const normalized = maybeJson.toJSON();
5880
- if (normalized !== value) {
5881
- return sortObjectKeys(normalized);
5882
- }
5883
- }
5884
- return sortPlainObjectKeys(value);
5885
- }
5886
- function stableStringify(value) {
5887
- return JSON.stringify(sortObjectKeys(value));
5888
- }
5889
- function hasUnmatchedEquivalent(leftValue, rightValues, matchedIndexes, equals) {
5890
- for (let index = 0; index < rightValues.length; index += 1) {
5891
- if (matchedIndexes.has(index)) {
5892
- continue;
5893
- }
5894
- if (equals(leftValue, rightValues[index])) {
5895
- matchedIndexes.add(index);
5896
- return true;
5897
- }
5898
- }
5899
- return false;
5900
- }
5901
- function compareRegExpValues(left, right) {
5902
- if (!(left instanceof RegExp || right instanceof RegExp)) {
5903
- return void 0;
5904
- }
5905
- return left instanceof RegExp && right instanceof RegExp && left.toString() === right.toString();
5906
- }
5907
- function compareDateValues(left, right) {
5908
- if (!(left instanceof Date || right instanceof Date)) {
5909
- return void 0;
5910
- }
5911
- return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();
5912
- }
5913
- function compareSetValues(left, right) {
5914
- if (!(left instanceof Set || right instanceof Set)) {
5915
- return void 0;
5916
- }
5917
- if (!(left instanceof Set && right instanceof Set) || left.size !== right.size) {
5918
- return false;
5919
- }
5920
- const rightValues = [...right];
5921
- const matched = /* @__PURE__ */ new Set();
5922
- for (const leftValue of left) {
5923
- if (!hasUnmatchedEquivalent(leftValue, rightValues, matched, stableValueEquals)) {
5924
- return false;
5925
- }
5926
- }
5927
- return true;
5928
- }
5929
- function compareMapValues(left, right) {
5930
- if (!(left instanceof Map || right instanceof Map)) {
5931
- return void 0;
5932
- }
5933
- if (!(left instanceof Map && right instanceof Map) || left.size !== right.size) {
5934
- return false;
5935
- }
5936
- const rightEntries = [...right.entries()];
5937
- const matched = /* @__PURE__ */ new Set();
5938
- for (const [leftKey, leftValue] of left.entries()) {
5939
- const leftEntry = [leftKey, leftValue];
5940
- if (!hasUnmatchedEquivalent(leftEntry, rightEntries, matched, ([candidateKey, candidateValue], [rightKey, rightValue]) => stableValueEquals(candidateKey, rightKey) && stableValueEquals(candidateValue, rightValue))) {
5941
- return false;
5942
- }
5943
- }
5944
- return true;
5945
- }
5946
- function compareArrayValues(left, right) {
5947
- if (!(Array.isArray(left) || Array.isArray(right))) {
5948
- return void 0;
5949
- }
5950
- if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) {
5951
- return false;
5952
- }
5953
- return left.every((value, index) => stableValueEquals(value, right[index]));
5954
- }
5955
- function comparePlainObjectValues(left, right) {
5956
- const leftKeys = Object.keys(left).sort((a, b) => a.localeCompare(b));
5957
- const rightKeys = Object.keys(right).sort((a, b) => a.localeCompare(b));
5958
- if (leftKeys.length !== rightKeys.length) {
5959
- return false;
5960
- }
5961
- for (let index = 0; index < leftKeys.length; index += 1) {
5962
- const leftKey = leftKeys[index];
5963
- if (leftKey !== rightKeys[index]) {
5964
- return false;
5965
- }
5966
- if (!stableValueEquals(left[leftKey], right[leftKey])) {
5967
- return false;
5968
- }
5969
- }
5970
- return true;
5971
- }
5972
- var SPECIALIZED_STABLE_VALUE_COMPARISONS = [
5973
- compareRegExpValues,
5974
- compareDateValues,
5975
- compareSetValues,
5976
- compareMapValues,
5977
- compareArrayValues
5978
- ];
5979
- function stableValueEquals(left, right) {
5980
- if (Object.is(left, right)) {
5981
- return true;
5982
- }
5983
- if (left === null || right === null || typeof left !== "object" || typeof right !== "object") {
5984
- return false;
5985
- }
5986
- for (const compare of SPECIALIZED_STABLE_VALUE_COMPARISONS) {
5987
- const result = compare(left, right);
5988
- if (result !== void 0) {
5989
- return result;
5990
- }
5991
- }
5992
- return comparePlainObjectValues(left, right);
5993
- }
5994
- function sha256Hex(value) {
5995
- return crypto2.createHash("sha256").update(value, "utf8").digest("hex");
5996
- }
5997
- function orderObject(value, keyOrder) {
5998
- const ordered = {};
5999
- for (const key of keyOrder) {
6000
- const entry = value[key];
6001
- if (entry !== void 0) {
6002
- ordered[key] = entry;
6003
- }
6004
- }
6005
- const unknownKeys = Object.keys(value).filter((key) => !keyOrder.includes(key)).sort((a, b) => a.localeCompare(b));
6006
- for (const key of unknownKeys) {
6007
- const entry = value[key];
6008
- if (entry !== void 0) {
6009
- ordered[key] = entry;
6010
- }
6011
- }
6012
- return ordered;
6013
- }
6014
-
6015
- // dist/core/store/settings-validator.js
6016
- !(function() {
6017
- try {
6018
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6019
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "31c04c84-ab93-5423-8425-f01cdbc48a9f");
6020
- } catch (e2) {
6021
- }
6022
- })();
6023
- var FAIL = { ok: false };
6024
- var vString = (input) => typeof input === "string" ? { ok: true, value: input } : FAIL;
6025
- var vBoolean = (input) => typeof input === "boolean" ? { ok: true, value: input } : FAIL;
6026
- function vNumber(options = {}) {
6027
- return (input) => {
6028
- if (typeof input !== "number" || !Number.isFinite(input)) {
6029
- return FAIL;
6030
- }
6031
- if (options.int && (!Number.isInteger(input) || !Number.isSafeInteger(input))) {
6032
- return FAIL;
6033
- }
6034
- if (options.positive && input <= 0) {
6035
- return FAIL;
6036
- }
6037
- return { ok: true, value: input };
6038
- };
6039
- }
6040
- function vLiteral(...allowed) {
6041
- return (input) => typeof input === "string" && allowed.includes(input) ? { ok: true, value: input } : FAIL;
6042
- }
6043
- function vArray(item) {
6044
- return (input) => {
6045
- if (!Array.isArray(input)) {
6046
- return FAIL;
6047
- }
6048
- const value = [];
6049
- for (const element of input) {
6050
- const result = item(element);
6051
- if (!result.ok) {
6052
- return FAIL;
6053
- }
6054
- value.push(result.value);
6055
- }
6056
- return { ok: true, value };
6057
- };
6058
- }
6059
- function vOptional(inner) {
6060
- return (input) => input === void 0 ? { ok: true, value: void 0 } : inner(input);
6061
- }
6062
- function vRecordOf(valueCheck) {
6063
- return (input) => {
6064
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
6065
- return FAIL;
6066
- }
6067
- const value = {};
6068
- for (const [key, raw] of Object.entries(input)) {
6069
- const result = valueCheck(raw);
6070
- if (!result.ok) {
6071
- return FAIL;
6072
- }
6073
- value[key] = result.value;
6074
- }
6075
- return { ok: true, value };
6076
- };
6077
- }
6078
- function vObject(shape) {
6079
- return (input) => {
6080
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
6081
- return FAIL;
6082
- }
6083
- const record = input;
6084
- const value = {};
6085
- for (const [key, check] of Object.entries(shape)) {
6086
- const result = check(record[key]);
6087
- if (!result.ok) {
6088
- return FAIL;
6089
- }
6090
- if (result.value !== void 0) {
6091
- value[key] = result.value;
6092
- }
6093
- }
6094
- return { ok: true, value };
6095
- };
6096
- }
6097
- var itemTypeOption = vObject({
6098
- key: vString,
6099
- values: vArray(vString),
6100
- required: vOptional(vBoolean),
6101
- aliases: vOptional(vArray(vString)),
6102
- description: vOptional(vString)
6103
- });
6104
- var itemTypeCommandOptionPolicy = vObject({
6105
- command: vLiteral("create", "update"),
6106
- option: vString,
6107
- required: vOptional(vBoolean),
6108
- visible: vOptional(vBoolean),
6109
- enabled: vOptional(vBoolean)
6110
- });
6111
- var itemTypeDefinition = vObject({
6112
- name: vString,
6113
- description: vOptional(vString),
6114
- // Per-type create-time default status (config-driven); preserved so inline
6115
- // settings.item_types.definitions behave identically to schema/types.json.
6116
- default_status: vOptional(vString),
6117
- folder: vOptional(vString),
6118
- aliases: vOptional(vArray(vString)),
6119
- required_create_fields: vOptional(vArray(vString)),
6120
- required_create_repeatables: vOptional(vArray(vString)),
6121
- options: vOptional(vArray(itemTypeOption)),
6122
- command_option_policies: vOptional(vArray(itemTypeCommandOptionPolicy))
6123
- });
6124
- var runtimeStatusDefinition = vObject({
6125
- id: vString,
6126
- aliases: vOptional(vArray(vString)),
6127
- roles: vOptional(vArray(vLiteral(...RUNTIME_STATUS_ROLE_VALUES))),
6128
- description: vOptional(vString),
6129
- order: vOptional(vNumber())
6130
- });
6131
- var runtimeFieldDefinition = vObject({
6132
- key: vString,
6133
- metadata_key: vOptional(vString),
6134
- front_matter_key: vOptional(vString),
6135
- cli_flag: vOptional(vString),
6136
- cli_aliases: vOptional(vArray(vString)),
6137
- description: vOptional(vString),
6138
- type: vOptional(vLiteral(...RUNTIME_FIELD_TYPE_VALUES)),
6139
- commands: vOptional(vArray(vLiteral(...RUNTIME_FIELD_COMMAND_VALUES))),
6140
- repeatable: vOptional(vBoolean),
6141
- required: vOptional(vBoolean),
6142
- required_on_create: vOptional(vBoolean),
6143
- required_types: vOptional(vArray(vString)),
6144
- allow_unset: vOptional(vBoolean)
6145
- });
6146
- var statusTransitionPair = (input) => {
6147
- if (!Array.isArray(input) || input.length !== 2) {
6148
- return FAIL;
6149
- }
6150
- const [from, to] = input;
6151
- if (typeof from !== "string" || typeof to !== "string") {
6152
- return FAIL;
6153
- }
6154
- return { ok: true, value: [from, to] };
6155
- };
6156
- var typeWorkflowDefinition = vObject({
6157
- type: vString,
6158
- allowed_transitions: vArray(statusTransitionPair)
6159
- });
6160
- var runtimeSchemaSettings = vOptional(vObject({
6161
- version: vOptional(vNumber({ int: true })),
6162
- files: vOptional(vObject({
6163
- types: vOptional(vString),
6164
- statuses: vOptional(vString),
6165
- fields: vOptional(vString),
6166
- workflows: vOptional(vString)
6167
- })),
6168
- statuses: vOptional(vArray(runtimeStatusDefinition)),
6169
- fields: vOptional(vArray(runtimeFieldDefinition)),
6170
- workflow: vOptional(vObject({
6171
- draft_status: vOptional(vString),
6172
- open_status: vOptional(vString),
6173
- in_progress_status: vOptional(vString),
6174
- blocked_status: vOptional(vString),
6175
- close_status: vOptional(vString),
6176
- canceled_status: vOptional(vString)
6177
- })),
6178
- type_workflows: vOptional(vArray(typeWorkflowDefinition)),
6179
- unknown_field_policy: vOptional(vLiteral(...RUNTIME_UNKNOWN_FIELD_POLICY_VALUES))
6180
- }));
6181
- var governanceSettings = vOptional(vObject({
6182
- preset: vOptional(vLiteral(...GOVERNANCE_PRESET_VALUES)),
6183
- ownership_enforcement: vOptional(vLiteral("none", "warn", "strict")),
6184
- create_mode_default: vOptional(vLiteral("progressive", "strict")),
6185
- close_validation_default: vOptional(vLiteral("off", "warn", "strict")),
6186
- require_close_reason: vOptional(vBoolean),
6187
- parent_reference: vOptional(vLiteral("warn", "strict_error")),
6188
- metadata_profile: vOptional(vLiteral("core", "strict", "custom")),
6189
- force_required_for_stale_lock: vOptional(vBoolean),
6190
- create_default_type: vOptional(vString),
6191
- workflow_enforcement: vOptional(vLiteral("off", "warn", "strict"))
6192
- }));
6193
- var extensionPolicyOverride = vObject({
6194
- name: vString,
6195
- disabled: vOptional(vBoolean),
6196
- require_trusted: vOptional(vBoolean),
6197
- require_provenance: vOptional(vBoolean),
6198
- sandbox_profile: vOptional(vLiteral("none", "restricted", "strict")),
6199
- allowed_capabilities: vOptional(vArray(vString)),
6200
- blocked_capabilities: vOptional(vArray(vString)),
6201
- allowed_surfaces: vOptional(vArray(vString)),
6202
- blocked_surfaces: vOptional(vArray(vString)),
6203
- allowed_commands: vOptional(vArray(vString)),
6204
- blocked_commands: vOptional(vArray(vString)),
6205
- allowed_actions: vOptional(vArray(vString)),
6206
- blocked_actions: vOptional(vArray(vString)),
6207
- allowed_services: vOptional(vArray(vString)),
6208
- blocked_services: vOptional(vArray(vString))
6209
- });
6210
- var pmMaxVersionExceededModeLiteral = vLiteral("block", "warn");
6211
- var pmMaxVersionExceededMode = (input) => typeof input === "string" ? pmMaxVersionExceededModeLiteral(input) : vObject({
6212
- global: vOptional(pmMaxVersionExceededModeLiteral),
6213
- project: vOptional(pmMaxVersionExceededModeLiteral)
6214
- })(input);
6215
- var extensionPolicy = vOptional(vObject({
6216
- mode: vOptional(vLiteral("off", "warn", "enforce")),
6217
- trust_mode: vOptional(vLiteral("off", "warn", "enforce")),
6218
- pm_max_version_exceeded_mode: vOptional(pmMaxVersionExceededMode),
6219
- require_provenance: vOptional(vBoolean),
6220
- trusted_extensions: vOptional(vArray(vString)),
6221
- default_sandbox_profile: vOptional(vLiteral("none", "restricted", "strict")),
6222
- allowed_extensions: vOptional(vArray(vString)),
6223
- blocked_extensions: vOptional(vArray(vString)),
6224
- allowed_capabilities: vOptional(vArray(vString)),
6225
- blocked_capabilities: vOptional(vArray(vString)),
6226
- allowed_surfaces: vOptional(vArray(vString)),
6227
- blocked_surfaces: vOptional(vArray(vString)),
6228
- allowed_commands: vOptional(vArray(vString)),
6229
- blocked_commands: vOptional(vArray(vString)),
6230
- allowed_actions: vOptional(vArray(vString)),
6231
- blocked_actions: vOptional(vArray(vString)),
6232
- allowed_services: vOptional(vArray(vString)),
6233
- blocked_services: vOptional(vArray(vString)),
6234
- extension_overrides: vOptional(vArray(extensionPolicyOverride))
6235
- }));
6236
- var settingsCheck = vObject({
6237
- version: vNumber({ int: true }),
6238
- id_prefix: vString,
6239
- author_default: vString,
6240
- item_format: vOptional(vLiteral("toon", "json_markdown")),
6241
- locks: vObject({ ttl_seconds: vNumber({ int: true }) }),
6242
- checkpoints: vOptional(vObject({ retention_days: vOptional(vNumber({ int: true, positive: true })) })),
6243
- output: vObject({ default_format: vLiteral("toon", "json") }),
6244
- history: vOptional(vObject({
6245
- missing_stream: vLiteral("auto_create", "strict_error"),
6246
- compact_policy: vOptional(vObject({
6247
- enabled: vOptional(vBoolean),
6248
- max_entries: vOptional(vNumber({ int: true, positive: true })),
6249
- trigger: vOptional(vLiteral("health_warn", "auto"))
6250
- }))
6251
- })),
6252
- validation: vOptional(vObject({
6253
- sprint_release_format: vLiteral("warn", "strict_error"),
6254
- parent_reference: vOptional(vLiteral("warn", "strict_error")),
6255
- metadata_profile: vOptional(vLiteral("core", "strict", "custom")),
6256
- metadata_required_fields: vOptional(vArray(vString)),
6257
- lifecycle_stale_blocker_reason_patterns: vOptional(vArray(vString)),
6258
- lifecycle_closure_like_blocked_reason_patterns: vOptional(vArray(vString)),
6259
- lifecycle_closure_like_resolution_patterns: vOptional(vArray(vString)),
6260
- lifecycle_closure_like_actual_result_patterns: vOptional(vArray(vString)),
6261
- estimate_defaults_by_type: vOptional(vRecordOf(vNumber({ int: true, positive: true })))
6262
- })),
6263
- governance: governanceSettings,
6264
- workflow: vOptional(vObject({ definition_of_done: vArray(vString) })),
6265
- testing: vOptional(vObject({ record_results_to_items: vBoolean })),
6266
- telemetry: vOptional(vObject({
6267
- enabled: vBoolean,
6268
- first_run_prompt_completed: vOptional(vBoolean),
6269
- capture_level: vOptional(vLiteral("minimal", "redacted", "max")),
6270
- endpoint: vOptional(vString),
6271
- installation_id: vOptional(vString),
6272
- retention_days: vOptional(vNumber({ int: true, positive: true }))
6273
- })),
6274
- agent_guidance: vOptional(vObject({
6275
- prompt_completed: vOptional(vBoolean),
6276
- declined: vOptional(vBoolean),
6277
- declined_at: vOptional(vString),
6278
- template_version: vOptional(vNumber({ int: true, positive: true })),
6279
- last_checked_files: vOptional(vArray(vString))
6280
- })),
6281
- item_types: vOptional(vObject({ definitions: vArray(itemTypeDefinition) })),
6282
- schema: runtimeSchemaSettings,
6283
- context: vOptional(vObject({
6284
- default_depth: vOptional(vLiteral("brief", "standard", "deep")),
6285
- activity_limit: vOptional(vNumber({ int: true, positive: true })),
6286
- stale_threshold_days: vOptional(vNumber({ int: true, positive: true })),
6287
- sections: vOptional(vObject({
6288
- hierarchy: vOptional(vBoolean),
6289
- activity: vOptional(vBoolean),
6290
- progress: vOptional(vBoolean),
6291
- recently_created: vOptional(vBoolean),
6292
- unparented: vOptional(vBoolean),
6293
- blockers: vOptional(vBoolean),
6294
- files: vOptional(vBoolean),
6295
- workload: vOptional(vBoolean),
6296
- staleness: vOptional(vBoolean),
6297
- tests: vOptional(vBoolean)
6298
- }))
6299
- })),
6300
- extensions: vObject({
6301
- enabled: vArray(vString),
6302
- disabled: vArray(vString),
6303
- policy: extensionPolicy
6304
- }),
6305
- search: vObject({
6306
- score_threshold: vNumber(),
6307
- hybrid_semantic_weight: vOptional(vNumber()),
6308
- max_results: vNumber({ int: true }),
6309
- embedding_model: vString,
6310
- embedding_corpus_max_characters: vOptional(vNumber()),
6311
- embedding_batch_size: vNumber({ int: true }),
6312
- embedding_timeout_ms: vOptional(vNumber({ int: true })),
6313
- scanner_max_batch_retries: vNumber({ int: true }),
6314
- provider: vOptional(vString),
6315
- corpus_fields: vOptional(vArray(vString)),
6316
- mutation_refresh_policy: vOptional(vLiteral("cache_only", "semantic_configured", "semantic_auto")),
6317
- query_expansion: vOptional(vObject({
6318
- enabled: vOptional(vBoolean),
6319
- provider: vOptional(vString)
6320
- })),
6321
- rerank: vOptional(vObject({
6322
- enabled: vOptional(vBoolean),
6323
- model: vOptional(vString),
6324
- top_k: vOptional(vNumber({ int: true, positive: true }))
6325
- })),
6326
- // pm-75k9: offline BM25 tuning. Unlike `search.tuning` (intentionally
6327
- // stripped for legacy zod parity), bm25 is validated so it persists across
6328
- // writeSettings round-trips — these knobs must survive to take effect.
6329
- bm25: vOptional(vObject({
6330
- k1: vOptional(vNumber()),
6331
- b: vOptional(vNumber())
6332
- }))
6333
- }),
6334
- providers: vObject({
6335
- openai: vObject({ base_url: vString, api_key: vString, model: vString }),
6336
- ollama: vObject({ base_url: vString, model: vString })
6337
- }),
6338
- vector_store: vObject({
6339
- adapter: vOptional(vString),
6340
- collection_name: vOptional(vString),
6341
- qdrant: vObject({ url: vString, api_key: vString }),
6342
- lancedb: vObject({ path: vString })
6343
- })
6344
- });
6345
- function validateSettings(raw) {
6346
- const result = settingsCheck(raw);
6347
- if (!result.ok) {
6348
- return { success: false };
6349
- }
6350
- return { success: true, data: result.value };
6351
- }
6352
-
6353
- // dist/core/validate/estimate-defaults.js
6354
- !(function() {
6355
- try {
6356
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6357
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "33f2ca4e-022c-5fc2-9938-a3fb389c1b93");
6358
- } catch (e2) {
6359
- }
6360
- })();
6361
- var DEFAULT_ESTIMATE_MINUTES_BY_TYPE = {
6362
- Epic: 2880,
6363
- Feature: 480,
6364
- Story: 480,
6365
- Milestone: 2880,
6366
- Task: 120,
6367
- Issue: 60,
6368
- Bug: 60,
6369
- Chore: 30,
6370
- Decision: 15,
6371
- Plan: 120
6372
- };
6373
- var FALLBACK_ESTIMATE_MINUTES = 120;
6374
- function isHonoredMinutes(value) {
6375
- return typeof value === "number" && Number.isFinite(value) && value > 0;
6376
- }
6377
- function toLowercasedLookup(source) {
6378
- const lookup = /* @__PURE__ */ new Map();
6379
- for (const [key, value] of Object.entries(source)) {
6380
- lookup.set(key.toLowerCase(), value);
6381
- }
6382
- return lookup;
6383
- }
6384
- var BUILTIN_LOWERCASED_LOOKUP = toLowercasedLookup(DEFAULT_ESTIMATE_MINUTES_BY_TYPE);
6385
- var OVERRIDE_LOOKUP_CACHE = /* @__PURE__ */ new WeakMap();
6386
- function lowercasedOverrideLookup(overrides) {
6387
- const cached = OVERRIDE_LOOKUP_CACHE.get(overrides);
6388
- if (cached) {
6389
- return cached;
6390
- }
6391
- const lookup = toLowercasedLookup(overrides);
6392
- OVERRIDE_LOOKUP_CACHE.set(overrides, lookup);
6393
- return lookup;
6394
- }
6395
- function resolveEstimateDefaultMinutes(type, overrides) {
6396
- const key = (type ?? "").trim().toLowerCase();
6397
- if (key.length === 0) {
6398
- return FALLBACK_ESTIMATE_MINUTES;
6399
- }
6400
- if (overrides) {
6401
- const overrideValue = lowercasedOverrideLookup(overrides).get(key);
6402
- if (isHonoredMinutes(overrideValue)) {
6403
- return Math.floor(overrideValue);
6404
- }
6405
- }
6406
- const builtinValue = BUILTIN_LOWERCASED_LOOKUP.get(key);
6407
- if (isHonoredMinutes(builtinValue)) {
6408
- return Math.floor(builtinValue);
6409
- }
6410
- return FALLBACK_ESTIMATE_MINUTES;
6411
- }
6412
- function normalizeEstimateDefaultOverrides(raw) {
6413
- const normalized = {};
6414
- if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
6415
- return normalized;
6416
- }
6417
- for (const [rawKey, rawValue] of Object.entries(raw)) {
6418
- const key = rawKey.trim();
6419
- if (key.length === 0 || !isHonoredMinutes(rawValue)) {
6420
- continue;
6421
- }
6422
- normalized[key] = Math.floor(rawValue);
6423
- }
6424
- return normalized;
6425
- }
6426
-
6427
- // dist/core/store/settings-read-cache.js
6428
- import { stat } from "node:fs/promises";
6429
- !(function() {
6430
- try {
6431
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6432
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "406f2d48-4969-5666-9e95-c71103f541c5");
6433
- } catch (e2) {
6434
- }
6435
- })();
6436
- var settingsReadCacheByRoot = /* @__PURE__ */ new Map();
6437
- function normalizeTrackedPaths(paths) {
6438
- return [...new Set(paths.map((pathValue) => pathValue.trim()).filter((pathValue) => pathValue.length > 0))].sort((left, right) => left.localeCompare(right));
6439
- }
6440
- async function readPathSignature(targetPath) {
6441
- try {
6442
- const targetStats = await stat(targetPath);
6443
- return {
6444
- path: targetPath,
6445
- mtime_ms: targetStats.mtimeMs,
6446
- size: targetStats.size
6447
- };
6448
- } catch {
6449
- return {
6450
- path: targetPath,
6451
- mtime_ms: null,
6452
- size: null
6453
- };
6454
- }
6455
- }
6456
- async function collectSettingsReadCacheSignatures(paths) {
6457
- const normalizedPaths = normalizeTrackedPaths(paths);
6458
- const signatures = await Promise.all(normalizedPaths.map((targetPath) => readPathSignature(targetPath)));
6459
- signatures.sort((left, right) => left.path.localeCompare(right.path));
6460
- return signatures;
6461
- }
6462
- function settingsReadCacheSignaturesEqual(left, right) {
6463
- if (left.length !== right.length) {
6464
- return false;
6465
- }
6466
- for (let index = 0; index < left.length; index += 1) {
6467
- const leftEntry = left[index];
6468
- const rightEntry = right[index];
6469
- if (leftEntry.path !== rightEntry.path || leftEntry.mtime_ms !== rightEntry.mtime_ms || leftEntry.size !== rightEntry.size) {
6470
- return false;
6471
- }
6472
- }
6473
- return true;
6474
- }
6475
- function getSettingsReadCacheEntry(pmRoot) {
6476
- return settingsReadCacheByRoot.get(pmRoot);
6477
- }
6478
- function setSettingsReadCacheEntry(pmRoot, entry) {
6479
- const normalizedTrackedPaths = normalizeTrackedPaths(entry.tracked_paths);
6480
- const normalizedSignatures = [...entry.signatures].map((signature) => ({
6481
- path: signature.path,
6482
- mtime_ms: signature.mtime_ms,
6483
- size: signature.size
6484
- })).sort((left, right) => left.path.localeCompare(right.path));
6485
- settingsReadCacheByRoot.set(pmRoot, {
6486
- tracked_paths: normalizedTrackedPaths,
6487
- signatures: normalizedSignatures,
6488
- value: entry.value
6489
- });
6490
- }
6491
- function clearSettingsReadCache(pmRoot) {
6492
- if (pmRoot) {
6493
- settingsReadCacheByRoot.delete(pmRoot);
6494
- return;
6495
- }
6496
- settingsReadCacheByRoot.clear();
6497
- }
6498
-
6499
- // dist/core/store/settings.js
6500
- !(function() {
6501
- try {
6502
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6503
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4232868d-1e9d-51a3-abbe-3d9a3d1acae1");
6504
- } catch (e2) {
6505
- }
6506
- })();
6507
- var SETTINGS_WRITE_OP = "settings:write";
6508
- var SETTINGS_PERSIST_SOURCE_SYMBOL = /* @__PURE__ */ Symbol("pm.settings.persist_source");
6509
- var MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH = 128;
6510
- function resolveGovernanceKnobsFromPreset(preset) {
6511
- return structuredClone(GOVERNANCE_PRESET_DEFAULTS[preset]);
6512
- }
6513
- function normalizeGovernancePreset(value) {
6514
- if (value === "minimal" || value === "default" || value === "strict" || value === "custom") {
6515
- return value;
6516
- }
6517
- return SETTINGS_DEFAULTS.governance.preset;
6518
- }
6519
- function withGovernanceExtras(base, governance) {
6520
- const createDefaultType = typeof governance.create_default_type === "string" ? governance.create_default_type.trim() : void 0;
6521
- if (createDefaultType && createDefaultType.length > 0) {
6522
- base.create_default_type = createDefaultType;
6523
- }
6524
- if (governance.workflow_enforcement === "off" || governance.workflow_enforcement === "warn" || governance.workflow_enforcement === "strict") {
6525
- base.workflow_enforcement = governance.workflow_enforcement;
6526
- }
6527
- if (governance.require_close_reason === false) {
6528
- base.require_close_reason = false;
6529
- }
6530
- return base;
6531
- }
6532
- function normalizeGovernanceForPersist(governance) {
6533
- if (governance.preset === "custom") {
6534
- return withGovernanceExtras({
6535
- preset: "custom",
6536
- ownership_enforcement: governance.ownership_enforcement,
6537
- create_mode_default: governance.create_mode_default,
6538
- close_validation_default: governance.close_validation_default,
6539
- parent_reference: governance.parent_reference,
6540
- metadata_profile: governance.metadata_profile,
6541
- force_required_for_stale_lock: governance.force_required_for_stale_lock
6542
- }, governance);
6543
- }
6544
- return withGovernanceExtras({
6545
- preset: governance.preset
6546
- }, governance);
6547
- }
6548
- function resolveGovernanceExtras(rawGovernance) {
6549
- const createDefaultType = typeof rawGovernance.create_default_type === "string" ? rawGovernance.create_default_type.trim() : void 0;
6550
- const extras = {};
6551
- if (createDefaultType && createDefaultType.length > 0) {
6552
- extras.create_default_type = createDefaultType;
6553
- }
6554
- if (rawGovernance.workflow_enforcement === "off" || rawGovernance.workflow_enforcement === "warn" || rawGovernance.workflow_enforcement === "strict") {
6555
- extras.workflow_enforcement = rawGovernance.workflow_enforcement;
6556
- }
6557
- if (typeof rawGovernance.require_close_reason === "boolean") {
6558
- extras.require_close_reason = rawGovernance.require_close_reason;
6559
- }
6560
- return extras;
6561
- }
6562
- function resolveGovernanceKnobs(settings) {
6563
- const rawGovernance = settings.governance ?? {};
6564
- const preset = normalizeGovernancePreset(rawGovernance.preset);
6565
- const extras = resolveGovernanceExtras(rawGovernance);
6566
- if (preset === "custom") {
6567
- const baseline2 = resolveGovernanceKnobsFromPreset("default");
6568
- const requireCloseReason2 = extras.require_close_reason ?? baseline2.require_close_reason;
6569
- return {
6570
- preset,
6571
- ownership_enforcement: rawGovernance.ownership_enforcement ?? baseline2.ownership_enforcement,
6572
- create_mode_default: rawGovernance.create_mode_default ?? baseline2.create_mode_default,
6573
- close_validation_default: rawGovernance.close_validation_default ?? baseline2.close_validation_default,
6574
- parent_reference: rawGovernance.parent_reference ?? baseline2.parent_reference,
6575
- metadata_profile: rawGovernance.metadata_profile ?? baseline2.metadata_profile,
6576
- force_required_for_stale_lock: rawGovernance.force_required_for_stale_lock ?? baseline2.force_required_for_stale_lock,
6577
- ...extras,
6578
- require_close_reason: requireCloseReason2
6579
- };
6580
- }
6581
- const baseline = resolveGovernanceKnobsFromPreset(preset);
6582
- const requireCloseReason = extras.require_close_reason ?? baseline.require_close_reason;
6583
- return {
6584
- preset,
6585
- ...baseline,
6586
- ...extras,
6587
- require_close_reason: requireCloseReason
6588
- };
6589
- }
6590
- function cloneDefaults() {
6591
- return structuredClone(SETTINGS_DEFAULTS);
6592
- }
6593
- function normalizeSearchMutationRefreshPolicy(value) {
6594
- if (value === "cache_only" || value === "semantic_configured" || value === "semantic_auto") {
6595
- return value;
6596
- }
6597
- return SETTINGS_DEFAULTS.search.mutation_refresh_policy;
6598
- }
6599
- function normalizeSearchQueryExpansionEnabled(value) {
6600
- if (typeof value === "boolean") {
6601
- return value;
6602
- }
6603
- return SETTINGS_DEFAULTS.search.query_expansion.enabled;
6604
- }
6605
- function normalizeSearchQueryExpansionProvider(value) {
6606
- if (typeof value !== "string") {
6607
- return SETTINGS_DEFAULTS.search.query_expansion.provider;
6608
- }
6609
- return value.trim();
6610
- }
6611
- function normalizeSearchRerankEnabled(value) {
6612
- if (typeof value === "boolean") {
6613
- return value;
6614
- }
6615
- return SETTINGS_DEFAULTS.search.rerank.enabled;
6616
- }
6617
- function normalizeSearchRerankModel(value) {
6618
- if (typeof value !== "string") {
6619
- return SETTINGS_DEFAULTS.search.rerank.model;
6620
- }
6621
- return value.trim();
6622
- }
6623
- function normalizeSearchRerankTopK(value) {
6624
- if (typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value > 0) {
6625
- return value;
6626
- }
6627
- return SETTINGS_DEFAULTS.search.rerank.top_k;
6628
- }
6629
- function normalizeVectorStoreCollectionName(value) {
6630
- if (typeof value !== "string") {
6631
- return SETTINGS_DEFAULTS.vector_store.collection_name;
6632
- }
6633
- const sanitized = value.trim().replaceAll(/[^a-zA-Z0-9_-]/g, "_");
6634
- const truncated = sanitized.slice(0, MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH);
6635
- return truncated.length > 0 ? truncated : SETTINGS_DEFAULTS.vector_store.collection_name;
6636
- }
6637
- function buildSettingsPersistSourceSnapshot(parsedSettings, runtimeSettings) {
6638
- const sourceSchema = parsedSettings.schema;
6639
- const sourceStatuses = Array.isArray(sourceSchema?.statuses) ? sourceSchema?.statuses : void 0;
6640
- const sourceFields = Array.isArray(sourceSchema?.fields) ? sourceSchema?.fields : void 0;
6641
- const sourceTypeWorkflows = Array.isArray(sourceSchema?.type_workflows) ? sourceSchema?.type_workflows : void 0;
6642
- return {
6643
- has_source_item_type_definitions: Array.isArray(parsedSettings.item_types?.definitions),
6644
- source_item_type_definitions: normalizeItemTypeDefinitions(parsedSettings.item_types?.definitions),
6645
- has_source_schema_statuses: sourceStatuses !== void 0,
6646
- source_schema_statuses: sourceStatuses ? structuredClone(sourceStatuses) : [],
6647
- has_source_schema_fields: sourceFields !== void 0,
6648
- source_schema_fields: sourceFields ? structuredClone(sourceFields) : [],
6649
- has_source_schema_type_workflows: sourceTypeWorkflows !== void 0,
6650
- source_schema_type_workflows: sourceTypeWorkflows ? structuredClone(sourceTypeWorkflows) : [],
6651
- runtime_item_type_definitions: normalizeItemTypeDefinitions(runtimeSettings.item_types?.definitions),
6652
- runtime_schema_statuses: structuredClone(runtimeSettings.schema.statuses),
6653
- runtime_schema_fields: structuredClone(runtimeSettings.schema.fields),
6654
- runtime_schema_type_workflows: structuredClone(runtimeSettings.schema.type_workflows ?? [])
6655
- };
6656
- }
6657
- function attachSettingsPersistSourceSnapshot(settings, source) {
6658
- Object.defineProperty(settings, SETTINGS_PERSIST_SOURCE_SYMBOL, {
6659
- value: source,
6660
- writable: true,
6661
- configurable: true,
6662
- enumerable: false
6663
- });
6664
- }
6665
- function getSettingsPersistSourceSnapshot(settings) {
6666
- const candidate = settings[SETTINGS_PERSIST_SOURCE_SYMBOL];
6667
- if (!candidate || typeof candidate !== "object") {
6668
- return void 0;
6669
- }
6670
- return candidate;
6671
- }
6672
- function cloneSettingsReadResult(result) {
6673
- const clonedSettings = structuredClone(result.settings);
6674
- const persistSource = getSettingsPersistSourceSnapshot(result.settings);
6675
- if (persistSource) {
6676
- attachSettingsPersistSourceSnapshot(clonedSettings, structuredClone(persistSource));
6677
- }
6678
- return {
6679
- settings: clonedSettings,
6680
- metadata: {
6681
- has_explicit_item_format: result.metadata.has_explicit_item_format
6682
- },
6683
- warnings: [...result.warnings]
6684
- };
6685
- }
6686
- function resolveSettingsReadTrackedPaths(pmRoot, schema, settingsPath) {
6687
- const normalizedSchema = normalizeRuntimeSchemaSettings(schema);
6688
- return [
6689
- settingsPath,
6690
- filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types),
6691
- filePathForSchemaSection(pmRoot, normalizedSchema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),
6692
- filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),
6693
- filePathForSchemaSection(pmRoot, normalizedSchema.files.workflows, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows)
6694
- ];
6695
- }
6696
- async function cacheSettingsReadResult(pmRoot, trackedPaths, result) {
6697
- const signatures = await collectSettingsReadCacheSignatures(trackedPaths);
6698
- setSettingsReadCacheEntry(pmRoot, {
6699
- tracked_paths: trackedPaths,
6700
- signatures,
6701
- value: cloneSettingsReadResult(result)
6702
- });
6703
- }
6704
- async function cacheSettingsReadResultSafe(pmRoot, trackedPaths, result) {
6705
- try {
6706
- await cacheSettingsReadResult(pmRoot, trackedPaths, result);
6707
- } catch {
6708
- clearSettingsReadCache(pmRoot);
6709
- }
6710
- }
6711
- function findSettingsReadCacheSignature(signatures, targetPath) {
6712
- return signatures.find((signature) => signature.path === targetPath);
6713
- }
6714
- function selectedSettingsReadCacheSignaturesEqual(before, after, targetPaths) {
6715
- for (const targetPath of targetPaths) {
6716
- const beforeSignature = findSettingsReadCacheSignature(before, targetPath);
6717
- const afterSignature = findSettingsReadCacheSignature(after, targetPath);
6718
- if (!beforeSignature || !afterSignature || !settingsReadCacheSignaturesEqual([beforeSignature], [afterSignature])) {
6719
- return false;
6720
- }
6721
- }
6722
- return true;
6723
- }
6724
- async function cacheSettingsReadResultIfStable(pmRoot, trackedPaths, result, stableSignatures, stablePaths) {
6725
- try {
6726
- const currentSignatures = await collectSettingsReadCacheSignatures(trackedPaths);
6727
- if (!selectedSettingsReadCacheSignaturesEqual(stableSignatures, currentSignatures, stablePaths)) {
6728
- clearSettingsReadCache(pmRoot);
6729
- return;
6730
- }
6731
- setSettingsReadCacheEntry(pmRoot, {
6732
- tracked_paths: trackedPaths,
6733
- signatures: currentSignatures,
6734
- value: cloneSettingsReadResult(result)
6735
- });
6736
- } catch {
6737
- clearSettingsReadCache(pmRoot);
6738
- }
6739
- }
6740
- function resolvePersistedFileBackedSchemaSections(settings, source) {
6741
- const normalizedSchema = normalizeRuntimeSchemaSettings(settings.schema);
6742
- const currentItemTypeDefinitions = normalizeItemTypeDefinitions(settings.item_types?.definitions);
6743
- if (!source) {
6744
- return {
6745
- item_type_definitions: currentItemTypeDefinitions,
6746
- schema_statuses: normalizedSchema.statuses,
6747
- schema_fields: normalizedSchema.fields,
6748
- schema_type_workflows: normalizedSchema.type_workflows
6749
- };
6750
- }
6751
- const currentTypeWorkflows = normalizedSchema.type_workflows ?? [];
6752
- const itemTypeDefinitionsUnchanged = stableValueEquals(currentItemTypeDefinitions, source.runtime_item_type_definitions);
6753
- const schemaStatusesUnchanged = stableValueEquals(normalizedSchema.statuses, source.runtime_schema_statuses);
6754
- const schemaFieldsUnchanged = stableValueEquals(normalizedSchema.fields, source.runtime_schema_fields);
6755
- const schemaTypeWorkflowsUnchanged = stableValueEquals(currentTypeWorkflows, source.runtime_schema_type_workflows);
6756
- return {
6757
- item_type_definitions: itemTypeDefinitionsUnchanged ? source.has_source_item_type_definitions ? normalizeItemTypeDefinitions(source.source_item_type_definitions) : [] : currentItemTypeDefinitions,
6758
- schema_statuses: schemaStatusesUnchanged ? source.has_source_schema_statuses ? structuredClone(source.source_schema_statuses) : [] : normalizedSchema.statuses,
6759
- schema_fields: schemaFieldsUnchanged ? source.has_source_schema_fields ? structuredClone(source.source_schema_fields) : [] : normalizedSchema.fields,
6760
- schema_type_workflows: schemaTypeWorkflowsUnchanged ? source.has_source_schema_type_workflows ? structuredClone(source.source_schema_type_workflows) : void 0 : normalizedSchema.type_workflows
6761
- };
6762
- }
6763
- function buildFallbackSettingsReadResult(warning) {
6764
- return {
6765
- settings: cloneDefaults(),
6766
- metadata: {
6767
- has_explicit_item_format: false
6768
- },
6769
- warnings: warning ? [warning] : []
6770
- };
6771
- }
6772
- function hasExplicitItemFormat(raw) {
6773
- if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
6774
- return false;
6775
- }
6776
- const itemFormat = raw.item_format;
6777
- return itemFormat === "toon" || itemFormat === "json_markdown";
6778
- }
6779
- function normalizeStringList2(values) {
6780
- return [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6781
- }
6782
- function normalizeAgentGuidanceSettings(value) {
6783
- const defaults = SETTINGS_DEFAULTS.agent_guidance;
6784
- const templateVersion = value?.template_version;
6785
- return {
6786
- prompt_completed: value?.prompt_completed === true,
6787
- declined: value?.declined === true,
6788
- declined_at: typeof value?.declined_at === "string" ? value.declined_at : defaults.declined_at,
6789
- template_version: typeof templateVersion === "number" && Number.isInteger(templateVersion) && templateVersion > 0 ? templateVersion : defaults.template_version,
6790
- last_checked_files: normalizeStringList2(value?.last_checked_files ?? defaults.last_checked_files)
6791
- };
6792
- }
6793
- function normalizeLowerStringList(values) {
6794
- return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6795
- }
6796
- function normalizeExtensionPolicyMode(value) {
6797
- if (value === "off" || value === "warn" || value === "enforce") {
6798
- return value;
6799
- }
6800
- return SETTINGS_DEFAULTS.extensions.policy.mode;
6801
- }
6802
- function normalizeExtensionTrustMode(value) {
6803
- if (value === "off" || value === "warn" || value === "enforce") {
6804
- return value;
6805
- }
6806
- return SETTINGS_DEFAULTS.extensions.policy.trust_mode;
6807
- }
6808
- function normalizeExtensionSandboxProfile(value) {
6809
- if (value === "none" || value === "restricted" || value === "strict") {
6810
- return value;
6811
- }
6812
- return SETTINGS_DEFAULTS.extensions.policy.default_sandbox_profile;
6813
- }
6814
- function normalizeExtensionPolicyOverride(override) {
6815
- const name = override.name.trim().toLowerCase();
6816
- if (name.length === 0) {
6817
- return null;
6818
- }
6819
- const normalized = {
6820
- name
6821
- };
6822
- if (override.disabled === true) {
6823
- normalized.disabled = true;
6824
- }
6825
- if (override.require_trusted === true) {
6826
- normalized.require_trusted = true;
6827
- }
6828
- if (override.require_provenance === true) {
6829
- normalized.require_provenance = true;
6830
- }
6831
- if (override.sandbox_profile !== void 0) {
6832
- normalized.sandbox_profile = normalizeExtensionSandboxProfile(override.sandbox_profile);
6833
- }
6834
- const allowedCapabilities = normalizeLowerStringList(override.allowed_capabilities);
6835
- const blockedCapabilities = normalizeLowerStringList(override.blocked_capabilities);
6836
- const allowedSurfaces = normalizeLowerStringList(override.allowed_surfaces);
6837
- const blockedSurfaces = normalizeLowerStringList(override.blocked_surfaces);
6838
- const allowedCommands = normalizeLowerStringList(override.allowed_commands);
6839
- const blockedCommands = normalizeLowerStringList(override.blocked_commands);
6840
- const allowedActions = normalizeLowerStringList(override.allowed_actions);
6841
- const blockedActions = normalizeLowerStringList(override.blocked_actions);
6842
- const allowedServices = normalizeLowerStringList(override.allowed_services);
6843
- const blockedServices = normalizeLowerStringList(override.blocked_services);
6844
- if (allowedCapabilities.length > 0) {
6845
- normalized.allowed_capabilities = allowedCapabilities;
6846
- }
6847
- if (blockedCapabilities.length > 0) {
6848
- normalized.blocked_capabilities = blockedCapabilities;
6849
- }
6850
- if (allowedSurfaces.length > 0) {
6851
- normalized.allowed_surfaces = allowedSurfaces;
6852
- }
6853
- if (blockedSurfaces.length > 0) {
6854
- normalized.blocked_surfaces = blockedSurfaces;
6855
- }
6856
- if (allowedCommands.length > 0) {
6857
- normalized.allowed_commands = allowedCommands;
6858
- }
6859
- if (blockedCommands.length > 0) {
6860
- normalized.blocked_commands = blockedCommands;
6861
- }
6862
- if (allowedActions.length > 0) {
6863
- normalized.allowed_actions = allowedActions;
6864
- }
6865
- if (blockedActions.length > 0) {
6866
- normalized.blocked_actions = blockedActions;
6867
- }
6868
- if (allowedServices.length > 0) {
6869
- normalized.allowed_services = allowedServices;
6870
- }
6871
- if (blockedServices.length > 0) {
6872
- normalized.blocked_services = blockedServices;
6873
- }
6874
- return normalized;
6875
- }
6876
- function normalizeExtensionPolicyOverrides(overrides) {
6877
- const dedupedByName = /* @__PURE__ */ new Map();
6878
- for (const override of overrides ?? []) {
6879
- const normalized = normalizeExtensionPolicyOverride(override);
6880
- if (!normalized) {
6881
- continue;
6882
- }
6883
- dedupedByName.set(normalized.name, normalized);
6884
- }
6885
- return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
6886
- }
6887
- function normalizePmMaxVersionExceededModeValue2(value) {
6888
- return value === "block" || value === "warn" ? value : void 0;
6889
- }
6890
- function normalizePmMaxVersionExceededModeSetting(value) {
6891
- if (typeof value === "string") {
6892
- return normalizePmMaxVersionExceededModeValue2(value);
6893
- }
6894
- if (typeof value === "object" && value !== null && !Array.isArray(value)) {
6895
- const global2 = normalizePmMaxVersionExceededModeValue2(value.global);
6896
- const project = normalizePmMaxVersionExceededModeValue2(value.project);
6897
- if (global2 === void 0 && project === void 0) {
6898
- return void 0;
6899
- }
6900
- return {
6901
- ...global2 !== void 0 ? { global: global2 } : {},
6902
- ...project !== void 0 ? { project } : {}
6903
- };
6904
- }
6905
- return void 0;
6906
- }
6907
- function normalizeExtensionPolicyList(policy, key) {
6908
- return normalizeLowerStringList(policy?.[key] ?? SETTINGS_DEFAULTS.extensions.policy[key]);
6909
- }
6910
- function normalizeExtensionPolicySettings(policy) {
6911
- const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededModeSetting(policy?.pm_max_version_exceeded_mode);
6912
- return {
6913
- mode: normalizeExtensionPolicyMode(policy?.mode),
6914
- trust_mode: normalizeExtensionTrustMode(policy?.trust_mode),
6915
- ...pmMaxVersionExceededMode2 !== void 0 ? { pm_max_version_exceeded_mode: pmMaxVersionExceededMode2 } : {},
6916
- require_provenance: policy?.require_provenance === true,
6917
- trusted_extensions: normalizeExtensionPolicyList(policy, "trusted_extensions"),
6918
- default_sandbox_profile: normalizeExtensionSandboxProfile(policy?.default_sandbox_profile),
6919
- allowed_extensions: normalizeExtensionPolicyList(policy, "allowed_extensions"),
6920
- blocked_extensions: normalizeExtensionPolicyList(policy, "blocked_extensions"),
6921
- allowed_capabilities: normalizeExtensionPolicyList(policy, "allowed_capabilities"),
6922
- blocked_capabilities: normalizeExtensionPolicyList(policy, "blocked_capabilities"),
6923
- allowed_surfaces: normalizeExtensionPolicyList(policy, "allowed_surfaces"),
6924
- blocked_surfaces: normalizeExtensionPolicyList(policy, "blocked_surfaces"),
6925
- allowed_commands: normalizeExtensionPolicyList(policy, "allowed_commands"),
6926
- blocked_commands: normalizeExtensionPolicyList(policy, "blocked_commands"),
6927
- allowed_actions: normalizeExtensionPolicyList(policy, "allowed_actions"),
6928
- blocked_actions: normalizeExtensionPolicyList(policy, "blocked_actions"),
6929
- allowed_services: normalizeExtensionPolicyList(policy, "allowed_services"),
6930
- blocked_services: normalizeExtensionPolicyList(policy, "blocked_services"),
6931
- extension_overrides: normalizeExtensionPolicyOverrides(policy?.extension_overrides ?? SETTINGS_DEFAULTS.extensions.policy.extension_overrides)
6932
- };
6933
- }
6934
- function normalizeValidationMetadataRequiredFields(values) {
6935
- const normalized = [...new Set((values ?? []).map((value) => value.trim().toLowerCase().replaceAll("-", "_")))].filter((value) => value.length > 0).sort((left, right) => left.localeCompare(right));
6936
- return normalized.filter((value) => [
6937
- "author",
6938
- "acceptance_criteria",
6939
- "estimated_minutes",
6940
- "close_reason",
6941
- "reviewer",
6942
- "risk",
6943
- "confidence",
6944
- "sprint",
6945
- "release"
6946
- ].includes(value));
6947
- }
6948
- function normalizeValidationPatternList(values) {
6949
- return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6950
- }
6951
- function valueOrDefault(value, fallback) {
6952
- return value === void 0 ? fallback : value;
6953
- }
6954
- function recordOrEmpty(value) {
6955
- return typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
6956
- }
6957
- function arrayOrEmpty(value) {
6958
- return Array.isArray(value) ? value : [];
6959
- }
6960
- function buildValidationSettings(settings, defaults, governance) {
6961
- return {
6962
- ...defaults.validation,
6963
- ...settings.validation,
6964
- parent_reference: governance.parent_reference,
6965
- metadata_profile: governance.metadata_profile,
6966
- metadata_required_fields: normalizeValidationMetadataRequiredFields(settings.validation?.metadata_required_fields),
6967
- lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_stale_blocker_reason_patterns ?? defaults.validation.lifecycle_stale_blocker_reason_patterns),
6968
- lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_blocked_reason_patterns ?? defaults.validation.lifecycle_closure_like_blocked_reason_patterns),
6969
- lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_resolution_patterns ?? defaults.validation.lifecycle_closure_like_resolution_patterns),
6970
- lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_actual_result_patterns ?? defaults.validation.lifecycle_closure_like_actual_result_patterns),
6971
- estimate_defaults_by_type: normalizeEstimateDefaultOverrides(settings.validation?.estimate_defaults_by_type)
6972
- };
6973
- }
6974
- function buildTelemetrySettings(settings, defaults) {
6975
- return {
6976
- enabled: settings.telemetry?.enabled ?? defaults.telemetry.enabled,
6977
- first_run_prompt_completed: settings.telemetry?.first_run_prompt_completed ?? defaults.telemetry.first_run_prompt_completed,
6978
- capture_level: settings.telemetry?.capture_level ?? defaults.telemetry.capture_level,
6979
- endpoint: settings.telemetry?.endpoint ?? defaults.telemetry.endpoint,
6980
- installation_id: settings.telemetry?.installation_id ?? defaults.telemetry.installation_id,
6981
- retention_days: settings.telemetry?.retention_days ?? defaults.telemetry.retention_days
6982
- };
6983
- }
6984
- function buildSearchSettings(settings, defaults) {
6985
- return {
6986
- ...defaults.search,
6987
- ...settings.search,
6988
- mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(settings.search?.mutation_refresh_policy),
6989
- query_expansion: {
6990
- ...defaults.search.query_expansion,
6991
- ...settings.search?.query_expansion,
6992
- enabled: normalizeSearchQueryExpansionEnabled(settings.search?.query_expansion?.enabled),
6993
- provider: normalizeSearchQueryExpansionProvider(settings.search?.query_expansion?.provider)
6994
- },
6995
- rerank: {
6996
- ...defaults.search.rerank,
6997
- ...settings.search?.rerank,
6998
- enabled: normalizeSearchRerankEnabled(settings.search?.rerank?.enabled),
6999
- model: normalizeSearchRerankModel(settings.search?.rerank?.model),
7000
- top_k: normalizeSearchRerankTopK(settings.search?.rerank?.top_k)
7001
- }
7002
- };
7003
- }
7004
- function buildVectorStoreSettings(settings, defaults) {
7005
- return {
7006
- adapter: settings.vector_store.adapter ?? defaults.vector_store.adapter,
7007
- collection_name: normalizeVectorStoreCollectionName(settings.vector_store.collection_name),
7008
- qdrant: { ...defaults.vector_store.qdrant, ...settings.vector_store.qdrant },
7009
- lancedb: { ...defaults.vector_store.lancedb, ...settings.vector_store.lancedb }
7010
- };
7011
- }
7012
- function normalizeSettingsItemFormat(settings, defaults) {
7013
- if (settings.item_format === "json_markdown") {
7014
- return "toon";
7015
- }
7016
- return settings.item_format ?? defaults.item_format;
7017
- }
7018
- function buildContextSettings(settings, defaults) {
7019
- return {
7020
- default_depth: settings.context?.default_depth ?? defaults.context.default_depth,
7021
- activity_limit: settings.context?.activity_limit ?? defaults.context.activity_limit,
7022
- stale_threshold_days: settings.context?.stale_threshold_days ?? defaults.context.stale_threshold_days,
7023
- sections: {
7024
- ...defaults.context.sections,
7025
- ...settings.context?.sections
7026
- }
7027
- };
7028
- }
7029
- function buildProviderSettings(settings, defaults) {
7030
- return {
7031
- openai: { ...defaults.providers.openai, ...settings.providers.openai },
7032
- ollama: { ...defaults.providers.ollama, ...settings.providers.ollama }
7033
- };
7034
- }
7035
- function normalizeItemTypeDefinitions(definitions) {
7036
- const normalized = (definitions ?? []).map((definition) => normalizeItemTypeDefinition(definition)).filter((definition) => definition !== null);
7037
- const dedupedByName = /* @__PURE__ */ new Map();
7038
- for (const definition of normalized) {
7039
- dedupedByName.set(definition.name.toLowerCase(), definition);
7040
- }
7041
- return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
7042
- }
7043
- function mergeSettings(settings) {
7044
- const defaults = cloneDefaults();
7045
- const governance = resolveGovernanceKnobs({
7046
- governance: settings.governance ?? { preset: "default" }
7047
- });
7048
- return {
7049
- ...defaults,
7050
- ...settings,
7051
- item_format: normalizeSettingsItemFormat(settings, defaults),
7052
- locks: { ...defaults.locks, ...settings.locks },
7053
- checkpoints: { ...defaults.checkpoints, ...settings.checkpoints },
7054
- output: { ...defaults.output, ...settings.output },
7055
- history: {
7056
- ...defaults.history,
7057
- ...settings.history,
7058
- compact_policy: {
7059
- ...defaults.history.compact_policy,
7060
- ...settings.history?.compact_policy
7061
- }
7062
- },
7063
- validation: buildValidationSettings(settings, defaults, governance),
7064
- governance,
7065
- workflow: {
7066
- definition_of_done: [...settings.workflow?.definition_of_done ?? defaults.workflow.definition_of_done]
7067
- },
7068
- testing: {
7069
- record_results_to_items: settings.testing?.record_results_to_items ?? defaults.testing.record_results_to_items
7070
- },
7071
- telemetry: buildTelemetrySettings(settings, defaults),
7072
- agent_guidance: normalizeAgentGuidanceSettings(settings.agent_guidance ?? defaults.agent_guidance),
7073
- item_types: {
7074
- definitions: normalizeItemTypeDefinitions(settings.item_types?.definitions)
7075
- },
7076
- schema: normalizeRuntimeSchemaSettings(settings.schema ?? defaults.schema),
7077
- context: buildContextSettings(settings, defaults),
7078
- extensions: {
7079
- enabled: [...settings.extensions.enabled],
7080
- disabled: [...settings.extensions.disabled],
7081
- policy: normalizeExtensionPolicySettings(settings.extensions.policy ?? defaults.extensions.policy)
7082
- },
7083
- search: buildSearchSettings(settings, defaults),
7084
- providers: buildProviderSettings(settings, defaults),
7085
- vector_store: buildVectorStoreSettings(settings, defaults)
7086
- };
7087
- }
7088
- function orderSerializedSettingsSections(ordered) {
7089
- ordered.locks = orderObject(ordered.locks, ["ttl_seconds"]);
7090
- ordered.checkpoints = orderObject(ordered.checkpoints, ["retention_days"]);
7091
- ordered.output = orderObject(ordered.output, ["default_format"]);
7092
- ordered.history = orderObject(ordered.history, ["missing_stream", "compact_policy"]);
7093
- ordered.validation = orderObject(ordered.validation, [
7094
- "sprint_release_format",
7095
- "parent_reference",
7096
- "metadata_profile",
7097
- "metadata_required_fields",
7098
- "lifecycle_stale_blocker_reason_patterns",
7099
- "lifecycle_closure_like_blocked_reason_patterns",
7100
- "lifecycle_closure_like_resolution_patterns",
7101
- "lifecycle_closure_like_actual_result_patterns",
7102
- "estimate_defaults_by_type"
7103
- ]);
7104
- ordered.governance = orderObject(ordered.governance, [
7105
- "preset",
7106
- "ownership_enforcement",
7107
- "create_mode_default",
7108
- "close_validation_default",
7109
- "require_close_reason",
7110
- "parent_reference",
7111
- "metadata_profile",
7112
- "force_required_for_stale_lock",
7113
- "create_default_type",
7114
- "workflow_enforcement"
7115
- ]);
7116
- ordered.workflow = orderObject(ordered.workflow, ["definition_of_done"]);
7117
- ordered.testing = orderObject(ordered.testing, ["record_results_to_items"]);
7118
- ordered.telemetry = orderObject(ordered.telemetry, [
7119
- "enabled",
7120
- "first_run_prompt_completed",
7121
- "capture_level",
7122
- "endpoint",
7123
- "installation_id",
7124
- "retention_days"
7125
- ]);
7126
- ordered.agent_guidance = orderObject(ordered.agent_guidance, [
7127
- "prompt_completed",
7128
- "declined",
7129
- "declined_at",
7130
- "template_version",
7131
- "last_checked_files"
7132
- ]);
7133
- ordered.item_types = orderObject(ordered.item_types, ["definitions"]);
7134
- ordered.schema = orderObject(ordered.schema, [
7135
- "version",
7136
- "files",
7137
- "statuses",
7138
- "fields",
7139
- "workflow",
7140
- "type_workflows",
7141
- "unknown_field_policy"
7142
- ]);
7143
- ordered.schema.files = orderObject(recordOrEmpty(ordered.schema.files), ["types", "statuses", "fields", "workflows"]);
7144
- ordered.schema.workflow = orderObject(recordOrEmpty(ordered.schema.workflow), ["draft_status", "open_status", "in_progress_status", "blocked_status", "close_status", "canceled_status"]);
7145
- ordered.context = orderObject(ordered.context, [
7146
- "default_depth",
7147
- "activity_limit",
7148
- "stale_threshold_days",
7149
- "sections"
7150
- ]);
7151
- ordered.context.sections = orderObject(recordOrEmpty(ordered.context.sections), ["hierarchy", "activity", "progress", "blockers", "files", "workload", "staleness", "tests"]);
7152
- ordered.extensions = orderObject(ordered.extensions, ["enabled", "disabled", "policy"]);
7153
- ordered.extensions.policy = orderObject(recordOrEmpty(ordered.extensions.policy), [
7154
- "mode",
7155
- "trust_mode",
7156
- "pm_max_version_exceeded_mode",
7157
- "require_provenance",
7158
- "trusted_extensions",
7159
- "default_sandbox_profile",
7160
- "allowed_extensions",
7161
- "blocked_extensions",
7162
- "allowed_capabilities",
7163
- "blocked_capabilities",
7164
- "allowed_surfaces",
7165
- "blocked_surfaces",
7166
- "allowed_commands",
7167
- "blocked_commands",
7168
- "allowed_actions",
7169
- "blocked_actions",
7170
- "allowed_services",
7171
- "blocked_services",
7172
- "extension_overrides"
7173
- ]);
7174
- ordered.extensions.policy.extension_overrides = arrayOrEmpty(ordered.extensions.policy.extension_overrides).map((entry) => orderObject(recordOrEmpty(entry), [
7175
- "name",
7176
- "disabled",
7177
- "require_trusted",
7178
- "require_provenance",
7179
- "sandbox_profile",
7180
- "allowed_capabilities",
7181
- "blocked_capabilities",
7182
- "allowed_surfaces",
7183
- "blocked_surfaces",
7184
- "allowed_commands",
7185
- "blocked_commands",
7186
- "allowed_actions",
7187
- "blocked_actions",
7188
- "allowed_services",
7189
- "blocked_services"
7190
- ]));
7191
- ordered.search = orderObject(ordered.search, [
7192
- "score_threshold",
7193
- "hybrid_semantic_weight",
7194
- "max_results",
7195
- "embedding_model",
7196
- "embedding_corpus_max_characters",
7197
- "embedding_batch_size",
7198
- "embedding_timeout_ms",
7199
- "scanner_max_batch_retries",
7200
- "provider",
7201
- "mutation_refresh_policy",
7202
- "query_expansion",
7203
- "rerank"
7204
- ]);
7205
- ordered.search.query_expansion = orderObject(recordOrEmpty(ordered.search.query_expansion), ["enabled", "provider"]);
7206
- ordered.search.rerank = orderObject(recordOrEmpty(ordered.search.rerank), ["enabled", "model", "top_k"]);
7207
- ordered.providers = orderObject(ordered.providers, ["openai", "ollama"]);
7208
- ordered.providers.openai = orderObject(recordOrEmpty(ordered.providers.openai), ["base_url", "api_key", "model"]);
7209
- ordered.providers.ollama = orderObject(recordOrEmpty(ordered.providers.ollama), ["base_url", "model"]);
7210
- ordered.vector_store = orderObject(ordered.vector_store, [
7211
- "adapter",
7212
- "collection_name",
7213
- "qdrant",
7214
- "lancedb"
7215
- ]);
7216
- ordered.vector_store.qdrant = orderObject(recordOrEmpty(ordered.vector_store.qdrant), ["url", "api_key"]);
7217
- ordered.vector_store.lancedb = orderObject(recordOrEmpty(ordered.vector_store.lancedb), ["path"]);
7218
- }
7219
- function buildSerializeBaseSettings(settings) {
7220
- return {
7221
- ...settings,
7222
- locks: valueOrDefault(settings.locks, SETTINGS_DEFAULTS.locks),
7223
- checkpoints: valueOrDefault(settings.checkpoints, SETTINGS_DEFAULTS.checkpoints),
7224
- output: valueOrDefault(settings.output, SETTINGS_DEFAULTS.output),
7225
- history: valueOrDefault(settings.history, SETTINGS_DEFAULTS.history),
7226
- validation: valueOrDefault(settings.validation, SETTINGS_DEFAULTS.validation),
7227
- workflow: valueOrDefault(settings.workflow, SETTINGS_DEFAULTS.workflow),
7228
- testing: valueOrDefault(settings.testing, SETTINGS_DEFAULTS.testing),
7229
- telemetry: valueOrDefault(settings.telemetry, SETTINGS_DEFAULTS.telemetry),
7230
- agent_guidance: valueOrDefault(settings.agent_guidance, SETTINGS_DEFAULTS.agent_guidance),
7231
- item_types: valueOrDefault(settings.item_types, SETTINGS_DEFAULTS.item_types),
7232
- schema: valueOrDefault(settings.schema, SETTINGS_DEFAULTS.schema),
7233
- context: valueOrDefault(settings.context, SETTINGS_DEFAULTS.context),
7234
- extensions: valueOrDefault(settings.extensions, SETTINGS_DEFAULTS.extensions),
7235
- search: valueOrDefault(settings.search, SETTINGS_DEFAULTS.search),
7236
- providers: valueOrDefault(settings.providers, SETTINGS_DEFAULTS.providers),
7237
- vector_store: valueOrDefault(settings.vector_store, SETTINGS_DEFAULTS.vector_store)
7238
- };
7239
- }
7240
- function buildSerializedValidationSettings(baseSettings, governance) {
7241
- return {
7242
- ...baseSettings.validation,
7243
- parent_reference: governance.parent_reference,
7244
- metadata_profile: governance.metadata_profile,
7245
- metadata_required_fields: normalizeValidationMetadataRequiredFields(baseSettings.validation?.metadata_required_fields),
7246
- lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_stale_blocker_reason_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_stale_blocker_reason_patterns),
7247
- lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_blocked_reason_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_blocked_reason_patterns),
7248
- lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_resolution_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_resolution_patterns),
7249
- lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_actual_result_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_actual_result_patterns),
7250
- estimate_defaults_by_type: normalizeEstimateDefaultOverrides(baseSettings.validation?.estimate_defaults_by_type)
7251
- };
7252
- }
7253
- function buildSerializedSearchSettings(baseSettings) {
7254
- return {
7255
- ...SETTINGS_DEFAULTS.search,
7256
- ...baseSettings.search,
7257
- mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(baseSettings.search?.mutation_refresh_policy),
7258
- query_expansion: {
7259
- ...SETTINGS_DEFAULTS.search.query_expansion,
7260
- ...baseSettings.search?.query_expansion,
7261
- enabled: normalizeSearchQueryExpansionEnabled(baseSettings.search?.query_expansion?.enabled),
7262
- provider: normalizeSearchQueryExpansionProvider(baseSettings.search?.query_expansion?.provider)
7263
- },
7264
- rerank: {
7265
- ...SETTINGS_DEFAULTS.search.rerank,
7266
- ...baseSettings.search?.rerank,
7267
- enabled: normalizeSearchRerankEnabled(baseSettings.search?.rerank?.enabled),
7268
- model: normalizeSearchRerankModel(baseSettings.search?.rerank?.model),
7269
- top_k: normalizeSearchRerankTopK(baseSettings.search?.rerank?.top_k)
7270
- }
7271
- };
7272
- }
7273
- function buildSerializedContextSettings(baseSettings) {
7274
- return {
7275
- default_depth: baseSettings.context?.default_depth ?? SETTINGS_DEFAULTS.context.default_depth,
7276
- activity_limit: baseSettings.context?.activity_limit ?? SETTINGS_DEFAULTS.context.activity_limit,
7277
- stale_threshold_days: baseSettings.context?.stale_threshold_days ?? SETTINGS_DEFAULTS.context.stale_threshold_days,
7278
- sections: {
7279
- ...SETTINGS_DEFAULTS.context.sections,
7280
- ...baseSettings.context?.sections
7281
- }
7282
- };
7283
- }
7284
- function buildSerializedVectorStoreSettings(baseSettings) {
7285
- return {
7286
- ...baseSettings.vector_store,
7287
- adapter: baseSettings.vector_store?.adapter ?? SETTINGS_DEFAULTS.vector_store.adapter,
7288
- collection_name: normalizeVectorStoreCollectionName(baseSettings.vector_store?.collection_name),
7289
- qdrant: { ...baseSettings.vector_store?.qdrant },
7290
- lancedb: { ...baseSettings.vector_store?.lancedb }
7291
- };
7292
- }
7293
- function buildNormalizedSettingsForSerialization(baseSettings, governance, normalizedSchema, persistedFileBackedSections) {
7294
- return {
7295
- ...baseSettings,
7296
- item_format: "toon",
7297
- validation: buildSerializedValidationSettings(baseSettings, governance),
7298
- governance,
7299
- agent_guidance: normalizeAgentGuidanceSettings(baseSettings.agent_guidance),
7300
- item_types: {
7301
- definitions: persistedFileBackedSections.item_type_definitions
7302
- },
7303
- schema: {
7304
- ...normalizedSchema,
7305
- statuses: persistedFileBackedSections.schema_statuses,
7306
- fields: persistedFileBackedSections.schema_fields,
7307
- type_workflows: persistedFileBackedSections.schema_type_workflows
7308
- },
7309
- search: buildSerializedSearchSettings(baseSettings),
7310
- context: buildSerializedContextSettings(baseSettings),
7311
- extensions: {
7312
- enabled: normalizeStringList2(baseSettings.extensions?.enabled),
7313
- disabled: normalizeStringList2(baseSettings.extensions?.disabled),
7314
- policy: normalizeExtensionPolicySettings(baseSettings.extensions?.policy)
7315
- },
7316
- vector_store: buildSerializedVectorStoreSettings(baseSettings)
7317
- };
7318
- }
7319
- function serializeSettings(settings, options = {}) {
7320
- const baseSettings = buildSerializeBaseSettings(settings);
7321
- const governance = resolveGovernanceKnobs(baseSettings);
7322
- const normalizedSchema = normalizeRuntimeSchemaSettings(baseSettings.schema);
7323
- const persistedFileBackedSections = resolvePersistedFileBackedSchemaSections(baseSettings, options.persist_source);
7324
- const normalizedSettings = buildNormalizedSettingsForSerialization(baseSettings, governance, normalizedSchema, persistedFileBackedSections);
7325
- const ordered = orderObject({
7326
- ...normalizedSettings,
7327
- governance: normalizeGovernanceForPersist(governance)
7328
- }, [
7329
- "version",
7330
- "id_prefix",
7331
- "author_default",
7332
- "item_format",
7333
- "locks",
7334
- "checkpoints",
7335
- "output",
7336
- "history",
7337
- "validation",
7338
- "governance",
7339
- "workflow",
7340
- "testing",
7341
- "telemetry",
7342
- "agent_guidance",
7343
- "item_types",
7344
- "schema",
7345
- "context",
7346
- "extensions",
7347
- "search",
7348
- "providers",
7349
- "vector_store"
7350
- ]);
7351
- orderSerializedSettingsSections(ordered);
7352
- return `${JSON.stringify(ordered, null, 2)}
7353
- `;
7354
- }
7355
- async function readSettingsWithMetadata(pmRoot) {
7356
- const settingsPath = getSettingsPath(pmRoot);
7357
- let trackedPathsForFailure = [settingsPath];
7358
- await runActiveOnReadHooks({
7359
- path: settingsPath,
7360
- scope: "project"
7361
- });
7362
- const cachedResult = getSettingsReadCacheEntry(pmRoot);
7363
- if (cachedResult) {
7364
- const currentSignatures = await collectSettingsReadCacheSignatures(cachedResult.tracked_paths);
7365
- if (settingsReadCacheSignaturesEqual(currentSignatures, cachedResult.signatures)) {
7366
- return cloneSettingsReadResult(cachedResult.value);
7367
- }
7368
- }
7369
- const settingsOnlySignatures = await collectSettingsReadCacheSignatures([settingsPath]);
7370
- const raw = await readFileIfExists(settingsPath);
7371
- if (raw === null) {
7372
- const fallback = buildFallbackSettingsReadResult();
7373
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsOnlySignatures, [settingsPath]);
7374
- return fallback;
7375
- }
7376
- const settingsSignaturesAfterRead = await collectSettingsReadCacheSignatures([settingsPath]);
7377
- if (!settingsReadCacheSignaturesEqual(settingsOnlySignatures, settingsSignaturesAfterRead)) {
7378
- clearSettingsReadCache(pmRoot);
7379
- return readSettingsWithMetadata(pmRoot);
7380
- }
7381
- let parsed;
7382
- try {
7383
- parsed = JSON.parse(raw);
7384
- } catch {
7385
- const fallback = buildFallbackSettingsReadResult("settings_read_invalid_json");
7386
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
7387
- return fallback;
7388
- }
7389
- const validated = validateSettings(parsed);
7390
- if (!validated.success) {
7391
- const fallback = buildFallbackSettingsReadResult("settings_read_invalid_schema");
7392
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
7393
- return fallback;
7394
- }
7395
- try {
7396
- const mergedSettings = mergeSettings(validated.data);
7397
- const trackedPaths = resolveSettingsReadTrackedPaths(pmRoot, mergedSettings.schema, settingsPath);
7398
- trackedPathsForFailure = trackedPaths;
7399
- const signaturesBeforeSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
7400
- const schemaScaffold = await ensureRuntimeSchemaFileScaffold(pmRoot, mergedSettings.schema);
7401
- const loadedSchemaSections = await loadRuntimeSchemaFromOptionalFiles(pmRoot, mergedSettings.schema);
7402
- const signaturesAfterSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
7403
- const settings = {
7404
- ...mergedSettings,
7405
- item_types: {
7406
- definitions: normalizeItemTypeDefinitions([
7407
- ...mergedSettings.item_types.definitions,
7408
- ...arrayOrEmpty(loadedSchemaSections.type_definitions_from_file)
7409
- ])
7410
- },
7411
- schema: loadedSchemaSections.schema
7412
- };
7413
- attachSettingsPersistSourceSnapshot(settings, buildSettingsPersistSourceSnapshot(validated.data, settings));
7414
- const result = {
7415
- settings,
7416
- metadata: {
7417
- has_explicit_item_format: hasExplicitItemFormat(parsed)
7418
- },
7419
- warnings: [
7420
- ...validated.data.item_format === "json_markdown" ? ["settings_item_format_legacy_json_markdown_coerced_to_toon"] : [],
7421
- ...schemaScaffold.created_paths.map((createdPath) => `runtime_schema_bootstrap_created:${createdPath}`),
7422
- ...loadedSchemaSections.warnings
7423
- ]
7424
- };
7425
- if (schemaScaffold.created_paths.length === 0) {
7426
- if (!settingsReadCacheSignaturesEqual(signaturesBeforeSchemaLoad, signaturesAfterSchemaLoad)) {
7427
- clearSettingsReadCache(pmRoot);
7428
- } else {
7429
- setSettingsReadCacheEntry(pmRoot, {
7430
- tracked_paths: trackedPaths,
7431
- signatures: signaturesAfterSchemaLoad,
7432
- value: cloneSettingsReadResult(result)
7433
- });
7434
- }
7435
- } else {
7436
- clearSettingsReadCache(pmRoot);
7437
- }
7438
- return result;
7439
- } catch {
7440
- const fallback = buildFallbackSettingsReadResult("settings_read_merge_failed");
7441
- await cacheSettingsReadResultSafe(pmRoot, trackedPathsForFailure, fallback);
7442
- return fallback;
7443
- }
7444
- }
7445
- async function readSettings(pmRoot) {
7446
- return (await readSettingsWithMetadata(pmRoot)).settings;
7447
- }
7448
- async function writeSettings(pmRoot, settings, op = SETTINGS_WRITE_OP) {
7449
- const settingsPath = getSettingsPath(pmRoot);
7450
- await writeFileAtomic(settingsPath, serializeSettings(settings, {
7451
- persist_source: getSettingsPersistSourceSnapshot(settings)
7452
- }));
7453
- try {
7454
- await runActiveOnWriteHooks({
7455
- path: settingsPath,
7456
- scope: "project",
7457
- op
7458
- });
7459
- } finally {
7460
- clearSettingsReadCache(pmRoot);
7461
- }
7462
- }
7463
-
7464
5645
  export {
7465
5646
  ensureDir,
7466
5647
  pathExists,
@@ -7471,13 +5652,17 @@ export {
7471
5652
  isPathWithinDirectory,
7472
5653
  resolvePmPackageRootFromModule,
7473
5654
  resolvePmCliVersion,
5655
+ resolveConfiguredPmPackageRoot,
7474
5656
  KNOWN_EXTENSION_CAPABILITIES,
5657
+ EXTENSION_CAPABILITY_CONTRACT_VERSION,
5658
+ EXTENSION_CAPABILITY_LEGACY_ALIASES,
7475
5659
  EXTENSION_CAPABILITY_CONTRACT,
7476
5660
  KNOWN_EXTENSION_POLICY_MODES,
7477
5661
  KNOWN_EXTENSION_TRUST_MODES,
7478
5662
  KNOWN_EXTENSION_SANDBOX_PROFILES,
7479
5663
  KNOWN_EXTENSION_POLICY_SURFACES,
7480
5664
  KNOWN_EXTENSION_SERVICE_NAMES,
5665
+ createDefaultExtensionGovernancePolicy,
7481
5666
  PM_DIRNAME,
7482
5667
  CREATE_DIRECT_CLOSE_REASON_DEFAULT,
7483
5668
  PM_CORE_REQUIRED_SUBDIRS,
@@ -7493,15 +5678,18 @@ export {
7493
5678
  EXIT_CODE,
7494
5679
  resolveTelemetryErrorCategory,
7495
5680
  BUILTIN_ITEM_TYPE_VALUES,
5681
+ ITEM_TYPE_VALUES,
7496
5682
  STATUS_VALUES,
7497
5683
  RUNTIME_STATUS_ROLE_VALUES,
7498
5684
  RUNTIME_FIELD_TYPE_VALUES,
7499
5685
  RUNTIME_FIELD_COMMAND_VALUES,
5686
+ RUNTIME_UNKNOWN_FIELD_POLICY_VALUES,
7500
5687
  DEPENDENCY_KIND_VALUES,
7501
5688
  SCOPE_VALUES,
7502
5689
  RISK_VALUES,
7503
5690
  ISSUE_SEVERITY_VALUES,
7504
5691
  CONFIDENCE_TEXT_VALUES,
5692
+ GOVERNANCE_PRESET_VALUES,
7505
5693
  RECURRENCE_FREQUENCY_VALUES,
7506
5694
  RECURRENCE_WEEKDAY_VALUES,
7507
5695
  weekdayOrderIndex,
@@ -7511,6 +5699,8 @@ export {
7511
5699
  PLAN_STEP_LINK_KIND_VALUES,
7512
5700
  CONTEXT_DEPTH_VALUES,
7513
5701
  CONTEXT_SECTION_VALUES,
5702
+ normalizeItemTypeDefinition,
5703
+ COMMON_MUTATION_COMMAND_OPTION_KEYS,
7514
5704
  canonicalizeCommandOptionKey,
7515
5705
  commandOptionFlagLabel,
7516
5706
  toDefaultFolder,
@@ -7545,69 +5735,55 @@ export {
7545
5735
  coercePositiveInteger,
7546
5736
  coerceNumberInRange,
7547
5737
  asRecordOrNull,
5738
+ asPropertyRecord,
5739
+ resolveActivatablePropertyRecord,
7548
5740
  resolveFlagValueKind,
7549
5741
  flattenFlagListValue,
7550
5742
  levenshteinDistanceWithinLimit,
7551
5743
  normalizeItemFieldType,
5744
+ evaluatePmMinVersionBound,
5745
+ evaluatePmMaxVersionBound,
5746
+ normalizeKnownExtensionCapability,
5747
+ resolveLegacyExtensionCapabilityAlias,
7552
5748
  parseUnknownExtensionCapabilityWarning,
7553
5749
  parseLegacyExtensionCapabilityAliasWarning,
5750
+ normalizeCommandName,
7554
5751
  createEmptyExtensionRegistrationRegistry,
7555
5752
  runBeforeCommandHooks,
7556
5753
  runAfterCommandHooks,
5754
+ runOnWriteHooks,
5755
+ runOnReadHooks,
5756
+ runOnIndexHooks,
5757
+ runCommandHandler,
5758
+ runParserOverride,
5759
+ runPreflightOverride,
5760
+ runServiceOverrideSync,
5761
+ runServiceOverride,
5762
+ runCommandOverride,
5763
+ runRendererOverride,
5764
+ DEFAULT_EXTENSION_PRIORITY,
7557
5765
  nextExtensionReloadToken,
5766
+ isCanonicalPathWithinDirectory,
7558
5767
  resolveExtensionRoots,
7559
5768
  discoverExtensions,
7560
5769
  loadExtensions,
5770
+ deactivateExtensions,
7561
5771
  activateExtensions,
5772
+ EXTENSION_CAPABILITY_REGISTRATION_SURFACES,
7562
5773
  normalizeExtensionName,
7563
5774
  collectUsedExtensionCapabilities,
7564
5775
  reconcileExtensionCapabilityUsage,
7565
- setActiveExtensionHooks,
7566
- setActiveExtensionCommands,
7567
- setActiveExtensionParsers,
7568
- setActiveExtensionPreflight,
7569
- setActiveExtensionServices,
7570
- setActiveExtensionRenderers,
7571
- setActiveExtensionRegistrations,
7572
- getActiveExtensionRegistrations,
7573
- setActiveCommandContext,
7574
- setActiveCommandResult,
7575
- getActiveCommandResult,
7576
- recordAfterCommandAffectedItem,
7577
- projectAfterCommandItemSnapshot,
7578
- consumeAfterCommandAffectedItems,
7579
- clearActiveExtensionHooks,
7580
- runActiveOnWriteHooks,
7581
- runActiveOnReadHooks,
7582
- hasActiveOnReadHooks,
7583
- runActiveOnIndexHooks,
7584
- runActiveCommandOverride,
7585
- runActiveCommandHandler,
7586
- runActiveParserOverride,
7587
- runActivePreflightOverride,
7588
- runActiveRendererOverride,
7589
- runActiveServiceOverride,
7590
- runActiveServiceOverrideSync,
7591
5776
  DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
7592
5777
  DEFAULT_RUNTIME_STATUS_DEFINITIONS,
7593
5778
  normalizeRuntimeSchemaSettings,
7594
5779
  filePathForSchemaSection,
7595
5780
  resolveItemTypesFilePath,
7596
5781
  ensureRuntimeSchemaFileScaffold,
5782
+ loadRuntimeSchemaFromOptionalFiles,
7597
5783
  resolveRuntimeStatusRegistry,
7598
5784
  normalizeStatusInputWithRegistry,
7599
5785
  resolveRuntimeFieldRegistry,
7600
5786
  runtimeFieldOptionTarget,
7601
- statusIsTerminal,
7602
- PmCliError,
7603
- stableStringify,
7604
- stableValueEquals,
7605
- sha256Hex,
7606
- orderObject,
7607
- resolveEstimateDefaultMinutes,
7608
- resolveGovernanceKnobs,
7609
- readSettingsWithMetadata,
7610
- readSettings,
7611
- writeSettings
5787
+ statusIsTerminal
7612
5788
  };
7613
- //# sourceMappingURL=chunk-KHVGM5CS.js.map
5789
+ //# sourceMappingURL=chunk-5VVUKE3U.js.map