@vercel/cli-support 65.3.1 → 65.4.0

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 (257) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/add-7NS6HIWC.js +8 -0
  3. package/dist/chunks/add-NMYFDVXW.js +8 -0
  4. package/dist/chunks/add-PMJ5BECU.js +8 -0
  5. package/dist/chunks/build-BCY6HQJG.js +7 -0
  6. package/dist/chunks/{chunk-SKYDLHEZ.js → chunk-2K3ISCQ6.js} +1 -1
  7. package/dist/chunks/{chunk-BL3HBRF6.js → chunk-2TUVL6WE.js} +1 -1
  8. package/dist/chunks/{chunk-22FDWPWY.js → chunk-363SJ4TN.js} +1 -1
  9. package/dist/chunks/chunk-462YCCJZ.js +7 -0
  10. package/dist/chunks/{chunk-KNLGWGUE.js → chunk-4N6LMERQ.js} +6 -6
  11. package/dist/chunks/chunk-527GBU3K.js +7 -0
  12. package/dist/chunks/chunk-5IWFRZQT.js +10 -0
  13. package/dist/chunks/chunk-5KUUMQ3M.js +7 -0
  14. package/dist/chunks/{chunk-IVSC7ZFJ.js → chunk-5V53NA6C.js} +1 -1
  15. package/dist/chunks/chunk-6I6QJHCY.js +7 -0
  16. package/dist/chunks/chunk-6TXEVQA4.js +7 -0
  17. package/dist/chunks/{chunk-2PKEEQ5W.js → chunk-6YXIWZ3X.js} +1 -1
  18. package/dist/chunks/{chunk-7HV7O6DM.js → chunk-7E3WREH5.js} +1 -1
  19. package/dist/chunks/{chunk-Y6AGOERS.js → chunk-7L5QUDUR.js} +1 -1
  20. package/dist/chunks/{chunk-X4762EE4.js → chunk-7QAGSRCU.js} +1 -1
  21. package/dist/chunks/{chunk-NTZ5WWYV.js → chunk-7R6TRRG5.js} +1 -1
  22. package/dist/chunks/{chunk-WCWP4GBR.js → chunk-AYUUSAB7.js} +1 -1
  23. package/dist/chunks/chunk-BVGGTBYE.js +7 -0
  24. package/dist/chunks/{chunk-YN3C5BL5.js → chunk-C7FQMC6D.js} +1 -1
  25. package/dist/chunks/{chunk-2U7DJZSQ.js → chunk-CBVKB3DT.js} +1 -1
  26. package/dist/chunks/{chunk-FDNYYENK.js → chunk-CC6FLKIP.js} +1 -1
  27. package/dist/chunks/chunk-CR3NBTHV.js +7 -0
  28. package/dist/chunks/{chunk-BBKEP7RO.js → chunk-CWM2F235.js} +1 -1
  29. package/dist/chunks/{chunk-IUXSJWL3.js → chunk-DKJL2KV7.js} +1 -1
  30. package/dist/chunks/{chunk-2ACMWVTB.js → chunk-DQ2SVW4R.js} +1 -1
  31. package/dist/chunks/{chunk-SLI2O5X7.js → chunk-EAXMWCOL.js} +2 -2
  32. package/dist/chunks/{chunk-LRYGNQ6C.js → chunk-ECEDD646.js} +1 -1
  33. package/dist/chunks/{chunk-IGDG5CWT.js → chunk-EEUJLJEJ.js} +1 -1
  34. package/dist/chunks/{chunk-VQSLPYAF.js → chunk-EGNR2DEI.js} +1 -1
  35. package/dist/chunks/chunk-EISD3RG7.js +11 -0
  36. package/dist/chunks/{chunk-GVTXA6HG.js → chunk-EKZTFGDX.js} +1 -1
  37. package/dist/chunks/{chunk-CEMPU323.js → chunk-EU2GBIPC.js} +1 -1
  38. package/dist/chunks/{chunk-3ADDGPEN.js → chunk-F6EBOT64.js} +1 -1
  39. package/dist/chunks/chunk-FHU2O7ZJ.js +8 -0
  40. package/dist/chunks/{chunk-KH6565YH.js → chunk-FLHO75XC.js} +1 -1
  41. package/dist/chunks/chunk-FSPPKNKN.js +7 -0
  42. package/dist/chunks/{chunk-43GBAKL2.js → chunk-GCZVIDNG.js} +1 -1
  43. package/dist/chunks/{chunk-G4T7VBGN.js → chunk-HSFKISDH.js} +1 -1
  44. package/dist/chunks/{chunk-OQCMRU3J.js → chunk-HTXDC7E2.js} +2 -2
  45. package/dist/chunks/{chunk-76SVVWPH.js → chunk-IOZ3I765.js} +1 -1
  46. package/dist/chunks/{chunk-UKQMYTWW.js → chunk-JLE7K4SY.js} +1 -1
  47. package/dist/chunks/{chunk-3JGBBS6V.js → chunk-JP33AIDQ.js} +1 -1
  48. package/dist/chunks/{chunk-ULHNMQ7C.js → chunk-JRPNHWA3.js} +1 -1
  49. package/dist/chunks/{chunk-D2BZMGHP.js → chunk-JUSR7V2L.js} +1 -1
  50. package/dist/chunks/{chunk-XB4SKARZ.js → chunk-JWCEHQQF.js} +1 -1
  51. package/dist/chunks/chunk-K5U47EVH.js +7 -0
  52. package/dist/chunks/{chunk-VOCZ34ON.js → chunk-KCKYPLIH.js} +1 -1
  53. package/dist/chunks/{chunk-2WYYGGEO.js → chunk-KGBIRIFF.js} +1 -1
  54. package/dist/chunks/{chunk-RRREFECI.js → chunk-KJA2GKPT.js} +1 -1
  55. package/dist/chunks/{chunk-S5IWVPYT.js → chunk-KPQLUGFI.js} +1 -1
  56. package/dist/chunks/{chunk-S4SJ7GIZ.js → chunk-KQCFC2JL.js} +1 -1
  57. package/dist/chunks/{chunk-XXXRTHTP.js → chunk-KQCROPL3.js} +1 -1
  58. package/dist/chunks/{chunk-3KKFLKQG.js → chunk-KY335KWI.js} +1 -1
  59. package/dist/chunks/{chunk-OWOWPOIE.js → chunk-L3JYCXVB.js} +1 -1
  60. package/dist/chunks/chunk-LFOWP74R.js +7 -0
  61. package/dist/chunks/{chunk-PFNYWWLI.js → chunk-LOBA3E72.js} +1 -1
  62. package/dist/chunks/{chunk-XZV4BFM5.js → chunk-LQVSU5HR.js} +1 -1
  63. package/dist/chunks/{chunk-2H3SB5RP.js → chunk-LW4N3CW6.js} +1 -1
  64. package/dist/chunks/{chunk-6ISAISGD.js → chunk-M2NXKZKX.js} +1 -1
  65. package/dist/chunks/{chunk-F2SWJEYV.js → chunk-MBEKRUTQ.js} +1 -1
  66. package/dist/chunks/{chunk-UJSW56GS.js → chunk-N2FLYCCO.js} +1 -1
  67. package/dist/chunks/{chunk-ZH6KHD55.js → chunk-N6JBQMOF.js} +2 -2
  68. package/dist/chunks/{chunk-OCQPXOTX.js → chunk-NAX6IARA.js} +1 -1
  69. package/dist/chunks/{chunk-4UGHFESV.js → chunk-NGKO2OOU.js} +1 -1
  70. package/dist/chunks/chunk-NW7WWUCQ.js +9 -0
  71. package/dist/chunks/chunk-O4WNSKQR.js +15 -0
  72. package/dist/chunks/{chunk-7Z3WUAO5.js → chunk-O72YDZKD.js} +1 -1
  73. package/dist/chunks/{chunk-LKLH6DZP.js → chunk-OHEOYFBU.js} +1 -1
  74. package/dist/chunks/{chunk-LJBUJ23M.js → chunk-OZCQTXI4.js} +1 -1
  75. package/dist/chunks/{chunk-LCHECISY.js → chunk-Q4KTAQB3.js} +1 -1
  76. package/dist/chunks/{chunk-TZFDVQ72.js → chunk-QIVX6SCR.js} +1 -1
  77. package/dist/chunks/{chunk-7Y46LB43.js → chunk-QVHXFHBV.js} +1 -1
  78. package/dist/chunks/chunk-QVXS234E.js +7 -0
  79. package/dist/chunks/{chunk-SXOSF4O6.js → chunk-QVZAAMGQ.js} +1 -1
  80. package/dist/chunks/chunk-R2BUF6Z7.js +7 -0
  81. package/dist/chunks/{chunk-OGPENBY2.js → chunk-R2XHJDAP.js} +1 -1
  82. package/dist/chunks/{chunk-E6CO6TUM.js → chunk-RMZTB2IU.js} +1 -1
  83. package/dist/chunks/{chunk-LT3UK4K6.js → chunk-SLGUYM42.js} +1 -1
  84. package/dist/chunks/{chunk-7BGKE3JW.js → chunk-SYFG2RM6.js} +1 -1
  85. package/dist/chunks/chunk-T6243EDS.js +7 -0
  86. package/dist/chunks/chunk-TAISZMA2.js +7 -0
  87. package/dist/chunks/{chunk-TO5PJDEN.js → chunk-TEYREL44.js} +1 -1
  88. package/dist/chunks/{chunk-6KVHNQW4.js → chunk-TIPQQ4TG.js} +1 -1
  89. package/dist/chunks/{chunk-DUT4U5YY.js → chunk-U2OBPULW.js} +1 -1
  90. package/dist/chunks/{chunk-OQPXJCMK.js → chunk-UGNIIDHR.js} +1 -1
  91. package/dist/chunks/{chunk-NQWGRKF4.js → chunk-UHBMX3OK.js} +1 -1
  92. package/dist/chunks/{chunk-QMCHGGDX.js → chunk-VNIKIQVE.js} +1 -1
  93. package/dist/chunks/{chunk-DGYHWXD2.js → chunk-WDXW6A4H.js} +2 -2
  94. package/dist/chunks/{chunk-L4NSF346.js → chunk-WEH6XC4Y.js} +1 -1
  95. package/dist/chunks/{chunk-TKBORMUF.js → chunk-WKZ6JSGZ.js} +1 -1
  96. package/dist/chunks/{chunk-WGXKX24Q.js → chunk-WVHCBDTB.js} +1 -1
  97. package/dist/chunks/{chunk-COM5YCHF.js → chunk-XC46OAAT.js} +1 -1
  98. package/dist/chunks/{chunk-WBF36MYT.js → chunk-XVDRGWXM.js} +1 -1
  99. package/dist/chunks/{chunk-IKQTP764.js → chunk-Y5ZMKL7E.js} +1 -1
  100. package/dist/chunks/{chunk-NEFDNROD.js → chunk-YEZJNXQX.js} +1 -1
  101. package/dist/chunks/{chunk-VMMMBWD3.js → chunk-YHULP2KK.js} +1 -1
  102. package/dist/chunks/{chunk-OMCGXRSA.js → chunk-YMZ6WBKB.js} +2 -2
  103. package/dist/chunks/{chunk-URPEIX6M.js → chunk-ZN6CQWVP.js} +1 -1
  104. package/dist/chunks/{chunk-YK7XLFU2.js → chunk-ZQBSAMFL.js} +1 -1
  105. package/dist/chunks/clear-FKVWDCVA.js +8 -0
  106. package/dist/chunks/{compile-vercel-config-3IYM2CHC.js → compile-vercel-config-GWAJE44R.js} +1 -1
  107. package/dist/chunks/config-5WVLG5SE.js +8 -0
  108. package/dist/chunks/{config-ZFIC7N4D.js → config-RMOHN5YT.js} +1 -1
  109. package/dist/chunks/config-validator.mjs +1 -1
  110. package/dist/chunks/{constants-ICJL2EO5.js → constants-JAB7MRSK.js} +1 -1
  111. package/dist/chunks/delete-5WMB4WFR.js +9 -0
  112. package/dist/chunks/delete-EM4JZPFA.js +10 -0
  113. package/dist/chunks/{detect-services-MOXTX5XG.js → detect-services-BSJGB4RM.js} +1 -1
  114. package/dist/chunks/disable-QOM7UHQC.js +7 -0
  115. package/dist/chunks/discard-L5ZH7P5B.js +14 -0
  116. package/dist/chunks/edit-F3VJGCG2.js +9 -0
  117. package/dist/chunks/edit-TM7YCWBU.js +8 -0
  118. package/dist/chunks/enable-72C3QX34.js +7 -0
  119. package/dist/chunks/{export-MHSH7QCX.js → export-EPLYZF2Q.js} +1 -1
  120. package/dist/chunks/{future-FFOGTKMF.js → future-V77DRMQG.js} +1 -1
  121. package/dist/chunks/generate-cert-for-deploy-Y3YHBMPU.js +7 -0
  122. package/dist/chunks/{image-7METSS6F.js → image-CVXEXU5R.js} +1 -1
  123. package/dist/chunks/{import-builders-GM2SERWV.js → import-builders-PGRKJOOE.js} +1 -1
  124. package/dist/chunks/inspect-BTRNXRJT.js +9 -0
  125. package/dist/chunks/{inspect-IAWVHJXQ.js → inspect-CZ7WXYE5.js} +1 -1
  126. package/dist/chunks/inspect-FGDVWAQP.js +13 -0
  127. package/dist/chunks/{inspect-A7WJQQZO.js → inspect-HFDGZNWC.js} +1 -1
  128. package/dist/chunks/{inspect-DI434TAM.js → inspect-T2AIREYK.js} +1 -1
  129. package/dist/chunks/list-CKRRHAOE.js +12 -0
  130. package/dist/chunks/{list-WWU734RK.js → list-FLREMGJR.js} +1 -1
  131. package/dist/chunks/{list-INRPH25K.js → list-ON4YTQRN.js} +1 -1
  132. package/dist/chunks/login-55LJ5ZA6.js +9 -0
  133. package/dist/chunks/{login-R5NQRPQC.js → login-DQRZSD4Z.js} +1 -1
  134. package/dist/chunks/logs-2HQXWOHM.js +7 -0
  135. package/dist/chunks/{ls-S5E2NQMI.js → ls-2HUJHVLA.js} +1 -1
  136. package/dist/chunks/{ls-V2ZSIVO3.js → ls-3DVM5HLK.js} +1 -1
  137. package/dist/chunks/ls-4B3QYHCI.js +8 -0
  138. package/dist/chunks/{ls-MCQ2NS65.js → ls-A7K4XDQB.js} +1 -1
  139. package/dist/chunks/{ls-LIGIBVAT.js → ls-FK5XEJEU.js} +1 -1
  140. package/dist/chunks/{ls-VXH4QYF5.js → ls-QGUKJJY5.js} +1 -1
  141. package/dist/chunks/ls-VTKHPDWS.js +11 -0
  142. package/dist/chunks/mutate-7ADZBCZM.js +9 -0
  143. package/dist/chunks/{notifications-KFZ333V5.js → notifications-XZJXE2K4.js} +1 -1
  144. package/dist/chunks/open-EE5IZQD7.js +7 -0
  145. package/dist/chunks/{openapi-JGYEFJJV.js → openapi-QBX62ZXC.js} +1 -1
  146. package/dist/chunks/{permissions-ZSHKMXBZ.js → permissions-VYJ4LL5R.js} +1 -1
  147. package/dist/chunks/{plugin-offer-Z6FCPQFD.js → plugin-offer-TEGYA3TA.js} +1 -1
  148. package/dist/chunks/{prompt-missing-credentials-KOA7C4QC.js → prompt-missing-credentials-VP6OVCFM.js} +1 -1
  149. package/dist/chunks/publish-2HEK5UMJ.js +15 -0
  150. package/dist/chunks/pull-WRTTSY7J.js +7 -0
  151. package/dist/chunks/purchase-domain-if-available-6S3NLTUI.js +7 -0
  152. package/dist/chunks/push-L3QRGGLC.js +7 -0
  153. package/dist/chunks/{query-JGPO7TNY.js → query-FXXLX6UB.js} +3 -3
  154. package/dist/chunks/{reauthenticate-OZRQFR66.js → reauthenticate-IXQDC4UZ.js} +1 -1
  155. package/dist/chunks/reorder-B4OXSYCI.js +10 -0
  156. package/dist/chunks/reply-F637K6XH.js +9 -0
  157. package/dist/chunks/resolve-E3F6NYQZ.js +12 -0
  158. package/dist/chunks/{resolve-agent-team-KX77HEAF.js → resolve-agent-team-EIPCH766.js} +1 -1
  159. package/dist/chunks/restore-Q25KRZPH.js +16 -0
  160. package/dist/chunks/rm-FWD2NUGX.js +8 -0
  161. package/dist/chunks/rm-JMQ4QKCC.js +8 -0
  162. package/dist/chunks/rm-PPG7P3GN.js +8 -0
  163. package/dist/chunks/rm-SH3DYKNS.js +8 -0
  164. package/dist/chunks/rm-UEBLKFVC.js +8 -0
  165. package/dist/chunks/{routes-P6LKQCWH.js → routes-PKTWMDWQ.js} +1 -1
  166. package/dist/chunks/rule-inspect-LKQA5I4V.js +8 -0
  167. package/dist/chunks/{schema-YOEAK4VX.js → schema-FBV42W7N.js} +1 -1
  168. package/dist/chunks/{schema-BEUO7G52.js → schema-ZWE5MNMG.js} +1 -1
  169. package/dist/chunks/{select-org-OMLGQEKK.js → select-org-WMB752Z6.js} +1 -1
  170. package/dist/chunks/set-UTYIPOLC.js +7 -0
  171. package/dist/chunks/setup-and-link-ZLY5XQW5.js +7 -0
  172. package/dist/chunks/{skills-4J2NC2QI.js → skills-RKIGVVNM.js} +2 -2
  173. package/dist/chunks/{tags-ZXZQEXOV.js → tags-UCLZ5UMX.js} +1 -1
  174. package/dist/chunks/{types-SK6J2HFE.js → types-YM7TMHXW.js} +1 -1
  175. package/dist/chunks/{update-25CKNOY5.js → update-BGDQ5TXO.js} +1 -1
  176. package/dist/commands/build/index.js +1 -1
  177. package/dist/commands/deploy/index.js +4 -4
  178. package/dist/commands/dev/index.js +4 -4
  179. package/dist/commands/env/index.js +1 -1
  180. package/dist/commands/link/index.js +1 -1
  181. package/dist/commands/list/index.js +1 -1
  182. package/dist/commands/project/index.js +8 -8
  183. package/dist/commands-account.js +8 -8
  184. package/dist/commands-ai.js +12 -12
  185. package/dist/commands-blob.js +8 -8
  186. package/dist/commands-core.js +11 -11
  187. package/dist/commands-deployments.js +1 -1
  188. package/dist/commands-flags.js +6 -6
  189. package/dist/commands-integrations.js +16 -16
  190. package/dist/commands-observability.js +5 -5
  191. package/dist/commands-routing.js +18 -18
  192. package/dist/help.js +1 -1
  193. package/dist/index.js +5 -3
  194. package/dist/internal-build.js +1 -1
  195. package/dist/package.json +60 -61
  196. package/dist/root-help-commands.mjs +1 -1
  197. package/dist/vc.js +148 -137
  198. package/dist/version.mjs +1 -1
  199. package/package.json +54 -54
  200. package/dist/chunks/add-5YZQTIQM.js +0 -8
  201. package/dist/chunks/add-A524QQ2H.js +0 -8
  202. package/dist/chunks/add-V4JMUHKO.js +0 -8
  203. package/dist/chunks/build-K2PVDJZ4.js +0 -7
  204. package/dist/chunks/chunk-3AYYFYZG.js +0 -7
  205. package/dist/chunks/chunk-5IASAERQ.js +0 -7
  206. package/dist/chunks/chunk-76KGQU2G.js +0 -7
  207. package/dist/chunks/chunk-ABZEMNDR.js +0 -7
  208. package/dist/chunks/chunk-APZULWJC.js +0 -8
  209. package/dist/chunks/chunk-AWMQGOS2.js +0 -7
  210. package/dist/chunks/chunk-B4UE4LVE.js +0 -7
  211. package/dist/chunks/chunk-B4YYOSPY.js +0 -7
  212. package/dist/chunks/chunk-E2SADN6I.js +0 -7
  213. package/dist/chunks/chunk-IA3MXJRC.js +0 -8
  214. package/dist/chunks/chunk-IEPW2YRH.js +0 -7
  215. package/dist/chunks/chunk-LUBUI5GF.js +0 -7
  216. package/dist/chunks/chunk-OKEBIUKZ.js +0 -7
  217. package/dist/chunks/chunk-QZX7VG2V.js +0 -9
  218. package/dist/chunks/chunk-RUXO73ON.js +0 -7
  219. package/dist/chunks/chunk-TPNOSQZ3.js +0 -15
  220. package/dist/chunks/chunk-UNEGQPD3.js +0 -7
  221. package/dist/chunks/chunk-V7BEC3E4.js +0 -10
  222. package/dist/chunks/chunk-YHQ7PPXP.js +0 -7
  223. package/dist/chunks/clear-ZS4KQ7OT.js +0 -8
  224. package/dist/chunks/config-N2SBVW4T.js +0 -8
  225. package/dist/chunks/delete-2ZE2NVHI.js +0 -10
  226. package/dist/chunks/delete-AL57HZDQ.js +0 -9
  227. package/dist/chunks/disable-MKI3BKNH.js +0 -7
  228. package/dist/chunks/discard-SI4H7ST3.js +0 -14
  229. package/dist/chunks/edit-DNWH6SPE.js +0 -8
  230. package/dist/chunks/edit-WYNWDFUJ.js +0 -9
  231. package/dist/chunks/enable-J6MMYPYF.js +0 -7
  232. package/dist/chunks/generate-cert-for-deploy-YZKNGAEQ.js +0 -7
  233. package/dist/chunks/inspect-H2Q7XOWN.js +0 -13
  234. package/dist/chunks/inspect-H5JC2XKI.js +0 -9
  235. package/dist/chunks/list-ELEUTZWJ.js +0 -12
  236. package/dist/chunks/login-ZF2TLCQB.js +0 -9
  237. package/dist/chunks/logs-UD7FEXZ7.js +0 -7
  238. package/dist/chunks/ls-5ZEAKKPQ.js +0 -8
  239. package/dist/chunks/ls-IXRLAJ4L.js +0 -11
  240. package/dist/chunks/mutate-OQWOKLIW.js +0 -9
  241. package/dist/chunks/open-HH6K7ZRC.js +0 -7
  242. package/dist/chunks/publish-FPNQ2US4.js +0 -15
  243. package/dist/chunks/pull-7OGOIKB3.js +0 -7
  244. package/dist/chunks/purchase-domain-if-available-F4LKHVBD.js +0 -7
  245. package/dist/chunks/push-NY3SIK2C.js +0 -7
  246. package/dist/chunks/reorder-4J2STFUS.js +0 -10
  247. package/dist/chunks/reply-EO4NTTPW.js +0 -9
  248. package/dist/chunks/resolve-RPHHRPNM.js +0 -12
  249. package/dist/chunks/restore-TEA6TSVK.js +0 -16
  250. package/dist/chunks/rm-BPILSPUI.js +0 -8
  251. package/dist/chunks/rm-F6XVUDBM.js +0 -8
  252. package/dist/chunks/rm-JCPXV2FN.js +0 -8
  253. package/dist/chunks/rm-LPQRGX7N.js +0 -8
  254. package/dist/chunks/rm-WHUGT6TE.js +0 -8
  255. package/dist/chunks/rule-inspect-BOETGPFO.js +0 -8
  256. package/dist/chunks/set-5XY27S7R.js +0 -7
  257. package/dist/chunks/setup-and-link-A7M3QT52.js +0 -7
