@vercel/cli-support 65.9.0-snapshot-c4002eb2617b → 65.9.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 (138) hide show
  1. package/dist/chunks/{add-SEQOVWYP.js → add-6YFDZCAK.js} +1 -1
  2. package/dist/chunks/{add-QINN2GTA.js → add-QDZPCCUD.js} +1 -1
  3. package/dist/chunks/{add-EHNDQSPH.js → add-Z24IIQDY.js} +1 -1
  4. package/dist/chunks/{build-ATYGR3HB.js → build-HLU4YO37.js} +1 -1
  5. package/dist/chunks/{chunk-WQQTVQZK.js → chunk-2DODPQ5J.js} +1 -1
  6. package/dist/chunks/{chunk-RCFJTXSB.js → chunk-2JNDJISE.js} +1 -1
  7. package/dist/chunks/{chunk-46XT5J5W.js → chunk-2JXQWOK5.js} +1 -1
  8. package/dist/chunks/{chunk-JJ2JHAGW.js → chunk-2TRNHR72.js} +1 -1
  9. package/dist/chunks/{chunk-CH5325V5.js → chunk-43P35KUA.js} +1 -1
  10. package/dist/chunks/{chunk-3Y3FZLFN.js → chunk-4OTI552J.js} +1 -1
  11. package/dist/chunks/{chunk-5KKRDN5F.js → chunk-4SJU5QSD.js} +1 -1
  12. package/dist/chunks/{chunk-Q4WEODW3.js → chunk-4XJVEKTD.js} +1 -1
  13. package/dist/chunks/{chunk-4HIRAB5V.js → chunk-5K4UTJSY.js} +1 -1
  14. package/dist/chunks/{chunk-JB6T3XEF.js → chunk-5M3WBT3N.js} +1 -1
  15. package/dist/chunks/{chunk-YJQW3DDY.js → chunk-6RCFEJZK.js} +1 -1
  16. package/dist/chunks/{chunk-IDP63TCP.js → chunk-7DM3IJ7L.js} +2 -2
  17. package/dist/chunks/{chunk-3H7HEK63.js → chunk-7PGGP2QT.js} +1 -1
  18. package/dist/chunks/{chunk-K3VUXKMV.js → chunk-AUCTNGW2.js} +1 -1
  19. package/dist/chunks/{chunk-Y7YULJK7.js → chunk-BZNRYQ6U.js} +1 -1
  20. package/dist/chunks/{chunk-RTJOQK2R.js → chunk-C6525MLX.js} +1 -1
  21. package/dist/chunks/{chunk-BV2JBHT5.js → chunk-D2JHIOVH.js} +1 -1
  22. package/dist/chunks/{chunk-5ZEROVK5.js → chunk-DSNIVABS.js} +1 -1
  23. package/dist/chunks/{chunk-7FAO6DXJ.js → chunk-DUJAQS7I.js} +1 -1
  24. package/dist/chunks/{chunk-KHG6CZLZ.js → chunk-E5CN62HO.js} +1 -1
  25. package/dist/chunks/{chunk-Y3ZO6WB7.js → chunk-EBBDSEEU.js} +1 -1
  26. package/dist/chunks/{chunk-4ND2DRU5.js → chunk-EDOTKQ7L.js} +1 -1
  27. package/dist/chunks/{chunk-5WFOL3XX.js → chunk-EVH5524J.js} +1 -1
  28. package/dist/chunks/{chunk-MOW3KNCP.js → chunk-EW62WSXG.js} +1 -1
  29. package/dist/chunks/{chunk-4XFUHNFR.js → chunk-EXLKCL5I.js} +1 -1
  30. package/dist/chunks/{chunk-25B5SV4V.js → chunk-IFCMWIRB.js} +1 -1
  31. package/dist/chunks/{chunk-3QECUY4S.js → chunk-JMAXX2I6.js} +1 -1
  32. package/dist/chunks/{chunk-VMMSNGPS.js → chunk-MXURT5TX.js} +1 -1
  33. package/dist/chunks/{chunk-XOBLL6JP.js → chunk-NNIQPNGP.js} +1 -1
  34. package/dist/chunks/{chunk-CBA2KGXG.js → chunk-OZPBJWYU.js} +6 -6
  35. package/dist/chunks/{chunk-YYMLVSE2.js → chunk-PBX7RJ2K.js} +1 -1
  36. package/dist/chunks/{chunk-DL5B5I2H.js → chunk-QJAIUZVZ.js} +1 -1
  37. package/dist/chunks/{chunk-EEFLZK52.js → chunk-QKWJN6OE.js} +1 -1
  38. package/dist/chunks/{chunk-QYNJCJYZ.js → chunk-QY5RG6BB.js} +1 -1
  39. package/dist/chunks/{chunk-PLJKMCXU.js → chunk-RZY54T7B.js} +1 -1
  40. package/dist/chunks/{chunk-JYWHC7YX.js → chunk-SNCQOAFU.js} +1 -1
  41. package/dist/chunks/{chunk-EJ2RWXUL.js → chunk-SR2SHYJA.js} +1 -1
  42. package/dist/chunks/{chunk-MCJ5OFNP.js → chunk-TCB4XM23.js} +1 -1
  43. package/dist/chunks/{chunk-O7NJQXN6.js → chunk-TGPYWWX3.js} +1 -1
  44. package/dist/chunks/{chunk-NFASCUXE.js → chunk-UOQGI6CL.js} +1 -1
  45. package/dist/chunks/{chunk-BEAH4TA2.js → chunk-USYEDO7R.js} +1 -1
  46. package/dist/chunks/{chunk-GIFIOAOW.js → chunk-UVE5COCG.js} +1 -1
  47. package/dist/chunks/{chunk-7JNBF5SB.js → chunk-VZKQP67Q.js} +1 -1
  48. package/dist/chunks/{chunk-OVWDOWRV.js → chunk-WFOJ2LEA.js} +1 -1
  49. package/dist/chunks/{chunk-KOLCO2RH.js → chunk-WGVIQTOI.js} +1 -1
  50. package/dist/chunks/{chunk-5XPWRDZN.js → chunk-WGWGDC3N.js} +1 -1
  51. package/dist/chunks/{chunk-QANIGEPP.js → chunk-ZCXKEZS4.js} +1 -1
  52. package/dist/chunks/{chunk-TGQSMRQZ.js → chunk-ZERZX6BZ.js} +2 -2
  53. package/dist/chunks/{clear-BJBNWJJB.js → clear-RU72IUXU.js} +1 -1
  54. package/dist/chunks/{compile-vercel-config-QH77NQ4B.js → compile-vercel-config-DRTOWZK6.js} +1 -1
  55. package/dist/chunks/{config-AXK2BGCA.js → config-MNRKCDQA.js} +1 -1
  56. package/dist/chunks/{config-354DFLQE.js → config-PIFTR3UF.js} +1 -1
  57. package/dist/chunks/{delete-GO7DLOJ3.js → delete-47BF6SIO.js} +1 -1
  58. package/dist/chunks/{delete-IYWVEDBG.js → delete-QNSKEIGO.js} +1 -1
  59. package/dist/chunks/{detect-services-5P7KCKFK.js → detect-services-GXKWIX52.js} +1 -1
  60. package/dist/chunks/{disable-LGVOQE3T.js → disable-SBFW3F7B.js} +1 -1
  61. package/dist/chunks/{discard-27X77XQE.js → discard-DUZR3OWZ.js} +1 -1
  62. package/dist/chunks/{edit-2XY4JHTX.js → edit-6BQ7FZC4.js} +1 -1
  63. package/dist/chunks/{edit-IECKJW64.js → edit-WO7FLNW2.js} +1 -1
  64. package/dist/chunks/{enable-AFDKCU3L.js → enable-OK4MR3Z6.js} +1 -1
  65. package/dist/chunks/{export-K7JNA5NA.js → export-N5F7EY7B.js} +1 -1
  66. package/dist/chunks/{future-FFWMSADT.js → future-5AQIYILU.js} +1 -1
  67. package/dist/chunks/{generate-cert-for-deploy-SY44OYEY.js → generate-cert-for-deploy-7ERAHVOV.js} +1 -1
  68. package/dist/chunks/{image-D54UXO4P.js → image-IRC2NJVA.js} +1 -1
  69. package/dist/chunks/{import-builders-4DYFWAOD.js → import-builders-OAGJKQNW.js} +1 -1
  70. package/dist/chunks/{inspect-A2LKZQMT.js → inspect-35WHAXL2.js} +1 -1
  71. package/dist/chunks/{inspect-HCBQIEZG.js → inspect-5FKOSDTK.js} +1 -1
  72. package/dist/chunks/{inspect-XRCF2YRP.js → inspect-ACNGICEF.js} +1 -1
  73. package/dist/chunks/{inspect-H2EHB6IO.js → inspect-GX34WQGR.js} +1 -1
  74. package/dist/chunks/{inspect-3DLXFK6E.js → inspect-UDUI3ETL.js} +1 -1
  75. package/dist/chunks/{list-HUCI73LP.js → list-BINT67HQ.js} +1 -1
  76. package/dist/chunks/{list-CU66L4ZB.js → list-TRFGY6WP.js} +1 -1
  77. package/dist/chunks/{list-AB25WHGO.js → list-VVND632B.js} +1 -1
  78. package/dist/chunks/{login-5GIPMHCM.js → login-MYVTOBRG.js} +1 -1
  79. package/dist/chunks/{login-XD3H356W.js → login-SOZ5ME3D.js} +1 -1
  80. package/dist/chunks/{logs-MCYUVB2U.js → logs-EMAGPMIZ.js} +1 -1
  81. package/dist/chunks/{ls-GFWMSKJI.js → ls-2MJY6EKD.js} +1 -1
  82. package/dist/chunks/{ls-IMQKQEA5.js → ls-6HYUGM62.js} +1 -1
  83. package/dist/chunks/{ls-DZTI7O7V.js → ls-7OZ5TSNW.js} +1 -1
  84. package/dist/chunks/{ls-GVHHJ6PD.js → ls-HTNWWU45.js} +1 -1
  85. package/dist/chunks/{ls-SNGWJI57.js → ls-KU35N6DP.js} +1 -1
  86. package/dist/chunks/{ls-FVI4QA2G.js → ls-WFC636QK.js} +1 -1
  87. package/dist/chunks/{ls-46HG3NM2.js → ls-YT3MWU4U.js} +1 -1
  88. package/dist/chunks/{mutate-AATP3ZZW.js → mutate-JVDDZLVE.js} +1 -1
  89. package/dist/chunks/{notifications-X76ITPCJ.js → notifications-CXDBNBHU.js} +1 -1
  90. package/dist/chunks/{open-FVOQGEWM.js → open-3CD5ZNKU.js} +1 -1
  91. package/dist/chunks/{permissions-N6JJSYGS.js → permissions-PNBST4WN.js} +1 -1
  92. package/dist/chunks/{plugin-offer-UXUZ3PRE.js → plugin-offer-URT5JNEU.js} +1 -1
  93. package/dist/chunks/{prompt-missing-credentials-7UX2S26W.js → prompt-missing-credentials-Q5JCRP3R.js} +1 -1
  94. package/dist/chunks/{publish-BG3UKM2Q.js → publish-LH5CIXCP.js} +1 -1
  95. package/dist/chunks/{pull-3NAMWMU6.js → pull-XLZXPTLS.js} +1 -1
  96. package/dist/chunks/{purchase-domain-if-available-7UQPSITN.js → purchase-domain-if-available-PDJGZ6MY.js} +1 -1
  97. package/dist/chunks/{push-TZAIOAX5.js → push-XB57XK6H.js} +1 -1
  98. package/dist/chunks/{query-R7M64JYQ.js → query-POTX2HYL.js} +1 -1
  99. package/dist/chunks/{reauthenticate-TOILE7L6.js → reauthenticate-CRI4D2BQ.js} +1 -1
  100. package/dist/chunks/{reorder-V47PIQFO.js → reorder-KUQ5EQBV.js} +1 -1
  101. package/dist/chunks/{reply-5QZVOLHI.js → reply-LO76EKEE.js} +1 -1
  102. package/dist/chunks/{resolve-7VONHDWK.js → resolve-KZJYJJLA.js} +1 -1
  103. package/dist/chunks/{resolve-agent-team-DHPOJEQE.js → resolve-agent-team-N7QMB7UO.js} +1 -1
  104. package/dist/chunks/{restore-JLME37UW.js → restore-L3T5KOG7.js} +1 -1
  105. package/dist/chunks/{rm-4EPE3LBT.js → rm-7UKXTIZW.js} +1 -1
  106. package/dist/chunks/{rm-JY3ACRPF.js → rm-AKKEQN32.js} +1 -1
  107. package/dist/chunks/{rm-2GT4SSDQ.js → rm-ELC57ULY.js} +1 -1
  108. package/dist/chunks/{rm-V2A5HTIT.js → rm-K7XEZ7TY.js} +1 -1
  109. package/dist/chunks/{rm-5B7XAOK3.js → rm-MOYCAXNO.js} +1 -1
  110. package/dist/chunks/{rule-inspect-VPH5ZZ23.js → rule-inspect-ZCS4EBKR.js} +1 -1
  111. package/dist/chunks/{schema-I73FHHZS.js → schema-P4T4GQBF.js} +1 -1
  112. package/dist/chunks/{schema-DYNINJQ7.js → schema-TOVLKRPJ.js} +1 -1
  113. package/dist/chunks/{select-org-DUL7FO5S.js → select-org-6NEM7F25.js} +1 -1
  114. package/dist/chunks/{set-YZA622KE.js → set-NXFB6JXG.js} +1 -1
  115. package/dist/chunks/{setup-and-link-ZDP5OPLK.js → setup-and-link-L67MMSUD.js} +1 -1
  116. package/dist/chunks/{tags-DYVP7Q2S.js → tags-5AV6WAOF.js} +1 -1
  117. package/dist/chunks/{update-T3W6JMTU.js → update-YSAO36V7.js} +1 -1
  118. package/dist/commands/build/index.js +1 -1
  119. package/dist/commands/deploy/index.js +4 -4
  120. package/dist/commands/dev/index.js +2 -2
  121. package/dist/commands/env/index.js +1 -1
  122. package/dist/commands/link/index.js +1 -1
  123. package/dist/commands/list/index.js +1 -1
  124. package/dist/commands/project/index.js +1 -1
  125. package/dist/commands-account.js +1 -1
  126. package/dist/commands-ai.js +1 -1
  127. package/dist/commands-blob.js +1 -1
  128. package/dist/commands-core.js +5 -5
  129. package/dist/commands-deployments.js +1 -1
  130. package/dist/commands-flags.js +1 -1
  131. package/dist/commands-integrations.js +1 -1
  132. package/dist/commands-observability.js +2 -2
  133. package/dist/commands-routing.js +2 -2
  134. package/dist/index.js +3 -3
  135. package/dist/internal-build.js +1 -1
  136. package/dist/package.json +55 -55
  137. package/dist/version.mjs +1 -1
  138. package/package.json +48 -48
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{parseTarget,warnDeprecatedProdFlag}from"../../chunks/chunk-D4TD2KWH.js";import{formatEnvironment}from"../../chunks/chunk-VR5ROBAO.js";import"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-TD7AL545.js";import{isValidName}from"../../chunks/chunk-PADL3C6Z.js";import{getDeployment,toHost}from"../../chunks/chunk-VU3RBRDH.js";import"../../chunks/chunk-4VF5BZJP.js";import{InvalidNextError,getPaginationOpts}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{printNextPageCommand}from"../../chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"../../chunks/chunk-BT5C6MCY.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{elapsed}from"../../chunks/chunk-Q7D7RGXM.js";import{listCommand}from"../../chunks/chunk-G3LWP5CH.js";import{printError}from"../../chunks/chunk-BWS3ZOHJ.js";import{help}from"../../chunks/chunk-33U57CNE.js";import{getContextName}from"../../chunks/chunk-5ZEROVK5.js";import{TelemetryClient}from"../../chunks/chunk-NAU6URTI.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{exitWithNonInteractiveError}from"../../chunks/chunk-32NXYHYC.js";import"../../chunks/chunk-FWTBSC7Z.js";import{getLinkFromDir,getLinkedProject,getProjectByNameOrId,getVercelDirectory,sleep}from"../../chunks/chunk-CBA2KGXG.js";import"../../chunks/chunk-64UCX5JM.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-7WY7ASKE.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-CGTD4QFC.js";import"../../chunks/chunk-F53OKXYI.js";import{validateJsonOutput}from"../../chunks/chunk-GJCVOEC2.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-4SAVH3H7.js";import{ProjectNotFound}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"../../chunks/chunk-W634OFUG.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-ZS2WS4AM.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-YPPDRKVC.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_ms=__toESM(require_ms(),1),import_chalk=__toESM(require_source(),1),import_title=__toESM(require_lib(),1);function parsePolicy(policy){if(!policy)return{};typeof policy=="string"&&(policy=[policy]);let parsed={};for(let item of policy){let[key,...rest]=item.split("=");parsed[key]=rest.join("=")}return parsed}var import_error_utils=__toESM(require_dist(),1);var import_build_utils=__toESM(require_build_utils(),1);async function getLinkedProjectWithDeployments(client,getQuery){let early;if(getQuery){let localLink=await readLocalLink(client.cwd);localLink&&(early=requestDeployments(client,localLink,getQuery(localLink.projectId)))}let link;try{link=await getLinkedProject(client,{cwd:client.cwd})}catch(err){throw early?.cancel(),err}return early&&link.status==="linked"&&link.project.id===early.projectId&&link.org.id===early.orgId?{link,deployments:{pages:early.pages(),sentAt:early.sentAt}}:(early?.cancel(),{link})}async function readLocalLink(cwd){let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID"),projectId=(0,import_build_utils.getPlatformEnv)("PROJECT_ID");if(orgId||projectId)return orgId&&projectId?{orgId,projectId}:null;try{return await getLinkFromDir(getVercelDirectory(cwd))}catch{return null}}function requestDeployments(client,{orgId,projectId},query){query.set("teamId",orgId);let url=`/v6/deployments?${query}`,controller=new AbortController,sentAt=Date.now(),first=client.fetch(url,{signal:controller.signal,retry:{retries:0}}).catch(()=>null);return{orgId,projectId,sentAt,async*pages(){let page=await first;if(!page){yield*client.fetchPaginated(url);return}yield page;let next=page.pagination?.next;if(next){await sleep(100);let rest=new URLSearchParams(query);rest.set("until",String(next)),yield*client.fetchPaginated(`/v6/deployments?${rest}`)}},cancel(){controller.abort()}}}var ListTelemetryClient=class extends TelemetryClient{trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliOptionMeta(meta){meta&&meta.length>0&&this.trackCliOption({option:"meta",value:this.redactedValue})}trackCliOptionPolicy(policy){policy&&policy.length>0&&this.trackCliOption({option:"policy",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagProd(flag){flag&&this.trackCliFlag("prod")}trackCliFlagYes(flag){flag&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionStatus(status){status&&this.trackCliOption({option:"status",value:this.redactedValue})}trackCliArgumentApp(app){app&&this.trackCliArgument({arg:"app",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function toDate(timestamp){let date=new Date(timestamp),options={year:"2-digit",month:"2-digit",day:"2-digit"};return date.toLocaleDateString("en-US",options)}async function list(client){let{print,log,warn,error,note,debug,spinner}=output_manager_default,parsedArgs=null,flagsSpecification=getFlagsSpecification(listCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),2}let telemetry=new ListTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("list"),print(help(listCommand,{stream:client.stderr,columns:client.stderr.columns})),0;let validationResult=validateLsArgs({commandName:"ls [app]",args:parsedArgs.args,maxArgs:2,exitCode:2});if(validationResult!==0)return validationResult;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagAll(parsedArgs.flags["--all"]),telemetry.trackCliFlagProd(parsedArgs.flags["--prod"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetry.trackCliOptionMeta(parsedArgs.flags["--meta"]),telemetry.trackCliOptionNext(parsedArgs.flags["--next"]),telemetry.trackCliOptionLimit(parsedArgs.flags["--limit"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionPolicy(parsedArgs.flags["--policy"]),telemetry.trackCliOptionStatus(parsedArgs.flags["--status"]),"--confirm"in parsedArgs.flags&&(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]);let meta=parseMeta(parsedArgs.flags["--meta"]),policy=parsePolicy(parsedArgs.flags["--policy"]);warnDeprecatedProdFlag(client,parsedArgs.flags);let target=parseTarget({flagName:"environment",flags:parsedArgs.flags}),statusFlag=parsedArgs.flags["--status"],status;if(statusFlag){let validStatuses=["BUILDING","ERROR","INITIALIZING","QUEUED","READY","CANCELED","BLOCKED"],statusValues=statusFlag.split(",").map(s=>s.trim().toUpperCase()),invalidStatuses=statusValues.filter(s=>!validStatuses.includes(s));if(invalidStatuses.length>0)return error(`Invalid status values: ${invalidStatuses.join(", ")}. Valid values are: ${validStatuses.join(", ")}`),1;status=statusValues.join(",")}let paginationError,nextTimestamp,limitFlag;try{[nextTimestamp,limitFlag]=getPaginationOpts(parsedArgs.flags)}catch(err){paginationError=err}let limit=limitFlag??20,getDeploymentsQuery=projectId=>{let query=new URLSearchParams({limit:String(limit)});projectId&&query.set("projectId",projectId);for(let[k,v]of Object.entries(meta))query.set(`meta-${k}`,v);for(let[k,v]of Object.entries(policy))query.set(`policy-${k}`,v);return nextTimestamp&&query.set("until",String(nextTimestamp)),target&&query.set("target",target),status&&query.set("state",status),query},project,pagination,contextName="",app=parsedArgs.args[1],deployments=[],singleDeployment=!1,linkedDeployments,allFlag=parsedArgs.flags["--all"],showAllProjects=!1;if(allFlag&&app)return error("Cannot use --all option with a project argument"),2;if(app){if(!isValidName(app))return error(`The provided argument "${app}" is not a valid project name`),2;if(telemetry.trackCliArgumentApp(app),app.includes(".")){try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(!contextName)return error("No context name found"),1;let host=toHost(app),deployment=await getDeployment(client,contextName,host);if(!deployment.projectId)return error(`Could not find a deployment for "${host}"`),1;app=deployment.projectId,note(`We suggest using ${getCommandName("inspect <deployment>")} for retrieving details about a single deployment`),deployments.push(deployment),singleDeployment=!0}let p=await getProjectByNameOrId(client,app);if(p instanceof ProjectNotFound)return exitWithNonInteractiveError(client,p,1,{variant:"list",projectName:app}),error(`The provided argument "${app}" is not a valid project name`),1;project=p}else if(allFlag)showAllProjects=!0;else{let linked=await getLinkedProjectWithDeployments(client,paginationError===void 0?getDeploymentsQuery:void 0),{link}=linked;if(linkedDeployments=linked.deployments,link.status==="error")return link.exitCode;link.status==="linked"?(project=link.project,client.config.currentTeam=link.org.id):showAllProjects=!0}if(!contextName)try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(paginationError!==void 0)return printError(paginationError),paginationError instanceof InvalidNextError?2:1;let projectSlugLink=project?formatProject(contextName,project.name):null;if(!singleDeployment){asJson||spinner(`Fetching deployments in ${import_chalk.default.bold(contextName)}`);let start=linkedDeployments?.sentAt??Date.now();debug("Fetching deployments");let pages=linkedDeployments?.pages??client.fetchPaginated(`/v6/deployments?${getDeploymentsQuery(project?.id)}`);for await(let chunk of pages)if(deployments.push(...chunk.deployments),pagination=chunk.pagination,deployments.length>=limit)break;if(deployments.length=Math.min(deployments.length,limit),!deployments.length){if(asJson){let jsonOutput={deployments:[],pagination,contextName};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
7
+ import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{parseTarget,warnDeprecatedProdFlag}from"../../chunks/chunk-D4TD2KWH.js";import{formatEnvironment}from"../../chunks/chunk-VR5ROBAO.js";import"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-TD7AL545.js";import{isValidName}from"../../chunks/chunk-PADL3C6Z.js";import{getDeployment,toHost}from"../../chunks/chunk-VU3RBRDH.js";import"../../chunks/chunk-4VF5BZJP.js";import{InvalidNextError,getPaginationOpts}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{printNextPageCommand}from"../../chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"../../chunks/chunk-BT5C6MCY.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{elapsed}from"../../chunks/chunk-Q7D7RGXM.js";import{listCommand}from"../../chunks/chunk-G3LWP5CH.js";import{printError}from"../../chunks/chunk-BWS3ZOHJ.js";import{help}from"../../chunks/chunk-33U57CNE.js";import{getContextName}from"../../chunks/chunk-DSNIVABS.js";import{TelemetryClient}from"../../chunks/chunk-NAU6URTI.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{exitWithNonInteractiveError}from"../../chunks/chunk-32NXYHYC.js";import"../../chunks/chunk-FWTBSC7Z.js";import{getLinkFromDir,getLinkedProject,getProjectByNameOrId,getVercelDirectory,sleep}from"../../chunks/chunk-OZPBJWYU.js";import"../../chunks/chunk-64UCX5JM.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-7WY7ASKE.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-CGTD4QFC.js";import"../../chunks/chunk-F53OKXYI.js";import{validateJsonOutput}from"../../chunks/chunk-GJCVOEC2.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-4SAVH3H7.js";import{ProjectNotFound}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"../../chunks/chunk-W634OFUG.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-ZS2WS4AM.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-YPPDRKVC.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_ms=__toESM(require_ms(),1),import_chalk=__toESM(require_source(),1),import_title=__toESM(require_lib(),1);function parsePolicy(policy){if(!policy)return{};typeof policy=="string"&&(policy=[policy]);let parsed={};for(let item of policy){let[key,...rest]=item.split("=");parsed[key]=rest.join("=")}return parsed}var import_error_utils=__toESM(require_dist(),1);var import_build_utils=__toESM(require_build_utils(),1);async function getLinkedProjectWithDeployments(client,getQuery){let early;if(getQuery){let localLink=await readLocalLink(client.cwd);localLink&&(early=requestDeployments(client,localLink,getQuery(localLink.projectId)))}let link;try{link=await getLinkedProject(client,{cwd:client.cwd})}catch(err){throw early?.cancel(),err}return early&&link.status==="linked"&&link.project.id===early.projectId&&link.org.id===early.orgId?{link,deployments:{pages:early.pages(),sentAt:early.sentAt}}:(early?.cancel(),{link})}async function readLocalLink(cwd){let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID"),projectId=(0,import_build_utils.getPlatformEnv)("PROJECT_ID");if(orgId||projectId)return orgId&&projectId?{orgId,projectId}:null;try{return await getLinkFromDir(getVercelDirectory(cwd))}catch{return null}}function requestDeployments(client,{orgId,projectId},query){query.set("teamId",orgId);let url=`/v6/deployments?${query}`,controller=new AbortController,sentAt=Date.now(),first=client.fetch(url,{signal:controller.signal,retry:{retries:0}}).catch(()=>null);return{orgId,projectId,sentAt,async*pages(){let page=await first;if(!page){yield*client.fetchPaginated(url);return}yield page;let next=page.pagination?.next;if(next){await sleep(100);let rest=new URLSearchParams(query);rest.set("until",String(next)),yield*client.fetchPaginated(`/v6/deployments?${rest}`)}},cancel(){controller.abort()}}}var ListTelemetryClient=class extends TelemetryClient{trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliOptionMeta(meta){meta&&meta.length>0&&this.trackCliOption({option:"meta",value:this.redactedValue})}trackCliOptionPolicy(policy){policy&&policy.length>0&&this.trackCliOption({option:"policy",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagProd(flag){flag&&this.trackCliFlag("prod")}trackCliFlagYes(flag){flag&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionStatus(status){status&&this.trackCliOption({option:"status",value:this.redactedValue})}trackCliArgumentApp(app){app&&this.trackCliArgument({arg:"app",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function toDate(timestamp){let date=new Date(timestamp),options={year:"2-digit",month:"2-digit",day:"2-digit"};return date.toLocaleDateString("en-US",options)}async function list(client){let{print,log,warn,error,note,debug,spinner}=output_manager_default,parsedArgs=null,flagsSpecification=getFlagsSpecification(listCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),2}let telemetry=new ListTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("list"),print(help(listCommand,{stream:client.stderr,columns:client.stderr.columns})),0;let validationResult=validateLsArgs({commandName:"ls [app]",args:parsedArgs.args,maxArgs:2,exitCode:2});if(validationResult!==0)return validationResult;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagAll(parsedArgs.flags["--all"]),telemetry.trackCliFlagProd(parsedArgs.flags["--prod"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetry.trackCliOptionMeta(parsedArgs.flags["--meta"]),telemetry.trackCliOptionNext(parsedArgs.flags["--next"]),telemetry.trackCliOptionLimit(parsedArgs.flags["--limit"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionPolicy(parsedArgs.flags["--policy"]),telemetry.trackCliOptionStatus(parsedArgs.flags["--status"]),"--confirm"in parsedArgs.flags&&(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]);let meta=parseMeta(parsedArgs.flags["--meta"]),policy=parsePolicy(parsedArgs.flags["--policy"]);warnDeprecatedProdFlag(client,parsedArgs.flags);let target=parseTarget({flagName:"environment",flags:parsedArgs.flags}),statusFlag=parsedArgs.flags["--status"],status;if(statusFlag){let validStatuses=["BUILDING","ERROR","INITIALIZING","QUEUED","READY","CANCELED","BLOCKED"],statusValues=statusFlag.split(",").map(s=>s.trim().toUpperCase()),invalidStatuses=statusValues.filter(s=>!validStatuses.includes(s));if(invalidStatuses.length>0)return error(`Invalid status values: ${invalidStatuses.join(", ")}. Valid values are: ${validStatuses.join(", ")}`),1;status=statusValues.join(",")}let paginationError,nextTimestamp,limitFlag;try{[nextTimestamp,limitFlag]=getPaginationOpts(parsedArgs.flags)}catch(err){paginationError=err}let limit=limitFlag??20,getDeploymentsQuery=projectId=>{let query=new URLSearchParams({limit:String(limit)});projectId&&query.set("projectId",projectId);for(let[k,v]of Object.entries(meta))query.set(`meta-${k}`,v);for(let[k,v]of Object.entries(policy))query.set(`policy-${k}`,v);return nextTimestamp&&query.set("until",String(nextTimestamp)),target&&query.set("target",target),status&&query.set("state",status),query},project,pagination,contextName="",app=parsedArgs.args[1],deployments=[],singleDeployment=!1,linkedDeployments,allFlag=parsedArgs.flags["--all"],showAllProjects=!1;if(allFlag&&app)return error("Cannot use --all option with a project argument"),2;if(app){if(!isValidName(app))return error(`The provided argument "${app}" is not a valid project name`),2;if(telemetry.trackCliArgumentApp(app),app.includes(".")){try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(!contextName)return error("No context name found"),1;let host=toHost(app),deployment=await getDeployment(client,contextName,host);if(!deployment.projectId)return error(`Could not find a deployment for "${host}"`),1;app=deployment.projectId,note(`We suggest using ${getCommandName("inspect <deployment>")} for retrieving details about a single deployment`),deployments.push(deployment),singleDeployment=!0}let p=await getProjectByNameOrId(client,app);if(p instanceof ProjectNotFound)return exitWithNonInteractiveError(client,p,1,{variant:"list",projectName:app}),error(`The provided argument "${app}" is not a valid project name`),1;project=p}else if(allFlag)showAllProjects=!0;else{let linked=await getLinkedProjectWithDeployments(client,paginationError===void 0?getDeploymentsQuery:void 0),{link}=linked;if(linkedDeployments=linked.deployments,link.status==="error")return link.exitCode;link.status==="linked"?(project=link.project,client.config.currentTeam=link.org.id):showAllProjects=!0}if(!contextName)try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(paginationError!==void 0)return printError(paginationError),paginationError instanceof InvalidNextError?2:1;let projectSlugLink=project?formatProject(contextName,project.name):null;if(!singleDeployment){asJson||spinner(`Fetching deployments in ${import_chalk.default.bold(contextName)}`);let start=linkedDeployments?.sentAt??Date.now();debug("Fetching deployments");let pages=linkedDeployments?.pages??client.fetchPaginated(`/v6/deployments?${getDeploymentsQuery(project?.id)}`);for await(let chunk of pages)if(deployments.push(...chunk.deployments),pagination=chunk.pagination,deployments.length>=limit)break;if(deployments.length=Math.min(deployments.length,limit),!deployments.length){if(asJson){let jsonOutput={deployments:[],pagination,contextName};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
8
8
  `)}else log(`No deployments found under ${import_chalk.default.bold(contextName)}.`);return 0}if(!asJson){let deploymentsLabel=target==="production"?"Production deployments":"Deployments";log(showAllProjects?`${deploymentsLabel} under ${import_chalk.default.bold(contextName)} ${elapsed(Date.now()-start)}`:`${deploymentsLabel} for ${projectSlugLink} ${elapsed(Date.now()-start)}`)}}if(asJson){let jsonOutput={contextName,deployments:deployments.sort(sortByCreatedAt).map(dep=>({id:dep.id,url:dep.url,name:dep.name,state:dep.readyState,target:dep.target,customEnvironment:dep.customEnvironment?{id:dep.customEnvironment.id,slug:dep.customEnvironment.slug}:void 0,createdAt:dep.createdAt,buildingAt:dep.buildingAt,ready:dep.ready,creator:dep.creator?{uid:dep.creator.uid,username:dep.creator.username}:void 0,meta:dep.meta})),pagination};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
9
9
  `),0}let headers=["Age","Project","Deployment","Status","Environment"],showPolicy=Object.keys(policy).length>0;showPolicy||headers.push("Duration","Username"),showPolicy&&headers.push("Proposed Expiration");let urls=[],tablePrint=table([headers.map(header=>import_chalk.default.bold(import_chalk.default.cyan(header))),...deployments.sort(sortByCreatedAt).map(dep=>{urls.push(`https://${dep.url}`);let proposedExp=dep.proposedExpiration?toDate(Math.min(Date.now(),dep.proposedExpiration)):"No expiration",createdAt=(0,import_ms.default)(Date.now()-(dep?.undeletedAt??dep.createdAt)),targetName=dep.customEnvironment?.slug||(dep.target==="production"?"Production":"Preview"),targetSlug=dep.customEnvironment?.id||dep.target||"preview";return[import_chalk.default.gray(createdAt),formatProject(contextName,dep.name),`https://${dep.url}`,stateString(dep.readyState||""),formatEnvironment(contextName,dep.name,{id:targetSlug,slug:targetName}),...showPolicy?[]:[import_chalk.default.gray(getDeploymentDuration(dep))],...showPolicy?[]:[import_chalk.default.gray(dep.creator?.username)],...showPolicy?[import_chalk.default.gray(proposedExp)]:[]]}).filter(app2=>app2===null?filterUniqueApps():()=>!0)],{hsep:5}).replace(/^/gm," ");if(print(`
10
10
  ${tablePrint}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{handleCommandTypo}from"../../chunks/chunk-TMXIVQ45.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-Y7YULJK7.js";import{resolveProjectContext}from"../../chunks/chunk-EEFLZK52.js";import{formatProject}from"../../chunks/chunk-TD7AL545.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-G6HUSV7F.js";import"../../chunks/chunk-GHAY4PSD.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-QBOY2CXL.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import"../../chunks/chunk-IDP63TCP.js";import"../../chunks/chunk-Y3ZO6WB7.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-E7DYXF6G.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import"../../chunks/chunk-PFD7LETF.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-NEUQZYBL.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"../../chunks/chunk-K5YO4UD7.js";import"../../chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-Y6WXTTZS.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-NTUDWWSL.js";import"../../chunks/chunk-M73W4XNR.js";import"../../chunks/chunk-32AS5X7G.js";import"../../chunks/chunk-ZBZPCKTW.js";import"../../chunks/chunk-TRZDIAX3.js";import"../../chunks/chunk-GHEGWXH2.js";import"../../chunks/chunk-GCXUSXB4.js";import"../../chunks/chunk-2H4DUZJZ.js";import"../../chunks/chunk-ECQKK4JU.js";import"../../chunks/chunk-JOXGYP5S.js";import"../../chunks/chunk-7ULVGK67.js";import"../../chunks/chunk-4BZ3DNGM.js";import"../../chunks/chunk-R5ZLTWKB.js";import"../../chunks/chunk-T5TOBY4D.js";import"../../chunks/chunk-H34SGIVS.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-G3LWP5CH.js";import"../../chunks/chunk-QQA2OMXJ.js";import"../../chunks/chunk-KV2DYFUG.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-GCPPL24C.js";import{printError}from"../../chunks/chunk-BWS3ZOHJ.js";import{help}from"../../chunks/chunk-33U57CNE.js";import"../../chunks/chunk-3G3FQYMW.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-5ZEROVK5.js";import{TelemetryClient}from"../../chunks/chunk-NAU6URTI.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,getExitCodeForReason,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-32NXYHYC.js";import"../../chunks/chunk-FWTBSC7Z.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-CBA2KGXG.js";import{printAlignedLabel}from"../../chunks/chunk-64UCX5JM.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-7WY7ASKE.js";import"../../chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"../../chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-GJCVOEC2.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-W634OFUG.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-ZS2WS4AM.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,stripSensitiveAuthArgs}from"../../chunks/chunk-YPPDRKVC.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
7
+ import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{handleCommandTypo}from"../../chunks/chunk-TMXIVQ45.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-BZNRYQ6U.js";import{resolveProjectContext}from"../../chunks/chunk-QKWJN6OE.js";import{formatProject}from"../../chunks/chunk-TD7AL545.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-G6HUSV7F.js";import"../../chunks/chunk-GHAY4PSD.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-QBOY2CXL.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import"../../chunks/chunk-7DM3IJ7L.js";import"../../chunks/chunk-EBBDSEEU.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-E7DYXF6G.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import"../../chunks/chunk-PFD7LETF.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-NEUQZYBL.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import{table}from"../../chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"../../chunks/chunk-K5YO4UD7.js";import"../../chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-Y6WXTTZS.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-NTUDWWSL.js";import"../../chunks/chunk-M73W4XNR.js";import"../../chunks/chunk-32AS5X7G.js";import"../../chunks/chunk-ZBZPCKTW.js";import"../../chunks/chunk-TRZDIAX3.js";import"../../chunks/chunk-GHEGWXH2.js";import"../../chunks/chunk-GCXUSXB4.js";import"../../chunks/chunk-2H4DUZJZ.js";import"../../chunks/chunk-ECQKK4JU.js";import"../../chunks/chunk-JOXGYP5S.js";import"../../chunks/chunk-7ULVGK67.js";import"../../chunks/chunk-4BZ3DNGM.js";import"../../chunks/chunk-R5ZLTWKB.js";import"../../chunks/chunk-T5TOBY4D.js";import"../../chunks/chunk-H34SGIVS.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-G3LWP5CH.js";import"../../chunks/chunk-QQA2OMXJ.js";import"../../chunks/chunk-KV2DYFUG.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-GCPPL24C.js";import{printError}from"../../chunks/chunk-BWS3ZOHJ.js";import{help}from"../../chunks/chunk-33U57CNE.js";import"../../chunks/chunk-3G3FQYMW.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-DSNIVABS.js";import{TelemetryClient}from"../../chunks/chunk-NAU6URTI.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,getExitCodeForReason,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-32NXYHYC.js";import"../../chunks/chunk-FWTBSC7Z.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-OZPBJWYU.js";import{printAlignedLabel}from"../../chunks/chunk-64UCX5JM.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-7WY7ASKE.js";import"../../chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"../../chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-GJCVOEC2.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-W634OFUG.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-ZS2WS4AM.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,stripSensitiveAuthArgs}from"../../chunks/chunk-YPPDRKVC.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
8
8
  ${example} `)}return 2}let start=Date.now(),[name]=args;telemetryClient.trackCliArgumentName(name);try{await createProject(client,{name})}catch(err){if(isAPIError(err)&&err.code==="too_many_projects")return output_manager_default.prettyError(err),1;if(!(isAPIError(err)&&err.status===409))throw err}let elapsed=(0,import_ms.default)(Date.now()-start),contextName=await getContextName(client);return output_manager_default.log(`${import_chalk.default.cyan("Success!")} Project ${import_chalk.default.bold(name.toLowerCase())} added (${import_chalk.default.bold(contextName)}) ${import_chalk.default.gray(`[${elapsed}]`)}`),0}var import_chalk2=__toESM(require_source(),1);async function accessSummary(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(accessSummarySubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project access-summary [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,summary;try{let project=await getProjectByCwdOrLink({client,commandName:"project access-summary",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0});summary=await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/members/summary`)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"access-summary"}),printError(err),1}if(asJson)return client.stdout.write(`${JSON.stringify(summary,null,2)}
9
9
  `),0;let entries=Object.entries(summary).sort(([a],[b])=>a.localeCompare(b));if(entries.length===0)return output_manager_default.log("No summary data returned."),0;let rows=[["Role","Count"].map(h=>(0,import_chalk2.gray)(h)),...entries.map(([role,count])=>[role,String(count)])];return client.stderr.write(`${table(rows,{hsep:3})}
10
10
  `),0}var import_chalk3=__toESM(require_source(),1);import{readFileSync}from"fs";import{resolve}from"path";var REQUIRES=["build-ready","deployment-url","none"],BLOCKING_STAGES=["build-start","deployment-start","deployment-alias","deployment-promotion","none"];function emitValidationError(client,message,exitCode,extra){outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message,...extra},exitCode)}async function checksAdd(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification([...checksAddFlags]);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return emitValidationError(client,"Invalid number of arguments. Usage: `vercel project checks add [name]`",2),output_manager_default.error("Invalid number of arguments. Usage: `vercel project checks add [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return client.nonInteractive&&emitValidationError(client,formatResult.error,1),output_manager_default.error(formatResult.error),1;let asJson=formatResult.jsonOutput||!!client.nonInteractive,filePath=parsedArgs.flags["--file"],checkName=parsedArgs.flags["--check-name"],requires=parsedArgs.flags["--requires"],blocksFlag=parsedArgs.flags["--blocks"],timeout=parsedArgs.flags["--timeout"],targetsRaw=parsedArgs.flags["--targets"],sourceRaw=parsedArgs.flags["--source"],body;if(typeof filePath=="string"&&filePath.length>0)try{let raw=readFileSync(resolve(client.cwd,filePath),"utf8"),parsed=JSON.parse(raw);if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return emitValidationError(client,"`--file` must contain a JSON object.",1),output_manager_default.error("`--file` must contain a JSON object."),1;body=parsed}catch(err){let msg=err instanceof Error?err.message:String(err);return emitValidationError(client,`Failed to read \`--file\`: ${msg}`,1),output_manager_default.error(`Failed to read \`--file\`: ${msg}`),1}else{if(typeof checkName!="string"||!checkName.trim())return emitValidationError(client,"Provide `--check-name` and `--requires`, or a `--file` with the full JSON body.",1,{hint:'See `vercel project checks --help` and the REST API "Create a check" documentation.',next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks add <name> --file <path>"),when:"Create from a JSON file (replace paths)"}]}),output_manager_default.error("Provide `--check-name` and `--requires`, or a `--file` with the full JSON body. See `vercel project checks add --help`."),1;if(typeof requires!="string"||!requires.trim())return emitValidationError(client,"`--requires` is required when using `--check-name` (build-ready, deployment-url, or none).",1),output_manager_default.error("`--requires` is required when using `--check-name` (build-ready, deployment-url, or none)."),2;if(!REQUIRES.includes(requires))return emitValidationError(client,`\`--requires\` must be one of: ${REQUIRES.join(", ")}`,1),output_manager_default.error(`\`--requires\` must be one of: ${REQUIRES.join(", ")}`),2;if(body={name:checkName.trim(),requires:requires.trim()},typeof blocksFlag=="string"&&blocksFlag.length>0){if(!BLOCKING_STAGES.includes(blocksFlag))return emitValidationError(client,`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`,1),output_manager_default.error(`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`),2;body.blocks=blocksFlag}if(typeof timeout=="number"&&(body.timeout=timeout),typeof targetsRaw=="string"&&targetsRaw.trim()&&(body.targets=targetsRaw.split(",").map(s=>s.trim()).filter(Boolean)),typeof sourceRaw=="string"&&sourceRaw.trim())try{body.source=JSON.parse(sourceRaw)}catch{return emitValidationError(client,"`--source` must be valid JSON.",1),output_manager_default.error("`--source` must be valid JSON."),1}}try{let project=await getProjectByCwdOrLink({client,commandName:"project checks add",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),result=await client.fetch(`/v2/projects/${encodeURIComponent(project.id)}/checks`,{method:"POST",body});if(asJson){let id2=String(result.id??"");return client.nonInteractive?client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,check:result,projectId:project.id,projectName:project.name,message:id2?`Created deployment check ${id2} on ${project.name}.`:`Created deployment check on ${project.name}.`,next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks"),when:"List checks for this project"},{command:buildCommandWithGlobalFlags(client.argv,"project checks remove <check_id>"),when:"Remove a check by id if needed"}]},null,2)}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{createCertForCns,extractDomain,isWildcardAlias,setupDomain}from"./chunks/chunk-4XFUHNFR.js";import"./chunks/chunk-25B5SV4V.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-G6HUSV7F.js";import"./chunks/chunk-GHAY4PSD.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-D4ZEJM3T.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-UNASHUWQ.js";import"./chunks/chunk-4ELZOAQH.js";import"./chunks/chunk-JUAHDOL6.js";import"./chunks/chunk-UI2H2EIM.js";import"./chunks/chunk-UUDE44NV.js";import{ellipsis}from"./chunks/chunk-AKOYIH3A.js";import{box}from"./chunks/chunk-LM3YPF3K.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-QBOY2CXL.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{writeJsonError}from"./chunks/chunk-CBVVVYUP.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-AX3V7N44.js";import{getProtectionForDeploymentAlias,getProtectionForProductionDomain,readEnabledProtection}from"./chunks/chunk-O4CQRV2G.js";import"./chunks/chunk-VT6RIZJH.js";import"./chunks/chunk-TOTTVS5P.js";import{ensureLink}from"./chunks/chunk-IDP63TCP.js";import{getDeployment,toHost}from"./chunks/chunk-VU3RBRDH.js";import{mapCertError}from"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-Y3ZO6WB7.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,buy,canPromptForCharge,deleteCertById,findBudget,formatUsd,formatUsdWhole,getDomains,getProjectDomain,getTeamMemberByIdentifier,getTeamSpend,getWebhook,hasPauseThreshold,isDomainExternal,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeAliasById,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,teamMemberLabel,thresholdsForSet,toBudgetState}from"./chunks/chunk-GIFIOAOW.js";import{require_cjs}from"./chunks/chunk-OVWDOWRV.js";import"./chunks/chunk-JB6T3XEF.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-CH5325V5.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import"./chunks/chunk-PFD7LETF.js";import{DEFAULT_LIST_LIMIT,MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-K5YO4UD7.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-4CQKN5TW.js";import{getTeams}from"./chunks/chunk-Y6WXTTZS.js";import{CREDIT_TYPE_LABELS,INVOICE_STATUSES,SUPPORTED_ADDON_NAMES,SUPPORTED_CREDIT_TYPES,addSubcommand10 as addSubcommand4,addSubcommand11 as addSubcommand5,addSubcommand2 as addSubcommand,addSubcommand4 as addSubcommand2,addSubcommand5 as addSubcommand3,addonSubcommand,agentRunsCommand,alertsListSubcommand2 as alertsListSubcommand,alertsSubcommand2 as alertsSubcommand,aliasCommand,backupsSubcommand,bisectCommand,budgetCommand,buyCommand,certsCommand,connectSubcommand,createSubcommand10 as createSubcommand2,createSubcommand7 as createSubcommand,creditsSubcommand,disconnectSubcommand,dnsCommand,domainSubcommand,getCommandAliases,getSubcommand,getSubcommand5 as getSubcommand2,gitCommand,globalConfigCommand,importSubcommand,initCommand,inspectSubcommand,inspectSubcommand12 as inspectSubcommand3,inspectSubcommand14 as inspectSubcommand4,inspectSubcommand6 as inspectSubcommand2,inviteSubcommand,invoicesDownloadSubcommand,invoicesInspectSubcommand,invoicesListSubcommand,invoicesSubcommand,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-NTUDWWSL.js";import"./chunks/chunk-M73W4XNR.js";import"./chunks/chunk-32AS5X7G.js";import"./chunks/chunk-ZBZPCKTW.js";import"./chunks/chunk-TRZDIAX3.js";import"./chunks/chunk-GHEGWXH2.js";import"./chunks/chunk-GCXUSXB4.js";import"./chunks/chunk-2H4DUZJZ.js";import"./chunks/chunk-ECQKK4JU.js";import"./chunks/chunk-JOXGYP5S.js";import"./chunks/chunk-7ULVGK67.js";import"./chunks/chunk-4BZ3DNGM.js";import"./chunks/chunk-R5ZLTWKB.js";import"./chunks/chunk-T5TOBY4D.js";import"./chunks/chunk-H34SGIVS.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-G3LWP5CH.js";import"./chunks/chunk-QQA2OMXJ.js";import"./chunks/chunk-KV2DYFUG.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-GCPPL24C.js";import{printError}from"./chunks/chunk-BWS3ZOHJ.js";import{help}from"./chunks/chunk-33U57CNE.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-5ZEROVK5.js";import{TelemetryClient}from"./chunks/chunk-NAU6URTI.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getErrorRecovery,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-32NXYHYC.js";import"./chunks/chunk-FWTBSC7Z.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-CBA2KGXG.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-7WY7ASKE.js";import"./chunks/chunk-4NTBYNFR.js";import{isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-4SAVH3H7.js";import{AliasInUse,CertConfigurationError,CertError,CertMissing,CertNotFound,CertOrderNotFound,CertsPermissionDenied,DNSConflictingRecord,DNSInvalidPort,DNSInvalidType,DNSPermissionDenied,DeploymentFailedAliasImpossible,DeploymentNotFound,DeploymentNotReady,DeploymentPermissionDenied,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainNotAvailable,DomainNotFound,DomainPaymentError,DomainPermissionDenied,DomainPriceChanged,DomainPurchasePending,DomainPurchaseRefundFailed,DomainPurchaseRefunded,InvalidAlias,InvalidAliasInConfig,InvalidDeploymentId,InvalidDomain,NoAliasInConfig,NowError,SourceNotFound,TLDNotSupportedViaCLI,TooManyRequests,UnexpectedDomainPurchaseError,UnsupportedTLD,UserAborted,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,stripSensitiveAuthArgs}from"./chunks/chunk-YPPDRKVC.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import{fetch,toNodeReadable}from"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var AgentRunsTelemetryClient=class extends TelemetryClient{trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandTrace(actual){this.trackCliSubcommand({subcommand:"trace",value:actual})}trackCliSubcommandProjects(actual){this.trackCliSubcommand({subcommand:"projects",value:actual})}};var import_chalk2=__toESM(require_source(),1);var AGENT_RUNS_API_BASE="https://vercel.com/api/observability/agent-runs",DEFAULT_TRACE_MAX_FIELD_LENGTH=8e3,MAX_TRACE_FIELD_LENGTH=5e4;function getAgentRunsApiBase(){return process.env.VERCEL_AGENT_RUNS_API_URL||AGENT_RUNS_API_BASE}function resolveAgentRunsWindow(since,until){if(!since)return;let from=parseTimeFlag(since),to=until?parseTimeFlag(until):new Date;return{from:Math.floor(from.getTime()/1e3),to:Math.floor(to.getTime()/1e3)}}function buildAgentRunsUrl(query){let url=new URL(getAgentRunsApiBase());url.searchParams.set("teamSlug",query.teamId),query.view==="team"?url.searchParams.set("view","team"):query.projectId&&url.searchParams.set("project",query.projectId),url.searchParams.set("environment",query.environment||"production");let window=query.window??resolveAgentRunsWindow(query.since,query.until);return window&&(url.searchParams.set("from",String(window.from)),url.searchParams.set("to",String(window.to))),typeof query.page=="number"&&url.searchParams.set("page",String(Math.max(1,Math.floor(query.page)))),typeof query.pageSize=="number"&&url.searchParams.set("pageSize",String(Math.max(1,Math.floor(query.pageSize)))),query.search&&url.searchParams.set("search",query.search),query.cursor&&url.searchParams.set("cursor",query.cursor),query.runId&&url.searchParams.set("runId",query.runId),query.trace&&url.searchParams.set("trace","1"),query.traceStreamId&&url.searchParams.set("traceStreamId",query.traceStreamId),query.traceAfterCursor&&url.searchParams.set("traceAfterCursor",query.traceAfterCursor),typeof query.traceBeforeChunk=="number"&&url.searchParams.set("traceBeforeChunk",String(query.traceBeforeChunk)),url.href}async function fetchAgentRuns(client,query){return client.fetch(buildAgentRunsUrl(query),{useCurrentTeam:!1})}var MISSING_PROJECT_SCOPE_MESSAGE="No linked project found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team> and --project <name>.",MISSING_TEAM_SCOPE_MESSAGE="No team scope found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team>.";async function resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject}){let flagScope=scopeFlag?.trim()||void 0,flagProject=projectFlag?.trim()||void 0;if(flagScope&&(flagProject||!requireProject))return{ok:!0,teamId:flagScope,projectId:flagProject,contextName:flagProject?`${flagScope}/${flagProject}`:flagScope};let linkedProject=await getLinkedProject(client);if(linkedProject.status==="error")return{ok:!1,exitCode:linkedProject.exitCode};if(linkedProject.status==="linked"){let{org,project}=linkedProject;if(flagScope&&flagScope!==org.id&&flagScope!==org.slug)return{ok:!1,exitCode:invalidArguments(client,`\`--scope ${flagScope}\` doesn't match the linked project's team. Pass \`--project <name>\` to query a project in that team.`)};let teamName=flagScope??org.slug,projectName=requireProject?flagProject??project.name:flagProject;return{ok:!0,teamId:flagScope??org.id,projectId:requireProject?flagProject??project.id:flagProject,contextName:projectName?`${teamName}/${projectName}`:teamName}}let message=requireProject?MISSING_PROJECT_SCOPE_MESSAGE:MISSING_TEAM_SCOPE_MESSAGE;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_LINKED,message}),output_manager_default.error(message),{ok:!1,exitCode:1}}function normalizeApiErrorText(message){return message.replace(/\s*\(\d{3}\)\s*$/,"").trim()}function handleAgentRunsApiError(client,err){if(isAPIError(err)){let reason=err.status===403?"forbidden":err.status===401?"not_authorized":err.status===404?AGENT_REASON.NOT_FOUND:err.status===429?"rate_limited":AGENT_REASON.API_ERROR;outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message:normalizeApiErrorText(err.serverMessage||err.message)})}else outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:"unexpected_error",message:err instanceof Error?err.message:String(err)});printError(err)}function invalidArguments(client,message){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message}),output_manager_default.error(message),2}function normalizeTraceMaxFieldLength(value){return typeof value!="number"||!Number.isFinite(value)?DEFAULT_TRACE_MAX_FIELD_LENGTH:Math.min(Math.max(Math.floor(value),0),MAX_TRACE_FIELD_LENGTH)}function truncateLargeStrings(value,maxLength){return maxLength===0?value:typeof value=="string"?value.length<=maxLength?value:`${value.slice(0,maxLength)}... [truncated ${value.length-maxLength} chars]`:Array.isArray(value)?value.map(item=>truncateLargeStrings(item,maxLength)):value&&typeof value=="object"?Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,truncateLargeStrings(entry,maxLength)])):value}import{createHash}from"node:crypto";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1),import_title=__toESM(require_lib(),1);function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function quoteCommandArgument(value,placeholder){return/[\x00-\x1F\x7F]/.test(value)?placeholder:/^[A-Za-z0-9_./:=@%+,-]+$/.test(value)?value:`'${value.replaceAll("'",`'"'"'`)}'`}function asArray(value){return Array.isArray(value)?value.filter(isRecord):[]}function readString(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="string"&&value.length>0)return value}}function readNumber(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value}}function readRecord(record,...keys){if(record)for(let key of keys){let value=record[key];if(isRecord(value))return value}}function readTimestampMs(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value=="string"&&value.length>0){let parsed=Date.parse(value);if(!Number.isNaN(parsed))return parsed}}}var PLACEHOLDER="-";function runId(run){return readString(run,"id","runId")??PLACEHOLDER}function formatRunStatus(run){let status=readString(run,"status","state");if(!status)return PLACEHOLDER;let label=(0,import_title.default)(status.replace(/[_-]+/g," ")),CIRCLE="\u25CF ";switch(status.toLowerCase()){case"completed":case"succeeded":case"success":case"ready":return import_chalk.default.green(CIRCLE)+label;case"error":case"errored":case"failed":case"timed out":case"timed_out":return import_chalk.default.red(CIRCLE)+label;case"running":case"in progress":case"in_progress":case"pending":case"queued":case"started":return import_chalk.default.yellow(CIRCLE)+label;case"canceled":case"cancelled":return import_chalk.default.gray(label);default:return label}}function runModel(run){return readString(run,"model")??PLACEHOLDER}function runTrigger(run){return readString(run,"trigger")??readString(readRecord(run,"trigger"),"label","type","name")??PLACEHOLDER}function runTitle(run){return readString(run,"title","name")}function runStartedAtMs(run){return readTimestampMs(run,"createdAt","startedAt","startTime")}function runDurationMs(run){let explicit=readNumber(run,"durationMs","duration");if(explicit!==void 0)return explicit;let start=readTimestampMs(run,"startedAt","createdAt","startTime"),end=readTimestampMs(run,"endedAt","completedAt","endTime");if(start!==void 0&&end!==void 0&&end>=start)return end-start}function runTotalTokens(run){let usage=readRecord(run,"usage")??run,total=readNumber(usage,"totalTokens","total");if(total!==void 0)return total;let input=readNumber(usage,"inputTokens","promptTokens","input"),output=readNumber(usage,"outputTokens","completionTokens","output");if(input!==void 0||output!==void 0)return(input??0)+(output??0)}function formatAge(timestampMs){if(timestampMs===void 0)return PLACEHOLDER;let delta=Date.now()-timestampMs;return delta<1e3?"just now":`${(0,import_ms.default)(delta)} ago`}function formatTimestamp(timestampMs){return timestampMs===void 0?PLACEHOLDER:new Date(timestampMs).toISOString()}function formatDurationMs(value){return value===void 0?PLACEHOLDER:value<1e3?`${Math.round(value)}ms`:value<6e4?`${(value/1e3).toFixed(1)}s`:(0,import_ms.default)(Math.round(value))}function formatCount(value){return value===void 0?PLACEHOLDER:value<1e4?String(value):value<1e6?`${(value/1e3).toFixed(1)}k`:`${(value/1e6).toFixed(1)}m`}var MAX_TOKEN_LENGTH=8192,MAX_SOURCE_OFFSET=1e4,OTEL_CURSOR_PATTERN=/^[A-Za-z0-9_-]{1,4096}$/,SOURCE_CURSOR_PATTERN=/^[0-9a-z]+\.[0-9a-z]+(\.[0-9a-z]+\.[0-9a-z]+(\.[A-Za-z0-9_-]{1,4096})?)?$/,FILTERS_LENGTH=22;function isSourceOffset(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0&&value<=MAX_SOURCE_OFFSET}function isEpoch(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>0}function isWindow(value){if(!isRecord(value))return!1;let{from,to}=value;return isEpoch(from)&&isEpoch(to)&&from<to}function encodeAgentRunsSourceCursor(offsets){if(!offsets)return;let{otel,workflow,otelCursor}=offsets;if(!isSourceOffset(otel)||!isSourceOffset(workflow))return;let parts=[otel.toString(36),workflow.toString(36)],range=offsets.otelRange;if(range!==void 0){if(!isWindow(range))return;parts.push(range.from.toString(36),range.to.toString(36))}if(otelCursor!==void 0){if(range===void 0||typeof otelCursor!="string"||!OTEL_CURSOR_PATTERN.test(otelCursor))return;parts.push(otelCursor)}return parts.join(".")}function getAgentRunsListFilters({teamId,projectId,environment,search}){return createHash("sha256").update(JSON.stringify([teamId,projectId??null,environment||"production",search||null])).digest("base64url").slice(0,FILTERS_LENGTH)}function encodeAgentRunsListContinuation(continuation){return Buffer.from(JSON.stringify(continuation),"utf8").toString("base64url")}function parseAgentRunsListContinuation(value){if(value.length===0||value.length>MAX_TOKEN_LENGTH||!/^[A-Za-z0-9_-]+$/.test(value))return;let decoded;try{decoded=JSON.parse(Buffer.from(value,"base64url").toString("utf8"))}catch{return}if(!(!isRecord(decoded)||decoded.version!==1||typeof decoded.cursor!="string"||!SOURCE_CURSOR_PATTERN.test(decoded.cursor)||typeof decoded.page!="number"||!Number.isSafeInteger(decoded.page)||decoded.page<2||typeof decoded.filters!="string"||decoded.filters.length!==FILTERS_LENGTH||!isWindow(decoded.window)))return{version:1,cursor:decoded.cursor,page:decoded.page,window:{from:decoded.window.from,to:decoded.window.to},filters:decoded.filters}}var AgentRunsQueryTelemetryClient=class extends TelemetryClient{trackCliOptionEnvironment(value){value&&this.trackCliOption({option:"environment",value:["production","preview"].includes(value)?value:this.redactedValue})}trackCliOptionSince(value){value&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(value){value&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionProject(value){value&&this.trackCliOption({option:"project",value:this.redactedValue})}trackCliFlagJson(value){value&&this.trackCliFlag("json")}};var AgentRunsListTelemetryClient=class extends AgentRunsQueryTelemetryClient{trackCliOptionQuery(value){value&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionSearch(value){value&&this.trackCliOption({option:"search",value:this.redactedValue})}trackCliOptionNext(value){value!==void 0&&this.trackCliOption({option:"next",value:/^\d+$/.test(value)?value:this.redactedValue})}trackCliOptionPage(value){typeof value=="number"&&this.trackCliOption({option:"page",value:String(value)})}trackCliOptionLimit(value){typeof value=="number"&&this.trackCliOption({option:"limit",value:String(value)})}};var DEFAULT_LIST_WINDOW_SECONDS=12*60*60;function getDefaultListWindow(){let to=Math.floor(Date.now()/1e3);return{from:to-DEFAULT_LIST_WINDOW_SECONDS,to}}function buildListPageCommand({argv,window,next}){let args=argv.slice(2),delimiter=args.indexOf("--"),own=delimiter===-1?args:args.slice(0,delimiter),passthrough=delimiter===-1?[]:args.slice(delimiter),kept=argv.slice(0,2);for(let i=0;i<own.length;i++){let arg=own[i],name=normalizeFlagName(arg);if(name==="--since"||name==="--until"){arg.includes("=")||i++;continue}kept.push(arg)}return window&&kept.push("--since",new Date(window.from*1e3).toISOString(),"--until",new Date(window.to*1e3).toISOString()),getNextPageCommand([...kept,...passthrough],next,["--page"])}function printNextPage(command){output_manager_default.print(`
7
+ import{createCertForCns,extractDomain,isWildcardAlias,setupDomain}from"./chunks/chunk-EXLKCL5I.js";import"./chunks/chunk-IFCMWIRB.js";import{joinWords}from"./chunks/chunk-4VFYJU37.js";import{api,tryOpenApiFallback}from"./chunks/chunk-G6HUSV7F.js";import"./chunks/chunk-GHAY4PSD.js";import{list_item_default}from"./chunks/chunk-BTI5TG6Q.js";import{collectList,decodeListCursor,sliceList}from"./chunks/chunk-D4ZEJM3T.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{checkExistsAndConnect,disconnectGitProvider,list,parseRepoUrl,printRemoteUrls,selectAndParseRemoteUrl}from"./chunks/chunk-UNASHUWQ.js";import"./chunks/chunk-4ELZOAQH.js";import"./chunks/chunk-JUAHDOL6.js";import"./chunks/chunk-UI2H2EIM.js";import"./chunks/chunk-UUDE44NV.js";import{ellipsis}from"./chunks/chunk-AKOYIH3A.js";import{box}from"./chunks/chunk-LM3YPF3K.js";import{did_you_mean_default}from"./chunks/chunk-DWZBL4NK.js";import{OpenApiCache,resolveOpenApiTagForTeamsCli}from"./chunks/chunk-QBOY2CXL.js";import{email}from"./chunks/chunk-6IDNVZZR.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{writeJsonError}from"./chunks/chunk-CBVVVYUP.js";import{handleValidationError,outputError,parseTimeFlag,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-AX3V7N44.js";import{getProtectionForDeploymentAlias,getProtectionForProductionDomain,readEnabledProtection}from"./chunks/chunk-O4CQRV2G.js";import"./chunks/chunk-VT6RIZJH.js";import"./chunks/chunk-TOTTVS5P.js";import{ensureLink}from"./chunks/chunk-7DM3IJ7L.js";import{getDeployment,toHost}from"./chunks/chunk-VU3RBRDH.js";import{mapCertError}from"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-EBBDSEEU.js";import{require_tar_fs}from"./chunks/chunk-KRPY5FHJ.js";import{NO_RETRY,TEAM_BUDGET,budgetAmountDollars,budgetPauses,budgetStatePayload,buy,canPromptForCharge,deleteCertById,findBudget,formatUsd,formatUsdWhole,getDomains,getProjectDomain,getTeamMemberByIdentifier,getTeamSpend,getWebhook,hasPauseThreshold,isDomainExternal,listBudgetAlerts,listBudgets,pausePercentsOutside100,percentUsed,removeAliasById,removeBudget,removeReceipt,setBudget,setSavedReceipt,spendDollars,spendPayload,teamMemberLabel,thresholdsForSet,toBudgetState}from"./chunks/chunk-UVE5COCG.js";import{require_cjs}from"./chunks/chunk-WFOJ2LEA.js";import"./chunks/chunk-5M3WBT3N.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-43P35KUA.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import"./chunks/chunk-PFD7LETF.js";import{DEFAULT_LIST_LIMIT,MAX_LIST_LIMIT,getNextPageCommand,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-K5YO4UD7.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand3}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-4CQKN5TW.js";import{getTeams}from"./chunks/chunk-Y6WXTTZS.js";import{CREDIT_TYPE_LABELS,INVOICE_STATUSES,SUPPORTED_ADDON_NAMES,SUPPORTED_CREDIT_TYPES,addSubcommand10 as addSubcommand4,addSubcommand11 as addSubcommand5,addSubcommand2 as addSubcommand,addSubcommand4 as addSubcommand2,addSubcommand5 as addSubcommand3,addonSubcommand,agentRunsCommand,alertsListSubcommand2 as alertsListSubcommand,alertsSubcommand2 as alertsSubcommand,aliasCommand,backupsSubcommand,bisectCommand,budgetCommand,buyCommand,certsCommand,connectSubcommand,createSubcommand10 as createSubcommand2,createSubcommand7 as createSubcommand,creditsSubcommand,disconnectSubcommand,dnsCommand,domainSubcommand,getCommandAliases,getSubcommand,getSubcommand5 as getSubcommand2,gitCommand,globalConfigCommand,importSubcommand,initCommand,inspectSubcommand,inspectSubcommand12 as inspectSubcommand3,inspectSubcommand14 as inspectSubcommand4,inspectSubcommand6 as inspectSubcommand2,inviteSubcommand,invoicesDownloadSubcommand,invoicesInspectSubcommand,invoicesListSubcommand,invoicesSubcommand,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-NTUDWWSL.js";import"./chunks/chunk-M73W4XNR.js";import"./chunks/chunk-32AS5X7G.js";import"./chunks/chunk-ZBZPCKTW.js";import"./chunks/chunk-TRZDIAX3.js";import"./chunks/chunk-GHEGWXH2.js";import"./chunks/chunk-GCXUSXB4.js";import"./chunks/chunk-2H4DUZJZ.js";import"./chunks/chunk-ECQKK4JU.js";import"./chunks/chunk-JOXGYP5S.js";import"./chunks/chunk-7ULVGK67.js";import"./chunks/chunk-4BZ3DNGM.js";import"./chunks/chunk-R5ZLTWKB.js";import"./chunks/chunk-T5TOBY4D.js";import"./chunks/chunk-H34SGIVS.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-G3LWP5CH.js";import"./chunks/chunk-QQA2OMXJ.js";import"./chunks/chunk-KV2DYFUG.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-GCPPL24C.js";import{printError}from"./chunks/chunk-BWS3ZOHJ.js";import{help}from"./chunks/chunk-33U57CNE.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-DSNIVABS.js";import{TelemetryClient}from"./chunks/chunk-NAU6URTI.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,exitWithNonInteractiveError,getErrorRecovery,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-32NXYHYC.js";import"./chunks/chunk-FWTBSC7Z.js";import{getGitConfigPath,getLinkFromDir,getLinkedProject,getUser,getVercelDirectory,humanizePath,parseGitConfig,pluckRemoteUrls,require_pluralize,writeToConfigFile}from"./chunks/chunk-OZPBJWYU.js";import{formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-7WY7ASKE.js";import"./chunks/chunk-4NTBYNFR.js";import{isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-4SAVH3H7.js";import{AliasInUse,CertConfigurationError,CertError,CertMissing,CertNotFound,CertOrderNotFound,CertsPermissionDenied,DNSConflictingRecord,DNSInvalidPort,DNSInvalidType,DNSPermissionDenied,DeploymentFailedAliasImpossible,DeploymentNotFound,DeploymentNotReady,DeploymentPermissionDenied,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainNotAvailable,DomainNotFound,DomainPaymentError,DomainPermissionDenied,DomainPriceChanged,DomainPurchasePending,DomainPurchaseRefundFailed,DomainPurchaseRefunded,InvalidAlias,InvalidAliasInConfig,InvalidDeploymentId,InvalidDomain,NoAliasInConfig,NowError,SourceNotFound,TLDNotSupportedViaCLI,TooManyRequests,UnexpectedDomainPurchaseError,UnsupportedTLD,UserAborted,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain,packageName,require_lib}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,eraseLines,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{formatOption,getFlagsSpecification,getGlobalFlagsFromArgs,getSameSubcommandSuggestionFlags,jsonOption,normalizeFlagName,stripSensitiveAuthArgs}from"./chunks/chunk-YPPDRKVC.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import{fetch,toNodeReadable}from"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var AgentRunsTelemetryClient=class extends TelemetryClient{trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandTrace(actual){this.trackCliSubcommand({subcommand:"trace",value:actual})}trackCliSubcommandProjects(actual){this.trackCliSubcommand({subcommand:"projects",value:actual})}};var import_chalk2=__toESM(require_source(),1);var AGENT_RUNS_API_BASE="https://vercel.com/api/observability/agent-runs",DEFAULT_TRACE_MAX_FIELD_LENGTH=8e3,MAX_TRACE_FIELD_LENGTH=5e4;function getAgentRunsApiBase(){return process.env.VERCEL_AGENT_RUNS_API_URL||AGENT_RUNS_API_BASE}function resolveAgentRunsWindow(since,until){if(!since)return;let from=parseTimeFlag(since),to=until?parseTimeFlag(until):new Date;return{from:Math.floor(from.getTime()/1e3),to:Math.floor(to.getTime()/1e3)}}function buildAgentRunsUrl(query){let url=new URL(getAgentRunsApiBase());url.searchParams.set("teamSlug",query.teamId),query.view==="team"?url.searchParams.set("view","team"):query.projectId&&url.searchParams.set("project",query.projectId),url.searchParams.set("environment",query.environment||"production");let window=query.window??resolveAgentRunsWindow(query.since,query.until);return window&&(url.searchParams.set("from",String(window.from)),url.searchParams.set("to",String(window.to))),typeof query.page=="number"&&url.searchParams.set("page",String(Math.max(1,Math.floor(query.page)))),typeof query.pageSize=="number"&&url.searchParams.set("pageSize",String(Math.max(1,Math.floor(query.pageSize)))),query.search&&url.searchParams.set("search",query.search),query.cursor&&url.searchParams.set("cursor",query.cursor),query.runId&&url.searchParams.set("runId",query.runId),query.trace&&url.searchParams.set("trace","1"),query.traceStreamId&&url.searchParams.set("traceStreamId",query.traceStreamId),query.traceAfterCursor&&url.searchParams.set("traceAfterCursor",query.traceAfterCursor),typeof query.traceBeforeChunk=="number"&&url.searchParams.set("traceBeforeChunk",String(query.traceBeforeChunk)),url.href}async function fetchAgentRuns(client,query){return client.fetch(buildAgentRunsUrl(query),{useCurrentTeam:!1})}var MISSING_PROJECT_SCOPE_MESSAGE="No linked project found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team> and --project <name>.",MISSING_TEAM_SCOPE_MESSAGE="No team scope found. Run `vercel link`, pass --cwd to a linked dir, or use --scope <team>.";async function resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject}){let flagScope=scopeFlag?.trim()||void 0,flagProject=projectFlag?.trim()||void 0;if(flagScope&&(flagProject||!requireProject))return{ok:!0,teamId:flagScope,projectId:flagProject,contextName:flagProject?`${flagScope}/${flagProject}`:flagScope};let linkedProject=await getLinkedProject(client);if(linkedProject.status==="error")return{ok:!1,exitCode:linkedProject.exitCode};if(linkedProject.status==="linked"){let{org,project}=linkedProject;if(flagScope&&flagScope!==org.id&&flagScope!==org.slug)return{ok:!1,exitCode:invalidArguments(client,`\`--scope ${flagScope}\` doesn't match the linked project's team. Pass \`--project <name>\` to query a project in that team.`)};let teamName=flagScope??org.slug,projectName=requireProject?flagProject??project.name:flagProject;return{ok:!0,teamId:flagScope??org.id,projectId:requireProject?flagProject??project.id:flagProject,contextName:projectName?`${teamName}/${projectName}`:teamName}}let message=requireProject?MISSING_PROJECT_SCOPE_MESSAGE:MISSING_TEAM_SCOPE_MESSAGE;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_LINKED,message}),output_manager_default.error(message),{ok:!1,exitCode:1}}function normalizeApiErrorText(message){return message.replace(/\s*\(\d{3}\)\s*$/,"").trim()}function handleAgentRunsApiError(client,err){if(isAPIError(err)){let reason=err.status===403?"forbidden":err.status===401?"not_authorized":err.status===404?AGENT_REASON.NOT_FOUND:err.status===429?"rate_limited":AGENT_REASON.API_ERROR;outputAgentError(client,{status:AGENT_STATUS.ERROR,reason,message:normalizeApiErrorText(err.serverMessage||err.message)})}else outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:"unexpected_error",message:err instanceof Error?err.message:String(err)});printError(err)}function invalidArguments(client,message){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message}),output_manager_default.error(message),2}function normalizeTraceMaxFieldLength(value){return typeof value!="number"||!Number.isFinite(value)?DEFAULT_TRACE_MAX_FIELD_LENGTH:Math.min(Math.max(Math.floor(value),0),MAX_TRACE_FIELD_LENGTH)}function truncateLargeStrings(value,maxLength){return maxLength===0?value:typeof value=="string"?value.length<=maxLength?value:`${value.slice(0,maxLength)}... [truncated ${value.length-maxLength} chars]`:Array.isArray(value)?value.map(item=>truncateLargeStrings(item,maxLength)):value&&typeof value=="object"?Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,truncateLargeStrings(entry,maxLength)])):value}import{createHash}from"node:crypto";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1),import_title=__toESM(require_lib(),1);function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function quoteCommandArgument(value,placeholder){return/[\x00-\x1F\x7F]/.test(value)?placeholder:/^[A-Za-z0-9_./:=@%+,-]+$/.test(value)?value:`'${value.replaceAll("'",`'"'"'`)}'`}function asArray(value){return Array.isArray(value)?value.filter(isRecord):[]}function readString(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="string"&&value.length>0)return value}}function readNumber(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value}}function readRecord(record,...keys){if(record)for(let key of keys){let value=record[key];if(isRecord(value))return value}}function readTimestampMs(record,...keys){if(record)for(let key of keys){let value=record[key];if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value=="string"&&value.length>0){let parsed=Date.parse(value);if(!Number.isNaN(parsed))return parsed}}}var PLACEHOLDER="-";function runId(run){return readString(run,"id","runId")??PLACEHOLDER}function formatRunStatus(run){let status=readString(run,"status","state");if(!status)return PLACEHOLDER;let label=(0,import_title.default)(status.replace(/[_-]+/g," ")),CIRCLE="\u25CF ";switch(status.toLowerCase()){case"completed":case"succeeded":case"success":case"ready":return import_chalk.default.green(CIRCLE)+label;case"error":case"errored":case"failed":case"timed out":case"timed_out":return import_chalk.default.red(CIRCLE)+label;case"running":case"in progress":case"in_progress":case"pending":case"queued":case"started":return import_chalk.default.yellow(CIRCLE)+label;case"canceled":case"cancelled":return import_chalk.default.gray(label);default:return label}}function runModel(run){return readString(run,"model")??PLACEHOLDER}function runTrigger(run){return readString(run,"trigger")??readString(readRecord(run,"trigger"),"label","type","name")??PLACEHOLDER}function runTitle(run){return readString(run,"title","name")}function runStartedAtMs(run){return readTimestampMs(run,"createdAt","startedAt","startTime")}function runDurationMs(run){let explicit=readNumber(run,"durationMs","duration");if(explicit!==void 0)return explicit;let start=readTimestampMs(run,"startedAt","createdAt","startTime"),end=readTimestampMs(run,"endedAt","completedAt","endTime");if(start!==void 0&&end!==void 0&&end>=start)return end-start}function runTotalTokens(run){let usage=readRecord(run,"usage")??run,total=readNumber(usage,"totalTokens","total");if(total!==void 0)return total;let input=readNumber(usage,"inputTokens","promptTokens","input"),output=readNumber(usage,"outputTokens","completionTokens","output");if(input!==void 0||output!==void 0)return(input??0)+(output??0)}function formatAge(timestampMs){if(timestampMs===void 0)return PLACEHOLDER;let delta=Date.now()-timestampMs;return delta<1e3?"just now":`${(0,import_ms.default)(delta)} ago`}function formatTimestamp(timestampMs){return timestampMs===void 0?PLACEHOLDER:new Date(timestampMs).toISOString()}function formatDurationMs(value){return value===void 0?PLACEHOLDER:value<1e3?`${Math.round(value)}ms`:value<6e4?`${(value/1e3).toFixed(1)}s`:(0,import_ms.default)(Math.round(value))}function formatCount(value){return value===void 0?PLACEHOLDER:value<1e4?String(value):value<1e6?`${(value/1e3).toFixed(1)}k`:`${(value/1e6).toFixed(1)}m`}var MAX_TOKEN_LENGTH=8192,MAX_SOURCE_OFFSET=1e4,OTEL_CURSOR_PATTERN=/^[A-Za-z0-9_-]{1,4096}$/,SOURCE_CURSOR_PATTERN=/^[0-9a-z]+\.[0-9a-z]+(\.[0-9a-z]+\.[0-9a-z]+(\.[A-Za-z0-9_-]{1,4096})?)?$/,FILTERS_LENGTH=22;function isSourceOffset(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0&&value<=MAX_SOURCE_OFFSET}function isEpoch(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>0}function isWindow(value){if(!isRecord(value))return!1;let{from,to}=value;return isEpoch(from)&&isEpoch(to)&&from<to}function encodeAgentRunsSourceCursor(offsets){if(!offsets)return;let{otel,workflow,otelCursor}=offsets;if(!isSourceOffset(otel)||!isSourceOffset(workflow))return;let parts=[otel.toString(36),workflow.toString(36)],range=offsets.otelRange;if(range!==void 0){if(!isWindow(range))return;parts.push(range.from.toString(36),range.to.toString(36))}if(otelCursor!==void 0){if(range===void 0||typeof otelCursor!="string"||!OTEL_CURSOR_PATTERN.test(otelCursor))return;parts.push(otelCursor)}return parts.join(".")}function getAgentRunsListFilters({teamId,projectId,environment,search}){return createHash("sha256").update(JSON.stringify([teamId,projectId??null,environment||"production",search||null])).digest("base64url").slice(0,FILTERS_LENGTH)}function encodeAgentRunsListContinuation(continuation){return Buffer.from(JSON.stringify(continuation),"utf8").toString("base64url")}function parseAgentRunsListContinuation(value){if(value.length===0||value.length>MAX_TOKEN_LENGTH||!/^[A-Za-z0-9_-]+$/.test(value))return;let decoded;try{decoded=JSON.parse(Buffer.from(value,"base64url").toString("utf8"))}catch{return}if(!(!isRecord(decoded)||decoded.version!==1||typeof decoded.cursor!="string"||!SOURCE_CURSOR_PATTERN.test(decoded.cursor)||typeof decoded.page!="number"||!Number.isSafeInteger(decoded.page)||decoded.page<2||typeof decoded.filters!="string"||decoded.filters.length!==FILTERS_LENGTH||!isWindow(decoded.window)))return{version:1,cursor:decoded.cursor,page:decoded.page,window:{from:decoded.window.from,to:decoded.window.to},filters:decoded.filters}}var AgentRunsQueryTelemetryClient=class extends TelemetryClient{trackCliOptionEnvironment(value){value&&this.trackCliOption({option:"environment",value:["production","preview"].includes(value)?value:this.redactedValue})}trackCliOptionSince(value){value&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(value){value&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionProject(value){value&&this.trackCliOption({option:"project",value:this.redactedValue})}trackCliFlagJson(value){value&&this.trackCliFlag("json")}};var AgentRunsListTelemetryClient=class extends AgentRunsQueryTelemetryClient{trackCliOptionQuery(value){value&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionSearch(value){value&&this.trackCliOption({option:"search",value:this.redactedValue})}trackCliOptionNext(value){value!==void 0&&this.trackCliOption({option:"next",value:/^\d+$/.test(value)?value:this.redactedValue})}trackCliOptionPage(value){typeof value=="number"&&this.trackCliOption({option:"page",value:String(value)})}trackCliOptionLimit(value){typeof value=="number"&&this.trackCliOption({option:"limit",value:String(value)})}};var DEFAULT_LIST_WINDOW_SECONDS=12*60*60;function getDefaultListWindow(){let to=Math.floor(Date.now()/1e3);return{from:to-DEFAULT_LIST_WINDOW_SECONDS,to}}function buildListPageCommand({argv,window,next}){let args=argv.slice(2),delimiter=args.indexOf("--"),own=delimiter===-1?args:args.slice(0,delimiter),passthrough=delimiter===-1?[]:args.slice(delimiter),kept=argv.slice(0,2);for(let i=0;i<own.length;i++){let arg=own[i],name=normalizeFlagName(arg);if(name==="--since"||name==="--until"){arg.includes("=")||i++;continue}kept.push(arg)}return window&&kept.push("--since",new Date(window.from*1e3).toISOString(),"--until",new Date(window.to*1e3).toISOString()),getNextPageCommand([...kept,...passthrough],next,["--page"])}function printNextPage(command){output_manager_default.print(`
8
8
  `),printNextPageCommand(command)}async function list2(client){let telemetry=new AgentRunsListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),2}let{"--project":projectFlag,"--environment":environment,"--since":since,"--until":until,"--query":queryFlag,"--search":searchFlag,"--next":next,"--page":legacyPage,"--limit":limit,"--json":json,"--scope":scopeFlag}=parsedArgs.flags;legacyPage!==void 0&&warnDeprecatedOption(client.argv,"--page","--next"),telemetry.trackCliOptionProject(projectFlag),telemetry.trackCliOptionEnvironment(environment),telemetry.trackCliOptionSince(since),telemetry.trackCliOptionUntil(until),telemetry.trackCliOptionQuery(queryFlag),telemetry.trackCliOptionSearch(searchFlag),telemetry.trackCliOptionNext(next),telemetry.trackCliOptionPage(legacyPage),telemetry.trackCliOptionLimit(limit),telemetry.trackCliFlagJson(json);let query=getRenamedOption(parsedArgs.flags,"--query","--search",{json});if("error"in query)return reportRenamedOptionError(client,query.error,{json});let search=query.value;if(until&&!since)return invalidArguments(client,"`--until` requires `--since`.");if(next!==void 0&&legacyPage!==void 0)return invalidArguments(client,"`--next` and `--page` cannot be used together.");let legacyNext=next!==void 0&&/^\d+$/.test(next)?Number(next):void 0,continuation;if(next!==void 0&&legacyNext===void 0&&(continuation=parseAgentRunsListContinuation(next),!continuation))return invalidArguments(client,"Invalid or expired `--next` cursor. Omit `--next` to start from the first page.");let page=continuation?.page??legacyNext??legacyPage,requestedWindow;try{requestedWindow=resolveAgentRunsWindow(since,until)}catch(err){return handleAgentRunsApiError(client,err),1}let window=requestedWindow??getDefaultListWindow();if(continuation){if(requestedWindow&&(requestedWindow.from!==continuation.window.from||requestedWindow.to!==continuation.window.to))return invalidArguments(client,"`--since` and `--until` must match the time range of the `--next` cursor. Omit them to continue the same list.");window=continuation.window}let scope=await resolveAgentRunsScope(client,{scopeFlag,projectFlag,requireProject:!0});if(!scope.ok)return scope.exitCode;let filters=getAgentRunsListFilters({teamId:scope.teamId,projectId:scope.projectId,environment,search});if(continuation&&continuation.filters!==filters)return invalidArguments(client,"The `--next` cursor belongs to a different list. Use the same scope, project, environment, and search, or omit `--next` to start from the first page.");let fetchStamp=stamp_default();output_manager_default.spinner(`Fetching Agent Runs in ${import_chalk2.default.bold(scope.contextName)}\u2026`);let data;try{data=await fetchAgentRuns(client,{teamId:scope.teamId,projectId:scope.projectId,environment,window,page,pageSize:limit,search,cursor:continuation?.cursor})}catch(err){return output_manager_default.stopSpinner(),handleAgentRunsApiError(client,err),1}output_manager_default.stopSpinner();let pageInfo=readRecord(data,"pageInfo"),cursorPaged=typeof pageInfo?.hasMore=="boolean"||pageInfo?.nextOffsets!==void 0;if(cursorPaged&&!continuation&&(page??1)>1)return invalidArguments(client,"Page numbers cannot continue this Agent Runs list. Use the `--next` cursor from the previous page (`pagination.next` with `--json`).");let nextToken=null;if(cursorPaged&&pageInfo?.hasMore===!0){let nextOffsets=readRecord(pageInfo,"nextOffsets"),cursor=encodeAgentRunsSourceCursor(nextOffsets);cursor&&(nextToken=encodeAgentRunsListContinuation({version:1,cursor,page:(page??1)+1,window,filters}))}if(json){let payload=cursorPaged?{...data,pagination:{next:nextToken}}:data;return client.stdout.write(`${JSON.stringify(withWarnings(payload,[query.warning]),null,2)}
9
9
  `),0}let pageCommand={argv:renameOptionInArgs(client.argv,"--search","--query")},runList=asArray(data.runs);if(runList.length===0)return nextToken?(output_manager_default.log("No Agent Runs on this page."),printNextPage(buildListPageCommand({...pageCommand,next:nextToken}))):search||since?output_manager_default.log("No Agent Runs match the current filters."):output_manager_default.log("No Agent Runs found."),0;output_manager_default.log(`Agent Runs under ${import_chalk2.default.bold(scope.contextName)} ${fetchStamp()}`);let rows=[["Run ID","Status","Trigger","Model","Tokens","Duration","Age"].map(header=>import_chalk2.default.bold(import_chalk2.default.cyan(header))),...runList.map(run=>[import_chalk2.default.bold(runId(run)),formatRunStatus(run),runTrigger(run),runModel(run),formatCount(runTotalTokens(run)),import_chalk2.default.gray(formatDurationMs(runDurationMs(run))),import_chalk2.default.gray(formatAge(runStartedAtMs(run)))])];client.stdout.write(`
10
10
  ${table(rows,{hsep:3}).replace(/^/gm," ")}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{GATEWAY_ANTHROPIC_BASE_URL,GATEWAY_API_KEY_ENV,GATEWAY_CODING_AGENT_BASE_URL,GATEWAY_CURSOR_BASE_URL,GATEWAY_DEFAULT_MODEL,KEY_PLACEHOLDER,MANAGED_BLOCK_END,MANAGED_BLOCK_START,backupFile,claudeCode,codex,ensureMode,isFile,isSymlink,maskSecret,mergeJson,mergeJsonc,mergeToml,parseJsonObjectOrNull,pathExists,readFileOrNull,resolveGatewayBaseUrl,setupCodexPlugin,setupVercelPlugin,upsertManagedBlock,writeConfigFile}from"./chunks/chunk-U6KJOCXX.js";import{selectOrg}from"./chunks/chunk-NFASCUXE.js";import{dump,load}from"./chunks/chunk-V6Y6UK6B.js";import{init_main,parse as parse2}from"./chunks/chunk-J24BABG4.js";import{init_dist,parse,stringify}from"./chunks/chunk-U4Z2MMOF.js";import{require_async_sema}from"./chunks/chunk-NZ2TFADV.js";import{CHECKBOX_INSTRUCTIONS}from"./chunks/chunk-OFDTADPQ.js";import{readOnOffOption}from"./chunks/chunk-E7DYXF6G.js";import{amountMatchesPrice,buy,canPromptForCharge,chargeFailureReason,deleteCertById,formatAmountArg,formatTerm,formatUsd,getDomains,getProjectDomain,getProjectDomainByName,getTeamMemberByIdentifier,getTeamMembersByIds,isDomainExternal,parseAmount,printChargeRecovery,refuseUnnamedTeam,removeAliasById,reportChargeFailure,reportPriceChanged,reportUnknownOutcome,reportUsageError,teamMemberLabel,verifyProjectDomain,writeChargeAction}from"./chunks/chunk-GIFIOAOW.js";import{addDomain,getDomainByName,require_cjs}from"./chunks/chunk-OVWDOWRV.js";import{getDomainPrice,getDomainStatus,getOrderOutcome,pollForOrder}from"./chunks/chunk-JB6T3XEF.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-CH5325V5.js";import{InvalidNextError,getPaginationOpts}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{formatDate,formatDateWithoutTime}from"./chunks/chunk-HRR57QNP.js";import"./chunks/chunk-PFD7LETF.js";import{DEFAULT_LIST_LIMIT,PaginationError,fetchAllPages,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-K5YO4UD7.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"./chunks/chunk-ETV3C2CV.js";import{tokensAfterCommand}from"./chunks/chunk-4CQKN5TW.js";import{getTeams}from"./chunks/chunk-Y6WXTTZS.js";import{addSubcommand,aiGatewayCommand,apiKeysSubcommand,autoRenewSubcommand,budgetsDefaultsListSubcommand,budgetsDefaultsRemoveSubcommand,budgetsDefaultsSetSubcommand,budgetsDefaultsSubcommand,budgetsInspectSubcommand,budgetsListSubcommand,budgetsRemoveSubcommand,budgetsSetSubcommand,budgetsSubcommand,buySubcommand,checkSubcommand,codingAgentsSubcommand,createSubcommand,domainsCommand,getCommandAliases,inspectSubcommand2 as inspectSubcommand,inspectSubcommand3 as inspectSubcommand2,leaderboardAppsSubcommand,leaderboardLabsSubcommand,leaderboardModelsSubcommand,leaderboardProvidersSubcommand,leaderboardSubcommand,listSubcommand2 as listSubcommand,listSubcommand4 as listSubcommand2,modelsEndpointsSubcommand,modelsListSubcommand,modelsSubcommand,moveSubcommand,priceSubcommand,removeSubcommand,removeSubcommand3 as removeSubcommand2,renewSubcommand,rulesAddSubcommand,rulesEditSubcommand,rulesListSubcommand,rulesRemoveSubcommand,rulesSubcommand,searchSubcommand,setupSubcommand,transferInSubcommand,verifySubcommand,virtualModelsCreateSubcommand,virtualModelsEditSubcommand,virtualModelsInspectSubcommand,virtualModelsListSubcommand,virtualModelsRemoveSubcommand,virtualModelsRestoreSubcommand,virtualModelsSubcommand}from"./chunks/chunk-NTUDWWSL.js";import"./chunks/chunk-M73W4XNR.js";import"./chunks/chunk-32AS5X7G.js";import"./chunks/chunk-ZBZPCKTW.js";import{gatewaySubcommand,pluginSubcommand,setupCommand,skillsSubcommand}from"./chunks/chunk-TRZDIAX3.js";import"./chunks/chunk-GHEGWXH2.js";import"./chunks/chunk-GCXUSXB4.js";import"./chunks/chunk-2H4DUZJZ.js";import"./chunks/chunk-ECQKK4JU.js";import"./chunks/chunk-JOXGYP5S.js";import"./chunks/chunk-7ULVGK67.js";import"./chunks/chunk-4BZ3DNGM.js";import"./chunks/chunk-R5ZLTWKB.js";import"./chunks/chunk-T5TOBY4D.js";import"./chunks/chunk-H34SGIVS.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-G3LWP5CH.js";import"./chunks/chunk-QQA2OMXJ.js";import"./chunks/chunk-KV2DYFUG.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-GCPPL24C.js";import{printError}from"./chunks/chunk-BWS3ZOHJ.js";import{help}from"./chunks/chunk-33U57CNE.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-5ZEROVK5.js";import{TelemetryClient}from"./chunks/chunk-NAU6URTI.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,outputAgentSuccess,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-32NXYHYC.js";import"./chunks/chunk-FWTBSC7Z.js";import{getLinkedProject,getProjectByNameOrId,getUser,require_pluralize}from"./chunks/chunk-CBA2KGXG.js";import{ALIGNED_LABEL_WIDTH,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-7WY7ASKE.js";import"./chunks/chunk-4NTBYNFR.js";import{parseArguments,parseWithShortFlag}from"./chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-4SAVH3H7.js";import{APIError,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainExternal,DomainMoveConflict,DomainNotAvailable,DomainNotFound,DomainNotVerified,DomainPaymentError,DomainPermissionDenied,DomainRemovalConflict,InvalidDomain,InvalidMoveDestination,ProjectNotFound,UnexpectedDomainTransferError,UnsupportedTLD,code,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,stripSensitiveAuthArgs}from"./chunks/chunk-YPPDRKVC.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var MAX_PAGE_SIZE=100,MAX_SEARCH_QUERY_CHARS=256;async function listApiKeysPage(client,opts={}){let query=new URLSearchParams({purpose:"ai-gateway"});opts.limit!==void 0&&query.set("limit",String(opts.limit)),opts.next&&query.set("until",opts.next),opts.search&&query.set("search",opts.search);let{apiKeys:apiKeys2,pagination}=await client.fetch(`/v1/api-keys?${query.toString()}`,{method:"GET"});return{items:apiKeys2??[],next:pagination?.next??null}}async function listAllApiKeys(client,opts={}){return fetchAllPages(next=>listApiKeysPage(client,{...opts,limit:MAX_PAGE_SIZE,next}))}async function getApiKey(client,apiKeyId){let{apiKey}=await client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}`,{method:"GET"});return apiKey}async function updateApiKeyQuota(client,apiKeyId,input){return client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}/quota`,{method:"PATCH",body:input})}function describeApiKeyLookupError(identifier,resolved){switch(resolved.error){case"ambiguous":return`Multiple API keys named "${identifier}" (${resolved.count}). Use the key id instead.`;case"incomplete":return`Could not search every API key for "${identifier}": ${resolved.message} Use the key id instead.`;default:return`API key not found: ${identifier}`}}async function findApiKeyByIdOrName(client,identifier){try{let apiKey=await getApiKey(client,identifier);if(apiKey&&apiKey.purpose==="ai-gateway")return{apiKey}}catch{}let search2=identifier.length<=MAX_SEARCH_QUERY_CHARS?identifier:void 0,keys;try{keys=await listAllApiKeys(client,{search:search2})}catch(err){if(err instanceof PaginationError)return{error:"incomplete",message:err.message};throw err}let matches=keys.filter(key=>key.name===identifier);return matches.length===1?{apiKey:matches[0]}:matches.length>1?{error:"ambiguous",count:matches.length}:{error:"not_found"}}async function deleteApiKey(client,apiKeyId){await client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}`,{method:"DELETE"})}async function createApiKey(client,payload){return await client.fetch("/v1/api-keys",{method:"POST",body:{purpose:"ai-gateway",...payload}})}var AiGatewayApiKeysCreateTelemetryClient=class extends TelemetryClient{trackCliOptionName(name){name&&this.trackCliOption({option:"name",value:this.redactedValue})}trackCliOptionAmount(amount){amount!==void 0&&this.trackCliOption({option:"amount",value:this.redactedValue})}trackCliOptionBudget(budget){budget!==void 0&&this.trackCliOption({option:"budget",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliOptionRefreshPeriod(refreshPeriod){refreshPeriod&&this.trackCliOption({option:"refresh-period",value:refreshPeriod})}trackCliFlagIncludeByok(includeByok){includeByok&&this.trackCliFlag("include-byok")}trackCliOptionAlertThresholds(alertThresholds){alertThresholds&&this.trackCliOption({option:"alert-thresholds",value:alertThresholds})}trackCliOptionExpiration(expiration){expiration&&this.trackCliOption({option:"expiration",value:expiration})}trackCliFlagZdrExempt(zdrExempt){zdrExempt&&this.trackCliFlag("zdr-exempt")}trackCliFlagTokenPass(tokenPass2){tokenPass2&&this.trackCliFlag("token-pass")}trackCliFlagBypassAllSettings(bypassAllSettings){bypassAllSettings&&this.trackCliFlag("bypass-all-settings")}};var VALID_REFRESH_PERIODS=["daily","weekly","monthly","none"];function isValidRefreshPeriod(period){return VALID_REFRESH_PERIODS.includes(period)}var VALID_ALERT_THRESHOLDS=[50,75,100];function parseAlertThresholds(input){let values=[],tokens=input.split(",").map(token=>token.trim()).filter(token=>token.length>0);for(let token of tokens){let num=Number(token);if(!Number.isInteger(num)||!VALID_ALERT_THRESHOLDS.includes(num))return{valid:!1,invalid:token};values.includes(num)||values.push(num)}return{valid:!0,values}}function buildQuota(opts){let effectiveRefresh=opts.refreshPeriod&&opts.refreshPeriod!=="none"?opts.refreshPeriod:void 0,hasAlertThresholds=opts.alertThresholds!==void 0&&opts.alertThresholds.length>0;if(!(opts.budget===void 0&&!effectiveRefresh&&!opts.includeByok&&!hasAlertThresholds))return{...opts.budget!==void 0&&{limitAmount:opts.budget},...effectiveRefresh&&{refreshPeriod:effectiveRefresh},...opts.includeByok&&{includeByokInQuota:!0},...hasAlertThresholds&&{alertThresholds:opts.alertThresholds}}}var EXPIRY_PRESETS=[{label:"7 days",value:"7d"},{label:"30 days",value:"30d"},{label:"60 days",value:"60d"},{label:"90 days",value:"90d"},{label:"1 year",value:"1y"}],DEFAULT_EXPIRY_PRESET="30d",VALID_EXPIRY_VALUES=[...EXPIRY_PRESETS.map(p=>p.value),"none"];function isValidExpiry(value){return VALID_EXPIRY_VALUES.includes(value)}var DAY_MS=864e5;function presetToExpiresAt(value,now=Date.now()){switch(value){case"7d":return now+7*DAY_MS;case"30d":return now+30*DAY_MS;case"60d":return now+60*DAY_MS;case"90d":return now+90*DAY_MS;case"1y":{let date=new Date(now);return date.setFullYear(date.getFullYear()+1),date.getTime()}default:return}}async function create(client,argv){let telemetry=new AiGatewayApiKeysCreateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(createSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts}=parsedArgs,name=opts["--name"],amountFlag=opts["--amount"],budgetFlag=opts["--budget"],limitFlag=opts["--limit"],refreshPeriod=opts["--refresh-period"],includeByok=opts["--include-byok"],alertThresholdsInput=opts["--alert-thresholds"],expiration=opts["--expiration"],zdrExempt=opts["--zdr-exempt"],bypassAll=opts["--bypass-all-settings"],tokenPass2=opts["--token-pass"];if(telemetry.trackCliOptionName(name),telemetry.trackCliOptionAmount(amountFlag),telemetry.trackCliOptionBudget(budgetFlag),telemetry.trackCliOptionLimit(limitFlag),telemetry.trackCliOptionRefreshPeriod(refreshPeriod),telemetry.trackCliFlagIncludeByok(includeByok),telemetry.trackCliOptionAlertThresholds(alertThresholdsInput),telemetry.trackCliOptionExpiration(expiration),telemetry.trackCliFlagZdrExempt(zdrExempt),telemetry.trackCliFlagBypassAllSettings(bypassAll),telemetry.trackCliFlagTokenPass(tokenPass2),tokenPass2&&(zdrExempt||bypassAll)){let message="Cannot combine --token-pass with --zdr-exempt or --bypass-all-settings. Remove the exemption options to create a Token Pass key.";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --token-pass")}]},2),output_manager_default.error(message),2}if(budgetFlag!==void 0&&limitFlag!==void 0){let message="Pass only one of --limit or --budget. (Both are deprecated; use --amount.)";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_BUDGET,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --amount 500")}]},2),output_manager_default.error(message),2}let amount=getRenamedOption(opts,"--amount",budgetFlag!==void 0?"--budget":"--limit");if("error"in amount)return reportRenamedOptionError(client,amount.error);let budget=amount.value;if(budget!==void 0&&budget<1){let message="Budget must be a positive number in dollars (minimum 1).";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_BUDGET,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --amount 500")}]},2),output_manager_default.error(message),2}if(refreshPeriod&&!isValidRefreshPeriod(refreshPeriod)){let message=`Invalid refresh period "${refreshPeriod}". Must be one of: ${VALID_REFRESH_PERIODS.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_REFRESH_PERIOD,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --refresh-period monthly")}]},2),output_manager_default.error(message),2}let alertThresholds;if(alertThresholdsInput!==void 0){let result=parseAlertThresholds(alertThresholdsInput);if(!result.valid){let message=`Invalid alert threshold "${result.invalid}". Must be a comma-separated subset of: ${VALID_ALERT_THRESHOLDS.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ALERT_THRESHOLDS,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --alert-thresholds 50,75,100")}]},2),output_manager_default.error(message),2}alertThresholds=result.values}if(expiration!==void 0&&!isValidExpiry(expiration)){let message=`Invalid expiration "${expiration}". Must be one of: ${VALID_EXPIRY_VALUES.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_EXPIRATION,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --expiration 90d")}]},2),output_manager_default.error(message),2}let expiresAt=expiration!==void 0?presetToExpiresAt(expiration):void 0,aiGatewayQuota=buildQuota({budget,refreshPeriod,includeByok,alertThresholds});if(!await client.resolveCurrentTeam()){if(!client.stdin.isTTY)return output_manager_default.error("No team selected. Use `vercel --scope <team-slug> ai-gateway api-keys create` or run `vercel switch` first."),1;let org=await selectOrg(client,"Which team should own this API key?");org.type==="team"&&(client.config.currentTeam=org.id)}let createStamp=stamp_default();output_manager_default.spinner("Creating API key");let metadata={...tokenPass2&&{tokenPass:!0},...zdrExempt&&{zdr:{enableNonZdrModels:!0}},...bypassAll&&{bypassAll:!0}};try{let result=await createApiKey(client,{name,aiGatewayQuota,...expiresAt!==void 0&&{expiresAt},...Object.keys(metadata).length>0&&{metadata}});return output_manager_default.stopSpinner(),client.stdout.write(`${result.apiKeyString}
7
+ import{GATEWAY_ANTHROPIC_BASE_URL,GATEWAY_API_KEY_ENV,GATEWAY_CODING_AGENT_BASE_URL,GATEWAY_CURSOR_BASE_URL,GATEWAY_DEFAULT_MODEL,KEY_PLACEHOLDER,MANAGED_BLOCK_END,MANAGED_BLOCK_START,backupFile,claudeCode,codex,ensureMode,isFile,isSymlink,maskSecret,mergeJson,mergeJsonc,mergeToml,parseJsonObjectOrNull,pathExists,readFileOrNull,resolveGatewayBaseUrl,setupCodexPlugin,setupVercelPlugin,upsertManagedBlock,writeConfigFile}from"./chunks/chunk-U6KJOCXX.js";import{selectOrg}from"./chunks/chunk-UOQGI6CL.js";import{dump,load}from"./chunks/chunk-V6Y6UK6B.js";import{init_main,parse as parse2}from"./chunks/chunk-J24BABG4.js";import{init_dist,parse,stringify}from"./chunks/chunk-U4Z2MMOF.js";import{require_async_sema}from"./chunks/chunk-NZ2TFADV.js";import{CHECKBOX_INSTRUCTIONS}from"./chunks/chunk-OFDTADPQ.js";import{readOnOffOption}from"./chunks/chunk-E7DYXF6G.js";import{amountMatchesPrice,buy,canPromptForCharge,chargeFailureReason,deleteCertById,formatAmountArg,formatTerm,formatUsd,getDomains,getProjectDomain,getProjectDomainByName,getTeamMemberByIdentifier,getTeamMembersByIds,isDomainExternal,parseAmount,printChargeRecovery,refuseUnnamedTeam,removeAliasById,reportChargeFailure,reportPriceChanged,reportUnknownOutcome,reportUsageError,teamMemberLabel,verifyProjectDomain,writeChargeAction}from"./chunks/chunk-UVE5COCG.js";import{addDomain,getDomainByName,require_cjs}from"./chunks/chunk-WFOJ2LEA.js";import{getDomainPrice,getDomainStatus,getOrderOutcome,pollForOrder}from"./chunks/chunk-5M3WBT3N.js";import{external_exports}from"./chunks/chunk-2NABMKFV.js";import{getAliases}from"./chunks/chunk-43P35KUA.js";import{InvalidNextError,getPaginationOpts}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{canPrompt}from"./chunks/chunk-IQ7FPAI4.js";import{require_execa}from"./chunks/chunk-RCUDI7OF.js";import"./chunks/chunk-GD7AV7BO.js";import{formatDate,formatDateWithoutTime}from"./chunks/chunk-HRR57QNP.js";import"./chunks/chunk-PFD7LETF.js";import{DEFAULT_LIST_LIMIT,PaginationError,fetchAllPages,parseListLimit,printNextPageCommand,printNextPageHint}from"./chunks/chunk-NEUQZYBL.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{formatTable}from"./chunks/chunk-2RXUQ72I.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-K5YO4UD7.js";import"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"./chunks/chunk-ETV3C2CV.js";import{tokensAfterCommand}from"./chunks/chunk-4CQKN5TW.js";import{getTeams}from"./chunks/chunk-Y6WXTTZS.js";import{addSubcommand,aiGatewayCommand,apiKeysSubcommand,autoRenewSubcommand,budgetsDefaultsListSubcommand,budgetsDefaultsRemoveSubcommand,budgetsDefaultsSetSubcommand,budgetsDefaultsSubcommand,budgetsInspectSubcommand,budgetsListSubcommand,budgetsRemoveSubcommand,budgetsSetSubcommand,budgetsSubcommand,buySubcommand,checkSubcommand,codingAgentsSubcommand,createSubcommand,domainsCommand,getCommandAliases,inspectSubcommand2 as inspectSubcommand,inspectSubcommand3 as inspectSubcommand2,leaderboardAppsSubcommand,leaderboardLabsSubcommand,leaderboardModelsSubcommand,leaderboardProvidersSubcommand,leaderboardSubcommand,listSubcommand2 as listSubcommand,listSubcommand4 as listSubcommand2,modelsEndpointsSubcommand,modelsListSubcommand,modelsSubcommand,moveSubcommand,priceSubcommand,removeSubcommand,removeSubcommand3 as removeSubcommand2,renewSubcommand,rulesAddSubcommand,rulesEditSubcommand,rulesListSubcommand,rulesRemoveSubcommand,rulesSubcommand,searchSubcommand,setupSubcommand,transferInSubcommand,verifySubcommand,virtualModelsCreateSubcommand,virtualModelsEditSubcommand,virtualModelsInspectSubcommand,virtualModelsListSubcommand,virtualModelsRemoveSubcommand,virtualModelsRestoreSubcommand,virtualModelsSubcommand}from"./chunks/chunk-NTUDWWSL.js";import"./chunks/chunk-M73W4XNR.js";import"./chunks/chunk-32AS5X7G.js";import"./chunks/chunk-ZBZPCKTW.js";import{gatewaySubcommand,pluginSubcommand,setupCommand,skillsSubcommand}from"./chunks/chunk-TRZDIAX3.js";import"./chunks/chunk-GHEGWXH2.js";import"./chunks/chunk-GCXUSXB4.js";import"./chunks/chunk-2H4DUZJZ.js";import"./chunks/chunk-ECQKK4JU.js";import"./chunks/chunk-JOXGYP5S.js";import"./chunks/chunk-7ULVGK67.js";import"./chunks/chunk-4BZ3DNGM.js";import"./chunks/chunk-R5ZLTWKB.js";import"./chunks/chunk-T5TOBY4D.js";import"./chunks/chunk-H34SGIVS.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-G3LWP5CH.js";import"./chunks/chunk-QQA2OMXJ.js";import"./chunks/chunk-KV2DYFUG.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-GCPPL24C.js";import{printError}from"./chunks/chunk-BWS3ZOHJ.js";import{help}from"./chunks/chunk-33U57CNE.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-DSNIVABS.js";import{TelemetryClient}from"./chunks/chunk-NAU6URTI.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,outputAgentSuccess,shouldEmitNonInteractiveCommandError,withGlobalFlags}from"./chunks/chunk-32NXYHYC.js";import"./chunks/chunk-FWTBSC7Z.js";import{getLinkedProject,getProjectByNameOrId,getUser,require_pluralize}from"./chunks/chunk-OZPBJWYU.js";import{ALIGNED_LABEL_WIDTH,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-7WY7ASKE.js";import"./chunks/chunk-4NTBYNFR.js";import{parseArguments,parseWithShortFlag}from"./chunks/chunk-CGTD4QFC.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.js";import"./chunks/chunk-LUX4PBJL.js";import"./chunks/chunk-OPORM35X.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-4SAVH3H7.js";import{APIError,DomainAlreadyExists,DomainChargeOutcomeUnknown,DomainExternal,DomainMoveConflict,DomainNotAvailable,DomainNotFound,DomainNotVerified,DomainPaymentError,DomainPermissionDenied,DomainRemovalConflict,InvalidDomain,InvalidMoveDestination,ProjectNotFound,UnexpectedDomainTransferError,UnsupportedTLD,code,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,packageName}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./chunks/chunk-ZS2WS4AM.js";import"./chunks/chunk-5MDNVAE6.js";import"./chunks/chunk-OCR5CRTH.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-YHPPP3SF.js";import"./chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,stripSensitiveAuthArgs}from"./chunks/chunk-YPPDRKVC.js";import{chars_default}from"./chunks/chunk-2BKALEOP.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import"./chunks/chunk-D6REP5QQ.js";import"./chunks/chunk-FBYA6LLM.js";import"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var MAX_PAGE_SIZE=100,MAX_SEARCH_QUERY_CHARS=256;async function listApiKeysPage(client,opts={}){let query=new URLSearchParams({purpose:"ai-gateway"});opts.limit!==void 0&&query.set("limit",String(opts.limit)),opts.next&&query.set("until",opts.next),opts.search&&query.set("search",opts.search);let{apiKeys:apiKeys2,pagination}=await client.fetch(`/v1/api-keys?${query.toString()}`,{method:"GET"});return{items:apiKeys2??[],next:pagination?.next??null}}async function listAllApiKeys(client,opts={}){return fetchAllPages(next=>listApiKeysPage(client,{...opts,limit:MAX_PAGE_SIZE,next}))}async function getApiKey(client,apiKeyId){let{apiKey}=await client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}`,{method:"GET"});return apiKey}async function updateApiKeyQuota(client,apiKeyId,input){return client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}/quota`,{method:"PATCH",body:input})}function describeApiKeyLookupError(identifier,resolved){switch(resolved.error){case"ambiguous":return`Multiple API keys named "${identifier}" (${resolved.count}). Use the key id instead.`;case"incomplete":return`Could not search every API key for "${identifier}": ${resolved.message} Use the key id instead.`;default:return`API key not found: ${identifier}`}}async function findApiKeyByIdOrName(client,identifier){try{let apiKey=await getApiKey(client,identifier);if(apiKey&&apiKey.purpose==="ai-gateway")return{apiKey}}catch{}let search2=identifier.length<=MAX_SEARCH_QUERY_CHARS?identifier:void 0,keys;try{keys=await listAllApiKeys(client,{search:search2})}catch(err){if(err instanceof PaginationError)return{error:"incomplete",message:err.message};throw err}let matches=keys.filter(key=>key.name===identifier);return matches.length===1?{apiKey:matches[0]}:matches.length>1?{error:"ambiguous",count:matches.length}:{error:"not_found"}}async function deleteApiKey(client,apiKeyId){await client.fetch(`/v1/api-keys/${encodeURIComponent(apiKeyId)}`,{method:"DELETE"})}async function createApiKey(client,payload){return await client.fetch("/v1/api-keys",{method:"POST",body:{purpose:"ai-gateway",...payload}})}var AiGatewayApiKeysCreateTelemetryClient=class extends TelemetryClient{trackCliOptionName(name){name&&this.trackCliOption({option:"name",value:this.redactedValue})}trackCliOptionAmount(amount){amount!==void 0&&this.trackCliOption({option:"amount",value:this.redactedValue})}trackCliOptionBudget(budget){budget!==void 0&&this.trackCliOption({option:"budget",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliOptionRefreshPeriod(refreshPeriod){refreshPeriod&&this.trackCliOption({option:"refresh-period",value:refreshPeriod})}trackCliFlagIncludeByok(includeByok){includeByok&&this.trackCliFlag("include-byok")}trackCliOptionAlertThresholds(alertThresholds){alertThresholds&&this.trackCliOption({option:"alert-thresholds",value:alertThresholds})}trackCliOptionExpiration(expiration){expiration&&this.trackCliOption({option:"expiration",value:expiration})}trackCliFlagZdrExempt(zdrExempt){zdrExempt&&this.trackCliFlag("zdr-exempt")}trackCliFlagTokenPass(tokenPass2){tokenPass2&&this.trackCliFlag("token-pass")}trackCliFlagBypassAllSettings(bypassAllSettings){bypassAllSettings&&this.trackCliFlag("bypass-all-settings")}};var VALID_REFRESH_PERIODS=["daily","weekly","monthly","none"];function isValidRefreshPeriod(period){return VALID_REFRESH_PERIODS.includes(period)}var VALID_ALERT_THRESHOLDS=[50,75,100];function parseAlertThresholds(input){let values=[],tokens=input.split(",").map(token=>token.trim()).filter(token=>token.length>0);for(let token of tokens){let num=Number(token);if(!Number.isInteger(num)||!VALID_ALERT_THRESHOLDS.includes(num))return{valid:!1,invalid:token};values.includes(num)||values.push(num)}return{valid:!0,values}}function buildQuota(opts){let effectiveRefresh=opts.refreshPeriod&&opts.refreshPeriod!=="none"?opts.refreshPeriod:void 0,hasAlertThresholds=opts.alertThresholds!==void 0&&opts.alertThresholds.length>0;if(!(opts.budget===void 0&&!effectiveRefresh&&!opts.includeByok&&!hasAlertThresholds))return{...opts.budget!==void 0&&{limitAmount:opts.budget},...effectiveRefresh&&{refreshPeriod:effectiveRefresh},...opts.includeByok&&{includeByokInQuota:!0},...hasAlertThresholds&&{alertThresholds:opts.alertThresholds}}}var EXPIRY_PRESETS=[{label:"7 days",value:"7d"},{label:"30 days",value:"30d"},{label:"60 days",value:"60d"},{label:"90 days",value:"90d"},{label:"1 year",value:"1y"}],DEFAULT_EXPIRY_PRESET="30d",VALID_EXPIRY_VALUES=[...EXPIRY_PRESETS.map(p=>p.value),"none"];function isValidExpiry(value){return VALID_EXPIRY_VALUES.includes(value)}var DAY_MS=864e5;function presetToExpiresAt(value,now=Date.now()){switch(value){case"7d":return now+7*DAY_MS;case"30d":return now+30*DAY_MS;case"60d":return now+60*DAY_MS;case"90d":return now+90*DAY_MS;case"1y":{let date=new Date(now);return date.setFullYear(date.getFullYear()+1),date.getTime()}default:return}}async function create(client,argv){let telemetry=new AiGatewayApiKeysCreateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(createSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts}=parsedArgs,name=opts["--name"],amountFlag=opts["--amount"],budgetFlag=opts["--budget"],limitFlag=opts["--limit"],refreshPeriod=opts["--refresh-period"],includeByok=opts["--include-byok"],alertThresholdsInput=opts["--alert-thresholds"],expiration=opts["--expiration"],zdrExempt=opts["--zdr-exempt"],bypassAll=opts["--bypass-all-settings"],tokenPass2=opts["--token-pass"];if(telemetry.trackCliOptionName(name),telemetry.trackCliOptionAmount(amountFlag),telemetry.trackCliOptionBudget(budgetFlag),telemetry.trackCliOptionLimit(limitFlag),telemetry.trackCliOptionRefreshPeriod(refreshPeriod),telemetry.trackCliFlagIncludeByok(includeByok),telemetry.trackCliOptionAlertThresholds(alertThresholdsInput),telemetry.trackCliOptionExpiration(expiration),telemetry.trackCliFlagZdrExempt(zdrExempt),telemetry.trackCliFlagBypassAllSettings(bypassAll),telemetry.trackCliFlagTokenPass(tokenPass2),tokenPass2&&(zdrExempt||bypassAll)){let message="Cannot combine --token-pass with --zdr-exempt or --bypass-all-settings. Remove the exemption options to create a Token Pass key.";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --token-pass")}]},2),output_manager_default.error(message),2}if(budgetFlag!==void 0&&limitFlag!==void 0){let message="Pass only one of --limit or --budget. (Both are deprecated; use --amount.)";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_BUDGET,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --amount 500")}]},2),output_manager_default.error(message),2}let amount=getRenamedOption(opts,"--amount",budgetFlag!==void 0?"--budget":"--limit");if("error"in amount)return reportRenamedOptionError(client,amount.error);let budget=amount.value;if(budget!==void 0&&budget<1){let message="Budget must be a positive number in dollars (minimum 1).";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_BUDGET,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --amount 500")}]},2),output_manager_default.error(message),2}if(refreshPeriod&&!isValidRefreshPeriod(refreshPeriod)){let message=`Invalid refresh period "${refreshPeriod}". Must be one of: ${VALID_REFRESH_PERIODS.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_REFRESH_PERIOD,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --refresh-period monthly")}]},2),output_manager_default.error(message),2}let alertThresholds;if(alertThresholdsInput!==void 0){let result=parseAlertThresholds(alertThresholdsInput);if(!result.valid){let message=`Invalid alert threshold "${result.invalid}". Must be a comma-separated subset of: ${VALID_ALERT_THRESHOLDS.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ALERT_THRESHOLDS,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --alert-thresholds 50,75,100")}]},2),output_manager_default.error(message),2}alertThresholds=result.values}if(expiration!==void 0&&!isValidExpiry(expiration)){let message=`Invalid expiration "${expiration}". Must be one of: ${VALID_EXPIRY_VALUES.join(", ")}.`;return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_EXPIRATION,message,next:[{command:getCommandNamePlain("ai-gateway api-keys create --expiration 90d")}]},2),output_manager_default.error(message),2}let expiresAt=expiration!==void 0?presetToExpiresAt(expiration):void 0,aiGatewayQuota=buildQuota({budget,refreshPeriod,includeByok,alertThresholds});if(!await client.resolveCurrentTeam()){if(!client.stdin.isTTY)return output_manager_default.error("No team selected. Use `vercel --scope <team-slug> ai-gateway api-keys create` or run `vercel switch` first."),1;let org=await selectOrg(client,"Which team should own this API key?");org.type==="team"&&(client.config.currentTeam=org.id)}let createStamp=stamp_default();output_manager_default.spinner("Creating API key");let metadata={...tokenPass2&&{tokenPass:!0},...zdrExempt&&{zdr:{enableNonZdrModels:!0}},...bypassAll&&{bypassAll:!0}};try{let result=await createApiKey(client,{name,aiGatewayQuota,...expiresAt!==void 0&&{expiresAt},...Object.keys(metadata).length>0&&{metadata}});return output_manager_default.stopSpinner(),client.stdout.write(`${result.apiKeyString}
8
8
  `),output_manager_default.success(`API key ${import_chalk.default.bold(result.apiKey.name)} (${result.apiKey.id}) created ${createStamp()}`),output_manager_default.log(budget!==void 0?`Spend on this key also counts toward any user and team budgets. List them with ${getCommandName("ai-gateway budgets list")}.`:`No key budget set. Spend still counts toward any API key default, user, and team budgets. List them with ${getCommandName("ai-gateway budgets list")}.`),client.isAgent&&output_manager_default.log(`Prefer OIDC over long-lived API keys: code on Vercel can authenticate to AI Gateway with VERCEL_OIDC_TOKEN, and local development can get one with ${getCommandName("link")} and ${getCommandName("env pull")}. Revoke this key with ${getCommandName(`ai-gateway api-keys revoke ${result.apiKey.id} --yes`)} if you don't need it.`),0}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}}var import_chalk2=__toESM(require_source(),1);var import_async_sema=__toESM(require_async_sema(),1);var DIRECTORY_KEY_SORTS=["createdAt:desc","createdAt:asc","lastActiveAt:desc","lastActiveAt:asc","name:asc","name:desc","expiresAt:asc","expiresAt:desc"],DIRECTORY_KEY_STATES=["active","expired","deleted","purged","any"],MAX_DIRECTORY_RESOLVE_IDS=100,FETCH_OPTS={retry:{retries:0},bailOn429:!0},DIRECTORY_KILL_SWITCH="VERCEL_AI_GATEWAY_DIRECTORY";function isDirectoryEnabledByEnv(env=process.env){let value=env[DIRECTORY_KILL_SWITCH]?.trim().toLowerCase();return value!=="0"&&value!=="false"}async function listDirectoryKeysPage(client,opts={}){let query=new URLSearchParams,search2=opts.search?.trim();search2&&query.set("search",search2),opts.createdBy&&query.set("createdBy",opts.createdBy),opts.accessPolicyId&&query.set("accessPolicyId",opts.accessPolicyId),opts.state&&query.set("state",opts.state),opts.sort&&query.set("sort",opts.sort),opts.cursor&&query.set("cursor",opts.cursor),opts.limit!==void 0&&query.set("limit",String(opts.limit));let qs=query.toString(),page=await client.fetch(`/ai-gateway/directory/keys${qs?`?${qs}`:""}`,{method:"GET",...FETCH_OPTS});return{items:page.data??[],next:page.cursor??null}}function chunk(items,size){let chunks=[];for(let i=0;i<items.length;i+=size)chunks.push(items.slice(i,i+size));return chunks}var BATCH_CONCURRENCY=4;async function mapConcurrent(items,fn){let sema=new import_async_sema.default(BATCH_CONCURRENCY);return Promise.all(items.map(async item=>{await sema.acquire();try{return await fn(item)}finally{sema.release()}}))}async function resolveDirectoryIdentities(client,input){let keyChunks=chunk([...new Set(input.keyIds??[])],MAX_DIRECTORY_RESOLVE_IDS),userChunks=chunk([...new Set(input.userIds??[])],MAX_DIRECTORY_RESOLVE_IDS),requests=Math.max(keyChunks.length,userChunks.length),bodies=Array.from({length:requests},(_,i)=>{let body={};return keyChunks[i]?.length&&(body.keyIds=keyChunks[i]),userChunks[i]?.length&&(body.userIds=userChunks[i]),body}),pages=await mapConcurrent(bodies,body=>client.fetch("/ai-gateway/directory/identities/resolve",{method:"POST",body,...FETCH_OPTS})),keys=new Map,users=new Map;return pages.forEach((res,i)=>{for(let key of res.data?.keys??[])keys.set(key.keyId,key);if(Array.isArray(res.data?.users))for(let user of res.data.users)users?.set(user.uid,user);else bodies[i].userIds&&(users=null)}),{keys,users}}async function resolveDirectoryKeyQuotas(client,keyIds){let pages=await mapConcurrent(chunk([...new Set(keyIds)],MAX_DIRECTORY_RESOLVE_IDS),ids=>client.fetch("/ai-gateway/directory/keys/quotas",{method:"POST",body:{keyIds:ids},...FETCH_OPTS})),quotas=new Map;for(let res of pages)for(let quota of res.data?.quotas??[])quotas.set(quota.apiKeyId,quota);return quotas}function isDirectoryUnavailable(err){return isAPIError(err)&&(err.status===429||err.status>=500)}function isDirectoryCursor(cursor2){try{let parsed=JSON.parse(Buffer.from(cursor2,"base64url").toString());return typeof parsed=="object"&&parsed!==null&&parsed.v===1&&typeof parsed.fp=="string"&&Array.isArray(parsed.sa)}catch{return!1}}function toApiKey(key,quota){let apiKey={id:key.keyId,name:key.name,partialKey:key.suffix??"",teamId:key.teamId,purpose:"ai-gateway",projectId:key.projectId??null,expiresAt:key.expiresAt??null,activeAt:key.lastActiveAt??key.createdAt,createdAt:key.createdAt,createdBy:key.createdBy??"",leakedAt:key.leakedAt??null,leakedUrl:null,createdByAppId:key.attribution?.createdByAppId??null};if(quota){let{apiKeyId:_apiKeyId,...rest}=quota;apiKey.quota=rest}return apiKey}async function ensureTeam(client){if(await client.resolveCurrentTeam())return!0;if(client.nonInteractive||client.isAgent||!client.stdin.isTTY)return output_manager_default.error("No team selected. Use `vercel --scope <team-slug> ai-gateway \u2026` or run `vercel switch` first."),!1;let org=await selectOrg(client,"Which team?");return org.type==="team"?(client.config.currentTeam=org.id,!0):(output_manager_default.error("AI Gateway resources are managed per team. Switch to a team scope and try again."),!1)}var AiGatewayApiKeysListTelemetryClient=class extends TelemetryClient{trackCliOptionQuery(query){query&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionSearch(search2){search2&&this.trackCliOption({option:"search",value:this.redactedValue})}trackCliOptionCreator(creator){creator&&this.trackCliOption({option:"creator",value:creator==="me"?"me":this.redactedValue})}trackCliOptionState(state){state&&this.trackCliOption({option:"state",value:state})}trackCliOptionSort(sort){sort&&this.trackCliOption({option:"sort",value:sort})}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 renderResource(client,{asJson,spinnerText,fetch,toJSON,isEmpty,emptyMessage:emptyMessage2,header,renderTable:renderTable2,notFoundMessage,next}){let lsStamp=stamp_default(),json=asJson||client.nonInteractive;client.nonInteractive||output_manager_default.spinner(spinnerText);let data;try{data=await fetch()}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.status===404&&notFoundMessage?notFoundMessage:err.message),1;if(err instanceof PaginationError)return output_manager_default.error(err.message),1;throw err}if(output_manager_default.stopSpinner(),json)return client.stdout.write(`${JSON.stringify(toJSON(data),null,2)}
9
9
  `),0;if(isEmpty(data)){let nextCursor=next?.(data)??null;return nextCursor?(output_manager_default.log("No results on this page."),printNextPageHint(client,nextCursor),0):(output_manager_default.log(emptyMessage2),0)}return output_manager_default.log(`${header(data)} ${lsStamp()}`),client.stdout.write(renderTable2(data)),next&&printNextPageHint(client,next(data)),0}var BUDGET_SCOPE_TYPES=["team","project","user","api-key"];function parseBudgetScope(args,opts={}){let[scopeArg,...rest]=args;if(!scopeArg)return{error:`Expected a scope. Specify ${BUDGET_SCOPE_TYPES.join(" or ")}.`};if(!BUDGET_SCOPE_TYPES.includes(scopeArg))return{error:`Unknown scope "${scopeArg}". Expected one of: ${BUDGET_SCOPE_TYPES.join(", ")}.`};if(scopeArg==="team")return opts.isDefault?{error:"The team scope does not support --default. Set the team budget directly."}:rest.length>0?{error:`The team scope does not take a name (got "${rest[0]}").`}:{scope:{scopeType:"team"}};let[name,...extra]=rest;if(opts.isDefault)return name?{error:`The ${scopeArg} scope takes either a name or --default, not both.`}:{scope:{scopeType:scopeArg,isDefault:!0}};if(!name){let required={project:"a project name or id",user:"a user email, username, or id","api-key":"an API key name or id"}[scopeArg];return{error:`The ${scopeArg} scope requires ${required}. Pass --default for the per-${scopeArg} default budget.`}}return extra.length>0?{error:`Unexpected argument "${extra[0]}".`}:{scope:{scopeType:scopeArg,name}}}var PERIOD_PHRASE={daily:"a day",weekly:"a week",monthly:"a month",none:"total"};function formatBudgetCap(limitAmount,refreshPeriod){return`$${limitAmount} ${PERIOD_PHRASE[refreshPeriod]}`}async function listBudgets(client,scopeType){let query=scopeType?`?scopeType=${scopeType}`:"",{budgets:budgets2}=await client.fetch(`/ai-gateway/budgets/list${query}`,{method:"GET"});return budgets2??[]}async function listBudgetsPage(client,opts){let query=new URLSearchParams;opts.scopeType&&query.set("scopeType",opts.scopeType),query.set("limit",String(opts.limit)),opts.next&&query.set("cursor",opts.next),opts.includeDefaultCovered!==void 0&&query.set("includeDefaultCovered",String(opts.includeDefaultCovered));let{budgets:budgets2,nextCursor,defaultCoveredCounts}=await client.fetch(`/ai-gateway/budgets/list?${query.toString()}`,{method:"GET"});return{items:budgets2??[],next:nextCursor??null,defaultCoveredCounts:defaultCoveredCounts??{}}}async function setBudget(client,input){return client.fetch("/ai-gateway/budgets",{method:"PUT",body:input})}async function removeBudget(client,scopeType,opts={}){let params=new URLSearchParams({scopeType});opts.projectId&&params.set("projectId",opts.projectId),opts.userId&&params.set("userId",opts.userId),await client.fetch(`/ai-gateway/budgets?${params.toString()}`,{method:"DELETE"})}var BUDGET_DEFAULT_SCOPE_TYPES=["project","api-key","user"],BUDGET_DEFAULT_COVERED={project:"Projects","api-key":"API keys",user:"Team members"},BUDGET_DEFAULT_APPLIES_TO={project:"every project without its own budget","api-key":"every API key without its own budget",user:"every team member without their own budget"};function parseBudgetDefaultScope(args){let[scopeArg,...rest]=args;return scopeArg?BUDGET_DEFAULT_SCOPE_TYPES.includes(scopeArg)?rest.length>0?{error:`Unexpected argument "${rest[0]}".`}:{scopeType:scopeArg}:{error:`Unknown scope "${scopeArg}". Expected one of: ${BUDGET_DEFAULT_SCOPE_TYPES.join(", ")}.`}:{error:`Expected a scope. Specify ${BUDGET_DEFAULT_SCOPE_TYPES.join(" or ")}.`}}async function listScopeBudgetDefaults(client){let{defaults}=await client.fetch("/ai-gateway/budgets/defaults/list",{method:"GET"});return defaults??[]}async function upsertScopeBudgetDefault(client,input){return client.fetch("/ai-gateway/budgets/defaults",{method:"PUT",body:input})}async function deleteScopeBudgetDefault(client,scopeType){let params=new URLSearchParams({scopeType});await client.fetch(`/ai-gateway/budgets/defaults?${params.toString()}`,{method:"DELETE"})}var STATE_FLAG_VALUES=DIRECTORY_KEY_STATES.filter(s=>s!=="purged"),SORT_FIELDS=["createdAt","lastActiveAt","name","expiresAt"],DEFAULT_STATE="active",DEFAULT_SORT="lastActiveAt:desc";async function list(client,argv){let telemetry=new AiGatewayApiKeysListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts}=parsedArgs,queryFlag=opts["--query"],searchFlag=opts["--search"],search2=queryFlag??searchFlag,creator=opts["--creator"],stateFlag=opts["--state"],sortFlag=opts["--sort"],limitFlag=opts["--limit"],next=opts["--next"];telemetry.trackCliOptionQuery(queryFlag),telemetry.trackCliOptionSearch(searchFlag),telemetry.trackCliOptionCreator(creator),telemetry.trackCliOptionState(stateFlag),telemetry.trackCliOptionSort(sortFlag),telemetry.trackCliOptionLimit(limitFlag),telemetry.trackCliOptionNext(next),telemetry.trackCliOptionFormat(opts["--format"]),telemetry.trackCliFlagJson(opts["--json"]);let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;if(queryFlag!==void 0&&searchFlag!==void 0&&queryFlag!==searchFlag)return usageError(client,"Pass only one of --query or --search.");if(search2!==void 0&&search2.trim().length===0)return usageError(client,"The --query option requires some text.");if(search2&&search2.length>MAX_SEARCH_QUERY_CHARS)return usageError(client,`The --query option must be at most ${MAX_SEARCH_QUERY_CHARS} characters.`);if(stateFlag!==void 0&&!STATE_FLAG_VALUES.includes(stateFlag))return usageError(client,`The --state option must be one of: ${STATE_FLAG_VALUES.join(", ")}.`);let sort=sortFlag===void 0?void 0:parseSortFlag(sortFlag);if(sortFlag!==void 0&&!sort)return usageError(client,`The --sort option must be one of ${SORT_FIELDS.join(", ")}, optionally followed by :asc or :desc.`);if(creator!==void 0&&creator.trim().length===0)return usageError(client,"The --creator option requires a team member.");let limit;try{limit=parseListLimit(limitFlag)}catch(err){return output_manager_default.error(err.message),1}if(!await ensureTeam(client))return 1;let keyDefault;if(!formatResult.jsonOutput)try{keyDefault=(await listScopeBudgetDefaults(client)).find(d=>d.scopeType==="api-key"&&d.active!==!1)}catch{}let directoryOnly=creator!==void 0||stateFlag!==void 0||sortFlag!==void 0||next!==void 0&&isDirectoryCursor(next),legacyOnly=!isDirectoryEnabledByEnv()||next!==void 0&&!isDirectoryCursor(next);if(directoryOnly&&legacyOnly){let message;return isDirectoryEnabledByEnv()?message="The --next cursor does not belong to this query. Rerun without --next to start from the first page.":next!==void 0&&isDirectoryCursor(next)?message=`The --next cursor came from the AI Gateway key directory, which ${DIRECTORY_KILL_SWITCH} disables in this environment. Rerun without --next to start from the first page.`:message=`The --creator, --state, and --sort options need the AI Gateway key directory, which ${DIRECTORY_KILL_SWITCH} disables in this environment.`,usageError(client,message)}let createdBy;if(creator!==void 0)try{createdBy=await resolveCreator(client,creator.trim())}catch(err){if(err instanceof UnknownCreatorError)return usageError(client,err.message);if(isAPIError(err))return output_manager_default.error(`Could not look up team member "${creator}": ${err.message}`),1;throw err}let legacyPage=async()=>({...await listApiKeysPage(client,{limit,next,search:search2}),metadataKnown:!0}),fetch=async()=>{if(legacyOnly)return legacyPage();try{return await fetchDirectoryPage(client,{search:search2,createdBy,state:stateFlag??DEFAULT_STATE,sort:sort??DEFAULT_SORT,cursor:next,limit})}catch(err){if(!isDirectoryUnavailable(err))throw err;if(output_manager_default.debug(`AI Gateway key directory unavailable: ${err instanceof Error?err.message:String(err)}`),directoryOnly)throw new DirectoryUnavailableError;return legacyPage()}};try{return await renderResource(client,{asJson:formatResult.jsonOutput,spinnerText:"Fetching API keys",fetch,toJSON:page=>({apiKeys:page.items,pagination:{next:page.next}}),isEmpty:page=>page.items.length===0,emptyMessage:emptyMessage({next,search:search2,creator,stateFlag}),header:()=>"API keys",renderTable:page=>printApiKeysTable(page.items,keyDefault,page.metadataKnown),next:page=>page.next})}catch(err){if(err instanceof DirectoryUnavailableError)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message:err.message,next:[{command:getCommandNamePlain("ai-gateway api-keys list")}]},1),output_manager_default.error(err.message),1;throw err}}var DirectoryUnavailableError=class extends Error{constructor(){super("The AI Gateway key directory is temporarily unavailable, so --creator, --state, --sort, and directory cursors cannot be served. Retry shortly, or list without those options."),this.name="DirectoryUnavailableError"}};function usageError(client,message){return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:getCommandNamePlain("ai-gateway api-keys list")}]},2),output_manager_default.error(message),2}function parseSortFlag(value){if(DIRECTORY_KEY_SORTS.includes(value))return value;if(SORT_FIELDS.includes(value))return`${value}:${value==="name"?"asc":"desc"}`}var UnknownCreatorError=class extends Error{constructor(identifier){super(`No team member matches "${identifier}".`),this.name="UnknownCreatorError"}};async function resolveCreator(client,identifier){if(identifier==="me")return(await getUser(client)).id;let member=await getTeamMemberByIdentifier(client,client.config.currentTeam,identifier);if(member)return member.uid;if(identifier.includes("@"))throw new UnknownCreatorError(identifier);return output_manager_default.debug(`No team member matches "${identifier}"; using it as a user id.`),identifier}async function fetchDirectoryPage(client,opts){let page=await listDirectoryKeysPage(client,opts),liveIds=page.items.filter(key=>key.state==="active").map(key=>key.keyId),quotas=new Map;if(liveIds.length>0)try{quotas=await resolveDirectoryKeyQuotas(client,liveIds)}catch(err){output_manager_default.debug(`Skipping AI Gateway key budgets in list output: ${err instanceof Error?err.message:String(err)}`)}return{items:page.items.map(key=>toApiKey(key,quotas.get(key.keyId))),next:page.next,metadataKnown:!1}}function emptyMessage({next,search:search2,creator,stateFlag}){return next?"No more API keys.":search2||creator||stateFlag?"No API keys match these filters.":`No API keys found. Create one with ${getCommandName("ai-gateway api-keys create")}.`}function printApiKeysTable(apiKeys2,keyDefault,metadataKnown){return`${table([["id","name","key","token pass","budget","spend","refresh","created"].map(header=>import_chalk2.default.gray(header)),...apiKeys2.map(apiKey=>[apiKey.id,apiKey.name||import_chalk2.default.gray("\u2013"),apiKey.partialKey?`\u2026${apiKey.partialKey}`:import_chalk2.default.gray("\u2013"),metadataKnown?apiKey.metadata?.tokenPass?"yes":"no":import_chalk2.default.gray("\u2013"),apiKey.quota?`$${apiKey.quota.limitAmount}`:keyDefault?`$${keyDefault.limitAmount} ${import_chalk2.default.gray("(default)")}`:import_chalk2.default.gray("\u2013"),apiKey.quota?`$${apiKey.quota.currentSpend}`:import_chalk2.default.gray("\u2013"),apiKey.quota?.refreshPeriod??keyDefault?.refreshPeriod??import_chalk2.default.gray("\u2013"),apiKey.createdAt?new Date(apiKey.createdAt).toLocaleDateString():import_chalk2.default.gray("\u2013")])],{align:["l","l","l","l","l","l","l","l"],hsep:4}).replace(/^/gm," ")}
10
10