@unbrained/pm-cli 2026.6.30 → 2026.7.1

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 (452) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +20 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commands/calendar.js +63 -62
  6. package/dist/cli/commands/calendar.js.map +1 -1
  7. package/dist/cli/commands/create.js +483 -434
  8. package/dist/cli/commands/create.js.map +1 -1
  9. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  10. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  11. package/dist/cli/commands/extension/doctor.js +129 -78
  12. package/dist/cli/commands/extension/doctor.js.map +1 -1
  13. package/dist/cli/commands/extension/managed-state.js +101 -57
  14. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  15. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  16. package/dist/cli/commands/extension/scaffold.js +214 -186
  17. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  18. package/dist/cli/commands/extension.d.ts +6 -1
  19. package/dist/cli/commands/extension.js +1034 -902
  20. package/dist/cli/commands/extension.js.map +1 -1
  21. package/dist/cli/commands/list-filter-shared.js +55 -48
  22. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  23. package/dist/cli/commands/search.js +94 -68
  24. package/dist/cli/commands/search.js.map +1 -1
  25. package/dist/cli/commands/test.js +108 -122
  26. package/dist/cli/commands/test.js.map +1 -1
  27. package/dist/cli/commands/update.js +27 -77
  28. package/dist/cli/commands/update.js.map +1 -1
  29. package/dist/cli/extension-command-options.js +48 -21
  30. package/dist/cli/extension-command-options.js.map +1 -1
  31. package/dist/cli/registration-helpers.js +117 -122
  32. package/dist/cli/registration-helpers.js.map +1 -1
  33. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
  34. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-DBLQVIP6.js} +9 -9
  35. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-JTEF4BP7.js} +9 -9
  36. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SDF7DUOD.js} +9 -9
  37. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-LOVPGVPT.js} +6 -6
  38. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-QCFJSDFL.js} +6 -6
  39. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-22WKIL3H.js} +6 -6
  40. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-2466X6E4.js} +6 -6
  41. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-27BXPBAY.js} +3 -3
  42. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-2D4HATP2.js} +5 -5
  43. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-3J6JRJ3I.js} +127 -125
  44. package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
  45. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-3K2M5OYU.js} +4 -4
  46. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-3S2KT7NG.js} +7 -7
  47. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-3VGN2UWE.js} +2 -2
  48. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-3XZCOZ5J.js} +107 -117
  49. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
  50. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
  51. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
  52. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  53. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  54. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-4DSGXSBL.js} +4 -4
  55. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-4DUVCVLZ.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-4XOIEKSD.js} +351 -330
  57. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
  58. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-55SNVXRQ.js} +68 -69
  59. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
  60. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-5CGRF3L5.js} +7 -7
  61. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-5QFDBI4F.js} +1105 -965
  62. package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
  63. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-64HNBBFQ.js} +6 -6
  64. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-6AQZPVHQ.js} +198 -189
  65. package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
  66. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-7R4QEMZZ.js} +361 -322
  67. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
  68. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-A7FPBAQS.js} +4 -4
  69. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-AVEE5EHK.js} +3 -3
  70. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-AXIDKKAT.js} +2 -2
  71. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-BDTISOSD.js} +2 -2
  72. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-BHO33VBQ.js} +509 -363
  73. package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
  74. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-BZCEN4JA.js} +98 -74
  75. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
  76. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-CF7RL6FR.js} +7 -7
  77. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-CWFNTKQJ.js} +128 -126
  78. package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-DDPTYJIM.js} +2 -2
  80. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-EJUDVUYZ.js} +3 -3
  81. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-EVMTBV6V.js} +3 -3
  82. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-FFMQB7WR.js} +99 -75
  83. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
  84. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-G7I7DEZA.js} +4 -4
  85. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-GJ326ZKX.js} +3 -3
  86. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-HPPFYYOV.js} +2 -2
  87. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-HXTQJXWT.js} +150 -224
  88. package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
  89. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-HYTGA6GI.js} +3 -3
  90. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-HZZEHPRG.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-IJYK2T43.js} +2 -2
  92. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-IPYBJWTE.js} +7 -7
  93. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-IZBR4NRW.js} +7 -7
  94. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-JLM7BHI7.js} +6 -6
  95. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-JMP4E6D7.js} +106 -116
  96. package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
  97. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-JPECA746.js} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-JSU5P7VS.js} +4 -4
  99. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-JWXRETDF.js} +69 -70
  100. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-KNPEF7QG.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-L5OEFZQG.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-LB6TP6MC.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-MAUKX7JC.js} +2 -2
  105. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-MDPEOIGN.js} +150 -224
  106. package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
  107. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-N74UMG5H.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-NFDPYAIP.js} +2 -2
  109. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-NKZAN7BD.js} +3 -3
  110. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-NOLPZMSV.js} +2 -2
  111. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-NU2UEROZ.js} +1103 -963
  112. package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
  113. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-NUHHPVVS.js} +36 -86
  114. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-NWMZWYYB.js} +2 -2
  116. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-OGXLACHC.js} +6 -6
  117. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-OTUHB4HS.js} +4 -4
  118. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-QCWF6IYD.js} +510 -364
  119. package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-RGEMWD6Q.js} +5 -5
  121. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
  122. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
  123. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-RLDHZHQS.js} +7 -7
  124. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-RMMQ74TG.js} +5 -5
  125. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-RVUALSJF.js} +361 -322
  126. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
  127. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-SDR5J34Q.js} +198 -189
  128. package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-SLMUGTK3.js} +4 -4
  130. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-TP5Q5ZD3.js} +5 -5
  131. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-UYUYDGIB.js} +4 -4
  132. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-UZIWVBE6.js} +2 -2
  133. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-V3NOKJF2.js} +6 -6
  134. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-VARHOHYV.js} +350 -329
  135. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-VICZWYGZ.js} +4 -4
  137. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  138. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-W4ULYO7Z.js} +6 -6
  140. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-WYDHYJPO.js} +2 -2
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-YITK2PJ6.js} +6 -6
  142. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-ZETXE4SE.js} +37 -87
  143. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
  144. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-ZRP4VG5U.js} +2 -2
  145. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-EMQLYPRW.js} +8 -8
  146. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-T3GCKV7C.js} +8 -8
  147. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
  148. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-TQYAAFJP.js} +7 -7
  149. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-BG5QQIDQ.js} +15 -15
  150. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-LDRVEQY2.js} +15 -15
  151. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-QCKR2YY2.js} +8 -8
  152. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-YUXJRZPQ.js} +8 -8
  153. package/dist/cli-bundle/chunks/{config-FIXJZEQK.js → config-DMSU64QO.js} +7 -7
  154. package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js → config-QH2DICD6.js} +7 -7
  155. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-B6275WPX.js} +12 -12
  156. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-OCZ3FJ4Z.js} +12 -12
  157. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-HN7ABKLP.js} +3 -3
  158. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-W4FZVVD6.js} +3 -3
  159. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-BTJOSKKT.js} +5 -5
  160. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-DEM4DATS.js} +5 -5
  161. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
  162. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-RLRJMRTM.js} +12 -12
  163. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-BHK7VB2Z.js} +5 -5
  164. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-LSVHAB4Y.js} +5 -5
  165. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-4UDFJRUA.js} +5 -5
  166. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-XHYXWEPT.js} +5 -5
  167. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-26S44RXU.js} +7 -7
  168. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-GYZNVS26.js} +7 -7
  169. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-PGRVIJQU.js} +10 -10
  170. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-UYF3ZPVO.js} +10 -10
  171. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-CPSLJQVE.js} +11 -10
  172. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-CXJ6RELI.js} +11 -10
  173. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-MBNICQFM.js} +7 -7
  174. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-NQHEXUZD.js} +7 -7
  175. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-DWYIG7GU.js} +6 -6
  176. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-XZW5423D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-7GQYOS2G.js} +3 -3
  178. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-LPVMKJQJ.js} +3 -3
  179. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-A7MAOHCU.js} +9 -9
  180. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-DSDEKJ3L.js} +9 -9
  181. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-3IPFLKXB.js} +17 -16
  182. package/dist/cli-bundle/chunks/{health-Q66C43GN.js.map → health-3IPFLKXB.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-GZXGBZ36.js} +15 -14
  184. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js.map → health-GZXGBZ36.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-NERDJNUB.js} +8 -8
  186. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
  187. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-2WRZ2WK4.js} +10 -10
  188. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HR7BB4LR.js} +10 -10
  189. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
  190. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-O3NBCNWC.js} +9 -9
  191. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-LCMOS45X.js} +10 -10
  192. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-XA3LC4GA.js} +10 -10
  193. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-64XDLQJB.js} +12 -11
  194. package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
  195. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-JR6MA5TI.js} +8 -8
  196. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-LPKCSJX7.js} +8 -8
  197. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-DNBJVO3E.js} +8 -8
  198. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-G5Y65VF6.js} +8 -8
  199. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-BCERKDUR.js} +13 -13
  200. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-FYTQF6HG.js} +13 -13
  201. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-2BMU3VVQ.js} +8 -8
  202. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-6KTGO2OJ.js} +8 -8
  203. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-4WXEQCTN.js} +12 -12
  204. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-RKZHQVXR.js} +12 -12
  205. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-4OMM32CD.js} +8 -8
  206. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-QLER5ENE.js} +8 -8
  207. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-7LV46VAU.js} +18 -18
  208. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-SNG5PGA4.js} +18 -18
  209. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-ENNDUAZG.js} +35 -35
  210. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KK7PHYYU.js} +35 -35
  211. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-C6OWLDSH.js} +30 -30
  212. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-HZ6XERQG.js} +30 -30
  213. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-P67EMBDJ.js} +15 -15
  214. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZKJ53RS7.js} +15 -15
  215. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4MHZFJ2E.js} +9 -9
  216. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
  217. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-LB6DOLRL.js} +12 -12
  218. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -12
  219. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-73HR2OJW.js} +7 -7
  220. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-U6LJKSIR.js} +7 -7
  221. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-AXPXKZER.js} +10 -10
  222. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-KILGT37L.js} +10 -10
  223. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-PSYVVTNZ.js} +6 -6
  224. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-W5KNVJWQ.js} +6 -6
  225. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-BZUF6H7G.js} +4 -4
  226. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-GAHHQTOS.js} +4 -4
  227. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-ACD52Z3S.js} +15 -14
  228. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-PWDIZ255.js} +15 -14
  229. package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js → test-all-L2MDDUCA.js} +17 -16
  230. package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js.map → test-all-L2MDDUCA.js.map} +1 -1
  231. package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js → test-all-RBZ6DLU2.js} +15 -14
  232. package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js.map → test-all-RBZ6DLU2.js.map} +1 -1
  233. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-PLRAZEFW.js} +4 -4
  234. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-UXIXPDKU.js} +4 -4
  235. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
  236. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-KFX2SIAC.js} +15 -15
  237. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-RNSBX2TA.js} +23 -23
  238. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-Z5GJS5LC.js} +23 -23
  239. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-BRL6KCOJ.js} +13 -12
  240. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
  241. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-HAK6JG2O.js} +11 -10
  242. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-HAK6JG2O.js.map} +1 -1
  243. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-MTUVL5VC.js} +20 -19
  244. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js.map → validate-MTUVL5VC.js.map} +1 -1
  245. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-X5W76YJL.js} +22 -21
  246. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js.map → validate-X5W76YJL.js.map} +1 -1
  247. package/dist/cli-bundle/main.js +55 -702
  248. package/dist/cli-bundle/main.js.map +4 -4
  249. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  250. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  251. package/dist/core/extensions/extension-policy.d.ts +18 -3
  252. package/dist/core/extensions/extension-policy.js +116 -106
  253. package/dist/core/extensions/extension-policy.js.map +1 -1
  254. package/dist/core/extensions/loader.js +310 -232
  255. package/dist/core/extensions/loader.js.map +1 -1
  256. package/dist/core/item/item-format.js +523 -410
  257. package/dist/core/item/item-format.js.map +1 -1
  258. package/dist/mcp/server.js +387 -367
  259. package/dist/mcp/server.js.map +1 -1
  260. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  261. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  262. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  263. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  264. package/dist/sdk/compose.d.ts +4 -1
  265. package/dist/sdk/compose.js +181 -115
  266. package/dist/sdk/compose.js.map +1 -1
  267. package/docs/RELEASING.md +2 -3
  268. package/package.json +1 -1
  269. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  270. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  271. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  272. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  273. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  274. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  275. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  276. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  277. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  278. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  279. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  280. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  281. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  282. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  283. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  284. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  285. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  286. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  287. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  288. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  289. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  290. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  291. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  292. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  293. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  294. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  295. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  296. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  297. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  298. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  299. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  300. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  301. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  302. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  303. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  304. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  305. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  306. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  307. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-AW6XVFH6.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-DBLQVIP6.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js.map → aggregate-JTEF4BP7.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SDF7DUOD.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-LOVPGVPT.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-QCFJSDFL.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-22WKIL3H.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-2466X6E4.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-27BXPBAY.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js.map → chunk-2D4HATP2.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-3K2M5OYU.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js.map → chunk-3S2KT7NG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js.map → chunk-3VGN2UWE.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js.map → chunk-4DSGXSBL.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-4DUVCVLZ.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js.map → chunk-5CGRF3L5.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-64HNBBFQ.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-A7FPBAQS.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-AVEE5EHK.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-AXIDKKAT.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js.map → chunk-BDTISOSD.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js.map → chunk-CF7RL6FR.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-DDPTYJIM.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-EJUDVUYZ.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-EVMTBV6V.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-G7I7DEZA.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-GJ326ZKX.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-HPPFYYOV.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-HYTGA6GI.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-HZZEHPRG.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-IJYK2T43.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js.map → chunk-IPYBJWTE.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js.map → chunk-IZBR4NRW.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-JLM7BHI7.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-JPECA746.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js.map → chunk-JSU5P7VS.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js.map → chunk-KNPEF7QG.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-L5OEFZQG.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-LB6TP6MC.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-MAUKX7JC.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-N74UMG5H.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js.map → chunk-NFDPYAIP.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-NKZAN7BD.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-NOLPZMSV.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js.map → chunk-NWMZWYYB.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-OGXLACHC.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js.map → chunk-OTUHB4HS.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js.map → chunk-RGEMWD6Q.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js.map → chunk-RLDHZHQS.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js.map → chunk-RMMQ74TG.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-SLMUGTK3.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js.map → chunk-TP5Q5ZD3.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js.map → chunk-UYUYDGIB.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-UZIWVBE6.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-JTRKME24.js.map → chunk-V3NOKJF2.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-VICZWYGZ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-W4ULYO7Z.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-WYDHYJPO.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js.map → chunk-YITK2PJ6.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-ZRP4VG5U.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-EMQLYPRW.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-T3GCKV7C.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-E6ZZGCJY.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-TQYAAFJP.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js.map → close-many-BG5QQIDQ.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js.map → close-many-LDRVEQY2.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-QCKR2YY2.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-YUXJRZPQ.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{config-FIXJZEQK.js.map → config-DMSU64QO.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js.map → config-QH2DICD6.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-B6275WPX.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-OCZ3FJ4Z.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js.map → contracts-HN7ABKLP.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js.map → contracts-W4FZVVD6.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-BTJOSKKT.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-DEM4DATS.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-OH3BDGBB.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-RLRJMRTM.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-BHK7VB2Z.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-LSVHAB4Y.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-4UDFJRUA.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-XHYXWEPT.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-26S44RXU.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-GYZNVS26.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-PGRVIJQU.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-UYF3ZPVO.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-CPSLJQVE.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-CXJ6RELI.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-MBNICQFM.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-NQHEXUZD.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-DWYIG7GU.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-XZW5423D.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-7GQYOS2G.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-LPVMKJQJ.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{get-AWK324RS.js.map → get-A7MAOHCU.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{get-VYPIICPC.js.map → get-DSDEKJ3L.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-NERDJNUB.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-WSZHY3PN.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js.map → history-compact-2WRZ2WK4.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js.map → history-compact-HR7BB4LR.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-MP6CH7U5.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-O3NBCNWC.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js.map → history-repair-LCMOS45X.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js.map → history-repair-XA3LC4GA.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-64XDLQJB.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-PAX32BJA.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-JR6MA5TI.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-LPKCSJX7.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-DNBJVO3E.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-G5Y65VF6.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{next-66BJB4N2.js.map → next-BCERKDUR.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{next-N5MWJTBY.js.map → next-FYTQF6HG.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-2BMU3VVQ.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-6KTGO2OJ.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js.map → plan-4WXEQCTN.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js.map → plan-RKZHQVXR.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-4OMM32CD.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-QLER5ENE.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js.map → register-list-query-7LV46VAU.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js.map → register-list-query-SNG5PGA4.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js.map → register-mutation-ENNDUAZG.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js.map → register-mutation-KK7PHYYU.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js.map → register-operations-C6OWLDSH.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js.map → register-operations-HZ6XERQG.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js.map → register-setup-P67EMBDJ.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js.map → register-setup-ZKJ53RS7.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4MHZFJ2E.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-YALDGTQR.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-73HR2OJW.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-U6LJKSIR.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-AXPXKZER.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-KILGT37L.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-PSYVVTNZ.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-W5KNVJWQ.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js.map → telemetry-BZUF6H7G.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-ACD52Z3S.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-PWDIZ255.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js.map → test-runs-PLRAZEFW.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js.map → test-runs-UXIXPDKU.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-AMRSOIWP.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-KFX2SIAC.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-RNSBX2TA.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-Z5GJS5LC.js.map} +0 -0
@@ -2526,7 +2526,7 @@ function parseLegacyExtensionCapabilityAliasWarning(warning) {
2526
2526
  !(function() {
2527
2527
  try {
2528
2528
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2529
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "34b7e8e0-c42f-50c2-9ee5-093565566cd7");
2529
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbc43b74-6872-52c3-859a-64fe84c02b5b");
2530
2530
  } catch (e2) {
2531
2531
  }
2532
2532
  })();
@@ -2639,34 +2639,15 @@ function collectExtensionPolicyOverrides(rawOverrides) {
2639
2639
  }
2640
2640
  return overridesByName;
2641
2641
  }
2642
- function normalizeExtensionPolicy(settings) {
2643
- const policy = settings.extensions.policy;
2644
- const mode = normalizePolicyMode(policy?.mode);
2645
- const trustMode = normalizePolicyTrustMode(policy?.trust_mode);
2646
- const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);
2647
- const requireProvenance = policy?.require_provenance === true;
2648
- const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);
2649
- const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);
2650
- const allowedExtensions = normalizePolicyStringSet(policy?.allowed_extensions);
2651
- const blockedExtensions = normalizePolicyStringSet(policy?.blocked_extensions);
2652
- const allowedCapabilities = normalizePolicyStringSet(policy?.allowed_capabilities);
2653
- const blockedCapabilities = normalizePolicyStringSet(policy?.blocked_capabilities);
2654
- const allowedSurfaces = normalizePolicySurfaceSet(policy?.allowed_surfaces);
2655
- const blockedSurfaces = normalizePolicySurfaceSet(policy?.blocked_surfaces);
2656
- const allowedCommands = normalizePolicyStringSet(policy?.allowed_commands);
2657
- const blockedCommands = normalizePolicyStringSet(policy?.blocked_commands);
2658
- const allowedActions = normalizePolicyStringSet(policy?.allowed_actions);
2659
- const blockedActions = normalizePolicyStringSet(policy?.blocked_actions);
2660
- const allowedServices = normalizePolicyStringSet(policy?.allowed_services);
2661
- const blockedServices = normalizePolicyStringSet(policy?.blocked_services);
2662
- const overridesByName = collectExtensionPolicyOverrides(policy?.extension_overrides);
2642
+ function collectExtensionPolicyWarnings(normalized) {
2663
2643
  const warnings = [];
2664
- for (const capability of toSortedList([...allowedCapabilities, ...blockedCapabilities])) {
2644
+ const sortedOverrides = [...normalized.overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name));
2645
+ for (const capability of toSortedList([...normalized.allowedCapabilities, ...normalized.blockedCapabilities])) {
2665
2646
  if (!isKnownExtensionCapability(capability)) {
2666
2647
  warnings.push(`extension_policy_unknown_capability:${capability}`);
2667
2648
  }
2668
2649
  }
2669
- for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {
2650
+ for (const override of sortedOverrides) {
2670
2651
  for (const capability of toSortedList([...override.allowedCapabilities, ...override.blockedCapabilities])) {
2671
2652
  if (!isKnownExtensionCapability(capability)) {
2672
2653
  warnings.push(`extension_policy_unknown_capability:${override.name}:${capability}`);
@@ -2674,39 +2655,54 @@ function normalizeExtensionPolicy(settings) {
2674
2655
  }
2675
2656
  }
2676
2657
  const knownSurfaces = new Set(KNOWN_EXTENSION_POLICY_SURFACES);
2677
- for (const surface of toSortedList([...allowedSurfaces, ...blockedSurfaces])) {
2658
+ for (const surface of toSortedList([...normalized.allowedSurfaces, ...normalized.blockedSurfaces])) {
2678
2659
  if (!knownSurfaces.has(surface)) {
2679
2660
  warnings.push(`extension_policy_unknown_surface:${surface}`);
2680
2661
  }
2681
2662
  }
2682
- for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {
2663
+ for (const override of sortedOverrides) {
2683
2664
  for (const surface of toSortedList([...override.allowedSurfaces, ...override.blockedSurfaces])) {
2684
2665
  if (!knownSurfaces.has(surface)) {
2685
2666
  warnings.push(`extension_policy_unknown_surface:${override.name}:${surface}`);
2686
2667
  }
2687
2668
  }
2688
2669
  }
2670
+ return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
2671
+ }
2672
+ function normalizeExtensionPolicy(settings) {
2673
+ const policy = settings.extensions?.policy ?? {};
2674
+ const allowedCapabilities = normalizePolicyStringSet(policy.allowed_capabilities);
2675
+ const blockedCapabilities = normalizePolicyStringSet(policy.blocked_capabilities);
2676
+ const allowedSurfaces = normalizePolicySurfaceSet(policy.allowed_surfaces);
2677
+ const blockedSurfaces = normalizePolicySurfaceSet(policy.blocked_surfaces);
2678
+ const overridesByName = collectExtensionPolicyOverrides(policy.extension_overrides);
2689
2679
  return {
2690
- mode,
2691
- trustMode,
2692
- pmMaxVersionExceededMode: pmMaxVersionExceededMode2,
2693
- requireProvenance,
2694
- trustedExtensions,
2695
- defaultSandboxProfile,
2696
- allowedExtensions,
2697
- blockedExtensions,
2680
+ mode: normalizePolicyMode(policy.mode),
2681
+ trustMode: normalizePolicyTrustMode(policy.trust_mode),
2682
+ pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),
2683
+ requireProvenance: policy.require_provenance === true,
2684
+ trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),
2685
+ defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),
2686
+ allowedExtensions: normalizePolicyStringSet(policy.allowed_extensions),
2687
+ blockedExtensions: normalizePolicyStringSet(policy.blocked_extensions),
2698
2688
  allowedCapabilities,
2699
2689
  blockedCapabilities,
2700
2690
  allowedSurfaces,
2701
2691
  blockedSurfaces,
2702
- allowedCommands,
2703
- blockedCommands,
2704
- allowedActions,
2705
- blockedActions,
2706
- allowedServices,
2707
- blockedServices,
2692
+ allowedCommands: normalizePolicyStringSet(policy.allowed_commands),
2693
+ blockedCommands: normalizePolicyStringSet(policy.blocked_commands),
2694
+ allowedActions: normalizePolicyStringSet(policy.allowed_actions),
2695
+ blockedActions: normalizePolicyStringSet(policy.blocked_actions),
2696
+ allowedServices: normalizePolicyStringSet(policy.allowed_services),
2697
+ blockedServices: normalizePolicyStringSet(policy.blocked_services),
2708
2698
  overridesByName,
2709
- warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right))
2699
+ warnings: collectExtensionPolicyWarnings({
2700
+ allowedCapabilities,
2701
+ blockedCapabilities,
2702
+ allowedSurfaces,
2703
+ blockedSurfaces,
2704
+ overridesByName
2705
+ })
2710
2706
  };
2711
2707
  }
2712
2708
  function serializeExtensionPolicy(policy) {
@@ -2917,55 +2913,28 @@ function evaluateExtensionPolicyForExtension(policy, extension) {
2917
2913
  if (policy.mode === "off" && policy.trustMode === "off") {
2918
2914
  return { allowed: true, warning: null };
2919
2915
  }
2916
+ const violations = [];
2920
2917
  const reason = resolvePolicyExtensionReason(policy, extension);
2921
- const trustReason = resolvePolicyTrustReason(policy, extension);
2922
- const sandboxReason = resolvePolicySandboxReason(policy, extension);
2923
- const extensionEnforced = reason && policy.mode === "enforce";
2924
- const trustEnforced = trustReason && policy.trustMode === "enforce";
2925
- const sandboxEnforced = sandboxReason && policy.mode === "enforce";
2926
- if (!reason && !trustReason && !sandboxReason) {
2927
- return { allowed: true, warning: null };
2918
+ if (reason) {
2919
+ violations.push({ reason, scope: "extension", mode: policy.mode });
2928
2920
  }
2929
- if (extensionEnforced) {
2930
- return {
2931
- allowed: false,
2932
- warning: buildPolicyWarning("blocked", "extension", extension, reason)
2933
- };
2921
+ const trustReason = resolvePolicyTrustReason(policy, extension);
2922
+ if (trustReason) {
2923
+ violations.push({ reason: trustReason, scope: "trust", mode: policy.trustMode });
2934
2924
  }
2935
- if (trustEnforced) {
2936
- return {
2937
- allowed: false,
2938
- warning: buildPolicyWarning("blocked", "trust", extension, trustReason)
2939
- };
2925
+ const sandboxReason = resolvePolicySandboxReason(policy, extension);
2926
+ if (sandboxReason) {
2927
+ violations.push({ reason: sandboxReason, scope: "extension", mode: policy.mode });
2940
2928
  }
2941
- if (sandboxEnforced) {
2942
- return {
2943
- allowed: false,
2944
- warning: buildPolicyWarning("blocked", "extension", extension, sandboxReason)
2945
- };
2929
+ const enforced = violations.find((violation) => violation.mode === "enforce");
2930
+ if (enforced) {
2931
+ return { allowed: false, warning: buildPolicyWarning("blocked", enforced.scope, extension, enforced.reason) };
2946
2932
  }
2947
- if (reason && policy.mode === "warn") {
2948
- return {
2949
- allowed: true,
2950
- warning: buildPolicyWarning("violation", "extension", extension, reason)
2951
- };
2933
+ const warned = violations.find((violation) => violation.mode === "warn");
2934
+ if (warned) {
2935
+ return { allowed: true, warning: buildPolicyWarning("violation", warned.scope, extension, warned.reason) };
2952
2936
  }
2953
- if (trustReason && policy.trustMode === "warn") {
2954
- return {
2955
- allowed: true,
2956
- warning: buildPolicyWarning("violation", "trust", extension, trustReason)
2957
- };
2958
- }
2959
- if (sandboxReason && policy.mode === "warn") {
2960
- return {
2961
- allowed: true,
2962
- warning: buildPolicyWarning("violation", "extension", extension, sandboxReason)
2963
- };
2964
- }
2965
- return {
2966
- allowed: true,
2967
- warning: null
2968
- };
2937
+ return { allowed: true, warning: null };
2969
2938
  }
2970
2939
  function evaluateExtensionPolicyForCapability(policy, extension, capability) {
2971
2940
  if (policy.mode === "off") {
@@ -2980,19 +2949,15 @@ function evaluateExtensionPolicyForCapability(policy, extension, capability) {
2980
2949
  warning: buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "capability", extension, reason, { capability: capability.trim().toLowerCase() })
2981
2950
  };
2982
2951
  }
2983
- function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
2984
- if (policy.mode === "off") {
2985
- return { allowed: true, warning: null };
2986
- }
2952
+ function resolveRegistrationPolicyReason(policy, extension, surface, capability, detail) {
2987
2953
  const capabilityReason = typeof capability === "string" ? resolvePolicyCapabilityReason(policy, extension, capability) : null;
2988
2954
  const surfaceReason = resolvePolicySurfaceReason(policy, extension, surface);
2989
- const commandReason = details?.command ? resolvePolicyCommandReason(policy, extension, details.command) : null;
2990
- const actionReason = details?.action ? resolvePolicyActionReason(policy, extension, details.action) : null;
2991
- const serviceReason = details?.service ? resolvePolicyServiceReason(policy, extension, details.service) : null;
2992
- const reason = capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
2993
- if (!reason) {
2994
- return { allowed: true, warning: null };
2995
- }
2955
+ const commandReason = detail.command ? resolvePolicyCommandReason(policy, extension, detail.command) : null;
2956
+ const actionReason = detail.action ? resolvePolicyActionReason(policy, extension, detail.action) : null;
2957
+ const serviceReason = detail.service ? resolvePolicyServiceReason(policy, extension, detail.service) : null;
2958
+ return capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
2959
+ }
2960
+ function buildRegistrationPolicyWarningDetails(method, surface, capability, detail) {
2996
2961
  const warningDetails = {
2997
2962
  method: normalizePolicyName(method).replace(/\s+/g, "_"),
2998
2963
  surface
@@ -3000,16 +2965,27 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
3000
2965
  if (capability) {
3001
2966
  warningDetails.capability = capability;
3002
2967
  }
3003
- if (details?.command) {
3004
- warningDetails.command = normalizeCommandName(details.command);
2968
+ if (detail.command) {
2969
+ warningDetails.command = normalizeCommandName(detail.command);
2970
+ }
2971
+ if (detail.action) {
2972
+ warningDetails.action = normalizePolicyName(detail.action).replace(/\s+/g, "-");
2973
+ }
2974
+ if (detail.service) {
2975
+ warningDetails.service = normalizePolicyName(detail.service);
3005
2976
  }
3006
- if (details?.action) {
3007
- warningDetails.action = normalizePolicyName(details.action).replace(/\s+/g, "-");
2977
+ return warningDetails;
2978
+ }
2979
+ function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
2980
+ if (policy.mode === "off") {
2981
+ return { allowed: true, warning: null };
3008
2982
  }
3009
- if (details?.service) {
3010
- warningDetails.service = normalizePolicyName(details.service);
2983
+ const detail = details ?? {};
2984
+ const reason = resolveRegistrationPolicyReason(policy, extension, surface, capability, detail);
2985
+ if (!reason) {
2986
+ return { allowed: true, warning: null };
3011
2987
  }
3012
- const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, warningDetails);
2988
+ const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, buildRegistrationPolicyWarningDetails(method, surface, capability, detail));
3013
2989
  return {
3014
2990
  allowed: policy.mode === "warn",
3015
2991
  warning
@@ -3020,7 +2996,7 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
3020
2996
  !(function() {
3021
2997
  try {
3022
2998
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
3023
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a323e13b-37e3-5ec6-bc21-1ab78e0b30b9");
2999
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "c04aa899-5cba-5907-be3e-4db7c63b7f13");
3024
3000
  } catch (e2) {
3025
3001
  }
3026
3002
  })();
@@ -3063,33 +3039,134 @@ function parseManifestEngines(value) {
3063
3039
  }
3064
3040
  return Object.keys(engines).length > 0 ? engines : void 0;
3065
3041
  }
3066
- function parseManifest(raw) {
3067
- if (typeof raw !== "object" || raw === null) {
3042
+ function parseRequiredManifestString(candidate, field) {
3043
+ const value = candidate[field];
3044
+ if (typeof value !== "string" || value.trim().length === 0) {
3068
3045
  return null;
3069
3046
  }
3070
- const candidate = raw;
3071
- if (typeof candidate.name !== "string" || candidate.name.trim().length === 0) {
3047
+ return value.trim();
3048
+ }
3049
+ function parseOptionalIntegerValue(value) {
3050
+ if (value === void 0 || value === null) {
3051
+ return void 0;
3052
+ }
3053
+ if (typeof value !== "number" || !Number.isInteger(value)) {
3072
3054
  return null;
3073
3055
  }
3074
- if (typeof candidate.version !== "string" || candidate.version.trim().length === 0) {
3056
+ return value;
3057
+ }
3058
+ function parseOptionalBooleanValue(value) {
3059
+ if (value === void 0 || value === null) {
3060
+ return void 0;
3061
+ }
3062
+ if (typeof value !== "boolean") {
3075
3063
  return null;
3076
3064
  }
3077
- if (typeof candidate.entry !== "string" || candidate.entry.trim().length === 0) {
3065
+ return value;
3066
+ }
3067
+ function parseManifestPriority(candidate) {
3068
+ const value = parseOptionalIntegerValue(candidate.priority);
3069
+ return value === void 0 ? DEFAULT_EXTENSION_PRIORITY : value;
3070
+ }
3071
+ function parseManifestSandboxProfile(candidate) {
3072
+ const value = candidate.sandbox_profile;
3073
+ if (value === void 0 || value === null) {
3074
+ return void 0;
3075
+ }
3076
+ if (typeof value !== "string") {
3078
3077
  return null;
3079
3078
  }
3080
- let priority = DEFAULT_EXTENSION_PRIORITY;
3081
- if ("priority" in candidate && candidate.priority !== void 0 && candidate.priority !== null) {
3082
- if (typeof candidate.priority !== "number" || !Number.isInteger(candidate.priority)) {
3083
- return null;
3084
- }
3085
- priority = candidate.priority;
3079
+ const normalizedProfile = normalizePolicySandboxProfile(value);
3080
+ if (normalizedProfile !== value.trim().toLowerCase()) {
3081
+ return null;
3086
3082
  }
3087
- let manifestVersion;
3088
- if ("manifest_version" in candidate && candidate.manifest_version !== void 0 && candidate.manifest_version !== null) {
3089
- if (typeof candidate.manifest_version !== "number" || !Number.isInteger(candidate.manifest_version)) {
3090
- return null;
3091
- }
3092
- manifestVersion = candidate.manifest_version;
3083
+ return normalizedProfile;
3084
+ }
3085
+ function optionalTrimmedString(value) {
3086
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
3087
+ }
3088
+ function parseManifestProvenance(value) {
3089
+ if (value === void 0 || value === null) {
3090
+ return void 0;
3091
+ }
3092
+ const provenanceRecord = asRecordLoose(value);
3093
+ if (!provenanceRecord) {
3094
+ return null;
3095
+ }
3096
+ const source = optionalTrimmedString(provenanceRecord.source);
3097
+ const signature = optionalTrimmedString(provenanceRecord.signature);
3098
+ const attestation = optionalTrimmedString(provenanceRecord.attestation);
3099
+ const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
3100
+ if (verified === null) {
3101
+ return null;
3102
+ }
3103
+ return {
3104
+ ...source ? { source } : {},
3105
+ ...signature ? { signature } : {},
3106
+ ...attestation ? { attestation } : {},
3107
+ ...typeof verified === "boolean" ? { verified } : {}
3108
+ };
3109
+ }
3110
+ function parseManifestPermissions(value) {
3111
+ if (value === void 0 || value === null) {
3112
+ return void 0;
3113
+ }
3114
+ const permissionsRecord = asRecordLoose(value);
3115
+ if (!permissionsRecord) {
3116
+ return null;
3117
+ }
3118
+ const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);
3119
+ const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);
3120
+ const network = parseOptionalBooleanValue(permissionsRecord.network);
3121
+ const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);
3122
+ const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);
3123
+ const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);
3124
+ if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
3125
+ return null;
3126
+ }
3127
+ return {
3128
+ ...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
3129
+ ...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
3130
+ ...typeof network === "boolean" ? { network } : {},
3131
+ ...typeof envRead === "boolean" ? { env_read: envRead } : {},
3132
+ ...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
3133
+ ...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
3134
+ };
3135
+ }
3136
+ function parseManifestCapabilities(value) {
3137
+ if (value === void 0 || value === null) {
3138
+ return { capabilities: [], legacy_aliases: [] };
3139
+ }
3140
+ if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
3141
+ return null;
3142
+ }
3143
+ const normalizedCapabilities = normalizeManifestCapabilities(value);
3144
+ return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };
3145
+ }
3146
+ function parseManifestActivation(value) {
3147
+ if (value === void 0 || value === null) {
3148
+ return void 0;
3149
+ }
3150
+ const activationRecord = asRecordLoose(value);
3151
+ if (!activationRecord) {
3152
+ return null;
3153
+ }
3154
+ const rawCommands = activationRecord.commands;
3155
+ if (rawCommands === void 0 || rawCommands === null) {
3156
+ return void 0;
3157
+ }
3158
+ if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== "string")) {
3159
+ return null;
3160
+ }
3161
+ const commands = [
3162
+ ...new Set(rawCommands.map((entry) => normalizeCommandName(entry)).filter((entry) => entry.length > 0))
3163
+ ].sort((left, right) => left.localeCompare(right));
3164
+ return commands.length > 0 ? { commands } : void 0;
3165
+ }
3166
+ function parseManifestMetadata(candidate) {
3167
+ const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);
3168
+ if (manifestVersion === null) {
3169
+ return null;
3093
3170
  }
3094
3171
  const pmMinVersion = parseOptionalManifestString(candidate, "pm_min_version");
3095
3172
  if (pmMinVersion === null) {
@@ -3103,124 +3180,85 @@ function parseManifest(raw) {
3103
3180
  if (engines === null) {
3104
3181
  return null;
3105
3182
  }
3106
- let trusted;
3107
- if ("trusted" in candidate && candidate.trusted !== void 0 && candidate.trusted !== null) {
3108
- if (typeof candidate.trusted !== "boolean") {
3109
- return null;
3110
- }
3111
- trusted = candidate.trusted;
3183
+ const trusted = parseOptionalBooleanValue(candidate.trusted);
3184
+ if (trusted === null) {
3185
+ return null;
3112
3186
  }
3113
- let sandboxProfile;
3114
- if ("sandbox_profile" in candidate && candidate.sandbox_profile !== void 0 && candidate.sandbox_profile !== null) {
3115
- if (typeof candidate.sandbox_profile !== "string") {
3116
- return null;
3117
- }
3118
- const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);
3119
- if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {
3120
- return null;
3121
- }
3122
- sandboxProfile = normalizedProfile;
3187
+ const sandboxProfile = parseManifestSandboxProfile(candidate);
3188
+ if (sandboxProfile === null) {
3189
+ return null;
3123
3190
  }
3124
- let provenance;
3125
- if ("provenance" in candidate && candidate.provenance !== void 0 && candidate.provenance !== null) {
3126
- const provenanceRecord = asRecordLoose(candidate.provenance);
3127
- if (!provenanceRecord) {
3128
- return null;
3129
- }
3130
- const source = typeof provenanceRecord.source === "string" && provenanceRecord.source.trim().length > 0 ? provenanceRecord.source.trim() : void 0;
3131
- const signature = typeof provenanceRecord.signature === "string" && provenanceRecord.signature.trim().length > 0 ? provenanceRecord.signature.trim() : void 0;
3132
- const attestation = typeof provenanceRecord.attestation === "string" && provenanceRecord.attestation.trim().length > 0 ? provenanceRecord.attestation.trim() : void 0;
3133
- const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
3134
- if (verified === null) {
3135
- return null;
3136
- }
3137
- provenance = {
3138
- ...source ? { source } : {},
3139
- ...signature ? { signature } : {},
3140
- ...attestation ? { attestation } : {},
3141
- ...typeof verified === "boolean" ? { verified } : {}
3142
- };
3191
+ const provenance = parseManifestProvenance(candidate.provenance);
3192
+ if (provenance === null) {
3193
+ return null;
3143
3194
  }
3144
- let permissions;
3145
- if ("permissions" in candidate && candidate.permissions !== void 0 && candidate.permissions !== null) {
3146
- const permissionsRecord = asRecordLoose(candidate.permissions);
3147
- if (!permissionsRecord) {
3148
- return null;
3149
- }
3150
- const parseOptionalBoolean = (value) => {
3151
- if (value === void 0 || value === null) {
3152
- return void 0;
3153
- }
3154
- if (typeof value !== "boolean") {
3155
- return null;
3156
- }
3157
- return value;
3158
- };
3159
- const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);
3160
- const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);
3161
- const network = parseOptionalBoolean(permissionsRecord.network);
3162
- const envRead = parseOptionalBoolean(permissionsRecord.env_read);
3163
- const envWrite = parseOptionalBoolean(permissionsRecord.env_write);
3164
- const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);
3165
- if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
3166
- return null;
3167
- }
3168
- permissions = {
3169
- ...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
3170
- ...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
3171
- ...typeof network === "boolean" ? { network } : {},
3172
- ...typeof envRead === "boolean" ? { env_read: envRead } : {},
3173
- ...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
3174
- ...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
3175
- };
3195
+ const permissions = parseManifestPermissions(candidate.permissions);
3196
+ if (permissions === null) {
3197
+ return null;
3176
3198
  }
3177
- let capabilities = [];
3178
- let legacyCapabilityAliases = [];
3179
- if ("capabilities" in candidate && candidate.capabilities !== void 0 && candidate.capabilities !== null) {
3180
- if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== "string")) {
3181
- return null;
3182
- }
3183
- const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities);
3184
- capabilities = normalizedCapabilities.capabilities;
3185
- legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;
3199
+ const capabilities = parseManifestCapabilities(candidate.capabilities);
3200
+ if (capabilities === null) {
3201
+ return null;
3186
3202
  }
3187
- let activation;
3188
- if ("activation" in candidate && candidate.activation !== void 0 && candidate.activation !== null) {
3189
- const activationRecord = asRecordLoose(candidate.activation);
3190
- if (!activationRecord) {
3191
- return null;
3192
- }
3193
- const rawCommands = activationRecord.commands;
3194
- if (rawCommands !== void 0 && rawCommands !== null) {
3195
- if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== "string")) {
3196
- return null;
3197
- }
3198
- const commands = [
3199
- ...new Set(rawCommands.map((value) => normalizeCommandName(value)).filter((value) => value.length > 0))
3200
- ].sort((left, right) => left.localeCompare(right));
3201
- if (commands.length > 0) {
3202
- activation = {
3203
- commands
3204
- };
3205
- }
3206
- }
3203
+ const activation = parseManifestActivation(candidate.activation);
3204
+ if (activation === null) {
3205
+ return null;
3207
3206
  }
3208
3207
  return {
3209
- name: candidate.name.trim(),
3210
- version: candidate.version.trim(),
3211
- entry: candidate.entry.trim(),
3212
- priority,
3213
3208
  manifest_version: manifestVersion,
3214
3209
  pm_min_version: pmMinVersion,
3215
3210
  pm_max_version: pmMaxVersion,
3216
3211
  engines,
3217
3212
  trusted,
3218
- provenance,
3219
3213
  sandbox_profile: sandboxProfile,
3214
+ provenance,
3220
3215
  permissions,
3221
- activation,
3222
- capabilities,
3223
- legacy_capability_aliases: legacyCapabilityAliases.length > 0 ? legacyCapabilityAliases : void 0
3216
+ capabilities: capabilities.capabilities,
3217
+ legacy_capability_aliases: capabilities.legacy_aliases,
3218
+ activation
3219
+ };
3220
+ }
3221
+ function parseManifest(raw) {
3222
+ if (typeof raw !== "object" || raw === null) {
3223
+ return null;
3224
+ }
3225
+ const candidate = raw;
3226
+ const name = parseRequiredManifestString(candidate, "name");
3227
+ if (name === null) {
3228
+ return null;
3229
+ }
3230
+ const version = parseRequiredManifestString(candidate, "version");
3231
+ if (version === null) {
3232
+ return null;
3233
+ }
3234
+ const entry = parseRequiredManifestString(candidate, "entry");
3235
+ if (entry === null) {
3236
+ return null;
3237
+ }
3238
+ const priority = parseManifestPriority(candidate);
3239
+ if (priority === null) {
3240
+ return null;
3241
+ }
3242
+ const metadata = parseManifestMetadata(candidate);
3243
+ if (metadata === null) {
3244
+ return null;
3245
+ }
3246
+ return {
3247
+ name,
3248
+ version,
3249
+ entry,
3250
+ priority,
3251
+ manifest_version: metadata.manifest_version,
3252
+ pm_min_version: metadata.pm_min_version,
3253
+ pm_max_version: metadata.pm_max_version,
3254
+ engines: metadata.engines,
3255
+ trusted: metadata.trusted,
3256
+ provenance: metadata.provenance,
3257
+ sandbox_profile: metadata.sandbox_profile,
3258
+ permissions: metadata.permissions,
3259
+ activation: metadata.activation,
3260
+ capabilities: metadata.capabilities,
3261
+ legacy_capability_aliases: metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : void 0
3224
3262
  };
3225
3263
  }
3226
3264
  function shouldEnable(name, enabled, disabled) {
@@ -3349,26 +3387,50 @@ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMa
3349
3387
  }
3350
3388
  return { diagnostics, warnings, candidates };
3351
3389
  }
3390
+ function buildUnavailableExtensionScan(layer, directory, manifestPath, warning) {
3391
+ return {
3392
+ diagnostic: {
3393
+ layer,
3394
+ directory,
3395
+ manifest_path: manifestPath,
3396
+ name: null,
3397
+ version: null,
3398
+ entry: null,
3399
+ priority: null,
3400
+ entry_path: null,
3401
+ enabled: null,
3402
+ status: "warn"
3403
+ },
3404
+ warnings: [warning],
3405
+ candidate: null
3406
+ };
3407
+ }
3408
+ function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility) {
3409
+ const extensionWarnings = [];
3410
+ if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
3411
+ extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
3412
+ }
3413
+ for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
3414
+ extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
3415
+ }
3416
+ if (!entryWithinDirectory) {
3417
+ extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
3418
+ } else if (!entryExists) {
3419
+ extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
3420
+ }
3421
+ if (pmVersionCompatibility.warning) {
3422
+ extensionWarnings.push(pmVersionCompatibility.warning);
3423
+ }
3424
+ if (pmMaxVersionCompatibility.warning) {
3425
+ extensionWarnings.push(pmMaxVersionCompatibility.warning);
3426
+ }
3427
+ return extensionWarnings;
3428
+ }
3352
3429
  async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
