@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
@@ -1,6 +1,6 @@
1
1
  // dist/core/fs/fs-utils.js
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b452df4b-661b-5f08-9d20-dff37c4bfb2f")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="03ed13d8-75ea-5f3b-b089-a7347a59acca")}catch(e){}}();
4
4
  import * as fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import crypto from "node:crypto";
@@ -2499,34 +2499,15 @@ function collectExtensionPolicyOverrides(rawOverrides) {
2499
2499
  }
2500
2500
  return overridesByName;
2501
2501
  }
2502
- function normalizeExtensionPolicy(settings) {
2503
- const policy = settings.extensions.policy;
2504
- const mode = normalizePolicyMode(policy?.mode);
2505
- const trustMode = normalizePolicyTrustMode(policy?.trust_mode);
2506
- const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);
2507
- const requireProvenance = policy?.require_provenance === true;
2508
- const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);
2509
- const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);
2510
- const allowedExtensions = normalizePolicyStringSet(policy?.allowed_extensions);
2511
- const blockedExtensions = normalizePolicyStringSet(policy?.blocked_extensions);
2512
- const allowedCapabilities = normalizePolicyStringSet(policy?.allowed_capabilities);
2513
- const blockedCapabilities = normalizePolicyStringSet(policy?.blocked_capabilities);
2514
- const allowedSurfaces = normalizePolicySurfaceSet(policy?.allowed_surfaces);
2515
- const blockedSurfaces = normalizePolicySurfaceSet(policy?.blocked_surfaces);
2516
- const allowedCommands = normalizePolicyStringSet(policy?.allowed_commands);
2517
- const blockedCommands = normalizePolicyStringSet(policy?.blocked_commands);
2518
- const allowedActions = normalizePolicyStringSet(policy?.allowed_actions);
2519
- const blockedActions = normalizePolicyStringSet(policy?.blocked_actions);
2520
- const allowedServices = normalizePolicyStringSet(policy?.allowed_services);
2521
- const blockedServices = normalizePolicyStringSet(policy?.blocked_services);
2522
- const overridesByName = collectExtensionPolicyOverrides(policy?.extension_overrides);
2502
+ function collectExtensionPolicyWarnings(normalized) {
2523
2503
  const warnings = [];
2524
- for (const capability of toSortedList([...allowedCapabilities, ...blockedCapabilities])) {
2504
+ const sortedOverrides = [...normalized.overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name));
2505
+ for (const capability of toSortedList([...normalized.allowedCapabilities, ...normalized.blockedCapabilities])) {
2525
2506
  if (!isKnownExtensionCapability(capability)) {
2526
2507
  warnings.push(`extension_policy_unknown_capability:${capability}`);
2527
2508
  }
2528
2509
  }
2529
- for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {
2510
+ for (const override of sortedOverrides) {
2530
2511
  for (const capability of toSortedList([...override.allowedCapabilities, ...override.blockedCapabilities])) {
2531
2512
  if (!isKnownExtensionCapability(capability)) {
2532
2513
  warnings.push(`extension_policy_unknown_capability:${override.name}:${capability}`);
@@ -2534,39 +2515,54 @@ function normalizeExtensionPolicy(settings) {
2534
2515
  }
2535
2516
  }
2536
2517
  const knownSurfaces = new Set(KNOWN_EXTENSION_POLICY_SURFACES);
2537
- for (const surface of toSortedList([...allowedSurfaces, ...blockedSurfaces])) {
2518
+ for (const surface of toSortedList([...normalized.allowedSurfaces, ...normalized.blockedSurfaces])) {
2538
2519
  if (!knownSurfaces.has(surface)) {
2539
2520
  warnings.push(`extension_policy_unknown_surface:${surface}`);
2540
2521
  }
2541
2522
  }
2542
- for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {
2523
+ for (const override of sortedOverrides) {
2543
2524
  for (const surface of toSortedList([...override.allowedSurfaces, ...override.blockedSurfaces])) {
2544
2525
  if (!knownSurfaces.has(surface)) {
2545
2526
  warnings.push(`extension_policy_unknown_surface:${override.name}:${surface}`);
2546
2527
  }
2547
2528
  }
2548
2529
  }
2530
+ return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
2531
+ }
2532
+ function normalizeExtensionPolicy(settings) {
2533
+ const policy = settings.extensions?.policy ?? {};
2534
+ const allowedCapabilities = normalizePolicyStringSet(policy.allowed_capabilities);
2535
+ const blockedCapabilities = normalizePolicyStringSet(policy.blocked_capabilities);
2536
+ const allowedSurfaces = normalizePolicySurfaceSet(policy.allowed_surfaces);
2537
+ const blockedSurfaces = normalizePolicySurfaceSet(policy.blocked_surfaces);
2538
+ const overridesByName = collectExtensionPolicyOverrides(policy.extension_overrides);
2549
2539
  return {
2550
- mode,
2551
- trustMode,
2552
- pmMaxVersionExceededMode: pmMaxVersionExceededMode2,
2553
- requireProvenance,
2554
- trustedExtensions,
2555
- defaultSandboxProfile,
2556
- allowedExtensions,
2557
- blockedExtensions,
2540
+ mode: normalizePolicyMode(policy.mode),
2541
+ trustMode: normalizePolicyTrustMode(policy.trust_mode),
2542
+ pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),
2543
+ requireProvenance: policy.require_provenance === true,
2544
+ trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),
2545
+ defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),
2546
+ allowedExtensions: normalizePolicyStringSet(policy.allowed_extensions),
2547
+ blockedExtensions: normalizePolicyStringSet(policy.blocked_extensions),
2558
2548
  allowedCapabilities,
2559
2549
  blockedCapabilities,
2560
2550
  allowedSurfaces,
2561
2551
  blockedSurfaces,
2562
- allowedCommands,
2563
- blockedCommands,
2564
- allowedActions,
2565
- blockedActions,
2566
- allowedServices,
2567
- blockedServices,
2552
+ allowedCommands: normalizePolicyStringSet(policy.allowed_commands),
2553
+ blockedCommands: normalizePolicyStringSet(policy.blocked_commands),
2554
+ allowedActions: normalizePolicyStringSet(policy.allowed_actions),
2555
+ blockedActions: normalizePolicyStringSet(policy.blocked_actions),
2556
+ allowedServices: normalizePolicyStringSet(policy.allowed_services),
2557
+ blockedServices: normalizePolicyStringSet(policy.blocked_services),
2568
2558
  overridesByName,
2569
- warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right))
2559
+ warnings: collectExtensionPolicyWarnings({
2560
+ allowedCapabilities,
2561
+ blockedCapabilities,
2562
+ allowedSurfaces,
2563
+ blockedSurfaces,
2564
+ overridesByName
2565
+ })
2570
2566
  };
2571
2567
  }
