@vercel/cli-support 65.10.0-snapshot-c80a43d75dc7 → 65.10.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 (247) hide show
  1. package/dist/chunks/{add-RFPJCD35.js → add-4MTUAI2X.js} +1 -1
  2. package/dist/chunks/{add-A3SN7KWS.js → add-JYLWBVVQ.js} +1 -1
  3. package/dist/chunks/{add-TOKTANDW.js → add-T5ERJ62Z.js} +1 -1
  4. package/dist/chunks/{build-25I6XOV7.js → build-OGWTTFLG.js} +1 -1
  5. package/dist/chunks/{chunk-SHY7P3C6.js → chunk-36XHIIUT.js} +1 -1
  6. package/dist/chunks/{chunk-3AX7ZZJ7.js → chunk-3PKL2PTF.js} +1 -1
  7. package/dist/chunks/{chunk-2HLYY3KF.js → chunk-3QFBVAHL.js} +1 -1
  8. package/dist/chunks/chunk-3QYXC4PH.js +11 -0
  9. package/dist/chunks/{chunk-BT5C6MCY.js → chunk-42J2KCDF.js} +1 -1
  10. package/dist/chunks/{chunk-NLKM5LR5.js → chunk-4E6BGQWR.js} +1 -1
  11. package/dist/chunks/{chunk-FAVZ6WVS.js → chunk-4U6ACPA4.js} +1 -1
  12. package/dist/chunks/{chunk-NAEY6HG5.js → chunk-4WXVKR43.js} +1 -1
  13. package/dist/chunks/{chunk-MKYFAYCD.js → chunk-52X4YVSG.js} +1 -1
  14. package/dist/chunks/{chunk-3WYSEF57.js → chunk-5IZ33FNL.js} +1 -1
  15. package/dist/chunks/{chunk-GPISCZ2P.js → chunk-5MPZSRYG.js} +1 -1
  16. package/dist/chunks/{chunk-AX3V7N44.js → chunk-5RSSGN2Q.js} +1 -1
  17. package/dist/chunks/{chunk-7ULLVH2G.js → chunk-5RYQH3XW.js} +1 -1
  18. package/dist/chunks/{chunk-KNAOHPOI.js → chunk-6NUH6ZPE.js} +6 -6
  19. package/dist/chunks/{chunk-EJ34DLV4.js → chunk-6RMW63GB.js} +1 -1
  20. package/dist/chunks/{chunk-BB5UMZMF.js → chunk-6UMVJ7RL.js} +1 -1
  21. package/dist/chunks/{chunk-HR462OEG.js → chunk-6YAYCEDT.js} +2 -2
  22. package/dist/chunks/{chunk-VYRMHE34.js → chunk-75DUL7VI.js} +1 -1
  23. package/dist/chunks/{chunk-TNNEKGGF.js → chunk-7LSH3MEB.js} +1 -1
  24. package/dist/chunks/{chunk-LQAQD5LG.js → chunk-7TR6H6NE.js} +3 -3
  25. package/dist/chunks/chunk-7VGBGUX7.js +7 -0
  26. package/dist/chunks/chunk-A3C67PNC.js +7 -0
  27. package/dist/chunks/{chunk-CKTLP5GX.js → chunk-AMPJ6RWT.js} +1 -1
  28. package/dist/chunks/{chunk-IZ4GFKGR.js → chunk-AO6AMYBF.js} +1 -1
  29. package/dist/chunks/chunk-AUIV7YJO.js +11 -0
  30. package/dist/chunks/chunk-AY523IYR.js +7 -0
  31. package/dist/chunks/{chunk-DBPN2VGJ.js → chunk-B4XGTAFO.js} +1 -1
  32. package/dist/chunks/{chunk-DRLGZXAL.js → chunk-BIRSJSAO.js} +1 -1
  33. package/dist/chunks/{chunk-WHUZRBYL.js → chunk-BK3TNLWO.js} +5 -5
  34. package/dist/chunks/chunk-BZIC36KP.js +7 -0
  35. package/dist/chunks/chunk-CBMWPDOL.js +8 -0
  36. package/dist/chunks/{chunk-G2BNLRPU.js → chunk-CHIYT3V4.js} +1 -1
  37. package/dist/chunks/chunk-CJ6XPDSS.js +11 -0
  38. package/dist/chunks/{chunk-T7HE23VK.js → chunk-CU3LNJZV.js} +1 -1
  39. package/dist/chunks/chunk-DIHB5BUY.js +8 -0
  40. package/dist/chunks/{chunk-TZ6MSTOI.js → chunk-DNLE3KPC.js} +1 -1
  41. package/dist/chunks/{chunk-R3D4M5RE.js → chunk-DQASZDQT.js} +1 -1
  42. package/dist/chunks/{chunk-TNUQME3L.js → chunk-DQNP7OQ5.js} +1 -1
  43. package/dist/chunks/{chunk-NGHFFOD2.js → chunk-DUCCC22H.js} +1 -1
  44. package/dist/chunks/{chunk-QCIIUQV3.js → chunk-E7WULWMX.js} +1 -1
  45. package/dist/chunks/{chunk-CZOD25BC.js → chunk-ECFLIVEE.js} +1 -1
  46. package/dist/chunks/{chunk-FI5O4WHD.js → chunk-ECGY67NB.js} +1 -1
  47. package/dist/chunks/{chunk-S5JBQCBA.js → chunk-EJN55YDV.js} +1 -1
  48. package/dist/chunks/{chunk-3PXE5BLH.js → chunk-ER7L7HYA.js} +1 -1
  49. package/dist/chunks/{chunk-7UFI6OYF.js → chunk-FOWAVQOH.js} +1 -1
  50. package/dist/chunks/{chunk-4JWAXIIN.js → chunk-FPREO4VS.js} +1 -1
  51. package/dist/chunks/{chunk-PXQAWH7E.js → chunk-FSJFWVUY.js} +1 -1
  52. package/dist/chunks/{chunk-Y57DK3ZN.js → chunk-FXHB7TTL.js} +1 -1
  53. package/dist/chunks/chunk-FYE7ILRR.js +7 -0
  54. package/dist/chunks/{chunk-V32V4SXB.js → chunk-GQ4CQDIL.js} +1 -1
  55. package/dist/chunks/{chunk-W634OFUG.js → chunk-GZLYNPNU.js} +6 -5
  56. package/dist/chunks/chunk-HTPNGLPH.js +7 -0
  57. package/dist/chunks/{chunk-W5GHMAHP.js → chunk-IHTWZEQW.js} +1 -1
  58. package/dist/chunks/{chunk-4LGAV2WN.js → chunk-IIGNDMLO.js} +1 -1
  59. package/dist/chunks/{chunk-F2LNGJOZ.js → chunk-JA6IGJ67.js} +1 -1
  60. package/dist/chunks/chunk-JBU72NEQ.js +7 -0
  61. package/dist/chunks/{chunk-U6XJYQJS.js → chunk-JLNF2QTR.js} +1 -1
  62. package/dist/chunks/{chunk-SODZSOOL.js → chunk-K5KVSA2A.js} +1 -1
  63. package/dist/chunks/{chunk-VD2FK6OF.js → chunk-K7ARJYAG.js} +1 -1
  64. package/dist/chunks/{chunk-5TI3ZXW3.js → chunk-KBVYN635.js} +1 -1
  65. package/dist/chunks/chunk-KKE55LTK.js +7 -0
  66. package/dist/chunks/{chunk-G5T6UQAL.js → chunk-KV3QXTRZ.js} +1 -1
  67. package/dist/chunks/{chunk-3F5BOG4A.js → chunk-KZLRIAAT.js} +1 -1
  68. package/dist/chunks/{chunk-L4QQTYUI.js → chunk-LE72YLCC.js} +2 -2
  69. package/dist/chunks/{chunk-HJ45TAM4.js → chunk-LIEWXPUC.js} +1 -1
  70. package/dist/chunks/{chunk-ANCWFEOM.js → chunk-M3R7F2N4.js} +1 -1
  71. package/dist/chunks/{chunk-MUNGQJGO.js → chunk-M3Z6NSC2.js} +1 -1
  72. package/dist/chunks/{chunk-VPUYTI5E.js → chunk-MBXLL2HF.js} +1 -1
  73. package/dist/chunks/{chunk-C24IKNZN.js → chunk-MKTZDEOJ.js} +1 -1
  74. package/dist/chunks/{chunk-VZGTL3YC.js → chunk-N5AN4JZL.js} +1 -1
  75. package/dist/chunks/{chunk-EJZNJN4N.js → chunk-N65H4JMJ.js} +1 -1
  76. package/dist/chunks/{chunk-LC4BSDDG.js → chunk-NAN5IE3B.js} +1 -1
  77. package/dist/chunks/{chunk-TD7AL545.js → chunk-NE6PKR2J.js} +1 -1
  78. package/dist/chunks/{chunk-2EFBGKRC.js → chunk-NLTZGQB2.js} +1 -1
  79. package/dist/chunks/{chunk-TL4ZLZ2Q.js → chunk-NMIZSQDN.js} +1 -1
  80. package/dist/chunks/{chunk-22UXDTCE.js → chunk-NZRBJB6T.js} +1 -1
  81. package/dist/chunks/chunk-OII46FDN.js +12 -0
  82. package/dist/chunks/{chunk-YOWMZJPA.js → chunk-OJWI6QJ3.js} +1 -1
  83. package/dist/chunks/{chunk-GKALP6QD.js → chunk-OYIDWI5Y.js} +1 -1
  84. package/dist/chunks/{chunk-QVMU7ZKQ.js → chunk-P24YBQ6H.js} +1 -1
  85. package/dist/chunks/{chunk-2JCJP43W.js → chunk-P6J22UJQ.js} +1 -1
  86. package/dist/chunks/{chunk-E7DYXF6G.js → chunk-PFZCGMJ7.js} +1 -1
  87. package/dist/chunks/{chunk-64UCX5JM.js → chunk-PKNEWN4W.js} +1 -1
  88. package/dist/chunks/{chunk-Q4GX2UTG.js → chunk-PKZK23PR.js} +1 -1
  89. package/dist/chunks/{chunk-56UH6NQ3.js → chunk-PL6IOUKW.js} +1 -1
  90. package/dist/chunks/{chunk-MBL7MWP5.js → chunk-Q2JNATRP.js} +1 -1
  91. package/dist/chunks/{chunk-KMPDQE4Q.js → chunk-Q46Q4Y4R.js} +1 -1
  92. package/dist/chunks/{chunk-NAJCRBQB.js → chunk-QXL353OB.js} +1 -1
  93. package/dist/chunks/{chunk-VR5ROBAO.js → chunk-RI6DJAFI.js} +1 -1
  94. package/dist/chunks/{chunk-2DHDKWYN.js → chunk-RIJ45N7C.js} +1 -1
  95. package/dist/chunks/{chunk-6AJWRPTY.js → chunk-RUBMVRT6.js} +1 -1
  96. package/dist/chunks/{chunk-6RUAAORO.js → chunk-S535FZTA.js} +1 -1
  97. package/dist/chunks/{chunk-5I7CC45F.js → chunk-SBEWZ65N.js} +1 -1
  98. package/dist/chunks/{chunk-GJCVOEC2.js → chunk-SDYCW5JM.js} +1 -1
  99. package/dist/chunks/chunk-SNGM6NSO.js +7 -0
  100. package/dist/chunks/chunk-SNNJRKD6.js +10 -0
  101. package/dist/chunks/{chunk-DX2OHM56.js → chunk-SR7BZA6N.js} +1 -1
  102. package/dist/chunks/{chunk-QXYCICNB.js → chunk-STKZTUGE.js} +1 -1
  103. package/dist/chunks/{chunk-XGOELSYA.js → chunk-SXYA7JSX.js} +1 -1
  104. package/dist/chunks/chunk-TILI4QBL.js +11 -0
  105. package/dist/chunks/{chunk-PMEYNJU2.js → chunk-TZE4CS4K.js} +1 -1
  106. package/dist/chunks/{chunk-BZV2S4H6.js → chunk-U2TQFAO3.js} +1 -1
  107. package/dist/chunks/chunk-U2ZNF6HN.js +8 -0
  108. package/dist/chunks/chunk-UIMJNASP.js +7 -0
  109. package/dist/chunks/{chunk-FQVIWQ6M.js → chunk-UQNBUXQA.js} +1 -1
  110. package/dist/chunks/{chunk-C4N4LKPM.js → chunk-US7YJ2RQ.js} +1 -1
  111. package/dist/chunks/{chunk-JVNIDSP5.js → chunk-V5TOMLK4.js} +1 -1
  112. package/dist/chunks/{chunk-L6CZL2IQ.js → chunk-VQSSVB6V.js} +1 -1
  113. package/dist/chunks/chunk-VTITZEPW.js +9 -0
  114. package/dist/chunks/chunk-WFS3XBAA.js +8 -0
  115. package/dist/chunks/{chunk-XEXOSJIU.js → chunk-WKIDCYKL.js} +1 -1
  116. package/dist/chunks/{chunk-UVHKXCR5.js → chunk-WKSXBH7X.js} +1 -2
  117. package/dist/chunks/{chunk-77LSSWXL.js → chunk-WTFD4MDT.js} +1 -1
  118. package/dist/chunks/{chunk-YO6SJCZP.js → chunk-WYGOYE6C.js} +1 -1
  119. package/dist/chunks/{chunk-UNASHUWQ.js → chunk-XFUUALZS.js} +1 -1
  120. package/dist/chunks/{chunk-SXEOJSZQ.js → chunk-XS3MNHFR.js} +1 -1
  121. package/dist/chunks/{chunk-ZGQNI22M.js → chunk-YGYUPPAL.js} +2 -2
  122. package/dist/chunks/{chunk-Q25FOMOX.js → chunk-YKLTNKQJ.js} +1 -1
  123. package/dist/chunks/{chunk-WFCGAYP5.js → chunk-YUHKH4TK.js} +1 -1
  124. package/dist/chunks/{chunk-D4TD2KWH.js → chunk-YZKARZ2B.js} +1 -1
  125. package/dist/chunks/chunk-ZCUUCYID.js +13 -0
  126. package/dist/chunks/{chunk-FPYHB76H.js → chunk-ZEUREQ4E.js} +1 -1
  127. package/dist/chunks/chunk-ZIC7VWFC.js +14 -0
  128. package/dist/chunks/{chunk-QGZZL6YY.js → chunk-ZPJHONCZ.js} +1 -1
  129. package/dist/chunks/{chunk-R2P4PNRQ.js → chunk-ZQXXESKG.js} +1 -1
  130. package/dist/chunks/{clear-B764MEAM.js → clear-Z5OO6URI.js} +1 -1
  131. package/dist/chunks/cli-embedded-Y74S252S.js +66 -0
  132. package/dist/chunks/{compile-vercel-config-EWCB7SIC.js → compile-vercel-config-ZKUTSDWV.js} +1 -1
  133. package/dist/chunks/{config-D4WY2HG4.js → config-AUTTHXQO.js} +1 -1
  134. package/dist/chunks/config-RJ7PLFQD.js +7 -0
  135. package/dist/chunks/{connect-git-provider-AWEOEEOO.js → connect-git-provider-YIX5ZOU6.js} +1 -1
  136. package/dist/chunks/{delete-W3GMFAKA.js → delete-QQOC63HV.js} +1 -1
  137. package/dist/chunks/{delete-SKYFHUWD.js → delete-WIGSOZR3.js} +1 -1
  138. package/dist/chunks/{detect-services-3TRRRLES.js → detect-services-J4LGLAHC.js} +1 -1
  139. package/dist/chunks/{disable-EBPZ2LYC.js → disable-L54VGY5A.js} +1 -1
  140. package/dist/chunks/{discard-SMVPENSP.js → discard-Q5UPTZR2.js} +1 -1
  141. package/dist/chunks/{edit-CGTNGJKY.js → edit-FRGMYBW3.js} +1 -1
  142. package/dist/chunks/{edit-A3M3GBGP.js → edit-QEDNQ33T.js} +1 -1
  143. package/dist/chunks/{enable-6A5THWDP.js → enable-TGQZWSBG.js} +1 -1
  144. package/dist/chunks/engine-DkdkXQEy-FDYYIXY7.js +17 -0
  145. package/dist/chunks/{exec-UV73J2ZB.js → exec-H3X7U4P3.js} +1 -1
  146. package/dist/chunks/{export-R5IUWAW5.js → export-YYQ2J5AT.js} +1 -1
  147. package/dist/chunks/{future-CPJUUZTU.js → future-RYEYLPCG.js} +1 -1
  148. package/dist/chunks/{generate-cert-for-deploy-Z3HCAR5H.js → generate-cert-for-deploy-Y4KDIFF2.js} +1 -1
  149. package/dist/chunks/image-PDPRURMH.js +7 -0
  150. package/dist/chunks/{import-builders-GPJQAMXT.js → import-builders-H54QCMQ4.js} +1 -1
  151. package/dist/chunks/{inspect-WC2C4MDP.js → inspect-6IBPIBIJ.js} +1 -1
  152. package/dist/chunks/{inspect-WWOHWQKS.js → inspect-AHHXHIIP.js} +1 -1
  153. package/dist/chunks/{inspect-BO2ACFEG.js → inspect-Q7FYDFL7.js} +1 -1
  154. package/dist/chunks/{inspect-6FEL5DYV.js → inspect-RPCDGIP3.js} +1 -1
  155. package/dist/chunks/{inspect-TEPB7KVC.js → inspect-SFM3NWDF.js} +1 -1
  156. package/dist/chunks/{list-C5GUZ35P.js → list-7WWUYCE6.js} +1 -1
  157. package/dist/chunks/{list-EZWZSVM4.js → list-GSVERG4S.js} +1 -1
  158. package/dist/chunks/{list-4KSJEP23.js → list-NXZXKKAR.js} +1 -1
  159. package/dist/chunks/{login-ZNCCVA4H.js → login-HEHHQO3F.js} +1 -1
  160. package/dist/chunks/{login-PDZT4PQR.js → login-XKLPSZNN.js} +1 -1
  161. package/dist/chunks/{logs-YKQMUTMG.js → logs-NJ46ZSNZ.js} +1 -1
  162. package/dist/chunks/{ls-3HUS6KS6.js → ls-5SKRXNSI.js} +1 -1
  163. package/dist/chunks/{ls-WX4BJRDV.js → ls-FOFJU2JJ.js} +1 -1
  164. package/dist/chunks/{ls-TASQJDLF.js → ls-ITWXAWSZ.js} +1 -1
  165. package/dist/chunks/{ls-LYVPEIIT.js → ls-LCUOBWY2.js} +1 -1
  166. package/dist/chunks/{ls-KQJYKADC.js → ls-MWGIT2YH.js} +1 -1
  167. package/dist/chunks/{ls-RBPRE6BF.js → ls-OY5YTZGN.js} +1 -1
  168. package/dist/chunks/{ls-ZP7OBTTV.js → ls-TZN53EJL.js} +1 -1
  169. package/dist/chunks/{mutate-5N6DMBYS.js → mutate-ZYXVL22A.js} +1 -1
  170. package/dist/chunks/{native-self-update-7OAY4AVR.js → native-self-update-DEVBYOH2.js} +1 -1
  171. package/dist/chunks/{notifications-OVFMQLHL.js → notifications-XAPB2F2T.js} +1 -1
  172. package/dist/chunks/{open-DOBOKUEK.js → open-WPRHI6ND.js} +1 -1
  173. package/dist/chunks/{openapi-YAZA3237.js → openapi-UUFKDKGC.js} +1 -1
  174. package/dist/chunks/{permissions-PHCOVDWK.js → permissions-FU5OET67.js} +1 -1
  175. package/dist/chunks/{plugin-offer-M7KJSJU6.js → plugin-offer-E5JOW442.js} +1 -1
  176. package/dist/chunks/{prompt-missing-credentials-RTNCHH6Y.js → prompt-missing-credentials-ZZVTEQQB.js} +1 -1
  177. package/dist/chunks/{publish-JIFRJNDV.js → publish-R5IV2BH2.js} +1 -1
  178. package/dist/chunks/pull-CQVHIIAN.js +7 -0
  179. package/dist/chunks/{purchase-domain-if-available-3EBONBX3.js → purchase-domain-if-available-VMWCMYC2.js} +1 -1
  180. package/dist/chunks/{push-ZN6CBJLJ.js → push-Y5CUOISM.js} +1 -1
  181. package/dist/chunks/{query-MT6ID6C7.js → query-VMKIOI3W.js} +1 -1
  182. package/dist/chunks/{reauthenticate-OXFB64PS.js → reauthenticate-5K7LBTOW.js} +1 -1
  183. package/dist/chunks/{reorder-N2L43LXD.js → reorder-W3MXHSGZ.js} +1 -1
  184. package/dist/chunks/{reply-WBR3XXBJ.js → reply-YH7HRIWQ.js} +1 -1
  185. package/dist/chunks/{resolve-NMR24Y67.js → resolve-FWVMWJTG.js} +1 -1
  186. package/dist/chunks/{resolve-agent-team-KRTLBC5D.js → resolve-agent-team-6L7AQUA2.js} +1 -1
  187. package/dist/chunks/{restore-AKAVSLAK.js → restore-I7L3EOS4.js} +1 -1
  188. package/dist/chunks/{rm-Q3ZXEMGI.js → rm-AWUMNWQU.js} +1 -1
  189. package/dist/chunks/{rm-DGMHU3CU.js → rm-HVGUK55W.js} +1 -1
  190. package/dist/chunks/{rm-ERBTFH3G.js → rm-M3EMCKSN.js} +1 -1
  191. package/dist/chunks/{rm-H2T7HB3F.js → rm-RFCTWU5R.js} +1 -1
  192. package/dist/chunks/{rm-TNGYCAFJ.js → rm-VREBRM5D.js} +1 -1
  193. package/dist/chunks/{routes-4WGST7VN.js → routes-BP54NO3Z.js} +1 -1
  194. package/dist/chunks/{rule-inspect-ZVHPS2PL.js → rule-inspect-SQUCRRGA.js} +1 -1
  195. package/dist/chunks/{schema-TSHU5NN6.js → schema-AKVIKCFT.js} +1 -1
  196. package/dist/chunks/{schema-YUXTIJSB.js → schema-S36QQNJP.js} +1 -1
  197. package/dist/chunks/{select-org-35NFUKXO.js → select-org-PRWYXAWW.js} +1 -1
  198. package/dist/chunks/serving-DKny38LK-UNINNTL5.js +8 -0
  199. package/dist/chunks/{set-PP5K4NBO.js → set-ZJAC44LV.js} +1 -1
  200. package/dist/chunks/{setup-and-link-ACSPPTME.js → setup-and-link-VD53JFQI.js} +1 -1
  201. package/dist/chunks/{skills-X5TPVYXW.js → skills-JG4MGVKX.js} +1 -1
  202. package/dist/chunks/{tags-6QB3FP3B.js → tags-4Y4UBA5S.js} +1 -1
  203. package/dist/chunks/token-3ILJZPAZ.js +7 -0
  204. package/dist/chunks/token-JJLQVXPI.js +7 -0
  205. package/dist/chunks/{token-util-JDQI37VN.js → token-util-A4BSB3KP.js} +1 -1
  206. package/dist/chunks/token-util-KL35LHLQ.js +7 -0
  207. package/dist/chunks/{types-SENK43U4.js → types-DSN6Q6HW.js} +1 -1
  208. package/dist/chunks/{update-QA3NLSTV.js → update-R42CXSVE.js} +1 -1
  209. package/dist/commands/build/index.js +1 -1
  210. package/dist/commands/deploy/index.js +9 -9
  211. package/dist/commands/dev/index.js +2 -2
  212. package/dist/commands/env/index.js +12 -12
  213. package/dist/commands/link/index.js +4 -4
  214. package/dist/commands/list/index.js +1 -1
  215. package/dist/commands/project/index.js +8 -14
  216. package/dist/commands-account.js +2 -2
  217. package/dist/commands-ai.js +4 -4
  218. package/dist/commands-blob.js +7 -7
  219. package/dist/commands-core.js +62 -32
  220. package/dist/commands-deployments.js +4 -4
  221. package/dist/commands-flags.js +3 -3
  222. package/dist/commands-integrations.js +1 -1
  223. package/dist/commands-observability.js +2 -2
  224. package/dist/commands-routing.js +5 -5
  225. package/dist/help.js +1 -1
  226. package/dist/index.js +5 -5
  227. package/dist/internal-build.js +1 -1
  228. package/dist/launcher-errors.js +1 -1
  229. package/dist/package.json +31 -30
  230. package/dist/version.mjs +1 -1
  231. package/package.json +22 -21
  232. package/dist/chunks/chunk-5KE67O45.js +0 -7
  233. package/dist/chunks/chunk-CFYTFXX6.js +0 -7
  234. package/dist/chunks/chunk-CUBRYWA2.js +0 -7
  235. package/dist/chunks/chunk-FOQD62WW.js +0 -17
  236. package/dist/chunks/chunk-FTACGWII.js +0 -14
  237. package/dist/chunks/chunk-FY4ORPZH.js +0 -7
  238. package/dist/chunks/chunk-G7H33IKQ.js +0 -10
  239. package/dist/chunks/chunk-KWXJIVBG.js +0 -7
  240. package/dist/chunks/chunk-MOF4QNZH.js +0 -9
  241. package/dist/chunks/chunk-O4CQRV2G.js +0 -7
  242. package/dist/chunks/chunk-UWJ3UPS5.js +0 -11
  243. package/dist/chunks/chunk-ZUI5EMXD.js +0 -11
  244. package/dist/chunks/config-CW4JO67Q.js +0 -7
  245. package/dist/chunks/image-VNSN2SKE.js +0 -7
  246. package/dist/chunks/pull-HLJSW3W4.js +0 -7
  247. package/dist/chunks/token-W6P2KNI5.js +0 -7
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{handleCommandTypo}from"../../chunks/chunk-F2LNGJOZ.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-3WYSEF57.js";import{resolveProjectContext}from"../../chunks/chunk-DX2OHM56.js";import{formatProject}from"../../chunks/chunk-TD7AL545.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-E7DYXF6G.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-BZV2S4H6.js";import"../../chunks/chunk-GHAY4PSD.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-SODZSOOL.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import"../../chunks/chunk-PFD7LETF.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-PMEYNJU2.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-HR462OEG.js";import"../../chunks/chunk-6RUAAORO.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"../../chunks/chunk-V32V4SXB.js";import"../../chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-BPRGAX62.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-FTACGWII.js";import"../../chunks/chunk-CZOD25BC.js";import"../../chunks/chunk-77LSSWXL.js";import"../../chunks/chunk-MUNGQJGO.js";import"../../chunks/chunk-W5GHMAHP.js";import"../../chunks/chunk-ANCWFEOM.js";import"../../chunks/chunk-QVMU7ZKQ.js";import"../../chunks/chunk-TL4ZLZ2Q.js";import"../../chunks/chunk-VD2FK6OF.js";import"../../chunks/chunk-JVNIDSP5.js";import"../../chunks/chunk-NLKM5LR5.js";import"../../chunks/chunk-BB5UMZMF.js";import"../../chunks/chunk-4LGAV2WN.js";import"../../chunks/chunk-EJZNJN4N.js";import"../../chunks/chunk-S5JBQCBA.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-FAVZ6WVS.js";import"../../chunks/chunk-5KE67O45.js";import"../../chunks/chunk-T7HE23VK.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-CUBRYWA2.js";import{printError}from"../../chunks/chunk-Q4GX2UTG.js";import{help}from"../../chunks/chunk-GKALP6QD.js";import"../../chunks/chunk-3G3FQYMW.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-TZ6MSTOI.js";import{TelemetryClient}from"../../chunks/chunk-VPUYTI5E.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-ZUI5EMXD.js";import"../../chunks/chunk-FY4ORPZH.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-KNAOHPOI.js";import{printAlignedLabel}from"../../chunks/chunk-64UCX5JM.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-56UH6NQ3.js";import"../../chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"../../chunks/chunk-C4N4LKPM.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-GJCVOEC2.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-W634OFUG.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,quoteArg,stripSensitiveAuthArgs}from"../../chunks/chunk-CKTLP5GX.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"../../chunks/chunk-CFYTFXX6.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
7
+ import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{handleCommandTypo}from"../../chunks/chunk-JA6IGJ67.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-5IZ33FNL.js";import{resolveProjectContext}from"../../chunks/chunk-SR7BZA6N.js";import{formatProject}from"../../chunks/chunk-NE6PKR2J.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-PFZCGMJ7.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-U2TQFAO3.js";import"../../chunks/chunk-GHAY4PSD.js";import{requireApproval}from"../../chunks/chunk-OII46FDN.js";import"../../chunks/chunk-ZCUUCYID.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-K5KVSA2A.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import"../../chunks/chunk-PFD7LETF.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-TZE4CS4K.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-6YAYCEDT.js";import"../../chunks/chunk-S535FZTA.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"../../chunks/chunk-GQ4CQDIL.js";import"../../chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-BPRGAX62.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-ZIC7VWFC.js";import"../../chunks/chunk-M3Z6NSC2.js";import"../../chunks/chunk-IHTWZEQW.js";import"../../chunks/chunk-ECFLIVEE.js";import"../../chunks/chunk-WTFD4MDT.js";import"../../chunks/chunk-SNGM6NSO.js";import"../../chunks/chunk-P24YBQ6H.js";import"../../chunks/chunk-NMIZSQDN.js";import"../../chunks/chunk-K7ARJYAG.js";import"../../chunks/chunk-V5TOMLK4.js";import"../../chunks/chunk-M3R7F2N4.js";import"../../chunks/chunk-4E6BGQWR.js";import"../../chunks/chunk-6UMVJ7RL.js";import"../../chunks/chunk-IIGNDMLO.js";import"../../chunks/chunk-N65H4JMJ.js";import"../../chunks/chunk-EJN55YDV.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-4U6ACPA4.js";import"../../chunks/chunk-7VGBGUX7.js";import"../../chunks/chunk-CU3LNJZV.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-PKZK23PR.js";import{help}from"../../chunks/chunk-OYIDWI5Y.js";import"../../chunks/chunk-3G3FQYMW.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-AUIV7YJO.js";import"../../chunks/chunk-FYE7ILRR.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-6NUH6ZPE.js";import{printAlignedLabel}from"../../chunks/chunk-PKNEWN4W.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-PL6IOUKW.js";import"../../chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"../../chunks/chunk-US7YJ2RQ.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,quoteArg,stripSensitiveAuthArgs}from"../../chunks/chunk-AMPJ6RWT.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"../../chunks/chunk-JBU72NEQ.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
8
8
  ${example} `)}return 2}let start=Date.now(),[name]=args;telemetryClient.trackCliArgumentName(name);try{await createProject(client,{name})}catch(err){if(isAPIError(err)&&err.code==="too_many_projects")return output_manager_default.prettyError(err),1;if(!(isAPIError(err)&&err.status===409))throw err}let elapsed=(0,import_ms.default)(Date.now()-start),contextName=await getContextName(client);return output_manager_default.log(`${import_chalk.default.cyan("Success!")} Project ${import_chalk.default.bold(name.toLowerCase())} added (${import_chalk.default.bold(contextName)}) ${import_chalk.default.gray(`[${elapsed}]`)}`),0}var import_chalk2=__toESM(require_source(),1);async function accessSummary(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(accessSummarySubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project access-summary [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,summary;try{let project=await getProjectByCwdOrLink({client,commandName:"project access-summary",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0});summary=await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/members/summary`)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"access-summary"}),printError(err),1}if(asJson)return client.stdout.write(`${JSON.stringify(summary,null,2)}
9
9
  `),0;let entries=Object.entries(summary).sort(([a],[b])=>a.localeCompare(b));if(entries.length===0)return output_manager_default.log("No summary data returned."),0;let rows=[["Role","Count"].map(h=>(0,import_chalk2.gray)(h)),...entries.map(([role,count])=>[role,String(count)])];return client.stderr.write(`${table(rows,{hsep:3})}
10
10
  `),0}var import_chalk3=__toESM(require_source(),1);import{readFileSync}from"fs";import{resolve}from"path";var REQUIRES=["build-ready","deployment-url","none"],BLOCKING_STAGES=["build-start","deployment-start","deployment-alias","deployment-promotion","none"];function emitValidationError(client,message,exitCode,extra){outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message,...extra},exitCode)}async function checksAdd(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification([...checksAddFlags]);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return emitValidationError(client,"Invalid number of arguments. Usage: `vercel project checks add [name]`",2),output_manager_default.error("Invalid number of arguments. Usage: `vercel project checks add [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return client.nonInteractive&&emitValidationError(client,formatResult.error,1),output_manager_default.error(formatResult.error),1;let asJson=formatResult.jsonOutput||!!client.nonInteractive,filePath=parsedArgs.flags["--file"],checkName=parsedArgs.flags["--check-name"],requires=parsedArgs.flags["--requires"],blocksFlag=parsedArgs.flags["--blocks"],timeout=parsedArgs.flags["--timeout"],targetsRaw=parsedArgs.flags["--targets"],sourceRaw=parsedArgs.flags["--source"],body;if(typeof filePath=="string"&&filePath.length>0)try{let raw=readFileSync(resolve(client.cwd,filePath),"utf8"),parsed=JSON.parse(raw);if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return emitValidationError(client,"`--file` must contain a JSON object.",1),output_manager_default.error("`--file` must contain a JSON object."),1;body=parsed}catch(err){let msg=err instanceof Error?err.message:String(err);return emitValidationError(client,`Failed to read \`--file\`: ${msg}`,1),output_manager_default.error(`Failed to read \`--file\`: ${msg}`),1}else{if(typeof checkName!="string"||!checkName.trim())return emitValidationError(client,"Provide `--check-name` and `--requires`, or a `--file` with the full JSON body.",1,{hint:'See `vercel project checks --help` and the REST API "Create a check" documentation.',next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks add <name> --file <path>"),when:"Create from a JSON file (replace paths)"}]}),output_manager_default.error("Provide `--check-name` and `--requires`, or a `--file` with the full JSON body. See `vercel project checks add --help`."),1;if(typeof requires!="string"||!requires.trim())return emitValidationError(client,"`--requires` is required when using `--check-name` (build-ready, deployment-url, or none).",1),output_manager_default.error("`--requires` is required when using `--check-name` (build-ready, deployment-url, or none)."),2;if(!REQUIRES.includes(requires))return emitValidationError(client,`\`--requires\` must be one of: ${REQUIRES.join(", ")}`,1),output_manager_default.error(`\`--requires\` must be one of: ${REQUIRES.join(", ")}`),2;if(body={name:checkName.trim(),requires:requires.trim()},typeof blocksFlag=="string"&&blocksFlag.length>0){if(!BLOCKING_STAGES.includes(blocksFlag))return emitValidationError(client,`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`,1),output_manager_default.error(`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`),2;body.blocks=blocksFlag}if(typeof timeout=="number"&&(body.timeout=timeout),typeof targetsRaw=="string"&&targetsRaw.trim()&&(body.targets=targetsRaw.split(",").map(s=>s.trim()).filter(Boolean)),typeof sourceRaw=="string"&&sourceRaw.trim())try{body.source=JSON.parse(sourceRaw)}catch{return emitValidationError(client,"`--source` must be valid JSON.",1),output_manager_default.error("`--source` must be valid JSON."),1}}try{let project=await getProjectByCwdOrLink({client,commandName:"project checks add",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),result=await client.fetch(`/v2/projects/${encodeURIComponent(project.id)}/checks`,{method:"POST",body});if(asJson){let id2=String(result.id??"");return client.nonInteractive?client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,check:result,projectId:project.id,projectName:project.name,message:id2?`Created deployment check ${id2} on ${project.name}.`:`Created deployment check on ${project.name}.`,next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks"),when:"List checks for this project"},{command:buildCommandWithGlobalFlags(client.argv,"project checks remove <check_id>"),when:"Remove a check by id if needed"}]},null,2)}
@@ -63,31 +63,25 @@ ${tablePrint}
63
63
  `),0;let rows=[["id","Name","Role"].map(str=>(0,import_chalk8.gray)(str)),...(result.accessGroups||[]).map(group=>[group.id,group.name,group.role||""])];return client.stderr.write(`${table(rows,{hsep:3})}
64
64
  `),result.pagination?.next&&(output_manager_default.print(`
65
65
  `),printNextPageCommand(getNextPageCommand(renameOptionInArgs(client.argv,"--search","--query"),result.pagination.next))),0}var import_chalk9=__toESM(require_source(),1),import_ms3=__toESM(require_ms(),1);var ProjectRenameTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentNewName(newName){newName&&this.trackCliArgument({arg:"new-name",value:this.redactedValue})}};async function rename(client,argv){let telemetryClient=new ProjectRenameTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(renameSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==2)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk9.default.cyan(`${getCommandName("project rename <name> <new-name>")}`)}`),2;let[projectNameOrId,newName]=args;telemetryClient.trackCliArgumentName(projectNameOrId),telemetryClient.trackCliArgumentNewName(newName);let project=await getProjectByNameOrId(client,projectNameOrId);if(project instanceof ProjectNotFound)return output_manager_default.error("No such project exists"),1;let start=Date.now(),renamedProject;try{renamedProject=await client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",body:{name:newName}})}catch(err){if(isAPIError(err)&&err.status===409)return output_manager_default.error(`A project named "${newName}" already exists`),1;if(isAPIError(err)&&err.status===403)return output_manager_default.error(err.message),1;throw err}let elapsed=(0,import_ms3.default)(Date.now()-start);return output_manager_default.log(`${import_chalk9.default.cyan("Success!")} Project ${import_chalk9.default.bold(project.name)} renamed to ${import_chalk9.default.bold(renamedProject.name)} ${import_chalk9.default.gray(`[${elapsed}]`)}`),0}var import_chalk10=__toESM(require_source(),1);var import_frameworks2=__toESM(require_frameworks(),1);var OTHER_FRAMEWORK_SLUG="other",MAX_SETTING_LENGTH=256,CONTROL_CHARACTERS=/[\u0000-\u001f\u007f]/,frameworkSlugs=import_frameworks2.frameworkList.map(framework=>framework.slug??OTHER_FRAMEWORK_SLUG),buildSettingDefinitions=[{key:"buildCommand",flag:"--build-command",autoDetect:"build-command",label:"Build Command"},{key:"devCommand",flag:"--dev-command",autoDetect:"dev-command",label:"Dev Command"},{key:"installCommand",flag:"--install-command",autoDetect:"install-command",label:"Install Command"},{key:"outputDirectory",flag:"--output-directory",autoDetect:"output-directory",label:"Output Directory"},{key:"rootDirectory",flag:"--root-directory",autoDetect:"root-directory",label:"Root Directory"}],settingOrder=["framework",...buildSettingDefinitions.map(setting=>setting.key),"sandboxRegion","sandboxFailoverRegions"],autoDetectSettings=buildSettingDefinitions.map(setting=>setting.autoDetect),settingLabels={framework:"Framework",...Object.fromEntries(buildSettingDefinitions.map(setting=>[setting.key,setting.label])),sandboxRegion:"Sandbox Region",sandboxFailoverRegions:"Failover"};function isSandboxSettingKey(key){return key==="sandboxRegion"||key==="sandboxFailoverRegions"}function resolveFramework(input){let slug=input.trim().toLowerCase();return import_frameworks2.frameworkList.find(framework=>(framework.slug??OTHER_FRAMEWORK_SLUG)===slug)}function formatFramework(slug){let framework=import_frameworks2.frameworkList.find(item=>item.slug===slug);return framework?`${framework.name} (${framework.slug??OTHER_FRAMEWORK_SLUG})`:slug??OTHER_FRAMEWORK_SLUG}function formatSettingValue(key,value){return key==="sandboxRegion"?typeof value=="string"?value:"Auto":key==="sandboxFailoverRegions"?formatSandboxRegionList(Array.isArray(value)?value:[]):key==="framework"?formatFramework(typeof value=="string"?value:null):value===null?"Auto":value===""?'""':String(value)}function getCurrentSetting(project,key){return key==="sandboxRegion"?project.sandbox?.region??null:key==="sandboxFailoverRegions"?project.sandbox?.failoverRegions??null:project[key]??null}function isSameSettingValue(a,b){if(Array.isArray(a)||Array.isArray(b)){let left=Array.isArray(a)?a:[],right=Array.isArray(b)?b:[];return left.length===right.length&&left.every((value,index)=>value===right[index])}return a===b}function hasSetting(settings,key){return Object.prototype.hasOwnProperty.call(settings,key)}function validateSettingValue(definition,value){if(value.length>MAX_SETTING_LENGTH)return`${definition.label} must be ${MAX_SETTING_LENGTH} characters or fewer.`;if(CONTROL_CHARACTERS.test(value))return`${definition.label} can't contain control characters.`}function parseAutoDetectSettings(inputs){return inputs.flatMap(input=>input.split(",")).map(input=>input.trim())}var NODE_VERSION_PATTERN=/^\d+\.x$/,FUNCTION_CPU_TIERS=["standard_legacy","standard","performance","performance_xl"],BUILD_MACHINE_TYPES=["basic","standard","enhanced","turbo","elastic"];function parseEnumValue(label,raw,allowed){return allowed.includes(raw)?{ok:!0,value:raw}:{ok:!1,message:`${label} must be one of: ${allowed.join(", ")}.`}}function displayOnOff(value){return value===!0?"on":value===!1?"off":"Auto"}function displayValue(value){return value==null?"Auto":String(value)}function parseAdvanced(definition,raw){return definition.kind==="pattern"?definition.pattern.test(raw)?{ok:!0,value:raw}:{ok:!1,message:`${definition.label} must look like ${definition.format}.`}:parseEnumValue(definition.label,raw,definition.values)}function readAdvanced(definition,project){let raw=readAdvancedRaw(definition,project);return definition.kind==="toggle"&&definition.fromApi?definition.fromApi(raw):raw}function readAdvancedRaw(definition,project){let fields=project;switch(definition.target){case"resourceConfig":return definition.field==="buildMachineType"&&fields.resourceConfig?.buildMachineSelection==="elastic"?"elastic":fields.resourceConfig?.[definition.field];case"project":return project[definition.field];case"gitProviderOptions":return fields.gitProviderOptions?.[definition.field];case"gitComments":return fields.gitComments?.[definition.field]}}function displayAdvanced(definition,value){return definition.kind!=="toggle"?displayValue(value):value===null&&definition.inheritFlag?"Team default":displayOnOff(value)}var advancedSettingDefinitions=[{key:"fluid",flag:"--fluid-compute",label:"Fluid Compute",kind:"toggle",target:"resourceConfig",field:"fluid"},{key:"functionDefaultMemoryType",flag:"--function-cpu",label:"Function CPU",kind:"enum",values:FUNCTION_CPU_TIERS,target:"resourceConfig",field:"functionDefaultMemoryType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"buildMachineType",flag:"--build-machine",label:"Build Machine",kind:"enum",values:BUILD_MACHINE_TYPES,target:"resourceConfig",field:"buildMachineType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"elasticConcurrencyEnabled",flag:"--elastic-concurrency",label:"Elastic Concurrency",kind:"toggle",target:"resourceConfig",field:"elasticConcurrencyEnabled",requiresPaidPlan:value=>value===!0,hasCostImpact:value=>value===!0},{key:"nodeVersion",flag:"--node-version",label:"Node.js Version",kind:"pattern",pattern:NODE_VERSION_PATTERN,format:'"<major>.x", for example "24.x"',target:"project",field:"nodeVersion"},{key:"gitCommitStatus",flag:"--git-commit-status",label:"Git Commit Status",kind:"toggle",target:"gitProviderOptions",field:"gitCommitStatus",fromApi:raw=>raw!==!1},{key:"gitPullRequestComments",flag:"--git-pr-comments",label:"Pull Request Comments",kind:"toggle",target:"gitComments",field:"onPullRequest",fromApi:raw=>raw!==!1},{key:"githubDeploymentEvents",flag:"--github-deployment-events",label:"GitHub Deployment Events",kind:"toggle",target:"gitProviderOptions",field:"createDeployments",fromApi:raw=>raw!=="disabled",toApi:value=>value?"enabled":"disabled"},{key:"requireVerifiedCommits",flag:"--require-verified-commits",label:"Require Verified Commits",kind:"toggle",inheritFlag:"--inherit-verified-commits",target:"gitProviderOptions",field:"requireVerifiedCommits",fromApi:raw=>typeof raw=="boolean"?raw:null},{key:"repositoryDispatchEvents",flag:"--repository-dispatch-events",label:"Repository Dispatch Events",kind:"toggle",target:"gitProviderOptions",field:"disableRepositoryDispatchEvents",fromApi:raw=>typeof raw=="boolean"?!raw:void 0,toApi:value=>!value}];var ProjectUpdateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionFramework(framework){framework&&this.trackCliOption({option:"framework",value:this.redactedValue})}trackCliOptionBuildCommand(value){this.trackSettingOption("build-command",value)}trackCliOptionDevCommand(value){this.trackSettingOption("dev-command",value)}trackCliOptionInstallCommand(value){this.trackSettingOption("install-command",value)}trackCliOptionOutputDirectory(value){this.trackSettingOption("output-directory",value)}trackCliOptionRootDirectory(value){this.trackSettingOption("root-directory",value)}trackCliOptionAutoDetect(value){value?.length&&this.trackCliOption({option:"auto-detect",value:this.redactedValue})}trackCliOptionSandboxRegion(value){this.trackSandboxRegionOption("sandbox-region",value)}trackCliOptionSandboxFailoverRegions(value){this.trackSandboxRegionOption("sandbox-failover-regions",value)}trackSandboxRegionOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackSettingOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackCliOptionFluidCompute(value){this.trackChoiceOption("fluid-compute",value,["on","off"])}trackCliFlagFluidCompute(value){value&&this.trackCliFlag("fluid-compute")}trackCliFlagNoFluidCompute(value){value&&this.trackCliFlag("no-fluid-compute")}trackCliOptionFunctionCpu(value){this.trackChoiceOption("function-cpu",value,["standard_legacy","standard","performance","performance_xl"])}trackCliOptionBuildMachine(value){this.trackChoiceOption("build-machine",value,["basic","standard","enhanced","turbo","elastic"])}trackCliOptionElasticConcurrency(value){this.trackChoiceOption("elastic-concurrency",value,["on","off"])}trackCliFlagElasticConcurrency(value){value&&this.trackCliFlag("elastic-concurrency")}trackCliFlagNoElasticConcurrency(value){value&&this.trackCliFlag("no-elastic-concurrency")}trackCliOptionNodeVersion(value){value!==void 0&&this.trackCliOption({option:"node-version",value:NODE_VERSION_PATTERN.test(value)?value:this.redactedValue})}trackChoiceOption(option,value,allowed){value!==void 0&&this.trackCliOption({option,value:allowed.includes(value)?value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliFlagGitCommitStatus(value){value&&this.trackCliFlag("git-commit-status")}trackCliFlagNoGitCommitStatus(value){value&&this.trackCliFlag("no-git-commit-status")}trackCliFlagGitPrComments(value){value&&this.trackCliFlag("git-pr-comments")}trackCliFlagNoGitPrComments(value){value&&this.trackCliFlag("no-git-pr-comments")}trackCliFlagGithubDeploymentEvents(value){value&&this.trackCliFlag("github-deployment-events")}trackCliFlagNoGithubDeploymentEvents(value){value&&this.trackCliFlag("no-github-deployment-events")}trackCliFlagRequireVerifiedCommits(value){value&&this.trackCliFlag("require-verified-commits")}trackCliFlagNoRequireVerifiedCommits(value){value&&this.trackCliFlag("no-require-verified-commits")}trackCliFlagInheritVerifiedCommits(value){value&&this.trackCliFlag("inherit-verified-commits")}trackCliFlagRepositoryDispatchEvents(value){value&&this.trackCliFlag("repository-dispatch-events")}trackCliFlagNoRepositoryDispatchEvents(value){value&&this.trackCliFlag("no-repository-dispatch-events")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};function ensureResourceConfig(body){return body.resourceConfig??={},body.resourceConfig}function applyAdvanced(definition,body,value,project){let apiValue=definition.kind==="toggle"&&definition.toApi?definition.toApi(value):value;switch(definition.target){case"resourceConfig":ensureResourceConfig(body)[definition.field]=apiValue;break;case"project":body[definition.field]=apiValue;break;case"gitProviderOptions":body.gitProviderOptions??={},body.gitProviderOptions[definition.field]=apiValue;break;case"gitComments":body.gitComments={onCommit:project.gitComments?.onCommit??!1,...body.gitComments,[definition.field]:apiValue};break}}function computeSettingsChanges(project,requestedSettings,providedAdvanced){let previousSettings={},changedSettings=[],body={},mergedSandbox;if(hasSetting(requestedSettings,"sandboxRegion")||hasSetting(requestedSettings,"sandboxFailoverRegions")){if(mergedSandbox={...project.sandbox},hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[])}for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=getCurrentSetting(project,key),next=requestedSettings[key]??null;Object.assign(previousSettings,{[key]:previous}),isSameSettingValue(previous,next)||(changedSettings.push(key),isSandboxSettingKey(key)||(body[key]=next))}mergedSandbox&&(changedSettings.includes("sandboxRegion")||changedSettings.includes("sandboxFailoverRegions"))&&(body.sandbox=mergedSandbox);let advancedRows=[];for(let{definition,value}of providedAdvanced){let previous=readAdvanced(definition,project),changed=previous!==value;advancedRows.push({key:definition.key,label:definition.label,previous:displayAdvanced(definition,previous),next:displayAdvanced(definition,value),changed}),changed&&(changedSettings.push(definition.key),applyAdvanced(definition,body,value,project))}return{previousSettings,changedSettings,body,advancedRows}}async function patchProjectSettings(client,project,body){return client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",accountId:project.accountId,body})}function getAdvancedResultValue(project,row){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);return definition?displayAdvanced(definition,readAdvanced(definition,project)):row.next}function printChangePreview({project,previousSettings,requestedSettings,changedSettings,advancedRows}){printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key)||!changedSettings.includes(key))continue;let previous=formatSettingValue(key,previousSettings[key]??null),next=formatSettingValue(key,requestedSettings[key]??null);printAlignedLabel(settingLabels[key],`${previous} \u2192 ${next}`)}for(let row of advancedRows)row.changed&&printAlignedLabel(row.label,`${row.previous} \u2192 ${row.next}`)}function writeUpdateResult({changedSettings,project,previousSettings,requestedSettings,advancedRows,asJson,client}){let changed=changedSettings.length>0;if(asJson){let settings={};for(let key of settingOrder)hasSetting(requestedSettings,key)&&(settings[key]=getCurrentSetting(project,key));for(let row of advancedRows){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);definition&&(settings[row.key]=readAdvanced(definition,project)??null)}client.stdout.write(`${JSON.stringify({changed,changedSettings,projectId:project.id,projectName:project.name,settings},null,2)}
66
- `);return}printAlignedLabel(changed?"Updated":"Unchanged","Project Settings",{gutter:"\u2713"}),printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=previousSettings[key]??null,next=getCurrentSetting(project,key),value=changedSettings.includes(key)?`${formatSettingValue(key,previous)} \u2192 ${formatSettingValue(key,next)}`:formatSettingValue(key,next);printAlignedLabel(settingLabels[key],value)}for(let row of advancedRows){let result=getAdvancedResultValue(project,row),value=row.changed?`${row.previous} \u2192 ${result}`:result;printAlignedLabel(row.label,value)}}function getUpdateCommand(framework="<slug>"){return`project update <name> --framework ${framework}`}function buildUpdateRetryCommand(client,{interactive,withYes}){let typedArgs=stripSensitiveAuthArgs(client.argv.slice(2)),rewritten=rewriteLegacyOnOffValues(typedArgs,updateSubcommand.options),args="error"in rewritten?typedArgs:rewritten.args,nextArgs=[];for(let index=0;index<args.length;index++){let arg=args[index];if(!(arg==="--yes"||arg==="-y")){if(interactive&&(arg==="--non-interactive"||arg.startsWith("--non-interactive="))){arg==="--non-interactive"&&(args[index+1]==="true"||args[index+1]==="false")&&index++;continue}nextArgs.push(arg)}}return withYes&&nextArgs.push("--yes"),getCommandNamePlain(nextArgs.map(quoteArg).join(" "))}function printUsageError(client,message,exitCode,reason,suggestedCommand=getUpdateCommand()){return outputAgentError(client,{status:"error",reason,message,next:[{command:buildCommandWithGlobalFlags(client.argv,suggestedCommand),when:"Update project settings"}]},exitCode),output_manager_default.error(message),exitCode}function printPlanError(client,message,teamOwned){let nextCommand=teamOwned?"buy pro":"teams switch";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message,userActionRequired:!0,next:[{command:buildCommandWithGlobalFlags(client.argv,nextCommand,void 0,{excludeFlags:["--non-interactive","--yes"]}),when:teamOwned?"Upgrade this team interactively":"Switch to a Pro or Enterprise team"}]},1),output_manager_default.error(message),output_manager_default.log(teamOwned?`Upgrade with ${getCommandName("buy pro")}.`:`Switch teams with ${getCommandName("teams switch")}.`),1}function printConfirmationRequiredError(client,hasCostImpact){let nextCommand=buildUpdateRetryCommand(client,{interactive:hasCostImpact,withYes:!hasCostImpact});return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:hasCostImpact?AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:hasCostImpact?"These project settings may affect charges and require interactive confirmation.":"Updating project settings requires confirmation. Re-run with --yes to apply the changes.",userActionRequired:hasCostImpact,next:[{command:nextCommand,when:hasCostImpact?"Review and confirm the charge-sensitive settings in a terminal":"Apply the requested settings without prompting"}]},1),output_manager_default.error(hasCostImpact?"Confirmation required. These settings may affect charges and must be confirmed in an interactive terminal.":"Confirmation required. Re-run with --yes or in an interactive terminal."),1}function getSandboxValidationError(project,requestedSettings){if(!hasSetting(requestedSettings,"sandboxRegion")&&!hasSetting(requestedSettings,"sandboxFailoverRegions"))return;let mergedSandbox={...project.sandbox};if(hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}return hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[]),validateSandboxConfig(mergedSandbox)}async function refreshProjectForNestedUpdate(client,project,body){return body.resourceConfig===void 0&&body.sandbox===void 0&&body.gitComments===void 0?project:client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{accountId:project.accountId})}async function update(client,argv){let telemetry=new ProjectUpdateTelemetryClient({opts:{store:client.telemetryEventStore}}),rewritten=rewriteLegacyOnOffValues(argv,updateSubcommand.options,client);if("error"in rewritten)return printUsageError(client,rewritten.error,2,"invalid_arguments");let parsedArgs;try{parsedArgs=parseArguments(rewritten.args,getFlagsSpecification(updateSubcommand.options))}catch(error){return outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}let{args,flags}=parsedArgs,[projectNameOrId]=args,frameworkInput=flags["--framework"],autoDetectInputs=flags["--auto-detect"]??[];if(telemetry.trackCliArgumentName(projectNameOrId),telemetry.trackCliOptionFramework(frameworkInput),telemetry.trackCliOptionBuildCommand(flags["--build-command"]),telemetry.trackCliOptionDevCommand(flags["--dev-command"]),telemetry.trackCliOptionInstallCommand(flags["--install-command"]),telemetry.trackCliOptionOutputDirectory(flags["--output-directory"]),telemetry.trackCliOptionRootDirectory(flags["--root-directory"]),telemetry.trackCliOptionAutoDetect(flags["--auto-detect"]),telemetry.trackCliOptionSandboxRegion(flags["--sandbox-region"]),telemetry.trackCliOptionSandboxFailoverRegions(flags["--sandbox-failover-regions"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFluidCompute(rewritten.legacy.get("--fluid-compute")),rewritten.legacy.has("--fluid-compute")||(telemetry.trackCliFlagFluidCompute(flags["--fluid-compute"]),telemetry.trackCliFlagNoFluidCompute(flags["--no-fluid-compute"])),telemetry.trackCliOptionFunctionCpu(flags["--function-cpu"]),telemetry.trackCliOptionBuildMachine(flags["--build-machine"]),telemetry.trackCliOptionElasticConcurrency(rewritten.legacy.get("--elastic-concurrency")),rewritten.legacy.has("--elastic-concurrency")||(telemetry.trackCliFlagElasticConcurrency(flags["--elastic-concurrency"]),telemetry.trackCliFlagNoElasticConcurrency(flags["--no-elastic-concurrency"])),telemetry.trackCliOptionNodeVersion(flags["--node-version"]),telemetry.trackCliFlagGitCommitStatus(flags["--git-commit-status"]),telemetry.trackCliFlagNoGitCommitStatus(flags["--no-git-commit-status"]),telemetry.trackCliFlagGitPrComments(flags["--git-pr-comments"]),telemetry.trackCliFlagNoGitPrComments(flags["--no-git-pr-comments"]),telemetry.trackCliFlagGithubDeploymentEvents(flags["--github-deployment-events"]),telemetry.trackCliFlagNoGithubDeploymentEvents(flags["--no-github-deployment-events"]),telemetry.trackCliFlagRequireVerifiedCommits(flags["--require-verified-commits"]),telemetry.trackCliFlagNoRequireVerifiedCommits(flags["--no-require-verified-commits"]),telemetry.trackCliFlagInheritVerifiedCommits(flags["--inherit-verified-commits"]),telemetry.trackCliFlagRepositoryDispatchEvents(flags["--repository-dispatch-events"]),telemetry.trackCliFlagNoRepositoryDispatchEvents(flags["--no-repository-dispatch-events"]),args.length>1)return printUsageError(client,`Invalid number of arguments. Usage: ${getCommandNamePlain("project update [name] [options]")}`,2,"invalid_arguments");let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return printUsageError(client,formatResult.error,2,"invalid_arguments");let requestedSettings={};if(frameworkInput!==void 0){let framework=resolveFramework(frameworkInput);if(!framework){let normalizedInput=frameworkInput.trim().toLowerCase(),suggestion=normalizedInput?did_you_mean_default(normalizedInput,frameworkSlugs,.7):void 0,message=suggestion?`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Use a framework slug such as "nextjs", or "other" to clear the preset.`;return printUsageError(client,message,2,"invalid_arguments",getUpdateCommand(suggestion))}requestedSettings.framework=framework.slug}let requestedAutoDetect=parseAutoDetectSettings(autoDetectInputs),autoDetectSet=new Set;for(let setting of requestedAutoDetect){if(!autoDetectSettings.includes(setting)){let suggestion=setting?did_you_mean_default(setting,autoDetectSettings,.7):void 0,message=suggestion?`Unknown auto-detect setting ${JSON.stringify(setting)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unknown auto-detect setting ${JSON.stringify(setting)}. Accepted settings: ${autoDetectSettings.join(", ")}.`;return printUsageError(client,message,2,"invalid_arguments",`project update <name> --auto-detect ${suggestion??"<setting>"}`)}autoDetectSet.add(setting)}for(let definition of buildSettingDefinitions){let value=flags[definition.flag];if(value!==void 0&&autoDetectSet.has(definition.autoDetect))return printUsageError(client,`Can't use "${definition.flag}" and "--auto-detect ${definition.autoDetect}" together. Choose one.`,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);if(value!==void 0){let validationError=validateSettingValue(definition,value);if(validationError)return printUsageError(client,validationError,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);requestedSettings[definition.key]=value}else autoDetectSet.has(definition.autoDetect)&&(requestedSettings[definition.key]=null)}let sandboxRegionInput=flags["--sandbox-region"];if(sandboxRegionInput!==void 0){let normalizedRegion=sandboxRegionInput.trim().toLowerCase();requestedSettings.sandboxRegion=normalizedRegion===""?null:normalizedRegion}let sandboxFailoverInput=flags["--sandbox-failover-regions"];sandboxFailoverInput!==void 0&&(requestedSettings.sandboxFailoverRegions=parseSandboxRegionList(sandboxFailoverInput));let providedAdvanced=[];for(let definition of advancedSettingDefinitions){if(definition.kind==="toggle"){let toggle=readOnOffOption(client,flags,{on:definition.flag,off:`--no-${definition.flag.slice(2)}`});if("error"in toggle)return printUsageError(client,toggle.error,2,"invalid_arguments",`project update <name> ${definition.flag}`);if(toggle.value!==void 0&&providedAdvanced.push({definition,value:toggle.value}),definition.inheritFlag&&flags[definition.inheritFlag]===!0){if(toggle.value!==void 0){let used=toggle.value?definition.flag:`--no-${definition.flag.slice(2)}`;return printUsageError(client,`Can't use ${used} with ${definition.inheritFlag}.`,2,"invalid_arguments",`project update <name> ${definition.inheritFlag}`)}providedAdvanced.push({definition,value:null})}continue}let raw=flags[definition.flag];if(raw===void 0)continue;let result=parseAdvanced(definition,raw);if(!result.ok)return printUsageError(client,result.message,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);providedAdvanced.push({definition,value:result.value})}if(settingOrder.every(key=>!hasSetting(requestedSettings,key))&&providedAdvanced.length===0)return printUsageError(client,'Provide at least one setting option. Run "vercel project update --help" to see every available option.',2,"missing_arguments");let project;try{project=await getProjectByCwdOrLink({client,commandName:"project update",projectNameOrId,forReadOnlyCommand:!0})}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let sandboxError=getSandboxValidationError(project,requestedSettings);if(sandboxError)return printUsageError(client,sandboxError,1,"invalid_arguments");let changes=computeSettingsChanges(project,requestedSettings,providedAdvanced),changeCount=changes.changedSettings.length,gatedProvided=providedAdvanced.filter(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.requiresPaidPlan?.(value));if(gatedProvided.length>0){let team,user,teamOwned=project.accountId.startsWith("team_");try{projectNameOrId?{team,user}=await getScope(client):{team,user}=await getScope(client,{resolveLocalScope:!0}),teamOwned&&team?.id!==project.accountId&&(team=await getTeamByIdOrSlug(client,project.accountId))}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let plan=(teamOwned?team?.billing:user?.billing)?.plan;if(!(plan==="pro"||plan==="enterprise")){let phrases=gatedProvided.map(({definition,value})=>`${definition.label} "${displayAdvanced(definition,value)}"`),list2=phrases.length===1?phrases[0]:`${phrases.slice(0,-1).join(", ")} and ${phrases[phrases.length-1]}`,verb=phrases.length>1?"require":"requires";return printPlanError(client,`${list2} ${verb} a Pro or Enterprise plan.`,teamOwned)}}let hasCostImpact=providedAdvanced.some(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.hasCostImpact?.(value));if(changeCount>0&&!(!!flags["--yes"]&&!hasCostImpact)){if(!canPrompt(client))return printConfirmationRequiredError(client,hasCostImpact);if(printChangePreview({project,previousSettings:changes.previousSettings,requestedSettings,changedSettings:changes.changedSettings,advancedRows:changes.advancedRows}),hasCostImpact&&printAlignedLabel("Charges","These settings may affect your Vercel charges.",{gutter:"!"}),!await client.input.confirm(`Update ${changeCount} ${changeCount===1?"setting":"settings"} for ${import_chalk10.default.bold(project.name)}?`,!1))return output_manager_default.log("Canceled"),0}if(changeCount>0){try{project=await refreshProjectForNestedUpdate(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let refreshedSandboxError=getSandboxValidationError(project,requestedSettings);if(refreshedSandboxError)return printUsageError(client,refreshedSandboxError,1,"invalid_arguments");changes=computeSettingsChanges(project,requestedSettings,providedAdvanced)}let updatedProject=project;if(changes.changedSettings.length>0)try{updatedProject=await patchProjectSettings(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}return writeUpdateResult({changedSettings:changes.changedSettings,project:updatedProject,previousSettings:changes.previousSettings,requestedSettings,advancedRows:changes.advancedRows,asJson:formatResult.jsonOutput||shouldEmitNonInteractiveCommandError(client),client}),0}var import_chalk11=__toESM(require_source(),1),import_build_utils=__toESM(require_build_utils(),1);var ProjectRmTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var e=encodeURIComponent;async function rm(client,argv){let telemetryClient=new ProjectRmTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs;if(args.length!==1)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk11.default.cyan(`${getCommandName("project delete <name>")}`)}`),2;let name=args[0],yes=flags["--yes"]??!1;if(telemetryClient.trackCliArgumentName(name),telemetryClient.trackCliFlagYes(yes),!(yes&&await isTeamExplicit(client)))if(canPrompt(client)){if(await printDeletionPreview(client,name),await client.input.text({message:`To confirm, type the project name "${name}":`})!==name)return output_manager_default.log("Canceled. Nothing was changed."),130}else{if(yes)return refuse(client,{reason:AGENT_REASON.MISSING_SCOPE,message:`Can't delete project ${name} without a team in non-interactive mode.`,recovery:"Pass the team with --scope:",command:`${buildCommandWithYes(client.argv)} --scope <TEAM>`,when:`Replace <TEAM> with the team that owns ${name}`});if(client.stdin.isTTY||client.isAgent||client.nonInteractive){let teamNamed2=await isTeamExplicit(client);return refuse(client,{reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:`Can't delete project ${name} without --yes in non-interactive mode.`,recovery:"Delete it after a person approves:",command:`${buildCommandWithYes(client.argv)}${teamNamed2?"":" --scope <TEAM>"}`,when:`Only after a human approves deleting ${name} and its deployments${teamNamed2?"":`. Replace <TEAM> with the team that owns ${name}`}`,userActionRequired:!0})}else if(output_manager_default.warning("Deleting a project without a terminal will need --yes and --scope in a future major version."),await printDeletionPreview(client,name),!await client.input.confirm(`${import_chalk11.default.bold.red("Are you sure?")}`,!1))return output_manager_default.log("User abort"),0}try{await client.fetch(`/v2/projects/${e(name)}`,{method:"DELETE"})}catch(err){return isAPIError(err)&&err.status===404?(output_manager_default.error("No such project exists"),1):isAPIError(err)&&err.status===403?(output_manager_default.error(err.message),1):(printError(err),1)}return output_manager_default.print(`
67
- `),printAlignedLabel("Deleted",name,{gutter:"\u2713"}),0}async function printDeletionPreview(client,projectName){printAlignedLabel("Project",`${await getContextName(client)}/${projectName}`),output_manager_default.print(`
68
- Deletes the project and all of its deployments.
69
- This cannot be undone.
70
- `)}async function isTeamExplicit(client){let{flags}=parseArguments(client.argv.slice(2),{},{permissive:!0});if(flags["--scope"]||flags["--team"])return!0;let team=await client.resolveCurrentTeam({ask:!1});if(!team)return!1;let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID");if(orgId)return orgId===team;try{let teams=await getTeams(client);return teams.length===1&&teams[0].id===team}catch(err){return output_manager_default.debug(`Couldn't list teams: ${err}`),!1}}function refuse(client,opts){return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:opts.reason,message:opts.message,userActionRequired:opts.userActionRequired,next:[{command:opts.command,when:opts.when}]},2),output_manager_default.error(opts.message),output_manager_default.print(`
71
- ${opts.recovery}
72
- ${opts.command}
73
- `),2}var ProjectDangerouslyDeleteImmutableStaticAssetTelemetryClient=class extends TelemetryClient{trackCliArgumentPath(path){path&&this.trackCliArgument({arg:"path",value:this.redactedValue})}};async function dangerouslyDeleteImmutableStaticAsset(client,argv){let telemetry=new ProjectDangerouslyDeleteImmutableStaticAssetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(dangerouslyDeleteImmutableStaticAssetSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(err){return printError(err),2}let[path]=parsedArgs.args;if(!path)return output_manager_default.error(`Missing required argument. Usage: ${getCommandName("project dangerously-delete-immutable-static-asset <path>")}`),2;telemetry.trackCliArgumentPath(path);let projectName=parsedArgs.flags["--project"];telemetry.trackCliOptionProject(projectName);let link=await resolveProjectContext({client,projectNameOrId:projectName});if(link.status==="not_linked")return output_manager_default.error("No project linked. Run `vercel link` to link a project to this directory."),1;if(link.status==="error")return link.exitCode;let{project,org}=link;if(client.config.currentTeam=org.type==="team"?org.id:void 0,!canPrompt(client)){let globalFlags=getGlobalFlagsFromArgs(client.argv.slice(2)).filter(flag=>!flag.startsWith("--non-interactive")),interactiveCommand=getCommandNamePlain(`project dangerously-delete-immutable-static-asset ${quoteArg(path)} --project ${quoteArg(project.id)} ${globalFlags.map(quoteArg).join(" ")}`.trim());return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:"Deleting an immutable static asset permanently removes it from storage and cannot be undone. This cannot be confirmed non-interactively. The user must run this command in a terminal and type the asset path to confirm.",userActionRequired:!0,hint:"This action can not be automated so it should be surfaced to the user.",next:[{command:interactiveCommand,when:"user runs this command in an interactive terminal"}]},1),output_manager_default.error("This command must be run interactively because it permanently deletes the asset from storage."),1}if(output_manager_default.print(prependEmoji(`Deleting immutable static asset ${path} for project ${project.name} permanently removes it from storage for the production and preview environments. This cannot be undone. Requests to this URL will serve 410 for 7 days and then 404.
66
+ `);return}printAlignedLabel(changed?"Updated":"Unchanged","Project Settings",{gutter:"\u2713"}),printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=previousSettings[key]??null,next=getCurrentSetting(project,key),value=changedSettings.includes(key)?`${formatSettingValue(key,previous)} \u2192 ${formatSettingValue(key,next)}`:formatSettingValue(key,next);printAlignedLabel(settingLabels[key],value)}for(let row of advancedRows){let result=getAdvancedResultValue(project,row),value=row.changed?`${row.previous} \u2192 ${result}`:result;printAlignedLabel(row.label,value)}}function getUpdateCommand(framework="<slug>"){return`project update <name> --framework ${framework}`}function buildUpdateRetryCommand(client,{interactive,withYes}){let typedArgs=stripSensitiveAuthArgs(client.argv.slice(2)),rewritten=rewriteLegacyOnOffValues(typedArgs,updateSubcommand.options),args="error"in rewritten?typedArgs:rewritten.args,nextArgs=[];for(let index=0;index<args.length;index++){let arg=args[index];if(!(arg==="--yes"||arg==="-y")){if(interactive&&(arg==="--non-interactive"||arg.startsWith("--non-interactive="))){arg==="--non-interactive"&&(args[index+1]==="true"||args[index+1]==="false")&&index++;continue}nextArgs.push(arg)}}return withYes&&nextArgs.push("--yes"),getCommandNamePlain(nextArgs.map(quoteArg).join(" "))}function printUsageError(client,message,exitCode,reason,suggestedCommand=getUpdateCommand()){return outputAgentError(client,{status:"error",reason,message,next:[{command:buildCommandWithGlobalFlags(client.argv,suggestedCommand),when:"Update project settings"}]},exitCode),output_manager_default.error(message),exitCode}function printPlanError(client,message,teamOwned){let nextCommand=teamOwned?"buy pro":"teams switch";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message,userActionRequired:!0,next:[{command:buildCommandWithGlobalFlags(client.argv,nextCommand,void 0,{excludeFlags:["--non-interactive","--yes"]}),when:teamOwned?"Upgrade this team interactively":"Switch to a Pro or Enterprise team"}]},1),output_manager_default.error(message),output_manager_default.log(teamOwned?`Upgrade with ${getCommandName("buy pro")}.`:`Switch teams with ${getCommandName("teams switch")}.`),1}function printConfirmationRequiredError(client,hasCostImpact){let nextCommand=buildUpdateRetryCommand(client,{interactive:hasCostImpact,withYes:!hasCostImpact});return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:hasCostImpact?AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:hasCostImpact?"These project settings may affect charges and require interactive confirmation.":"Updating project settings requires confirmation. Re-run with --yes to apply the changes.",userActionRequired:hasCostImpact,next:[{command:nextCommand,when:hasCostImpact?"Review and confirm the charge-sensitive settings in a terminal":"Apply the requested settings without prompting"}]},1),output_manager_default.error(hasCostImpact?"Confirmation required. These settings may affect charges and must be confirmed in an interactive terminal.":"Confirmation required. Re-run with --yes or in an interactive terminal."),1}function getSandboxValidationError(project,requestedSettings){if(!hasSetting(requestedSettings,"sandboxRegion")&&!hasSetting(requestedSettings,"sandboxFailoverRegions"))return;let mergedSandbox={...project.sandbox};if(hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}return hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[]),validateSandboxConfig(mergedSandbox)}async function refreshProjectForNestedUpdate(client,project,body){return body.resourceConfig===void 0&&body.sandbox===void 0&&body.gitComments===void 0?project:client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{accountId:project.accountId})}async function update(client,argv){let telemetry=new ProjectUpdateTelemetryClient({opts:{store:client.telemetryEventStore}}),rewritten=rewriteLegacyOnOffValues(argv,updateSubcommand.options,client);if("error"in rewritten)return printUsageError(client,rewritten.error,2,"invalid_arguments");let parsedArgs;try{parsedArgs=parseArguments(rewritten.args,getFlagsSpecification(updateSubcommand.options))}catch(error){return outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}let{args,flags}=parsedArgs,[projectNameOrId]=args,frameworkInput=flags["--framework"],autoDetectInputs=flags["--auto-detect"]??[];if(telemetry.trackCliArgumentName(projectNameOrId),telemetry.trackCliOptionFramework(frameworkInput),telemetry.trackCliOptionBuildCommand(flags["--build-command"]),telemetry.trackCliOptionDevCommand(flags["--dev-command"]),telemetry.trackCliOptionInstallCommand(flags["--install-command"]),telemetry.trackCliOptionOutputDirectory(flags["--output-directory"]),telemetry.trackCliOptionRootDirectory(flags["--root-directory"]),telemetry.trackCliOptionAutoDetect(flags["--auto-detect"]),telemetry.trackCliOptionSandboxRegion(flags["--sandbox-region"]),telemetry.trackCliOptionSandboxFailoverRegions(flags["--sandbox-failover-regions"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFluidCompute(rewritten.legacy.get("--fluid-compute")),rewritten.legacy.has("--fluid-compute")||(telemetry.trackCliFlagFluidCompute(flags["--fluid-compute"]),telemetry.trackCliFlagNoFluidCompute(flags["--no-fluid-compute"])),telemetry.trackCliOptionFunctionCpu(flags["--function-cpu"]),telemetry.trackCliOptionBuildMachine(flags["--build-machine"]),telemetry.trackCliOptionElasticConcurrency(rewritten.legacy.get("--elastic-concurrency")),rewritten.legacy.has("--elastic-concurrency")||(telemetry.trackCliFlagElasticConcurrency(flags["--elastic-concurrency"]),telemetry.trackCliFlagNoElasticConcurrency(flags["--no-elastic-concurrency"])),telemetry.trackCliOptionNodeVersion(flags["--node-version"]),telemetry.trackCliFlagGitCommitStatus(flags["--git-commit-status"]),telemetry.trackCliFlagNoGitCommitStatus(flags["--no-git-commit-status"]),telemetry.trackCliFlagGitPrComments(flags["--git-pr-comments"]),telemetry.trackCliFlagNoGitPrComments(flags["--no-git-pr-comments"]),telemetry.trackCliFlagGithubDeploymentEvents(flags["--github-deployment-events"]),telemetry.trackCliFlagNoGithubDeploymentEvents(flags["--no-github-deployment-events"]),telemetry.trackCliFlagRequireVerifiedCommits(flags["--require-verified-commits"]),telemetry.trackCliFlagNoRequireVerifiedCommits(flags["--no-require-verified-commits"]),telemetry.trackCliFlagInheritVerifiedCommits(flags["--inherit-verified-commits"]),telemetry.trackCliFlagRepositoryDispatchEvents(flags["--repository-dispatch-events"]),telemetry.trackCliFlagNoRepositoryDispatchEvents(flags["--no-repository-dispatch-events"]),args.length>1)return printUsageError(client,`Invalid number of arguments. Usage: ${getCommandNamePlain("project update [name] [options]")}`,2,"invalid_arguments");let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return printUsageError(client,formatResult.error,2,"invalid_arguments");let requestedSettings={};if(frameworkInput!==void 0){let framework=resolveFramework(frameworkInput);if(!framework){let normalizedInput=frameworkInput.trim().toLowerCase(),suggestion=normalizedInput?did_you_mean_default(normalizedInput,frameworkSlugs,.7):void 0,message=suggestion?`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Use a framework slug such as "nextjs", or "other" to clear the preset.`;return printUsageError(client,message,2,"invalid_arguments",getUpdateCommand(suggestion))}requestedSettings.framework=framework.slug}let requestedAutoDetect=parseAutoDetectSettings(autoDetectInputs),autoDetectSet=new Set;for(let setting of requestedAutoDetect){if(!autoDetectSettings.includes(setting)){let suggestion=setting?did_you_mean_default(setting,autoDetectSettings,.7):void 0,message=suggestion?`Unknown auto-detect setting ${JSON.stringify(setting)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unknown auto-detect setting ${JSON.stringify(setting)}. Accepted settings: ${autoDetectSettings.join(", ")}.`;return printUsageError(client,message,2,"invalid_arguments",`project update <name> --auto-detect ${suggestion??"<setting>"}`)}autoDetectSet.add(setting)}for(let definition of buildSettingDefinitions){let value=flags[definition.flag];if(value!==void 0&&autoDetectSet.has(definition.autoDetect))return printUsageError(client,`Can't use "${definition.flag}" and "--auto-detect ${definition.autoDetect}" together. Choose one.`,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);if(value!==void 0){let validationError=validateSettingValue(definition,value);if(validationError)return printUsageError(client,validationError,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);requestedSettings[definition.key]=value}else autoDetectSet.has(definition.autoDetect)&&(requestedSettings[definition.key]=null)}let sandboxRegionInput=flags["--sandbox-region"];if(sandboxRegionInput!==void 0){let normalizedRegion=sandboxRegionInput.trim().toLowerCase();requestedSettings.sandboxRegion=normalizedRegion===""?null:normalizedRegion}let sandboxFailoverInput=flags["--sandbox-failover-regions"];sandboxFailoverInput!==void 0&&(requestedSettings.sandboxFailoverRegions=parseSandboxRegionList(sandboxFailoverInput));let providedAdvanced=[];for(let definition of advancedSettingDefinitions){if(definition.kind==="toggle"){let toggle=readOnOffOption(client,flags,{on:definition.flag,off:`--no-${definition.flag.slice(2)}`});if("error"in toggle)return printUsageError(client,toggle.error,2,"invalid_arguments",`project update <name> ${definition.flag}`);if(toggle.value!==void 0&&providedAdvanced.push({definition,value:toggle.value}),definition.inheritFlag&&flags[definition.inheritFlag]===!0){if(toggle.value!==void 0){let used=toggle.value?definition.flag:`--no-${definition.flag.slice(2)}`;return printUsageError(client,`Can't use ${used} with ${definition.inheritFlag}.`,2,"invalid_arguments",`project update <name> ${definition.inheritFlag}`)}providedAdvanced.push({definition,value:null})}continue}let raw=flags[definition.flag];if(raw===void 0)continue;let result=parseAdvanced(definition,raw);if(!result.ok)return printUsageError(client,result.message,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);providedAdvanced.push({definition,value:result.value})}if(settingOrder.every(key=>!hasSetting(requestedSettings,key))&&providedAdvanced.length===0)return printUsageError(client,'Provide at least one setting option. Run "vercel project update --help" to see every available option.',2,"missing_arguments");let project;try{project=await getProjectByCwdOrLink({client,commandName:"project update",projectNameOrId,forReadOnlyCommand:!0})}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let sandboxError=getSandboxValidationError(project,requestedSettings);if(sandboxError)return printUsageError(client,sandboxError,1,"invalid_arguments");let changes=computeSettingsChanges(project,requestedSettings,providedAdvanced),changeCount=changes.changedSettings.length,gatedProvided=providedAdvanced.filter(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.requiresPaidPlan?.(value));if(gatedProvided.length>0){let team,user,teamOwned=project.accountId.startsWith("team_");try{projectNameOrId?{team,user}=await getScope(client):{team,user}=await getScope(client,{resolveLocalScope:!0}),teamOwned&&team?.id!==project.accountId&&(team=await getTeamByIdOrSlug(client,project.accountId))}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let plan=(teamOwned?team?.billing:user?.billing)?.plan;if(!(plan==="pro"||plan==="enterprise")){let phrases=gatedProvided.map(({definition,value})=>`${definition.label} "${displayAdvanced(definition,value)}"`),list2=phrases.length===1?phrases[0]:`${phrases.slice(0,-1).join(", ")} and ${phrases[phrases.length-1]}`,verb=phrases.length>1?"require":"requires";return printPlanError(client,`${list2} ${verb} a Pro or Enterprise plan.`,teamOwned)}}let hasCostImpact=providedAdvanced.some(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.hasCostImpact?.(value));if(changeCount>0&&!(!!flags["--yes"]&&!hasCostImpact)){if(!canPrompt(client))return printConfirmationRequiredError(client,hasCostImpact);if(printChangePreview({project,previousSettings:changes.previousSettings,requestedSettings,changedSettings:changes.changedSettings,advancedRows:changes.advancedRows}),hasCostImpact&&printAlignedLabel("Charges","These settings may affect your Vercel charges.",{gutter:"!"}),!await client.input.confirm(`Update ${changeCount} ${changeCount===1?"setting":"settings"} for ${import_chalk10.default.bold(project.name)}?`,!1))return output_manager_default.log("Canceled"),0}if(changeCount>0){try{project=await refreshProjectForNestedUpdate(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let refreshedSandboxError=getSandboxValidationError(project,requestedSettings);if(refreshedSandboxError)return printUsageError(client,refreshedSandboxError,1,"invalid_arguments");changes=computeSettingsChanges(project,requestedSettings,providedAdvanced)}let updatedProject=project;if(changes.changedSettings.length>0)try{updatedProject=await patchProjectSettings(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}return writeUpdateResult({changedSettings:changes.changedSettings,project:updatedProject,previousSettings:changes.previousSettings,requestedSettings,advancedRows:changes.advancedRows,asJson:formatResult.jsonOutput||shouldEmitNonInteractiveCommandError(client),client}),0}var import_chalk11=__toESM(require_source(),1);var ProjectRmTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionConfirmName(name){this.trackRedactedCliOption("confirm-name",name)}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var e=encodeURIComponent;async function rm(client,argv){let telemetryClient=new ProjectRmTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs;if(args.length!==1)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk11.default.cyan(`${getCommandName("project delete <name>")}`)}`),2;let name=args[0];telemetryClient.trackCliArgumentName(name),telemetryClient.trackCliOptionConfirmName(flags["--confirm-name"]),telemetryClient.trackCliFlagYes(flags["--yes"]);let approval=await requireApproval(client,removeSubcommand.consequence,{kind:"delete",noun:"project",target:name,team:()=>getContextName(client),effects:["Deletes the project and all of its deployments."]},flags,{legacy:{stopExitCode:2,stopStatus:"action_required",declineExitCode:130,yesNeedsTeam:!0,pipedAnswer:!0}});if(!approval.approved)return approval.exitCode;try{await client.fetch(`/v2/projects/${e(name)}`,{method:"DELETE"})}catch(err){return isAPIError(err)&&err.status===404?(output_manager_default.error("No such project exists"),1):isAPIError(err)&&err.status===403?(output_manager_default.error(err.message),1):(printError(err),1)}return output_manager_default.print(`
67
+ `),printAlignedLabel("Deleted",name,{gutter:"\u2713"}),0}var ProjectDangerouslyDeleteImmutableStaticAssetTelemetryClient=class extends TelemetryClient{trackCliArgumentPath(path){path&&this.trackCliArgument({arg:"path",value:this.redactedValue})}};async function dangerouslyDeleteImmutableStaticAsset(client,argv){let telemetry=new ProjectDangerouslyDeleteImmutableStaticAssetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(dangerouslyDeleteImmutableStaticAssetSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(err){return printError(err),2}let[path]=parsedArgs.args;if(!path)return output_manager_default.error(`Missing required argument. Usage: ${getCommandName("project dangerously-delete-immutable-static-asset <path>")}`),2;telemetry.trackCliArgumentPath(path);let projectName=parsedArgs.flags["--project"];telemetry.trackCliOptionProject(projectName);let link=await resolveProjectContext({client,projectNameOrId:projectName});if(link.status==="not_linked")return output_manager_default.error("No project linked. Run `vercel link` to link a project to this directory."),1;if(link.status==="error")return link.exitCode;let{project,org}=link;if(client.config.currentTeam=org.type==="team"?org.id:void 0,!canPrompt(client)){let globalFlags=getGlobalFlagsFromArgs(client.argv.slice(2)).filter(flag=>!flag.startsWith("--non-interactive")),interactiveCommand=getCommandNamePlain(`project dangerously-delete-immutable-static-asset ${quoteArg(path)} --project ${quoteArg(project.id)} ${globalFlags.map(quoteArg).join(" ")}`.trim());return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:"Deleting an immutable static asset permanently removes it from storage and cannot be undone. This cannot be confirmed non-interactively. The user must run this command in a terminal and type the asset path to confirm.",userActionRequired:!0,hint:"This action can not be automated so it should be surfaced to the user.",next:[{command:interactiveCommand,when:"user runs this command in an interactive terminal"}]},1),output_manager_default.error("This command must be run interactively because it permanently deletes the asset from storage."),1}if(output_manager_default.print(prependEmoji(`Deleting immutable static asset ${path} for project ${project.name} permanently removes it from storage for the production and preview environments. This cannot be undone. Requests to this URL will serve 410 for 7 days and then 404.
74
68
  `,emoji("warning"))),await client.input.text({message:`Type ${path} to confirm the permanent deletion:`})!==path)return output_manager_default.log("Canceled"),0;try{await client.fetch(`/v1/edge-cache/dangerously-delete-immutable-static?projectIdOrName=${project.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path}),retry:{retries:0}})}catch(err){if(isAPIError(err)){if(err.code==="challenge_required")return output_manager_default.error(`This action requires a recent authentication. Run ${getCommandName("login")} and retry.`),1;if(err.status===404)return output_manager_default.error(err.code==="asset_not_found"&&err.serverMessage?err.serverMessage:"Project or asset not found."),1;if(err.status===400)return output_manager_default.error(err.serverMessage||"Invalid request."),1;if(err.status===403)return output_manager_default.error(err.serverMessage||"You do not have permission to delete this asset."),1}return printError(err),output_manager_default.log("The deletion outcome is unknown. Re-run to verify: a not-found response on re-run means this attempt succeeded and the URL now serves 410."),1}return output_manager_default.print(prependEmoji(`Successfully deleted immutable static asset ${path}; its URL now serves 410`,emoji("success"))+`
75
69
  `),0}var import_chalk12=__toESM(require_source(),1);var ProjectPauseTelemetryClient=class extends TelemetryClient{trackCliArgumentProject(value){value&&this.trackCliArgument({arg:"project",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function pause(client,argv){let telemetry=new ProjectPauseTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(pauseSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs;if(args.length>1)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk12.default.cyan(getCommandName("project pause [project]"))}`),2;let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;if(telemetry.trackCliArgumentProject(args[0]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),!canPrompt(client)){let globalFlags=getGlobalFlagsFromArgs(client.argv.slice(2)).filter(flag=>flag!=="--non-interactive"),interactiveCommand=getCommandNamePlain(`project pause ${args[0]?`${args[0]} `:""}${globalFlags.join(" ")}`.trim());return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:"Pausing a project stops serving production traffic and visitors will see an error page. This cannot be confirmed non-interactively: the user must run this command in a terminal and type the project name to confirm.",userActionRequired:!0,hint:"Surface this to the user; the confirmation cannot be automated.",next:[{command:interactiveCommand,when:"user runs this command in an interactive terminal"}]},1),output_manager_default.error("This command must be run interactively because it pauses production traffic."),1}let project;try{project=await getProjectByCwdOrLink({client,commandName:"project pause",projectNameOrId:args[0],forReadOnlyCommand:!0})}catch(error){return printError(error),1}if(output_manager_default.print(prependEmoji(`Pausing ${import_chalk12.default.bold(project.name)} will stop serving production traffic and visitors will see an error page.
76
70
  `,emoji("warning"))),await client.input.text({message:`Type ${project.name} to confirm pausing production traffic:`})!==project.name)return output_manager_default.log("Canceled"),0;let pauseStamp=stamp_default();try{await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/pause`,{method:"POST"})}catch(err){if(isAPIError(err)){if(err.status===404)return output_manager_default.error("Project not found."),1;if(err.status===403)return output_manager_default.error(err.serverMessage||"You do not have permission to pause this project."),1}return printError(err),1}return asJson?(client.stdout.write(`${JSON.stringify({id:project.id,name:project.name,paused:!0},null,2)}
77
- `),0):(output_manager_default.success(`Production traffic for ${import_chalk12.default.bold(project.name)} paused ${import_chalk12.default.gray(pauseStamp())}`),0)}var import_chalk13=__toESM(require_source(),1),import_pluralize=__toESM(require_pluralize(),1),import_async_sema=__toESM(require_async_sema(),1);var import_build_utils2=__toESM(require_build_utils(),1);async function isTeamExplicit2(client){if(scopeFlagPassed(client.argv)){let{flags}=parseArguments(client.argv.slice(2),{},{permissive:!0});if(flags["--scope"]||flags["--team"])return!0}let team=await client.resolveCurrentTeam({ask:!1});if(!team&&client.isTeamUnchosen())return!1;let orgId=(0,import_build_utils2.getPlatformEnv)("ORG_ID");try{if(!team)return orgId?orgId===(await getUser(client)).id:(await getTeams(client)).length===0;if(orgId)return orgId===team;let teams=await getTeams(client);return teams.length===1&&teams[0].id===team}catch(err){return output_manager_default.debug(`Couldn't check the scope: ${err}`),!1}}var ProjectResumeTelemetryClient=class extends TelemetryClient{trackCliArgumentProject(value){value.length>0&&this.trackCliArgument({arg:"project",value:this.redactedValue})}trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function resume(client,argv){let telemetry=new ProjectResumeTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(resumeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)}),printError(error),2}let{args,flags}=parsedArgs,formatResult=validateJsonOutput(flags);if(!formatResult.valid)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:formatResult.error}),output_manager_default.error(formatResult.error),2;let{jsonOutput}=formatResult,asJson=jsonOutput||!canPrompt(client);function fail(reason,message,humanMessage=message,exitCode=1){return shouldEmitNonInteractiveCommandError(client)?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message},exitCode),exitCode):jsonOutput||!canPrompt(client)?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason,message},null,2)}
71
+ `),0):(output_manager_default.success(`Production traffic for ${import_chalk12.default.bold(project.name)} paused ${import_chalk12.default.gray(pauseStamp())}`),0)}var import_chalk13=__toESM(require_source(),1),import_pluralize=__toESM(require_pluralize(),1),import_async_sema=__toESM(require_async_sema(),1);var import_build_utils=__toESM(require_build_utils(),1);async function isTeamExplicit(client){if(scopeFlagPassed(client.argv)){let{flags}=parseArguments(client.argv.slice(2),{},{permissive:!0});if(flags["--scope"]||flags["--team"])return!0}let team=await client.resolveCurrentTeam({ask:!1});if(!team&&client.isTeamUnchosen())return!1;let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID");try{if(!team)return orgId?orgId===(await getUser(client)).id:(await getTeams(client)).length===0;if(orgId)return orgId===team;let teams=await getTeams(client);return teams.length===1&&teams[0].id===team}catch(err){return output_manager_default.debug(`Couldn't check the scope: ${err}`),!1}}var ProjectResumeTelemetryClient=class extends TelemetryClient{trackCliArgumentProject(value){value.length>0&&this.trackCliArgument({arg:"project",value:this.redactedValue})}trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function resume(client,argv){let telemetry=new ProjectResumeTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(resumeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)}),printError(error),2}let{args,flags}=parsedArgs,formatResult=validateJsonOutput(flags);if(!formatResult.valid)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:formatResult.error}),output_manager_default.error(formatResult.error),2;let{jsonOutput}=formatResult,asJson=jsonOutput||!canPrompt(client);function fail(reason,message,humanMessage=message,exitCode=1){return shouldEmitNonInteractiveCommandError(client)?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message},exitCode),exitCode):jsonOutput||!canPrompt(client)?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason,message},null,2)}
78
72
  `),exitCode):(output_manager_default.error(humanMessage),exitCode)}let all=flags["--all"]??!1,yes=flags["--yes"]??!1;if(all&&args.length>0)return fail(AGENT_REASON.INVALID_ARGUMENTS,`Use either project names or --all, not both. Usage: ${getCommandName("project resume [project ...] | --all")}`,`Use either project names or --all, not both. Usage: ${import_chalk13.default.cyan(getCommandName("project resume [project ...] | --all"))}`,2);telemetry.trackCliArgumentProject(args),telemetry.trackCliFlagAll(all),telemetry.trackCliFlagYes(yes),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let names=[...new Set(args)];if(all||names.length>1)return resumeMany(client,{all,names,yes,jsonOutput,fail});let project;try{project=await getProjectByCwdOrLink({client,commandName:"project resume",projectNameOrId:names[0],forReadOnlyCommand:!0})}catch(error){return fail(error instanceof ProjectNotFound?AGENT_REASON.PROJECT_NOT_FOUND:error instanceof LinkRequiredError?AGENT_REASON.NOT_LINKED:AGENT_REASON.API_ERROR,error instanceof Error?error.message:String(error))}let resumeStamp=stamp_default();try{await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/unpause`,{method:"POST"})}catch(err){if(isAPIError(err)){if(err.status===404)return fail(AGENT_REASON.NOT_FOUND,"Project not found.");if(err.status===403)return fail("forbidden",err.serverMessage||"You do not have permission to resume this project.")}return fail(AGENT_REASON.API_ERROR,err instanceof Error?err.message:String(err))}return asJson?(client.stdout.write(`${JSON.stringify({id:project.id,name:project.name,paused:!1},null,2)}
79
- `),0):(output_manager_default.success(`Production traffic for ${import_chalk13.default.bold(project.name)} resumed ${import_chalk13.default.gray(resumeStamp())}`),0)}var LISTED_PROJECTS=5,TEAM_SLUG=/^[a-z0-9][a-z0-9-]*$/,UNPAUSE_CONCURRENCY=5,GATEWAY_STATUSES=new Set([502,503,504]);async function resumeMany(client,opts){let{all,names,yes,jsonOutput,fail}=opts,asJson=jsonOutput||!canPrompt(client),interactive=canPrompt(client)&&!jsonOutput,contextName,teamNamed2;try{contextName=await getContextName(client,{resolveLocalScope:all}),teamNamed2=!all||await isTeamExplicit2(client)}catch(err){return fail(AGENT_REASON.API_ERROR,err instanceof Error?err.message:String(err))}if(all&&yes&&!teamNamed2&&!interactive)return refuse2(client,{reason:AGENT_REASON.MISSING_SCOPE,message:"Can't resume every paused project without a team in non-interactive mode.",command:`${buildCommandWithYes(client.argv)} --scope <TEAM>`,when:"Replace <TEAM> with the team whose paused projects to resume",hint:"Ask the user which team to resume, then run the command in next[]. Do not choose a team yourself."});let projects,incomplete=!1;try{if(all)asJson||output_manager_default.spinner(`Finding paused projects in ${import_chalk13.default.bold(contextName)}`),{projects,incomplete}=await listPausedProjects(client);else{let found=await Promise.all(names.map(name=>getProjectByNameOrId(client,name))),missing=names.filter((_,i)=>found[i]instanceof ProjectNotFound);if(missing.length>0)return fail(AGENT_REASON.PROJECT_NOT_FOUND,missing.length===1?new ProjectNotFound(missing[0]).message:`There are no projects for ${joinWords(missing.map(name=>`"${name}"`))}`);projects=[...new Map(found.map(project=>[project.id,project])).values()]}}catch(err){return fail(AGENT_REASON.API_ERROR,err instanceof Error?err.message:String(err))}finally{output_manager_default.stopSpinner()}let paused=projects.filter(project=>project.paused),unchanged=projects.filter(project=>!project.paused),team=TEAM_SLUG.test(contextName)?contextName:"<TEAM>",scope=team==="<TEAM>"?"":` --scope ${team}`,suggest=command=>buildCommandWithGlobalFlags(client.argv,`${command}${scope}`,void 0,{excludeFlags:scope?["--team"]:[]}),rerun=incomplete?suggest("project resume --all"):void 0;if(paused.length===0)return asJson?(writeResults(client,projects.map(toUnchangedResult),incomplete,rerun?{command:rerun,when:RERUN_WHEN}:void 0),incomplete?1:0):(output_manager_default.print(all?` No paused projects in ${import_chalk13.default.bold(contextName)}.
73
+ `),0):(output_manager_default.success(`Production traffic for ${import_chalk13.default.bold(project.name)} resumed ${import_chalk13.default.gray(resumeStamp())}`),0)}var LISTED_PROJECTS=5,TEAM_SLUG=/^[a-z0-9][a-z0-9-]*$/,UNPAUSE_CONCURRENCY=5,GATEWAY_STATUSES=new Set([502,503,504]);async function resumeMany(client,opts){let{all,names,yes,jsonOutput,fail}=opts,asJson=jsonOutput||!canPrompt(client),interactive=canPrompt(client)&&!jsonOutput,contextName,teamNamed2;try{contextName=await getContextName(client,{resolveLocalScope:all}),teamNamed2=!all||await isTeamExplicit(client)}catch(err){return fail(AGENT_REASON.API_ERROR,err instanceof Error?err.message:String(err))}if(all&&yes&&!teamNamed2&&!interactive)return refuse(client,{reason:AGENT_REASON.MISSING_SCOPE,message:"Can't resume every paused project without a team in non-interactive mode.",command:`${buildCommandWithYes(client.argv)} --scope <TEAM>`,when:"Replace <TEAM> with the team whose paused projects to resume",hint:"Ask the user which team to resume, then run the command in next[]. Do not choose a team yourself."});let projects,incomplete=!1;try{if(all)asJson||output_manager_default.spinner(`Finding paused projects in ${import_chalk13.default.bold(contextName)}`),{projects,incomplete}=await listPausedProjects(client);else{let found=await Promise.all(names.map(name=>getProjectByNameOrId(client,name))),missing=names.filter((_,i)=>found[i]instanceof ProjectNotFound);if(missing.length>0)return fail(AGENT_REASON.PROJECT_NOT_FOUND,missing.length===1?new ProjectNotFound(missing[0]).message:`There are no projects for ${joinWords(missing.map(name=>`"${name}"`))}`);projects=[...new Map(found.map(project=>[project.id,project])).values()]}}catch(err){return fail(AGENT_REASON.API_ERROR,err instanceof Error?err.message:String(err))}finally{output_manager_default.stopSpinner()}let paused=projects.filter(project=>project.paused),unchanged=projects.filter(project=>!project.paused),team=TEAM_SLUG.test(contextName)?contextName:"<TEAM>",scope=team==="<TEAM>"?"":` --scope ${team}`,suggest=command=>buildCommandWithGlobalFlags(client.argv,`${command}${scope}`,void 0,{excludeFlags:scope?["--team"]:[]}),rerun=incomplete?suggest("project resume --all"):void 0;if(paused.length===0)return asJson?(writeResults(client,projects.map(toUnchangedResult),incomplete,rerun?{command:rerun,when:RERUN_WHEN}:void 0),incomplete?1:0):(output_manager_default.print(all?` No paused projects in ${import_chalk13.default.bold(contextName)}.
80
74
  `:` Nothing to resume. ${formatNames(unchanged)} ${unchanged.length===1?"isn't":"aren't"} paused.
81
75
  `),incomplete?(output_manager_default.warning(PAUSED_PROJECTS_INCOMPLETE),1):0);let count=(0,import_pluralize.default)("project",paused.length,!0);if((all||paused.length>1)&&!(yes&&teamNamed2))if(interactive){if(printAlignedLabel("Team",contextName),all&&printAlignedLabel("Projects",formatNames(paused)),unchanged.length>0&&printAlignedLabel("Not paused",formatNames(unchanged)),output_manager_default.print(`
82
76
  `),!await client.input.confirm(`Resume production traffic for ${count}?`,!1))return output_manager_default.print(` Canceled. Nothing was changed.
83
- `),130}else return refuse2(client,{reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:`Can't resume ${count} without --yes in non-interactive mode.`,command:`${buildCommandWithYes(client.argv)}${teamNamed2?"":` --scope ${team}`}`,when:`Only after a human approves resuming production traffic for ${count}${team==="<TEAM>"?". Replace <TEAM> with the team":` in ${team}`}`,userActionRequired:!0,hint:"Show the user the projects in data.projects and run the command in next[] only after they approve.",data:{team:contextName,effects:[`Resumes production traffic for ${count}.`],projects:paused.map(({id,name})=>({id,name}))}});let resumeStamp=stamp_default(),sema=new import_async_sema.default(UNPAUSE_CONCURRENCY),done=0;asJson||output_manager_default.spinner(`Resuming ${count}`);let results=await Promise.all(projects.map(async project=>{if(!project.paused)return toUnchangedResult(project);await sema.acquire();try{return await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/unpause`,{method:"POST"}),{id:project.id,name:project.name,outcome:"resumed"}}catch(err){return{id:project.id,name:project.name,...toFailure(err)}}finally{sema.release(),asJson||output_manager_default.spinner(`Resuming ${count} (${++done} done)`)}}));output_manager_default.stopSpinner();let notResumed=results.filter(result=>result.outcome==="failed"||result.outcome==="unknown"),retry=notResumed.length>0?suggest(`project resume ${notResumed.map(result=>result.id).join(" ")}${notResumed.length>1?" --yes":""}`):void 0;if(asJson){let next;return rerun?next={command:rerun,when:RERUN_WHEN}:retry&&(next={command:retry,when:RETRY_WHEN}),writeResults(client,results,incomplete,next),notResumed.length>0||incomplete?1:0}if(notResumed.length===0)printAlignedLabel("Resumed",`${count} ${import_chalk13.default.gray(resumeStamp())}`,{gutter:incomplete?void 0:"\u2713"}),unchanged.length>0&&printAlignedLabel("Not paused",formatNames(unchanged));else{let failed=notResumed.filter(result=>result.outcome==="failed"),unknown=notResumed.length-failed.length;output_manager_default.fatal([`Resumed ${paused.length-notResumed.length} of ${count}.`,failed.length>0&&`${failed.length} failed.`,unknown>0&&`${unknown} unknown.`].filter(Boolean).join(" "));for(let result of notResumed)printAlignedLabel(result.name,result.error.message)}return rerun?(output_manager_default.warning(PAUSED_PROJECTS_INCOMPLETE),output_manager_default.print(`
77
+ `),130}else return refuse(client,{reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:`Can't resume ${count} without --yes in non-interactive mode.`,command:`${buildCommandWithYes(client.argv)}${teamNamed2?"":` --scope ${team}`}`,when:`Only after a human approves resuming production traffic for ${count}${team==="<TEAM>"?". Replace <TEAM> with the team":` in ${team}`}`,userActionRequired:!0,hint:"Show the user the projects in data.projects and run the command in next[] only after they approve.",data:{team:contextName,effects:[`Resumes production traffic for ${count}.`],projects:paused.map(({id,name})=>({id,name}))}});let resumeStamp=stamp_default(),sema=new import_async_sema.default(UNPAUSE_CONCURRENCY),done=0;asJson||output_manager_default.spinner(`Resuming ${count}`);let results=await Promise.all(projects.map(async project=>{if(!project.paused)return toUnchangedResult(project);await sema.acquire();try{return await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/unpause`,{method:"POST"}),{id:project.id,name:project.name,outcome:"resumed"}}catch(err){return{id:project.id,name:project.name,...toFailure(err)}}finally{sema.release(),asJson||output_manager_default.spinner(`Resuming ${count} (${++done} done)`)}}));output_manager_default.stopSpinner();let notResumed=results.filter(result=>result.outcome==="failed"||result.outcome==="unknown"),retry=notResumed.length>0?suggest(`project resume ${notResumed.map(result=>result.id).join(" ")}${notResumed.length>1?" --yes":""}`):void 0;if(asJson){let next;return rerun?next={command:rerun,when:RERUN_WHEN}:retry&&(next={command:retry,when:RETRY_WHEN}),writeResults(client,results,incomplete,next),notResumed.length>0||incomplete?1:0}if(notResumed.length===0)printAlignedLabel("Resumed",`${count} ${import_chalk13.default.gray(resumeStamp())}`,{gutter:incomplete?void 0:"\u2713"}),unchanged.length>0&&printAlignedLabel("Not paused",formatNames(unchanged));else{let failed=notResumed.filter(result=>result.outcome==="failed"),unknown=notResumed.length-failed.length;output_manager_default.fatal([`Resumed ${paused.length-notResumed.length} of ${count}.`,failed.length>0&&`${failed.length} failed.`,unknown>0&&`${unknown} unknown.`].filter(Boolean).join(" "));for(let result of notResumed)printAlignedLabel(result.name,result.error.message)}return rerun?(output_manager_default.warning(PAUSED_PROJECTS_INCOMPLETE),output_manager_default.print(`
84
78
  Run this again to resume the rest:
85
79
  ${rerun}
86
80
  `),1):retry?(output_manager_default.print(`
87
81
  Resuming again is safe. Retry the ones that didn't resume:
88
82
  ${retry}
89
83
  `),1):0}function toUnchangedResult(project){return{id:project.id,name:project.name,outcome:"unchanged"}}function toFailure(err){return isAPIError(err)&&!GATEWAY_STATUSES.has(err.status)?err.status===404?{outcome:"failed",error:{code:AGENT_REASON.NOT_FOUND,message:"Project not found."}}:err.status===403?{outcome:"failed",error:{code:"forbidden",message:err.serverMessage||"You do not have permission to resume this project."}}:{outcome:"failed",error:{code:err.code||AGENT_REASON.API_ERROR,message:err.message}}:{outcome:"unknown",error:{code:AGENT_REASON.UNKNOWN_OUTCOME,message:`Couldn't confirm it resumed: ${err instanceof Error?err.message:String(err)}`}}}var RERUN_WHEN="To resume paused projects this run may have missed",RETRY_WHEN="To retry the projects that didn't resume. Resuming again is safe.";function writeResults(client,results,incomplete,next){let count=outcome=>results.filter(result=>result.outcome===outcome).length;client.stdout.write(`${JSON.stringify({results,summary:{succeeded:count("resumed"),failed:count("failed"),skipped:count("unchanged"),unknown:count("unknown")},...incomplete&&{warnings:[{reason:AGENT_REASON.INCOMPLETE_RESULTS,message:PAUSED_PROJECTS_INCOMPLETE}]},...next&&{next:[next]}},null,2)}
90
- `)}function formatNames(projects){let names=projects.slice(0,LISTED_PROJECTS).map(project=>project.name),more=projects.length-names.length;return more>0?`${names.join(", ")} and ${more} more`:joinWords(names)}function refuse2(client,opts){let payload={status:AGENT_STATUS.ACTION_REQUIRED,reason:opts.reason,message:opts.message,userActionRequired:opts.userActionRequired,hint:opts.hint,next:[{command:opts.command,when:opts.when}],data:opts.data};return shouldEmitNonInteractiveCommandError(client)?(outputActionRequired(client,payload,2),2):(client.stdout.write(`${JSON.stringify(payload,null,2)}
84
+ `)}function formatNames(projects){let names=projects.slice(0,LISTED_PROJECTS).map(project=>project.name),more=projects.length-names.length;return more>0?`${names.join(", ")} and ${more} more`:joinWords(names)}function refuse(client,opts){let payload={status:AGENT_STATUS.ACTION_REQUIRED,reason:opts.reason,message:opts.message,userActionRequired:opts.userActionRequired,hint:opts.hint,next:[{command:opts.command,when:opts.when}],data:opts.data};return shouldEmitNonInteractiveCommandError(client)?(outputActionRequired(client,payload,2),2):(client.stdout.write(`${JSON.stringify(payload,null,2)}
91
85
  `),2)}var import_chalk14=__toESM(require_source(),1);async function getOidcToken(client,argv){let flagsSpecification=getFlagsSpecification(tokenSubcommand.options),parsedArgs;try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs,formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;if(client.nonInteractive=!0,args.length>1)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk14.default.cyan(`${getCommandName("project token <name>")}`)}`),2;let[name]=args,project=await getProjectByCwdOrLink({autoConfirm:!!flags["--yes"],nonInteractive:!0,client,commandName:"project token",projectNameOrId:name});try{let res=await client.fetch(`/projects/${project.id}/token`,{method:"POST",accountId:project.accountId,body:JSON.stringify({source:"vercel-cli"}),headers:{"Content-Type":"application/json"}});return asJson?client.stdout.write(`${JSON.stringify({token:res.token},null,2)}
92
86
  `):client.stdout.write(`${res.token}
93
87
  `),0}catch(err){return isAPIError(err)&&err.status===404?(output_manager_default.error("No such project exists"),1):isAPIError(err)?(output_manager_default.error(err.message),1):(output_manager_default.error(`An unexpected error occurred!
@@ -95,7 +89,7 @@ ${err}`),1)}}var import_chalk15=__toESM(require_source(),1);async function setSp
95
89
  `),0):(output_manager_default.log(result.value?`${project.name} is on Speed Insights Plus.`:`Downgrade to the Speed Insights free tier confirmed for ${project.name}.`),result.value||output_manager_default.log("Data collection continues and will count toward your team's Speed Insights free tier allocation."),0)}async function speedInsights(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(speedInsightsSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)},2),printError(error),2}let firstArg=parsedArgs.args[0],hasActionWord=firstArg==="enable"||firstArg==="disable",action=firstArg==="disable"?"disable":"enable",projectNameOrId=hasActionWord?parsedArgs.args[1]:firstArg;if((hasActionWord?parsedArgs.args.slice(2):parsedArgs.args.slice(1)).length>0)return output_manager_default.error(`Invalid number of arguments. Usage: \`vercel project speed-insights ${hasActionWord?`${action} `:""}[name]\``),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;if(!canPrompt(client)){let globalFlags=getGlobalFlagsFromArgs(client.argv.slice(2)).filter(flag=>flag!=="--non-interactive"),interactiveCommand=getCommandNamePlain(`project speed-insights ${action}${projectNameOrId?` ${projectNameOrId}`:""}${globalFlags.length?` ${globalFlags.join(" ")}`:""}`.trim());return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:action==="enable"?"Upgrading to Speed Insights Plus adds a paid feature to this project and will incur charges on your account. This cannot be confirmed non-interactively: the user must run this command in a terminal and confirm.":"Downgrading to the Speed Insights free tier leaves data collection available. This cannot be confirmed non-interactively: the user must run this command in a terminal and confirm.",userActionRequired:!0,hint:action==="enable"?"Surface this to the user; upgrading to a paid tier cannot be automated.":"Surface this to the user; downgrading to the Speed Insights free tier requires interactive confirmation.",next:[{command:interactiveCommand,when:"user runs this command in an interactive terminal"}]},1),output_manager_default.error(action==="enable"?"This command must be run interactively because upgrading to Speed Insights Plus incurs charges.":"This command must be run interactively to downgrade to the Speed Insights free tier."),1}let project;try{project=await getProjectByCwdOrLink({client,commandName:"project speed-insights",projectNameOrId,forReadOnlyCommand:!0})}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"speed-insights"}),printError(err),1}if(action==="disable")return output_manager_default.print(`! Downgrading ${import_chalk15.default.bold(project.name)} to the Speed Insights free tier leaves data collection available.
96
90
  `),await client.input.confirm(`Downgrade ${project.name} to the Speed Insights free tier?`,!1)?setSpeedInsights(client,project,!1,asJson):(output_manager_default.log("Canceled"),0);let isHobby=!1;try{let{team,user}=await getScope(client);isHobby=(team?.billing?.plan??user?.billing?.plan)==="hobby"}catch{isHobby=!1}return output_manager_default.print(isHobby?`! Speed Insights Plus requires a Pro or Enterprise plan.
97
91
  `:`! Upgrading ${import_chalk15.default.bold(project.name)} to Speed Insights Plus will incur charges on your account.
98
- `),await client.input.confirm(`Upgrade ${project.name} to Speed Insights Plus?`,!1)?setSpeedInsights(client,project,!0,asJson):(output_manager_default.log("Canceled"),0)}var import_chalk16=__toESM(require_source(),1);var import_build_utils3=__toESM(require_build_utils(),1);var TEAM_SLUG_PATTERN=/^[a-z0-9][a-z0-9-]*$/;function projectTeamId(project){return project.accountId?.startsWith("team_")?project.accountId:void 0}async function isHobbyProject(client,project){try{let teamId=projectTeamId(project);return(teamId?(await getTeamByIdOrSlug(client,teamId,{useCurrentTeam:!1})).billing?.plan:(await getUser(client)).billing?.plan)==="hobby"}catch(err){return output_manager_default.debug(`Failed to resolve the project's billing plan: ${err instanceof Error?err.message:String(err)}`),!1}}function explicitAccountConflict(client,project){let orgId=(0,import_build_utils3.getPlatformEnv)("ORG_ID");return orgId&&orgId!==project.accountId?!0:scopeFlagPassed(client.argv)&&client.config.currentTeam!==projectTeamId(project)}function teamNamed(client,teamId){return scopeFlagPassed(client.argv)||(0,import_build_utils3.getPlatformEnv)("ORG_ID")===teamId}async function scopeValue(client,teamId){try{let team=await getTeamByIdOrSlug(client,teamId,{useCurrentTeam:!1});if(team.slug&&TEAM_SLUG_PATTERN.test(team.slug))return team.slug}catch(err){output_manager_default.debug(`Failed to resolve team ${teamId}: ${err instanceof Error?err.message:String(err)}`)}return teamId}async function projectLabel(client,project){let teamId=projectTeamId(project);return teamId?`${project.name} on team ${await scopeValue(client,teamId)}`:project.name}async function warnIfOutsideCurrentTeam(client,project){let currentTeam=client.config.currentTeam;if(!currentTeam||currentTeam===project.accountId)return;let teamId=projectTeamId(project),owner=teamId?`team ${await scopeValue(client,teamId)}`:"your personal account";output_manager_default.warn(`${project.name} belongs to ${owner}, not your current team. Using ${owner}.`)}async function refuseExplicitAccountConflict(client,opts){if(!explicitAccountConflict(client,opts.project))return;let teamId=projectTeamId(opts.project),ownerScope=teamId?await scopeValue(client,teamId):void 0,owner=ownerScope?`team ${ownerScope}`:"a personal account",message=`${opts.consequence} --scope or VERCEL_ORG_ID names a different account than the project's owner, ${owner}. Nothing was changed.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFLICT,message,userActionRequired:!0,hint:ownerScope?`Check that the project link is correct. To act on ${owner}, pass --scope ${ownerScope} or set VERCEL_ORG_ID to that team's ID, once the user approves.`:"Check that the project link is correct, then run the command without --scope or VERCEL_ORG_ID."},1),output_manager_default.error(message),{kind:"refused",exitCode:1}}async function resolveProjectFeatureConsent(client,opts){let teamId=projectTeamId(opts.project),conflict=await refuseExplicitAccountConflict(client,opts);if(conflict)return conflict;let needsTeam=opts.billable&&teamId!==void 0&&!teamNamed(client,teamId);if(opts.yes&&!needsTeam)return{kind:"granted"};if(canPrompt(client))return{kind:"prompt",team:teamId?await scopeValue(client,teamId):void 0};let scope=needsTeam&&teamId?await scopeValue(client,teamId):void 0,missing=[...opts.yes?[]:["--yes"],...scope?["--scope"]:[]],nextCommand=buildCommandWithGlobalFlags(client.argv,`${opts.command} ${opts.action}${opts.projectArg?` ${quoteArg(opts.projectArg)}`:""} --yes${scope?` --scope ${scope}`:""}`),confirmWith=missing.join(" and "),message=`${opts.consequence} Confirm with ${confirmWith} to continue. Nothing was changed.`,reason=opts.yes?AGENT_REASON.MISSING_SCOPE:AGENT_REASON.CONFIRMATION_REQUIRED;return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message,userActionRequired:!0,missing,hint:"Ask the user to approve this change before running the next command. Do not add --yes without their approval.",next:[{command:nextCommand,when:`Only after the user approves the change${scope?` to team ${scope}`:""}`}]},1),output_manager_default.error(`${message}
92
+ `),await client.input.confirm(`Upgrade ${project.name} to Speed Insights Plus?`,!1)?setSpeedInsights(client,project,!0,asJson):(output_manager_default.log("Canceled"),0)}var import_chalk16=__toESM(require_source(),1);var import_build_utils2=__toESM(require_build_utils(),1);var TEAM_SLUG_PATTERN=/^[a-z0-9][a-z0-9-]*$/;function projectTeamId(project){return project.accountId?.startsWith("team_")?project.accountId:void 0}async function isHobbyProject(client,project){try{let teamId=projectTeamId(project);return(teamId?(await getTeamByIdOrSlug(client,teamId,{useCurrentTeam:!1})).billing?.plan:(await getUser(client)).billing?.plan)==="hobby"}catch(err){return output_manager_default.debug(`Failed to resolve the project's billing plan: ${err instanceof Error?err.message:String(err)}`),!1}}function explicitAccountConflict(client,project){let orgId=(0,import_build_utils2.getPlatformEnv)("ORG_ID");return orgId&&orgId!==project.accountId?!0:scopeFlagPassed(client.argv)&&client.config.currentTeam!==projectTeamId(project)}function teamNamed(client,teamId){return scopeFlagPassed(client.argv)||(0,import_build_utils2.getPlatformEnv)("ORG_ID")===teamId}async function scopeValue(client,teamId){try{let team=await getTeamByIdOrSlug(client,teamId,{useCurrentTeam:!1});if(team.slug&&TEAM_SLUG_PATTERN.test(team.slug))return team.slug}catch(err){output_manager_default.debug(`Failed to resolve team ${teamId}: ${err instanceof Error?err.message:String(err)}`)}return teamId}async function projectLabel(client,project){let teamId=projectTeamId(project);return teamId?`${project.name} on team ${await scopeValue(client,teamId)}`:project.name}async function warnIfOutsideCurrentTeam(client,project){let currentTeam=client.config.currentTeam;if(!currentTeam||currentTeam===project.accountId)return;let teamId=projectTeamId(project),owner=teamId?`team ${await scopeValue(client,teamId)}`:"your personal account";output_manager_default.warn(`${project.name} belongs to ${owner}, not your current team. Using ${owner}.`)}async function refuseExplicitAccountConflict(client,opts){if(!explicitAccountConflict(client,opts.project))return;let teamId=projectTeamId(opts.project),ownerScope=teamId?await scopeValue(client,teamId):void 0,owner=ownerScope?`team ${ownerScope}`:"a personal account",message=`${opts.consequence} --scope or VERCEL_ORG_ID names a different account than the project's owner, ${owner}. Nothing was changed.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFLICT,message,userActionRequired:!0,hint:ownerScope?`Check that the project link is correct. To act on ${owner}, pass --scope ${ownerScope} or set VERCEL_ORG_ID to that team's ID, once the user approves.`:"Check that the project link is correct, then run the command without --scope or VERCEL_ORG_ID."},1),output_manager_default.error(message),{kind:"refused",exitCode:1}}async function resolveProjectFeatureConsent(client,opts){let teamId=projectTeamId(opts.project),conflict=await refuseExplicitAccountConflict(client,opts);if(conflict)return conflict;let needsTeam=opts.billable&&teamId!==void 0&&!teamNamed(client,teamId);if(opts.yes&&!needsTeam)return{kind:"granted"};if(canPrompt(client))return{kind:"prompt",team:teamId?await scopeValue(client,teamId):void 0};let scope=needsTeam&&teamId?await scopeValue(client,teamId):void 0,missing=[...opts.yes?[]:["--yes"],...scope?["--scope"]:[]],nextCommand=buildCommandWithGlobalFlags(client.argv,`${opts.command} ${opts.action}${opts.projectArg?` ${quoteArg(opts.projectArg)}`:""} --yes${scope?` --scope ${scope}`:""}`),confirmWith=missing.join(" and "),message=`${opts.consequence} Confirm with ${confirmWith} to continue. Nothing was changed.`,reason=opts.yes?AGENT_REASON.MISSING_SCOPE:AGENT_REASON.CONFIRMATION_REQUIRED;return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message,userActionRequired:!0,missing,hint:"Ask the user to approve this change before running the next command. Do not add --yes without their approval.",next:[{command:nextCommand,when:`Only after the user approves the change${scope?` to team ${scope}`:""}`}]},1),output_manager_default.error(`${message}
99
93
 
100
94
  Once approved, run:
101
95
  ${nextCommand}`),{kind:"refused",exitCode:1}}async function setWebAnalytics(client,project,enabled,asJson){let result;try{let query=new URLSearchParams({projectId:project.id});result=await client.fetch(`/web/insights/toggle?${query.toString()}`,{method:"POST",json:!0,body:{value:enabled},accountId:project.accountId})}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"web-analytics"}),printError(err),1}return asJson?(client.stdout.write(`${JSON.stringify({enabled:result.value,projectId:project.id,projectName:project.name},null,2)}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{createCertForCns,extractDomain,isWildcardAlias,setupDomain}from"./chunks/chunk-3AX7ZZJ7.js";import"./chunks/chunk-DRLGZXAL.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-BZV2S4H6.js";import"./chunks/chunk-GHAY4PSD.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,buy,canPromptForCharge,deleteCertById,findBudget,formatUsd,formatUsdWhole,getDomains,getProjectDomain,getTeamMemberByIdentifier,getTeamSpend,getWebhook,hasPauseThreshold,isDomainExternal,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeAliasById,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,teamMemberLabel,thresholdsForSet,toBudgetState}from"./chunks/chunk-FOQD62WW.js";import{require_cjs}from"./chunks/chunk-VZGTL3YC.js";import"./chunks/chunk-22UXDTCE.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-FI5O4WHD.js";import{ellipsis}from"./chunks/chunk-AKOYIH3A.js";import{external_exports}from"./chunks/chunk-2AMO2VMV.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{getAliases}from"./chunks/chunk-L6CZL2IQ.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-UNASHUWQ.js";import"./chunks/chunk-4ELZOAQH.js";import"./chunks/chunk-JUAHDOL6.js";import"./chunks/chunk-UI2H2EIM.js";import"./chunks/chunk-UUDE44NV.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import{box}from"./chunks/chunk-LM3YPF3K.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-SODZSOOL.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import"./chunks/chunk-PFD7LETF.js";import{writeJsonError}from"./chunks/chunk-QCIIUQV3.js";import"./chunks/chunk-TOTTVS5P.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-AX3V7N44.js";import{DEFAULT_LIST_LIMIT,MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-PMEYNJU2.js";import{getProtectionForDeploymentAlias,getProtectionForProductionDomain,readEnabledProtection}from"./chunks/chunk-O4CQRV2G.js";import"./chunks/chunk-VT6RIZJH.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{ensureLink}from"./chunks/chunk-HR462OEG.js";import{getDeployment,toHost}from"./chunks/chunk-VU3RBRDH.js";import{mapCertError}from"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-6RUAAORO.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-V32V4SXB.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-G7H33IKQ.js";import{getTeams}from"./chunks/chunk-BPRGAX62.js";import{CREDIT_TYPE_LABELS,INVOICE_STATUSES,SUPPORTED_ADDON_NAMES,SUPPORTED_CREDIT_TYPES,addSubcommand10 as addSubcommand4,addSubcommand11 as addSubcommand5,addSubcommand2 as addSubcommand,addSubcommand4 as addSubcommand2,addSubcommand5 as addSubcommand3,addonSubcommand,agentRunsCommand,alertsListSubcommand2 as alertsListSubcommand,alertsSubcommand2 as alertsSubcommand,aliasCommand,backupsSubcommand,bisectCommand,budgetCommand,buyCommand,certsCommand,connectSubcommand,createSubcommand10 as createSubcommand2,createSubcommand7 as createSubcommand,creditsSubcommand,disconnectSubcommand,dnsCommand,domainSubcommand,getCommandAliases,getSubcommand,getSubcommand5 as getSubcommand2,gitCommand,globalConfigCommand,importSubcommand,initCommand,inspectSubcommand,inspectSubcommand12 as inspectSubcommand3,inspectSubcommand14 as inspectSubcommand4,inspectSubcommand6 as inspectSubcommand2,inviteSubcommand,invoicesDownloadSubcommand,invoicesInspectSubcommand,invoicesListSubcommand,invoicesSubcommand,invoicesUpcomingSubcommand,isCustomEnvironmentAddonAlias,issueSubcommand,itemsSubcommand,listSubcommand,listSubcommand11 as listSubcommand4,listSubcommand15 as listSubcommand5,listSubcommand18 as listSubcommand6,listSubcommand24 as listSubcommand7,listSubcommand25 as listSubcommand8,listSubcommand28 as listSubcommand9,listSubcommand29 as listSubcommand10,listSubcommand3 as listSubcommand2,listSubcommand5 as listSubcommand3,membersInviteSubcommand,membersRemoveSubcommand,membersSubcommand2 as membersSubcommand,organizationsCommand,proSubcommand,projectsSubcommand,removeSubcommand15 as removeSubcommand5,removeSubcommand16 as removeSubcommand6,removeSubcommand17 as removeSubcommand7,removeSubcommand2 as removeSubcommand,removeSubcommand4 as removeSubcommand2,removeSubcommand7 as removeSubcommand3,removeSubcommand9 as removeSubcommand4,requestSubcommand,setSubcommand,setSubcommand3 as setSubcommand2,ssoSubcommand,switchSubcommand,teamsAddSubcommand,teamsCommand,teamsCreateSubcommand,teamsListSubcommand,teamsSubcommand,tokensCommand,tokensSubcommand,traceSubcommand,updateSubcommand2 as updateSubcommand,updateSubcommand6 as updateSubcommand2,updateSubcommand9 as updateSubcommand3,webhooksCommand}from"./chunks/chunk-FTACGWII.js";import"./chunks/chunk-CZOD25BC.js";import"./chunks/chunk-77LSSWXL.js";import"./chunks/chunk-MUNGQJGO.js";import"./chunks/chunk-W5GHMAHP.js";import"./chunks/chunk-ANCWFEOM.js";import"./chunks/chunk-QVMU7ZKQ.js";import"./chunks/chunk-TL4ZLZ2Q.js";import"./chunks/chunk-VD2FK6OF.js";import"./chunks/chunk-JVNIDSP5.js";import"./chunks/chunk-NLKM5LR5.js";import"./chunks/chunk-BB5UMZMF.js";import"./chunks/chunk-4LGAV2WN.js";import"./chunks/chunk-EJZNJN4N.js";import"./chunks/chunk-S5JBQCBA.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-FAVZ6WVS.js";import"./chunks/chunk-5KE67O45.js";import"./chunks/chunk-T7HE23VK.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-CUBRYWA2.js";import{printError}from"./chunks/chunk-Q4GX2UTG.js";import{help,remoteText}from"./chunks/chunk-GKALP6QD.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-TZ6MSTOI.js";import{TelemetryClient}from"./chunks/chunk-VPUYTI5E.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getErrorRecovery,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-ZUI5EMXD.js";import"./chunks/chunk-FY4ORPZH.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-KNAOHPOI.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-56UH6NQ3.js";import"./chunks/chunk-4NTBYNFR.js";import{isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-C4N4LKPM.js";import{getTeamByIdOrSlug}from"./chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-4SAVH3H7.js";import{AliasInUse,CertConfigurationError,CertError,CertMissing,CertNotFound,CertOrderNotFound,CertsPermissionDenied,DNSConflictingRecord,DNSInvalidPort,DNSInvalidType,DNSPermissionDenied,DeploymentFailedAliasImpossible,DeploymentNotFound,DeploymentNotReady,DeploymentPermissionDenied,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainNotAvailable,DomainNotFound,DomainPaymentError,DomainPermissionDenied,DomainPriceChanged,DomainPurchasePending,DomainPurchaseRefundFailed,DomainPurchaseRefunded,InvalidAlias,InvalidAliasInConfig,InvalidDeploymentId,InvalidDomain,NoAliasInConfig,NowError,SourceNotFound,TLDNotSupportedViaCLI,TooManyRequests,UnexpectedDomainPurchaseError,UnsupportedTLD,UserAborted,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,quoteArg,stripSensitiveAuthArgs}from"./chunks/chunk-CKTLP5GX.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import{fetch,toNodeReadable}from"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"./chunks/chunk-CFYTFXX6.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var AgentRunsTelemetryClient=class extends TelemetryClient{trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandTrace(actual){this.trackCliSubcommand({subcommand:"trace",value:actual})}trackCliSubcommandProjects(actual){this.trackCliSubcommand({subcommand:"projects",value:actual})}};var import_chalk2=__toESM(require_source(),1);var AGENT_RUNS_API_BASE="https://vercel.com/api/observability/agent-runs",DEFAULT_TRACE_MAX_FIELD_LENGTH=8e3,MAX_TRACE_FIELD_LENGTH=5e4;function getAgentRunsApiBase(){return process.env.VERCEL_AGENT_RUNS_API_URL||AGENT_RUNS_API_BASE}function resolveAgentRunsWindow(since,until){if(!since)return;let from=parseTimeFlag(since),to=until?parseTimeFlag(until):new Date;return{from:Math.floor(from.getTime()/1e3),to:Math.floor(to.getTime()/1e3)}}function buildAgentRunsUrl(query){let url=new URL(getAgentRunsApiBase());url.searchParams.set("teamSlug",query.teamId),query.view==="team"?url.searchParams.set("view","team"):query.projectId&&url.searchParams.set("project",query.projectId),url.searchParams.set("environment",query.environment||"production");let window=query.window??resolveAgentRunsWindow(query.since,query.until);return window&&(url.searchParams.set("from",String(window.from)),url.searchParams.set("to",String(window.to))),typeof query.page=="number"&&url.searchParams.set("page",String(Math.max(1,Math.floor(query.page)))),typeof query.pageSize=="number"&&url.searchParams.set("pageSize",String(Math.max(1,Math.floor(query.pageSize)))),query.search&&url.searchParams.set("search",query.search),query.cursor&&url.searchParams.set("cursor",query.cursor),query.runId&&url.searchParams.set("runId",query.runId),query.trace&&url.searchParams.set("trace","1"),query.traceStreamId&&url.searchParams.set("traceStreamId",query.traceStreamId),query.traceAfterCursor&&url.searchParams.set("traceAfterCursor",query.traceAfterCursor),typeof query.traceBeforeChunk=="number"&&url.searchParams.set("traceBeforeChunk",String(query.traceBeforeChunk)),url.href}async function fetchAgentRuns(client,query){return client.fetch(buildAgentRunsUrl(query),{useCurrentTeam:!1})}var MISSING_PROJECT_SCOPE_MESSAGE="No linked project found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team> and --project <name>.",MISSING_TEAM_SCOPE_MESSAGE="No team scope found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team>.";async function resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject}){let flagScope=scopeFlag?.trim()||void 0,flagProject=projectFlag?.trim()||void 0;if(flagScope&&(flagProject||!requireProject))return{ok:!0,teamId:flagScope,projectId:flagProject,contextName:flagProject?`${flagScope}/${flagProject}`:flagScope};let linkedProject=await getLinkedProject(client);if(linkedProject.status==="error")return{ok:!1,exitCode:linkedProject.exitCode};if(linkedProject.status==="linked"){let{org,project}=linkedProject;if(flagScope&&flagScope!==org.id&&flagScope!==org.slug)return{ok:!1,exitCode:invalidArguments(client,`\`--scope ${flagScope}\` doesn't match the linked project's team. Pass \`--project <name>\` to query a project in that team.`)};let teamName=flagScope??org.slug,projectName=requireProject?flagProject??project.name:flagProject;return{ok:!0,teamId:flagScope??org.id,projectId:requireProject?flagProject??project.id:flagProject,contextName:projectName?`${teamName}/${projectName}`:teamName}}let message=requireProject?MISSING_PROJECT_SCOPE_MESSAGE:MISSING_TEAM_SCOPE_MESSAGE;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_LINKED,message}),output_manager_default.error(message),{ok:!1,exitCode:1}}function normalizeApiErrorText(message){return message.replace(/\s*\(\d{3}\)\s*$/,"").trim()}function handleAgentRunsApiError(client,err){if(isAPIError(err)){let reason=err.status===403?"forbidden":err.status===401?"not_authorized":err.status===404?AGENT_REASON.NOT_FOUND:err.status===429?"rate_limited":AGENT_REASON.API_ERROR;outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message:normalizeApiErrorText(err.serverMessage||err.message)})}else outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:"unexpected_error",message:err instanceof Error?err.message:String(err)});printError(err)}function invalidArguments(client,message){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message}),output_manager_default.error(message),2}function normalizeTraceMaxFieldLength(value){return typeof value!="number"||!Number.isFinite(value)?DEFAULT_TRACE_MAX_FIELD_LENGTH:Math.min(Math.max(Math.floor(value),0),MAX_TRACE_FIELD_LENGTH)}function truncateLargeStrings(value,maxLength){return maxLength===0?value:typeof value=="string"?value.length<=maxLength?value:`${value.slice(0,maxLength)}... [truncated ${value.length-maxLength} chars]`:Array.isArray(value)?value.map(item=>truncateLargeStrings(item,maxLength)):value&&typeof value=="object"?Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,truncateLargeStrings(entry,maxLength)])):value}import{createHash}from"node:crypto";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1),import_title=__toESM(require_lib(),1);function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function quoteCommandArgument(value,placeholder){return/[\x00-\x1F\x7F]/.test(value)?placeholder:/^[A-Za-z0-9_./:=@%+,-]+$/.test(value)?value:`'${value.replaceAll("'",`'"'"'`)}'`}function asArray(value){return Array.isArray(value)?value.filter(isRecord):[]}function readString(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="string"&&value.length>0)return value}}function readNumber(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value}}function readRecord(record,...keys){if(record)for(let key of keys){let value=record[key];if(isRecord(value))return value}}function readTimestampMs(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value=="string"&&value.length>0){let parsed=Date.parse(value);if(!Number.isNaN(parsed))return parsed}}}var PLACEHOLDER="-";function runId(run){return readString(run,"id","runId")??PLACEHOLDER}function formatRunStatus(run){let status=readString(run,"status","state");if(!status)return PLACEHOLDER;let label=(0,import_title.default)(status.replace(/[_-]+/g," ")),CIRCLE="\u25CF ";switch(status.toLowerCase()){case"completed":case"succeeded":case"success":case"ready":return import_chalk.default.green(CIRCLE)+label;case"error":case"errored":case"failed":case"timed out":case"timed_out":return import_chalk.default.red(CIRCLE)+label;case"running":case"in progress":case"in_progress":case"pending":case"queued":case"started":return import_chalk.default.yellow(CIRCLE)+label;case"canceled":case"cancelled":return import_chalk.default.gray(label);default:return label}}function runModel(run){return readString(run,"model")??PLACEHOLDER}function runTrigger(run){return readString(run,"trigger")??readString(readRecord(run,"trigger"),"label","type","name")??PLACEHOLDER}function runTitle(run){return readString(run,"title","name")}function runStartedAtMs(run){return readTimestampMs(run,"createdAt","startedAt","startTime")}function runDurationMs(run){let explicit=readNumber(run,"durationMs","duration");if(explicit!==void 0)return explicit;let start=readTimestampMs(run,"startedAt","createdAt","startTime"),end=readTimestampMs(run,"endedAt","completedAt","endTime");if(start!==void 0&&end!==void 0&&end>=start)return end-start}function runTotalTokens(run){let usage=readRecord(run,"usage")??run,total=readNumber(usage,"totalTokens","total");if(total!==void 0)return total;let input=readNumber(usage,"inputTokens","promptTokens","input"),output=readNumber(usage,"outputTokens","completionTokens","output");if(input!==void 0||output!==void 0)return(input??0)+(output??0)}function formatAge(timestampMs){if(timestampMs===void 0)return PLACEHOLDER;let delta=Date.now()-timestampMs;return delta<1e3?"just now":`${(0,import_ms.default)(delta)} ago`}function formatTimestamp(timestampMs){return timestampMs===void 0?PLACEHOLDER:new Date(timestampMs).toISOString()}function formatDurationMs(value){return value===void 0?PLACEHOLDER:value<1e3?`${Math.round(value)}ms`:value<6e4?`${(value/1e3).toFixed(1)}s`:(0,import_ms.default)(Math.round(value))}function formatCount(value){return value===void 0?PLACEHOLDER:value<1e4?String(value):value<1e6?`${(value/1e3).toFixed(1)}k`:`${(value/1e6).toFixed(1)}m`}var MAX_TOKEN_LENGTH=8192,MAX_SOURCE_OFFSET=1e4,OTEL_CURSOR_PATTERN=/^[A-Za-z0-9_-]{1,4096}$/,SOURCE_CURSOR_PATTERN=/^[0-9a-z]+\.[0-9a-z]+(\.[0-9a-z]+\.[0-9a-z]+(\.[A-Za-z0-9_-]{1,4096})?)?$/,FILTERS_LENGTH=22;function isSourceOffset(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0&&value<=MAX_SOURCE_OFFSET}function isEpoch(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>0}function isWindow(value){if(!isRecord(value))return!1;let{from,to}=value;return isEpoch(from)&&isEpoch(to)&&from<to}function encodeAgentRunsSourceCursor(offsets){if(!offsets)return;let{otel,workflow,otelCursor}=offsets;if(!isSourceOffset(otel)||!isSourceOffset(workflow))return;let parts=[otel.toString(36),workflow.toString(36)],range=offsets.otelRange;if(range!==void 0){if(!isWindow(range))return;parts.push(range.from.toString(36),range.to.toString(36))}if(otelCursor!==void 0){if(range===void 0||typeof otelCursor!="string"||!OTEL_CURSOR_PATTERN.test(otelCursor))return;parts.push(otelCursor)}return parts.join(".")}function getAgentRunsListFilters({teamId,projectId,environment,search}){return createHash("sha256").update(JSON.stringify([teamId,projectId??null,environment||"production",search||null])).digest("base64url").slice(0,FILTERS_LENGTH)}function encodeAgentRunsListContinuation(continuation){return Buffer.from(JSON.stringify(continuation),"utf8").toString("base64url")}function parseAgentRunsListContinuation(value){if(value.length===0||value.length>MAX_TOKEN_LENGTH||!/^[A-Za-z0-9_-]+$/.test(value))return;let decoded;try{decoded=JSON.parse(Buffer.from(value,"base64url").toString("utf8"))}catch{return}if(!(!isRecord(decoded)||decoded.version!==1||typeof decoded.cursor!="string"||!SOURCE_CURSOR_PATTERN.test(decoded.cursor)||typeof decoded.page!="number"||!Number.isSafeInteger(decoded.page)||decoded.page<2||typeof decoded.filters!="string"||decoded.filters.length!==FILTERS_LENGTH||!isWindow(decoded.window)))return{version:1,cursor:decoded.cursor,page:decoded.page,window:{from:decoded.window.from,to:decoded.window.to},filters:decoded.filters}}var AgentRunsQueryTelemetryClient=class extends TelemetryClient{trackCliOptionEnvironment(value){value&&this.trackCliOption({option:"environment",value:["production","preview"].includes(value)?value:this.redactedValue})}trackCliOptionSince(value){value&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(value){value&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionProject(value){value&&this.trackCliOption({option:"project",value:this.redactedValue})}trackCliFlagJson(value){value&&this.trackCliFlag("json")}};var AgentRunsListTelemetryClient=class extends AgentRunsQueryTelemetryClient{trackCliOptionQuery(value){value&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionSearch(value){value&&this.trackCliOption({option:"search",value:this.redactedValue})}trackCliOptionNext(value){value!==void 0&&this.trackCliOption({option:"next",value:/^\d+$/.test(value)?value:this.redactedValue})}trackCliOptionPage(value){typeof value=="number"&&this.trackCliOption({option:"page",value:String(value)})}trackCliOptionLimit(value){typeof value=="number"&&this.trackCliOption({option:"limit",value:String(value)})}};var DEFAULT_LIST_WINDOW_SECONDS=12*60*60;function getDefaultListWindow(){let to=Math.floor(Date.now()/1e3);return{from:to-DEFAULT_LIST_WINDOW_SECONDS,to}}function buildListPageCommand({argv,window,next}){let args=argv.slice(2),delimiter=args.indexOf("--"),own=delimiter===-1?args:args.slice(0,delimiter),passthrough=delimiter===-1?[]:args.slice(delimiter),kept=argv.slice(0,2);for(let i=0;i<own.length;i++){let arg=own[i],name=normalizeFlagName(arg);if(name==="--since"||name==="--until"){arg.includes("=")||i++;continue}kept.push(arg)}return window&&kept.push("--since",new Date(window.from*1e3).toISOString(),"--until",new Date(window.to*1e3).toISOString()),getNextPageCommand([...kept,...passthrough],next,["--page"])}function printNextPage(command){output_manager_default.print(`
7
+ import{createCertForCns,extractDomain,isWildcardAlias,setupDomain}from"./chunks/chunk-3PKL2PTF.js";import"./chunks/chunk-BIRSJSAO.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-U2TQFAO3.js";import"./chunks/chunk-GHAY4PSD.js";import{buy,deleteCertById,getDomains,getProjectDomain,getTeamMemberByIdentifier,isDomainExternal,removeAliasById,teamMemberLabel}from"./chunks/chunk-TILI4QBL.js";import{require_cjs}from"./chunks/chunk-N5AN4JZL.js";import"./chunks/chunk-NZRBJB6T.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{requireApproval}from"./chunks/chunk-OII46FDN.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,canPromptForCharge,findBudget,formatUsd,formatUsdWhole,getTeamSpend,getWebhook,hasPauseThreshold,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,thresholdsForSet,toBudgetState}from"./chunks/chunk-ZCUUCYID.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-ECGY67NB.js";import{ellipsis}from"./chunks/chunk-AKOYIH3A.js";import{external_exports}from"./chunks/chunk-2AMO2VMV.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{getAliases}from"./chunks/chunk-VQSSVB6V.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-XFUUALZS.js";import"./chunks/chunk-4ELZOAQH.js";import"./chunks/chunk-JUAHDOL6.js";import"./chunks/chunk-UI2H2EIM.js";import"./chunks/chunk-UUDE44NV.js";import{box}from"./chunks/chunk-LM3YPF3K.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-K5KVSA2A.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{validateLsArgs}from"./chunks/chunk-42J2KCDF.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import"./chunks/chunk-PFD7LETF.js";import{writeJsonError}from"./chunks/chunk-E7WULWMX.js";import"./chunks/chunk-TOTTVS5P.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-5RSSGN2Q.js";import{DEFAULT_LIST_LIMIT,MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-TZE4CS4K.js";import{getProtectionForDeploymentAlias,getProtectionForProductionDomain,readEnabledProtection}from"./chunks/chunk-UIMJNASP.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import"./chunks/chunk-VT6RIZJH.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{ensureLink}from"./chunks/chunk-6YAYCEDT.js";import{getDeployment,toHost}from"./chunks/chunk-VU3RBRDH.js";import{mapCertError}from"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-S535FZTA.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-GQ4CQDIL.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-SNNJRKD6.js";import{getTeams}from"./chunks/chunk-BPRGAX62.js";import{CREDIT_TYPE_LABELS,INVOICE_STATUSES,SUPPORTED_ADDON_NAMES,SUPPORTED_CREDIT_TYPES,addSubcommand10 as addSubcommand4,addSubcommand11 as addSubcommand5,addSubcommand2 as addSubcommand,addSubcommand4 as addSubcommand2,addSubcommand5 as addSubcommand3,addonSubcommand,agentRunsCommand,alertsListSubcommand2 as alertsListSubcommand,alertsSubcommand2 as alertsSubcommand,aliasCommand,backupsSubcommand,bisectCommand,budgetCommand,buyCommand,certsCommand,connectSubcommand,createSubcommand10 as createSubcommand2,createSubcommand7 as createSubcommand,creditsSubcommand,disconnectSubcommand,dnsCommand,domainSubcommand,getCommandAliases,getSubcommand,getSubcommand5 as getSubcommand2,gitCommand,globalConfigCommand,importSubcommand,initCommand,inspectSubcommand,inspectSubcommand12 as inspectSubcommand3,inspectSubcommand14 as inspectSubcommand4,inspectSubcommand6 as inspectSubcommand2,inviteSubcommand,invoicesDownloadSubcommand,invoicesInspectSubcommand,invoicesListSubcommand,invoicesSubcommand,invoicesUpcomingSubcommand,isCustomEnvironmentAddonAlias,issueSubcommand,itemsSubcommand,listSubcommand,listSubcommand11 as listSubcommand4,listSubcommand15 as listSubcommand5,listSubcommand18 as listSubcommand6,listSubcommand24 as listSubcommand7,listSubcommand25 as listSubcommand8,listSubcommand28 as listSubcommand9,listSubcommand29 as listSubcommand10,listSubcommand3 as listSubcommand2,listSubcommand5 as listSubcommand3,membersInviteSubcommand,membersRemoveSubcommand,membersSubcommand2 as membersSubcommand,organizationsCommand,proSubcommand,projectsSubcommand,removeSubcommand15 as removeSubcommand5,removeSubcommand16 as removeSubcommand6,removeSubcommand17 as removeSubcommand7,removeSubcommand2 as removeSubcommand,removeSubcommand4 as removeSubcommand2,removeSubcommand7 as removeSubcommand3,removeSubcommand9 as removeSubcommand4,requestSubcommand,setSubcommand,setSubcommand3 as setSubcommand2,ssoSubcommand,switchSubcommand,teamsAddSubcommand,teamsCommand,teamsCreateSubcommand,teamsListSubcommand,teamsSubcommand,tokensCommand,tokensSubcommand,traceSubcommand,updateSubcommand2 as updateSubcommand,updateSubcommand6 as updateSubcommand2,updateSubcommand9 as updateSubcommand3,webhooksCommand}from"./chunks/chunk-ZIC7VWFC.js";import"./chunks/chunk-M3Z6NSC2.js";import"./chunks/chunk-IHTWZEQW.js";import"./chunks/chunk-ECFLIVEE.js";import"./chunks/chunk-WTFD4MDT.js";import"./chunks/chunk-SNGM6NSO.js";import"./chunks/chunk-P24YBQ6H.js";import"./chunks/chunk-NMIZSQDN.js";import"./chunks/chunk-K7ARJYAG.js";import"./chunks/chunk-V5TOMLK4.js";import"./chunks/chunk-M3R7F2N4.js";import"./chunks/chunk-4E6BGQWR.js";import"./chunks/chunk-6UMVJ7RL.js";import"./chunks/chunk-IIGNDMLO.js";import"./chunks/chunk-N65H4JMJ.js";import"./chunks/chunk-EJN55YDV.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-4U6ACPA4.js";import"./chunks/chunk-7VGBGUX7.js";import"./chunks/chunk-CU3LNJZV.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-BZIC36KP.js";import{printError}from"./chunks/chunk-PKZK23PR.js";import{help,remoteText}from"./chunks/chunk-OYIDWI5Y.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"./chunks/chunk-MBXLL2HF.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getErrorRecovery,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-AUIV7YJO.js";import"./chunks/chunk-FYE7ILRR.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-6NUH6ZPE.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-PKNEWN4W.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-PL6IOUKW.js";import"./chunks/chunk-4NTBYNFR.js";import{isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-US7YJ2RQ.js";import{getTeamByIdOrSlug}from"./chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-SDYCW5JM.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-4SAVH3H7.js";import{AliasInUse,CertConfigurationError,CertError,CertMissing,CertNotFound,CertOrderNotFound,CertsPermissionDenied,DNSConflictingRecord,DNSInvalidPort,DNSInvalidType,DNSPermissionDenied,DeploymentFailedAliasImpossible,DeploymentNotFound,DeploymentNotReady,DeploymentPermissionDenied,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainNotAvailable,DomainNotFound,DomainPaymentError,DomainPermissionDenied,DomainPriceChanged,DomainPurchasePending,DomainPurchaseRefundFailed,DomainPurchaseRefunded,InvalidAlias,InvalidAliasInConfig,InvalidDeploymentId,InvalidDomain,NoAliasInConfig,NowError,SourceNotFound,TLDNotSupportedViaCLI,TooManyRequests,UnexpectedDomainPurchaseError,UnsupportedTLD,UserAborted,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-GZLYNPNU.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,quoteArg,stripSensitiveAuthArgs}from"./chunks/chunk-AMPJ6RWT.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import{fetch,toNodeReadable}from"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"./chunks/chunk-JBU72NEQ.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var AgentRunsTelemetryClient=class extends TelemetryClient{trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandTrace(actual){this.trackCliSubcommand({subcommand:"trace",value:actual})}trackCliSubcommandProjects(actual){this.trackCliSubcommand({subcommand:"projects",value:actual})}};var import_chalk2=__toESM(require_source(),1);var AGENT_RUNS_API_BASE="https://vercel.com/api/observability/agent-runs",DEFAULT_TRACE_MAX_FIELD_LENGTH=8e3,MAX_TRACE_FIELD_LENGTH=5e4;function getAgentRunsApiBase(){return process.env.VERCEL_AGENT_RUNS_API_URL||AGENT_RUNS_API_BASE}function resolveAgentRunsWindow(since,until){if(!since)return;let from=parseTimeFlag(since),to=until?parseTimeFlag(until):new Date;return{from:Math.floor(from.getTime()/1e3),to:Math.floor(to.getTime()/1e3)}}function buildAgentRunsUrl(query){let url=new URL(getAgentRunsApiBase());url.searchParams.set("teamSlug",query.teamId),query.view==="team"?url.searchParams.set("view","team"):query.projectId&&url.searchParams.set("project",query.projectId),url.searchParams.set("environment",query.environment||"production");let window=query.window??resolveAgentRunsWindow(query.since,query.until);return window&&(url.searchParams.set("from",String(window.from)),url.searchParams.set("to",String(window.to))),typeof query.page=="number"&&url.searchParams.set("page",String(Math.max(1,Math.floor(query.page)))),typeof query.pageSize=="number"&&url.searchParams.set("pageSize",String(Math.max(1,Math.floor(query.pageSize)))),query.search&&url.searchParams.set("search",query.search),query.cursor&&url.searchParams.set("cursor",query.cursor),query.runId&&url.searchParams.set("runId",query.runId),query.trace&&url.searchParams.set("trace","1"),query.traceStreamId&&url.searchParams.set("traceStreamId",query.traceStreamId),query.traceAfterCursor&&url.searchParams.set("traceAfterCursor",query.traceAfterCursor),typeof query.traceBeforeChunk=="number"&&url.searchParams.set("traceBeforeChunk",String(query.traceBeforeChunk)),url.href}async function fetchAgentRuns(client,query){return client.fetch(buildAgentRunsUrl(query),{useCurrentTeam:!1})}var MISSING_PROJECT_SCOPE_MESSAGE="No linked project found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team> and --project <name>.",MISSING_TEAM_SCOPE_MESSAGE="No team scope found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team>.";async function resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject}){let flagScope=scopeFlag?.trim()||void 0,flagProject=projectFlag?.trim()||void 0;if(flagScope&&(flagProject||!requireProject))return{ok:!0,teamId:flagScope,projectId:flagProject,contextName:flagProject?`${flagScope}/${flagProject}`:flagScope};let linkedProject=await getLinkedProject(client);if(linkedProject.status==="error")return{ok:!1,exitCode:linkedProject.exitCode};if(linkedProject.status==="linked"){let{org,project}=linkedProject;if(flagScope&&flagScope!==org.id&&flagScope!==org.slug)return{ok:!1,exitCode:invalidArguments(client,`\`--scope ${flagScope}\` doesn't match the linked project's team. Pass \`--project <name>\` to query a project in that team.`)};let teamName=flagScope??org.slug,projectName=requireProject?flagProject??project.name:flagProject;return{ok:!0,teamId:flagScope??org.id,projectId:requireProject?flagProject??project.id:flagProject,contextName:projectName?`${teamName}/${projectName}`:teamName}}let message=requireProject?MISSING_PROJECT_SCOPE_MESSAGE:MISSING_TEAM_SCOPE_MESSAGE;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_LINKED,message}),output_manager_default.error(message),{ok:!1,exitCode:1}}function normalizeApiErrorText(message){return message.replace(/\s*\(\d{3}\)\s*$/,"").trim()}function handleAgentRunsApiError(client,err){if(isAPIError(err)){let reason=err.status===403?"forbidden":err.status===401?"not_authorized":err.status===404?AGENT_REASON.NOT_FOUND:err.status===429?"rate_limited":AGENT_REASON.API_ERROR;outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message:normalizeApiErrorText(err.serverMessage||err.message)})}else outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:"unexpected_error",message:err instanceof Error?err.message:String(err)});printError(err)}function invalidArguments(client,message){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message}),output_manager_default.error(message),2}function normalizeTraceMaxFieldLength(value){return typeof value!="number"||!Number.isFinite(value)?DEFAULT_TRACE_MAX_FIELD_LENGTH:Math.min(Math.max(Math.floor(value),0),MAX_TRACE_FIELD_LENGTH)}function truncateLargeStrings(value,maxLength){return maxLength===0?value:typeof value=="string"?value.length<=maxLength?value:`${value.slice(0,maxLength)}... [truncated ${value.length-maxLength} chars]`:Array.isArray(value)?value.map(item=>truncateLargeStrings(item,maxLength)):value&&typeof value=="object"?Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,truncateLargeStrings(entry,maxLength)])):value}import{createHash}from"node:crypto";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1),import_title=__toESM(require_lib(),1);function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function quoteCommandArgument(value,placeholder){return/[\x00-\x1F\x7F]/.test(value)?placeholder:/^[A-Za-z0-9_./:=@%+,-]+$/.test(value)?value:`'${value.replaceAll("'",`'"'"'`)}'`}function asArray(value){return Array.isArray(value)?value.filter(isRecord):[]}function readString(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="string"&&value.length>0)return value}}function readNumber(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value}}function readRecord(record,...keys){if(record)for(let key of keys){let value=record[key];if(isRecord(value))return value}}function readTimestampMs(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value=="string"&&value.length>0){let parsed=Date.parse(value);if(!Number.isNaN(parsed))return parsed}}}var PLACEHOLDER="-";function runId(run){return readString(run,"id","runId")??PLACEHOLDER}function formatRunStatus(run){let status=readString(run,"status","state");if(!status)return PLACEHOLDER;let label=(0,import_title.default)(status.replace(/[_-]+/g," ")),CIRCLE="\u25CF ";switch(status.toLowerCase()){case"completed":case"succeeded":case"success":case"ready":return import_chalk.default.green(CIRCLE)+label;case"error":case"errored":case"failed":case"timed out":case"timed_out":return import_chalk.default.red(CIRCLE)+label;case"running":case"in progress":case"in_progress":case"pending":case"queued":case"started":return import_chalk.default.yellow(CIRCLE)+label;case"canceled":case"cancelled":return import_chalk.default.gray(label);default:return label}}function runModel(run){return readString(run,"model")??PLACEHOLDER}function runTrigger(run){return readString(run,"trigger")??readString(readRecord(run,"trigger"),"label","type","name")??PLACEHOLDER}function runTitle(run){return readString(run,"title","name")}function runStartedAtMs(run){return readTimestampMs(run,"createdAt","startedAt","startTime")}function runDurationMs(run){let explicit=readNumber(run,"durationMs","duration");if(explicit!==void 0)return explicit;let start=readTimestampMs(run,"startedAt","createdAt","startTime"),end=readTimestampMs(run,"endedAt","completedAt","endTime");if(start!==void 0&&end!==void 0&&end>=start)return end-start}function runTotalTokens(run){let usage=readRecord(run,"usage")??run,total=readNumber(usage,"totalTokens","total");if(total!==void 0)return total;let input=readNumber(usage,"inputTokens","promptTokens","input"),output=readNumber(usage,"outputTokens","completionTokens","output");if(input!==void 0||output!==void 0)return(input??0)+(output??0)}function formatAge(timestampMs){if(timestampMs===void 0)return PLACEHOLDER;let delta=Date.now()-timestampMs;return delta<1e3?"just now":`${(0,import_ms.default)(delta)} ago`}function formatTimestamp(timestampMs){return timestampMs===void 0?PLACEHOLDER:new Date(timestampMs).toISOString()}function formatDurationMs(value){return value===void 0?PLACEHOLDER:value<1e3?`${Math.round(value)}ms`:value<6e4?`${(value/1e3).toFixed(1)}s`:(0,import_ms.default)(Math.round(value))}function formatCount(value){return value===void 0?PLACEHOLDER:value<1e4?String(value):value<1e6?`${(value/1e3).toFixed(1)}k`:`${(value/1e6).toFixed(1)}m`}var MAX_TOKEN_LENGTH=8192,MAX_SOURCE_OFFSET=1e4,OTEL_CURSOR_PATTERN=/^[A-Za-z0-9_-]{1,4096}$/,SOURCE_CURSOR_PATTERN=/^[0-9a-z]+\.[0-9a-z]+(\.[0-9a-z]+\.[0-9a-z]+(\.[A-Za-z0-9_-]{1,4096})?)?$/,FILTERS_LENGTH=22;function isSourceOffset(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0&&value<=MAX_SOURCE_OFFSET}function isEpoch(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>0}function isWindow(value){if(!isRecord(value))return!1;let{from,to}=value;return isEpoch(from)&&isEpoch(to)&&from<to}function encodeAgentRunsSourceCursor(offsets){if(!offsets)return;let{otel,workflow,otelCursor}=offsets;if(!isSourceOffset(otel)||!isSourceOffset(workflow))return;let parts=[otel.toString(36),workflow.toString(36)],range=offsets.otelRange;if(range!==void 0){if(!isWindow(range))return;parts.push(range.from.toString(36),range.to.toString(36))}if(otelCursor!==void 0){if(range===void 0||typeof otelCursor!="string"||!OTEL_CURSOR_PATTERN.test(otelCursor))return;parts.push(otelCursor)}return parts.join(".")}function getAgentRunsListFilters({teamId,projectId,environment,search}){return createHash("sha256").update(JSON.stringify([teamId,projectId??null,environment||"production",search||null])).digest("base64url").slice(0,FILTERS_LENGTH)}function encodeAgentRunsListContinuation(continuation){return Buffer.from(JSON.stringify(continuation),"utf8").toString("base64url")}function parseAgentRunsListContinuation(value){if(value.length===0||value.length>MAX_TOKEN_LENGTH||!/^[A-Za-z0-9_-]+$/.test(value))return;let decoded;try{decoded=JSON.parse(Buffer.from(value,"base64url").toString("utf8"))}catch{return}if(!(!isRecord(decoded)||decoded.version!==1||typeof decoded.cursor!="string"||!SOURCE_CURSOR_PATTERN.test(decoded.cursor)||typeof decoded.page!="number"||!Number.isSafeInteger(decoded.page)||decoded.page<2||typeof decoded.filters!="string"||decoded.filters.length!==FILTERS_LENGTH||!isWindow(decoded.window)))return{version:1,cursor:decoded.cursor,page:decoded.page,window:{from:decoded.window.from,to:decoded.window.to},filters:decoded.filters}}var AgentRunsQueryTelemetryClient=class extends TelemetryClient{trackCliOptionEnvironment(value){value&&this.trackCliOption({option:"environment",value:["production","preview"].includes(value)?value:this.redactedValue})}trackCliOptionSince(value){value&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(value){value&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionProject(value){value&&this.trackCliOption({option:"project",value:this.redactedValue})}trackCliFlagJson(value){value&&this.trackCliFlag("json")}};var AgentRunsListTelemetryClient=class extends AgentRunsQueryTelemetryClient{trackCliOptionQuery(value){value&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionSearch(value){value&&this.trackCliOption({option:"search",value:this.redactedValue})}trackCliOptionNext(value){value!==void 0&&this.trackCliOption({option:"next",value:/^\d+$/.test(value)?value:this.redactedValue})}trackCliOptionPage(value){typeof value=="number"&&this.trackCliOption({option:"page",value:String(value)})}trackCliOptionLimit(value){typeof value=="number"&&this.trackCliOption({option:"limit",value:String(value)})}};var DEFAULT_LIST_WINDOW_SECONDS=12*60*60;function getDefaultListWindow(){let to=Math.floor(Date.now()/1e3);return{from:to-DEFAULT_LIST_WINDOW_SECONDS,to}}function buildListPageCommand({argv,window,next}){let args=argv.slice(2),delimiter=args.indexOf("--"),own=delimiter===-1?args:args.slice(0,delimiter),passthrough=delimiter===-1?[]:args.slice(delimiter),kept=argv.slice(0,2);for(let i=0;i<own.length;i++){let arg=own[i],name=normalizeFlagName(arg);if(name==="--since"||name==="--until"){arg.includes("=")||i++;continue}kept.push(arg)}return window&&kept.push("--since",new Date(window.from*1e3).toISOString(),"--until",new Date(window.to*1e3).toISOString()),getNextPageCommand([...kept,...passthrough],next,["--page"])}function printNextPage(command){output_manager_default.print(`
8
8
  `),printNextPageCommand(command)}async function list2(client){let telemetry=new AgentRunsListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),2}let{"--project":projectFlag,"--environment":environment,"--since":since,"--until":until,"--query":queryFlag,"--search":searchFlag,"--next":next,"--page":legacyPage,"--limit":limit,"--json":json,"--scope":scopeFlag}=parsedArgs.flags;legacyPage!==void 0&&warnDeprecatedOption(client.argv,"--page","--next"),telemetry.trackCliOptionProject(projectFlag),telemetry.trackCliOptionEnvironment(environment),telemetry.trackCliOptionSince(since),telemetry.trackCliOptionUntil(until),telemetry.trackCliOptionQuery(queryFlag),telemetry.trackCliOptionSearch(searchFlag),telemetry.trackCliOptionNext(next),telemetry.trackCliOptionPage(legacyPage),telemetry.trackCliOptionLimit(limit),telemetry.trackCliFlagJson(json);let query=getRenamedOption(parsedArgs.flags,"--query","--search",{json});if("error"in query)return reportRenamedOptionError(client,query.error,{json});let search=query.value;if(until&&!since)return invalidArguments(client,"`--until` requires `--since`.");if(next!==void 0&&legacyPage!==void 0)return invalidArguments(client,"`--next` and `--page` cannot be used together.");let legacyNext=next!==void 0&&/^\d+$/.test(next)?Number(next):void 0,continuation;if(next!==void 0&&legacyNext===void 0&&(continuation=parseAgentRunsListContinuation(next),!continuation))return invalidArguments(client,"Invalid or expired `--next` cursor. Omit `--next` to start from the first page.");let page=continuation?.page??legacyNext??legacyPage,requestedWindow;try{requestedWindow=resolveAgentRunsWindow(since,until)}catch(err){return handleAgentRunsApiError(client,err),1}let window=requestedWindow??getDefaultListWindow();if(continuation){if(requestedWindow&&(requestedWindow.from!==continuation.window.from||requestedWindow.to!==continuation.window.to))return invalidArguments(client,"`--since` and `--until` must match the time range of the `--next` cursor. Omit them to continue the same list.");window=continuation.window}let scope=await resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject:!0});if(!scope.ok)return scope.exitCode;let filters=getAgentRunsListFilters({teamId:scope.teamId,projectId:scope.projectId,environment,search});if(continuation&&continuation.filters!==filters)return invalidArguments(client,"The `--next` cursor belongs to a different list. Use the same scope, project, environment, and search, or omit `--next` to start from the first page.");let fetchStamp=stamp_default();output_manager_default.spinner(`Fetching Agent Runs in ${import_chalk2.default.bold(scope.contextName)}\u2026`);let data;try{data=await fetchAgentRuns(client,{teamId:scope.teamId,projectId:scope.projectId,environment,window,page,pageSize:limit,search,cursor:continuation?.cursor})}catch(err){return output_manager_default.stopSpinner(),handleAgentRunsApiError(client,err),1}output_manager_default.stopSpinner();let pageInfo=readRecord(data,"pageInfo"),cursorPaged=typeof pageInfo?.hasMore=="boolean"||pageInfo?.nextOffsets!==void 0;if(cursorPaged&&!continuation&&(page??1)>1)return invalidArguments(client,"Page numbers cannot continue this Agent Runs list. Use the `--next` cursor from the previous page (`pagination.next` with `--json`).");let nextToken=null;if(cursorPaged&&pageInfo?.hasMore===!0){let nextOffsets=readRecord(pageInfo,"nextOffsets"),cursor=encodeAgentRunsSourceCursor(nextOffsets);cursor&&(nextToken=encodeAgentRunsListContinuation({version:1,cursor,page:(page??1)+1,window,filters}))}if(json){let payload=cursorPaged?{...data,pagination:{next:nextToken}}:data;return client.stdout.write(`${JSON.stringify(withWarnings(payload,[query.warning]),null,2)}