package/dist/vc.js CHANGED
@@ -11,16 +11,18 @@ try {
11
11
  }
12
12
  } catch {}
13
13
 
14
- // Spawn the installed native binary for explicit opt-ins, macOS machines, or
15
- // internal automatic enrollment. Explicit opt-outs always override defaults.
14
+ // Run the one package this platform maps to: the native binary on macOS and
15
+ // Linux x64/arm64, @vercel/cli-support everywhere else. This package's own JS
16
+ // CLI (./index.js) is only a fallback, recorded in telemetry.
16
17
  import { spawnSync } from 'node:child_process';
17
- import { existsSync, statSync, writeFileSync } from 'node:fs';
18
+ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
18
19
  import { dirname, join, resolve } from 'node:path';
19
20
  import { fileURLToPath, pathToFileURL } from 'node:url';
20
21
 
21
22
  const __dirname = dirname(fileURLToPath(import.meta.url));
22
23
 
23
- // Keep in sync with packages/vc-native/scripts/platforms.mjs.
24
+ // Keep in sync with packages/vc-native/scripts/platforms.mjs. Windows runs
25
+ // only the Node CLI until its native binaries are signed.
24
26
  const NATIVE_TARGETS = [
25
27
  'darwin-arm64',
26
28
  'darwin-x64',
@@ -28,8 +30,6 @@ const NATIVE_TARGETS = [
28
30
  'linux-arm64-musl',
29
31
  'linux-x64',
30
32
  'linux-x64-musl',
31
- 'win32-arm64',
32
- 'win32-x64',
33
33
  ];
34
34
 
35
35
  // musl's `ldd` names itself. npm and pnpm skip the other libc's package via
@@ -40,103 +40,65 @@ function isMusl() {
40
40
  return `${ldd.stdout ?? ''}${ldd.stderr ?? ''}`.includes('musl');
41
41
  }
42
42
 
43
- function nativeTarget() {
43
+ function platformTarget() {
44
44
  const target = `${process.platform}-${process.arch}`;
45
45
  return process.platform === 'linux' && isMusl() ? `${target}-musl` : target;
46
46
  }
47
47
 
48
- function resolveNative() {
49
- // Already running inside the native binary — never trampoline again.
50
- if (process.env.VERCEL_VC_NATIVE === '1') return null;
51
- const pkgName = `@vercel/vc-native-${nativeTarget()}`;
52
- const binName = process.platform === 'win32' ? 'vercel.exe' : 'vercel';
53
- // Walk up from this install's own tree looking for a sibling native
54
- // package. `require.resolve()` is not used because it falls back to
55
- // NODE_PATH and the global folders even when `paths` is given.
48
+ // Walk up from this install's own tree. `require.resolve()` is not used
49
+ // because it falls back to NODE_PATH and the global folders even when `paths`
50
+ // is given.
51
+ function findPackage(name) {
56
52
  let dir = __dirname;
57
53
  while (true) {
58
- const pkgDir = join(dir, 'node_modules', pkgName);
59
- if (existsSync(join(pkgDir, 'package.json'))) {
60
- const a = join(pkgDir, 'bin', binName);
61
- if (existsSync(a)) return a;
62
- const b = join(pkgDir, binName);
63
- if (existsSync(b)) return b;
64
- }
54
+ const pkgDir = join(dir, 'node_modules', name);
55
+ if (existsSync(join(pkgDir, 'package.json'))) return pkgDir;
65
56
  const parent = dirname(dir);
66
57
  if (parent === dir) return null;
67
58
  dir = parent;
68
59
  }
69
60
  }
70
61
 
71
- function nativeUnavailableMessage() {
72
- const target = nativeTarget();
73
- if (NATIVE_TARGETS.includes(target)) {
74
- return (
75
- `The native Vercel CLI package @vercel/vc-native-${target} is not installed. ` +
76
- 'Reinstall vercel without omitting optional dependencies (for example, npm i -g vercel@latest).'
77
- );
78
- }
79
- return (
80
- `Vercel CLI does not provide a native binary for ${target}. ` +
81
- 'Install the JavaScript CLI instead (for example, npm i -g @vercel/cli-support).'
82
- );
62
+ // The package this platform maps to: a native target or `cli-support`.
63
+ function mappedTarget() {
64
+ const target = platformTarget();
65
+ return NATIVE_TARGETS.includes(target) ? target : 'cli-support';
83
66
  }
84
67
 
85
- // Operating systems without a native package get the same version's JS CLI
86
- // from @vercel/cli-support. Like resolveNative(), only search this install's
87
- // tree.
88
- function resolveCliSupport() {
89
- let dir = __dirname;
90
- while (true) {
91
- const entry = join(
92
- dir,
93
- 'node_modules',
94
- '@vercel',
95
- 'cli-support',
96
- 'dist',
97
- 'index.js'
98
- );
99
- if (existsSync(entry)) return entry;
100
- const parent = dirname(dir);
101
- if (parent === dir) return null;
102
- dir = parent;
68
+ function resolveTarget() {
69
+ const target = mappedTarget();
70
+ if (target === 'cli-support') {
71
+ const pkgDir = findPackage('@vercel/cli-support');
72
+ const entry = pkgDir && join(pkgDir, 'dist', 'index.js');
73
+ return {
74
+ target: 'cli-support',
75
+ entry: entry && existsSync(entry) && entry,
76
+ };
103
77
  }
78
+ const pkgDir = findPackage(`@vercel/vc-native-${target}`);
79
+ const bin =
80
+ pkgDir &&
81
+ [join(pkgDir, 'bin', 'vercel'), join(pkgDir, 'vercel')].find(existsSync);
82
+ return { target, bin };
104
83
  }
105
84
 
106
- async function importJsCli() {
85
+ // This file also ships in @vercel/cli-support, which is its own JS CLI.
86
+ function isCliSupport() {
107
87
  try {
108
- return await import('./index.js');
109
- } catch (error) {
110
- const cliSupport =
111
- process.env.VERCEL_VC_NATIVE !== '1' &&
112
- error?.code === 'ERR_MODULE_NOT_FOUND' &&
113
- resolveCliSupport();
114
- if (!cliSupport) throw error;
115
- return import(pathToFileURL(cliSupport).href);
116
- }
117
- }
118
-
119
- // Read `--global-config`/`-Q` without loading the full CLI arg parser.
120
- function globalConfigDirFromArgv() {
121
- const argv = process.argv.slice(2);
122
- for (let i = 0; i < argv.length; i++) {
123
- const arg = argv[i];
124
- if (arg === '--global-config' || arg === '-Q') {
125
- return argv[i + 1];
126
- }
127
- if (arg.startsWith('--global-config=')) {
128
- return arg.slice('--global-config='.length);
129
- }
88
+ const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json')));
89
+ return pkg.name === '@vercel/cli-support';
90
+ } catch {
91
+ return false;
130
92
  }
131
- return undefined;
132
93
  }
133
94
 
134
- // Any failure to read config counts as "not opted in".
135
- async function isNativeBinaryOptedIn() {
95
+ // The native binary is the default, but this release still honors an explicit
96
+ // opt-out: VERCEL_CLI_USE_NATIVE_BINARY, then a persisted `useNativeBinary`
97
+ // preference. Any failure to read config counts as no preference.
98
+ async function isNativeBinaryOptedOut() {
136
99
  const envOverride = process.env.VERCEL_CLI_USE_NATIVE_BINARY;
137
- if (envOverride === '1' || envOverride === 'true') return true;
138
- if (envOverride === '0' || envOverride === 'false') return false;
139
-
100
+ if (envOverride === '0' || envOverride === 'false') return true;
101
+ if (envOverride === '1' || envOverride === 'true') return false;
140
102
  try {
141
103
  // Zod-free subpath to avoid loading zod + schemas on this hot path.
142
104
  const config = await import('@vercel/cli-config/paths');
@@ -144,56 +106,89 @@ async function isNativeBinaryOptedIn() {
144
106
  const configDir = argDir
145
107
  ? resolve(process.cwd(), argDir)
146
108
  : config.getGlobalPathConfig();
147
- const configPath = config.getConfigFilePath(configDir);
148
- const preference = config.readGlobalConfigFlag(
149
- configPath,
150
- 'useNativeBinary'
151
- );
152
- if (typeof preference === 'boolean') return preference;
153
- // All macOS machines are opted in unless they explicitly opt out above.
154
- if (process.platform === 'darwin') return true;
155
109
  return (
156
- config.readGlobalConfigFlag(configPath, 'nativeBinaryAutoOptIn') === true
110
+ config.readGlobalConfigFlag(
111
+ config.getConfigFilePath(configDir),
112
+ 'useNativeBinary'
113
+ ) === false
157
114
  );
158
115
  } catch {
159
116
  return false;
160
117
  }
161
118
  }
162
119
 
163
- // Keep the opt-out escape hatch in Node even when the native binary cannot
164
- // start. The full CLI parser still validates the command and its arguments.
165
- const disableBinary = process.argv.slice(2).includes('--disable-binary');
166
- const nativeBin = resolveNative();
167
- const bin = disableBinary ? null : nativeBin;
120
+ // When the OS cannot start the binary at all, no command code has run, so
121
+ // Node.js can safely run the command instead.
122
+ const NATIVE_SPAWN_FALLBACK_CODES = ['ENOENT', 'EACCES', 'ENOEXEC'];
168
123
 
169
- // Internal worker arguments intentionally trampoline too. The packaged native
170
- // binary sets VERCEL_VC_NATIVE=1 in pkg.js and re-enters this file, where
171
- // resolveNative() returns null and the worker branch below handles the request.
172
- if (bin && (await isNativeBinaryOptedIn())) {
173
- process.env.VERCEL_VC_NATIVE = '1';
174
- // Do not fall through to JS on spawn/loader failures — surface them so
175
- // native binary issues (e.g. glibc mismatch) are visible.
176
- const r = spawnSync(bin, process.argv.slice(2), {
177
- stdio: 'inherit',
178
- windowsHide: true,
179
- env: {
180
- ...process.env,
181
- // Upgrades belong to the vercel package, not its native runtime dependency.
182
- // Always replace an inherited value with this launcher's own entrypoint.
183
- VERCEL_CLI_PACKAGE_ENTRYPOINT: fileURLToPath(import.meta.url),
184
- VERCEL_CLI_PACKAGE_EXECUTABLE: bin,
185
- },
186
- });
187
- if (r.error) {
188
- console.error(r.error.message);
189
- process.exit(1);
124
+ // Read by src/index.ts and reported in telemetry. Inside the native binary,
125
+ // pkg.js sets it to `native` before re-entering this file with
126
+ // VERCEL_VC_NATIVE=1.
127
+ const LAUNCH = Symbol.for('vercel.cli.launch');
128
+ let launch;
129
+ let cliSupportEntry;
130
+ if (process.env.VERCEL_VC_NATIVE === '1') {
131
+ if (globalThis[LAUNCH]?.runtime !== 'native') {
132
+ // Not the native binary: a process it spawned (a build script, a dev
133
+ // command) inherited VERCEL_VC_NATIVE=1 and ran this package's JS CLI.
134
+ launch = {
135
+ runtime: 'dist',
136
+ target: mappedTarget(),
137
+ reason: 'inherited_native_env',
138
+ };
139
+ globalThis[LAUNCH] = launch;
190
140
  }
191
- if (r.signal) {
192
- try {
193
- process.kill(process.pid, r.signal);
194
- } catch {}
141
+ } else {
142
+ const resolved = resolveTarget();
143
+ if (resolved.bin && (await isNativeBinaryOptedOut())) {
144
+ launch = { runtime: 'dist', target: resolved.target, reason: 'opt_out' };
145
+ } else if (resolved.bin) {
146
+ // Internal worker arguments intentionally trampoline too. The packaged
147
+ // native binary sets VERCEL_VC_NATIVE=1 in pkg.js and re-enters this file,
148
+ // where the worker branch below handles the request.
149
+ const r = spawnSync(resolved.bin, process.argv.slice(2), {
150
+ stdio: 'inherit',
151
+ windowsHide: true,
152
+ env: {
153
+ ...process.env,
154
+ VERCEL_VC_NATIVE: '1',
155
+ // Upgrades belong to the vercel package, not its native runtime
156
+ // dependency. Always replace an inherited value with this launcher's
157
+ // own entrypoint.
158
+ VERCEL_CLI_PACKAGE_ENTRYPOINT: fileURLToPath(import.meta.url),
159
+ VERCEL_CLI_PACKAGE_EXECUTABLE: resolved.bin,
160
+ },
161
+ });
162
+ // Never fall back on an exit status: a loader failure (e.g. glibc
163
+ // mismatch) and a command's own failure are indistinguishable, and
164
+ // retrying a command in Node.js could repeat remote mutations.
165
+ if (!(r.error && NATIVE_SPAWN_FALLBACK_CODES.includes(r.error.code))) {
166
+ if (r.error) {
167
+ console.error(r.error.message);
168
+ process.exit(1);
169
+ }
170
+ if (r.signal) {
171
+ try {
172
+ process.kill(process.pid, r.signal);
173
+ } catch {}
174
+ }
175
+ process.exit(r.status ?? 1);
176
+ }
177
+ console.error(
178
+ `! The native Vercel CLI binary could not start (${r.error.code}), so Node.js is running this command.`
179
+ );
180
+ launch = { runtime: 'dist', target: resolved.target, reason: r.error.code };
181
+ } else if (resolved.entry || isCliSupport()) {
182
+ launch = { runtime: 'cli-support' };
183
+ } else {
184
+ launch = {
185
+ runtime: 'dist',
186
+ target: resolved.target,
187
+ reason: 'target_missing',
188
+ };
195
189
  }
196
- process.exit(r.status ?? 1);
190
+ globalThis[LAUNCH] = launch;
191
+ cliSupportEntry = resolved.entry;
197
192
  }
198
193
 
199
194
  if (process.argv[2] === '--internal-build-worker') {
@@ -239,11 +234,26 @@ if (process.argv[2] === '--internal-build-worker') {
239
234
  process.exit(process.exitCode ?? 0);
240
235
  }
241
236
 
242
- // Linux and Windows on anything but x64/arm64 have no native binary, and will
243
- // lose the JS CLI from `vercel` itself in a future release.
237
+ // Read `--global-config`/`-Q` without loading the full CLI arg parser.
238
+ function globalConfigDirFromArgv() {
239
+ const argv = process.argv.slice(2);
240
+ for (let i = 0; i < argv.length; i++) {
241
+ const arg = argv[i];
242
+ if (arg === '--global-config' || arg === '-Q') {
243
+ return argv[i + 1];
244
+ }
245
+ if (arg.startsWith('--global-config=')) {
246
+ return arg.slice('--global-config='.length);
247
+ }
248
+ }
249
+ return undefined;
250
+ }
251
+
252
+ // Linux on anything but x64/arm64 has no native binary, and will lose the JS
253
+ // CLI from `vercel` itself in a future release.
244
254
  async function warnDeprecatedArch() {
245
255
  if (
246
- !['linux', 'win32'].includes(process.platform) ||
256
+ process.platform !== 'linux' ||
247
257
  ['x64', 'arm64'].includes(process.arch) ||
248
258
  process.env.VERCEL_VC_NATIVE === '1'
249
259
  ) {
@@ -278,14 +288,8 @@ async function warnDeprecatedArch() {
278
288
  } catch {}
279
289
  const target = `${process.platform}-${process.arch}`;
280
290
  console.error(
281
- `! Support for ${target} will be removed from the vercel package in a future release. ` +
282
- 'npm i -g @vercel/cli-support will keep working.'
291
+ `! Support for ${target} will be removed from the vercel package in a future release.`
283
292
  );
284
- if (target === 'win32-ia32') {
285
- console.error(
286
- ' If this is a 64-bit PC, install 64-bit Node.js and reinstall vercel instead.'
287
- );
288
- }
289
293
  if (stamp) {
290
294
  try {
291
295
  writeFileSync(stamp, '');
@@ -338,16 +342,23 @@ if (
338
342
  }
339
343
 
340
344
  try {
341
- await importJsCli();
345
+ await (cliSupportEntry
346
+ ? import(pathToFileURL(cliSupportEntry).href)
347
+ : import('./index.js'));
342
348
  } catch (error) {
343
- // Without a native binary the JS CLI is the only option; if its
344
- // dependencies are not installed either, name the missing package.
349
+ // The mapped package is missing and this package's own JS CLI cannot load
350
+ // either, so name the package to install.
345
351
  if (
346
- !nativeBin &&
347
- process.env.VERCEL_VC_NATIVE !== '1' &&
352
+ launch?.reason === 'target_missing' &&
348
353
  error?.code === 'ERR_MODULE_NOT_FOUND'
349
354
  ) {
350
- console.error(`Error: ${nativeUnavailableMessage()}`);
355
+ const pkg =
356
+ launch.target === 'cli-support'
357
+ ? '@vercel/cli-support'
358
+ : `@vercel/vc-native-${launch.target}`;
359
+ console.error(
360
+ `Error: ${pkg} is not installed. Reinstall vercel without omitting optional dependencies (for example, npm i -g vercel@latest).`
361
+ );
351
362
  console.error(error.message);
352
363
  process.exit(1);
353
364
  }
package/dist/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const version = "65.3.1";
1
+ export const version = "65.4.0";
2
2
  export const buildLabel = "";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/cli-support",
3
- "version": "65.3.1",
3
+ "version": "65.4.0",
4
4
  "type": "module",
5
5
  "preferGlobal": true,
6
6
  "license": "Apache-2.0",
@@ -31,51 +31,51 @@
31
31
  "undici": "5.29.0",
32
32
  "uuid": "14.0.1",
33
33
  "zod": "4.1.11",
34
- "@vercel/backends": "22.0.2",
35
- "@vercel/build-utils": "15.0.2",
36
- "@vercel/cli-auth": "0.3.12",
37
- "@vercel/cli-config": "0.3.3",
34
+ "@vercel/backends": "23.0.0",
35
+ "@vercel/cli-auth": "0.3.13",
36
+ "@vercel/cli-config": "0.3.4",
37
+ "@vercel/build-utils": "15.1.0",
38
38
  "@vercel/detect-agent": "1.2.7",
39
- "@vercel/container": "22.0.2",
40
- "@vercel/elysia": "22.0.2",
41
- "@vercel/express": "22.0.2",
42
- "@vercel/fastify": "22.0.2",
43
- "@vercel/go": "25.0.2",
44
- "@vercel/h3": "22.0.2",
45
- "@vercel/hono": "22.0.2",
46
- "@vercel/hydrogen": "23.0.2",
47
- "@vercel/koa": "22.0.2",
48
- "@vercel/nestjs": "22.0.2",
49
- "@vercel/next": "26.0.2",
50
- "@vercel/node": "27.0.2",
51
- "@vercel/python": "28.0.2",
39
+ "@vercel/elysia": "23.0.0",
40
+ "@vercel/fastify": "23.0.0",
41
+ "@vercel/container": "23.0.0",
42
+ "@vercel/express": "23.0.0",
43
+ "@vercel/go": "26.0.0",
44
+ "@vercel/hono": "23.0.0",
45
+ "@vercel/h3": "23.0.0",
46
+ "@vercel/hydrogen": "24.0.0",
47
+ "@vercel/koa": "23.0.0",
48
+ "@vercel/next": "27.0.0",
49
+ "@vercel/nestjs": "23.0.0",
50
+ "@vercel/python": "29.0.0",
52
51
  "@vercel/python-analysis": "0.15.2",
53
- "@vercel/redwood": "24.0.2",
54
- "@vercel/remix-builder": "27.0.2",
55
- "@vercel/ruby": "24.0.2",
56
- "@vercel/rust": "23.0.2",
57
- "@vercel/static-build": "24.0.2"
52
+ "@vercel/node": "28.0.0",
53
+ "@vercel/remix-builder": "28.0.0",
54
+ "@vercel/rust": "24.0.0",
55
+ "@vercel/redwood": "25.0.0",
56
+ "@vercel/static-build": "25.0.0",
57
+ "@vercel/ruby": "25.0.0"
58
58
  },
59
59
  "builders": {
60
- "@vercel/backends": "22.0.2",
61
- "@vercel/container": "22.0.2",
62
- "@vercel/elysia": "22.0.2",
63
- "@vercel/express": "22.0.2",
64
- "@vercel/fastify": "22.0.2",
65
- "@vercel/go": "25.0.2",
66
- "@vercel/h3": "22.0.2",
67
- "@vercel/hono": "22.0.2",
68
- "@vercel/hydrogen": "23.0.2",
69
- "@vercel/koa": "22.0.2",
70
- "@vercel/nestjs": "22.0.2",
71
- "@vercel/next": "26.0.2",
72
- "@vercel/node": "27.0.2",
73
- "@vercel/python": "28.0.2",
74
- "@vercel/redwood": "24.0.2",
75
- "@vercel/remix-builder": "27.0.2",
76
- "@vercel/ruby": "24.0.2",
77
- "@vercel/rust": "23.0.2",
78
- "@vercel/static-build": "24.0.2"
60
+ "@vercel/backends": "23.0.0",
61
+ "@vercel/container": "23.0.0",
62
+ "@vercel/elysia": "23.0.0",
63
+ "@vercel/express": "23.0.0",
64
+ "@vercel/fastify": "23.0.0",
65
+ "@vercel/go": "26.0.0",
66
+ "@vercel/h3": "23.0.0",
67
+ "@vercel/hono": "23.0.0",
68
+ "@vercel/hydrogen": "24.0.0",
69
+ "@vercel/koa": "23.0.0",
70
+ "@vercel/nestjs": "23.0.0",
71
+ "@vercel/next": "27.0.0",
72
+ "@vercel/node": "28.0.0",
73
+ "@vercel/python": "29.0.0",
74
+ "@vercel/redwood": "25.0.0",
75
+ "@vercel/remix-builder": "28.0.0",
76
+ "@vercel/ruby": "25.0.0",
77
+ "@vercel/rust": "24.0.0",
78
+ "@vercel/static-build": "25.0.0"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@bufbuild/protobuf": "2.12.0",
@@ -191,6 +191,7 @@
191
191
  "rimraf": "3.0.2",
192
192
  "semver": "5.7.2",
193
193
  "serve-handler": "6.1.1",
194
+ "signal-exit": "3.0.7",
194
195
  "split2": "4.2.0",
195
196
  "strip-ansi": "6.0.1",
196
197
  "supports-hyperlinks": "3.0.0",
@@ -209,24 +210,23 @@
209
210
  "ws": "8.18.0",
210
211
  "xdg-app-paths": "5.1.0",
211
212
  "yauzl-promise": "2.1.3",
212
- "@vercel-internals/builder-orchestration": "1.0.29",
213
- "@vercel-internals/constants": "1.0.4",
213
+ "@vercel-internals/builder-orchestration": "1.0.30",
214
214
  "@vercel-internals/get-package-json": "1.0.0",
215
- "@vercel-internals/cli-builder-integration": "1.0.32",
215
+ "@vercel-internals/cli-builder-integration": "1.0.33",
216
+ "@vercel-internals/constants": "1.0.4",
216
217
  "@vercel-internals/local-schedules": "0.0.4",
217
- "@vercel-internals/runtimes": "1.2.3",
218
- "@vercel-internals/service-topology": "1.0.27",
219
- "@vercel-internals/types": "3.0.31",
220
- "@vercel/client": "18.9.3",
221
- "@vercel/frameworks": "3.35.0",
218
+ "@vercel-internals/runtimes": "1.2.4",
219
+ "@vercel-internals/service-topology": "1.0.28",
220
+ "@vercel-internals/types": "3.0.32",
221
+ "@vercel/client": "18.10.0",
222
222
  "@vercel/error-utils": "2.2.1",
223
- "@vercel/fs-detectors": "7.11.0",
223
+ "@vercel/frameworks": "3.35.0",
224
224
  "@vercel/routing-utils": "6.6.0",
225
- "@vercel/functions": "3.10.3"
225
+ "@vercel/fs-detectors": "7.11.1",
226
+ "@vercel/functions": "3.10.4"
226
227
  },
227
228
  "os": [
228
229
  "!darwin",
229
- "!linux",
230
- "!win32"
230
+ "!linux"
231
231
  ]
232
232
  }
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{parseTeamRefs,teamRefBody}from"./chunk-LSF7FY6X.js";import{repositoryPermissionsPath}from"./chunk-DFVNL5ML.js";import{emitVcrArgParseError,resolveVcrScope,validateVcrJsonOutput}from"./chunk-7BGKE3JW.js";import{outputError}from"./chunk-RW3X523R.js";import{require_async_sema}from"./chunk-NZ2TFADV.js";import"./chunk-BUJITHGZ.js";import"./chunk-FBYA6LLM.js";import"./chunk-GD7AV7BO.js";import"./chunk-SCV7XEEO.js";import{permissionsAddSubcommand}from"./chunk-3AYYFYZG.js";import{printError}from"./chunk-G4T7VBGN.js";import"./chunk-B4UE4LVE.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-FGFLTLEA.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-DGYHWXD2.js";import"./chunk-IUXSJWL3.js";import"./chunk-KNLGWGUE.js";import"./chunk-ADLBLGT3.js";import"./chunk-BBKEP7RO.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-VOCZ34ON.js";import"./chunk-F53OKXYI.js";import{getFlagsSpecification}from"./chunk-AWMQGOS2.js";import"./chunk-FUX6LKNP.js";import"./chunk-OPORM35X.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-6VH56CX2.js";import{packageName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-XP3FT56R.js";import"./chunk-BLUPZPAS.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_async_sema=__toESM(require_async_sema(),1);var USAGE="vcr permissions <repository> add <team>[,<team>...]";async function add(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(permissionsAddSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,USAGE),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let repository=parsedArgs.args[0],teamRefs=parseTeamRefs(parsedArgs.args.slice(2)),project=parsedArgs.flags["--project"];if(telemetry.trackCliOptionProject(project),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),teamRefs.length===0)return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message:`Missing team. Example: ${packageName} vcr permissions ${repository} add team_1a2b3c4d`,next:[{command:buildCommandWithGlobalFlags(client.argv,USAGE),when:"Replace <team> with a team id or slug (comma-separate multiple teams)"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS",`Usage: \`vercel ${USAGE}\``);let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;let path=repositoryPermissionsPath(scope,repository),added=[],failed=[];output_manager_default.spinner(`Sharing ${repository} with ${teamRefs.length===1?teamRefs[0]:`${teamRefs.length} teams`}...`);let sema=new import_async_sema.default(10),results;try{results=await Promise.all(teamRefs.map(async team=>{await sema.acquire();try{let result=await client.fetch(path,{method:"POST",body:teamRefBody(team)});return{ok:!0,team,permission:result.permission}}catch(err){if(!isAPIError(err))throw err;let message=err.serverMessage||`API error (${err.status}).`;return{ok:!1,team,failure:{team,code:err.code||"API_ERROR",message}}}finally{sema.release()}}))}finally{output_manager_default.stopSpinner()}for(let result of results)result.ok?(added.push(result.permission),fr.jsonOutput||output_manager_default.success(`Shared ${repository} with ${result.permission?.teamSlug??result.team}`)):(failed.push(result.failure),fr.jsonOutput||output_manager_default.error(`Failed to share ${repository} with ${result.team}: ${result.failure.message}`));return failed.length>0&&outputAgentError(client,{status:"error",reason:AGENT_REASON.API_ERROR,message:`Failed to share ${repository} with ${failed.map(f=>`${f.team} (${f.message})`).join(", ")}`},1),fr.jsonOutput&&client.stdout.write(`${JSON.stringify({permissions:added,failed},null,2)}
8
- `),failed.length>0?1:0}export{add as default};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{printRuleMutationReceipt}from"./chunk-SXOSF4O6.js";import"./chunk-3XW7N4W3.js";import{resolveRulesProject,resolveRulesTeam}from"./chunk-E6CO6TUM.js";import"./chunk-2WYYGGEO.js";import{emitRulesArgParseError,getBodyType,handleRulesApiError,outputRulesError,readRuleBody,rulesCollectionPath}from"./chunk-COM5YCHF.js";import"./chunk-GHAY4PSD.js";import"./chunk-RW3X523R.js";import"./chunk-ID663OJ7.js";import"./chunk-HRR57QNP.js";import"./chunk-GZNDA6SV.js";import"./chunk-PFD7LETF.js";import{monitorsAddSubcommand}from"./chunk-QZX7VG2V.js";import"./chunk-773GOZIR.js";import{printError}from"./chunk-G4T7VBGN.js";import"./chunk-67GZ5REA.js";import"./chunk-BS32OUOC.js";import"./chunk-B4UE4LVE.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-FGFLTLEA.js";import"./chunk-DGYHWXD2.js";import"./chunk-IUXSJWL3.js";import"./chunk-KNLGWGUE.js";import"./chunk-ADLBLGT3.js";import"./chunk-BBKEP7RO.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-VOCZ34ON.js";import"./chunk-F53OKXYI.js";import{getFlagsSpecification,validateJsonOutput}from"./chunk-AWMQGOS2.js";import"./chunk-FUX6LKNP.js";import"./chunk-OPORM35X.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-6VH56CX2.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-XP3FT56R.js";import"./chunk-BLUPZPAS.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";function applyScopeFlag(client,body,type,scope,flags,jsonOutput){if(Object.hasOwn(body,"ruleScope"))return flags["--project"]||flags["--all"]?outputRulesError(client,jsonOutput,"SCOPE_CONFLICT","Specify monitor scope either in the body or with --project/--all, not both."):void 0;if(flags["--project"]){body.ruleScope=type==="custom"?{type:"project",projectId:scope.projectId}:{type:"include",projectIds:[scope.projectId]};return}if(flags["--all"]){if(type==="custom")return outputRulesError(client,jsonOutput,"INVALID_SCOPE","Custom monitors must target one project. Use --project <name-or-id>.");body.ruleScope={type:"all"};return}return outputRulesError(client,jsonOutput,"MISSING_SCOPE","Missing monitor scope. Add ruleScope to the body, or pass --project or --all.")}async function resolveCreateScope(client,flags,jsonOutput){return flags["--project"]&&flags["--all"]?outputRulesError(client,jsonOutput,"MUTUAL_EXCLUSIVITY","Cannot specify both --all and --project. Use one or the other."):flags["--project"]?resolveRulesProject(client,flags["--project"],jsonOutput,"monitors add"):resolveRulesTeam(client,jsonOutput)}async function add(client,argv,api){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(monitorsAddSubcommand.options))}catch(error){return emitRulesArgParseError(client,error,"monitors add --project <name-or-id> --body <path>"),printError(error),2}let flags=parsedArgs.flags,format=validateJsonOutput(flags);if(!format.valid)return outputRulesError(client,!1,"INVALID_ARGUMENTS",format.error);if(!flags["--body"])return outputRulesError(client,format.jsonOutput,"MISSING_ARGUMENTS","Missing required flag: --body <PATH>.");let body=readRuleBody(client,flags["--body"],format.jsonOutput);if(typeof body=="number")return body;let type=getBodyType(body);if(!type)return outputRulesError(client,format.jsonOutput,"INVALID_RULE_TYPE","Create body must set a supported monitor type.");if(Object.hasOwn(body,"ruleScope")&&(flags["--project"]||flags["--all"]))return outputRulesError(client,format.jsonOutput,"SCOPE_CONFLICT","Specify monitor scope either in the body or with --project/--all, not both.");if(type==="custom"&&flags["--all"])return outputRulesError(client,format.jsonOutput,"INVALID_SCOPE","Custom monitors must target one project. Use --project <name-or-id>.");let scope=await resolveCreateScope(client,flags,format.jsonOutput);if(typeof scope=="number")return scope;let scopeError=applyScopeFlag(client,body,type,scope,flags,format.jsonOutput);if(scopeError!==void 0)return scopeError;output_manager_default.spinner("Creating monitor\u2026");try{let response=await client.fetch(rulesCollectionPath(api,scope.teamId),{method:"POST",body});return format.jsonOutput?client.stdout.write(`${JSON.stringify(response,null,2)}
8
- `):printRuleMutationReceipt("Created",response[api.itemKey],client.argv),0}catch(error){if(isAPIError(error))return handleRulesApiError(client,error,format.jsonOutput);throw error}finally{output_manager_default.stopSpinner()}}export{add as default};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{emitVcrArgParseError,handleVcrApiError,resolveVcrScope,validateVcrJsonOutput}from"./chunk-7BGKE3JW.js";import{outputError}from"./chunk-RW3X523R.js";import"./chunk-BUJITHGZ.js";import"./chunk-FBYA6LLM.js";import"./chunk-GD7AV7BO.js";import"./chunk-SCV7XEEO.js";import{addSubcommand}from"./chunk-ABZEMNDR.js";import"./chunk-3AYYFYZG.js";import"./chunk-76KGQU2G.js";import"./chunk-UNEGQPD3.js";import{printError}from"./chunk-G4T7VBGN.js";import"./chunk-B4UE4LVE.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-FGFLTLEA.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-DGYHWXD2.js";import"./chunk-IUXSJWL3.js";import"./chunk-KNLGWGUE.js";import"./chunk-ADLBLGT3.js";import"./chunk-BBKEP7RO.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-VOCZ34ON.js";import"./chunk-F53OKXYI.js";import{getFlagsSpecification}from"./chunk-AWMQGOS2.js";import"./chunk-FUX6LKNP.js";import"./chunk-OPORM35X.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-6VH56CX2.js";import{packageName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-XP3FT56R.js";import"./chunk-BLUPZPAS.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";async function add(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(addSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr create <name> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let name=parsedArgs.args[0],project=parsedArgs.flags["--project"];if(telemetry.trackCliOptionProject(project),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),!name)return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message:`Missing repository name. Example: ${packageName} vcr create <name>`,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr create <name>"),when:"Replace <name> with the repository name to create"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS","Usage: `vercel vcr create <name>`");let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;let path=`/v1/vcr/repository?teamId=${encodeURIComponent(scope.teamId)}`;output_manager_default.spinner("Creating repository...");try{let created=await client.fetch(path,{method:"POST",body:{projectId:scope.projectId,name}});return fr.jsonOutput?client.stdout.write(`${JSON.stringify(created,null,2)}
8
- `):output_manager_default.success(`Created repository ${created.repository?.name??name}`),0}catch(err){if(isAPIError(err))return handleVcrApiError(client,err,fr.jsonOutput,{retry:{command:buildCommandWithGlobalFlags(client.argv,"vcr ls"),when:"List existing repositories (a name conflict means it already exists)"}});throw err}finally{output_manager_default.stopSpinner()}}export{add as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{DEFAULT_TAG,buildRepositoryReference,parseNameArg,validateImageParts}from"./chunk-HEGJZJO7.js";import{VCR_ENGINES,emitVcrArgParseError,isBuildxAvailable,isEngineInstalled,pushCompressionArgs,reportEngineCommandFailure,reportEnginePushFailure,resolveRegistry,resolveVcrScope,runEngine,splitPassthrough,validateVcrChoice}from"./chunk-7BGKE3JW.js";import{outputError}from"./chunk-RW3X523R.js";import"./chunk-BUJITHGZ.js";import"./chunk-FBYA6LLM.js";import"./chunk-GD7AV7BO.js";import"./chunk-SCV7XEEO.js";import{buildSubcommand}from"./chunk-ABZEMNDR.js";import"./chunk-3AYYFYZG.js";import"./chunk-76KGQU2G.js";import"./chunk-UNEGQPD3.js";import{printError}from"./chunk-G4T7VBGN.js";import"./chunk-B4UE4LVE.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-FGFLTLEA.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-DGYHWXD2.js";import"./chunk-IUXSJWL3.js";import"./chunk-KNLGWGUE.js";import"./chunk-ADLBLGT3.js";import"./chunk-BBKEP7RO.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-VOCZ34ON.js";import"./chunk-F53OKXYI.js";import{getFlagsSpecification}from"./chunk-AWMQGOS2.js";import"./chunk-FUX6LKNP.js";import"./chunk-OPORM35X.js";import"./chunk-4SAVH3H7.js";import"./chunk-6VH56CX2.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-XP3FT56R.js";import"./chunk-BLUPZPAS.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var DEFAULT_PLATFORM="linux/amd64";async function build(client,telemetry){let{own,passthrough}=splitPassthrough(client.argv),parsedArgs;try{parsedArgs=parseArguments(own,getFlagsSpecification(buildSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr build <engine> [path] [name[:tag]]"),printError(err),2}let[engineArg,pathArg,nameArg]=parsedArgs.args.slice(2),project=parsedArgs.flags["--project"],platform=parsedArgs.flags["--platform"],push=!!parsedArgs.flags["--push"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliArgumentPath(pathArg),telemetry.trackCliArgumentName(nameArg),telemetry.trackCliOptionProject(project),telemetry.trackCliOptionPlatform(platform),telemetry.trackCliFlagPush(push),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr build docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,!1,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,!1);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,!1,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:!1});if(typeof scope=="number")return scope;let parsed=parseNameArg(nameArg,scope.projectName);if("error"in parsed)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:parsed.error},2),outputError(client,!1,"INVALID_ARGUMENTS",parsed.error);let validationError=validateImageParts(parsed);if(validationError)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:validationError},2),outputError(client,!1,"INVALID_ARGUMENTS",validationError);let ref=`${buildRepositoryReference({registry:resolveRegistry(),teamSlug:scope.teamSlug,projectName:scope.projectName,repository:parsed.repository})}:${parsed.tag??DEFAULT_TAG}`,contextPath=pathArg??".",buildPlatform=platform??DEFAULT_PLATFORM;if(push&&engine==="docker"&&await isBuildxAvailable()){let outputSpec=`type=image,name=${ref},push=true,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true`,engineArgs2=["buildx","build","--platform",buildPlatform,"--output",outputSpec,...passthrough,contextPath];output_manager_default.log(`Running: ${engine} ${engineArgs2.join(" ")}`);let result2=await runEngine(engine,engineArgs2,{cwd:client.cwd,captureStderr:!0});return result2.exitCode!==0?reportEnginePushFailure(client,engine,"buildx build",result2):(output_manager_default.success(`Built and pushed ${ref} (zstd compression)`),0)}push&&engine==="docker"&&output_manager_default.warn("Docker Buildx is not available; building and pushing without zstd compression. Install Buildx for smaller, faster image pushes.");let engineArgs=["build","--platform",buildPlatform,"--tag",ref,...passthrough,contextPath];output_manager_default.log(`Running: ${engine} ${engineArgs.join(" ")}`);let result=await runEngine(engine,engineArgs,{cwd:client.cwd});if(result.exitCode!==0)return reportEngineCommandFailure(client,engine,"build",result);if(!push)return output_manager_default.success(`Built ${ref}`),output_manager_default.log(`Push it with \`${buildCommandWithGlobalFlags(client.argv,`vcr push ${engine}${nameArg?` ${nameArg}`:""}`)}\`.`),0;let pushArgs=["push",...pushCompressionArgs(engine),ref];output_manager_default.log(`Running: ${engine} ${pushArgs.join(" ")}`);let pushResult=await runEngine(engine,pushArgs,{cwd:client.cwd,captureStderr:!0});if(pushResult.exitCode!==0)return reportEnginePushFailure(client,engine,"push",pushResult);let compressed=engine!=="docker";return output_manager_default.success(`Built and pushed ${ref}${compressed?" (zstd compression)":""}`),0}export{build as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{formatOption,jsonOption,limitOption,projectOption,yesOption}from"./chunk-AWMQGOS2.js";import{packageName}from"./chunk-JESNVRVR.js";var PERMISSIONS_ACTIONS={ls:["ls","list"],add:["add"],rm:["rm","remove"],clear:["clear"]},projectScopeOption={...projectOption,shorthand:"p",description:"Project name or ID (default: linked project)."},nextOption={name:"next",shorthand:null,type:String,deprecated:!1,description:"Continue from a previous response",argument:"CURSOR"},cursorOption={name:"cursor",shorthand:"c",type:String,deprecated:!0,description:"Cursor from a previous page to continue listing from",argument:"STRING"},permissionsLsSubcommand={name:"ls",aliases:["list"],description:"List teams with access to a repository",arguments:[],options:[projectScopeOption,limitOption,nextOption,cursorOption,formatOption,jsonOption],examples:[{name:"List teams with access to a repository",value:`${packageName} vcr permissions my-app ls`},{name:"List teams with access as JSON",value:`${packageName} vcr permissions my-app ls --json`}]},permissionsAddSubcommand={name:"add",aliases:[],description:"Give one or more teams access to pull images from a repository",arguments:[{name:"team",required:!0,multiple:!0}],options:[projectScopeOption,formatOption,jsonOption],examples:[{name:"Share a repository with a team by id",value:`${packageName} vcr permissions my-app add team_1a2b3c4d`},{name:"Share a repository with a team by slug",value:`${packageName} vcr permissions my-app add my-team`},{name:"Share a repository with multiple teams",value:`${packageName} vcr permissions my-app add team_1a2b3c4d,other-team`}]},permissionsRmSubcommand={name:"remove",aliases:["rm"],description:"Remove one or more teams' access to a repository",arguments:[{name:"team",required:!0,multiple:!0}],options:[projectScopeOption,formatOption,jsonOption],examples:[{name:"Remove a team's access by id",value:`${packageName} vcr permissions my-app remove team_1a2b3c4d`},{name:"Remove multiple teams' access",value:`${packageName} vcr permissions my-app remove team_1a2b3c4d,other-team`}]},permissionsClearSubcommand={name:"clear",aliases:[],description:"Remove access to a repository for every team",arguments:[],options:[projectScopeOption,yesOption,formatOption,jsonOption],examples:[{name:"Clear all repository permissions",value:`${packageName} vcr permissions my-app clear`},{name:"Clear all repository permissions without the confirmation prompt",value:`${packageName} vcr permissions my-app clear --yes`}]},permissionsAggregateCommand={name:"permissions",aliases:["permission"],argumentsBeforeSubcommand:!0,description:"Manage which teams can pull images from a container registry repository",arguments:[{name:"repository",required:!0}],subcommands:[permissionsLsSubcommand,permissionsAddSubcommand,permissionsRmSubcommand,permissionsClearSubcommand],options:[],examples:[{name:"List teams with access to a repository",value:`${packageName} vcr permissions my-app ls`},{name:"Share a repository with a team",value:`${packageName} vcr permissions my-app add team_1a2b3c4d`},{name:"Remove a team's access to a repository",value:`${packageName} vcr permissions my-app remove team_1a2b3c4d`},{name:"Clear all repository permissions",value:`${packageName} vcr permissions my-app clear`}]};export{PERMISSIONS_ACTIONS,permissionsLsSubcommand,permissionsAddSubcommand,permissionsRmSubcommand,permissionsClearSubcommand,permissionsAggregateCommand};