2572
2568
  function serializeExtensionPolicy(policy) {
@@ -2777,55 +2773,28 @@ function evaluateExtensionPolicyForExtension(policy, extension) {
2777
2773
  if (policy.mode === "off" && policy.trustMode === "off") {
2778
2774
  return { allowed: true, warning: null };
2779
2775
  }
2776
+ const violations = [];
2780
2777
  const reason = resolvePolicyExtensionReason(policy, extension);
2781
- const trustReason = resolvePolicyTrustReason(policy, extension);
2782
- const sandboxReason = resolvePolicySandboxReason(policy, extension);
2783
- const extensionEnforced = reason && policy.mode === "enforce";
2784
- const trustEnforced = trustReason && policy.trustMode === "enforce";
2785
- const sandboxEnforced = sandboxReason && policy.mode === "enforce";
2786
- if (!reason && !trustReason && !sandboxReason) {
2787
- return { allowed: true, warning: null };
2778
+ if (reason) {
2779
+ violations.push({ reason, scope: "extension", mode: policy.mode });
2788
2780
  }
2789
- if (extensionEnforced) {
2790
- return {
2791
- allowed: false,
2792
- warning: buildPolicyWarning("blocked", "extension", extension, reason)
2793
- };
2781
+ const trustReason = resolvePolicyTrustReason(policy, extension);
2782
+ if (trustReason) {
2783
+ violations.push({ reason: trustReason, scope: "trust", mode: policy.trustMode });
2794
2784
  }
2795
- if (trustEnforced) {
2796
- return {
2797
- allowed: false,
2798
- warning: buildPolicyWarning("blocked", "trust", extension, trustReason)
2799
- };
2785
+ const sandboxReason = resolvePolicySandboxReason(policy, extension);
2786
+ if (sandboxReason) {
2787
+ violations.push({ reason: sandboxReason, scope: "extension", mode: policy.mode });
2800
2788
  }
2801
- if (sandboxEnforced) {
2802
- return {
2803
- allowed: false,
2804
- warning: buildPolicyWarning("blocked", "extension", extension, sandboxReason)
2805
- };
2789
+ const enforced = violations.find((violation) => violation.mode === "enforce");
2790
+ if (enforced) {
2791
+ return { allowed: false, warning: buildPolicyWarning("blocked", enforced.scope, extension, enforced.reason) };
2806
2792
  }
2807
- if (reason && policy.mode === "warn") {
2808
- return {
2809
- allowed: true,
2810
- warning: buildPolicyWarning("violation", "extension", extension, reason)
2811
- };
2793
+ const warned = violations.find((violation) => violation.mode === "warn");
2794
+ if (warned) {
2795
+ return { allowed: true, warning: buildPolicyWarning("violation", warned.scope, extension, warned.reason) };
2812
2796
  }
2813
- if (trustReason && policy.trustMode === "warn") {
2814
- return {
2815
- allowed: true,
2816
- warning: buildPolicyWarning("violation", "trust", extension, trustReason)
2817
- };
2818
- }
2819
- if (sandboxReason && policy.mode === "warn") {
2820
- return {
2821
- allowed: true,
2822
- warning: buildPolicyWarning("violation", "extension", extension, sandboxReason)
2823
- };
2824
- }
2825
- return {
2826
- allowed: true,
2827
- warning: null
2828
- };
2797
+ return { allowed: true, warning: null };
2829
2798
  }
2830
2799
  function evaluateExtensionPolicyForCapability(policy, extension, capability) {
2831
2800
  if (policy.mode === "off") {
@@ -2840,19 +2809,15 @@ function evaluateExtensionPolicyForCapability(policy, extension, capability) {
2840
2809
  warning: buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "capability", extension, reason, { capability: capability.trim().toLowerCase() })
2841
2810
  };
2842
2811
  }
2843
- function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
2844
- if (policy.mode === "off") {
2845
- return { allowed: true, warning: null };
2846
- }
2812
+ function resolveRegistrationPolicyReason(policy, extension, surface, capability, detail) {
2847
2813
  const capabilityReason = typeof capability === "string" ? resolvePolicyCapabilityReason(policy, extension, capability) : null;
2848
2814
  const surfaceReason = resolvePolicySurfaceReason(policy, extension, surface);
2849
- const commandReason = details?.command ? resolvePolicyCommandReason(policy, extension, details.command) : null;
2850
- const actionReason = details?.action ? resolvePolicyActionReason(policy, extension, details.action) : null;
2851
- const serviceReason = details?.service ? resolvePolicyServiceReason(policy, extension, details.service) : null;
2852
- const reason = capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
2853
- if (!reason) {
2854
- return { allowed: true, warning: null };
2855
- }
2815
+ const commandReason = detail.command ? resolvePolicyCommandReason(policy, extension, detail.command) : null;
2816
+ const actionReason = detail.action ? resolvePolicyActionReason(policy, extension, detail.action) : null;
2817
+ const serviceReason = detail.service ? resolvePolicyServiceReason(policy, extension, detail.service) : null;
2818
+ return capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
2819
+ }
2820
+ function buildRegistrationPolicyWarningDetails(method, surface, capability, detail) {
2856
2821
  const warningDetails = {
2857
2822
  method: normalizePolicyName(method).replace(/\s+/g, "_"),
2858
2823
  surface
@@ -2860,16 +2825,27 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
2860
2825
  if (capability) {
2861
2826
  warningDetails.capability = capability;
2862
2827
  }
2863
- if (details?.command) {
2864
- warningDetails.command = normalizeCommandName(details.command);
2828
+ if (detail.command) {
2829
+ warningDetails.command = normalizeCommandName(detail.command);
2830
+ }
2831
+ if (detail.action) {
2832
+ warningDetails.action = normalizePolicyName(detail.action).replace(/\s+/g, "-");
2833
+ }
2834
+ if (detail.service) {
2835
+ warningDetails.service = normalizePolicyName(detail.service);
2865
2836
  }
2866
- if (details?.action) {
2867
- warningDetails.action = normalizePolicyName(details.action).replace(/\s+/g, "-");
2837
+ return warningDetails;
2838
+ }
2839
+ function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
2840
+ if (policy.mode === "off") {
2841
+ return { allowed: true, warning: null };
2868
2842
  }
2869
- if (details?.service) {
2870
- warningDetails.service = normalizePolicyName(details.service);
2843
+ const detail = details ?? {};
2844
+ const reason = resolveRegistrationPolicyReason(policy, extension, surface, capability, detail);
2845
+ if (!reason) {
2846
+ return { allowed: true, warning: null };
2871
2847
  }
2872
- const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, warningDetails);
2848
+ const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, buildRegistrationPolicyWarningDetails(method, surface, capability, detail));
2873
2849
  return {
2874
2850
  allowed: policy.mode === "warn",
2875
2851
  warning
@@ -2916,33 +2892,134 @@ function parseManifestEngines(value) {
2916
2892
  }
2917
2893
  return Object.keys(engines).length > 0 ? engines : void 0;
2918
2894
  }
2919
- function parseManifest(raw) {
2920
- if (typeof raw !== "object" || raw === null) {
2895
+ function parseRequiredManifestString(candidate, field) {
2896
+ const value = candidate[field];
2897
+ if (typeof value !== "string" || value.trim().length === 0) {
2921
2898
  return null;
2922
2899
  }
2923
- const candidate = raw;
2924
- if (typeof candidate.name !== "string" || candidate.name.trim().length === 0) {
2900
+ return value.trim();
2901
+ }
2902
+ function parseOptionalIntegerValue(value) {
2903
+ if (value === void 0 || value === null) {
2904
+ return void 0;
2905
+ }
2906
+ if (typeof value !== "number" || !Number.isInteger(value)) {
2925
2907
  return null;
2926
2908
  }
2927
- if (typeof candidate.version !== "string" || candidate.version.trim().length === 0) {
2909
+ return value;
2910
+ }
2911
+ function parseOptionalBooleanValue(value) {
2912
+ if (value === void 0 || value === null) {
2913
+ return void 0;
2914
+ }
2915
+ if (typeof value !== "boolean") {
2928
2916
  return null;
2929
2917
  }
2930
- if (typeof candidate.entry !== "string" || candidate.entry.trim().length === 0) {
2918
+ return value;
2919
+ }
2920
+ function parseManifestPriority(candidate) {
2921
+ const value = parseOptionalIntegerValue(candidate.priority);
2922
+ return value === void 0 ? DEFAULT_EXTENSION_PRIORITY : value;
2923
+ }
2924
+ function parseManifestSandboxProfile(candidate) {
2925
+ const value = candidate.sandbox_profile;
2926
+ if (value === void 0 || value === null) {
2927
+ return void 0;
2928
+ }
2929
+ if (typeof value !== "string") {
2931
2930
  return null;
2932
2931
  }
2933
- let priority = DEFAULT_EXTENSION_PRIORITY;
2934
- if ("priority" in candidate && candidate.priority !== void 0 && candidate.priority !== null) {
2935
- if (typeof candidate.priority !== "number" || !Number.isInteger(candidate.priority)) {
2936
- return null;
2937
- }
2938
- priority = candidate.priority;
2932
+ const normalizedProfile = normalizePolicySandboxProfile(value);
2933
+ if (normalizedProfile !== value.trim().toLowerCase()) {
2934
+ return null;
2939
2935
  }
2940
- let manifestVersion;
2941
- if ("manifest_version" in candidate && candidate.manifest_version !== void 0 && candidate.manifest_version !== null) {
2942
- if (typeof candidate.manifest_version !== "number" || !Number.isInteger(candidate.manifest_version)) {
2943
- return null;
2944
- }
2945
- manifestVersion = candidate.manifest_version;
2936
+ return normalizedProfile;
2937
+ }
2938
+ function optionalTrimmedString(value) {
2939
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
2940
+ }
2941
+ function parseManifestProvenance(value) {
2942
+ if (value === void 0 || value === null) {
2943
+ return void 0;
2944
+ }
2945
+ const provenanceRecord = asRecordLoose(value);
2946
+ if (!provenanceRecord) {
2947
+ return null;
2948
+ }
2949
+ const source = optionalTrimmedString(provenanceRecord.source);
2950
+ const signature = optionalTrimmedString(provenanceRecord.signature);
2951
+ const attestation = optionalTrimmedString(provenanceRecord.attestation);
2952
+ const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
2953
+ if (verified === null) {
2954
+ return null;
2955
+ }
2956
+ return {
2957
+ ...source ? { source } : {},
2958
+ ...signature ? { signature } : {},
2959
+ ...attestation ? { attestation } : {},
2960
+ ...typeof verified === "boolean" ? { verified } : {}
2961
+ };
2962
+ }
2963
+ function parseManifestPermissions(value) {
2964
+ if (value === void 0 || value === null) {
2965
+ return void 0;
2966
+ }
2967
+ const permissionsRecord = asRecordLoose(value);
2968
+ if (!permissionsRecord) {
2969
+ return null;
2970
+ }
2971
+ const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);
2972
+ const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);
2973
+ const network = parseOptionalBooleanValue(permissionsRecord.network);
2974
+ const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);
2975
+ const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);
2976
+ const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);
2977
+ if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
2978
+ return null;
2979
+ }
2980
+ return {
2981
+ ...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
2982
+ ...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
2983
+ ...typeof network === "boolean" ? { network } : {},
2984
+ ...typeof envRead === "boolean" ? { env_read: envRead } : {},
2985
+ ...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
2986
+ ...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
2987
+ };
2988
+ }
2989
+ function parseManifestCapabilities(value) {
2990
+ if (value === void 0 || value === null) {
2991
+ return { capabilities: [], legacy_aliases: [] };
2992
+ }
2993
+ if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
2994
+ return null;
2995
+ }
2996
+ const normalizedCapabilities = normalizeManifestCapabilities(value);
2997
+ return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };
2998
+ }
2999
+ function parseManifestActivation(value) {
3000
+ if (value === void 0 || value === null) {
3001
+ return void 0;
3002
+ }
3003
+ const activationRecord = asRecordLoose(value);
3004
+ if (!activationRecord) {
3005
+ return null;
3006
+ }
3007
+ const rawCommands = activationRecord.commands;
3008
+ if (rawCommands === void 0 || rawCommands === null) {
3009
+ return void 0;
3010
+ }
3011
+ if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== "string")) {
3012
+ return null;
3013
+ }
3014
+ const commands = [
3015
+ ...new Set(rawCommands.map((entry) => normalizeCommandName(entry)).filter((entry) => entry.length > 0))
3016
+ ].sort((left, right) => left.localeCompare(right));
3017
+ return commands.length > 0 ? { commands } : void 0;
3018
+ }
3019
+ function parseManifestMetadata(candidate) {
3020
+ const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);
3021
+ if (manifestVersion === null) {
3022
+ return null;
2946
3023
  }
2947
3024
  const pmMinVersion = parseOptionalManifestString(candidate, "pm_min_version");
2948
3025
  if (pmMinVersion === null) {
@@ -2956,124 +3033,85 @@ function parseManifest(raw) {
2956
3033
  if (engines === null) {
2957
3034
  return null;
2958
3035
  }
2959
- let trusted;
2960
- if ("trusted" in candidate && candidate.trusted !== void 0 && candidate.trusted !== null) {
2961
- if (typeof candidate.trusted !== "boolean") {
2962
- return null;
2963
- }
2964
- trusted = candidate.trusted;
3036
+ const trusted = parseOptionalBooleanValue(candidate.trusted);
3037
+ if (trusted === null) {
3038
+ return null;
2965
3039
  }
2966
- let sandboxProfile;
2967
- if ("sandbox_profile" in candidate && candidate.sandbox_profile !== void 0 && candidate.sandbox_profile !== null) {
2968
- if (typeof candidate.sandbox_profile !== "string") {
2969
- return null;
2970
- }
2971
- const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);
2972
- if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {
2973
- return null;
2974
- }
2975
- sandboxProfile = normalizedProfile;
3040
+ const sandboxProfile = parseManifestSandboxProfile(candidate);
3041
+ if (sandboxProfile === null) {
3042
+ return null;
2976
3043
  }
2977
- let provenance;
2978
- if ("provenance" in candidate && candidate.provenance !== void 0 && candidate.provenance !== null) {
2979
- const provenanceRecord = asRecordLoose(candidate.provenance);
2980
- if (!provenanceRecord) {
2981
- return null;
2982
- }
2983
- const source = typeof provenanceRecord.source === "string" && provenanceRecord.source.trim().length > 0 ? provenanceRecord.source.trim() : void 0;
2984
- const signature = typeof provenanceRecord.signature === "string" && provenanceRecord.signature.trim().length > 0 ? provenanceRecord.signature.trim() : void 0;
2985
- const attestation = typeof provenanceRecord.attestation === "string" && provenanceRecord.attestation.trim().length > 0 ? provenanceRecord.attestation.trim() : void 0;
2986
- const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
2987
- if (verified === null) {
2988
- return null;
2989
- }
2990
- provenance = {
2991
- ...source ? { source } : {},
2992
- ...signature ? { signature } : {},
2993
- ...attestation ? { attestation } : {},
2994
- ...typeof verified === "boolean" ? { verified } : {}
2995
- };
3044
+ const provenance = parseManifestProvenance(candidate.provenance);
3045
+ if (provenance === null) {
3046
+ return null;
2996
3047
  }
2997
- let permissions;
2998
- if ("permissions" in candidate && candidate.permissions !== void 0 && candidate.permissions !== null) {
2999
- const permissionsRecord = asRecordLoose(candidate.permissions);
3000
- if (!permissionsRecord) {
3001
- return null;
3002
- }
3003
- const parseOptionalBoolean = (value) => {
3004
- if (value === void 0 || value === null) {
3005
- return void 0;
3006
- }
3007
- if (typeof value !== "boolean") {
3008
- return null;
3009
- }
3010
- return value;
3011
- };
3012
- const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);
3013
- const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);
3014
- const network = parseOptionalBoolean(permissionsRecord.network);
3015
- const envRead = parseOptionalBoolean(permissionsRecord.env_read);
3016
- const envWrite = parseOptionalBoolean(permissionsRecord.env_write);
3017
- const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);
3018
- if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
3019
- return null;
3020
- }
3021
- permissions = {
3022
- ...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
3023
- ...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
3024
- ...typeof network === "boolean" ? { network } : {},
3025
- ...typeof envRead === "boolean" ? { env_read: envRead } : {},
3026
- ...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
3027
- ...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
3028
- };
3048
+ const permissions = parseManifestPermissions(candidate.permissions);
3049
+ if (permissions === null) {
3050
+ return null;
3029
3051
  }
3030
- let capabilities = [];
3031
- let legacyCapabilityAliases = [];
3032
- if ("capabilities" in candidate && candidate.capabilities !== void 0 && candidate.capabilities !== null) {
3033
- if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== "string")) {
3034
- return null;
3035
- }
3036
- const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities);
3037
- capabilities = normalizedCapabilities.capabilities;
3038
- legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;
3052
+ const capabilities = parseManifestCapabilities(candidate.capabilities);
3053
+ if (capabilities === null) {
3054
+ return null;
3039
3055
  }
3040
- let activation;
3041
- if ("activation" in candidate && candidate.activation !== void 0 && candidate.activation !== null) {
3042
- const activationRecord = asRecordLoose(candidate.activation);
3043
- if (!activationRecord) {
3044
- return null;
3045
- }
3046
- const rawCommands = activationRecord.commands;
3047
- if (rawCommands !== void 0 && rawCommands !== null) {
3048
- if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== "string")) {
3049
- return null;
3050
- }
3051
- const commands = [
3052
- ...new Set(rawCommands.map((value) => normalizeCommandName(value)).filter((value) => value.length > 0))
3053
- ].sort((left, right) => left.localeCompare(right));
3054
- if (commands.length > 0) {
3055
- activation = {
3056
- commands
3057
- };
3058
- }
3059
- }
3056
+ const activation = parseManifestActivation(candidate.activation);
3057
+ if (activation === null) {
3058
+ return null;
3060
3059
  }
3061
3060
  return {
3062
- name: candidate.name.trim(),
3063
- version: candidate.version.trim(),
3064
- entry: candidate.entry.trim(),
3065
- priority,
3066
3061
  manifest_version: manifestVersion,
3067
3062
  pm_min_version: pmMinVersion,
3068
3063
  pm_max_version: pmMaxVersion,
3069
3064
  engines,
3070
3065
  trusted,
3071
- provenance,
3072
3066
  sandbox_profile: sandboxProfile,
3067
+ provenance,
3073
3068
  permissions,
3074
- activation,
3075
- capabilities,
3076
- legacy_capability_aliases: legacyCapabilityAliases.length > 0 ? legacyCapabilityAliases : void 0
3069
+ capabilities: capabilities.capabilities,
3070
+ legacy_capability_aliases: capabilities.legacy_aliases,
3071
+ activation
3072
+ };
3073
+ }
3074
+ function parseManifest(raw) {
3075
+ if (typeof raw !== "object" || raw === null) {
3076
+ return null;
3077
+ }
3078
+ const candidate = raw;
3079
+ const name = parseRequiredManifestString(candidate, "name");
3080
+ if (name === null) {
3081
+ return null;
3082
+ }
3083
+ const version = parseRequiredManifestString(candidate, "version");
3084
+ if (version === null) {
3085
+ return null;
3086
+ }
3087
+ const entry = parseRequiredManifestString(candidate, "entry");
3088
+ if (entry === null) {
3089
+ return null;
3090
+ }
3091
+ const priority = parseManifestPriority(candidate);
3092
+ if (priority === null) {
3093
+ return null;
3094
+ }
3095
+ const metadata = parseManifestMetadata(candidate);
3096
+ if (metadata === null) {
3097
+ return null;
3098
+ }
3099
+ return {
3100
+ name,
3101
+ version,
3102
+ entry,
3103
+ priority,
3104
+ manifest_version: metadata.manifest_version,
3105
+ pm_min_version: metadata.pm_min_version,
3106
+ pm_max_version: metadata.pm_max_version,
3107
+ engines: metadata.engines,
3108
+ trusted: metadata.trusted,
3109
+ provenance: metadata.provenance,
3110
+ sandbox_profile: metadata.sandbox_profile,
3111
+ permissions: metadata.permissions,
3112
+ activation: metadata.activation,
3113
+ capabilities: metadata.capabilities,
3114
+ legacy_capability_aliases: metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : void 0
3077
3115
  };
3078
3116
  }
3079
3117
  function shouldEnable(name, enabled, disabled) {
@@ -3202,26 +3240,50 @@ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMa
3202
3240
  }
3203
3241
  return { diagnostics, warnings, candidates };
3204
3242
  }
3243
+ function buildUnavailableExtensionScan(layer, directory, manifestPath, warning) {
3244
+ return {
3245
+ diagnostic: {
3246
+ layer,
3247
+ directory,
3248
+ manifest_path: manifestPath,
3249
+ name: null,
3250
+ version: null,
3251
+ entry: null,
3252
+ priority: null,
3253
+ entry_path: null,
3254
+ enabled: null,
3255
+ status: "warn"
3256
+ },
3257
+ warnings: [warning],
3258
+ candidate: null
3259
+ };
3260
+ }
3261
+ function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility) {
3262
+ const extensionWarnings = [];
3263
+ if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
3264
+ extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
3265
+ }
3266
+ for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
3267
+ extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
3268
+ }
3269
+ if (!entryWithinDirectory) {
3270
+ extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
3271
+ } else if (!entryExists) {
3272
+ extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
3273
+ }
3274
+ if (pmVersionCompatibility.warning) {
3275
+ extensionWarnings.push(pmVersionCompatibility.warning);
3276
+ }
3277
+ if (pmMaxVersionCompatibility.warning) {
3278
+ extensionWarnings.push(pmMaxVersionCompatibility.warning);
3279
+ }
3280
+ return extensionWarnings;
3281
+ }
3205
3282
  async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
