@unbrained/pm-cli 2026.7.4 → 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 (601) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -5
  3. package/dist/cli/commands/calendar.d.ts +3 -2
  4. package/dist/cli/commands/calendar.js +4 -4
  5. package/dist/cli/commands/calendar.js.map +1 -1
  6. package/dist/cli/commands/claim.js +17 -3
  7. package/dist/cli/commands/claim.js.map +1 -1
  8. package/dist/cli/commands/close.js +34 -16
  9. package/dist/cli/commands/close.js.map +1 -1
  10. package/dist/cli/commands/copy.js +3 -3
  11. package/dist/cli/commands/copy.js.map +1 -1
  12. package/dist/cli/commands/create.d.ts +7 -0
  13. package/dist/cli/commands/create.js +156 -110
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
  16. package/dist/cli/commands/extension/bundled-catalog.js +15 -2
  17. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  18. package/dist/cli/commands/extension/describe.d.ts +6 -3
  19. package/dist/cli/commands/extension/describe.js +21 -9
  20. package/dist/cli/commands/extension/describe.js.map +1 -1
  21. package/dist/cli/commands/extension/doctor.d.ts +0 -4
  22. package/dist/cli/commands/extension/doctor.js +3 -3
  23. package/dist/cli/commands/extension/doctor.js.map +1 -1
  24. package/dist/cli/commands/extension/scaffold.js +7 -2
  25. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  26. package/dist/cli/commands/extension/shared.d.ts +2 -7
  27. package/dist/cli/commands/extension/shared.js +4 -10
  28. package/dist/cli/commands/extension/shared.js.map +1 -1
  29. package/dist/cli/commands/extension.js +33 -8
  30. package/dist/cli/commands/extension.js.map +1 -1
  31. package/dist/cli/commands/profile.js +3 -3
  32. package/dist/cli/commands/profile.js.map +1 -1
  33. package/dist/cli/commands/reindex.js +3 -3
  34. package/dist/cli/commands/reindex.js.map +1 -1
  35. package/dist/cli/commands/restore.js +3 -3
  36. package/dist/cli/commands/restore.js.map +1 -1
  37. package/dist/cli/commands/schema.js +10 -10
  38. package/dist/cli/commands/schema.js.map +1 -1
  39. package/dist/cli/commands/update.js +5 -3
  40. package/dist/cli/commands/update.js.map +1 -1
  41. package/dist/cli/error-guidance.js +107 -7
  42. package/dist/cli/error-guidance.js.map +1 -1
  43. package/dist/cli/main.d.ts +6 -2
  44. package/dist/cli/main.js +33 -12
  45. package/dist/cli/main.js.map +1 -1
  46. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
  47. package/dist/cli-bundle/chunks/{activity-OENQCYZD.js → activity-YKAKZTZ4.js} +11 -9
  48. package/dist/cli-bundle/chunks/{aggregate-EC4LWS3U.js → aggregate-EQX2RGB7.js} +16 -13
  49. package/dist/cli-bundle/chunks/{aggregate-EC4LWS3U.js.map → aggregate-EQX2RGB7.js.map} +1 -1
  50. package/dist/cli-bundle/chunks/{aggregate-RCB3QJJE.js → aggregate-PEGZGJXD.js} +18 -15
  51. package/dist/cli-bundle/chunks/{aggregate-RCB3QJJE.js.map → aggregate-PEGZGJXD.js.map} +1 -1
  52. package/dist/cli-bundle/chunks/{append-XLEKVVWB.js → append-CZGUZ45Q.js} +11 -8
  53. package/dist/cli-bundle/chunks/{append-XLEKVVWB.js.map → append-CZGUZ45Q.js.map} +1 -1
  54. package/dist/cli-bundle/chunks/{append-ADBOI3A6.js → append-NSQBCXZJ.js} +13 -10
  55. package/dist/cli-bundle/chunks/{append-ADBOI3A6.js.map → append-NSQBCXZJ.js.map} +1 -1
  56. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
  57. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
  58. package/dist/cli-bundle/chunks/{chunk-2LRMWMZ6.js → chunk-3PL6LEKP.js} +16 -14
  59. package/dist/cli-bundle/chunks/{chunk-2LRMWMZ6.js.map → chunk-3PL6LEKP.js.map} +1 -1
  60. package/dist/cli-bundle/chunks/{chunk-CN4OAA2G.js → chunk-3U3VEWK6.js} +277 -119
  61. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
  62. package/dist/cli-bundle/chunks/{chunk-EB4BBEZD.js → chunk-3Y4OESPP.js} +14 -12
  63. package/dist/cli-bundle/chunks/{chunk-EB4BBEZD.js.map → chunk-3Y4OESPP.js.map} +1 -1
  64. package/dist/cli-bundle/chunks/{chunk-NHDR3UCW.js → chunk-4LRVSBO6.js} +14 -12
  65. package/dist/cli-bundle/chunks/{chunk-NHDR3UCW.js.map → chunk-4LRVSBO6.js.map} +1 -1
  66. package/dist/cli-bundle/chunks/{chunk-6YB7HG2J.js → chunk-4OFLJHX6.js} +7 -5
  67. package/dist/cli-bundle/chunks/{chunk-6YB7HG2J.js.map → chunk-4OFLJHX6.js.map} +1 -1
  68. package/dist/cli-bundle/chunks/{chunk-SBNT6SLO.js → chunk-4QQ6PM7M.js} +45 -557
  69. package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
  70. package/dist/cli-bundle/chunks/{chunk-M34MVAOP.js → chunk-53BTLLAF.js} +16 -200
  71. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
  72. package/dist/cli-bundle/chunks/{chunk-UYLA5ROU.js → chunk-57C2RLW5.js} +277 -112
  73. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
  74. package/dist/cli-bundle/chunks/{chunk-R7EMP4JG.js → chunk-5B3X4Y22.js} +52 -63
  75. package/dist/cli-bundle/chunks/{chunk-R7EMP4JG.js.map → chunk-5B3X4Y22.js.map} +3 -3
  76. package/dist/cli-bundle/chunks/{chunk-XBIYI23P.js → chunk-5J2XPTAD.js} +10 -8
  77. package/dist/cli-bundle/chunks/{chunk-XBIYI23P.js.map → chunk-5J2XPTAD.js.map} +1 -1
  78. package/dist/cli-bundle/chunks/{chunk-4SHME4VR.js → chunk-5JE6SMYS.js} +2 -2
  79. package/dist/cli-bundle/chunks/{chunk-4KPQQ42D.js → chunk-5JZ7APJU.js} +18 -16
  80. package/dist/cli-bundle/chunks/{chunk-4KPQQ42D.js.map → chunk-5JZ7APJU.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{chunk-BDDYM4LH.js → chunk-5VVUKE3U.js} +424 -2228
  82. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
  83. package/dist/cli-bundle/chunks/{chunk-QFXFKYNQ.js → chunk-75U6M5ZD.js} +16 -14
  84. package/dist/cli-bundle/chunks/{chunk-QFXFKYNQ.js.map → chunk-75U6M5ZD.js.map} +1 -1
  85. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
  86. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
  87. package/dist/cli-bundle/chunks/{chunk-A222YWOQ.js → chunk-7EQNAZX2.js} +14 -12
  88. package/dist/cli-bundle/chunks/{chunk-A222YWOQ.js.map → chunk-7EQNAZX2.js.map} +1 -1
  89. package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
  90. package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
  91. package/dist/cli-bundle/chunks/{chunk-EH23N5FX.js → chunk-7MDXZAZS.js} +29 -7
  92. package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{chunk-XQCWTSLO.js → chunk-7QH7DHUB.js} +74 -8
  94. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
  95. package/dist/cli-bundle/chunks/{chunk-3C5T3ZEO.js → chunk-7WYXBPYQ.js} +7 -5
  96. package/dist/cli-bundle/chunks/{chunk-3C5T3ZEO.js.map → chunk-7WYXBPYQ.js.map} +1 -1
  97. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
  98. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-CQISNF3Z.js → chunk-ABRA3BHY.js} +18 -16
  100. package/dist/cli-bundle/chunks/{chunk-CQISNF3Z.js.map → chunk-ABRA3BHY.js.map} +2 -2
  101. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
  102. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
  103. package/dist/cli-bundle/chunks/{chunk-Y2VSCQ77.js → chunk-BFVHCAOO.js} +9 -7
  104. package/dist/cli-bundle/chunks/{chunk-Y2VSCQ77.js.map → chunk-BFVHCAOO.js.map} +1 -1
  105. package/dist/cli-bundle/chunks/{chunk-7ITQSEBL.js → chunk-BVEUCSH2.js} +6 -4
  106. package/dist/cli-bundle/chunks/{chunk-7ITQSEBL.js.map → chunk-BVEUCSH2.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
  108. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
  109. package/dist/cli-bundle/chunks/{chunk-HL742IBM.js → chunk-D3UCE7RW.js} +7 -5
  110. package/dist/cli-bundle/chunks/{chunk-HL742IBM.js.map → chunk-D3UCE7RW.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
  112. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
  113. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
  114. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-MZG6I2Q2.js → chunk-DRBV5UC2.js} +8 -23
  116. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-DEIDJQZK.js → chunk-E2FUG6GD.js} +15 -220
  118. package/dist/cli-bundle/chunks/{chunk-DEIDJQZK.js.map → chunk-E2FUG6GD.js.map} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-3MLQZI3H.js → chunk-EEY54JMF.js} +5 -3
  120. package/dist/cli-bundle/chunks/{chunk-3MLQZI3H.js.map → chunk-EEY54JMF.js.map} +1 -1
  121. package/dist/cli-bundle/chunks/{chunk-CQFZRLXQ.js → chunk-EZFKWSC7.js} +94 -16
  122. package/dist/cli-bundle/chunks/{chunk-CQFZRLXQ.js.map → chunk-EZFKWSC7.js.map} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-4PJYRA3V.js → chunk-FDBARR33.js} +17 -15
  124. package/dist/cli-bundle/chunks/{chunk-4PJYRA3V.js.map → chunk-FDBARR33.js.map} +2 -2
  125. package/dist/cli-bundle/chunks/{chunk-NGDK3KEZ.js → chunk-FGQKEDE4.js} +36 -12
  126. package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
  127. package/dist/cli-bundle/chunks/{chunk-FMWQRMHS.js → chunk-FJRKQREY.js} +10 -18
  128. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-6QY2NA2M.js → chunk-FUM6UMY4.js} +10 -11
  130. package/dist/cli-bundle/chunks/{chunk-6QY2NA2M.js.map → chunk-FUM6UMY4.js.map} +1 -1
  131. package/dist/cli-bundle/chunks/{chunk-UGDONITK.js → chunk-GIWXVMZ3.js} +140 -334
  132. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
  133. package/dist/cli-bundle/chunks/{chunk-OTSP6UEX.js → chunk-HBYZDSK5.js} +19 -17
  134. package/dist/cli-bundle/chunks/{chunk-OTSP6UEX.js.map → chunk-HBYZDSK5.js.map} +1 -1
  135. package/dist/cli-bundle/chunks/{chunk-D2LDM35X.js → chunk-HJE4JTKQ.js} +6 -4
  136. package/dist/cli-bundle/chunks/{chunk-D2LDM35X.js.map → chunk-HJE4JTKQ.js.map} +1 -1
  137. package/dist/cli-bundle/chunks/{chunk-AOP2EMK3.js → chunk-HK72NWAD.js} +89 -18
  138. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-2ONH3WG6.js → chunk-IJ6CO3JV.js} +18 -16
  140. package/dist/cli-bundle/chunks/{chunk-2ONH3WG6.js.map → chunk-IJ6CO3JV.js.map} +1 -1
  141. package/dist/cli-bundle/chunks/{chunk-J4KNRDI3.js → chunk-JFCVQXZX.js} +139 -326
  142. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
  143. package/dist/cli-bundle/chunks/{chunk-V655JQ5J.js → chunk-JLA7EVYV.js} +12 -10
  144. package/dist/cli-bundle/chunks/{chunk-V655JQ5J.js.map → chunk-JLA7EVYV.js.map} +1 -1
  145. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
  146. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-WBWRQS32.js → chunk-K3AGVXSF.js} +37 -13
  148. package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
  149. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
  150. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
  151. package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
  152. package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
  153. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
  154. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
  155. package/dist/cli-bundle/chunks/{chunk-JZJJEJBR.js → chunk-KLG4ZULO.js} +12 -10
  156. package/dist/cli-bundle/chunks/{chunk-JZJJEJBR.js.map → chunk-KLG4ZULO.js.map} +1 -1
  157. package/dist/cli-bundle/chunks/{chunk-KKHIQOTN.js → chunk-LEKT4K7I.js} +74 -8
  158. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{contracts-CVBINC7C.js → chunk-MNZ7DRNC.js} +13 -10
  160. package/dist/cli-bundle/chunks/{contracts-CVBINC7C.js.map → chunk-MNZ7DRNC.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-2VK677OA.js → chunk-MTTXDAK4.js} +176 -125
  162. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
  163. package/dist/cli-bundle/chunks/{chunk-Q2266G4S.js → chunk-MZ7VNEVY.js} +8 -6
  164. package/dist/cli-bundle/chunks/{chunk-Q2266G4S.js.map → chunk-MZ7VNEVY.js.map} +1 -1
  165. package/dist/cli-bundle/chunks/{chunk-4EVY7CQN.js → chunk-N6DNM2FA.js} +2 -2
  166. package/dist/cli-bundle/chunks/{test-runs-5SLLV3XU.js → chunk-N7X4WP6L.js} +11 -8
  167. package/dist/cli-bundle/chunks/{test-runs-5SLLV3XU.js.map → chunk-N7X4WP6L.js.map} +1 -1
  168. package/dist/cli-bundle/chunks/{chunk-AZMPKLIA.js → chunk-NBFCNJ7Q.js} +177 -126
  169. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-YZR7UMZ6.js → chunk-NER3KUUS.js} +2 -2
  171. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
  172. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
  173. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
  174. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-DJ5S2LDY.js → chunk-OESSOFJ4.js} +14 -12
  176. package/dist/cli-bundle/chunks/{chunk-DJ5S2LDY.js.map → chunk-OESSOFJ4.js.map} +1 -1
  177. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
  178. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-TUV7SIWZ.js → chunk-OWTIRHX4.js} +28 -6
  180. package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-PV5JS7MP.js → chunk-P3VRG72Q.js} +10 -8
  182. package/dist/cli-bundle/chunks/{chunk-PV5JS7MP.js.map → chunk-P3VRG72Q.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
  184. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
  185. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
  186. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
  187. package/dist/cli-bundle/chunks/{chunk-WTXDLBSZ.js → chunk-PDXT6Q55.js} +2 -2
  188. package/dist/cli-bundle/chunks/{chunk-YZWXMDNH.js → chunk-PJ3A56YF.js} +46 -537
  189. package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{test-runs-L3WKLO67.js → chunk-PPAJG4GB.js} +13 -10
  191. package/dist/cli-bundle/chunks/{test-runs-L3WKLO67.js.map → chunk-PPAJG4GB.js.map} +1 -1
  192. package/dist/cli-bundle/chunks/{chunk-LLQLLAKU.js → chunk-PPE4YUQM.js} +1670 -1573
  193. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
  194. package/dist/cli-bundle/chunks/{chunk-TO4KCIOT.js → chunk-QHZO65XW.js} +8 -6
  195. package/dist/cli-bundle/chunks/{chunk-TO4KCIOT.js.map → chunk-QHZO65XW.js.map} +1 -1
  196. package/dist/cli-bundle/chunks/{chunk-4OXNQHKQ.js → chunk-R3ZBLGTC.js} +9 -10
  197. package/dist/cli-bundle/chunks/{chunk-4OXNQHKQ.js.map → chunk-R3ZBLGTC.js.map} +2 -2
  198. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
  199. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-724VLYDJ.js → chunk-RX3HQSYG.js} +2 -2
  201. package/dist/cli-bundle/chunks/{chunk-PUVPC5DL.js → chunk-S4APD35C.js} +4 -4
  202. package/dist/cli-bundle/chunks/{chunk-T5RTYLZJ.js → chunk-S5AYOUT5.js} +8 -6
  203. package/dist/cli-bundle/chunks/{chunk-T5RTYLZJ.js.map → chunk-S5AYOUT5.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{chunk-75VMARGO.js → chunk-STPSZ2XY.js} +19 -744
  205. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{chunk-A2W3XKAD.js → chunk-T35XLYZF.js} +2 -2
  207. package/dist/cli-bundle/chunks/{chunk-N2LOJUBB.js → chunk-T3ABIMGW.js} +5 -3
  208. package/dist/cli-bundle/chunks/{chunk-N2LOJUBB.js.map → chunk-T3ABIMGW.js.map} +1 -1
  209. package/dist/cli-bundle/chunks/{chunk-FDNJMYZB.js → chunk-T3F4DF23.js} +16 -14
  210. package/dist/cli-bundle/chunks/{chunk-FDNJMYZB.js.map → chunk-T3F4DF23.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
  212. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
  213. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
  214. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-XFO2NJY6.js → chunk-TSPKZRRW.js} +33 -28
  216. package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-ZZWMJVW2.js → chunk-TT42JUMF.js} +4 -4
  218. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
  219. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
  220. package/dist/cli-bundle/chunks/{chunk-7745CXNI.js → chunk-UI5BJ6DO.js} +1231 -1134
  221. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
  222. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
  223. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
  224. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
  225. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
  227. package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
  228. package/dist/cli-bundle/chunks/{contracts-NLCDIZAT.js → chunk-VZIYHZDX.js} +11 -8
  229. package/dist/cli-bundle/chunks/{contracts-NLCDIZAT.js.map → chunk-VZIYHZDX.js.map} +1 -1
  230. package/dist/cli-bundle/chunks/{chunk-TGYDJEJH.js → chunk-WISPVC2E.js} +9 -7
  231. package/dist/cli-bundle/chunks/{chunk-TGYDJEJH.js.map → chunk-WISPVC2E.js.map} +1 -1
  232. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
  233. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-MTB4PRA3.js → chunk-XQCG2JGW.js} +17 -749
  235. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
  236. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
  237. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
  238. package/dist/cli-bundle/chunks/{chunk-SL2ANJSV.js → chunk-YD5FML7K.js} +418 -2173
  239. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
  240. package/dist/cli-bundle/chunks/{chunk-NHKXOMZ5.js → chunk-YFIE7YK6.js} +7 -5
  241. package/dist/cli-bundle/chunks/{chunk-NHKXOMZ5.js.map → chunk-YFIE7YK6.js.map} +1 -1
  242. package/dist/cli-bundle/chunks/{chunk-5FYY76HR.js → chunk-YMABYTNG.js} +32 -27
  243. package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-W5X3AHJN.js → chunk-YOF5VPKM.js} +2 -2
  245. package/dist/cli-bundle/chunks/{chunk-M6PR5BC6.js → chunk-YPPVU5GX.js} +11 -9
  246. package/dist/cli-bundle/chunks/{chunk-M6PR5BC6.js.map → chunk-YPPVU5GX.js.map} +1 -1
  247. package/dist/cli-bundle/chunks/{chunk-ZIEGTQCY.js → chunk-YQMMMONE.js} +6 -4
  248. package/dist/cli-bundle/chunks/{chunk-ZIEGTQCY.js.map → chunk-YQMMMONE.js.map} +1 -1
  249. package/dist/cli-bundle/chunks/{chunk-4IW7STMB.js → chunk-YSAH5FY5.js} +16 -14
  250. package/dist/cli-bundle/chunks/{chunk-4IW7STMB.js.map → chunk-YSAH5FY5.js.map} +1 -1
  251. package/dist/cli-bundle/chunks/{chunk-JYLFF7GJ.js → chunk-YZIR4R3U.js} +16 -14
  252. package/dist/cli-bundle/chunks/{chunk-JYLFF7GJ.js.map → chunk-YZIR4R3U.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{chunk-7G5SUU6F.js → chunk-Z2CRRZYF.js} +14 -12
  254. package/dist/cli-bundle/chunks/{chunk-7G5SUU6F.js.map → chunk-Z2CRRZYF.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
  256. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
  257. package/dist/cli-bundle/chunks/{chunk-WOOB7PV7.js → chunk-ZCJAA3JK.js} +8 -6
  258. package/dist/cli-bundle/chunks/{chunk-WOOB7PV7.js.map → chunk-ZCJAA3JK.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{chunk-WSDIALO4.js → chunk-ZD34OFFQ.js} +5 -3
  260. package/dist/cli-bundle/chunks/{chunk-WSDIALO4.js.map → chunk-ZD34OFFQ.js.map} +1 -1
  261. package/dist/cli-bundle/chunks/{chunk-Q3XVLRCJ.js → chunk-ZJB3UV5U.js} +54 -58
  262. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{chunk-MZ4NH46V.js → chunk-ZMD35NYG.js} +2 -2
  264. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
  265. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{claim-D6L33A5Y.js → claim-4DROPSIS.js} +30 -13
  267. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
  268. package/dist/cli-bundle/chunks/{claim-YAFUTPVK.js → claim-VX54TV5U.js} +29 -12
  269. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{close-TGYXG7TV.js → close-3YRR3XY6.js} +9 -7
  271. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
  272. package/dist/cli-bundle/chunks/{close-many-SNA6LNZH.js → close-many-AP4MWU36.js} +21 -18
  273. package/dist/cli-bundle/chunks/{close-many-SNA6LNZH.js.map → close-many-AP4MWU36.js.map} +1 -1
  274. package/dist/cli-bundle/chunks/{close-many-4QSWKCRU.js → close-many-OMZIGZB4.js} +19 -16
  275. package/dist/cli-bundle/chunks/{close-many-4QSWKCRU.js.map → close-many-OMZIGZB4.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{comments-QC6ARR5X.js → comments-MIW5MZOX.js} +12 -9
  277. package/dist/cli-bundle/chunks/{comments-QC6ARR5X.js.map → comments-MIW5MZOX.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{comments-ZHVYGUVC.js → comments-SAG5LSKL.js} +14 -11
  279. package/dist/cli-bundle/chunks/{comments-ZHVYGUVC.js.map → comments-SAG5LSKL.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{config-O6W2EU2G.js → config-DJJKZB5R.js} +20 -17
  281. package/dist/cli-bundle/chunks/{config-O6W2EU2G.js.map → config-DJJKZB5R.js.map} +1 -1
  282. package/dist/cli-bundle/chunks/{config-XQRFJXJP.js → config-V57QD47V.js} +22 -19
  283. package/dist/cli-bundle/chunks/{config-XQRFJXJP.js.map → config-V57QD47V.js.map} +1 -1
  284. package/dist/cli-bundle/chunks/{context-IHE3IXN5.js → context-4OQGIPSO.js} +15 -12
  285. package/dist/cli-bundle/chunks/{context-WSYWBEUL.js → context-WLA6IAWE.js} +15 -12
  286. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
  287. package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
  288. package/dist/cli-bundle/chunks/{copy-7MUQC44A.js → copy-LEE6P6EM.js} +17 -14
  289. package/dist/cli-bundle/chunks/{copy-7MUQC44A.js.map → copy-LEE6P6EM.js.map} +2 -2
  290. package/dist/cli-bundle/chunks/{copy-ANWXDJVC.js → copy-OTJOWFL6.js} +18 -15
  291. package/dist/cli-bundle/chunks/{copy-ANWXDJVC.js.map → copy-OTJOWFL6.js.map} +1 -1
  292. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
  293. package/dist/cli-bundle/chunks/{create-JIA2IFCO.js → create-XWWQFQ6S.js} +14 -12
  294. package/dist/cli-bundle/chunks/{delete-5OLYWQIC.js → delete-62JQTYT4.js} +10 -7
  295. package/dist/cli-bundle/chunks/{delete-5OLYWQIC.js.map → delete-62JQTYT4.js.map} +1 -1
  296. package/dist/cli-bundle/chunks/{delete-INHKCIRN.js → delete-HQKGRNRZ.js} +12 -9
  297. package/dist/cli-bundle/chunks/{delete-INHKCIRN.js.map → delete-HQKGRNRZ.js.map} +1 -1
  298. package/dist/cli-bundle/chunks/{deps-IYEID3QX.js → deps-55FTG6Z5.js} +12 -9
  299. package/dist/cli-bundle/chunks/{deps-IYEID3QX.js.map → deps-55FTG6Z5.js.map} +1 -1
  300. package/dist/cli-bundle/chunks/{deps-CCSWGZW7.js → deps-L2FPIAD3.js} +10 -7
  301. package/dist/cli-bundle/chunks/{deps-CCSWGZW7.js.map → deps-L2FPIAD3.js.map} +1 -1
  302. package/dist/cli-bundle/chunks/{docs-PKO7OEIM.js → docs-6CRCSVKK.js} +11 -9
  303. package/dist/cli-bundle/chunks/{docs-PKO7OEIM.js.map → docs-6CRCSVKK.js.map} +1 -1
  304. package/dist/cli-bundle/chunks/{docs-3XZK22WF.js → docs-S6UTOTO5.js} +9 -7
  305. package/dist/cli-bundle/chunks/{docs-3XZK22WF.js.map → docs-S6UTOTO5.js.map} +1 -1
  306. package/dist/cli-bundle/chunks/{eval-5XYP6NMY.js → eval-N6UHFWVO.js} +15 -11
  307. package/dist/cli-bundle/chunks/{eval-5XYP6NMY.js.map → eval-N6UHFWVO.js.map} +1 -1
  308. package/dist/cli-bundle/chunks/{eval-O4WGQYDI.js → eval-PHOTWYHI.js} +17 -13
  309. package/dist/cli-bundle/chunks/{eval-O4WGQYDI.js.map → eval-PHOTWYHI.js.map} +1 -1
  310. package/dist/cli-bundle/chunks/{extension-T7JNTAAA.js → extension-NBAH62ML.js} +17 -11
  311. package/dist/cli-bundle/chunks/{extension-PVGRRZZG.js → extension-ZF6ZZPOU.js} +17 -11
  312. package/dist/cli-bundle/chunks/{files-W7HH5EOD.js → files-6P57MRKL.js} +12 -9
  313. package/dist/cli-bundle/chunks/{files-W7HH5EOD.js.map → files-6P57MRKL.js.map} +1 -1
  314. package/dist/cli-bundle/chunks/{files-7IU56S6R.js → files-JPU3FNJ7.js} +14 -11
  315. package/dist/cli-bundle/chunks/{files-7IU56S6R.js.map → files-JPU3FNJ7.js.map} +1 -1
  316. package/dist/cli-bundle/chunks/{focus-6FA5KYRY.js → focus-LFZ6IDBR.js} +15 -11
  317. package/dist/cli-bundle/chunks/{focus-6FA5KYRY.js.map → focus-LFZ6IDBR.js.map} +1 -1
  318. package/dist/cli-bundle/chunks/{focus-CQ63JFDG.js → focus-WNMYCVYA.js} +13 -9
  319. package/dist/cli-bundle/chunks/{focus-CQ63JFDG.js.map → focus-WNMYCVYA.js.map} +1 -1
  320. package/dist/cli-bundle/chunks/{gc-3BG67KTO.js → gc-AETFKZ44.js} +10 -7
  321. package/dist/cli-bundle/chunks/{gc-3BG67KTO.js.map → gc-AETFKZ44.js.map} +1 -1
  322. package/dist/cli-bundle/chunks/{gc-PEZYGNVB.js → gc-RLBP4QVN.js} +12 -9
  323. package/dist/cli-bundle/chunks/{gc-PEZYGNVB.js.map → gc-RLBP4QVN.js.map} +1 -1
  324. package/dist/cli-bundle/chunks/{get-J6CSJ4SX.js → get-NH2MPBCI.js} +18 -15
  325. package/dist/cli-bundle/chunks/{get-J6CSJ4SX.js.map → get-NH2MPBCI.js.map} +1 -1
  326. package/dist/cli-bundle/chunks/{get-KJTKGNEQ.js → get-P4ZQXCPZ.js} +16 -13
  327. package/dist/cli-bundle/chunks/{get-KJTKGNEQ.js.map → get-P4ZQXCPZ.js.map} +1 -1
  328. package/dist/cli-bundle/chunks/{health-32UQICEL.js → health-3GVPMQBL.js} +36 -29
  329. package/dist/cli-bundle/chunks/{health-32UQICEL.js.map → health-3GVPMQBL.js.map} +1 -1
  330. package/dist/cli-bundle/chunks/{health-ZUZG5ULV.js → health-DNTM72GJ.js} +34 -27
  331. package/dist/cli-bundle/chunks/{health-ZUZG5ULV.js.map → health-DNTM72GJ.js.map} +1 -1
  332. package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
  333. package/dist/cli-bundle/chunks/{history-W6QVR6FA.js → history-SGPYRAFT.js} +10 -8
  334. package/dist/cli-bundle/chunks/{history-compact-JQ6ZGYSJ.js → history-compact-3F6VELO7.js} +18 -15
  335. package/dist/cli-bundle/chunks/{history-compact-JQ6ZGYSJ.js.map → history-compact-3F6VELO7.js.map} +1 -1
  336. package/dist/cli-bundle/chunks/{history-compact-F355EGL4.js → history-compact-656Y2TN4.js} +20 -17
  337. package/dist/cli-bundle/chunks/{history-compact-F355EGL4.js.map → history-compact-656Y2TN4.js.map} +1 -1
  338. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
  339. package/dist/cli-bundle/chunks/{history-redact-TUWOUYX5.js → history-redact-54ICFKXM.js} +11 -9
  340. package/dist/cli-bundle/chunks/{history-repair-ZKS3LKPV.js → history-repair-4N6SDVHK.js} +17 -14
  341. package/dist/cli-bundle/chunks/{history-repair-ZKS3LKPV.js.map → history-repair-4N6SDVHK.js.map} +1 -1
  342. package/dist/cli-bundle/chunks/{history-repair-MPCAIKYE.js → history-repair-EVTO6LIH.js} +19 -16
  343. package/dist/cli-bundle/chunks/{history-repair-MPCAIKYE.js.map → history-repair-EVTO6LIH.js.map} +1 -1
  344. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
  345. package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
  346. package/dist/cli-bundle/chunks/{learnings-EYC3OKS2.js → learnings-2HTPZNGZ.js} +10 -8
  347. package/dist/cli-bundle/chunks/{learnings-EYC3OKS2.js.map → learnings-2HTPZNGZ.js.map} +1 -1
  348. package/dist/cli-bundle/chunks/{learnings-HKJJUVTA.js → learnings-YBIHY3D6.js} +12 -10
  349. package/dist/cli-bundle/chunks/{learnings-HKJJUVTA.js.map → learnings-YBIHY3D6.js.map} +1 -1
  350. package/dist/cli-bundle/chunks/{list-KN3TL5Y5.js → list-64LHZ3HM.js} +10 -8
  351. package/dist/cli-bundle/chunks/{list-HFD5737R.js → list-7LXBTEKI.js} +10 -8
  352. package/dist/cli-bundle/chunks/{next-DQUMFAHG.js → next-7ODPAQ4U.js} +22 -18
  353. package/dist/cli-bundle/chunks/{next-DQUMFAHG.js.map → next-7ODPAQ4U.js.map} +1 -1
  354. package/dist/cli-bundle/chunks/{next-JUEYC5HE.js → next-ODJUM4ZM.js} +24 -20
  355. package/dist/cli-bundle/chunks/{next-JUEYC5HE.js.map → next-ODJUM4ZM.js.map} +1 -1
  356. package/dist/cli-bundle/chunks/{notes-ZG6RLZXB.js → notes-72YXN5JX.js} +10 -8
  357. package/dist/cli-bundle/chunks/{notes-ZG6RLZXB.js.map → notes-72YXN5JX.js.map} +1 -1
  358. package/dist/cli-bundle/chunks/{notes-XATYT43P.js → notes-NJ7IQJX4.js} +12 -10
  359. package/dist/cli-bundle/chunks/{notes-XATYT43P.js.map → notes-NJ7IQJX4.js.map} +1 -1
  360. package/dist/cli-bundle/chunks/{plan-DVVLX7LK.js → plan-R4NDQ27E.js} +18 -15
  361. package/dist/cli-bundle/chunks/{plan-DVVLX7LK.js.map → plan-R4NDQ27E.js.map} +1 -1
  362. package/dist/cli-bundle/chunks/{plan-5NWQL2DH.js → plan-XWY5T67S.js} +20 -17
  363. package/dist/cli-bundle/chunks/{plan-5NWQL2DH.js.map → plan-XWY5T67S.js.map} +1 -1
  364. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
  365. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
  366. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
  367. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
  368. package/dist/cli-bundle/chunks/{register-list-query-WRS6ACUW.js → register-list-query-5H66WFYF.js} +22 -19
  369. package/dist/cli-bundle/chunks/{register-list-query-WRS6ACUW.js.map → register-list-query-5H66WFYF.js.map} +1 -1
  370. package/dist/cli-bundle/chunks/{register-list-query-PNRAHNIQ.js → register-list-query-FB3FNDLZ.js} +24 -21
  371. package/dist/cli-bundle/chunks/{register-list-query-PNRAHNIQ.js.map → register-list-query-FB3FNDLZ.js.map} +1 -1
  372. package/dist/cli-bundle/chunks/{register-mutation-K2MNRWGI.js → register-mutation-UJO23C7R.js} +42 -39
  373. package/dist/cli-bundle/chunks/{register-mutation-K2MNRWGI.js.map → register-mutation-UJO23C7R.js.map} +1 -1
  374. package/dist/cli-bundle/chunks/{register-mutation-ET6E4VLE.js → register-mutation-Z2ETYHKS.js} +40 -37
  375. package/dist/cli-bundle/chunks/{register-mutation-ET6E4VLE.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{register-operations-6DQRUTIX.js → register-operations-A3XAM5J7.js} +39 -36
  377. package/dist/cli-bundle/chunks/{register-operations-6DQRUTIX.js.map → register-operations-A3XAM5J7.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{register-operations-73UDWMVB.js → register-operations-SG7HBSUP.js} +37 -34
  379. package/dist/cli-bundle/chunks/{register-operations-73UDWMVB.js.map → register-operations-SG7HBSUP.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{register-setup-LYYCMQFV.js → register-setup-I45OGJUV.js} +25 -19
  381. package/dist/cli-bundle/chunks/{register-setup-LYYCMQFV.js.map → register-setup-I45OGJUV.js.map} +1 -1
  382. package/dist/cli-bundle/chunks/{register-setup-FXZJ2CEJ.js → register-setup-K6U3NVY5.js} +23 -17
  383. package/dist/cli-bundle/chunks/{register-setup-FXZJ2CEJ.js.map → register-setup-K6U3NVY5.js.map} +1 -1
  384. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
  385. package/dist/cli-bundle/chunks/{restore-R6YJHQK3.js → restore-YJ2ET6AT.js} +11 -9
  386. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OGODPUBL.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
  387. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OGODPUBL.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
  388. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LE4S7OI7.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
  389. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LE4S7OI7.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
  390. package/dist/cli-bundle/chunks/{schema-ICCD3HOP.js → schema-2PUXCZ25.js} +10 -7
  391. package/dist/cli-bundle/chunks/{schema-RHH23PQX.js → schema-Y6DXXK2F.js} +10 -7
  392. package/dist/cli-bundle/chunks/{search-Z2VGP2Q5.js → search-3S72CTD6.js} +13 -10
  393. package/dist/cli-bundle/chunks/{search-HDDKOPFE.js → search-WNUNBQXO.js} +13 -10
  394. package/dist/cli-bundle/chunks/{stats-ETFP37MB.js → stats-IJYTRQGV.js} +13 -10
  395. package/dist/cli-bundle/chunks/{stats-ETFP37MB.js.map → stats-IJYTRQGV.js.map} +1 -1
  396. package/dist/cli-bundle/chunks/{stats-DHMRXHOB.js → stats-L2D5Y2O5.js} +15 -12
  397. package/dist/cli-bundle/chunks/{stats-DHMRXHOB.js.map → stats-L2D5Y2O5.js.map} +1 -1
  398. package/dist/cli-bundle/chunks/{telemetry-ZRBM22QD.js → telemetry-L2CVOKVN.js} +11 -8
  399. package/dist/cli-bundle/chunks/{telemetry-ZRBM22QD.js.map → telemetry-L2CVOKVN.js.map} +1 -1
  400. package/dist/cli-bundle/chunks/{telemetry-NUZNKDCP.js → telemetry-QBYWQA76.js} +13 -10
  401. package/dist/cli-bundle/chunks/{telemetry-NUZNKDCP.js.map → telemetry-QBYWQA76.js.map} +1 -1
  402. package/dist/cli-bundle/chunks/{test-XNKTIP4Y.js → test-DQ2QFJ7W.js} +21 -15
  403. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
  404. package/dist/cli-bundle/chunks/{test-all-APCBSXQI.js → test-all-636NTRTT.js} +26 -19
  405. package/dist/cli-bundle/chunks/{test-all-APCBSXQI.js.map → test-all-636NTRTT.js.map} +1 -1
  406. package/dist/cli-bundle/chunks/{test-all-KIK3OYBY.js → test-all-DWYK3RG6.js} +24 -17
  407. package/dist/cli-bundle/chunks/{test-all-KIK3OYBY.js.map → test-all-DWYK3RG6.js.map} +1 -1
  408. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
  409. package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
  410. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
  411. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
  412. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
  413. package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
  414. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
  415. package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
  416. package/dist/cli-bundle/chunks/{update-many-XGTJ7QIU.js → update-many-DC7X3EWM.js} +32 -29
  417. package/dist/cli-bundle/chunks/{update-many-XGTJ7QIU.js.map → update-many-DC7X3EWM.js.map} +1 -1
  418. package/dist/cli-bundle/chunks/{update-many-GFCQG6ZQ.js → update-many-SLLAMHT7.js} +34 -31
  419. package/dist/cli-bundle/chunks/{update-many-GFCQG6ZQ.js.map → update-many-SLLAMHT7.js.map} +1 -1
  420. package/dist/cli-bundle/chunks/{upgrade-KJ3JGELR.js → upgrade-HFFXLZJA.js} +19 -12
  421. package/dist/cli-bundle/chunks/{upgrade-KJ3JGELR.js.map → upgrade-HFFXLZJA.js.map} +1 -1
  422. package/dist/cli-bundle/chunks/{upgrade-RBRQ7PQU.js → upgrade-UYQKM7RF.js} +21 -14
  423. package/dist/cli-bundle/chunks/{upgrade-RBRQ7PQU.js.map → upgrade-UYQKM7RF.js.map} +1 -1
  424. package/dist/cli-bundle/chunks/{validate-EW6TGC7R.js → validate-PA4FDTOV.js} +34 -27
  425. package/dist/cli-bundle/chunks/{validate-EW6TGC7R.js.map → validate-PA4FDTOV.js.map} +2 -2
  426. package/dist/cli-bundle/chunks/{validate-T6PR5WAL.js → validate-Z7L75YEJ.js} +35 -28
  427. package/dist/cli-bundle/chunks/{validate-T6PR5WAL.js.map → validate-Z7L75YEJ.js.map} +1 -1
  428. package/dist/cli-bundle/main.js +173 -57
  429. package/dist/cli-bundle/main.js.map +2 -2
  430. package/dist/cli-bundle/sdk-runtime.js +247 -0
  431. package/dist/cli-bundle/sdk-runtime.js.map +7 -0
  432. package/dist/cli-bundle/sdk-testing.js +101 -0
  433. package/dist/cli-bundle/sdk-testing.js.map +7 -0
  434. package/dist/cli-bundle/sdk.js +787 -0
  435. package/dist/cli-bundle/sdk.js.map +7 -0
  436. package/dist/core/config/nested-settings.d.ts +4 -3
  437. package/dist/core/config/nested-settings.js +17 -6
  438. package/dist/core/config/nested-settings.js.map +1 -1
  439. package/dist/core/extensions/activation-summary.d.ts +6 -0
  440. package/dist/core/extensions/activation-summary.js +10 -4
  441. package/dist/core/extensions/activation-summary.js.map +1 -1
  442. package/dist/core/extensions/capability-usage.d.ts +6 -0
  443. package/dist/core/extensions/capability-usage.js +10 -4
  444. package/dist/core/extensions/capability-usage.js.map +1 -1
  445. package/dist/core/extensions/extension-types.d.ts +5 -0
  446. package/dist/core/extensions/extension-types.js +2 -2
  447. package/dist/core/extensions/extension-types.js.map +1 -1
  448. package/dist/core/extensions/loader.d.ts +3 -0
  449. package/dist/core/extensions/loader.js +11 -19
  450. package/dist/core/extensions/loader.js.map +1 -1
  451. package/dist/core/history/history-rewrite.js +3 -3
  452. package/dist/core/history/history-rewrite.js.map +1 -1
  453. package/dist/core/item/parent-reference-policy.d.ts +9 -1
  454. package/dist/core/item/parent-reference-policy.js +28 -4
  455. package/dist/core/item/parent-reference-policy.js.map +1 -1
  456. package/dist/core/lock/lock.d.ts +28 -1
  457. package/dist/core/lock/lock.js +254 -20
  458. package/dist/core/lock/lock.js.map +1 -1
  459. package/dist/core/search/background-refresh.js +7 -19
  460. package/dist/core/search/background-refresh.js.map +1 -1
  461. package/dist/core/search/http-client.d.ts +0 -1
  462. package/dist/core/search/http-client.js +3 -3
  463. package/dist/core/search/http-client.js.map +1 -1
  464. package/dist/core/shared/constants.js +3 -2
  465. package/dist/core/shared/constants.js.map +1 -1
  466. package/dist/core/shared/errors.d.ts +1 -0
  467. package/dist/core/shared/errors.js +2 -2
  468. package/dist/core/shared/errors.js.map +1 -1
  469. package/dist/core/shared/primitives.d.ts +12 -0
  470. package/dist/core/shared/primitives.js +29 -2
  471. package/dist/core/shared/primitives.js.map +1 -1
  472. package/dist/core/store/item-store.js +3 -3
  473. package/dist/core/store/item-store.js.map +1 -1
  474. package/dist/core/store/settings-validator.d.ts +1 -0
  475. package/dist/core/store/settings-validator.js +6 -3
  476. package/dist/core/store/settings-validator.js.map +1 -1
  477. package/dist/core/store/settings.js +3 -3
  478. package/dist/core/store/settings.js.map +1 -1
  479. package/dist/core/validate/fix-planning.d.ts +0 -2
  480. package/dist/core/validate/fix-planning.js +3 -3
  481. package/dist/core/validate/fix-planning.js.map +1 -1
  482. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  483. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  484. package/dist/sdk/cli-contracts/flag-contracts.js +3 -2
  485. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  486. package/dist/sdk/errors.d.ts +21 -2
  487. package/dist/sdk/errors.js +8 -2
  488. package/dist/sdk/errors.js.map +1 -1
  489. package/dist/sdk/package-import-adapters.js +3 -3
  490. package/dist/sdk/package-import-adapters.js.map +1 -1
  491. package/dist/sdk/testing.js +41 -19
  492. package/dist/sdk/testing.js.map +1 -1
  493. package/dist/types.d.ts +6 -0
  494. package/dist/types.js +2 -2
  495. package/dist/types.js.map +1 -1
  496. package/docs/ARCHITECTURE.md +27 -0
  497. package/docs/CONFIGURATION.md +3 -0
  498. package/docs/README.md +1 -0
  499. package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
  500. package/docs/TESTING.md +5 -1
  501. package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
  502. package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
  503. package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
  504. package/package.json +11 -24
  505. package/packages/pm-beads/extensions/beads/package.json +3 -0
  506. package/packages/pm-beads/extensions/beads/runtime-loader.ts +24 -2
  507. package/packages/pm-calendar/extensions/calendar/package.json +3 -0
  508. package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
  509. package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
  510. package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
  511. package/packages/pm-kanban/extensions/kanban/package.json +3 -0
  512. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
  513. package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
  514. package/packages/pm-templates/extensions/templates/package.json +3 -0
  515. package/packages/pm-todos/extensions/todos/package.json +3 -0
  516. package/packages/pm-todos/extensions/todos/runtime-loader.ts +21 -3
  517. package/scripts/bundle-cli.mjs +12 -2
  518. package/dist/cli-bundle/chunks/activity-IDS5GSYG.js +0 -16
  519. package/dist/cli-bundle/chunks/chunk-2VK677OA.js.map +0 -7
  520. package/dist/cli-bundle/chunks/chunk-5FYY76HR.js.map +0 -7
  521. package/dist/cli-bundle/chunks/chunk-75VMARGO.js.map +0 -1
  522. package/dist/cli-bundle/chunks/chunk-7745CXNI.js.map +0 -7
  523. package/dist/cli-bundle/chunks/chunk-AOP2EMK3.js.map +0 -1
  524. package/dist/cli-bundle/chunks/chunk-AZMPKLIA.js.map +0 -1
  525. package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
  526. package/dist/cli-bundle/chunks/chunk-BDDYM4LH.js.map +0 -7
  527. package/dist/cli-bundle/chunks/chunk-CN4OAA2G.js.map +0 -7
  528. package/dist/cli-bundle/chunks/chunk-EH23N5FX.js.map +0 -1
  529. package/dist/cli-bundle/chunks/chunk-FMWQRMHS.js.map +0 -1
  530. package/dist/cli-bundle/chunks/chunk-J4KNRDI3.js.map +0 -1
  531. package/dist/cli-bundle/chunks/chunk-KKHIQOTN.js.map +0 -7
  532. package/dist/cli-bundle/chunks/chunk-LLQLLAKU.js.map +0 -1
  533. package/dist/cli-bundle/chunks/chunk-M34MVAOP.js.map +0 -1
  534. package/dist/cli-bundle/chunks/chunk-MTB4PRA3.js.map +0 -7
  535. package/dist/cli-bundle/chunks/chunk-MZG6I2Q2.js.map +0 -7
  536. package/dist/cli-bundle/chunks/chunk-NGDK3KEZ.js.map +0 -7
  537. package/dist/cli-bundle/chunks/chunk-Q3XVLRCJ.js.map +0 -1
  538. package/dist/cli-bundle/chunks/chunk-SBNT6SLO.js.map +0 -7
  539. package/dist/cli-bundle/chunks/chunk-SL2ANJSV.js.map +0 -1
  540. package/dist/cli-bundle/chunks/chunk-TUV7SIWZ.js.map +0 -7
  541. package/dist/cli-bundle/chunks/chunk-UGDONITK.js.map +0 -7
  542. package/dist/cli-bundle/chunks/chunk-UYLA5ROU.js.map +0 -1
  543. package/dist/cli-bundle/chunks/chunk-WBWRQS32.js.map +0 -1
  544. package/dist/cli-bundle/chunks/chunk-XFO2NJY6.js.map +0 -1
  545. package/dist/cli-bundle/chunks/chunk-XQCWTSLO.js.map +0 -1
  546. package/dist/cli-bundle/chunks/chunk-YZWXMDNH.js.map +0 -1
  547. package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
  548. package/dist/cli-bundle/chunks/claim-D6L33A5Y.js.map +0 -1
  549. package/dist/cli-bundle/chunks/claim-YAFUTPVK.js.map +0 -7
  550. package/dist/cli-bundle/chunks/close-KLDLHAOP.js +0 -14
  551. package/dist/cli-bundle/chunks/create-AJ6HUR5W.js +0 -28
  552. package/dist/cli-bundle/chunks/history-IOH6FKG7.js +0 -18
  553. package/dist/cli-bundle/chunks/history-redact-VVDOARNO.js +0 -19
  554. package/dist/cli-bundle/chunks/init-CZLEEE6Q.js +0 -22
  555. package/dist/cli-bundle/chunks/init-MAA6UMNQ.js +0 -26
  556. package/dist/cli-bundle/chunks/profile-54DZ4CLB.js +0 -1205
  557. package/dist/cli-bundle/chunks/profile-54DZ4CLB.js.map +0 -1
  558. package/dist/cli-bundle/chunks/profile-PLIQVEOY.js +0 -1243
  559. package/dist/cli-bundle/chunks/profile-PLIQVEOY.js.map +0 -7
  560. package/dist/cli-bundle/chunks/restore-L27TMMCF.js +0 -17
  561. package/dist/cli-bundle/chunks/test-H36PM746.js +0 -35
  562. package/dist/cli-bundle/chunks/update-RQKI3AMW.js +0 -24
  563. package/dist/cli-bundle/chunks/update-ZM7NJWHY.js +0 -28
  564. /package/dist/cli-bundle/chunks/{activity-IDS5GSYG.js.map → activity-4XQIDNM5.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{activity-OENQCYZD.js.map → activity-YKAKZTZ4.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-4SHME4VR.js.map → chunk-5JE6SMYS.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-4EVY7CQN.js.map → chunk-N6DNM2FA.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-YZR7UMZ6.js.map → chunk-NER3KUUS.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-WTXDLBSZ.js.map → chunk-PDXT6Q55.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-724VLYDJ.js.map → chunk-RX3HQSYG.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-PUVPC5DL.js.map → chunk-S4APD35C.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-A2W3XKAD.js.map → chunk-T35XLYZF.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{chunk-ZZWMJVW2.js.map → chunk-TT42JUMF.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{chunk-W5X3AHJN.js.map → chunk-YOF5VPKM.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{chunk-MZ4NH46V.js.map → chunk-ZMD35NYG.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-TGYXG7TV.js.map → close-3YRR3XY6.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{close-KLDLHAOP.js.map → close-OB2Y4QP5.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{context-IHE3IXN5.js.map → context-4OQGIPSO.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-WSYWBEUL.js.map → context-WLA6IAWE.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{create-AJ6HUR5W.js.map → contracts-HXJLKCRI.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{create-JIA2IFCO.js.map → contracts-OJEXMKVW.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{extension-T7JNTAAA.js.map → create-WKOZKPQR.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{extension-PVGRRZZG.js.map → create-XWWQFQ6S.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{history-IOH6FKG7.js.map → extension-NBAH62ML.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{history-W6QVR6FA.js.map → extension-ZF6ZZPOU.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{history-redact-VVDOARNO.js.map → history-RYKLC72X.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{history-redact-TUWOUYX5.js.map → history-SGPYRAFT.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{init-CZLEEE6Q.js.map → history-redact-4H3FCKF3.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{init-MAA6UMNQ.js.map → history-redact-54ICFKXM.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{list-HFD5737R.js.map → init-RPIPQUNV.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{list-KN3TL5Y5.js.map → init-SKQAESQS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{restore-L27TMMCF.js.map → list-64LHZ3HM.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{restore-R6YJHQK3.js.map → list-7LXBTEKI.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{schema-ICCD3HOP.js.map → restore-PXOFL6AM.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{schema-RHH23PQX.js.map → restore-YJ2ET6AT.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{search-HDDKOPFE.js.map → schema-2PUXCZ25.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{search-Z2VGP2Q5.js.map → schema-Y6DXXK2F.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{test-XNKTIP4Y.js.map → search-3S72CTD6.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{test-H36PM746.js.map → search-WNUNBQXO.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{update-ZM7NJWHY.js.map → test-DQ2QFJ7W.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{update-RQKI3AMW.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] = "75a0fe7b-f263-5311-acda-2a527cb2d17d");
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
  })();
@@ -1611,7 +1622,7 @@ function getTestRunResultPath(pmRoot, runId) {
1611
1622
  !(function() {
1612
1623
  try {
1613
1624
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1614
- 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");
1615
1626
  } catch (e2) {
1616
1627
  }
1617
1628
  })();
@@ -1669,6 +1680,23 @@ function asRecordLoose(value) {
1669
1680
  }
1670
1681
  return value;
1671
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
+ }
1672
1700
 
1673
1701
  // dist/core/shared/levenshtein.js
1674
1702
  !(function() {
@@ -1722,6 +1750,139 @@ function levenshteinDistanceWithinLimit(left, right, limit) {
1722
1750
  return result <= limit ? result : null;
1723
1751
  }
1724
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
+
1725
1886
  // dist/core/extensions/extension-registries.js
1726
1887
  !(function() {
1727
1888
  try {
@@ -2395,213 +2556,80 @@ function evaluatePmMaxVersionBound(required, currentVersion, exceededMode) {
2395
2556
  return { kind: "pm_max_version", status: "ok", allowed: true, required: declared, current: currentVersion };
2396
2557
  }
2397
2558
 
2398
- // dist/core/extensions/extension-capability-aliases.js
2559
+ // dist/core/extensions/extension-policy.js
2399
2560
  !(function() {
2400
2561
  try {
2401
2562
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2402
- 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");
2403
2564
  } catch (e2) {
2404
2565
  }
2405
2566
  })();
2406
- function normalizeNames(values) {
2407
- 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();
2408
2572
  }
2409
- function isKnownExtensionCapability(value) {
2410
- 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));
2411
2575
  }
2412
- function normalizeKnownExtensionCapability(value) {
2576
+ function normalizePolicySurfaceToken(value) {
2413
2577
  const normalized = value.trim().toLowerCase();
2414
- return isKnownExtensionCapability(normalized) ? normalized : null;
2578
+ if (normalized.length === 0) {
2579
+ return "";
2580
+ }
2581
+ const segments = normalized.split(/[.:/]/).map((segment) => segment.replace(/[\s_-]+/g, "")).filter((segment) => segment.length > 0);
2582
+ if (segments.length === 0) {
2583
+ return "";
2584
+ }
2585
+ if (segments.length === 1) {
2586
+ return segments[0];
2587
+ }
2588
+ return `${segments[0]}.${segments.slice(1).join("")}`;
2415
2589
  }
2416
- function collectUnknownExtensionCapabilities(capabilities) {
2417
- return capabilities.filter((capability) => !isKnownExtensionCapability(capability));
2590
+ function normalizePolicySurfaceSet(values) {
2591
+ return new Set((values ?? []).map((value) => normalizePolicySurfaceToken(value)).filter((value) => value.length > 0));
2418
2592
  }
2419
- function resolveLegacyExtensionCapabilityAlias(capability) {
2420
- const normalized = capability.trim().toLowerCase();
2421
- if (normalized.length === 0) {
2422
- return null;
2593
+ function normalizePolicyMode(value) {
2594
+ const normalized = normalizePolicyName(value);
2595
+ if (KNOWN_EXTENSION_POLICY_MODES.includes(normalized)) {
2596
+ return normalized;
2423
2597
  }
2424
- return EXTENSION_CAPABILITY_LEGACY_ALIASES[normalized] ?? null;
2598
+ return "off";
2425
2599
  }
2426
- function normalizeManifestCapabilities(rawCapabilities) {
2427
- const normalizedCapabilities = normalizeNames([...rawCapabilities].map((value) => value.toLowerCase()));
2428
- const remappedCapabilities = [];
2429
- const legacyAliases = [];
2430
- for (const capability of normalizedCapabilities) {
2431
- const legacyAliasTarget = resolveLegacyExtensionCapabilityAlias(capability);
2432
- if (legacyAliasTarget) {
2433
- remappedCapabilities.push(legacyAliasTarget);
2434
- legacyAliases.push({
2435
- alias: capability,
2436
- target: legacyAliasTarget
2437
- });
2438
- continue;
2439
- }
2440
- remappedCapabilities.push(capability);
2600
+ function normalizePolicyTrustMode(value) {
2601
+ const normalized = normalizePolicyName(value);
2602
+ if (KNOWN_EXTENSION_TRUST_MODES.includes(normalized)) {
2603
+ return normalized;
2441
2604
  }
2442
- const dedupedLegacyAliases = [...new Map(legacyAliases.map((entry) => [`${entry.alias}>${entry.target}`, entry])).values()].sort((left, right) => left.alias.localeCompare(right.alias));
2443
- return {
2444
- capabilities: normalizeNames(remappedCapabilities),
2445
- legacy_aliases: dedupedLegacyAliases
2446
- };
2605
+ return "off";
2447
2606
  }
2448
- function suggestKnownExtensionCapability(capability) {
2449
- const normalized = capability.trim().toLowerCase();
2450
- if (normalized.length === 0) {
2451
- return null;
2607
+ function normalizePolicySandboxProfile(value) {
2608
+ const normalized = normalizePolicyName(value);
2609
+ if (KNOWN_EXTENSION_SANDBOX_PROFILES.includes(normalized)) {
2610
+ return normalized;
2452
2611
  }
2453
- const legacyAlias = resolveLegacyExtensionCapabilityAlias(normalized);
2454
- if (legacyAlias) {
2455
- return legacyAlias;
2612
+ return "none";
2613
+ }
2614
+ function normalizePmMaxVersionExceededModeValue(value) {
2615
+ if (typeof value !== "string") {
2616
+ return void 0;
2456
2617
  }
2457
- const maxDistance = Math.max(1, Math.floor(normalized.length * 0.34));
2458
- let bestMatch = null;
2459
- let bestDistance = Number.POSITIVE_INFINITY;
2460
- for (const candidate of KNOWN_EXTENSION_CAPABILITIES) {
2461
- const distance = levenshteinDistanceWithinLimit(normalized, candidate, maxDistance);
2462
- if (distance !== null && distance < bestDistance) {
2463
- bestDistance = distance;
2464
- bestMatch = candidate;
2465
- }
2618
+ const normalized = value.trim().toLowerCase();
2619
+ return KNOWN_PM_MAX_VERSION_EXCEEDED_MODES.includes(normalized) ? normalized : void 0;
2620
+ }
2621
+ function normalizePmMaxVersionExceededMode(value) {
2622
+ if (typeof value === "string") {
2623
+ const mode = normalizePmMaxVersionExceededModeValue(value) ?? "block";
2624
+ return { global: mode, project: mode };
2466
2625
  }
2467
- return bestMatch;
2468
- }
2469
- function formatUnknownExtensionCapabilityWarning(layer, name, capability) {
2470
- const allowed = KNOWN_EXTENSION_CAPABILITIES.join(",");
2471
- const suggested = suggestKnownExtensionCapability(capability) ?? "none";
2472
- return `extension_capability_unknown:${layer}:${name}:${capability}:allowed=${allowed}:suggested=${suggested}`;
2473
- }
2474
- function formatLegacyExtensionCapabilityAliasWarning(layer, name, aliases) {
2475
- const aliasesToken = aliases.map((entry) => `${entry.alias}>${entry.target}`).join(",");
2476
- return `extension_capability_legacy_alias:${layer}:${name}:aliases=${aliasesToken}`;
2477
- }
2478
- function parseUnknownExtensionCapabilityWarning(warning) {
2479
- const match = /^extension_capability_unknown:(global|project):([^:]+):([^:]+):allowed=([^:]+):suggested=([^:]+)$/.exec(warning.trim());
2480
- if (!match) {
2481
- return null;
2482
- }
2483
- const [, layerRaw, name, capability, allowedRaw, suggestedRaw] = match;
2484
- const layer = layerRaw;
2485
- const allowed_capabilities = allowedRaw.split(",").map((value) => value.trim()).filter((value) => value.length > 0);
2486
- const legacyAlias = resolveLegacyExtensionCapabilityAlias(capability);
2487
- const suggestedFromWarning = suggestedRaw === "none" ? void 0 : suggestedRaw;
2488
- const suggested_capability = suggestedFromWarning ?? legacyAlias ?? void 0;
2489
- const suggestion_source = suggested_capability ? legacyAlias === suggested_capability ? "legacy_alias" : "nearest_match" : void 0;
2490
- return {
2491
- layer,
2492
- name,
2493
- capability,
2494
- allowed_capabilities,
2495
- capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
2496
- suggested_capability,
2497
- suggestion_source,
2498
- legacy_alias_target: legacyAlias ?? void 0
2499
- };
2500
- }
2501
- function parseLegacyExtensionCapabilityAliasWarning(warning) {
2502
- const match = /^extension_capability_legacy_alias:(global|project):([^:]+):aliases=(.+)$/.exec(warning.trim());
2503
- if (!match) {
2504
- return [];
2505
- }
2506
- const [, layerRaw, name, aliasesRaw] = match;
2507
- const layer = layerRaw;
2508
- const allowedCapabilities = [...KNOWN_EXTENSION_CAPABILITIES];
2509
- const parsed = [];
2510
- for (const token of aliasesRaw.split(",")) {
2511
- const [rawAlias, rawTarget] = token.split(">");
2512
- const alias = rawAlias?.trim();
2513
- const target = rawTarget?.trim().toLowerCase();
2514
- if (!alias || !target || !isKnownExtensionCapability(target)) {
2515
- continue;
2516
- }
2517
- parsed.push({
2518
- layer,
2519
- name,
2520
- capability: alias,
2521
- allowed_capabilities: allowedCapabilities,
2522
- capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,
2523
- suggested_capability: target,
2524
- suggestion_source: "legacy_alias",
2525
- legacy_alias_target: target
2526
- });
2527
- }
2528
- return parsed;
2529
- }
2530
-
2531
- // dist/core/extensions/extension-policy.js
2532
- !(function() {
2533
- try {
2534
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2535
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbc43b74-6872-52c3-859a-64fe84c02b5b");
2536
- } catch (e2) {
2537
- }
2538
- })();
2539
- function normalizePolicyName(value) {
2540
- if (typeof value !== "string") {
2541
- return "";
2542
- }
2543
- return value.trim().toLowerCase();
2544
- }
2545
- function normalizePolicyStringSet(values) {
2546
- return new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0));
2547
- }
2548
- function normalizePolicySurfaceToken(value) {
2549
- const normalized = value.trim().toLowerCase();
2550
- if (normalized.length === 0) {
2551
- return "";
2552
- }
2553
- const segments = normalized.split(/[.:/]/).map((segment) => segment.replace(/[\s_-]+/g, "")).filter((segment) => segment.length > 0);
2554
- if (segments.length === 0) {
2555
- return "";
2556
- }
2557
- if (segments.length === 1) {
2558
- return segments[0];
2559
- }
2560
- return `${segments[0]}.${segments.slice(1).join("")}`;
2561
- }
2562
- function normalizePolicySurfaceSet(values) {
2563
- return new Set((values ?? []).map((value) => normalizePolicySurfaceToken(value)).filter((value) => value.length > 0));
2564
- }
2565
- function normalizePolicyMode(value) {
2566
- const normalized = normalizePolicyName(value);
2567
- if (KNOWN_EXTENSION_POLICY_MODES.includes(normalized)) {
2568
- return normalized;
2569
- }
2570
- return "off";
2571
- }
2572
- function normalizePolicyTrustMode(value) {
2573
- const normalized = normalizePolicyName(value);
2574
- if (KNOWN_EXTENSION_TRUST_MODES.includes(normalized)) {
2575
- return normalized;
2576
- }
2577
- return "off";
2578
- }
2579
- function normalizePolicySandboxProfile(value) {
2580
- const normalized = normalizePolicyName(value);
2581
- if (KNOWN_EXTENSION_SANDBOX_PROFILES.includes(normalized)) {
2582
- return normalized;
2583
- }
2584
- return "none";
2585
- }
2586
- function normalizePmMaxVersionExceededModeValue(value) {
2587
- if (typeof value !== "string") {
2588
- return void 0;
2589
- }
2590
- const normalized = value.trim().toLowerCase();
2591
- return KNOWN_PM_MAX_VERSION_EXCEEDED_MODES.includes(normalized) ? normalized : void 0;
2592
- }
2593
- function normalizePmMaxVersionExceededMode(value) {
2594
- if (typeof value === "string") {
2595
- const mode = normalizePmMaxVersionExceededModeValue(value) ?? "block";
2596
- return { global: mode, project: mode };
2597
- }
2598
- if (typeof value === "object" && value !== null && !Array.isArray(value)) {
2599
- return {
2600
- global: normalizePmMaxVersionExceededModeValue(value.global) ?? "block",
2601
- project: normalizePmMaxVersionExceededModeValue(value.project) ?? "block"
2602
- };
2603
- }
2604
- return { global: "block", project: "block" };
2626
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
2627
+ return {
2628
+ global: normalizePmMaxVersionExceededModeValue(value.global) ?? "block",
2629
+ project: normalizePmMaxVersionExceededModeValue(value.project) ?? "block"
2630
+ };
2631
+ }
2632
+ return { global: "block", project: "block" };
2605
2633
  }
2606
2634
  function serializePmMaxVersionExceededMode(mode) {
2607
2635
  return mode.global === mode.project ? mode.global : { global: mode.global, project: mode.project };
@@ -3002,7 +3030,7 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
3002
3030
  !(function() {
3003
3031
  try {
3004
3032
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
3005
- 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");
3006
3034
  } catch (e2) {
3007
3035
  }
3008
3036
  })();
@@ -3377,14 +3405,14 @@ function buildEffectiveExtensions(globalCandidates, projectCandidates) {
3377
3405
  }
3378
3406
  return effective;
3379
3407
  }
3380
- async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMaxVersionExceededMode2) {
3408
+ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMaxVersionExceededMode) {
3381
3409
  const diagnostics = [];
3382
3410
  const warnings = [];
3383
3411
  const candidates = [];
3384
3412
  const directories = await listExtensionDirectories(extensionsRoot);
3385
3413
  const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);
3386
3414
  for (const directory of directories) {
3387
- const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2);
3415
+ const scanned = await scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode);
3388
3416
  diagnostics.push(scanned.diagnostic);
3389
3417
  warnings.push(...scanned.warnings);
3390
3418
  if (scanned.candidate) {
@@ -3432,13 +3460,13 @@ function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory,
3432
3460
  }
3433
3461
  return extensionWarnings;
3434
3462
  }
3435
- async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
3463
+ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode) {
3436
3464
  const extensionDir = path5.join(extensionsRoot, directory);
3437
3465
  const manifestPath = path5.join(extensionDir, "manifest.json");
3438
3466
  if (!await pathExists(manifestPath)) {
3439
3467
  return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
3440
3468
  }
3441
- let manifest = null;
3469
+ let manifest;
3442
3470
  try {
3443
3471
  const parsed = JSON.parse(await fs3.readFile(manifestPath, "utf8"));
3444
3472
  manifest = parseManifest(parsed);
@@ -3454,7 +3482,7 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
3454
3482
  const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
3455
3483
  const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
3456
3484
  const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
3457
- const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
3485
+ const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);
3458
3486
  const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
3459
3487
  const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
3460
3488
  const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
@@ -3649,7 +3677,8 @@ async function loadExtensions(options) {
3649
3677
  failed
3650
3678
  };
3651
3679
  }
3652
- 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) {
3653
3682
  try {
3654
3683
  const importHref = await resolveExtensionImportHref(extension, options);
3655
3684
  const module = await import(importHref);
@@ -3674,6 +3703,8 @@ async function loadExtensions(options) {
3674
3703
  failed
3675
3704
  };
3676
3705
  }
3706
+ var DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5e3;
3707
+ var MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2147483647;
3677
3708
  function toActivatableExtension(source) {
3678
3709
  const activate = source.activate;
3679
3710
  const activatable = {
@@ -3686,18 +3717,78 @@ function toActivatableExtension(source) {
3686
3717
  return activatable;
3687
3718
  }
3688
3719
  function resolveActivatableExtension(module) {
3689
- const moduleRecord = asRecordLoose(module);
3690
- if (!moduleRecord) {
3691
- 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 });
3692
3736
  }
3693
- if (typeof moduleRecord.activate === "function") {
3694
- 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 });
3695
3755
  }
3696
- const defaultExport = asRecordLoose(moduleRecord.default);
3697
- if (defaultExport && typeof defaultExport.activate === "function") {
3698
- return toActivatableExtension(defaultExport);
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;
3764
+ }
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);
3699
3791
  }
3700
- return null;
3701
3792
  }
3702
3793
  function isOutputRendererFormat(value) {
3703
3794
  return value === "toon" || value === "json";
@@ -4855,10 +4946,21 @@ async function activateExtensions(loadResult) {
4855
4946
  !(function() {
4856
4947
  try {
4857
4948
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
4858
- 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");
4859
4950
  } catch (e2) {
4860
4951
  }
4861
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
+ };
4862
4964
  var USAGE_KEY_SEPARATOR = ":";
4863
4965
  function usageKey(layer, name) {
4864
4966
  return `${layer}${USAGE_KEY_SEPARATOR}${normalizeExtensionName(name)}`;
@@ -4921,10 +5023,16 @@ function attributeCapabilityUsage(activation) {
4921
5023
  }
4922
5024
  function collectUsedExtensionCapabilities(activation, options = {}) {
4923
5025
  const usage = attributeCapabilityUsage(activation);
4924
- 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
+ }
4925
5033
  const used = /* @__PURE__ */ new Set();
4926
5034
  for (const [key, capabilities] of usage) {
4927
- if (filter !== null && usageKeyName(key) !== filter) {
5035
+ if (filters.size > 0 && !filters.has(usageKeyName(key))) {
4928
5036
  continue;
4929
5037
  }
4930
5038
  for (const capability of capabilities) {
@@ -4949,342 +5057,94 @@ function reconcileExtensionCapabilityUsage(loaded, activation) {
4949
5057
  return reconciliations;
4950
5058
  }
4951
5059
 
4952
- // dist/core/extensions/index.js
5060
+ // dist/core/schema/runtime-schema.js
5061
+ import path6 from "node:path";
4953
5062
  !(function() {
4954
5063
  try {
4955
5064
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
4956
- 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");
4957
5066
  } catch (e2) {
4958
5067
  }
4959
5068
  })();
4960
- var activeExtensionHooks = null;
4961
- var activeExtensionCommands = null;
4962
- var activeExtensionParsers = null;
4963
- var activeExtensionPreflight = null;
4964
- var activeExtensionServices = null;
4965
- var activeExtensionRenderers = null;
4966
- var activeExtensionRegistrations = null;
4967
- var activeCommandContext = null;
4968
- var activeCommandResult = void 0;
4969
- var activeAfterCommandAffectedItems = [];
4970
- var AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS = /* @__PURE__ */ new Set([
4971
- "body",
4972
- "comments",
4973
- "dependencies",
4974
- "docs",
4975
- "events",
4976
- "files",
4977
- "learnings",
4978
- "notes",
4979
- "reminders",
4980
- "test_runs",
4981
- "tests"
4982
- ]);
4983
- function setActiveExtensionHooks(hooks) {
4984
- activeExtensionHooks = hooks;
4985
- }
4986
- function setActiveExtensionCommands(commands) {
4987
- activeExtensionCommands = commands;
4988
- }
4989
- function setActiveExtensionParsers(parsers) {
4990
- activeExtensionParsers = parsers;
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));
4991
5085
  }
4992
- function setActiveExtensionPreflight(preflight) {
4993
- activeExtensionPreflight = preflight;
5086
+ function normalizeStatusToken(value) {
5087
+ return typeof value === "string" ? value.trim().toLowerCase().replaceAll(/[\s-]+/g, "_") : "";
4994
5088
  }
4995
- function setActiveExtensionServices(services) {
4996
- activeExtensionServices = services;
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;
4997
5095
  }
4998
- function setActiveExtensionRenderers(renderers) {
4999
- activeExtensionRenderers = renderers;
5096
+ function stripFlagPrefix(value) {
5097
+ return value.startsWith("--") ? value.slice(2) : value;
5000
5098
  }
5001
- function setActiveExtensionRegistrations(registrations) {
5002
- activeExtensionRegistrations = registrations;
5099
+ function normalizeCliToken(value) {
5100
+ return typeof value === "string" ? stripFlagPrefix(value.trim().toLowerCase().replaceAll(/[\s_]+/g, "-")) : "";
5003
5101
  }
5004
- function getActiveExtensionRegistrations() {
5005
- return activeExtensionRegistrations;
5102
+ function keyToDefaultCliFlag(value) {
5103
+ return value.replaceAll("_", "-");
5006
5104
  }
5007
- function setActiveCommandContext(context) {
5008
- activeCommandContext = context;
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;
5109
+ }
5110
+ const [first, ...rest] = segments;
5111
+ return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join("")}`;
5009
5112
  }
5010
- function setActiveCommandResult(result) {
5011
- activeCommandResult = result;
5113
+ function normalizeRuntimeStatusDefinition(definition, fallbackOrder) {
5114
+ const id = normalizeStatusId(definition.id);
5115
+ if (!id) {
5116
+ return null;
5117
+ }
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
5128
+ };
5012
5129
  }
5013
- function getActiveCommandResult() {
5014
- return activeCommandResult;
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
+ };
5015
5139
  }
5016
- function recordAfterCommandAffectedItem(item) {
5017
- if (!item || (activeExtensionHooks?.afterCommand?.length ?? 0) === 0) {
5140
+ function appendTypeWorkflowPair(record, pair) {
5141
+ if (!Array.isArray(pair) || pair.length !== 2) {
5018
5142
  return;
5019
5143
  }
5020
- activeAfterCommandAffectedItems.push(item);
5021
- }
5022
- function projectAfterCommandItemSnapshot(metadata, changedFields) {
5023
- if (!metadata || !metadata.id) {
5024
- return {};
5025
- }
5026
- const snapshot = {
5027
- id: metadata.id,
5028
- type: metadata.type,
5029
- status: metadata.status
5030
- };
5031
- if (!Array.isArray(changedFields)) {
5032
- return snapshot;
5033
- }
5034
- const source = metadata;
5035
- for (const field of changedFields) {
5036
- if (typeof field !== "string") {
5037
- continue;
5038
- }
5039
- const actualField = field.startsWith("unset:") ? field.slice("unset:".length) : field;
5040
- if (actualField === "id" || actualField === "type" || actualField === "status" || AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS.has(actualField)) {
5041
- continue;
5042
- }
5043
- if (Object.hasOwn(source, actualField) && source[actualField] !== void 0) {
5044
- snapshot[actualField] = source[actualField];
5045
- }
5046
- }
5047
- return snapshot;
5048
- }
5049
- function consumeAfterCommandAffectedItems() {
5050
- if (activeAfterCommandAffectedItems.length === 0) {
5051
- return void 0;
5052
- }
5053
- const affected = activeAfterCommandAffectedItems;
5054
- activeAfterCommandAffectedItems = [];
5055
- return affected;
5056
- }
5057
- function clearActiveExtensionHooks() {
5058
- activeExtensionHooks = null;
5059
- activeExtensionCommands = null;
5060
- activeExtensionParsers = null;
5061
- activeExtensionPreflight = null;
5062
- activeExtensionServices = null;
5063
- activeExtensionRenderers = null;
5064
- activeExtensionRegistrations = null;
5065
- activeCommandContext = null;
5066
- activeCommandResult = void 0;
5067
- activeAfterCommandAffectedItems = [];
5068
- }
5069
- async function runActiveOnWriteHooks(context) {
5070
- if (!activeExtensionHooks) {
5071
- return [];
5072
- }
5073
- return runOnWriteHooks(activeExtensionHooks, context);
5074
- }
5075
- async function runActiveOnReadHooks(context) {
5076
- if (!activeExtensionHooks) {
5077
- return [];
5078
- }
5079
- return runOnReadHooks(activeExtensionHooks, context);
5080
- }
5081
- function hasActiveOnReadHooks() {
5082
- return (activeExtensionHooks?.onRead?.length ?? 0) > 0;
5083
- }
5084
- async function runActiveOnIndexHooks(context) {
5085
- if (!activeExtensionHooks) {
5086
- return [];
5087
- }
5088
- return runOnIndexHooks(activeExtensionHooks, context);
5089
- }
5090
- function runActiveCommandOverride(result) {
5091
- if (!activeExtensionCommands || !activeCommandContext) {
5092
- return {
5093
- overridden: false,
5094
- result,
5095
- warnings: []
5096
- };
5097
- }
5098
- return runCommandOverride(activeExtensionCommands, {
5099
- command: activeCommandContext.command,
5100
- args: [...activeCommandContext.args],
5101
- options: activeCommandContext.options ? { ...activeCommandContext.options } : {},
5102
- global: activeCommandContext.global ? { ...activeCommandContext.global } : void 0,
5103
- pm_root: activeCommandContext.pm_root,
5104
- result
5105
- });
5106
- }
5107
- async function runActiveCommandHandler(context) {
5108
- if (!activeExtensionCommands) {
5109
- return {
5110
- handled: false,
5111
- result: null,
5112
- warnings: []
5113
- };
5114
- }
5115
- return runCommandHandler(activeExtensionCommands, context);
5116
- }
5117
- async function runActiveParserOverride(context) {
5118
- if (!activeExtensionParsers) {
5119
- return {
5120
- overridden: false,
5121
- context: {
5122
- command: context.command,
5123
- args: [...context.args],
5124
- options: { ...context.options },
5125
- global: { ...context.global },
5126
- pm_root: context.pm_root
5127
- },
5128
- warnings: []
5129
- };
5130
- }
5131
- return runParserOverride(activeExtensionParsers, context);
5132
- }
5133
- async function runActivePreflightOverride(context) {
5134
- if (!activeExtensionPreflight) {
5135
- return {
5136
- overridden: false,
5137
- context: {
5138
- command: context.command,
5139
- args: [...context.args],
5140
- options: { ...context.options },
5141
- global: { ...context.global },
5142
- pm_root: context.pm_root
5143
- },
5144
- decision: { ...context.decision },
5145
- warnings: []
5146
- };
5147
- }
5148
- return runPreflightOverride(activeExtensionPreflight, context);
5149
- }
5150
- function runActiveRendererOverride(format, result) {
5151
- if (!activeExtensionRenderers) {
5152
- return {
5153
- overridden: false,
5154
- rendered: null,
5155
- warnings: []
5156
- };
5157
- }
5158
- return runRendererOverride(activeExtensionRenderers, {
5159
- format,
5160
- command: activeCommandContext?.command,
5161
- args: activeCommandContext ? [...activeCommandContext.args] : [],
5162
- options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},
5163
- global: activeCommandContext?.global ? { ...activeCommandContext.global } : void 0,
5164
- pm_root: activeCommandContext?.pm_root,
5165
- result
5166
- });
5167
- }
5168
- function buildServiceContext(service, payload) {
5169
- return {
5170
- service,
5171
- command: activeCommandContext?.command,
5172
- args: activeCommandContext ? [...activeCommandContext.args] : [],
5173
- options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},
5174
- global: activeCommandContext?.global ? { ...activeCommandContext.global } : void 0,
5175
- pm_root: activeCommandContext?.pm_root,
5176
- payload
5177
- };
5178
- }
5179
- async function runActiveServiceOverride(service, payload) {
5180
- if (!activeExtensionServices) {
5181
- return {
5182
- handled: false,
5183
- result: payload,
5184
- warnings: []
5185
- };
5186
- }
5187
- return runServiceOverride(activeExtensionServices, buildServiceContext(service, payload));
5188
- }
5189
- function runActiveServiceOverrideSync(service, payload) {
5190
- if (!activeExtensionServices) {
5191
- return {
5192
- handled: false,
5193
- result: payload,
5194
- warnings: []
5195
- };
5196
- }
5197
- return runServiceOverrideSync(activeExtensionServices, buildServiceContext(service, payload));
5198
- }
5199
-
5200
- // dist/core/schema/runtime-schema.js
5201
- import path6 from "node:path";
5202
- !(function() {
5203
- try {
5204
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5205
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "917b7841-d25b-594e-9c0e-dbecbf1a3fbe");
5206
- } catch (e2) {
5207
- }
5208
- })();
5209
- var DEFAULT_RUNTIME_SCHEMA_FILE_PATHS = Object.freeze({
5210
- types: "schema/types.json",
5211
- statuses: "schema/statuses.json",
5212
- fields: "schema/fields.json",
5213
- workflows: "schema/workflows.json"
5214
- });
5215
- var DEFAULT_RUNTIME_WORKFLOW = DEFAULT_WORKFLOW_DEFINITION;
5216
- var DEFAULT_RUNTIME_STATUS_DEFINITIONS = DEFAULT_STATUS_DEFINITIONS;
5217
- var DEFAULT_RUNTIME_FIELD_COMMANDS = ["create", "update"];
5218
- var RUNTIME_STATUS_ROLE_SET = new Set(RUNTIME_STATUS_ROLE_VALUES);
5219
- var RUNTIME_FIELD_TYPE_SET = new Set(RUNTIME_FIELD_TYPE_VALUES);
5220
- var RUNTIME_FIELD_COMMAND_SET = new Set(RUNTIME_FIELD_COMMAND_VALUES);
5221
- var RUNTIME_UNKNOWN_FIELD_POLICY_SET = new Set(RUNTIME_UNKNOWN_FIELD_POLICY_VALUES);
5222
- function normalizeStringList(values) {
5223
- const candidates = Array.isArray(values) ? values : [];
5224
- return [...new Set(candidates.map((value) => typeof value === "string" ? value.trim() : "").filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
5225
- }
5226
- function normalizeStatusToken(value) {
5227
- return typeof value === "string" ? value.trim().toLowerCase().replaceAll(/[\s-]+/g, "_") : "";
5228
- }
5229
- function normalizeStatusId(value) {
5230
- if (typeof value !== "string" || value.length === 0) {
5231
- return void 0;
5232
- }
5233
- const normalized = normalizeStatusToken(value);
5234
- return normalized.length > 0 ? normalized : void 0;
5235
- }
5236
- function stripFlagPrefix(value) {
5237
- return value.startsWith("--") ? value.slice(2) : value;
5238
- }
5239
- function normalizeCliToken(value) {
5240
- return typeof value === "string" ? stripFlagPrefix(value.trim().toLowerCase().replaceAll(/[\s_]+/g, "-")) : "";
5241
- }
5242
- function keyToDefaultCliFlag(value) {
5243
- return value.replaceAll("_", "-");
5244
- }
5245
- function toCamelCase(input) {
5246
- const segments = input.replaceAll(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((segment) => segment.length > 0).map((segment) => segment.toLowerCase());
5247
- if (segments.length === 0) {
5248
- return input;
5249
- }
5250
- const [first, ...rest] = segments;
5251
- return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join("")}`;
5252
- }
5253
- function normalizeRuntimeStatusDefinition(definition, fallbackOrder) {
5254
- const id = normalizeStatusId(definition.id);
5255
- if (!id) {
5256
- return null;
5257
- }
5258
- const aliases = normalizeStringList(definition.aliases).map((value) => normalizeStatusToken(value)).filter((value) => value !== id);
5259
- const roles = normalizeStringList(definition.roles).filter((value) => RUNTIME_STATUS_ROLE_SET.has(value));
5260
- const description = definition.description?.trim();
5261
- const order = typeof definition.order === "number" && Number.isFinite(definition.order) ? definition.order : fallbackOrder;
5262
- return {
5263
- id,
5264
- aliases,
5265
- roles,
5266
- description: description && description.length > 0 ? description : void 0,
5267
- order
5268
- };
5269
- }
5270
- function normalizeRuntimeWorkflow(workflow) {
5271
- return {
5272
- draft_status: normalizeStatusId(workflow?.draft_status),
5273
- open_status: normalizeStatusId(workflow?.open_status),
5274
- in_progress_status: normalizeStatusId(workflow?.in_progress_status),
5275
- blocked_status: normalizeStatusId(workflow?.blocked_status),
5276
- close_status: normalizeStatusId(workflow?.close_status),
5277
- canceled_status: normalizeStatusId(workflow?.canceled_status)
5278
- };
5279
- }
5280
- function appendTypeWorkflowPair(record, pair) {
5281
- if (!Array.isArray(pair) || pair.length !== 2) {
5282
- return;
5283
- }
5284
- const from = normalizeStatusToken(pair[0]);
5285
- const to = normalizeStatusToken(pair[1]);
5286
- if (from.length === 0 || to.length === 0) {
5287
- return;
5144
+ const from = normalizeStatusToken(pair[0]);
5145
+ const to = normalizeStatusToken(pair[1]);
5146
+ if (from.length === 0 || to.length === 0) {
5147
+ return;
5288
5148
  }
5289
5149
  if (record.pairs.some((candidate) => candidate[0] === from && candidate[1] === to)) {
5290
5150
  return;
@@ -5782,1664 +5642,6 @@ function statusIsTerminal(status, registry) {
5782
5642
  return registry.terminal_statuses.has(normalized);
5783
5643
  }
5784
5644
 
5785
- // dist/core/shared/errors.js
5786
- !(function() {
5787
- try {
5788
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5789
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "45a4107c-5ef6-5d5c-9798-6df69f0edec3");
5790
- } catch (e2) {
5791
- }
5792
- })();
5793
- var PmCliError = class extends Error {
5794
- exitCode;
5795
- context;
5796
- constructor(message, exitCode, context = {}) {
5797
- super(message);
5798
- this.name = "PmCliError";
5799
- this.exitCode = exitCode;
5800
- this.context = context;
5801
- }
5802
- };
5803
-
5804
- // dist/core/shared/serialization.js
5805
- import crypto2 from "node:crypto";
5806
- !(function() {
5807
- try {
5808
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5809
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "54cbe570-d9f5-5515-8d0c-0fce0e06fe03");
5810
- } catch (e2) {
5811
- }
5812
- })();
5813
- function sortScalarValue(value) {
5814
- if (value === null)
5815
- return null;
5816
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
5817
- return value;
5818
- }
5819
- if (typeof value === "bigint") {
5820
- return value.toString();
5821
- }
5822
- if (value === void 0) {
5823
- return "undefined";
5824
- }
5825
- if (typeof value === "symbol") {
5826
- return value.toString();
5827
- }
5828
- if (typeof value === "function") {
5829
- return `[function:${value.name || "anonymous"}]`;
5830
- }
5831
- return void 0;
5832
- }
5833
- function sortPlainObjectKeys(value) {
5834
- const sortedKeys = Object.keys(value).sort();
5835
- const result = {};
5836
- for (const key of sortedKeys) {
5837
- const nested = value[key];
5838
- if (nested === void 0) {
5839
- continue;
5840
- }
5841
- result[key] = sortObjectKeys(nested);
5842
- }
5843
- return result;
5844
- }
5845
- function sortObjectKeys(value) {
5846
- const scalarValue = sortScalarValue(value);
5847
- if (scalarValue !== void 0) {
5848
- return scalarValue;
5849
- }
5850
- if (Array.isArray(value)) {
5851
- return value.map((entry) => sortObjectKeys(entry));
5852
- }
5853
- if (value instanceof Date) {
5854
- return value.toISOString();
5855
- }
5856
- const maybeJson = value;
5857
- if (typeof maybeJson.toJSON === "function") {
5858
- const normalized = maybeJson.toJSON();
5859
- if (normalized !== value) {
5860
- return sortObjectKeys(normalized);
5861
- }
5862
- }
5863
- return sortPlainObjectKeys(value);
5864
- }
5865
- function stableStringify(value) {
5866
- return JSON.stringify(sortObjectKeys(value));
5867
- }
5868
- function hasUnmatchedEquivalent(leftValue, rightValues, matchedIndexes, equals) {
5869
- for (let index = 0; index < rightValues.length; index += 1) {
5870
- if (matchedIndexes.has(index)) {
5871
- continue;
5872
- }
5873
- if (equals(leftValue, rightValues[index])) {
5874
- matchedIndexes.add(index);
5875
- return true;
5876
- }
5877
- }
5878
- return false;
5879
- }
5880
- function compareRegExpValues(left, right) {
5881
- if (!(left instanceof RegExp || right instanceof RegExp)) {
5882
- return void 0;
5883
- }
5884
- return left instanceof RegExp && right instanceof RegExp && left.toString() === right.toString();
5885
- }
5886
- function compareDateValues(left, right) {
5887
- if (!(left instanceof Date || right instanceof Date)) {
5888
- return void 0;
5889
- }
5890
- return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();
5891
- }
5892
- function compareSetValues(left, right) {
5893
- if (!(left instanceof Set || right instanceof Set)) {
5894
- return void 0;
5895
- }
5896
- if (!(left instanceof Set && right instanceof Set) || left.size !== right.size) {
5897
- return false;
5898
- }
5899
- const rightValues = [...right];
5900
- const matched = /* @__PURE__ */ new Set();
5901
- for (const leftValue of left) {
5902
- if (!hasUnmatchedEquivalent(leftValue, rightValues, matched, stableValueEquals)) {
5903
- return false;
5904
- }
5905
- }
5906
- return true;
5907
- }
5908
- function compareMapValues(left, right) {
5909
- if (!(left instanceof Map || right instanceof Map)) {
5910
- return void 0;
5911
- }
5912
- if (!(left instanceof Map && right instanceof Map) || left.size !== right.size) {
5913
- return false;
5914
- }
5915
- const rightEntries = [...right.entries()];
5916
- const matched = /* @__PURE__ */ new Set();
5917
- for (const [leftKey, leftValue] of left.entries()) {
5918
- const leftEntry = [leftKey, leftValue];
5919
- if (!hasUnmatchedEquivalent(leftEntry, rightEntries, matched, ([candidateKey, candidateValue], [rightKey, rightValue]) => stableValueEquals(candidateKey, rightKey) && stableValueEquals(candidateValue, rightValue))) {
5920
- return false;
5921
- }
5922
- }
5923
- return true;
5924
- }
5925
- function compareArrayValues(left, right) {
5926
- if (!(Array.isArray(left) || Array.isArray(right))) {
5927
- return void 0;
5928
- }
5929
- if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) {
5930
- return false;
5931
- }
5932
- return left.every((value, index) => stableValueEquals(value, right[index]));
5933
- }
5934
- function comparePlainObjectValues(left, right) {
5935
- const leftKeys = Object.keys(left).sort((a, b) => a.localeCompare(b));
5936
- const rightKeys = Object.keys(right).sort((a, b) => a.localeCompare(b));
5937
- if (leftKeys.length !== rightKeys.length) {
5938
- return false;
5939
- }
5940
- for (let index = 0; index < leftKeys.length; index += 1) {
5941
- const leftKey = leftKeys[index];
5942
- if (leftKey !== rightKeys[index]) {
5943
- return false;
5944
- }
5945
- if (!stableValueEquals(left[leftKey], right[leftKey])) {
5946
- return false;
5947
- }
5948
- }
5949
- return true;
5950
- }
5951
- var SPECIALIZED_STABLE_VALUE_COMPARISONS = [
5952
- compareRegExpValues,
5953
- compareDateValues,
5954
- compareSetValues,
5955
- compareMapValues,
5956
- compareArrayValues
5957
- ];
5958
- function stableValueEquals(left, right) {
5959
- if (Object.is(left, right)) {
5960
- return true;
5961
- }
5962
- if (left === null || right === null || typeof left !== "object" || typeof right !== "object") {
5963
- return false;
5964
- }
5965
- for (const compare of SPECIALIZED_STABLE_VALUE_COMPARISONS) {
5966
- const result = compare(left, right);
5967
- if (result !== void 0) {
5968
- return result;
5969
- }
5970
- }
5971
- return comparePlainObjectValues(left, right);
5972
- }
5973
- function sha256Hex(value) {
5974
- return crypto2.createHash("sha256").update(value, "utf8").digest("hex");
5975
- }
5976
- function orderObject(value, keyOrder) {
5977
- const ordered = {};
5978
- for (const key of keyOrder) {
5979
- const entry = value[key];
5980
- if (entry !== void 0) {
5981
- ordered[key] = entry;
5982
- }
5983
- }
5984
- const unknownKeys = Object.keys(value).filter((key) => !keyOrder.includes(key)).sort((a, b) => a.localeCompare(b));
5985
- for (const key of unknownKeys) {
5986
- const entry = value[key];
5987
- if (entry !== void 0) {
5988
- ordered[key] = entry;
5989
- }
5990
- }
5991
- return ordered;
5992
- }
5993
-
5994
- // dist/core/store/settings-validator.js
5995
- !(function() {
5996
- try {
5997
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5998
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "31c04c84-ab93-5423-8425-f01cdbc48a9f");
5999
- } catch (e2) {
6000
- }
6001
- })();
6002
- var FAIL = { ok: false };
6003
- var vString = (input) => typeof input === "string" ? { ok: true, value: input } : FAIL;
6004
- var vBoolean = (input) => typeof input === "boolean" ? { ok: true, value: input } : FAIL;
6005
- function vNumber(options = {}) {
6006
- return (input) => {
6007
- if (typeof input !== "number" || !Number.isFinite(input)) {
6008
- return FAIL;
6009
- }
6010
- if (options.int && (!Number.isInteger(input) || !Number.isSafeInteger(input))) {
6011
- return FAIL;
6012
- }
6013
- if (options.positive && input <= 0) {
6014
- return FAIL;
6015
- }
6016
- return { ok: true, value: input };
6017
- };
6018
- }
6019
- function vLiteral(...allowed) {
6020
- return (input) => typeof input === "string" && allowed.includes(input) ? { ok: true, value: input } : FAIL;
6021
- }
6022
- function vArray(item) {
6023
- return (input) => {
6024
- if (!Array.isArray(input)) {
6025
- return FAIL;
6026
- }
6027
- const value = [];
6028
- for (const element of input) {
6029
- const result = item(element);
6030
- if (!result.ok) {
6031
- return FAIL;
6032
- }
6033
- value.push(result.value);
6034
- }
6035
- return { ok: true, value };
6036
- };
6037
- }
6038
- function vOptional(inner) {
6039
- return (input) => input === void 0 ? { ok: true, value: void 0 } : inner(input);
6040
- }
6041
- function vRecordOf(valueCheck) {
6042
- return (input) => {
6043
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
6044
- return FAIL;
6045
- }
6046
- const value = {};
6047
- for (const [key, raw] of Object.entries(input)) {
6048
- const result = valueCheck(raw);
6049
- if (!result.ok) {
6050
- return FAIL;
6051
- }
6052
- value[key] = result.value;
6053
- }
6054
- return { ok: true, value };
6055
- };
6056
- }
6057
- function vObject(shape) {
6058
- return (input) => {
6059
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
6060
- return FAIL;
6061
- }
6062
- const record = input;
6063
- const value = {};
6064
- for (const [key, check] of Object.entries(shape)) {
6065
- const result = check(record[key]);
6066
- if (!result.ok) {
6067
- return FAIL;
6068
- }
6069
- if (result.value !== void 0) {
6070
- value[key] = result.value;
6071
- }
6072
- }
6073
- return { ok: true, value };
6074
- };
6075
- }
6076
- var itemTypeOption = vObject({
6077
- key: vString,
6078
- values: vArray(vString),
6079
- required: vOptional(vBoolean),
6080
- aliases: vOptional(vArray(vString)),
6081
- description: vOptional(vString)
6082
- });
6083
- var itemTypeCommandOptionPolicy = vObject({
6084
- command: vLiteral("create", "update"),
6085
- option: vString,
6086
- required: vOptional(vBoolean),
6087
- visible: vOptional(vBoolean),
6088
- enabled: vOptional(vBoolean)
6089
- });
6090
- var itemTypeDefinition = vObject({
6091
- name: vString,
6092
- description: vOptional(vString),
6093
- // Per-type create-time default status (config-driven); preserved so inline
6094
- // settings.item_types.definitions behave identically to schema/types.json.
6095
- default_status: vOptional(vString),
6096
- folder: vOptional(vString),
6097
- aliases: vOptional(vArray(vString)),
6098
- required_create_fields: vOptional(vArray(vString)),
6099
- required_create_repeatables: vOptional(vArray(vString)),
6100
- options: vOptional(vArray(itemTypeOption)),
6101
- command_option_policies: vOptional(vArray(itemTypeCommandOptionPolicy))
6102
- });
6103
- var runtimeStatusDefinition = vObject({
6104
- id: vString,
6105
- aliases: vOptional(vArray(vString)),
6106
- roles: vOptional(vArray(vLiteral(...RUNTIME_STATUS_ROLE_VALUES))),
6107
- description: vOptional(vString),
6108
- order: vOptional(vNumber())
6109
- });
6110
- var runtimeFieldDefinition = vObject({
6111
- key: vString,
6112
- metadata_key: vOptional(vString),
6113
- front_matter_key: vOptional(vString),
6114
- cli_flag: vOptional(vString),
6115
- cli_aliases: vOptional(vArray(vString)),
6116
- description: vOptional(vString),
6117
- type: vOptional(vLiteral(...RUNTIME_FIELD_TYPE_VALUES)),
6118
- commands: vOptional(vArray(vLiteral(...RUNTIME_FIELD_COMMAND_VALUES))),
6119
- repeatable: vOptional(vBoolean),
6120
- required: vOptional(vBoolean),
6121
- required_on_create: vOptional(vBoolean),
6122
- required_types: vOptional(vArray(vString)),
6123
- allow_unset: vOptional(vBoolean)
6124
- });
6125
- var statusTransitionPair = (input) => {
6126
- if (!Array.isArray(input) || input.length !== 2) {
6127
- return FAIL;
6128
- }
6129
- const [from, to] = input;
6130
- if (typeof from !== "string" || typeof to !== "string") {
6131
- return FAIL;
6132
- }
6133
- return { ok: true, value: [from, to] };
6134
- };
6135
- var typeWorkflowDefinition = vObject({
6136
- type: vString,
6137
- allowed_transitions: vArray(statusTransitionPair)
6138
- });
6139
- var runtimeSchemaSettings = vOptional(vObject({
6140
- version: vOptional(vNumber({ int: true })),
6141
- files: vOptional(vObject({
6142
- types: vOptional(vString),
6143
- statuses: vOptional(vString),
6144
- fields: vOptional(vString),
6145
- workflows: vOptional(vString)
6146
- })),
6147
- statuses: vOptional(vArray(runtimeStatusDefinition)),
6148
- fields: vOptional(vArray(runtimeFieldDefinition)),
6149
- workflow: vOptional(vObject({
6150
- draft_status: vOptional(vString),
6151
- open_status: vOptional(vString),
6152
- in_progress_status: vOptional(vString),
6153
- blocked_status: vOptional(vString),
6154
- close_status: vOptional(vString),
6155
- canceled_status: vOptional(vString)
6156
- })),
6157
- type_workflows: vOptional(vArray(typeWorkflowDefinition)),
6158
- unknown_field_policy: vOptional(vLiteral(...RUNTIME_UNKNOWN_FIELD_POLICY_VALUES))
6159
- }));
6160
- var governanceSettings = vOptional(vObject({
6161
- preset: vOptional(vLiteral(...GOVERNANCE_PRESET_VALUES)),
6162
- ownership_enforcement: vOptional(vLiteral("none", "warn", "strict")),
6163
- create_mode_default: vOptional(vLiteral("progressive", "strict")),
6164
- close_validation_default: vOptional(vLiteral("off", "warn", "strict")),
6165
- require_close_reason: vOptional(vBoolean),
6166
- parent_reference: vOptional(vLiteral("warn", "strict_error")),
6167
- metadata_profile: vOptional(vLiteral("core", "strict", "custom")),
6168
- force_required_for_stale_lock: vOptional(vBoolean),
6169
- create_default_type: vOptional(vString),
6170
- workflow_enforcement: vOptional(vLiteral("off", "warn", "strict"))
6171
- }));
6172
- var extensionPolicyOverride = vObject({
6173
- name: vString,
6174
- disabled: vOptional(vBoolean),
6175
- require_trusted: vOptional(vBoolean),
6176
- require_provenance: vOptional(vBoolean),
6177
- sandbox_profile: vOptional(vLiteral("none", "restricted", "strict")),
6178
- allowed_capabilities: vOptional(vArray(vString)),
6179
- blocked_capabilities: vOptional(vArray(vString)),
6180
- allowed_surfaces: vOptional(vArray(vString)),
6181
- blocked_surfaces: vOptional(vArray(vString)),
6182
- allowed_commands: vOptional(vArray(vString)),
6183
- blocked_commands: vOptional(vArray(vString)),
6184
- allowed_actions: vOptional(vArray(vString)),
6185
- blocked_actions: vOptional(vArray(vString)),
6186
- allowed_services: vOptional(vArray(vString)),
6187
- blocked_services: vOptional(vArray(vString))
6188
- });
6189
- var pmMaxVersionExceededModeLiteral = vLiteral("block", "warn");
6190
- var pmMaxVersionExceededMode = (input) => typeof input === "string" ? pmMaxVersionExceededModeLiteral(input) : vObject({
6191
- global: vOptional(pmMaxVersionExceededModeLiteral),
6192
- project: vOptional(pmMaxVersionExceededModeLiteral)
6193
- })(input);
6194
- var extensionPolicy = vOptional(vObject({
6195
- mode: vOptional(vLiteral("off", "warn", "enforce")),
6196
- trust_mode: vOptional(vLiteral("off", "warn", "enforce")),
6197
- pm_max_version_exceeded_mode: vOptional(pmMaxVersionExceededMode),
6198
- require_provenance: vOptional(vBoolean),
6199
- trusted_extensions: vOptional(vArray(vString)),
6200
- default_sandbox_profile: vOptional(vLiteral("none", "restricted", "strict")),
6201
- allowed_extensions: vOptional(vArray(vString)),
6202
- blocked_extensions: vOptional(vArray(vString)),
6203
- allowed_capabilities: vOptional(vArray(vString)),
6204
- blocked_capabilities: vOptional(vArray(vString)),
6205
- allowed_surfaces: vOptional(vArray(vString)),
6206
- blocked_surfaces: vOptional(vArray(vString)),
6207
- allowed_commands: vOptional(vArray(vString)),
6208
- blocked_commands: vOptional(vArray(vString)),
6209
- allowed_actions: vOptional(vArray(vString)),
6210
- blocked_actions: vOptional(vArray(vString)),
6211
- allowed_services: vOptional(vArray(vString)),
6212
- blocked_services: vOptional(vArray(vString)),
6213
- extension_overrides: vOptional(vArray(extensionPolicyOverride))
6214
- }));
6215
- var settingsCheck = vObject({
6216
- version: vNumber({ int: true }),
6217
- id_prefix: vString,
6218
- author_default: vString,
6219
- item_format: vOptional(vLiteral("toon", "json_markdown")),
6220
- locks: vObject({ ttl_seconds: vNumber({ int: true }) }),
6221
- checkpoints: vOptional(vObject({ retention_days: vOptional(vNumber({ int: true, positive: true })) })),
6222
- output: vObject({ default_format: vLiteral("toon", "json") }),
6223
- history: vOptional(vObject({
6224
- missing_stream: vLiteral("auto_create", "strict_error"),
6225
- compact_policy: vOptional(vObject({
6226
- enabled: vOptional(vBoolean),
6227
- max_entries: vOptional(vNumber({ int: true, positive: true })),
6228
- trigger: vOptional(vLiteral("health_warn", "auto"))
6229
- }))
6230
- })),
6231
- validation: vOptional(vObject({
6232
- sprint_release_format: vLiteral("warn", "strict_error"),
6233
- parent_reference: vOptional(vLiteral("warn", "strict_error")),
6234
- metadata_profile: vOptional(vLiteral("core", "strict", "custom")),
6235
- metadata_required_fields: vOptional(vArray(vString)),
6236
- lifecycle_stale_blocker_reason_patterns: vOptional(vArray(vString)),
6237
- lifecycle_closure_like_blocked_reason_patterns: vOptional(vArray(vString)),
6238
- lifecycle_closure_like_resolution_patterns: vOptional(vArray(vString)),
6239
- lifecycle_closure_like_actual_result_patterns: vOptional(vArray(vString)),
6240
- estimate_defaults_by_type: vOptional(vRecordOf(vNumber({ int: true, positive: true })))
6241
- })),
6242
- governance: governanceSettings,
6243
- workflow: vOptional(vObject({ definition_of_done: vArray(vString) })),
6244
- testing: vOptional(vObject({ record_results_to_items: vBoolean })),
6245
- telemetry: vOptional(vObject({
6246
- enabled: vBoolean,
6247
- first_run_prompt_completed: vOptional(vBoolean),
6248
- capture_level: vOptional(vLiteral("minimal", "redacted", "max")),
6249
- endpoint: vOptional(vString),
6250
- installation_id: vOptional(vString),
6251
- retention_days: vOptional(vNumber({ int: true, positive: true }))
6252
- })),
6253
- agent_guidance: vOptional(vObject({
6254
- prompt_completed: vOptional(vBoolean),
6255
- declined: vOptional(vBoolean),
6256
- declined_at: vOptional(vString),
6257
- template_version: vOptional(vNumber({ int: true, positive: true })),
6258
- last_checked_files: vOptional(vArray(vString))
6259
- })),
6260
- item_types: vOptional(vObject({ definitions: vArray(itemTypeDefinition) })),
6261
- schema: runtimeSchemaSettings,
6262
- context: vOptional(vObject({
6263
- default_depth: vOptional(vLiteral("brief", "standard", "deep")),
6264
- activity_limit: vOptional(vNumber({ int: true, positive: true })),
6265
- stale_threshold_days: vOptional(vNumber({ int: true, positive: true })),
6266
- sections: vOptional(vObject({
6267
- hierarchy: vOptional(vBoolean),
6268
- activity: vOptional(vBoolean),
6269
- progress: vOptional(vBoolean),
6270
- recently_created: vOptional(vBoolean),
6271
- unparented: vOptional(vBoolean),
6272
- blockers: vOptional(vBoolean),
6273
- files: vOptional(vBoolean),
6274
- workload: vOptional(vBoolean),
6275
- staleness: vOptional(vBoolean),
6276
- tests: vOptional(vBoolean)
6277
- }))
6278
- })),
6279
- extensions: vObject({
6280
- enabled: vArray(vString),
6281
- disabled: vArray(vString),
6282
- policy: extensionPolicy
6283
- }),
6284
- search: vObject({
6285
- score_threshold: vNumber(),
6286
- hybrid_semantic_weight: vOptional(vNumber()),
6287
- max_results: vNumber({ int: true }),
6288
- embedding_model: vString,
6289
- embedding_corpus_max_characters: vOptional(vNumber()),
6290
- embedding_batch_size: vNumber({ int: true }),
6291
- embedding_timeout_ms: vOptional(vNumber({ int: true })),
6292
- scanner_max_batch_retries: vNumber({ int: true }),
6293
- provider: vOptional(vString),
6294
- corpus_fields: vOptional(vArray(vString)),
6295
- mutation_refresh_policy: vOptional(vLiteral("cache_only", "semantic_configured", "semantic_auto")),
6296
- query_expansion: vOptional(vObject({
6297
- enabled: vOptional(vBoolean),
6298
- provider: vOptional(vString)
6299
- })),
6300
- rerank: vOptional(vObject({
6301
- enabled: vOptional(vBoolean),
6302
- model: vOptional(vString),
6303
- top_k: vOptional(vNumber({ int: true, positive: true }))
6304
- })),
6305
- // pm-75k9: offline BM25 tuning. Unlike `search.tuning` (intentionally
6306
- // stripped for legacy zod parity), bm25 is validated so it persists across
6307
- // writeSettings round-trips — these knobs must survive to take effect.
6308
- bm25: vOptional(vObject({
6309
- k1: vOptional(vNumber()),
6310
- b: vOptional(vNumber())
6311
- }))
6312
- }),
6313
- providers: vObject({
6314
- openai: vObject({ base_url: vString, api_key: vString, model: vString }),
6315
- ollama: vObject({ base_url: vString, model: vString })
6316
- }),
6317
- vector_store: vObject({
6318
- adapter: vOptional(vString),
6319
- collection_name: vOptional(vString),
6320
- qdrant: vObject({ url: vString, api_key: vString }),
6321
- lancedb: vObject({ path: vString })
6322
- })
6323
- });
6324
- function validateSettings(raw) {
6325
- const result = settingsCheck(raw);
6326
- if (!result.ok) {
6327
- return { success: false };
6328
- }
6329
- return { success: true, data: result.value };
6330
- }
6331
-
6332
- // dist/core/validate/estimate-defaults.js
6333
- !(function() {
6334
- try {
6335
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6336
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "33f2ca4e-022c-5fc2-9938-a3fb389c1b93");
6337
- } catch (e2) {
6338
- }
6339
- })();
6340
- var DEFAULT_ESTIMATE_MINUTES_BY_TYPE = {
6341
- Epic: 2880,
6342
- Feature: 480,
6343
- Story: 480,
6344
- Milestone: 2880,
6345
- Task: 120,
6346
- Issue: 60,
6347
- Bug: 60,
6348
- Chore: 30,
6349
- Decision: 15,
6350
- Plan: 120
6351
- };
6352
- var FALLBACK_ESTIMATE_MINUTES = 120;
6353
- function isHonoredMinutes(value) {
6354
- return typeof value === "number" && Number.isFinite(value) && value > 0;
6355
- }
6356
- function toLowercasedLookup(source) {
6357
- const lookup = /* @__PURE__ */ new Map();
6358
- for (const [key, value] of Object.entries(source)) {
6359
- lookup.set(key.toLowerCase(), value);
6360
- }
6361
- return lookup;
6362
- }
6363
- var BUILTIN_LOWERCASED_LOOKUP = toLowercasedLookup(DEFAULT_ESTIMATE_MINUTES_BY_TYPE);
6364
- var OVERRIDE_LOOKUP_CACHE = /* @__PURE__ */ new WeakMap();
6365
- function lowercasedOverrideLookup(overrides) {
6366
- const cached = OVERRIDE_LOOKUP_CACHE.get(overrides);
6367
- if (cached) {
6368
- return cached;
6369
- }
6370
- const lookup = toLowercasedLookup(overrides);
6371
- OVERRIDE_LOOKUP_CACHE.set(overrides, lookup);
6372
- return lookup;
6373
- }
6374
- function resolveEstimateDefaultMinutes(type, overrides) {
6375
- const key = (type ?? "").trim().toLowerCase();
6376
- if (key.length === 0) {
6377
- return FALLBACK_ESTIMATE_MINUTES;
6378
- }
6379
- if (overrides) {
6380
- const overrideValue = lowercasedOverrideLookup(overrides).get(key);
6381
- if (isHonoredMinutes(overrideValue)) {
6382
- return Math.floor(overrideValue);
6383
- }
6384
- }
6385
- const builtinValue = BUILTIN_LOWERCASED_LOOKUP.get(key);
6386
- if (isHonoredMinutes(builtinValue)) {
6387
- return Math.floor(builtinValue);
6388
- }
6389
- return FALLBACK_ESTIMATE_MINUTES;
6390
- }
6391
- function normalizeEstimateDefaultOverrides(raw) {
6392
- const normalized = {};
6393
- if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
6394
- return normalized;
6395
- }
6396
- for (const [rawKey, rawValue] of Object.entries(raw)) {
6397
- const key = rawKey.trim();
6398
- if (key.length === 0 || !isHonoredMinutes(rawValue)) {
6399
- continue;
6400
- }
6401
- normalized[key] = Math.floor(rawValue);
6402
- }
6403
- return normalized;
6404
- }
6405
-
6406
- // dist/core/store/settings-read-cache.js
6407
- import { stat } from "node:fs/promises";
6408
- !(function() {
6409
- try {
6410
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6411
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "406f2d48-4969-5666-9e95-c71103f541c5");
6412
- } catch (e2) {
6413
- }
6414
- })();
6415
- var settingsReadCacheByRoot = /* @__PURE__ */ new Map();
6416
- function normalizeTrackedPaths(paths) {
6417
- return [...new Set(paths.map((pathValue) => pathValue.trim()).filter((pathValue) => pathValue.length > 0))].sort((left, right) => left.localeCompare(right));
6418
- }
6419
- async function readPathSignature(targetPath) {
6420
- try {
6421
- const targetStats = await stat(targetPath);
6422
- return {
6423
- path: targetPath,
6424
- mtime_ms: targetStats.mtimeMs,
6425
- size: targetStats.size
6426
- };
6427
- } catch {
6428
- return {
6429
- path: targetPath,
6430
- mtime_ms: null,
6431
- size: null
6432
- };
6433
- }
6434
- }
6435
- async function collectSettingsReadCacheSignatures(paths) {
6436
- const normalizedPaths = normalizeTrackedPaths(paths);
6437
- const signatures = await Promise.all(normalizedPaths.map((targetPath) => readPathSignature(targetPath)));
6438
- signatures.sort((left, right) => left.path.localeCompare(right.path));
6439
- return signatures;
6440
- }
6441
- function settingsReadCacheSignaturesEqual(left, right) {
6442
- if (left.length !== right.length) {
6443
- return false;
6444
- }
6445
- for (let index = 0; index < left.length; index += 1) {
6446
- const leftEntry = left[index];
6447
- const rightEntry = right[index];
6448
- if (leftEntry.path !== rightEntry.path || leftEntry.mtime_ms !== rightEntry.mtime_ms || leftEntry.size !== rightEntry.size) {
6449
- return false;
6450
- }
6451
- }
6452
- return true;
6453
- }
6454
- function getSettingsReadCacheEntry(pmRoot) {
6455
- return settingsReadCacheByRoot.get(pmRoot);
6456
- }
6457
- function setSettingsReadCacheEntry(pmRoot, entry) {
6458
- const normalizedTrackedPaths = normalizeTrackedPaths(entry.tracked_paths);
6459
- const normalizedSignatures = [...entry.signatures].map((signature) => ({
6460
- path: signature.path,
6461
- mtime_ms: signature.mtime_ms,
6462
- size: signature.size
6463
- })).sort((left, right) => left.path.localeCompare(right.path));
6464
- settingsReadCacheByRoot.set(pmRoot, {
6465
- tracked_paths: normalizedTrackedPaths,
6466
- signatures: normalizedSignatures,
6467
- value: entry.value
6468
- });
6469
- }
6470
- function clearSettingsReadCache(pmRoot) {
6471
- if (pmRoot) {
6472
- settingsReadCacheByRoot.delete(pmRoot);
6473
- return;
6474
- }
6475
- settingsReadCacheByRoot.clear();
6476
- }
6477
-
6478
- // dist/core/store/settings.js
6479
- !(function() {
6480
- try {
6481
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
6482
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4232868d-1e9d-51a3-abbe-3d9a3d1acae1");
6483
- } catch (e2) {
6484
- }
6485
- })();
6486
- var SETTINGS_WRITE_OP = "settings:write";
6487
- var SETTINGS_PERSIST_SOURCE_SYMBOL = /* @__PURE__ */ Symbol("pm.settings.persist_source");
6488
- var MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH = 128;
6489
- function resolveGovernanceKnobsFromPreset(preset) {
6490
- return structuredClone(GOVERNANCE_PRESET_DEFAULTS[preset]);
6491
- }
6492
- function normalizeGovernancePreset(value) {
6493
- if (value === "minimal" || value === "default" || value === "strict" || value === "custom") {
6494
- return value;
6495
- }
6496
- return SETTINGS_DEFAULTS.governance.preset;
6497
- }
6498
- function withGovernanceExtras(base, governance) {
6499
- const createDefaultType = typeof governance.create_default_type === "string" ? governance.create_default_type.trim() : void 0;
6500
- if (createDefaultType && createDefaultType.length > 0) {
6501
- base.create_default_type = createDefaultType;
6502
- }
6503
- if (governance.workflow_enforcement === "off" || governance.workflow_enforcement === "warn" || governance.workflow_enforcement === "strict") {
6504
- base.workflow_enforcement = governance.workflow_enforcement;
6505
- }
6506
- if (governance.require_close_reason === false) {
6507
- base.require_close_reason = false;
6508
- }
6509
- return base;
6510
- }
6511
- function normalizeGovernanceForPersist(governance) {
6512
- if (governance.preset === "custom") {
6513
- return withGovernanceExtras({
6514
- preset: "custom",
6515
- ownership_enforcement: governance.ownership_enforcement,
6516
- create_mode_default: governance.create_mode_default,
6517
- close_validation_default: governance.close_validation_default,
6518
- parent_reference: governance.parent_reference,
6519
- metadata_profile: governance.metadata_profile,
6520
- force_required_for_stale_lock: governance.force_required_for_stale_lock
6521
- }, governance);
6522
- }
6523
- return withGovernanceExtras({
6524
- preset: governance.preset
6525
- }, governance);
6526
- }
6527
- function resolveGovernanceExtras(rawGovernance) {
6528
- const createDefaultType = typeof rawGovernance.create_default_type === "string" ? rawGovernance.create_default_type.trim() : void 0;
6529
- const extras = {};
6530
- if (createDefaultType && createDefaultType.length > 0) {
6531
- extras.create_default_type = createDefaultType;
6532
- }
6533
- if (rawGovernance.workflow_enforcement === "off" || rawGovernance.workflow_enforcement === "warn" || rawGovernance.workflow_enforcement === "strict") {
6534
- extras.workflow_enforcement = rawGovernance.workflow_enforcement;
6535
- }
6536
- if (typeof rawGovernance.require_close_reason === "boolean") {
6537
- extras.require_close_reason = rawGovernance.require_close_reason;
6538
- }
6539
- return extras;
6540
- }
6541
- function resolveGovernanceKnobs(settings) {
6542
- const rawGovernance = settings.governance ?? {};
6543
- const preset = normalizeGovernancePreset(rawGovernance.preset);
6544
- const extras = resolveGovernanceExtras(rawGovernance);
6545
- if (preset === "custom") {
6546
- const baseline2 = resolveGovernanceKnobsFromPreset("default");
6547
- const requireCloseReason2 = extras.require_close_reason ?? baseline2.require_close_reason;
6548
- return {
6549
- preset,
6550
- ownership_enforcement: rawGovernance.ownership_enforcement ?? baseline2.ownership_enforcement,
6551
- create_mode_default: rawGovernance.create_mode_default ?? baseline2.create_mode_default,
6552
- close_validation_default: rawGovernance.close_validation_default ?? baseline2.close_validation_default,
6553
- parent_reference: rawGovernance.parent_reference ?? baseline2.parent_reference,
6554
- metadata_profile: rawGovernance.metadata_profile ?? baseline2.metadata_profile,
6555
- force_required_for_stale_lock: rawGovernance.force_required_for_stale_lock ?? baseline2.force_required_for_stale_lock,
6556
- ...extras,
6557
- require_close_reason: requireCloseReason2
6558
- };
6559
- }
6560
- const baseline = resolveGovernanceKnobsFromPreset(preset);
6561
- const requireCloseReason = extras.require_close_reason ?? baseline.require_close_reason;
6562
- return {
6563
- preset,
6564
- ...baseline,
6565
- ...extras,
6566
- require_close_reason: requireCloseReason
6567
- };
6568
- }
6569
- function cloneDefaults() {
6570
- return structuredClone(SETTINGS_DEFAULTS);
6571
- }
6572
- function normalizeSearchMutationRefreshPolicy(value) {
6573
- if (value === "cache_only" || value === "semantic_configured" || value === "semantic_auto") {
6574
- return value;
6575
- }
6576
- return SETTINGS_DEFAULTS.search.mutation_refresh_policy;
6577
- }
6578
- function normalizeSearchQueryExpansionEnabled(value) {
6579
- if (typeof value === "boolean") {
6580
- return value;
6581
- }
6582
- return SETTINGS_DEFAULTS.search.query_expansion.enabled;
6583
- }
6584
- function normalizeSearchQueryExpansionProvider(value) {
6585
- if (typeof value !== "string") {
6586
- return SETTINGS_DEFAULTS.search.query_expansion.provider;
6587
- }
6588
- return value.trim();
6589
- }
6590
- function normalizeSearchRerankEnabled(value) {
6591
- if (typeof value === "boolean") {
6592
- return value;
6593
- }
6594
- return SETTINGS_DEFAULTS.search.rerank.enabled;
6595
- }
6596
- function normalizeSearchRerankModel(value) {
6597
- if (typeof value !== "string") {
6598
- return SETTINGS_DEFAULTS.search.rerank.model;
6599
- }
6600
- return value.trim();
6601
- }
6602
- function normalizeSearchRerankTopK(value) {
6603
- if (typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value > 0) {
6604
- return value;
6605
- }
6606
- return SETTINGS_DEFAULTS.search.rerank.top_k;
6607
- }
6608
- function normalizeVectorStoreCollectionName(value) {
6609
- if (typeof value !== "string") {
6610
- return SETTINGS_DEFAULTS.vector_store.collection_name;
6611
- }
6612
- const sanitized = value.trim().replaceAll(/[^a-zA-Z0-9_-]/g, "_");
6613
- const truncated = sanitized.slice(0, MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH);
6614
- return truncated.length > 0 ? truncated : SETTINGS_DEFAULTS.vector_store.collection_name;
6615
- }
6616
- function buildSettingsPersistSourceSnapshot(parsedSettings, runtimeSettings) {
6617
- const sourceSchema = parsedSettings.schema;
6618
- const sourceStatuses = Array.isArray(sourceSchema?.statuses) ? sourceSchema?.statuses : void 0;
6619
- const sourceFields = Array.isArray(sourceSchema?.fields) ? sourceSchema?.fields : void 0;
6620
- const sourceTypeWorkflows = Array.isArray(sourceSchema?.type_workflows) ? sourceSchema?.type_workflows : void 0;
6621
- return {
6622
- has_source_item_type_definitions: Array.isArray(parsedSettings.item_types?.definitions),
6623
- source_item_type_definitions: normalizeItemTypeDefinitions(parsedSettings.item_types?.definitions),
6624
- has_source_schema_statuses: sourceStatuses !== void 0,
6625
- source_schema_statuses: sourceStatuses ? structuredClone(sourceStatuses) : [],
6626
- has_source_schema_fields: sourceFields !== void 0,
6627
- source_schema_fields: sourceFields ? structuredClone(sourceFields) : [],
6628
- has_source_schema_type_workflows: sourceTypeWorkflows !== void 0,
6629
- source_schema_type_workflows: sourceTypeWorkflows ? structuredClone(sourceTypeWorkflows) : [],
6630
- runtime_item_type_definitions: normalizeItemTypeDefinitions(runtimeSettings.item_types?.definitions),
6631
- runtime_schema_statuses: structuredClone(runtimeSettings.schema.statuses),
6632
- runtime_schema_fields: structuredClone(runtimeSettings.schema.fields),
6633
- runtime_schema_type_workflows: structuredClone(runtimeSettings.schema.type_workflows ?? [])
6634
- };
6635
- }
6636
- function attachSettingsPersistSourceSnapshot(settings, source) {
6637
- Object.defineProperty(settings, SETTINGS_PERSIST_SOURCE_SYMBOL, {
6638
- value: source,
6639
- writable: true,
6640
- configurable: true,
6641
- enumerable: false
6642
- });
6643
- }
6644
- function getSettingsPersistSourceSnapshot(settings) {
6645
- const candidate = settings[SETTINGS_PERSIST_SOURCE_SYMBOL];
6646
- if (!candidate || typeof candidate !== "object") {
6647
- return void 0;
6648
- }
6649
- return candidate;
6650
- }
6651
- function cloneSettingsReadResult(result) {
6652
- const clonedSettings = structuredClone(result.settings);
6653
- const persistSource = getSettingsPersistSourceSnapshot(result.settings);
6654
- if (persistSource) {
6655
- attachSettingsPersistSourceSnapshot(clonedSettings, structuredClone(persistSource));
6656
- }
6657
- return {
6658
- settings: clonedSettings,
6659
- metadata: {
6660
- has_explicit_item_format: result.metadata.has_explicit_item_format
6661
- },
6662
- warnings: [...result.warnings]
6663
- };
6664
- }
6665
- function resolveSettingsReadTrackedPaths(pmRoot, schema, settingsPath) {
6666
- const normalizedSchema = normalizeRuntimeSchemaSettings(schema);
6667
- return [
6668
- settingsPath,
6669
- filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types),
6670
- filePathForSchemaSection(pmRoot, normalizedSchema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),
6671
- filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),
6672
- filePathForSchemaSection(pmRoot, normalizedSchema.files.workflows, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows)
6673
- ];
6674
- }
6675
- async function cacheSettingsReadResult(pmRoot, trackedPaths, result) {
6676
- const signatures = await collectSettingsReadCacheSignatures(trackedPaths);
6677
- setSettingsReadCacheEntry(pmRoot, {
6678
- tracked_paths: trackedPaths,
6679
- signatures,
6680
- value: cloneSettingsReadResult(result)
6681
- });
6682
- }
6683
- async function cacheSettingsReadResultSafe(pmRoot, trackedPaths, result) {
6684
- try {
6685
- await cacheSettingsReadResult(pmRoot, trackedPaths, result);
6686
- } catch {
6687
- clearSettingsReadCache(pmRoot);
6688
- }
6689
- }
6690
- function findSettingsReadCacheSignature(signatures, targetPath) {
6691
- return signatures.find((signature) => signature.path === targetPath);
6692
- }
6693
- function selectedSettingsReadCacheSignaturesEqual(before, after, targetPaths) {
6694
- for (const targetPath of targetPaths) {
6695
- const beforeSignature = findSettingsReadCacheSignature(before, targetPath);
6696
- const afterSignature = findSettingsReadCacheSignature(after, targetPath);
6697
- if (!beforeSignature || !afterSignature || !settingsReadCacheSignaturesEqual([beforeSignature], [afterSignature])) {
6698
- return false;
6699
- }
6700
- }
6701
- return true;
6702
- }
6703
- async function cacheSettingsReadResultIfStable(pmRoot, trackedPaths, result, stableSignatures, stablePaths) {
6704
- try {
6705
- const currentSignatures = await collectSettingsReadCacheSignatures(trackedPaths);
6706
- if (!selectedSettingsReadCacheSignaturesEqual(stableSignatures, currentSignatures, stablePaths)) {
6707
- clearSettingsReadCache(pmRoot);
6708
- return;
6709
- }
6710
- setSettingsReadCacheEntry(pmRoot, {
6711
- tracked_paths: trackedPaths,
6712
- signatures: currentSignatures,
6713
- value: cloneSettingsReadResult(result)
6714
- });
6715
- } catch {
6716
- clearSettingsReadCache(pmRoot);
6717
- }
6718
- }
6719
- function resolvePersistedFileBackedSchemaSections(settings, source) {
6720
- const normalizedSchema = normalizeRuntimeSchemaSettings(settings.schema);
6721
- const currentItemTypeDefinitions = normalizeItemTypeDefinitions(settings.item_types?.definitions);
6722
- if (!source) {
6723
- return {
6724
- item_type_definitions: currentItemTypeDefinitions,
6725
- schema_statuses: normalizedSchema.statuses,
6726
- schema_fields: normalizedSchema.fields,
6727
- schema_type_workflows: normalizedSchema.type_workflows
6728
- };
6729
- }
6730
- const currentTypeWorkflows = normalizedSchema.type_workflows ?? [];
6731
- const itemTypeDefinitionsUnchanged = stableValueEquals(currentItemTypeDefinitions, source.runtime_item_type_definitions);
6732
- const schemaStatusesUnchanged = stableValueEquals(normalizedSchema.statuses, source.runtime_schema_statuses);
6733
- const schemaFieldsUnchanged = stableValueEquals(normalizedSchema.fields, source.runtime_schema_fields);
6734
- const schemaTypeWorkflowsUnchanged = stableValueEquals(currentTypeWorkflows, source.runtime_schema_type_workflows);
6735
- return {
6736
- item_type_definitions: itemTypeDefinitionsUnchanged ? source.has_source_item_type_definitions ? normalizeItemTypeDefinitions(source.source_item_type_definitions) : [] : currentItemTypeDefinitions,
6737
- schema_statuses: schemaStatusesUnchanged ? source.has_source_schema_statuses ? structuredClone(source.source_schema_statuses) : [] : normalizedSchema.statuses,
6738
- schema_fields: schemaFieldsUnchanged ? source.has_source_schema_fields ? structuredClone(source.source_schema_fields) : [] : normalizedSchema.fields,
6739
- schema_type_workflows: schemaTypeWorkflowsUnchanged ? source.has_source_schema_type_workflows ? structuredClone(source.source_schema_type_workflows) : void 0 : normalizedSchema.type_workflows
6740
- };
6741
- }
6742
- function buildFallbackSettingsReadResult(warning) {
6743
- return {
6744
- settings: cloneDefaults(),
6745
- metadata: {
6746
- has_explicit_item_format: false
6747
- },
6748
- warnings: warning ? [warning] : []
6749
- };
6750
- }
6751
- function hasExplicitItemFormat(raw) {
6752
- if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
6753
- return false;
6754
- }
6755
- const itemFormat = raw.item_format;
6756
- return itemFormat === "toon" || itemFormat === "json_markdown";
6757
- }
6758
- function normalizeStringList2(values) {
6759
- return [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6760
- }
6761
- function normalizeAgentGuidanceSettings(value) {
6762
- const defaults = SETTINGS_DEFAULTS.agent_guidance;
6763
- const templateVersion = value?.template_version;
6764
- return {
6765
- prompt_completed: value?.prompt_completed === true,
6766
- declined: value?.declined === true,
6767
- declined_at: typeof value?.declined_at === "string" ? value.declined_at : defaults.declined_at,
6768
- template_version: typeof templateVersion === "number" && Number.isInteger(templateVersion) && templateVersion > 0 ? templateVersion : defaults.template_version,
6769
- last_checked_files: normalizeStringList2(value?.last_checked_files ?? defaults.last_checked_files)
6770
- };
6771
- }
6772
- function normalizeLowerStringList(values) {
6773
- return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6774
- }
6775
- function normalizeExtensionPolicyMode(value) {
6776
- if (value === "off" || value === "warn" || value === "enforce") {
6777
- return value;
6778
- }
6779
- return SETTINGS_DEFAULTS.extensions.policy.mode;
6780
- }
6781
- function normalizeExtensionTrustMode(value) {
6782
- if (value === "off" || value === "warn" || value === "enforce") {
6783
- return value;
6784
- }
6785
- return SETTINGS_DEFAULTS.extensions.policy.trust_mode;
6786
- }
6787
- function normalizeExtensionSandboxProfile(value) {
6788
- if (value === "none" || value === "restricted" || value === "strict") {
6789
- return value;
6790
- }
6791
- return SETTINGS_DEFAULTS.extensions.policy.default_sandbox_profile;
6792
- }
6793
- function normalizeExtensionPolicyOverride(override) {
6794
- const name = override.name.trim().toLowerCase();
6795
- if (name.length === 0) {
6796
- return null;
6797
- }
6798
- const normalized = {
6799
- name
6800
- };
6801
- if (override.disabled === true) {
6802
- normalized.disabled = true;
6803
- }
6804
- if (override.require_trusted === true) {
6805
- normalized.require_trusted = true;
6806
- }
6807
- if (override.require_provenance === true) {
6808
- normalized.require_provenance = true;
6809
- }
6810
- if (override.sandbox_profile !== void 0) {
6811
- normalized.sandbox_profile = normalizeExtensionSandboxProfile(override.sandbox_profile);
6812
- }
6813
- const allowedCapabilities = normalizeLowerStringList(override.allowed_capabilities);
6814
- const blockedCapabilities = normalizeLowerStringList(override.blocked_capabilities);
6815
- const allowedSurfaces = normalizeLowerStringList(override.allowed_surfaces);
6816
- const blockedSurfaces = normalizeLowerStringList(override.blocked_surfaces);
6817
- const allowedCommands = normalizeLowerStringList(override.allowed_commands);
6818
- const blockedCommands = normalizeLowerStringList(override.blocked_commands);
6819
- const allowedActions = normalizeLowerStringList(override.allowed_actions);
6820
- const blockedActions = normalizeLowerStringList(override.blocked_actions);
6821
- const allowedServices = normalizeLowerStringList(override.allowed_services);
6822
- const blockedServices = normalizeLowerStringList(override.blocked_services);
6823
- if (allowedCapabilities.length > 0) {
6824
- normalized.allowed_capabilities = allowedCapabilities;
6825
- }
6826
- if (blockedCapabilities.length > 0) {
6827
- normalized.blocked_capabilities = blockedCapabilities;
6828
- }
6829
- if (allowedSurfaces.length > 0) {
6830
- normalized.allowed_surfaces = allowedSurfaces;
6831
- }
6832
- if (blockedSurfaces.length > 0) {
6833
- normalized.blocked_surfaces = blockedSurfaces;
6834
- }
6835
- if (allowedCommands.length > 0) {
6836
- normalized.allowed_commands = allowedCommands;
6837
- }
6838
- if (blockedCommands.length > 0) {
6839
- normalized.blocked_commands = blockedCommands;
6840
- }
6841
- if (allowedActions.length > 0) {
6842
- normalized.allowed_actions = allowedActions;
6843
- }
6844
- if (blockedActions.length > 0) {
6845
- normalized.blocked_actions = blockedActions;
6846
- }
6847
- if (allowedServices.length > 0) {
6848
- normalized.allowed_services = allowedServices;
6849
- }
6850
- if (blockedServices.length > 0) {
6851
- normalized.blocked_services = blockedServices;
6852
- }
6853
- return normalized;
6854
- }
6855
- function normalizeExtensionPolicyOverrides(overrides) {
6856
- const dedupedByName = /* @__PURE__ */ new Map();
6857
- for (const override of overrides ?? []) {
6858
- const normalized = normalizeExtensionPolicyOverride(override);
6859
- if (!normalized) {
6860
- continue;
6861
- }
6862
- dedupedByName.set(normalized.name, normalized);
6863
- }
6864
- return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
6865
- }
6866
- function normalizePmMaxVersionExceededModeValue2(value) {
6867
- return value === "block" || value === "warn" ? value : void 0;
6868
- }
6869
- function normalizePmMaxVersionExceededModeSetting(value) {
6870
- if (typeof value === "string") {
6871
- return normalizePmMaxVersionExceededModeValue2(value);
6872
- }
6873
- if (typeof value === "object" && value !== null && !Array.isArray(value)) {
6874
- const global2 = normalizePmMaxVersionExceededModeValue2(value.global);
6875
- const project = normalizePmMaxVersionExceededModeValue2(value.project);
6876
- if (global2 === void 0 && project === void 0) {
6877
- return void 0;
6878
- }
6879
- return {
6880
- ...global2 !== void 0 ? { global: global2 } : {},
6881
- ...project !== void 0 ? { project } : {}
6882
- };
6883
- }
6884
- return void 0;
6885
- }
6886
- function normalizeExtensionPolicyList(policy, key) {
6887
- return normalizeLowerStringList(policy?.[key] ?? SETTINGS_DEFAULTS.extensions.policy[key]);
6888
- }
6889
- function normalizeExtensionPolicySettings(policy) {
6890
- const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededModeSetting(policy?.pm_max_version_exceeded_mode);
6891
- return {
6892
- mode: normalizeExtensionPolicyMode(policy?.mode),
6893
- trust_mode: normalizeExtensionTrustMode(policy?.trust_mode),
6894
- ...pmMaxVersionExceededMode2 !== void 0 ? { pm_max_version_exceeded_mode: pmMaxVersionExceededMode2 } : {},
6895
- require_provenance: policy?.require_provenance === true,
6896
- trusted_extensions: normalizeExtensionPolicyList(policy, "trusted_extensions"),
6897
- default_sandbox_profile: normalizeExtensionSandboxProfile(policy?.default_sandbox_profile),
6898
- allowed_extensions: normalizeExtensionPolicyList(policy, "allowed_extensions"),
6899
- blocked_extensions: normalizeExtensionPolicyList(policy, "blocked_extensions"),
6900
- allowed_capabilities: normalizeExtensionPolicyList(policy, "allowed_capabilities"),
6901
- blocked_capabilities: normalizeExtensionPolicyList(policy, "blocked_capabilities"),
6902
- allowed_surfaces: normalizeExtensionPolicyList(policy, "allowed_surfaces"),
6903
- blocked_surfaces: normalizeExtensionPolicyList(policy, "blocked_surfaces"),
6904
- allowed_commands: normalizeExtensionPolicyList(policy, "allowed_commands"),
6905
- blocked_commands: normalizeExtensionPolicyList(policy, "blocked_commands"),
6906
- allowed_actions: normalizeExtensionPolicyList(policy, "allowed_actions"),
6907
- blocked_actions: normalizeExtensionPolicyList(policy, "blocked_actions"),
6908
- allowed_services: normalizeExtensionPolicyList(policy, "allowed_services"),
6909
- blocked_services: normalizeExtensionPolicyList(policy, "blocked_services"),
6910
- extension_overrides: normalizeExtensionPolicyOverrides(policy?.extension_overrides ?? SETTINGS_DEFAULTS.extensions.policy.extension_overrides)
6911
- };
6912
- }
6913
- function normalizeValidationMetadataRequiredFields(values) {
6914
- const normalized = [...new Set((values ?? []).map((value) => value.trim().toLowerCase().replaceAll("-", "_")))].filter((value) => value.length > 0).sort((left, right) => left.localeCompare(right));
6915
- return normalized.filter((value) => [
6916
- "author",
6917
- "acceptance_criteria",
6918
- "estimated_minutes",
6919
- "close_reason",
6920
- "reviewer",
6921
- "risk",
6922
- "confidence",
6923
- "sprint",
6924
- "release"
6925
- ].includes(value));
6926
- }
6927
- function normalizeValidationPatternList(values) {
6928
- return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
6929
- }
6930
- function valueOrDefault(value, fallback) {
6931
- return value === void 0 ? fallback : value;
6932
- }
6933
- function recordOrEmpty(value) {
6934
- return typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
6935
- }
6936
- function arrayOrEmpty(value) {
6937
- return Array.isArray(value) ? value : [];
6938
- }
6939
- function buildValidationSettings(settings, defaults, governance) {
6940
- return {
6941
- ...defaults.validation,
6942
- ...settings.validation,
6943
- parent_reference: governance.parent_reference,
6944
- metadata_profile: governance.metadata_profile,
6945
- metadata_required_fields: normalizeValidationMetadataRequiredFields(settings.validation?.metadata_required_fields),
6946
- lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_stale_blocker_reason_patterns ?? defaults.validation.lifecycle_stale_blocker_reason_patterns),
6947
- lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_blocked_reason_patterns ?? defaults.validation.lifecycle_closure_like_blocked_reason_patterns),
6948
- lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_resolution_patterns ?? defaults.validation.lifecycle_closure_like_resolution_patterns),
6949
- lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(settings.validation?.lifecycle_closure_like_actual_result_patterns ?? defaults.validation.lifecycle_closure_like_actual_result_patterns),
6950
- estimate_defaults_by_type: normalizeEstimateDefaultOverrides(settings.validation?.estimate_defaults_by_type)
6951
- };
6952
- }
6953
- function buildTelemetrySettings(settings, defaults) {
6954
- return {
6955
- enabled: settings.telemetry?.enabled ?? defaults.telemetry.enabled,
6956
- first_run_prompt_completed: settings.telemetry?.first_run_prompt_completed ?? defaults.telemetry.first_run_prompt_completed,
6957
- capture_level: settings.telemetry?.capture_level ?? defaults.telemetry.capture_level,
6958
- endpoint: settings.telemetry?.endpoint ?? defaults.telemetry.endpoint,
6959
- installation_id: settings.telemetry?.installation_id ?? defaults.telemetry.installation_id,
6960
- retention_days: settings.telemetry?.retention_days ?? defaults.telemetry.retention_days
6961
- };
6962
- }
6963
- function buildSearchSettings(settings, defaults) {
6964
- return {
6965
- ...defaults.search,
6966
- ...settings.search,
6967
- mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(settings.search?.mutation_refresh_policy),
6968
- query_expansion: {
6969
- ...defaults.search.query_expansion,
6970
- ...settings.search?.query_expansion,
6971
- enabled: normalizeSearchQueryExpansionEnabled(settings.search?.query_expansion?.enabled),
6972
- provider: normalizeSearchQueryExpansionProvider(settings.search?.query_expansion?.provider)
6973
- },
6974
- rerank: {
6975
- ...defaults.search.rerank,
6976
- ...settings.search?.rerank,
6977
- enabled: normalizeSearchRerankEnabled(settings.search?.rerank?.enabled),
6978
- model: normalizeSearchRerankModel(settings.search?.rerank?.model),
6979
- top_k: normalizeSearchRerankTopK(settings.search?.rerank?.top_k)
6980
- }
6981
- };
6982
- }
6983
- function buildVectorStoreSettings(settings, defaults) {
6984
- return {
6985
- adapter: settings.vector_store.adapter ?? defaults.vector_store.adapter,
6986
- collection_name: normalizeVectorStoreCollectionName(settings.vector_store.collection_name),
6987
- qdrant: { ...defaults.vector_store.qdrant, ...settings.vector_store.qdrant },
6988
- lancedb: { ...defaults.vector_store.lancedb, ...settings.vector_store.lancedb }
6989
- };
6990
- }
6991
- function normalizeSettingsItemFormat(settings, defaults) {
6992
- if (settings.item_format === "json_markdown") {
6993
- return "toon";
6994
- }
6995
- return settings.item_format ?? defaults.item_format;
6996
- }
6997
- function buildContextSettings(settings, defaults) {
6998
- return {
6999
- default_depth: settings.context?.default_depth ?? defaults.context.default_depth,
7000
- activity_limit: settings.context?.activity_limit ?? defaults.context.activity_limit,
7001
- stale_threshold_days: settings.context?.stale_threshold_days ?? defaults.context.stale_threshold_days,
7002
- sections: {
7003
- ...defaults.context.sections,
7004
- ...settings.context?.sections
7005
- }
7006
- };
7007
- }
7008
- function buildProviderSettings(settings, defaults) {
7009
- return {
7010
- openai: { ...defaults.providers.openai, ...settings.providers.openai },
7011
- ollama: { ...defaults.providers.ollama, ...settings.providers.ollama }
7012
- };
7013
- }
7014
- function normalizeItemTypeDefinitions(definitions) {
7015
- const normalized = (definitions ?? []).map((definition) => normalizeItemTypeDefinition(definition)).filter((definition) => definition !== null);
7016
- const dedupedByName = /* @__PURE__ */ new Map();
7017
- for (const definition of normalized) {
7018
- dedupedByName.set(definition.name.toLowerCase(), definition);
7019
- }
7020
- return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
7021
- }
7022
- function mergeSettings(settings) {
7023
- const defaults = cloneDefaults();
7024
- const governance = resolveGovernanceKnobs({
7025
- governance: settings.governance ?? { preset: "default" }
7026
- });
7027
- return {
7028
- ...defaults,
7029
- ...settings,
7030
- item_format: normalizeSettingsItemFormat(settings, defaults),
7031
- locks: { ...defaults.locks, ...settings.locks },
7032
- checkpoints: { ...defaults.checkpoints, ...settings.checkpoints },
7033
- output: { ...defaults.output, ...settings.output },
7034
- history: {
7035
- ...defaults.history,
7036
- ...settings.history,
7037
- compact_policy: {
7038
- ...defaults.history.compact_policy,
7039
- ...settings.history?.compact_policy
7040
- }
7041
- },
7042
- validation: buildValidationSettings(settings, defaults, governance),
7043
- governance,
7044
- workflow: {
7045
- definition_of_done: [...settings.workflow?.definition_of_done ?? defaults.workflow.definition_of_done]
7046
- },
7047
- testing: {
7048
- record_results_to_items: settings.testing?.record_results_to_items ?? defaults.testing.record_results_to_items
7049
- },
7050
- telemetry: buildTelemetrySettings(settings, defaults),
7051
- agent_guidance: normalizeAgentGuidanceSettings(settings.agent_guidance ?? defaults.agent_guidance),
7052
- item_types: {
7053
- definitions: normalizeItemTypeDefinitions(settings.item_types?.definitions)
7054
- },
7055
- schema: normalizeRuntimeSchemaSettings(settings.schema ?? defaults.schema),
7056
- context: buildContextSettings(settings, defaults),
7057
- extensions: {
7058
- enabled: [...settings.extensions.enabled],
7059
- disabled: [...settings.extensions.disabled],
7060
- policy: normalizeExtensionPolicySettings(settings.extensions.policy ?? defaults.extensions.policy)
7061
- },
7062
- search: buildSearchSettings(settings, defaults),
7063
- providers: buildProviderSettings(settings, defaults),
7064
- vector_store: buildVectorStoreSettings(settings, defaults)
7065
- };
7066
- }
7067
- function orderSerializedSettingsSections(ordered) {
7068
- ordered.locks = orderObject(ordered.locks, ["ttl_seconds"]);
7069
- ordered.checkpoints = orderObject(ordered.checkpoints, ["retention_days"]);
7070
- ordered.output = orderObject(ordered.output, ["default_format"]);
7071
- ordered.history = orderObject(ordered.history, ["missing_stream", "compact_policy"]);
7072
- ordered.validation = orderObject(ordered.validation, [
7073
- "sprint_release_format",
7074
- "parent_reference",
7075
- "metadata_profile",
7076
- "metadata_required_fields",
7077
- "lifecycle_stale_blocker_reason_patterns",
7078
- "lifecycle_closure_like_blocked_reason_patterns",
7079
- "lifecycle_closure_like_resolution_patterns",
7080
- "lifecycle_closure_like_actual_result_patterns",
7081
- "estimate_defaults_by_type"
7082
- ]);
7083
- ordered.governance = orderObject(ordered.governance, [
7084
- "preset",
7085
- "ownership_enforcement",
7086
- "create_mode_default",
7087
- "close_validation_default",
7088
- "require_close_reason",
7089
- "parent_reference",
7090
- "metadata_profile",
7091
- "force_required_for_stale_lock",
7092
- "create_default_type",
7093
- "workflow_enforcement"
7094
- ]);
7095
- ordered.workflow = orderObject(ordered.workflow, ["definition_of_done"]);
7096
- ordered.testing = orderObject(ordered.testing, ["record_results_to_items"]);
7097
- ordered.telemetry = orderObject(ordered.telemetry, [
7098
- "enabled",
7099
- "first_run_prompt_completed",
7100
- "capture_level",
7101
- "endpoint",
7102
- "installation_id",
7103
- "retention_days"
7104
- ]);
7105
- ordered.agent_guidance = orderObject(ordered.agent_guidance, [
7106
- "prompt_completed",
7107
- "declined",
7108
- "declined_at",
7109
- "template_version",
7110
- "last_checked_files"
7111
- ]);
7112
- ordered.item_types = orderObject(ordered.item_types, ["definitions"]);
7113
- ordered.schema = orderObject(ordered.schema, [
7114
- "version",
7115
- "files",
7116
- "statuses",
7117
- "fields",
7118
- "workflow",
7119
- "type_workflows",
7120
- "unknown_field_policy"
7121
- ]);
7122
- ordered.schema.files = orderObject(recordOrEmpty(ordered.schema.files), ["types", "statuses", "fields", "workflows"]);
7123
- ordered.schema.workflow = orderObject(recordOrEmpty(ordered.schema.workflow), ["draft_status", "open_status", "in_progress_status", "blocked_status", "close_status", "canceled_status"]);
7124
- ordered.context = orderObject(ordered.context, [
7125
- "default_depth",
7126
- "activity_limit",
7127
- "stale_threshold_days",
7128
- "sections"
7129
- ]);
7130
- ordered.context.sections = orderObject(recordOrEmpty(ordered.context.sections), ["hierarchy", "activity", "progress", "blockers", "files", "workload", "staleness", "tests"]);
7131
- ordered.extensions = orderObject(ordered.extensions, ["enabled", "disabled", "policy"]);
7132
- ordered.extensions.policy = orderObject(recordOrEmpty(ordered.extensions.policy), [
7133
- "mode",
7134
- "trust_mode",
7135
- "pm_max_version_exceeded_mode",
7136
- "require_provenance",
7137
- "trusted_extensions",
7138
- "default_sandbox_profile",
7139
- "allowed_extensions",
7140
- "blocked_extensions",
7141
- "allowed_capabilities",
7142
- "blocked_capabilities",
7143
- "allowed_surfaces",
7144
- "blocked_surfaces",
7145
- "allowed_commands",
7146
- "blocked_commands",
7147
- "allowed_actions",
7148
- "blocked_actions",
7149
- "allowed_services",
7150
- "blocked_services",
7151
- "extension_overrides"
7152
- ]);
7153
- ordered.extensions.policy.extension_overrides = arrayOrEmpty(ordered.extensions.policy.extension_overrides).map((entry) => orderObject(recordOrEmpty(entry), [
7154
- "name",
7155
- "disabled",
7156
- "require_trusted",
7157
- "require_provenance",
7158
- "sandbox_profile",
7159
- "allowed_capabilities",
7160
- "blocked_capabilities",
7161
- "allowed_surfaces",
7162
- "blocked_surfaces",
7163
- "allowed_commands",
7164
- "blocked_commands",
7165
- "allowed_actions",
7166
- "blocked_actions",
7167
- "allowed_services",
7168
- "blocked_services"
7169
- ]));
7170
- ordered.search = orderObject(ordered.search, [
7171
- "score_threshold",
7172
- "hybrid_semantic_weight",
7173
- "max_results",
7174
- "embedding_model",
7175
- "embedding_corpus_max_characters",
7176
- "embedding_batch_size",
7177
- "embedding_timeout_ms",
7178
- "scanner_max_batch_retries",
7179
- "provider",
7180
- "mutation_refresh_policy",
7181
- "query_expansion",
7182
- "rerank"
7183
- ]);
7184
- ordered.search.query_expansion = orderObject(recordOrEmpty(ordered.search.query_expansion), ["enabled", "provider"]);
7185
- ordered.search.rerank = orderObject(recordOrEmpty(ordered.search.rerank), ["enabled", "model", "top_k"]);
7186
- ordered.providers = orderObject(ordered.providers, ["openai", "ollama"]);
7187
- ordered.providers.openai = orderObject(recordOrEmpty(ordered.providers.openai), ["base_url", "api_key", "model"]);
7188
- ordered.providers.ollama = orderObject(recordOrEmpty(ordered.providers.ollama), ["base_url", "model"]);
7189
- ordered.vector_store = orderObject(ordered.vector_store, [
7190
- "adapter",
7191
- "collection_name",
7192
- "qdrant",
7193
- "lancedb"
7194
- ]);
7195
- ordered.vector_store.qdrant = orderObject(recordOrEmpty(ordered.vector_store.qdrant), ["url", "api_key"]);
7196
- ordered.vector_store.lancedb = orderObject(recordOrEmpty(ordered.vector_store.lancedb), ["path"]);
7197
- }
7198
- function buildSerializeBaseSettings(settings) {
7199
- return {
7200
- ...settings,
7201
- locks: valueOrDefault(settings.locks, SETTINGS_DEFAULTS.locks),
7202
- checkpoints: valueOrDefault(settings.checkpoints, SETTINGS_DEFAULTS.checkpoints),
7203
- output: valueOrDefault(settings.output, SETTINGS_DEFAULTS.output),
7204
- history: valueOrDefault(settings.history, SETTINGS_DEFAULTS.history),
7205
- validation: valueOrDefault(settings.validation, SETTINGS_DEFAULTS.validation),
7206
- workflow: valueOrDefault(settings.workflow, SETTINGS_DEFAULTS.workflow),
7207
- testing: valueOrDefault(settings.testing, SETTINGS_DEFAULTS.testing),
7208
- telemetry: valueOrDefault(settings.telemetry, SETTINGS_DEFAULTS.telemetry),
7209
- agent_guidance: valueOrDefault(settings.agent_guidance, SETTINGS_DEFAULTS.agent_guidance),
7210
- item_types: valueOrDefault(settings.item_types, SETTINGS_DEFAULTS.item_types),
7211
- schema: valueOrDefault(settings.schema, SETTINGS_DEFAULTS.schema),
7212
- context: valueOrDefault(settings.context, SETTINGS_DEFAULTS.context),
7213
- extensions: valueOrDefault(settings.extensions, SETTINGS_DEFAULTS.extensions),
7214
- search: valueOrDefault(settings.search, SETTINGS_DEFAULTS.search),
7215
- providers: valueOrDefault(settings.providers, SETTINGS_DEFAULTS.providers),
7216
- vector_store: valueOrDefault(settings.vector_store, SETTINGS_DEFAULTS.vector_store)
7217
- };
7218
- }
7219
- function buildSerializedValidationSettings(baseSettings, governance) {
7220
- return {
7221
- ...baseSettings.validation,
7222
- parent_reference: governance.parent_reference,
7223
- metadata_profile: governance.metadata_profile,
7224
- metadata_required_fields: normalizeValidationMetadataRequiredFields(baseSettings.validation?.metadata_required_fields),
7225
- lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_stale_blocker_reason_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_stale_blocker_reason_patterns),
7226
- lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_blocked_reason_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_blocked_reason_patterns),
7227
- lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_resolution_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_resolution_patterns),
7228
- lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(baseSettings.validation?.lifecycle_closure_like_actual_result_patterns ?? SETTINGS_DEFAULTS.validation.lifecycle_closure_like_actual_result_patterns),
7229
- estimate_defaults_by_type: normalizeEstimateDefaultOverrides(baseSettings.validation?.estimate_defaults_by_type)
7230
- };
7231
- }
7232
- function buildSerializedSearchSettings(baseSettings) {
7233
- return {
7234
- ...SETTINGS_DEFAULTS.search,
7235
- ...baseSettings.search,
7236
- mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(baseSettings.search?.mutation_refresh_policy),
7237
- query_expansion: {
7238
- ...SETTINGS_DEFAULTS.search.query_expansion,
7239
- ...baseSettings.search?.query_expansion,
7240
- enabled: normalizeSearchQueryExpansionEnabled(baseSettings.search?.query_expansion?.enabled),
7241
- provider: normalizeSearchQueryExpansionProvider(baseSettings.search?.query_expansion?.provider)
7242
- },
7243
- rerank: {
7244
- ...SETTINGS_DEFAULTS.search.rerank,
7245
- ...baseSettings.search?.rerank,
7246
- enabled: normalizeSearchRerankEnabled(baseSettings.search?.rerank?.enabled),
7247
- model: normalizeSearchRerankModel(baseSettings.search?.rerank?.model),
7248
- top_k: normalizeSearchRerankTopK(baseSettings.search?.rerank?.top_k)
7249
- }
7250
- };
7251
- }
7252
- function buildSerializedContextSettings(baseSettings) {
7253
- return {
7254
- default_depth: baseSettings.context?.default_depth ?? SETTINGS_DEFAULTS.context.default_depth,
7255
- activity_limit: baseSettings.context?.activity_limit ?? SETTINGS_DEFAULTS.context.activity_limit,
7256
- stale_threshold_days: baseSettings.context?.stale_threshold_days ?? SETTINGS_DEFAULTS.context.stale_threshold_days,
7257
- sections: {
7258
- ...SETTINGS_DEFAULTS.context.sections,
7259
- ...baseSettings.context?.sections
7260
- }
7261
- };
7262
- }
7263
- function buildSerializedVectorStoreSettings(baseSettings) {
7264
- return {
7265
- ...baseSettings.vector_store,
7266
- adapter: baseSettings.vector_store?.adapter ?? SETTINGS_DEFAULTS.vector_store.adapter,
7267
- collection_name: normalizeVectorStoreCollectionName(baseSettings.vector_store?.collection_name),
7268
- qdrant: { ...baseSettings.vector_store?.qdrant },
7269
- lancedb: { ...baseSettings.vector_store?.lancedb }
7270
- };
7271
- }
7272
- function buildNormalizedSettingsForSerialization(baseSettings, governance, normalizedSchema, persistedFileBackedSections) {
7273
- return {
7274
- ...baseSettings,
7275
- item_format: "toon",
7276
- validation: buildSerializedValidationSettings(baseSettings, governance),
7277
- governance,
7278
- agent_guidance: normalizeAgentGuidanceSettings(baseSettings.agent_guidance),
7279
- item_types: {
7280
- definitions: persistedFileBackedSections.item_type_definitions
7281
- },
7282
- schema: {
7283
- ...normalizedSchema,
7284
- statuses: persistedFileBackedSections.schema_statuses,
7285
- fields: persistedFileBackedSections.schema_fields,
7286
- type_workflows: persistedFileBackedSections.schema_type_workflows
7287
- },
7288
- search: buildSerializedSearchSettings(baseSettings),
7289
- context: buildSerializedContextSettings(baseSettings),
7290
- extensions: {
7291
- enabled: normalizeStringList2(baseSettings.extensions?.enabled),
7292
- disabled: normalizeStringList2(baseSettings.extensions?.disabled),
7293
- policy: normalizeExtensionPolicySettings(baseSettings.extensions?.policy)
7294
- },
7295
- vector_store: buildSerializedVectorStoreSettings(baseSettings)
7296
- };
7297
- }
7298
- function serializeSettings(settings, options = {}) {
7299
- const baseSettings = buildSerializeBaseSettings(settings);
7300
- const governance = resolveGovernanceKnobs(baseSettings);
7301
- const normalizedSchema = normalizeRuntimeSchemaSettings(baseSettings.schema);
7302
- const persistedFileBackedSections = resolvePersistedFileBackedSchemaSections(baseSettings, options.persist_source);
7303
- const normalizedSettings = buildNormalizedSettingsForSerialization(baseSettings, governance, normalizedSchema, persistedFileBackedSections);
7304
- const ordered = orderObject({
7305
- ...normalizedSettings,
7306
- governance: normalizeGovernanceForPersist(governance)
7307
- }, [
7308
- "version",
7309
- "id_prefix",
7310
- "author_default",
7311
- "item_format",
7312
- "locks",
7313
- "checkpoints",
7314
- "output",
7315
- "history",
7316
- "validation",
7317
- "governance",
7318
- "workflow",
7319
- "testing",
7320
- "telemetry",
7321
- "agent_guidance",
7322
- "item_types",
7323
- "schema",
7324
- "context",
7325
- "extensions",
7326
- "search",
7327
- "providers",
7328
- "vector_store"
7329
- ]);
7330
- orderSerializedSettingsSections(ordered);
7331
- return `${JSON.stringify(ordered, null, 2)}
7332
- `;
7333
- }
7334
- async function readSettingsWithMetadata(pmRoot) {
7335
- const settingsPath = getSettingsPath(pmRoot);
7336
- let trackedPathsForFailure = [settingsPath];
7337
- await runActiveOnReadHooks({
7338
- path: settingsPath,
7339
- scope: "project"
7340
- });
7341
- const cachedResult = getSettingsReadCacheEntry(pmRoot);
7342
- if (cachedResult) {
7343
- const currentSignatures = await collectSettingsReadCacheSignatures(cachedResult.tracked_paths);
7344
- if (settingsReadCacheSignaturesEqual(currentSignatures, cachedResult.signatures)) {
7345
- return cloneSettingsReadResult(cachedResult.value);
7346
- }
7347
- }
7348
- const settingsOnlySignatures = await collectSettingsReadCacheSignatures([settingsPath]);
7349
- const raw = await readFileIfExists(settingsPath);
7350
- if (raw === null) {
7351
- const fallback = buildFallbackSettingsReadResult();
7352
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsOnlySignatures, [settingsPath]);
7353
- return fallback;
7354
- }
7355
- const settingsSignaturesAfterRead = await collectSettingsReadCacheSignatures([settingsPath]);
7356
- if (!settingsReadCacheSignaturesEqual(settingsOnlySignatures, settingsSignaturesAfterRead)) {
7357
- clearSettingsReadCache(pmRoot);
7358
- return readSettingsWithMetadata(pmRoot);
7359
- }
7360
- let parsed;
7361
- try {
7362
- parsed = JSON.parse(raw);
7363
- } catch {
7364
- const fallback = buildFallbackSettingsReadResult("settings_read_invalid_json");
7365
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
7366
- return fallback;
7367
- }
7368
- const validated = validateSettings(parsed);
7369
- if (!validated.success) {
7370
- const fallback = buildFallbackSettingsReadResult("settings_read_invalid_schema");
7371
- await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);
7372
- return fallback;
7373
- }
7374
- try {
7375
- const mergedSettings = mergeSettings(validated.data);
7376
- const trackedPaths = resolveSettingsReadTrackedPaths(pmRoot, mergedSettings.schema, settingsPath);
7377
- trackedPathsForFailure = trackedPaths;
7378
- const signaturesBeforeSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
7379
- const schemaScaffold = await ensureRuntimeSchemaFileScaffold(pmRoot, mergedSettings.schema);
7380
- const loadedSchemaSections = await loadRuntimeSchemaFromOptionalFiles(pmRoot, mergedSettings.schema);
7381
- const signaturesAfterSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);
7382
- const settings = {
7383
- ...mergedSettings,
7384
- item_types: {
7385
- definitions: normalizeItemTypeDefinitions([
7386
- ...mergedSettings.item_types.definitions,
7387
- ...arrayOrEmpty(loadedSchemaSections.type_definitions_from_file)
7388
- ])
7389
- },
7390
- schema: loadedSchemaSections.schema
7391
- };
7392
- attachSettingsPersistSourceSnapshot(settings, buildSettingsPersistSourceSnapshot(validated.data, settings));
7393
- const result = {
7394
- settings,
7395
- metadata: {
7396
- has_explicit_item_format: hasExplicitItemFormat(parsed)
7397
- },
7398
- warnings: [
7399
- ...validated.data.item_format === "json_markdown" ? ["settings_item_format_legacy_json_markdown_coerced_to_toon"] : [],
7400
- ...schemaScaffold.created_paths.map((createdPath) => `runtime_schema_bootstrap_created:${createdPath}`),
7401
- ...loadedSchemaSections.warnings
7402
- ]
7403
- };
7404
- if (schemaScaffold.created_paths.length === 0) {
7405
- if (!settingsReadCacheSignaturesEqual(signaturesBeforeSchemaLoad, signaturesAfterSchemaLoad)) {
7406
- clearSettingsReadCache(pmRoot);
7407
- } else {
7408
- setSettingsReadCacheEntry(pmRoot, {
7409
- tracked_paths: trackedPaths,
7410
- signatures: signaturesAfterSchemaLoad,
7411
- value: cloneSettingsReadResult(result)
7412
- });
7413
- }
7414
- } else {
7415
- clearSettingsReadCache(pmRoot);
7416
- }
7417
- return result;
7418
- } catch {
7419
- const fallback = buildFallbackSettingsReadResult("settings_read_merge_failed");
7420
- await cacheSettingsReadResultSafe(pmRoot, trackedPathsForFailure, fallback);
7421
- return fallback;
7422
- }
7423
- }
7424
- async function readSettings(pmRoot) {
7425
- return (await readSettingsWithMetadata(pmRoot)).settings;
7426
- }
7427
- async function writeSettings(pmRoot, settings, op = SETTINGS_WRITE_OP) {
7428
- const settingsPath = getSettingsPath(pmRoot);
7429
- await writeFileAtomic(settingsPath, serializeSettings(settings, {
7430
- persist_source: getSettingsPersistSourceSnapshot(settings)
7431
- }));
7432
- try {
7433
- await runActiveOnWriteHooks({
7434
- path: settingsPath,
7435
- scope: "project",
7436
- op
7437
- });
7438
- } finally {
7439
- clearSettingsReadCache(pmRoot);
7440
- }
7441
- }
7442
-
7443
5645
  export {
7444
5646
  ensureDir,
7445
5647
  pathExists,
@@ -7450,13 +5652,17 @@ export {
7450
5652
  isPathWithinDirectory,
7451
5653
  resolvePmPackageRootFromModule,
7452
5654
  resolvePmCliVersion,
5655
+ resolveConfiguredPmPackageRoot,
7453
5656
  KNOWN_EXTENSION_CAPABILITIES,
5657
+ EXTENSION_CAPABILITY_CONTRACT_VERSION,
5658
+ EXTENSION_CAPABILITY_LEGACY_ALIASES,
7454
5659
  EXTENSION_CAPABILITY_CONTRACT,
7455
5660
  KNOWN_EXTENSION_POLICY_MODES,
7456
5661
  KNOWN_EXTENSION_TRUST_MODES,
7457
5662
  KNOWN_EXTENSION_SANDBOX_PROFILES,
7458
5663
  KNOWN_EXTENSION_POLICY_SURFACES,
7459
5664
  KNOWN_EXTENSION_SERVICE_NAMES,
5665
+ createDefaultExtensionGovernancePolicy,
7460
5666
  PM_DIRNAME,
7461
5667
  CREATE_DIRECT_CLOSE_REASON_DEFAULT,
7462
5668
  PM_CORE_REQUIRED_SUBDIRS,
@@ -7472,15 +5678,18 @@ export {
7472
5678
  EXIT_CODE,
7473
5679
  resolveTelemetryErrorCategory,
7474
5680
  BUILTIN_ITEM_TYPE_VALUES,
5681
+ ITEM_TYPE_VALUES,
7475
5682
  STATUS_VALUES,
7476
5683
  RUNTIME_STATUS_ROLE_VALUES,
7477
5684
  RUNTIME_FIELD_TYPE_VALUES,
7478
5685
  RUNTIME_FIELD_COMMAND_VALUES,
5686
+ RUNTIME_UNKNOWN_FIELD_POLICY_VALUES,
7479
5687
  DEPENDENCY_KIND_VALUES,
7480
5688
  SCOPE_VALUES,
7481
5689
  RISK_VALUES,
7482
5690
  ISSUE_SEVERITY_VALUES,
7483
5691
  CONFIDENCE_TEXT_VALUES,
5692
+ GOVERNANCE_PRESET_VALUES,
7484
5693
  RECURRENCE_FREQUENCY_VALUES,
7485
5694
  RECURRENCE_WEEKDAY_VALUES,
7486
5695
  weekdayOrderIndex,
@@ -7490,6 +5699,7 @@ export {
7490
5699
  PLAN_STEP_LINK_KIND_VALUES,
7491
5700
  CONTEXT_DEPTH_VALUES,
7492
5701
  CONTEXT_SECTION_VALUES,
5702
+ normalizeItemTypeDefinition,
7493
5703
  COMMON_MUTATION_COMMAND_OPTION_KEYS,
7494
5704
  canonicalizeCommandOptionKey,
7495
5705
  commandOptionFlagLabel,
@@ -7525,69 +5735,55 @@ export {
7525
5735
  coercePositiveInteger,
7526
5736
  coerceNumberInRange,
7527
5737
  asRecordOrNull,
5738
+ asPropertyRecord,
5739
+ resolveActivatablePropertyRecord,
7528
5740
  resolveFlagValueKind,
7529
5741
  flattenFlagListValue,
7530
5742
  levenshteinDistanceWithinLimit,
7531
5743
  normalizeItemFieldType,
5744
+ evaluatePmMinVersionBound,
5745
+ evaluatePmMaxVersionBound,
5746
+ normalizeKnownExtensionCapability,
5747
+ resolveLegacyExtensionCapabilityAlias,
7532
5748
  parseUnknownExtensionCapabilityWarning,
7533
5749
  parseLegacyExtensionCapabilityAliasWarning,
5750
+ normalizeCommandName,
7534
5751
  createEmptyExtensionRegistrationRegistry,
7535
5752
  runBeforeCommandHooks,
7536
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,
7537
5765
  nextExtensionReloadToken,
5766
+ isCanonicalPathWithinDirectory,
7538
5767
  resolveExtensionRoots,
7539
5768
  discoverExtensions,
7540
5769
  loadExtensions,
5770
+ deactivateExtensions,
7541
5771
  activateExtensions,
5772
+ EXTENSION_CAPABILITY_REGISTRATION_SURFACES,
7542
5773
  normalizeExtensionName,
7543
5774
  collectUsedExtensionCapabilities,
7544
5775
  reconcileExtensionCapabilityUsage,
7545
- setActiveExtensionHooks,
7546
- setActiveExtensionCommands,
7547
- setActiveExtensionParsers,
7548
- setActiveExtensionPreflight,
7549
- setActiveExtensionServices,
7550
- setActiveExtensionRenderers,
7551
- setActiveExtensionRegistrations,
7552
- getActiveExtensionRegistrations,
7553
- setActiveCommandContext,
7554
- setActiveCommandResult,
7555
- getActiveCommandResult,
7556
- recordAfterCommandAffectedItem,
7557
- projectAfterCommandItemSnapshot,
7558
- consumeAfterCommandAffectedItems,
7559
- clearActiveExtensionHooks,
7560
- runActiveOnWriteHooks,
7561
- runActiveOnReadHooks,
7562
- hasActiveOnReadHooks,
7563
- runActiveOnIndexHooks,
7564
- runActiveCommandOverride,
7565
- runActiveCommandHandler,
7566
- runActiveParserOverride,
7567
- runActivePreflightOverride,
7568
- runActiveRendererOverride,
7569
- runActiveServiceOverride,
7570
- runActiveServiceOverrideSync,
7571
5776
  DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
7572
5777
  DEFAULT_RUNTIME_STATUS_DEFINITIONS,
7573
5778
  normalizeRuntimeSchemaSettings,
7574
5779
  filePathForSchemaSection,
7575
5780
  resolveItemTypesFilePath,
7576
5781
  ensureRuntimeSchemaFileScaffold,
5782
+ loadRuntimeSchemaFromOptionalFiles,
7577
5783
  resolveRuntimeStatusRegistry,
7578
5784
  normalizeStatusInputWithRegistry,
7579
5785
  resolveRuntimeFieldRegistry,
7580
5786
  runtimeFieldOptionTarget,
7581
- statusIsTerminal,
7582
- PmCliError,
7583
- stableStringify,
7584
- stableValueEquals,
7585
- sha256Hex,
7586
- orderObject,
7587
- resolveEstimateDefaultMinutes,
7588
- resolveGovernanceKnobs,
7589
- readSettingsWithMetadata,
7590
- readSettings,
7591
- writeSettings
5787
+ statusIsTerminal
7592
5788
  };
7593
- //# sourceMappingURL=chunk-BDDYM4LH.js.map
5789
+ //# sourceMappingURL=chunk-5VVUKE3U.js.map