@vercel/cli-support 65.3.1 → 65.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/add-7NS6HIWC.js +8 -0
  3. package/dist/chunks/add-NMYFDVXW.js +8 -0
  4. package/dist/chunks/add-PMJ5BECU.js +8 -0
  5. package/dist/chunks/build-BCY6HQJG.js +7 -0
  6. package/dist/chunks/{chunk-SKYDLHEZ.js → chunk-2K3ISCQ6.js} +1 -1
  7. package/dist/chunks/{chunk-BL3HBRF6.js → chunk-2TUVL6WE.js} +1 -1
  8. package/dist/chunks/{chunk-22FDWPWY.js → chunk-363SJ4TN.js} +1 -1
  9. package/dist/chunks/chunk-462YCCJZ.js +7 -0
  10. package/dist/chunks/{chunk-KNLGWGUE.js → chunk-4N6LMERQ.js} +6 -6
  11. package/dist/chunks/chunk-527GBU3K.js +7 -0
  12. package/dist/chunks/chunk-5IWFRZQT.js +10 -0
  13. package/dist/chunks/chunk-5KUUMQ3M.js +7 -0
  14. package/dist/chunks/{chunk-IVSC7ZFJ.js → chunk-5V53NA6C.js} +1 -1
  15. package/dist/chunks/chunk-6I6QJHCY.js +7 -0
  16. package/dist/chunks/chunk-6TXEVQA4.js +7 -0
  17. package/dist/chunks/{chunk-2PKEEQ5W.js → chunk-6YXIWZ3X.js} +1 -1
  18. package/dist/chunks/{chunk-7HV7O6DM.js → chunk-7E3WREH5.js} +1 -1
  19. package/dist/chunks/{chunk-Y6AGOERS.js → chunk-7L5QUDUR.js} +1 -1
  20. package/dist/chunks/{chunk-X4762EE4.js → chunk-7QAGSRCU.js} +1 -1
  21. package/dist/chunks/{chunk-NTZ5WWYV.js → chunk-7R6TRRG5.js} +1 -1
  22. package/dist/chunks/{chunk-WCWP4GBR.js → chunk-AYUUSAB7.js} +1 -1
  23. package/dist/chunks/chunk-BVGGTBYE.js +7 -0
  24. package/dist/chunks/{chunk-YN3C5BL5.js → chunk-C7FQMC6D.js} +1 -1
  25. package/dist/chunks/{chunk-2U7DJZSQ.js → chunk-CBVKB3DT.js} +1 -1
  26. package/dist/chunks/{chunk-FDNYYENK.js → chunk-CC6FLKIP.js} +1 -1
  27. package/dist/chunks/chunk-CR3NBTHV.js +7 -0
  28. package/dist/chunks/{chunk-BBKEP7RO.js → chunk-CWM2F235.js} +1 -1
  29. package/dist/chunks/{chunk-IUXSJWL3.js → chunk-DKJL2KV7.js} +1 -1
  30. package/dist/chunks/{chunk-2ACMWVTB.js → chunk-DQ2SVW4R.js} +1 -1
  31. package/dist/chunks/{chunk-SLI2O5X7.js → chunk-EAXMWCOL.js} +2 -2
  32. package/dist/chunks/{chunk-LRYGNQ6C.js → chunk-ECEDD646.js} +1 -1
  33. package/dist/chunks/{chunk-IGDG5CWT.js → chunk-EEUJLJEJ.js} +1 -1
  34. package/dist/chunks/{chunk-VQSLPYAF.js → chunk-EGNR2DEI.js} +1 -1
  35. package/dist/chunks/chunk-EISD3RG7.js +11 -0
  36. package/dist/chunks/{chunk-GVTXA6HG.js → chunk-EKZTFGDX.js} +1 -1
  37. package/dist/chunks/{chunk-CEMPU323.js → chunk-EU2GBIPC.js} +1 -1
  38. package/dist/chunks/{chunk-3ADDGPEN.js → chunk-F6EBOT64.js} +1 -1
  39. package/dist/chunks/chunk-FHU2O7ZJ.js +8 -0
  40. package/dist/chunks/{chunk-KH6565YH.js → chunk-FLHO75XC.js} +1 -1
  41. package/dist/chunks/chunk-FSPPKNKN.js +7 -0
  42. package/dist/chunks/{chunk-43GBAKL2.js → chunk-GCZVIDNG.js} +1 -1
  43. package/dist/chunks/{chunk-G4T7VBGN.js → chunk-HSFKISDH.js} +1 -1
  44. package/dist/chunks/{chunk-OQCMRU3J.js → chunk-HTXDC7E2.js} +2 -2
  45. package/dist/chunks/{chunk-76SVVWPH.js → chunk-IOZ3I765.js} +1 -1
  46. package/dist/chunks/{chunk-UKQMYTWW.js → chunk-JLE7K4SY.js} +1 -1
  47. package/dist/chunks/{chunk-3JGBBS6V.js → chunk-JP33AIDQ.js} +1 -1
  48. package/dist/chunks/{chunk-ULHNMQ7C.js → chunk-JRPNHWA3.js} +1 -1
  49. package/dist/chunks/{chunk-D2BZMGHP.js → chunk-JUSR7V2L.js} +1 -1
  50. package/dist/chunks/{chunk-XB4SKARZ.js → chunk-JWCEHQQF.js} +1 -1
  51. package/dist/chunks/chunk-K5U47EVH.js +7 -0
  52. package/dist/chunks/{chunk-VOCZ34ON.js → chunk-KCKYPLIH.js} +1 -1
  53. package/dist/chunks/{chunk-2WYYGGEO.js → chunk-KGBIRIFF.js} +1 -1
  54. package/dist/chunks/{chunk-RRREFECI.js → chunk-KJA2GKPT.js} +1 -1
  55. package/dist/chunks/{chunk-S5IWVPYT.js → chunk-KPQLUGFI.js} +1 -1
  56. package/dist/chunks/{chunk-S4SJ7GIZ.js → chunk-KQCFC2JL.js} +1 -1
  57. package/dist/chunks/{chunk-XXXRTHTP.js → chunk-KQCROPL3.js} +1 -1
  58. package/dist/chunks/{chunk-3KKFLKQG.js → chunk-KY335KWI.js} +1 -1
  59. package/dist/chunks/{chunk-OWOWPOIE.js → chunk-L3JYCXVB.js} +1 -1
  60. package/dist/chunks/chunk-LFOWP74R.js +7 -0
  61. package/dist/chunks/{chunk-PFNYWWLI.js → chunk-LOBA3E72.js} +1 -1
  62. package/dist/chunks/{chunk-XZV4BFM5.js → chunk-LQVSU5HR.js} +1 -1
  63. package/dist/chunks/{chunk-2H3SB5RP.js → chunk-LW4N3CW6.js} +1 -1
  64. package/dist/chunks/{chunk-6ISAISGD.js → chunk-M2NXKZKX.js} +1 -1
  65. package/dist/chunks/{chunk-F2SWJEYV.js → chunk-MBEKRUTQ.js} +1 -1
  66. package/dist/chunks/{chunk-UJSW56GS.js → chunk-N2FLYCCO.js} +1 -1
  67. package/dist/chunks/{chunk-ZH6KHD55.js → chunk-N6JBQMOF.js} +2 -2
  68. package/dist/chunks/{chunk-OCQPXOTX.js → chunk-NAX6IARA.js} +1 -1
  69. package/dist/chunks/{chunk-4UGHFESV.js → chunk-NGKO2OOU.js} +1 -1
  70. package/dist/chunks/chunk-NW7WWUCQ.js +9 -0
  71. package/dist/chunks/chunk-O4WNSKQR.js +15 -0
  72. package/dist/chunks/{chunk-7Z3WUAO5.js → chunk-O72YDZKD.js} +1 -1
  73. package/dist/chunks/{chunk-LKLH6DZP.js → chunk-OHEOYFBU.js} +1 -1
  74. package/dist/chunks/{chunk-LJBUJ23M.js → chunk-OZCQTXI4.js} +1 -1
  75. package/dist/chunks/{chunk-LCHECISY.js → chunk-Q4KTAQB3.js} +1 -1
  76. package/dist/chunks/{chunk-TZFDVQ72.js → chunk-QIVX6SCR.js} +1 -1
  77. package/dist/chunks/{chunk-7Y46LB43.js → chunk-QVHXFHBV.js} +1 -1
  78. package/dist/chunks/chunk-QVXS234E.js +7 -0
  79. package/dist/chunks/{chunk-SXOSF4O6.js → chunk-QVZAAMGQ.js} +1 -1
  80. package/dist/chunks/chunk-R2BUF6Z7.js +7 -0
  81. package/dist/chunks/{chunk-OGPENBY2.js → chunk-R2XHJDAP.js} +1 -1
  82. package/dist/chunks/{chunk-E6CO6TUM.js → chunk-RMZTB2IU.js} +1 -1
  83. package/dist/chunks/{chunk-LT3UK4K6.js → chunk-SLGUYM42.js} +1 -1
  84. package/dist/chunks/{chunk-7BGKE3JW.js → chunk-SYFG2RM6.js} +1 -1
  85. package/dist/chunks/chunk-T6243EDS.js +7 -0
  86. package/dist/chunks/chunk-TAISZMA2.js +7 -0
  87. package/dist/chunks/{chunk-TO5PJDEN.js → chunk-TEYREL44.js} +1 -1
  88. package/dist/chunks/{chunk-6KVHNQW4.js → chunk-TIPQQ4TG.js} +1 -1
  89. package/dist/chunks/{chunk-DUT4U5YY.js → chunk-U2OBPULW.js} +1 -1
  90. package/dist/chunks/{chunk-OQPXJCMK.js → chunk-UGNIIDHR.js} +1 -1
  91. package/dist/chunks/{chunk-NQWGRKF4.js → chunk-UHBMX3OK.js} +1 -1
  92. package/dist/chunks/{chunk-QMCHGGDX.js → chunk-VNIKIQVE.js} +1 -1
  93. package/dist/chunks/{chunk-DGYHWXD2.js → chunk-WDXW6A4H.js} +2 -2
  94. package/dist/chunks/{chunk-L4NSF346.js → chunk-WEH6XC4Y.js} +1 -1
  95. package/dist/chunks/{chunk-TKBORMUF.js → chunk-WKZ6JSGZ.js} +1 -1
  96. package/dist/chunks/{chunk-WGXKX24Q.js → chunk-WVHCBDTB.js} +1 -1
  97. package/dist/chunks/{chunk-COM5YCHF.js → chunk-XC46OAAT.js} +1 -1
  98. package/dist/chunks/{chunk-WBF36MYT.js → chunk-XVDRGWXM.js} +1 -1
  99. package/dist/chunks/{chunk-IKQTP764.js → chunk-Y5ZMKL7E.js} +1 -1
  100. package/dist/chunks/{chunk-NEFDNROD.js → chunk-YEZJNXQX.js} +1 -1
  101. package/dist/chunks/{chunk-VMMMBWD3.js → chunk-YHULP2KK.js} +1 -1
  102. package/dist/chunks/{chunk-OMCGXRSA.js → chunk-YMZ6WBKB.js} +2 -2
  103. package/dist/chunks/{chunk-URPEIX6M.js → chunk-ZN6CQWVP.js} +1 -1
  104. package/dist/chunks/{chunk-YK7XLFU2.js → chunk-ZQBSAMFL.js} +1 -1
  105. package/dist/chunks/clear-FKVWDCVA.js +8 -0
  106. package/dist/chunks/{compile-vercel-config-3IYM2CHC.js → compile-vercel-config-GWAJE44R.js} +1 -1
  107. package/dist/chunks/config-5WVLG5SE.js +8 -0
  108. package/dist/chunks/{config-ZFIC7N4D.js → config-RMOHN5YT.js} +1 -1
  109. package/dist/chunks/config-validator.mjs +1 -1
  110. package/dist/chunks/{constants-ICJL2EO5.js → constants-JAB7MRSK.js} +1 -1
  111. package/dist/chunks/delete-5WMB4WFR.js +9 -0
  112. package/dist/chunks/delete-EM4JZPFA.js +10 -0
  113. package/dist/chunks/{detect-services-MOXTX5XG.js → detect-services-BSJGB4RM.js} +1 -1
  114. package/dist/chunks/disable-QOM7UHQC.js +7 -0
  115. package/dist/chunks/discard-L5ZH7P5B.js +14 -0
  116. package/dist/chunks/edit-F3VJGCG2.js +9 -0
  117. package/dist/chunks/edit-TM7YCWBU.js +8 -0
  118. package/dist/chunks/enable-72C3QX34.js +7 -0
  119. package/dist/chunks/{export-MHSH7QCX.js → export-EPLYZF2Q.js} +1 -1
  120. package/dist/chunks/{future-FFOGTKMF.js → future-V77DRMQG.js} +1 -1
  121. package/dist/chunks/generate-cert-for-deploy-Y3YHBMPU.js +7 -0
  122. package/dist/chunks/{image-7METSS6F.js → image-CVXEXU5R.js} +1 -1
  123. package/dist/chunks/{import-builders-GM2SERWV.js → import-builders-PGRKJOOE.js} +1 -1
  124. package/dist/chunks/inspect-BTRNXRJT.js +9 -0
  125. package/dist/chunks/{inspect-IAWVHJXQ.js → inspect-CZ7WXYE5.js} +1 -1
  126. package/dist/chunks/inspect-FGDVWAQP.js +13 -0
  127. package/dist/chunks/{inspect-A7WJQQZO.js → inspect-HFDGZNWC.js} +1 -1
  128. package/dist/chunks/{inspect-DI434TAM.js → inspect-T2AIREYK.js} +1 -1
  129. package/dist/chunks/list-CKRRHAOE.js +12 -0
  130. package/dist/chunks/{list-WWU734RK.js → list-FLREMGJR.js} +1 -1
  131. package/dist/chunks/{list-INRPH25K.js → list-ON4YTQRN.js} +1 -1
  132. package/dist/chunks/login-55LJ5ZA6.js +9 -0
  133. package/dist/chunks/{login-R5NQRPQC.js → login-DQRZSD4Z.js} +1 -1
  134. package/dist/chunks/logs-2HQXWOHM.js +7 -0
  135. package/dist/chunks/{ls-S5E2NQMI.js → ls-2HUJHVLA.js} +1 -1
  136. package/dist/chunks/{ls-V2ZSIVO3.js → ls-3DVM5HLK.js} +1 -1
  137. package/dist/chunks/ls-4B3QYHCI.js +8 -0
  138. package/dist/chunks/{ls-MCQ2NS65.js → ls-A7K4XDQB.js} +1 -1
  139. package/dist/chunks/{ls-LIGIBVAT.js → ls-FK5XEJEU.js} +1 -1
  140. package/dist/chunks/{ls-VXH4QYF5.js → ls-QGUKJJY5.js} +1 -1
  141. package/dist/chunks/ls-VTKHPDWS.js +11 -0
  142. package/dist/chunks/mutate-7ADZBCZM.js +9 -0
  143. package/dist/chunks/{notifications-KFZ333V5.js → notifications-XZJXE2K4.js} +1 -1
  144. package/dist/chunks/open-EE5IZQD7.js +7 -0
  145. package/dist/chunks/{openapi-JGYEFJJV.js → openapi-QBX62ZXC.js} +1 -1
  146. package/dist/chunks/{permissions-ZSHKMXBZ.js → permissions-VYJ4LL5R.js} +1 -1
  147. package/dist/chunks/{plugin-offer-Z6FCPQFD.js → plugin-offer-TEGYA3TA.js} +1 -1
  148. package/dist/chunks/{prompt-missing-credentials-KOA7C4QC.js → prompt-missing-credentials-VP6OVCFM.js} +1 -1
  149. package/dist/chunks/publish-2HEK5UMJ.js +15 -0
  150. package/dist/chunks/pull-WRTTSY7J.js +7 -0
  151. package/dist/chunks/purchase-domain-if-available-6S3NLTUI.js +7 -0
  152. package/dist/chunks/push-L3QRGGLC.js +7 -0
  153. package/dist/chunks/{query-JGPO7TNY.js → query-FXXLX6UB.js} +3 -3
  154. package/dist/chunks/{reauthenticate-OZRQFR66.js → reauthenticate-IXQDC4UZ.js} +1 -1
  155. package/dist/chunks/reorder-B4OXSYCI.js +10 -0
  156. package/dist/chunks/reply-F637K6XH.js +9 -0
  157. package/dist/chunks/resolve-E3F6NYQZ.js +12 -0
  158. package/dist/chunks/{resolve-agent-team-KX77HEAF.js → resolve-agent-team-EIPCH766.js} +1 -1
  159. package/dist/chunks/restore-Q25KRZPH.js +16 -0
  160. package/dist/chunks/rm-FWD2NUGX.js +8 -0
  161. package/dist/chunks/rm-JMQ4QKCC.js +8 -0
  162. package/dist/chunks/rm-PPG7P3GN.js +8 -0
  163. package/dist/chunks/rm-SH3DYKNS.js +8 -0
  164. package/dist/chunks/rm-UEBLKFVC.js +8 -0
  165. package/dist/chunks/{routes-P6LKQCWH.js → routes-PKTWMDWQ.js} +1 -1
  166. package/dist/chunks/rule-inspect-LKQA5I4V.js +8 -0
  167. package/dist/chunks/{schema-YOEAK4VX.js → schema-FBV42W7N.js} +1 -1
  168. package/dist/chunks/{schema-BEUO7G52.js → schema-ZWE5MNMG.js} +1 -1
  169. package/dist/chunks/{select-org-OMLGQEKK.js → select-org-WMB752Z6.js} +1 -1
  170. package/dist/chunks/set-UTYIPOLC.js +7 -0
  171. package/dist/chunks/setup-and-link-ZLY5XQW5.js +7 -0
  172. package/dist/chunks/{skills-4J2NC2QI.js → skills-RKIGVVNM.js} +2 -2
  173. package/dist/chunks/{tags-ZXZQEXOV.js → tags-UCLZ5UMX.js} +1 -1
  174. package/dist/chunks/{types-SK6J2HFE.js → types-YM7TMHXW.js} +1 -1
  175. package/dist/chunks/{update-25CKNOY5.js → update-BGDQ5TXO.js} +1 -1
  176. package/dist/commands/build/index.js +1 -1
  177. package/dist/commands/deploy/index.js +4 -4
  178. package/dist/commands/dev/index.js +4 -4
  179. package/dist/commands/env/index.js +1 -1
  180. package/dist/commands/link/index.js +1 -1
  181. package/dist/commands/list/index.js +1 -1
  182. package/dist/commands/project/index.js +8 -8
  183. package/dist/commands-account.js +8 -8
  184. package/dist/commands-ai.js +12 -12
  185. package/dist/commands-blob.js +8 -8
  186. package/dist/commands-core.js +11 -11
  187. package/dist/commands-deployments.js +1 -1
  188. package/dist/commands-flags.js +6 -6
  189. package/dist/commands-integrations.js +16 -16
  190. package/dist/commands-observability.js +5 -5
  191. package/dist/commands-routing.js +18 -18
  192. package/dist/help.js +1 -1
  193. package/dist/index.js +5 -3
  194. package/dist/internal-build.js +1 -1
  195. package/dist/package.json +60 -61
  196. package/dist/root-help-commands.mjs +1 -1
  197. package/dist/vc.js +148 -137
  198. package/dist/version.mjs +1 -1
  199. package/package.json +54 -54
  200. package/dist/chunks/add-5YZQTIQM.js +0 -8
  201. package/dist/chunks/add-A524QQ2H.js +0 -8
  202. package/dist/chunks/add-V4JMUHKO.js +0 -8
  203. package/dist/chunks/build-K2PVDJZ4.js +0 -7
  204. package/dist/chunks/chunk-3AYYFYZG.js +0 -7
  205. package/dist/chunks/chunk-5IASAERQ.js +0 -7
  206. package/dist/chunks/chunk-76KGQU2G.js +0 -7
  207. package/dist/chunks/chunk-ABZEMNDR.js +0 -7
  208. package/dist/chunks/chunk-APZULWJC.js +0 -8
  209. package/dist/chunks/chunk-AWMQGOS2.js +0 -7
  210. package/dist/chunks/chunk-B4UE4LVE.js +0 -7
  211. package/dist/chunks/chunk-B4YYOSPY.js +0 -7
  212. package/dist/chunks/chunk-E2SADN6I.js +0 -7
  213. package/dist/chunks/chunk-IA3MXJRC.js +0 -8
  214. package/dist/chunks/chunk-IEPW2YRH.js +0 -7
  215. package/dist/chunks/chunk-LUBUI5GF.js +0 -7
  216. package/dist/chunks/chunk-OKEBIUKZ.js +0 -7
  217. package/dist/chunks/chunk-QZX7VG2V.js +0 -9
  218. package/dist/chunks/chunk-RUXO73ON.js +0 -7
  219. package/dist/chunks/chunk-TPNOSQZ3.js +0 -15
  220. package/dist/chunks/chunk-UNEGQPD3.js +0 -7
  221. package/dist/chunks/chunk-V7BEC3E4.js +0 -10
  222. package/dist/chunks/chunk-YHQ7PPXP.js +0 -7
  223. package/dist/chunks/clear-ZS4KQ7OT.js +0 -8
  224. package/dist/chunks/config-N2SBVW4T.js +0 -8
  225. package/dist/chunks/delete-2ZE2NVHI.js +0 -10
  226. package/dist/chunks/delete-AL57HZDQ.js +0 -9
  227. package/dist/chunks/disable-MKI3BKNH.js +0 -7
  228. package/dist/chunks/discard-SI4H7ST3.js +0 -14
  229. package/dist/chunks/edit-DNWH6SPE.js +0 -8
  230. package/dist/chunks/edit-WYNWDFUJ.js +0 -9
  231. package/dist/chunks/enable-J6MMYPYF.js +0 -7
  232. package/dist/chunks/generate-cert-for-deploy-YZKNGAEQ.js +0 -7
  233. package/dist/chunks/inspect-H2Q7XOWN.js +0 -13
  234. package/dist/chunks/inspect-H5JC2XKI.js +0 -9
  235. package/dist/chunks/list-ELEUTZWJ.js +0 -12
  236. package/dist/chunks/login-ZF2TLCQB.js +0 -9
  237. package/dist/chunks/logs-UD7FEXZ7.js +0 -7
  238. package/dist/chunks/ls-5ZEAKKPQ.js +0 -8
  239. package/dist/chunks/ls-IXRLAJ4L.js +0 -11
  240. package/dist/chunks/mutate-OQWOKLIW.js +0 -9
  241. package/dist/chunks/open-HH6K7ZRC.js +0 -7
  242. package/dist/chunks/publish-FPNQ2US4.js +0 -15
  243. package/dist/chunks/pull-7OGOIKB3.js +0 -7
  244. package/dist/chunks/purchase-domain-if-available-F4LKHVBD.js +0 -7
  245. package/dist/chunks/push-NY3SIK2C.js +0 -7
  246. package/dist/chunks/reorder-4J2STFUS.js +0 -10
  247. package/dist/chunks/reply-EO4NTTPW.js +0 -9
  248. package/dist/chunks/resolve-RPHHRPNM.js +0 -12
  249. package/dist/chunks/restore-TEA6TSVK.js +0 -16
  250. package/dist/chunks/rm-BPILSPUI.js +0 -8
  251. package/dist/chunks/rm-F6XVUDBM.js +0 -8
  252. package/dist/chunks/rm-JCPXV2FN.js +0 -8
  253. package/dist/chunks/rm-LPQRGX7N.js +0 -8
  254. package/dist/chunks/rm-WHUGT6TE.js +0 -8
  255. package/dist/chunks/rule-inspect-BOETGPFO.js +0 -8
  256. package/dist/chunks/set-5XY27S7R.js +0 -7
  257. package/dist/chunks/setup-and-link-A7M3QT52.js +0 -7