3206
3283
  const extensionDir = path5.join(extensionsRoot, directory);
3207
3284
  const manifestPath = path5.join(extensionDir, "manifest.json");
3208
3285
  if (!await pathExists(manifestPath)) {
3209
- return {
3210
- diagnostic: {
3211
- layer,
3212
- directory,
3213
- manifest_path: manifestPath,
3214
- name: null,
3215
- version: null,
3216
- entry: null,
3217
- priority: null,
3218
- entry_path: null,
3219
- enabled: null,
3220
- status: "warn"
3221
- },
3222
- warnings: [`extension_manifest_missing:${layer}:${directory}`],
3223
- candidate: null
3224
- };
3286
+ return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
3225
3287
  }
3226
3288
  let manifest = null;
3227
3289
  try {
@@ -3231,48 +3293,16 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
3231
3293
  manifest = null;
3232
3294
  }
3233
3295
  if (!manifest) {
3234
- return {
3235
- diagnostic: {
3236
- layer,
3237
- directory,
3238
- manifest_path: manifestPath,
3239
- name: null,
3240
- version: null,
3241
- entry: null,
3242
- priority: null,
3243
- entry_path: null,
3244
- enabled: null,
3245
- status: "warn"
3246
- },
3247
- warnings: [`extension_manifest_invalid:${layer}:${directory}`],
3248
- candidate: null
3249
- };
3296
+ return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);
3250
3297
  }