9
9
  `),0}let pageCommand={argv:renameOptionInArgs(client.argv,"--search","--query")},runList=asArray(data.runs);if(runList.length===0)return nextToken?(output_manager_default.log("No Agent Runs on this page."),printNextPage(buildListPageCommand({...pageCommand,next:nextToken}))):search||since?output_manager_default.log("No Agent Runs match the current filters."):output_manager_default.log("No Agent Runs found."),0;output_manager_default.log(`Agent Runs under ${import_chalk2.default.bold(scope.contextName)} ${fetchStamp()}`);let rows=[["Run ID","Status","Trigger","Model","Tokens","Duration","Age"].map(header=>import_chalk2.default.bold(import_chalk2.default.cyan(header))),...runList.map(run=>[import_chalk2.default.bold(runId(run)),formatRunStatus(run),runTrigger(run),runModel(run),formatCount(runTotalTokens(run)),import_chalk2.default.gray(formatDurationMs(runDurationMs(run))),import_chalk2.default.gray(formatAge(runStartedAtMs(run)))])];client.stdout.write(`
10
10
  ${table(rows,{hsep:3}).replace(/^/gm," ")}
@@ -101,7 +101,7 @@ ${formatTable2(headers,rows)}
101
101
  `):output_manager_default.log(`No budget to remove on team ${team.slug}.`),0;let amountLabel=formatUsdWhole(budgetAmountDollars(target));if(!yes){if(!client.stdin.isTTY||client.nonInteractive)return output_manager_default.error("To remove in non-interactive mode, re-run with --yes."),2;if(!await client.input.confirm(`Remove the ${amountLabel} budget on team ${team.slug}?`,!1))return output_manager_default.log("Canceled."),0}output_manager_default.spinner(`Removing budget on team ${team.slug}\u2026`);try{await removeBudget(client,target.id)}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}return output_manager_default.stopSpinner(),asJson?(client.stdout.write(`${JSON.stringify(removeReceipt({team,alreadyAbsent:!1,disabled:target.id,scope:selector.scope}),null,2)}