@@ -4,9 +4,9 @@ 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-IVSC7ZFJ.js";import"./chunks/chunk-WCWP4GBR.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-S5IWVPYT.js";import"./chunks/chunk-GHAY4PSD.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-VQSLPYAF.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-IQKGQ2Y2.js";import"./chunks/chunk-EAUDC24V.js";import"./chunks/chunk-RRDNKB2X.js";import"./chunks/chunk-MVGTMPMI.js";import"./chunks/chunk-SACGQMVQ.js";import{ellipsis}from"./chunks/chunk-F4KY2TOK.js";import{box}from"./chunks/chunk-RLKS5G6C.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-22FDWPWY.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-RW3X523R.js";import"./chunks/chunk-ID663OJ7.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import"./chunks/chunk-D6REP5QQ.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,buy,canPromptForCharge,deleteCertById,findBudget,formatUsd,formatUsdWhole,getDomains,getTeamMemberByIdentifier,getTeamSpend,getWebhook,hasPauseThreshold,isDomainExternal,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeAliasById,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,teamMemberLabel,thresholdsForSet,toBudgetState}from"./chunks/chunk-6KVHNQW4.js";import{require_cjs}from"./chunks/chunk-DUT4U5YY.js";import"./chunks/chunk-76SVVWPH.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-SKYDLHEZ.js";import{require_execa}from"./chunks/chunk-BUJITHGZ.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{formatTable}from"./chunks/chunk-LSQREJXO.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import"./chunks/chunk-Q7D7RGXM.js";import"./chunks/chunk-FBYA6LLM.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{ensureLink}from"./chunks/chunk-OQCMRU3J.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-BL3HBRF6.js";import{getDeployment,toHost}from"./chunks/chunk-R6BEOVTU.js";import{mapCertError}from"./chunks/chunk-HCRD3JFL.js";import"./chunks/chunk-7EJQLVWX.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import"./chunks/chunk-GD7AV7BO.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-QMCHGGDX.js";import"./chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"./chunks/chunk-KW6GSQXV.js";import"./chunks/chunk-SCV7XEEO.js";import{CREDIT_TYPE_LABELS,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,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-TPNOSQZ3.js";import"./chunks/chunk-LUBUI5GF.js";import"./chunks/chunk-GVTXA6HG.js";import"./chunks/chunk-5IASAERQ.js";import"./chunks/chunk-WGXKX24Q.js";import"./chunks/chunk-E2SADN6I.js";import"./chunks/chunk-ABZEMNDR.js";import"./chunks/chunk-3AYYFYZG.js";import"./chunks/chunk-76KGQU2G.js";import"./chunks/chunk-UNEGQPD3.js";import"./chunks/chunk-YHQ7PPXP.js";import"./chunks/chunk-NQWGRKF4.js";import"./chunks/chunk-IGDG5CWT.js";import"./chunks/chunk-QZX7VG2V.js";import"./chunks/chunk-3ADDGPEN.js";import"./chunks/chunk-B4YYOSPY.js";import"./chunks/chunk-PFNYWWLI.js";import"./chunks/chunk-NTZ5WWYV.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-LJBUJ23M.js";import"./chunks/chunk-OKEBIUKZ.js";import{help}from"./chunks/chunk-KH6565YH.js";import{table}from"./chunks/chunk-773GOZIR.js";import{printError}from"./chunks/chunk-G4T7VBGN.js";import"./chunks/chunk-67GZ5REA.js";import"./chunks/chunk-BS32OUOC.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"./chunks/chunk-2PKEEQ5W.js";import"./chunks/chunk-PUKYAALC.js";import{getContextName,getScope}from"./chunks/chunk-B4UE4LVE.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-NWGBDBZI.js";import{getTeams}from"./chunks/chunk-FGFLTLEA.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-DGYHWXD2.js";import"./chunks/chunk-IUXSJWL3.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-KNLGWGUE.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-ADLBLGT3.js";import"./chunks/chunk-BBKEP7RO.js";import"./chunks/chunk-4NTBYNFR.js";import{parseArguments}from"./chunks/chunk-VOCZ34ON.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,stripSensitiveAuthArgs,validateJsonOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-AWMQGOS2.js";import{toNodeReadable}from"./chunks/chunk-FUX6LKNP.js";import"./chunks/chunk-OPORM35X.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-6VH56CX2.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-JESNVRVR.js";import{chars_default,emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-XP3FT56R.js";import"./chunks/chunk-BLUPZPAS.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-OO572JUC.js";import"./chunks/chunk-D3AHZ5LI.js";import"./chunks/chunk-2GHZGOWT.js";import"./chunks/chunk-YHPPP3SF.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BRQUZ5NC.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{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
- `),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,"--search":search,"--next":next,"--page":legacyPage,"--limit":limit,"--json":json,"--scope":scopeFlag}=parsedArgs.flags;if(legacyPage!==void 0&&warnDeprecatedOption(client.argv,"--page","--next"),telemetry.trackCliOptionProject(projectFlag),telemetry.trackCliOptionEnvironment(environment),telemetry.trackCliOptionSince(since),telemetry.trackCliOptionUntil(until),telemetry.trackCliOptionSearch(search),telemetry.trackCliOptionNext(next),telemetry.trackCliOptionPage(legacyPage),telemetry.trackCliOptionLimit(limit),telemetry.trackCliFlagJson(json),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(payload,null,2)}
9
- `),0}let pageCommand={argv:client.argv},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(`
7
+ import{createCertForCns,extractDomain,isWildcardAlias,setupDomain}from"./chunks/chunk-5V53NA6C.js";import"./chunks/chunk-AYUUSAB7.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-KPQLUGFI.js";import"./chunks/chunk-GHAY4PSD.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-EGNR2DEI.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-IQKGQ2Y2.js";import"./chunks/chunk-EAUDC24V.js";import"./chunks/chunk-RRDNKB2X.js";import"./chunks/chunk-MVGTMPMI.js";import"./chunks/chunk-SACGQMVQ.js";import{ellipsis}from"./chunks/chunk-F4KY2TOK.js";import{box}from"./chunks/chunk-RLKS5G6C.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-363SJ4TN.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-RW3X523R.js";import"./chunks/chunk-ID663OJ7.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import"./chunks/chunk-D6REP5QQ.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,buy,canPromptForCharge,deleteCertById,findBudget,formatUsd,formatUsdWhole,getDomains,getTeamMemberByIdentifier,getTeamSpend,getWebhook,hasPauseThreshold,isDomainExternal,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeAliasById,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,teamMemberLabel,thresholdsForSet,toBudgetState}from"./chunks/chunk-TIPQQ4TG.js";import{require_cjs}from"./chunks/chunk-U2OBPULW.js";import"./chunks/chunk-IOZ3I765.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-2K3ISCQ6.js";import{require_execa}from"./chunks/chunk-BUJITHGZ.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{formatTable}from"./chunks/chunk-LSQREJXO.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import"./chunks/chunk-Q7D7RGXM.js";import"./chunks/chunk-FBYA6LLM.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{ensureLink}from"./chunks/chunk-HTXDC7E2.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-2TUVL6WE.js";import{getDeployment,toHost}from"./chunks/chunk-R6BEOVTU.js";import{mapCertError}from"./chunks/chunk-HCRD3JFL.js";import"./chunks/chunk-7EJQLVWX.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import"./chunks/chunk-GD7AV7BO.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-VNIKIQVE.js";import"./chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-T6243EDS.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"./chunks/chunk-KW6GSQXV.js";import{getTeams}from"./chunks/chunk-FGFLTLEA.js";import"./chunks/chunk-SCV7XEEO.js";import{CREDIT_TYPE_LABELS,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,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-O4WNSKQR.js";import"./chunks/chunk-6I6QJHCY.js";import"./chunks/chunk-EKZTFGDX.js";import"./chunks/chunk-462YCCJZ.js";import"./chunks/chunk-WVHCBDTB.js";import"./chunks/chunk-TAISZMA2.js";import"./chunks/chunk-527GBU3K.js";import"./chunks/chunk-CR3NBTHV.js";import"./chunks/chunk-BVGGTBYE.js";import"./chunks/chunk-6TXEVQA4.js";import"./chunks/chunk-5KUUMQ3M.js";import"./chunks/chunk-UHBMX3OK.js";import"./chunks/chunk-EEUJLJEJ.js";import"./chunks/chunk-NW7WWUCQ.js";import"./chunks/chunk-F6EBOT64.js";import"./chunks/chunk-LFOWP74R.js";import"./chunks/chunk-LOBA3E72.js";import"./chunks/chunk-7R6TRRG5.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-OZCQTXI4.js";import"./chunks/chunk-FSPPKNKN.js";import{help}from"./chunks/chunk-FLHO75XC.js";import{table}from"./chunks/chunk-773GOZIR.js";import{printError}from"./chunks/chunk-HSFKISDH.js";import"./chunks/chunk-67GZ5REA.js";import"./chunks/chunk-BS32OUOC.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"./chunks/chunk-6YXIWZ3X.js";import"./chunks/chunk-PUKYAALC.js";import{getContextName,getScope}from"./chunks/chunk-K5U47EVH.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-WDXW6A4H.js";import"./chunks/chunk-DKJL2KV7.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-4N6LMERQ.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-ADLBLGT3.js";import"./chunks/chunk-CWM2F235.js";import"./chunks/chunk-4NTBYNFR.js";import{parseArguments}from"./chunks/chunk-KCKYPLIH.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,stripSensitiveAuthArgs,validateJsonOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-QVXS234E.js";import{toNodeReadable}from"./chunks/chunk-FUX6LKNP.js";import"./chunks/chunk-OPORM35X.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-6VH56CX2.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-JESNVRVR.js";import{chars_default,emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-XP3FT56R.js";import"./chunks/chunk-BLUPZPAS.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-OO572JUC.js";import"./chunks/chunk-D3AHZ5LI.js";import"./chunks/chunk-2GHZGOWT.js";import"./chunks/chunk-YHPPP3SF.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BRQUZ5NC.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
+ `),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
+ `),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," ")}
11
11
 
12
12
  `);let pagination=pageInfo??readRecord(data,"pagination"),total=readNumber(pagination,"total","totalCount"),pageSize=readNumber(pagination,"pageSize")??runList.length,shown=((page??1)-1)*pageSize+runList.length;return total!==void 0&&total>shown&&output_manager_default.log(`Showing ${runList.length} of ${total} Agent Runs.`),output_manager_default.log(`Run ${cmd("vercel agent-runs inspect <runId>")} for run details.`),nextToken?printNextPage(buildListPageCommand({...pageCommand,next:nextToken})):pageInfo?.hasMore===!0&&output_manager_default.warning("More Agent Runs are available, but the response has no usable cursor. Narrow `--since` and `--until` to list them."),!cursorPaged&&total!==void 0&&total>shown&&printNextPage(buildListPageCommand({...pageCommand,window,next:String((page??1)+1)})),0}var import_chalk3=__toESM(require_source(),1);var AgentInspectTelemetryClient=class extends AgentRunsQueryTelemetryClient{trackCliArgumentRunId(value){value&&this.trackCliArgument({arg:"runId",value:this.redactedValue})}};function formatStartedAt(run){let startedAt=runStartedAtMs(run);return startedAt===void 0?"-":`${formatAge(startedAt)} ${import_chalk3.default.gray(formatTimestamp(startedAt))}`}function renderDetail(run){let usage=readRecord(run,"usage"),rows=[[import_chalk3.default.bold("Run ID"),runId(run)],[import_chalk3.default.bold("Status"),formatRunStatus(run)]],title2=runTitle(run);title2&&rows.push([import_chalk3.default.bold("Title"),title2]),rows.push([import_chalk3.default.bold("Trigger"),runTrigger(run)],[import_chalk3.default.bold("Model"),runModel(run)],[import_chalk3.default.bold("Started"),formatStartedAt(run)],[import_chalk3.default.bold("Duration"),formatDurationMs(runDurationMs(run))]);let input=readNumber(usage,"inputTokens","promptTokens","input"),outputTokens=readNumber(usage,"outputTokens","completionTokens","output"),total=runTotalTokens(run);(input!==void 0||outputTokens!==void 0||total!==void 0)&&rows.push([import_chalk3.default.bold("Tokens"),`${formatCount(input)} in / ${formatCount(outputTokens)} out / ${formatCount(total)} total`]);let sections=[table(rows,{hsep:3})],events=asArray(run.events);if(events.length>0){let eventTimes=events.map(event=>readTimestampMs(event,"timestamp","createdAt","time","at")),knownTimes=[runStartedAtMs(run),...eventTimes].filter(time=>time!==void 0),baseTime=knownTimes.length?Math.min(...knownTimes):void 0,eventRows=[["Time","Event"].map(header=>import_chalk3.default.bold(import_chalk3.default.cyan(header))),...events.map((event,index)=>{let time=eventTimes[index],offset=time!==void 0&&baseTime!==void 0&&time>=baseTime?`+${formatDurationMs(time-baseTime)}`:formatTimestamp(time);return[import_chalk3.default.gray(offset),readString(event,"type","name","event","message")??"-"]})];sections.push(`${import_chalk3.default.bold("Events")}
@@ -50,18 +50,18 @@ ${table(rows,{hsep:3}).replace(/^/gm," ")}
50
50
  `);let result=[import_chalk11.default.bold(`The first bad deployment is: ${link_default(`https://${lastBad.url}`)}`),"",` ${import_chalk11.default.bold("Date:")} ${formatDate(lastBad.createdAt)}`],commit=getCommit(lastBad);if(commit){let shortSha=commit.sha.substring(0,7),firstLine=commit.message?.split(`
51
51
  `)[0];result.push(` ${import_chalk11.default.bold("Commit:")} [${shortSha}] ${firstLine}`)}return result.push(`${import_chalk11.default.bold("Inspect:")} ${link_default(lastBad.inspectorUrl)}`),output_manager_default.print(box(result.join(`
52
52
  `))),output_manager_default.print(`
53
- `),0}function getCommit(deployment){let sha=deployment.meta?.githubCommitSha||deployment.meta?.gitlabCommitSha||deployment.meta?.bitbucketCommitSha;if(!sha)return null;let message=deployment.meta?.githubCommitMessage||deployment.meta?.gitlabCommitMessage||deployment.meta?.bitbucketCommitMessage;return{sha,message}}var BudgetTelemetryClient=class extends TelemetryClient{trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandSet(actual){this.trackCliSubcommand({subcommand:"set",value:actual})}trackCliSubcommandRemove(actual){this.trackCliSubcommand({subcommand:"remove",value:actual})}trackCliSubcommandAlerts(actual){this.trackCliSubcommand({subcommand:"alerts",value:actual})}};var import_chalk12=__toESM(require_source(),1);function webhookLabel(state){return state.webhookStatus==="unavailable"?"configured (unavailable)":state.webhookUrl??"\u2014"}function printBudgetsTable(states,spentFor){return`${table([["scope","amount","spent","used","status","pause","webhook"].map(header=>import_chalk12.default.gray(header)),...states.map(state=>{let spent=spentFor(state),used=percentUsed(spent,state.amount);return[state.scope,formatUsdWhole(state.amount),spent===null?"\u2014":formatUsd(spent),used===null?"\u2014":`${used}%`,state.status,state.pause?"yes":"no",webhookLabel(state)]})],{align:["l","r","r","r","l","l","l"],hsep:4}).replace(/^/gm," ")}
53
+ `),0}function getCommit(deployment){let sha=deployment.meta?.githubCommitSha||deployment.meta?.gitlabCommitSha||deployment.meta?.bitbucketCommitSha;if(!sha)return null;let message=deployment.meta?.githubCommitMessage||deployment.meta?.gitlabCommitMessage||deployment.meta?.bitbucketCommitMessage;return{sha,message}}var BudgetTelemetryClient=class extends TelemetryClient{trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandSet(actual){this.trackCliSubcommand({subcommand:"set",value:actual})}trackCliSubcommandRemove(actual){this.trackCliSubcommand({subcommand:"remove",value:actual})}trackCliSubcommandAlerts(actual){this.trackCliSubcommand({subcommand:"alerts",value:actual})}};var import_chalk12=__toESM(require_source(),1);function webhookLabel(state){return state.webhookStatus==="unavailable"?"configured (unavailable)":state.webhookUrl??"\u2014"}function printBudgetsTable(states,spentFor){let spendHeaders=spentFor?["spent","used"]:[],spendAlign=spentFor?["r","r"]:[];return`${table([["scope","amount",...spendHeaders,"status","pause","webhook"].map(header=>import_chalk12.default.gray(header)),...states.map(state=>{let spendCells=[];if(spentFor){let spent=spentFor(state),used=percentUsed(spent,state.amount);spendCells.push(spent===null?"\u2014":formatUsd(spent),used===null?"\u2014":`${used}%`)}return[state.scopeId?`${state.scope} ${state.scopeId}`:state.scope,formatUsdWhole(state.amount),...spendCells,state.status,state.pause?"yes":"no",webhookLabel(state)]})],{align:["l","r",...spendAlign,"l","l","l"],hsep:4}).replace(/^/gm," ")}
54
54
 
55
55
  `}function warnUnavailableWebhooks(states){states.some(state=>state.webhookStatus==="unavailable")&&output_manager_default.warn("A webhook is configured, but its URL could not be loaded. That is not the same as having no webhook.")}function formatAlertTime(ms10){return Number.isFinite(ms10)?`${new Date(ms10).toISOString().slice(0,16).replace("T"," ")} UTC`:"\u2014"}function formatUsdString(value,{whole}){let dollars=Number(value);return Number.isFinite(dollars)?whole&&Number.isInteger(dollars)?formatUsdWhole(dollars):formatUsd(dollars):value}function alertThresholdLabel(alert){return`${alert.threshold.percent}%`}function alertActionsLabel(alert){let{sendNotifications,triggerWebhook,pauseUsage}=alert.threshold,actions=[sendNotifications&&"notify",triggerWebhook&&"webhook",pauseUsage&&"pause"].filter(Boolean);return actions.length>0?actions.join(", "):"\u2014"}function printBudgetAlertsTable(alerts2){return`${table([["date","budget","threshold","spent","budget amount","actions configured"].map(header=>import_chalk12.default.gray(header)),...alerts2.map(alert=>[formatAlertTime(alert.triggeredAt),alert.scope,alertThresholdLabel(alert),formatUsdString(alert.spent,{whole:!1}),formatUsdString(alert.budgetAmount,{whole:!0}),alertActionsLabel(alert)])],{align:["l","l","r","r","r","l"],hsep:4}).replace(/^/gm," ")}
56
56
 
57
- `}async function resolveBudgetTeam(client){let id=await client.resolveCurrentTeam();if(!id)return output_manager_default.error("No team selected. Use `vercel --scope <team-slug> budget \u2026` or run `vercel switch` first."),null;try{let team=await getTeamByIdOrSlug(client,id);return{id:team.id,slug:team.slug}}catch{return{id,slug:id}}}function rejectUnexpectedArgs(args,command){return args.length===0?!1:(output_manager_default.error(`Unexpected argument "${args[0]}". ${getCommandName(command)} takes options only.`),!0)}function scopedBudgetCommand(client,team,subcommand){return getCommandName(scopedBudgetSubcommand(client,team,subcommand))}function scopedBudgetSubcommand(client,team,subcommand){let full=buildCommandWithGlobalFlags(client.argv,`--scope ${team.slug} ${subcommand}`,packageName,{prependGlobalFlags:!0,excludeFlags:["--scope","-S","--team","-T"]});return full.startsWith(`${packageName} `)?full.slice(packageName.length+1):full}var BudgetListTelemetryClient=class extends TelemetryClient{trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function list3(client,argv){let telemetry=new BudgetListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand9.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets list"))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 budgets\u2026");try{let[budgets,spend]=await Promise.all([listBudgets(client,selector),getTeamSpend(client,team.id,selector,{retry:NO_RETRY}).catch(()=>null)]),states=await Promise.all(budgets.map(budget2=>toBudgetState(client,budget2,selector)));return output_manager_default.stopSpinner(),printTeamList(client,{asJson,states,spent:spendDollars(spend),team})}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}}function printTeamList(client,{asJson,states,spent,team}){return asJson?(client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,budgets:states.map(state=>({...budgetStatePayload(state),spend:spendPayload(spent,state.amount)}))},null,2)}
58
- `),0):states.length===0?(output_manager_default.log(`No budgets found on team ${team.slug}. Set one with ${scopedBudgetCommand(client,team,"budgets set --amount <dollars>")}.`),0):(output_manager_default.log("Budgets"),warnUnavailableWebhooks(states),client.stdout.write(printBudgetsTable(states,()=>spent)),0)}var BudgetSetTelemetryClient=class extends TelemetryClient{trackCliOptionAmount(amount){amount!==void 0&&this.trackCliOption({option:"amount",value:this.redactedValue})}trackCliFlagPause(pause){pause&&this.trackCliFlag("pause")}trackCliFlagNoPause(noPause){noPause&&this.trackCliFlag("no-pause")}trackCliOptionWebhook(webhook){webhook&&this.trackCliOption({option:"webhook",value:this.redactedValue})}trackCliFlagNoWebhook(noWebhook){noWebhook&&this.trackCliFlag("no-webhook")}trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function set2(client,argv){let telemetry=new BudgetSetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(setSubcommand2.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets set"))return 2;let amountFlag=opts["--amount"],pauseFlag=opts["--pause"],noPauseFlag=opts["--no-pause"],webhookFlag=opts["--webhook"],noWebhookFlag=opts["--no-webhook"],pauseSpecified=!!(pauseFlag||noPauseFlag),webhookSpecified=webhookFlag!==void 0||!!noWebhookFlag,formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;if(telemetry.trackCliOptionAmount(amountFlag),telemetry.trackCliFlagPause(pauseFlag),telemetry.trackCliFlagNoPause(noPauseFlag),telemetry.trackCliOptionWebhook(webhookFlag),telemetry.trackCliFlagNoWebhook(noWebhookFlag),telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]),pauseFlag&&noPauseFlag)return output_manager_default.error("Cannot use --pause and --no-pause together."),2;if(webhookFlag!==void 0&&noWebhookFlag)return output_manager_default.error("Cannot use --webhook and --no-webhook together."),2;if(webhookFlag!==void 0&&webhookFlag.trim()==="")return output_manager_default.error("Provide a webhook URL, or use --no-webhook to remove it."),2;if(amountFlag===void 0&&!pauseSpecified&&!webhookSpecified)return output_manager_default.error(`Specify ${getCommandName("budgets set --amount <dollars>")} to create a budget, or --pause / --webhook to update the existing one.`),2;if(amountFlag!==void 0){if(!Number.isInteger(amountFlag))return output_manager_default.error("A budget must be a whole number of dollars."),2;if(amountFlag<1)return output_manager_default.error("A budget must be at least $1."),2}let team=await resolveBudgetTeam(client);if(!team)return 2;let selector=TEAM_BUDGET;output_manager_default.spinner("Fetching budget\u2026");let webhookSecret;try{let existing=await findBudget(client,selector),amount;if(amountFlag!==void 0)amount=amountFlag;else if(existing)amount=budgetAmountDollars(existing);else return output_manager_default.stopSpinner(),output_manager_default.error(`No budget to update. Create one with ${scopedBudgetCommand(client,team,"budgets set --amount <dollars>")}.`),1;let pause;pauseFlag?pause=!0:noPauseFlag?pause=!1:existing?pause=budgetPauses(existing):pause=!1;let webhookUrl;noWebhookFlag?webhookUrl=void 0:webhookFlag!==void 0?webhookUrl=webhookFlag.trim():existing?.webhookId&&(webhookUrl=(await getWebhook(client,existing.webhookId)).url);let thresholds=thresholdsForSet({existing:existing?.thresholds,pause,pauseSpecified,webhookUrl,webhookSpecified});if(pauseFlag&&!hasPauseThreshold(thresholds))return output_manager_default.stopSpinner(),output_manager_default.error("Pause only applies at 100% of the budget. This budget has no 100% threshold."),1;let invalidPause=pausePercentsOutside100(thresholds);if(invalidPause.length>0)return output_manager_default.stopSpinner(),output_manager_default.error(`Pause only applies at 100% of the budget. This budget pauses at ${invalidPause.map(percent=>`${percent}%`).join(", ")}. Re-run with --pause to move it to 100%, or --no-pause to clear it.`),1;output_manager_default.stopSpinner(),pauseFlag&&!asJson&&output_manager_default.log(`Pause all projects on team ${team.slug} at 100% (${formatUsdWhole(amount)}). Production deployments become unavailable.`),output_manager_default.spinner("Saving budget\u2026"),webhookSecret=(await setBudget(client,{amount,thresholds,...selector,...webhookUrl?{webhookUrl}:{}})).webhookSecret;let state,spent=null;try{let[row,spend]=await Promise.all([findBudget(client,selector),asJson?null:getTeamSpend(client,team.id,selector,{retry:NO_RETRY}).catch(()=>null)]);spent=spendDollars(spend),row&&(state=await toBudgetState(client,row,selector))}catch{state=void 0}return output_manager_default.stopSpinner(),state?asJson?(client.stdout.write(`${JSON.stringify(setSavedReceipt({team,reloaded:state,webhookSecret,amount,scope:selector.scope}),null,2)}
59
- `),0):(output_manager_default.success(`Budget updated on team ${team.slug}.`),warnUnavailableWebhooks([state]),client.stdout.write(printBudgetsTable([state],()=>spent)),printWebhookSecret(webhookSecret),0):(printSavedWithoutReload(client,{asJson,team,amount,webhookSecret}),0)}catch(err){return output_manager_default.stopSpinner(),printSetFailure(err,client,team)}}function printSavedWithoutReload(client,{asJson,team,amount,webhookSecret}){output_manager_default.warn(`Budget saved on team ${team.slug}, but it could not be reloaded. Run ${scopedBudgetCommand(client,team,"budgets")} to confirm before retrying.`),asJson?client.stdout.write(`${JSON.stringify(setSavedReceipt({team,reloaded:null,webhookSecret,amount,scope:TEAM_BUDGET.scope}),null,2)}
57
+ `}async function resolveBudgetTeam(client){let id=await client.resolveCurrentTeam();if(!id)return output_manager_default.error("No team selected. Use `vercel --scope <team-slug> budget \u2026` or run `vercel switch` first."),null;try{let team=await getTeamByIdOrSlug(client,id);return{id:team.id,slug:team.slug}}catch{return{id,slug:id}}}function rejectUnexpectedArgs(args,command){return args.length===0?!1:(output_manager_default.error(`Unexpected argument "${args[0]}". ${getCommandName(command)} takes options only.`),!0)}function scopedBudgetCommand(client,team,subcommand){return getCommandName(scopedBudgetSubcommand(client,team,subcommand))}function scopedBudgetSubcommand(client,team,subcommand){let full=buildCommandWithGlobalFlags(client.argv,`--scope ${team.slug} ${subcommand}`,packageName,{prependGlobalFlags:!0,excludeFlags:["--scope","-S","--team","-T"]});return full.startsWith(`${packageName} `)?full.slice(packageName.length+1):full}var BudgetListTelemetryClient=class extends TelemetryClient{trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function list3(client,argv){let telemetry=new BudgetListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand9.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets list"))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;output_manager_default.spinner("Fetching budgets\u2026");try{let budgets=await listBudgets(client),states=await Promise.all(budgets.map(budget2=>toBudgetState(client,budget2)));return output_manager_default.stopSpinner(),printTeamList(client,{asJson,states,team})}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}}function printTeamList(client,{asJson,states,team}){return asJson?(client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,budgets:states.map(budgetStatePayload)},null,2)}
58
+ `),0):states.length===0?(output_manager_default.log(`No budgets found on team ${team.slug}. Set one with ${scopedBudgetCommand(client,team,"budgets set --amount <dollars>")}.`),0):(output_manager_default.log("Budgets"),warnUnavailableWebhooks(states),client.stdout.write(printBudgetsTable(states)),0)}var BudgetSetTelemetryClient=class extends TelemetryClient{trackCliOptionAmount(amount){amount!==void 0&&this.trackCliOption({option:"amount",value:this.redactedValue})}trackCliFlagPause(pause){pause&&this.trackCliFlag("pause")}trackCliFlagNoPause(noPause){noPause&&this.trackCliFlag("no-pause")}trackCliOptionWebhook(webhook){webhook&&this.trackCliOption({option:"webhook",value:this.redactedValue})}trackCliFlagNoWebhook(noWebhook){noWebhook&&this.trackCliFlag("no-webhook")}trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function set2(client,argv){let telemetry=new BudgetSetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(setSubcommand2.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"budgets set"))return 2;let amountFlag=opts["--amount"],pauseFlag=opts["--pause"],noPauseFlag=opts["--no-pause"],webhookFlag=opts["--webhook"],noWebhookFlag=opts["--no-webhook"],pauseSpecified=!!(pauseFlag||noPauseFlag),webhookSpecified=webhookFlag!==void 0||!!noWebhookFlag,formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;if(telemetry.trackCliOptionAmount(amountFlag),telemetry.trackCliFlagPause(pauseFlag),telemetry.trackCliFlagNoPause(noPauseFlag),telemetry.trackCliOptionWebhook(webhookFlag),telemetry.trackCliFlagNoWebhook(noWebhookFlag),telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]),pauseFlag&&noPauseFlag)return output_manager_default.error("Cannot use --pause and --no-pause together."),2;if(webhookFlag!==void 0&&noWebhookFlag)return output_manager_default.error("Cannot use --webhook and --no-webhook together."),2;if(webhookFlag!==void 0&&webhookFlag.trim()==="")return output_manager_default.error("Provide a webhook URL, or use --no-webhook to remove it."),2;if(amountFlag===void 0&&!pauseSpecified&&!webhookSpecified)return output_manager_default.error(`Specify ${getCommandName("budgets set --amount <dollars>")} to create a budget, or --pause / --webhook to update the existing one.`),2;if(amountFlag!==void 0){if(!Number.isInteger(amountFlag))return output_manager_default.error("A budget must be a whole number of dollars."),2;if(amountFlag<1)return output_manager_default.error("A budget must be at least $1."),2}let team=await resolveBudgetTeam(client);if(!team)return 2;let selector=TEAM_BUDGET;output_manager_default.spinner("Fetching budget\u2026");let webhookSecret;try{let existing=await findBudget(client,selector),amount;if(amountFlag!==void 0)amount=amountFlag;else if(existing)amount=budgetAmountDollars(existing);else return output_manager_default.stopSpinner(),output_manager_default.error(`No budget to update. Create one with ${scopedBudgetCommand(client,team,"budgets set --amount <dollars>")}.`),1;let pause;pauseFlag?pause=!0:noPauseFlag?pause=!1:existing?pause=budgetPauses(existing):pause=!1;let webhookUrl;noWebhookFlag?webhookUrl=void 0:webhookFlag!==void 0?webhookUrl=webhookFlag.trim():existing?.webhookId&&(webhookUrl=(await getWebhook(client,existing.webhookId)).url);let thresholds=thresholdsForSet({existing:existing?.thresholds,pause,pauseSpecified,webhookUrl,webhookSpecified});if(pauseFlag&&!hasPauseThreshold(thresholds))return output_manager_default.stopSpinner(),output_manager_default.error("Pause only applies at 100% of the budget. This budget has no 100% threshold."),1;let invalidPause=pausePercentsOutside100(thresholds);if(invalidPause.length>0)return output_manager_default.stopSpinner(),output_manager_default.error(`Pause only applies at 100% of the budget. This budget pauses at ${invalidPause.map(percent=>`${percent}%`).join(", ")}. Re-run with --pause to move it to 100%, or --no-pause to clear it.`),1;output_manager_default.stopSpinner(),pauseFlag&&!asJson&&output_manager_default.log(`Pause all projects on team ${team.slug} at 100% (${formatUsdWhole(amount)}). Production deployments become unavailable.`),output_manager_default.spinner("Saving budget\u2026"),webhookSecret=(await setBudget(client,{amount,thresholds,...selector,...webhookUrl?{webhookUrl}:{}})).webhookSecret;let state;try{let row=await findBudget(client,selector);row&&(state=await toBudgetState(client,row,selector))}catch{state=void 0}return output_manager_default.stopSpinner(),state?asJson?(client.stdout.write(`${JSON.stringify(setSavedReceipt({team,reloaded:state,webhookSecret,amount,scope:selector.scope}),null,2)}
59
+ `),0):(output_manager_default.success(`Budget updated on team ${team.slug}.`),warnUnavailableWebhooks([state]),client.stdout.write(printBudgetsTable([state])),printWebhookSecret(webhookSecret),0):(printSavedWithoutReload(client,{asJson,team,amount,webhookSecret}),0)}catch(err){return output_manager_default.stopSpinner(),printSetFailure(err,client,team)}}function printSavedWithoutReload(client,{asJson,team,amount,webhookSecret}){output_manager_default.warn(`Budget saved on team ${team.slug}, but it could not be reloaded. Run ${scopedBudgetCommand(client,team,"budgets")} to confirm before retrying.`),asJson?client.stdout.write(`${JSON.stringify(setSavedReceipt({team,reloaded:null,webhookSecret,amount,scope:TEAM_BUDGET.scope}),null,2)}
60
60
  `):printWebhookSecret(webhookSecret)}function printSetFailure(err,client,team){return isAPIError(err)?(output_manager_default.error(err.message),err.status>=500&&printInspectBeforeRetry(client,team),1):(output_manager_default.error(err instanceof Error?err.message:"Failed to save budget."),printInspectBeforeRetry(client,team),1)}function printInspectBeforeRetry(client,team){output_manager_default.log(`If the budget may already exist, run ${scopedBudgetCommand(client,team,"budgets")} before retrying. Retrying this save can drop a new webhook secret.`)}function printWebhookSecret(secret){secret&&(output_manager_default.log(`Webhook secret: ${secret}`),output_manager_default.log("Store it now \u2014 it cannot be retrieved later."))}var BudgetRemoveTelemetryClient=class extends TelemetryClient{trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function remove(client,argv){let telemetry=new BudgetRemoveTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeSubcommand6.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs,yes=opts["--yes"];if(rejectUnexpectedArgs(args,"budgets remove"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagYes(yes),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 budgets\u2026");let target;try{target=await findBudget(client,selector)}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}if(output_manager_default.stopSpinner(),!target)return asJson?client.stdout.write(`${JSON.stringify(removeReceipt({team,alreadyAbsent:!0,disabled:null,scope:selector.scope}),null,2)}
61
61
  `):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)}
62
62
  `),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 inspect2(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)}
63
63
  `),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)}
64
- `),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,{columns:client.stderr.columns})),0;function printHelp(command){output_manager_default.print(help(command,{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"),inspect2(client,args));case"list":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(listSubcommand9),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(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,{columns:client.stderr.columns})),2):needHelp?(telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{columns:client.stderr.columns})),0):inspect2(client,args)}}}var import_chalk13=__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_utils=__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_utils.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_chalk13.default.bold(`$${amount}`)} of ${label} credits for team ${import_chalk13.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)}
64
+ `),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,{columns:client.stderr.columns})),0;function printHelp(command){output_manager_default.print(help(command,{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"),inspect2(client,args));case"list":return needHelp?(telemetry.trackCliFlagHelp("budgets",subcommandOriginal),printHelp(listSubcommand9),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(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,{columns:client.stderr.columns})),2):needHelp?(telemetry.trackCliFlagHelp("budgets"),output_manager_default.print(help(budgetCommand,{columns:client.stderr.columns})),0):list3(client,args)}}}var import_chalk13=__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_utils=__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_utils.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_chalk13.default.bold(`$${amount}`)} of ${label} credits for team ${import_chalk13.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)}
65
65
  `):(output_manager_default.success(`Purchased ${import_chalk13.default.bold(`$${amount}`)} of ${label} credits for ${import_chalk13.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_chalk14=__toESM(require_source(),1);var import_error_utils2=__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_utils2.errorToString)(err)}`),1}async function purchaseCustomEnvironmentCapacity(client,{packs,yes,projectName,commandName}){let{cwd}=client,link=await ensureLink(commandName,client,cwd,{autoConfirm:yes,projectName,failIfNotFound:!!projectName});if(typeof link=="number")return link;let projectId=link.project.id,projectNameResolved=link.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:link.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_chalk14.default.bold(projectNameResolved)} already has ${import_chalk14.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_chalk14.default.bold(packs)} custom environment pack${packs===1?"":"s"} (${purchasedAmount} environments) for project ${import_chalk14.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:link.org.id});return output_manager_default.stopSpinner(),output_manager_default.success(`Updated custom environment capacity for ${import_chalk14.default.bold(projectNameResolved)} to ${import_chalk14.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_utils3=__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_utils3.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)}
66
66
  `):(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)}
67
67
  `):(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_utils3.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_chalk15=__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_chalk15.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)}