3251
3298
  const entryPath = path5.resolve(extensionDir, manifest.entry);
3252
3299
  const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);
3253
3300
  const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;
3254
3301
  const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
3255
3302
  const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
3256
- const extensionWarnings = [];
3257
- if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
3258
- extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
3259
- }
3260
- for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
3261
- extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
3262
- }
3263
- if (!entryWithinDirectory) {
3264
- extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
3265
- } else if (!entryExists) {
3266
- extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
3267
- }
3268
3303
  const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
3269
- if (pmVersionCompatibility.warning) {
3270
- extensionWarnings.push(pmVersionCompatibility.warning);
3271
- }
3272
3304
  const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
3273
- if (pmMaxVersionCompatibility.warning) {
3274
- extensionWarnings.push(pmMaxVersionCompatibility.warning);
3275
- }
3305
+ const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
3276
3306
  const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
3277
3307
  const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
3278
3308
  return {
@@ -4022,69 +4052,70 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4022
4052
  received: sanitizeRegistrationValue(received),
4023
4053
  hint
4024
4054
  });
4025
- const registerCommand = (commandOrDefinition, override) => {
4026
- assertExtensionCapability(extension, "commands", "registerCommand");
4027
- if (typeof commandOrDefinition === "string") {
4028
- const normalizedCommand2 = normalizeCommandName(commandOrDefinition);
4029
- if (normalizedCommand2.length === 0) {
4030
- 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."));
4031
- }
4032
- if (typeof override !== "function") {
4033
- const trace = registerCommandTrace("override", normalizedCommand2, 'registerCommand("<command>", (context) => unknown)', { command: commandOrDefinition, override }, "Provide a function as the second registerCommand argument.");
4034
- throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand2}", registration_index=${trace.registration_index})`, trace);
4035
- }
4036
- if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand2 })) {
4037
- return;
4038
- }
4039
- commands.overrides.push({
4040
- layer: extension.layer,
4041
- name: extension.name,
4042
- command: normalizedCommand2,
4043
- run: override
4044
- });
4045
- return;
4046
- }
4047
- if (typeof commandOrDefinition !== "object" || commandOrDefinition === null) {
4048
- 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) => ... }).'));
4055
+ const registerCommandOverride = (command, override) => {
4056
+ const normalizedCommand = normalizeCommandName(command);
4057
+ if (normalizedCommand.length === 0) {
4058
+ 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."));
4049
4059
  }
4050
- if (typeof commandOrDefinition.name !== "string") {
4051
- 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."));
4060
+ if (typeof override !== "function") {
4061
+ const trace = registerCommandTrace("override", normalizedCommand, 'registerCommand("<command>", (context) => unknown)', { command, override }, "Provide a function as the second registerCommand argument.");
4062
+ throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
4052
4063
  }
4053
- const normalizedCommand = normalizeCommandName(commandOrDefinition.name);
4054
- if (normalizedCommand.length === 0) {
4055
- 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."));
4064
+ if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand })) {
4065
+ return;
4056
4066
  }