3353
3430
  const extensionDir = path5.join(extensionsRoot, directory);
3354
3431
  const manifestPath = path5.join(extensionDir, "manifest.json");
3355
3432
  if (!await pathExists(manifestPath)) {
3356
- return {
3357
- diagnostic: {
3358
- layer,
3359
- directory,
3360
- manifest_path: manifestPath,
3361
- name: null,
3362
- version: null,
3363
- entry: null,
3364
- priority: null,
3365
- entry_path: null,
3366
- enabled: null,
3367
- status: "warn"
3368
- },
3369
- warnings: [`extension_manifest_missing:${layer}:${directory}`],
3370
- candidate: null
3371
- };
3433
+ return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
3372
3434
  }
3373
3435
  let manifest = null;
3374
3436
  try {
@@ -3378,48 +3440,16 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
3378
3440
  manifest = null;
3379
3441
  }
3380
3442
  if (!manifest) {
3381
- return {
3382
- diagnostic: {
3383
- layer,
3384
- directory,
3385
- manifest_path: manifestPath,
3386
- name: null,
3387
- version: null,
3388
- entry: null,
3389
- priority: null,
3390
- entry_path: null,
3391
- enabled: null,
3392
- status: "warn"
3393
- },
3394
- warnings: [`extension_manifest_invalid:${layer}:${directory}`],
3395
- candidate: null
3396
- };
3443
+ return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);
3397
3444
  }