102
102
  `),0):(output_manager_default.success(`Removed the ${amountLabel} budget on team ${team.slug}.`),0)}var BudgetInspectTelemetryClient=class extends TelemetryClient{trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function inspect3(client,argv){let telemetry=new BudgetInspectTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(inspectSubcommand4.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]);let team=await resolveBudgetTeam(client);if(!team)return 2;let selector=TEAM_BUDGET;output_manager_default.spinner("Fetching spend\u2026");let spend,state,recentAlerts=null;try{let[budget2,teamSpend]=await Promise.all([findBudget(client,selector),getTeamSpend(client,team.id,selector,{retry:NO_RETRY}).catch(()=>null)]);spend=teamSpend,budget2&&([state,recentAlerts]=await Promise.all([toBudgetState(client,budget2,selector),fetchRecentAlerts(client,selector,budget2.id)]))}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}output_manager_default.stopSpinner();let spent=spendDollars(spend);if(asJson)return client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,spend:spendPayload(spent,state?.amount??null),budget:state?budgetStatePayload(state):null,recentAlerts},null,2)}
103
103
  `),0;if(!state){let spentLine=spent===null?"":` Current spend is ${formatUsd(spent)}.`;return output_manager_default.log(`No budget set on team ${team.slug}.${spentLine} Create one with ${scopedBudgetCommand(client,team,"budgets set --amount <dollars>")}.`),0}return warnUnavailableWebhooks([state]),client.stdout.write(printBudgetsTable([state],()=>spent)),recentAlerts===null?0:recentAlerts.length===0?(output_manager_default.log("No alerts on this budget yet."),0):(output_manager_default.log("Recent alerts"),client.stdout.write(printBudgetAlertsTable(recentAlerts)),0)}var RECENT_ALERTS_LIMIT=3;async function fetchRecentAlerts(client,selector,budgetId){try{return(await listBudgetAlerts(client,selector,{budgetId,limit:RECENT_ALERTS_LIMIT},{retry:NO_RETRY})).data}catch(err){return output_manager_default.debug(`Could not load recent budget alerts: ${err}`),null}}var import_pluralize2=__toESM(require_pluralize(),1);function encodeBudgetAlertsCursor(value){return Buffer.from(JSON.stringify({c:value.cursor,t:value.teamId,s:value.since,u:value.until})).toString("base64url")}function decodeBudgetAlertsCursor(value){if(value===void 0)return{valid:!0,value:void 0};let invalid={valid:!1,code:"INVALID_NEXT",message:INVALID_NEXT_MESSAGE},raw;try{raw=JSON.parse(Buffer.from(value,"base64url").toString("utf8"))}catch{return invalid}if(typeof raw!="object"||raw===null)return invalid;let{c,t,s,u}=raw;return typeof c!="string"||typeof t!="string"||!isOptionalMs(s)||!isOptionalMs(u)?invalid:{valid:!0,value:{cursor:c,teamId:t,since:s,until:u}}}function isOptionalMs(value){return value===void 0||Number.isFinite(value)}var BudgetAlertsTelemetryClient=class extends TelemetryClient{trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliOptionSince(since){since&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function alerts(client,argv){let telemetry=new BudgetAlertsTelemetryClient({opts:{store:client.telemetryEventStore}}),action=getSubcommand3(argv,{list:getCommandAliases(alertsListSubcommand)});action.subcommand==="list"&&telemetry.trackCliSubcommandList(action.subcommandOriginal);let parsedArgs,flagsSpecification=getFlagsSpecification(alertsSubcommand.options);try{parsedArgs=parseArguments(action.args,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets alerts"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliOptionSince(opts["--since"]),telemetry.trackCliOptionUntil(opts["--until"]),telemetry.trackCliOptionLimit(opts["--limit"]),telemetry.trackCliOptionNext(opts["--next"]),telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]);let nextResult=decodeBudgetAlertsCursor(opts["--next"]);if(!nextResult.valid)return handleValidationError(nextResult,asJson,client);let cursor=nextResult.value,warnings=[],limit=opts["--limit"];if(typeof limit=="number"&&Number.isInteger(limit)&&limit>MAX_LIST_LIMIT){let message=`--limit ${limit} is above the maximum of ${MAX_LIST_LIMIT}. Using ${MAX_LIST_LIMIT}.`;warnings.push({reason:AGENT_REASON.LIMIT_CLAMPED,message}),asJson||output_manager_default.warning(message),limit=MAX_LIST_LIMIT}let limitResult=validateOptionalIntegerRange(limit,{flag:"--limit",min:1,max:MAX_LIST_LIMIT});if(!limitResult.valid)return handleValidationError(limitResult,asJson,client);let sinceResult=validateTimeBound(opts["--since"]);if(!sinceResult.valid)return handleValidationError(sinceResult,asJson,client);let untilResult=validateTimeBound(opts["--until"]);if(!untilResult.valid)return handleValidationError(untilResult,asJson,client);let order=validateTimeOrder(sinceResult.value,untilResult.value);if(!order.valid)return handleValidationError(order,asJson,client);let team=await resolveBudgetTeam(client);if(!team)return 2;if(cursor&&cursor.teamId!==team.id)return outputError(client,asJson,"INVALID_NEXT",`This --next cursor is from another team, not ${team.slug}. Use the --scope it was printed with.`);let since=cursor?cursor.since:sinceResult.value?.getTime(),until=cursor?cursor.until:untilResult.value?.getTime();output_manager_default.spinner("Fetching budget alerts\u2026");let selector=TEAM_BUDGET,page;try{page=await listBudgetAlerts(client,selector,{since,until,limit:limitResult.value,cursor:cursor?.cursor})}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return err.code==="invalid_cursor"?outputError(client,asJson,"INVALID_NEXT",INVALID_NEXT_MESSAGE):outputError(client,asJson,err.code||"API_ERROR",err.message);throw err}output_manager_default.stopSpinner();let next=page.nextCursor?encodeBudgetAlertsCursor({cursor:page.nextCursor,teamId:team.id,since,until}):null;if(asJson)return client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,alerts:page.data,pagination:{next},...warnings.length>0?{warnings}:{}},null,2)}
104
- `),0;let where=`on team ${team.slug}`;return page.data.length===0?(output_manager_default.log(cursor?`No more budget alerts ${where}.`:`No budget alerts found ${where}.`),0):(output_manager_default.log(`${(0,import_pluralize2.default)("budget alert",page.data.length,!0)} ${where}`),client.stdout.write(printBudgetAlertsTable(page.data)),next&&printNextPageCommand(getNextPageCommand(client.argv,next,WINDOW_FLAGS)),0)}var WINDOW_FLAGS=["--since","-s","--until","-u"];var COMMAND_CONFIG3={inspect:getCommandAliases(inspectSubcommand4),list:getCommandAliases(listSubcommand9),set:getCommandAliases(setSubcommand2),remove:getCommandAliases(removeSubcommand6),alerts:getCommandAliases(alertsSubcommand)},ADVERTISED_COMMAND_CONFIG=COMMAND_CONFIG3;async function budget(client){let parsedArgs,flagsSpecification=getFlagsSpecification(budgetCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}let telemetry=new BudgetTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,subcommandOriginal,args}=getSubcommand3(parsedArgs.args.slice(1),COMMAND_CONFIG3),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command){output_manager_default.print(help(command,{stream:client.stderr,parent:budgetCommand,columns:client.stderr.columns}))}switch(subcommand){case"inspect":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="overview"&&warnDeprecatedSubcommand(client,"budgets overview","budgets inspect"),inspect3(client,args));case"list":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(listSubcommand9),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list4(client,args));case"set":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(setSubcommand2),0):(telemetry.trackCliSubcommandSet(subcommandOriginal),subcommandOriginal==="update"&&warnDeprecatedSubcommand(client,"budgets update","budgets set"),set2(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(removeSubcommand6),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),(subcommandOriginal==="delete"||subcommandOriginal==="disable")&&warnDeprecatedSubcommand(client,`budgets ${subcommandOriginal}`,"budgets remove"),remove(client,args));case"alerts":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(alertsSubcommand),0):(telemetry.trackCliSubcommandAlerts(subcommandOriginal),alerts(client,args));default:{let unknown=args[0];return unknown&&!unknown.startsWith("-")?(output_manager_default.error(getInvalidSubcommand(ADVERTISED_COMMAND_CONFIG)),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),2):needHelp?(telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),0):list4(client,args)}}}var import_chalk14=__toESM(require_source(),1);async function createPurchase(client,item){return client.fetch("/v1/billing/buy?source=cli",{method:"POST",body:{item}})}var import_open2=__toESM(require_open(),1),import_error_utils3=__toESM(require_dist(),1);function tryOpenBillingPage(teamSlug,openBrowser){if(!openBrowser)return;let billingUrl=teamSlug?getTeamBillingUrl(teamSlug):"https://vercel.com/dashboard";(0,import_open2.default)(billingUrl).catch(err=>{output_manager_default.debug(`Failed to open browser: ${err}`)})}function handlePurchaseError(err,teamSlug,opts){let openBrowser=opts?.openBrowser??!1;if(isAPIError(err)){if(err.code==="invalid_plan_iteration")return output_manager_default.error("Your team must be on the Flex plan to purchase add-ons."),1;if(err.code==="missing_subscription")return output_manager_default.error("Your team does not have an active subscription. Please contact support."),1;if(err.code==="missing_stripe_customer"){let billingUrl=teamSlug?getTeamBillingUrl(teamSlug):"https://vercel.com/dashboard",dashboardHint=teamSlug?` Please add one: ${output_manager_default.link(billingUrl,billingUrl)}`:` Please add one in the ${output_manager_default.link("Vercel dashboard",billingUrl)}.`;return output_manager_default.error(`Your team does not have a payment method on file.${dashboardHint}`),tryOpenBillingPage(teamSlug,openBrowser),1}if(err.code==="invalid_v0_subscription"){let pricingUrl="https://v0.app/pricing";return output_manager_default.error(`Your team must have a paid v0 plan to purchase v0 credits. Upgrade at ${output_manager_default.link(pricingUrl,pricingUrl)}`),1}if(err.code==="invalid_plan")return output_manager_default.error("Your team's current plan does not support this purchase."),1;if(err.code==="already_on_plan")return output_manager_default.error("Your team already has an active subscription for this plan."),1;if(err.code==="invalid_status")return output_manager_default.error("Your team is not in a state that allows plan changes. Please contact support."),1;if(err.code==="forbidden")return output_manager_default.error("You do not have permission to make purchases for this team. Please contact your account administrator."),1;if(err.code==="purchase_create_failed"||err.code==="purchase_confirm_failed"||err.code==="purchase_complete_failed"||err.code==="purchase_create_hosted_failed")return err.status===402?(output_manager_default.error("Payment failed. Please check that your team has a valid payment method on file."),tryOpenBillingPage(teamSlug,openBrowser),1):(output_manager_default.error("An error occurred while processing your purchase. Please try again later."),output_manager_default.debug(`Error code: ${err.code}`),1);if(err.status===402||err.code==="payment_failed")return output_manager_default.error("Payment failed. Please check the payment method on file for your team."),tryOpenBillingPage(teamSlug,openBrowser),1}return output_manager_default.error("An unexpected error occurred while completing your purchase. Please try again later."),output_manager_default.debug(`Server response: ${(0,import_error_utils3.errorToString)(err)}`),1}var MAX_CREDIT_PURCHASE_AMOUNT=1e3;async function credits(client,argv){let flagsSpecification=getFlagsSpecification(creditsSubcommand.options),parsedArgs;try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,{args}=parsedArgs,[creditType,amountStr]=args;if(!creditType)return output_manager_default.error(`Missing credit type. Supported types: ${SUPPORTED_CREDIT_TYPES.join(", ")}`),output_manager_default.log(`Run ${getCommandName("buy credits --help")} for usage.`),2;if(!SUPPORTED_CREDIT_TYPES.includes(creditType))return output_manager_default.error(`Invalid credit type "${creditType}". Supported types: ${SUPPORTED_CREDIT_TYPES.join(", ")}`),1;if(!amountStr)return output_manager_default.error("Missing amount. Please specify the amount in dollars."),output_manager_default.log(`Run ${getCommandName("buy credits --help")} for usage.`),2;let amount=Number(amountStr);if(!Number.isInteger(amount))return output_manager_default.error(`Invalid amount "${amountStr}". Please specify a whole number (in dollars).`),2;if(amount<=0)return output_manager_default.error(`Invalid amount "${amountStr}". Please specify a positive amount in dollars.`),2;if(amount>MAX_CREDIT_PURCHASE_AMOUNT)return output_manager_default.error(`Amount cannot exceed $${MAX_CREDIT_PURCHASE_AMOUNT.toLocaleString()} per purchase via CLI.`),1;let{team,contextName}=await getScope(client);if(!team)return output_manager_default.error("This command must be run with a team scope. Use --scope to specify a team."),1;let typedCreditType=creditType,label=CREDIT_TYPE_LABELS[typedCreditType];if(!parsedArgs.flags["--yes"]){if(!client.stdin.isTTY)return output_manager_default.error("Confirmation required. Use --yes to skip the confirmation prompt in non-interactive mode."),1;if(!await client.input.confirm(`Purchase ${import_chalk14.default.bold(`$${amount}`)} of ${label} credits for team ${import_chalk14.default.bold(contextName)}?`,!1))return 0}let purchaseStamp=stamp_default();output_manager_default.spinner("Processing purchase");try{let result=await createPurchase(client,{type:"credits",creditType:typedCreditType,amount});return output_manager_default.stopSpinner(),asJson?client.stdout.write(`${JSON.stringify({creditType:typedCreditType,amount,team:contextName,purchaseIntent:result.purchaseIntent},null,2)}
104
+ `),0;let where=`on team ${team.slug}`;return page.data.length===0?(output_manager_default.log(cursor?`No more budget alerts ${where}.`:`No budget alerts found ${where}.`),0):(output_manager_default.log(`${(0,import_pluralize2.default)("budget alert",page.data.length,!0)} ${where}`),client.stdout.write(printBudgetAlertsTable(page.data)),next&&printNextPageCommand(getNextPageCommand(client.argv,next,WINDOW_FLAGS)),0)}var WINDOW_FLAGS=["--since","-s","--until","-u"];var COMMAND_CONFIG3={inspect:getCommandAliases(inspectSubcommand4),list:getCommandAliases(listSubcommand9),set:getCommandAliases(setSubcommand2),remove:getCommandAliases(removeSubcommand6),alerts:getCommandAliases(alertsSubcommand)},ADVERTISED_COMMAND_CONFIG=COMMAND_CONFIG3;async function budget(client){let parsedArgs,flagsSpecification=getFlagsSpecification(budgetCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}let telemetry=new BudgetTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,subcommandOriginal,args}=getSubcommand3(parsedArgs.args.slice(1),COMMAND_CONFIG3),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command){output_manager_default.print(help(command,{stream:client.stderr,parent:budgetCommand,columns:client.stderr.columns}))}switch(subcommand){case"inspect":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="overview"&&warnDeprecatedSubcommand(client,"budgets overview","budgets inspect"),inspect3(client,args));case"list":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(listSubcommand9),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list4(client,args));case"set":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(setSubcommand2),0):(telemetry.trackCliSubcommandSet(subcommandOriginal),subcommandOriginal==="update"&&warnDeprecatedSubcommand(client,"budgets update","budgets set"),set2(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(removeSubcommand6),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),(subcommandOriginal==="delete"||subcommandOriginal==="disable")&&warnDeprecatedSubcommand(client,`budgets ${subcommandOriginal}`,"budgets remove"),remove(client,args));case"alerts":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(alertsSubcommand),0):(telemetry.trackCliSubcommandAlerts(subcommandOriginal),alerts(client,args));default:{let unknown=args[0];return unknown&&!unknown.startsWith("-")?(output_manager_default.error(getInvalidSubcommand(ADVERTISED_COMMAND_CONFIG)),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),2):needHelp?(telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{stream:client.stderr,columns:client.stderr.columns})),0):list4(client,args)}}}var import_chalk14=__toESM(require_source(),1);async function createPurchase(client,item){return client.fetch("/v1/billing/buy?source=cli",{method:"POST",body:{item}})}var import_open2=__toESM(require_open(),1),import_error_utils3=__toESM(require_dist(),1);function tryOpenBillingPage(teamSlug,openBrowser){if(!openBrowser)return;let billingUrl=teamSlug?getTeamBillingUrl(teamSlug):"https://vercel.com/dashboard";(0,import_open2.default)(billingUrl).catch(err=>{output_manager_default.debug(`Failed to open browser: ${err}`)})}function handlePurchaseError(err,teamSlug,opts){let openBrowser=opts?.openBrowser??!1;if(isAPIError(err)){if(err.code==="invalid_plan_iteration")return output_manager_default.error("Your team must be on the Flex plan to purchase add-ons."),1;if(err.code==="missing_subscription")return output_manager_default.error("Your team does not have an active subscription. Please contact support."),1;if(err.code==="missing_stripe_customer"){let billingUrl=teamSlug?getTeamBillingUrl(teamSlug):"https://vercel.com/dashboard",dashboardHint=teamSlug?` Please add one: ${output_manager_default.link(billingUrl,billingUrl)}`:` Please add one in the ${output_manager_default.link("Vercel dashboard",billingUrl)}.`;return output_manager_default.error(`Your team does not have a payment method on file.${dashboardHint}`),tryOpenBillingPage(teamSlug,openBrowser),1}if(err.code==="invalid_v0_subscription"){let pricingUrl="https://v0.app/pricing";return output_manager_default.error(`Your team must have a paid v0 plan to purchase v0 credits. Upgrade at ${output_manager_default.link(pricingUrl,pricingUrl)}`),1}if(err.code==="invalid_plan")return output_manager_default.error("Your team's current plan does not support this purchase."),1;if(err.code==="already_on_plan")return output_manager_default.error("Your team already has an active subscription for this plan."),1;if(err.code==="invalid_status")return output_manager_default.error("Your team is not in a state that allows plan changes. Please contact support."),1;if(err.code==="forbidden")return output_manager_default.error("You do not have permission to make purchases for this team. Please contact your account administrator."),1;if(err.code==="purchase_create_failed"||err.code==="purchase_confirm_failed"||err.code==="purchase_complete_failed"||err.code==="purchase_create_hosted_failed")return err.status===402?(output_manager_default.error("Payment failed. Please check that your team has a valid payment method on file."),tryOpenBillingPage(teamSlug,openBrowser),1):(output_manager_default.error("An error occurred while processing your purchase. Please try again later."),output_manager_default.debug(`Error code: ${err.code}`),1);if(err.status===402||err.code==="payment_failed")return output_manager_default.error("Payment failed. Please check the payment method on file for your team."),tryOpenBillingPage(teamSlug,openBrowser),1}return output_manager_default.error("An unexpected error occurred while completing your purchase. Please try again later."),output_manager_default.debug(`Server response: ${(0,import_error_utils3.errorToString)(err)}`),1}var MAX_CREDIT_PURCHASE_AMOUNT=1e3;async function credits(client,argv){let flagsSpecification=getFlagsSpecification(creditsSubcommand.options),parsedArgs;try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,{args}=parsedArgs,[creditType,amountStr]=args;if(!creditType)return output_manager_default.error(`Missing credit type. Supported types: ${SUPPORTED_CREDIT_TYPES.join(", ")}`),output_manager_default.log(`Run ${getCommandName("buy credits --help")} for usage.`),2;if(!SUPPORTED_CREDIT_TYPES.includes(creditType))return output_manager_default.error(`Invalid credit type "${creditType}". Supported types: ${SUPPORTED_CREDIT_TYPES.join(", ")}`),1;if(!amountStr)return output_manager_default.error("Missing amount. Please specify the amount in dollars."),output_manager_default.log(`Run ${getCommandName("buy credits --help")} for usage.`),2;let amount=Number(amountStr);if(!Number.isInteger(amount))return output_manager_default.error(`Invalid amount "${amountStr}". Please specify a whole number (in dollars).`),2;if(amount<=0)return output_manager_default.error(`Invalid amount "${amountStr}". Please specify a positive amount in dollars.`),2;if(amount>MAX_CREDIT_PURCHASE_AMOUNT)return output_manager_default.error(`Amount cannot exceed $${MAX_CREDIT_PURCHASE_AMOUNT.toLocaleString()} per purchase via CLI.`),1;let{team,contextName}=await getScope(client);if(!team)return output_manager_default.error("This command must be run with a team scope. Use --scope to specify a team."),1;let typedCreditType=creditType,label=CREDIT_TYPE_LABELS[typedCreditType],approval=await requireApproval(client,creditsSubcommand.consequence,{item:`$${amount} of ${label} credits`,amountUsd:amount,team:contextName},parsedArgs.flags,{legacy:{stopExitCode:1,stopStatus:!1,declineExitCode:0}});if(!approval.approved)return approval.exitCode;let purchaseStamp=stamp_default();output_manager_default.spinner("Processing purchase");try{let result=await createPurchase(client,{type:"credits",creditType:typedCreditType,amount});return output_manager_default.stopSpinner(),asJson?client.stdout.write(`${JSON.stringify(withWarnings({creditType:typedCreditType,amount,team:contextName,purchaseIntent:result.purchaseIntent},approval.warnings),null,2)}
105
105
  `):(output_manager_default.success(`Purchased ${import_chalk14.default.bold(`$${amount}`)} of ${label} credits for ${import_chalk14.default.bold(contextName)} ${purchaseStamp()}`),result.purchaseIntent&&output_manager_default.debug(`Purchase intent: ${result.purchaseIntent.id}`)),0}catch(err){return output_manager_default.stopSpinner(),handlePurchaseError(err,contextName,{openBrowser:!!client.stdout.isTTY})}}var import_chalk15=__toESM(require_source(),1);var import_error_utils4=__toESM(require_dist(),1);function handleCustomEnvironmentPurchaseError(err){if(isAPIError(err)){if(err.code==="upgrade_required")return output_manager_default.error("Custom environment purchases require an active Pro or Enterprise plan."),output_manager_default.log(`Upgrade with ${getCommandName("buy pro")} or visit ${output_manager_default.link("vercel.com/pricing","https://vercel.com/pricing")}.`),1;if(err.code==="custom_environments_not_available_to_purchase")return output_manager_default.error(err.serverMessage||"Custom environments are not available to purchase on this team."),1;if(err.code==="custom_environments_in_use")return output_manager_default.error(err.serverMessage||"This project is using more custom environments than the requested capacity allows."),1;if(err.code==="bad_request"&&err.serverMessage)return output_manager_default.error(err.serverMessage),1;if(err.code==="forbidden")return output_manager_default.error(err.serverMessage||"You do not have permission to update custom environment capacity for this project."),1}return output_manager_default.error("An error occurred while updating custom environment capacity. Please try again later."),output_manager_default.debug(`Server response: ${(0,import_error_utils4.errorToString)(err)}`),1}async function purchaseCustomEnvironmentCapacity(client,{packs,yes,projectName,commandName}){let{cwd}=client,link2=await ensureLink(commandName,client,cwd,{autoConfirm:yes,projectName,failIfNotFound:!!projectName});if(typeof link2=="number")return link2;let projectId=link2.project.id,projectNameResolved=link2.project.name;output_manager_default.spinner("Fetching custom environment settings");let settings;try{settings=await client.fetch(`/v1/projects/custom-environments/settings?projectId=${encodeURIComponent(projectId)}`,{accountId:link2.org.id})}catch(err){return output_manager_default.stopSpinner(),handleCustomEnvironmentPurchaseError(err)}output_manager_default.stopSpinner();let{packSize}=settings,purchasedPacks=settings.purchasedAmount/packSize,minPacks=settings.minPurchasedAmount/packSize,maxPacks=settings.maxPurchasedAmount/packSize;if(packs<minPacks||packs>maxPacks){let minEnvironments=minPacks*packSize,maxEnvironments=maxPacks*packSize;return output_manager_default.error(`Packs must be between ${minPacks} and ${maxPacks} for this project (${minEnvironments}-${maxEnvironments} purchased environments).`),2}if(packs===purchasedPacks)return output_manager_default.log(`Project ${import_chalk15.default.bold(projectNameResolved)} already has ${import_chalk15.default.bold(packs)} custom environment pack${packs===1?"":"s"} purchased.`),0;let purchasedAmount=packs*packSize,isIncreasing=packs>purchasedPacks;if(!yes){if(!client.stdin.isTTY)return output_manager_default.error("Confirmation required. Use --yes to skip the confirmation prompt in non-interactive mode."),1;if(!await client.input.confirm(`${isIncreasing?"Purchase":"Reduce to"} ${import_chalk15.default.bold(packs)} custom environment pack${packs===1?"":"s"} (${purchasedAmount} environments) for project ${import_chalk15.default.bold(projectNameResolved)}?`,!1))return 0}let purchaseStamp=stamp_default();output_manager_default.spinner("Updating custom environment capacity");try{let result=await client.fetch(`/v1/projects/custom-environments/settings?projectId=${encodeURIComponent(projectId)}`,{method:"POST",body:{purchasedAmount},accountId:link2.org.id});return output_manager_default.stopSpinner(),output_manager_default.success(`Updated custom environment capacity for ${import_chalk15.default.bold(projectNameResolved)} to ${import_chalk15.default.bold(packs)} pack${packs===1?"":"s"} (${result.purchasedAmount} environments) ${purchaseStamp()}`),0}catch(err){return output_manager_default.stopSpinner(),handleCustomEnvironmentPurchaseError(err)}}function validateCustomEnvironmentPacks(packsStr){if(!packsStr)return{error:"Missing packs. Specify the number of custom environment packs to purchase.",usage:`Example: ${getCommandName(`buy addon custom-environment ${2}`)} \u2014 each pack adds ${5} environments.`};let packs=Number(packsStr);return Number.isInteger(packs)?packs<0?{error:`Invalid packs "${packsStr}". Please specify a non-negative number.`}:{packs}:{error:`Invalid packs "${packsStr}". Please specify a whole number.`}}var OBSERVABILITY_PLUS_ADDON_ALIASES=new Set(["observability","observabilityplus","observability-plus","observability_plus"]);function isObservabilityPlusAddonAlias(name){return OBSERVABILITY_PLUS_ADDON_ALIASES.has(name.toLowerCase())}var import_error_utils5=__toESM(require_dist(),1);var OBSERVABILITY_PLUS_PRODUCT_ALIAS="observabilityPlus";async function purchaseObservabilityPlus(client,{yes,asJson}){let{team,contextName}=await getScope(client);if(!team)return output_manager_default.error("Observability Plus requires a team. Use --scope to specify one."),1;if(team.billing?.plan==="hobby")return output_manager_default.error("Observability Plus requires an active Pro or Enterprise plan."),output_manager_default.log(`Upgrade with ${getCommandName("buy pro")}.`),1;let currentConfiguration;asJson||output_manager_default.spinner("Checking Observability Plus status");try{currentConfiguration=await client.fetch("/v1/observability/manage/configuration")}catch(err){return output_manager_default.stopSpinner(),output_manager_default.error("Failed to check Observability Plus status."),output_manager_default.debug(`Server response: ${(0,import_error_utils5.errorToString)(err)}`),1}if(output_manager_default.stopSpinner(),currentConfiguration.observabilityPlus.subscribed)return asJson?client.stdout.write(`${JSON.stringify({productAlias:OBSERVABILITY_PLUS_PRODUCT_ALIAS,quantity:1,team:contextName,teamEnabled:currentConfiguration.observabilityPlus.enabled},null,2)}
106
106
  `):(printAlignedLabel("Status","Already enabled"),printAlignedLabel("Team",contextName)),0;if(!yes&&(!client.stdin.isTTY||client.nonInteractive))return output_manager_default.error("Confirmation required. Use --yes to skip the confirmation prompt in non-interactive mode."),1;if((!asJson||!yes)&&(printAlignedLabel("Add-on","Observability Plus"),printAlignedLabel("Team",contextName),printAlignedLabel("Usage","Billed as accrued")),!yes&&!await client.input.confirm("Enable this add-on?",!1))return 0;asJson||output_manager_default.spinner("Enabling Observability Plus");try{let result=await client.fetch("/v1/observability/manage/configuration",{method:"PATCH",body:{teamEnabled:!0}});return output_manager_default.stopSpinner(),result.teamEnabled?(asJson?client.stdout.write(`${JSON.stringify({productAlias:OBSERVABILITY_PLUS_PRODUCT_ALIAS,quantity:1,team:contextName,teamEnabled:result.teamEnabled},null,2)}
107
107
  `):(printAlignedLabel("Enabled","Observability Plus",{gutter:"\u2713"}),printAlignedLabel("Team",contextName)),0):(output_manager_default.error("The API did not confirm Observability Plus access for this team. Check the team billing settings before retrying."),1)}catch(err){return output_manager_default.stopSpinner(),handleObservabilityPlusPurchaseError(err,contextName)}}function handleObservabilityPlusPurchaseError(err,teamSlug){if(isAPIError(err)){if(err.code==="forbidden")return output_manager_default.error("Only team owners can purchase Observability Plus. Ask a team owner."),1;if(err.code==="invalid_plan_status")return output_manager_default.error("Observability Plus can't be enabled while this team's subscription is in its current state."),output_manager_default.log(`Review the team billing settings: ${output_manager_default.link(getTeamBillingUrl(teamSlug),getTeamBillingUrl(teamSlug))}`),1;if(err.code==="invalid_product"||err.code==="invalid_price")return output_manager_default.error("Observability Plus isn't available for this team's current plan."),output_manager_default.log(`Review the team billing settings: ${output_manager_default.link(getTeamBillingUrl(teamSlug),getTeamBillingUrl(teamSlug))}`),1}return output_manager_default.error("Failed to enable Observability Plus."),output_manager_default.debug(`Server response: ${(0,import_error_utils5.errorToString)(err)}`),1}async function addon(client,argv){let flagsSpecification=getFlagsSpecification(addonSubcommand.options),parsedArgs;try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs,[addonName,quantityStr]=args;if(addonName&&isCustomEnvironmentAddonAlias(addonName)){let packsResult=validateCustomEnvironmentPacks(quantityStr);if("error"in packsResult)return output_manager_default.error(packsResult.error),packsResult.usage&&output_manager_default.log(packsResult.usage),1;let project=flags["--project"];return purchaseCustomEnvironmentCapacity(client,{packs:packsResult.packs,yes:!!flags["--yes"],projectName:typeof project=="string"?project:void 0,commandName:"buy"})}if(addonName&&isObservabilityPlusAddonAlias(addonName)){if(flags["--project"]!==void 0)return output_manager_default.error("--project isn't supported for Observability Plus because it is enabled for a team. Use --scope <team> to select the team."),1;if(quantityStr!==void 0)return output_manager_default.error(`Observability Plus does not accept a quantity. Run ${getCommandName("buy addon observability-plus")} without one.`),1;let formatResult=validateJsonOutput(parsedArgs.flags);return formatResult.valid?purchaseObservabilityPlus(client,{yes:!!flags["--yes"],asJson:formatResult.jsonOutput}):(output_manager_default.error(formatResult.error),2)}return addonName?(output_manager_default.error(`Invalid addon "${addonName}". Supported addons: ${SUPPORTED_ADDON_NAMES.join(", ")}.`),1):(output_manager_default.error(`Missing addon name. Supported addons: ${SUPPORTED_ADDON_NAMES.join(", ")}`),output_manager_default.log(`Run ${getCommandName("buy addon --help")} for usage.`),2)}var import_chalk16=__toESM(require_source(),1);async function pro(client,argv){let flagsSpecification=getFlagsSpecification(proSubcommand.options),parsedArgs;try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,{team,contextName}=await getScope(client);if(!team)return output_manager_default.error("This command must be run with a team scope. Use --scope to specify a team."),1;if(!parsedArgs.flags["--yes"]){if(!client.stdin.isTTY)return output_manager_default.error("Confirmation required. Use --yes to skip the confirmation prompt in non-interactive mode."),1;if(!await client.input.confirm(`Upgrade team ${import_chalk16.default.bold(contextName)} to Vercel Pro?`,!1))return 0}let purchaseStamp=stamp_default();output_manager_default.spinner("Processing purchase");try{let result=await createPurchase(client,{type:"subscription",planSlug:"pro"});return output_manager_default.stopSpinner(),asJson?client.stdout.write(`${JSON.stringify({team:contextName,subscriptionIntent:result.subscriptionIntent},null,2)}