4057
- const runHandler = typeof commandOrDefinition.run === "function" ? commandOrDefinition.run : void 0;
4058
- const legacyHandler = typeof commandOrDefinition.handler === "function" ? commandOrDefinition.handler : void 0;
4067
+ commands.overrides.push({
4068
+ layer: extension.layer,
4069
+ name: extension.name,
4070
+ command: normalizedCommand,
4071
+ run: override
4072
+ });
4073
+ };
4074
+ const resolveCommandDefinitionRunHandler = (definition, normalizedCommand) => {
4075
+ const runHandler = typeof definition.run === "function" ? definition.run : void 0;
4076
+ const legacyHandler = typeof definition.handler === "function" ? definition.handler : void 0;
4059
4077
  if (!runHandler && legacyHandler) {
4060
4078
  activationWarnings.push(`extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`);
4061
4079
  }
4062
- const resolvedHandler = runHandler ?? legacyHandler;
4080
+ return runHandler ?? legacyHandler;
4081
+ };
4082
+ const registerCommandDefinition = (definition) => {
4083
+ if (typeof definition !== "object" || definition === null) {
4084
+ 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) => ... }).'));
4085
+ }
4086
+ if (typeof definition.name !== "string") {
4087
+ 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."));
4088
+ }
4089
+ const normalizedCommand = normalizeCommandName(definition.name);
4090
+ if (normalizedCommand.length === 0) {
4091
+ 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."));
4092
+ }
4093
+ const resolvedHandler = resolveCommandDefinitionRunHandler(definition, normalizedCommand);
4063
4094
  if (typeof resolvedHandler !== "function") {
4064
- const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", commandOrDefinition, "Define command definition.run as a function.");
4095
+ const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", definition, "Define command definition.run as a function.");
4065
4096
  throw createRegistrationValidationError(`registerCommand requires a command definition run handler (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
4066
4097
  }
4067
4098
  try {
4068
- assertOptionalStringField("registerCommand definition.action", commandOrDefinition.action);
4069
- assertOptionalStringField("registerCommand definition.description", commandOrDefinition.description);
4070
- assertOptionalStringField("registerCommand definition.intent", commandOrDefinition.intent);
4071
- const action = resolveCommandDefinitionAction(normalizedCommand, commandOrDefinition.action);
4099
+ assertOptionalStringField("registerCommand definition.action", definition.action);
4100
+ assertOptionalStringField("registerCommand definition.description", definition.description);
4101
+ assertOptionalStringField("registerCommand definition.intent", definition.intent);
4102
+ const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);
4072
4103
  if (!allowRegistration("commands.handler", "registerCommand", "commands", { command: normalizedCommand, action })) {
4073
4104
  return;
4074
4105
  }
4075
- const description = commandOrDefinition.description?.trim();
4076
- const intent = commandOrDefinition.intent?.trim();
4077
- const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", commandOrDefinition.examples);
4078
- const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", commandOrDefinition.failure_hints);
4079
- const argumentsDefinition = normalizeCommandDefinitionArguments(commandOrDefinition.arguments);
4080
- if (commandOrDefinition.flags !== void 0) {
4106
+ const description = definition.description?.trim();
4107
+ const intent = definition.intent?.trim();
4108
+ const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", definition.examples);
4109
+ const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", definition.failure_hints);
4110
+ const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);
4111
+ if (definition.flags !== void 0) {
4081
4112
  assertExtensionCapability(extension, "schema", "registerCommand flags");
4082
- validateFlagDefinitions(commandOrDefinition.flags);
4113
+ validateFlagDefinitions(definition.flags);
4083
4114
  registrations.flags.push({
4084
4115
  layer: extension.layer,
4085
4116
  name: extension.name,
4086
4117
  target_command: normalizedCommand,
4087
- flags: normalizeRegistrationRecordList("registerCommand definition.flags", commandOrDefinition.flags)
4118
+ flags: normalizeRegistrationRecordList("registerCommand definition.flags", definition.flags)
4088
4119
  });
4089
4120
  }
4090
4121
  const registration = {
@@ -4106,7 +4137,7 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4106
4137
  registrations.commands.push(registration);
4107
4138
  } catch (error) {
4108
4139
  const reason = formatUnknownError(error);
4109
- 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.");
4140
+ 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.");
4110
4141
  throw createRegistrationValidationError(`registerCommand definition metadata invalid (command="${normalizedCommand}", registration_index=${trace.registration_index}): ${reason}`, trace);
4111
4142
  }
4112
4143
  commands.handlers.push({
@@ -4116,6 +4147,14 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
4116
4147
  run: resolvedHandler
4117
4148
  });
4118
4149
  };
4150
+ const registerCommand = (commandOrDefinition, override) => {
4151
+ assertExtensionCapability(extension, "commands", "registerCommand");
4152
+ if (typeof commandOrDefinition === "string") {
4153
+ registerCommandOverride(commandOrDefinition, override);
4154
+ return;
4155
+ }
4156
+ registerCommandDefinition(commandOrDefinition);
4157
+ };
4119
4158
  const registerParser = (command, override) => {
4120
4159
  assertExtensionCapability(extension, "parser", "registerParser");
4121
4160
  if (!allowRegistration("parser.override", "registerParser", "parser")) {
@@ -7260,6 +7299,6 @@ export {
7260
7299
  readSettings,
7261
7300
  writeSettings
7262
7301
  };
7263
- //# sourceMappingURL=chunk-CY5IJMUM.js.map
7302
+ //# sourceMappingURL=chunk-7R4QEMZZ.js.map
7264
7303
 
7265
- //# debugId=b452df4b-661b-5f08-9d20-dff37c4bfb2f
7304
+ //# debugId=03ed13d8-75ea-5f3b-b089-a7347a59acca