3398
3445
  const entryPath = path5.resolve(extensionDir, manifest.entry);
3399
3446
  const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);
3400
3447
  const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;
3401
3448
  const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
3402
3449
  const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
3403
- const extensionWarnings = [];
3404
- if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
3405
- extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
3406
- }
3407
- for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
3408
- extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
3409
- }
3410
- if (!entryWithinDirectory) {
3411
- extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
3412
- } else if (!entryExists) {
3413
- extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
3414
- }
3415
3450
  const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
3416
- if (pmVersionCompatibility.warning) {
3417
- extensionWarnings.push(pmVersionCompatibility.warning);
3418
- }
3419
3451
  const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
3420
- if (pmMaxVersionCompatibility.warning) {
3421
- extensionWarnings.push(pmMaxVersionCompatibility.warning);
3422
- }
3452
+ const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
3423
3453
  const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
3424
3454
  const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
3425
3455
  return {
@@ -4169,69 +4199,70 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4169
4199
  received: sanitizeRegistrationValue(received),
4170
4200
  hint
4171
4201
  });
4172
- const registerCommand = (commandOrDefinition, override) => {
4173
- assertExtensionCapability(extension, "commands", "registerCommand");
4174
- if (typeof commandOrDefinition === "string") {
4175
- const normalizedCommand2 = normalizeCommandName(commandOrDefinition);
4176
- if (normalizedCommand2.length === 0) {
4177
- throw createRegistrationValidationError("registerCommand requires a non-empty command name", registerCommandTrace("override", commandOrDefinition, 'registerCommand("<command>", (context) => unknown)', commandOrDefinition, "Provide a non-empty command path as the first argument."));
4178
- }
4179
- if (typeof override !== "function") {
4180
- const trace = registerCommandTrace("override", normalizedCommand2, 'registerCommand("<command>", (context) => unknown)', { command: commandOrDefinition, override }, "Provide a function as the second registerCommand argument.");
4181
- throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand2}", registration_index=${trace.registration_index})`, trace);
4182
- }
4183
- if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand2 })) {
4184
- return;
4185
- }
4186
- commands.overrides.push({
4187
- layer: extension.layer,
4188
- name: extension.name,
4189
- command: normalizedCommand2,
4190
- run: override
4191
- });
4192
- return;
4193
- }
4194
- if (typeof commandOrDefinition !== "object" || commandOrDefinition === null) {
4195
- throw createRegistrationValidationError("registerCommand requires a command definition object", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", commandOrDefinition, 'Use registerCommand({ name: "command path", run: (context) => ... }).'));
4202
+ const registerCommandOverride = (command, override) => {
4203
+ const normalizedCommand = normalizeCommandName(command);
4204
+ if (normalizedCommand.length === 0) {
4205
+ throw createRegistrationValidationError("registerCommand requires a non-empty command name", registerCommandTrace("override", command, 'registerCommand("<command>", (context) => unknown)', command, "Provide a non-empty command path as the first argument."));
4196
4206
  }
4197
- if (typeof commandOrDefinition.name !== "string") {
4198
- throw createRegistrationValidationError("registerCommand requires a command definition name", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", commandOrDefinition, "Set command definition.name to a non-empty string command path."));
4207
+ if (typeof override !== "function") {
4208
+ const trace = registerCommandTrace("override", normalizedCommand, 'registerCommand("<command>", (context) => unknown)', { command, override }, "Provide a function as the second registerCommand argument.");
4209
+ throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
4199
4210
  }
4200
- const normalizedCommand = normalizeCommandName(commandOrDefinition.name);
4201
- if (normalizedCommand.length === 0) {
4202
- throw createRegistrationValidationError("registerCommand requires a non-empty command definition name", registerCommandTrace("definition", commandOrDefinition.name, "{ name: string; run: (context) => unknown; }", commandOrDefinition, "Ensure command definition.name contains a non-empty command path."));
4211
+ if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand })) {
4212
+ return;
4203
4213
  }
4204
- const runHandler = typeof commandOrDefinition.run === "function" ? commandOrDefinition.run : void 0;
4205
- const legacyHandler = typeof commandOrDefinition.handler === "function" ? commandOrDefinition.handler : void 0;
4214
+ commands.overrides.push({
4215
+ layer: extension.layer,
4216
+ name: extension.name,
4217
+ command: normalizedCommand,
4218
+ run: override
4219
+ });
4220
+ };
4221
+ const resolveCommandDefinitionRunHandler = (definition, normalizedCommand) => {
4222
+ const runHandler = typeof definition.run === "function" ? definition.run : void 0;
4223
+ const legacyHandler = typeof definition.handler === "function" ? definition.handler : void 0;
4206
4224
  if (!runHandler && legacyHandler) {
4207
4225
  activationWarnings.push(`extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`);
4208
4226
  }
4209
- const resolvedHandler = runHandler ?? legacyHandler;
4227
+ return runHandler ?? legacyHandler;
4228
+ };
4229
+ const registerCommandDefinition = (definition) => {
4230
+ if (typeof definition !== "object" || definition === null) {
4231
+ throw createRegistrationValidationError("registerCommand requires a command definition object", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", definition, 'Use registerCommand({ name: "command path", run: (context) => ... }).'));
4232
+ }
4233
+ if (typeof definition.name !== "string") {
4234
+ throw createRegistrationValidationError("registerCommand requires a command definition name", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", definition, "Set command definition.name to a non-empty string command path."));
4235
+ }
4236
+ const normalizedCommand = normalizeCommandName(definition.name);
4237
+ if (normalizedCommand.length === 0) {
4238
+ throw createRegistrationValidationError("registerCommand requires a non-empty command definition name", registerCommandTrace("definition", definition.name, "{ name: string; run: (context) => unknown; }", definition, "Ensure command definition.name contains a non-empty command path."));
4239
+ }
4240
+ const resolvedHandler = resolveCommandDefinitionRunHandler(definition, normalizedCommand);
4210
4241
  if (typeof resolvedHandler !== "function") {
4211
- const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", commandOrDefinition, "Define command definition.run as a function.");
4242
+ const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", definition, "Define command definition.run as a function.");
4212
4243
  throw createRegistrationValidationError(`registerCommand requires a command definition run handler (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
4213
4244
  }
4214
4245
  try {
4215
- assertOptionalStringField("registerCommand definition.action", commandOrDefinition.action);
4216
- assertOptionalStringField("registerCommand definition.description", commandOrDefinition.description);
4217
- assertOptionalStringField("registerCommand definition.intent", commandOrDefinition.intent);
4218
- const action = resolveCommandDefinitionAction(normalizedCommand, commandOrDefinition.action);
4246
+ assertOptionalStringField("registerCommand definition.action", definition.action);
4247
+ assertOptionalStringField("registerCommand definition.description", definition.description);
4248
+ assertOptionalStringField("registerCommand definition.intent", definition.intent);
4249
+ const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);
4219
4250
  if (!allowRegistration("commands.handler", "registerCommand", "commands", { command: normalizedCommand, action })) {
4220
4251
  return;
4221
4252
  }
4222
- const description = commandOrDefinition.description?.trim();
4223
- const intent = commandOrDefinition.intent?.trim();
4224
- const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", commandOrDefinition.examples);
4225
- const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", commandOrDefinition.failure_hints);
4226
- const argumentsDefinition = normalizeCommandDefinitionArguments(commandOrDefinition.arguments);
4227
- if (commandOrDefinition.flags !== void 0) {
4253
+ const description = definition.description?.trim();
4254
+ const intent = definition.intent?.trim();
4255
+ const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", definition.examples);
4256
+ const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", definition.failure_hints);
4257
+ const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);
4258
+ if (definition.flags !== void 0) {
4228
4259
  assertExtensionCapability(extension, "schema", "registerCommand flags");
4229
- validateFlagDefinitions(commandOrDefinition.flags);
4260
+ validateFlagDefinitions(definition.flags);
4230
4261
  registrations.flags.push({
4231
4262
  layer: extension.layer,
4232
4263
  name: extension.name,
4233
4264
  target_command: normalizedCommand,
4234
- flags: normalizeRegistrationRecordList("registerCommand definition.flags", commandOrDefinition.flags)
4265
+ flags: normalizeRegistrationRecordList("registerCommand definition.flags", definition.flags)
4235
4266
  });
4236
4267
  }
4237
4268
  const registration = {
@@ -4253,7 +4284,7 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4253
4284
  registrations.commands.push(registration);
4254
4285
  } catch (error) {
4255
4286
  const reason = formatUnknownError(error);
4256
- const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }", commandOrDefinition, "Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.");
4287
+ const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }", definition, "Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.");
4257
4288
  throw createRegistrationValidationError(`registerCommand definition metadata invalid (command="${normalizedCommand}", registration_index=${trace.registration_index}): ${reason}`, trace);
4258
4289
  }
4259
4290
  commands.handlers.push({
@@ -4263,6 +4294,14 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4263
4294
  run: resolvedHandler
4264
4295
  });
4265
4296
  };
4297
+ const registerCommand = (commandOrDefinition, override) => {
4298
+ assertExtensionCapability(extension, "commands", "registerCommand");
4299
+ if (typeof commandOrDefinition === "string") {
4300
+ registerCommandOverride(commandOrDefinition, override);
4301
+ return;
4302
+ }
4303
+ registerCommandDefinition(commandOrDefinition);
4304
+ };
4266
4305
  const registerParser = (command, override) => {
4267
4306
  assertExtensionCapability(extension, "parser", "registerParser");
4268
4307
  if (!allowRegistration("parser.override", "registerParser", "parser")) {
@@ -7470,4 +7509,4 @@ export {
7470
7509
  readSettings,
7471
7510
  writeSettings
7472
7511
  };
7473
- //# sourceMappingURL=chunk-SNUK7H5J.js.map
7512
+ //# sourceMappingURL=chunk-RVUALSJF.js.map