vercel 51.7.0 → 52.0.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 (51) hide show
  1. package/dist/chunks/{add-HLIPDOM3.js → add-32PTAGQE.js} +4 -4
  2. package/dist/chunks/{chunk-QZ3UQIL3.js → chunk-2OPPBD5D.js} +76 -6
  3. package/dist/chunks/{chunk-YDCXNOCS.js → chunk-3Q7JX627.js} +2 -2
  4. package/dist/chunks/{chunk-YKYISUXV.js → chunk-BNSXPMDP.js} +1 -1
  5. package/dist/chunks/{chunk-HYAMHBSF.js → chunk-EG4NYQUS.js} +1 -1
  6. package/dist/chunks/{chunk-IDDYXD6T.js → chunk-FOWUL5QD.js} +1 -1
  7. package/dist/chunks/{chunk-LGSOFQRC.js → chunk-FVWOH3F3.js} +1 -1
  8. package/dist/chunks/{chunk-VNDSVCGB.js → chunk-GJEZXG32.js} +4 -4
  9. package/dist/chunks/{chunk-5QNVUXGF.js → chunk-HUUTUVP5.js} +5 -5
  10. package/dist/chunks/{chunk-6GTUL6VG.js → chunk-I5IBRE7Q.js} +2 -2
  11. package/dist/chunks/{chunk-QLO5NXAS.js → chunk-JJBN66Y6.js} +1 -1
  12. package/dist/chunks/{chunk-QO6J4DC7.js → chunk-K7R6WOLC.js} +1 -1
  13. package/dist/chunks/{chunk-T74PTRRA.js → chunk-LY3PUG7C.js} +3 -3
  14. package/dist/chunks/{chunk-L7AFYPER.js → chunk-OP4YIHHX.js} +1 -1
  15. package/dist/chunks/{chunk-IS75MWZN.js → chunk-PEB65MJA.js} +2 -2
  16. package/dist/chunks/{chunk-BXSWMI6W.js → chunk-QQWE4QMB.js} +1 -1
  17. package/dist/chunks/{chunk-BO7LOGQA.js → chunk-UC4NDDAU.js} +4 -4
  18. package/dist/chunks/{chunk-WKRF7JKF.js → chunk-US5SYA7N.js} +1 -1
  19. package/dist/chunks/{chunk-V766LKN6.js → chunk-V67XYW74.js} +1 -1
  20. package/dist/chunks/{chunk-LOUKPRIS.js → chunk-VPI2ZRPP.js} +30 -6
  21. package/dist/chunks/{chunk-LKIVGPRE.js → chunk-YLGCZTHB.js} +21 -3
  22. package/dist/chunks/{compile-vercel-config-U4OJGTLE.js → compile-vercel-config-RAC75XPY.js} +1 -1
  23. package/dist/chunks/{delete-H2OF5N72.js → delete-VBCRT33S.js} +2 -2
  24. package/dist/chunks/{disable-Z4ENND33.js → disable-4AGI6NFV.js} +2 -2
  25. package/dist/chunks/{discard-UQGHXIL4.js → discard-JUCF555L.js} +2 -2
  26. package/dist/chunks/{edit-UFYK3Z3T.js → edit-NNTNLAVV.js} +3 -3
  27. package/dist/chunks/{enable-2MEB4O5O.js → enable-DCCSTYJV.js} +2 -2
  28. package/dist/chunks/{export-T5VEXLYZ.js → export-2VCMSLPY.js} +2 -2
  29. package/dist/chunks/{inspect-7CDEJF2U.js → inspect-TGMNTP57.js} +3 -3
  30. package/dist/chunks/{list-LTDGGY5C.js → list-2EQRO64T.js} +2 -2
  31. package/dist/chunks/{list-MKMRMDWW.js → list-JQLSGKZN.js} +3 -3
  32. package/dist/chunks/{ls-GRDKWPVP.js → ls-XCMOFSVP.js} +4 -4
  33. package/dist/chunks/{publish-SMAXMKKV.js → publish-JY65X2KM.js} +2 -2
  34. package/dist/chunks/{query-WGX6PLTN.js → query-ID2PPUU6.js} +2 -2
  35. package/dist/chunks/{reorder-SQ52RGDY.js → reorder-HYBSLO2T.js} +2 -2
  36. package/dist/chunks/{restore-P6RHBBEG.js → restore-33F7XKHU.js} +2 -2
  37. package/dist/chunks/{rm-EDOGYDVM.js → rm-D4MBLVAI.js} +4 -4
  38. package/dist/chunks/{rule-inspect-GW54LGXF.js → rule-inspect-ZQQK2DV3.js} +4 -4
  39. package/dist/chunks/{rules-MCUCN322.js → rules-R2BZLO6I.js} +6 -6
  40. package/dist/chunks/{schema-CZ7B2GTS.js → schema-3G43CXHB.js} +2 -2
  41. package/dist/chunks/{update-QHI4MJ6N.js → update-MI26ZSNY.js} +4 -4
  42. package/dist/commands/build/index.js +9 -9
  43. package/dist/commands/deploy/index.js +10 -10
  44. package/dist/commands/dev/index.js +8 -8
  45. package/dist/commands/env/index.js +215 -23
  46. package/dist/commands/link/index.js +6 -6
  47. package/dist/commands/list/index.js +3 -3
  48. package/dist/commands-bulk.js +274 -89
  49. package/dist/index.js +9 -9
  50. package/dist/version.mjs +1 -1
  51. package/package.json +17 -17
@@ -28,7 +28,7 @@ import {
28
28
  runInteractiveEditLoop,
29
29
  stripQuotes,
30
30
  validateActionFlags
31
- } from "./chunks/chunk-QLO5NXAS.js";
31
+ } from "./chunks/chunk-JJBN66Y6.js";
32
32
  import {
33
33
  getRouteVersions
34
34
  } from "./chunks/chunk-AHU7WNL2.js";
@@ -45,7 +45,7 @@ import {
45
45
  parsePosition,
46
46
  parseSubcommandArgs,
47
47
  withGlobalFlags
48
- } from "./chunks/chunk-YKYISUXV.js";
48
+ } from "./chunks/chunk-BNSXPMDP.js";
49
49
  import {
50
50
  indent_default
51
51
  } from "./chunks/chunk-A3NYPUKZ.js";
@@ -59,11 +59,11 @@ import {
59
59
  resolveOpenApiTagForProjectsCli,
60
60
  resolveOpenApiTagForTeamsCli,
61
61
  tryOpenApiFallback
62
- } from "./chunks/chunk-VNDSVCGB.js";
62
+ } from "./chunks/chunk-GJEZXG32.js";
63
63
  import {
64
64
  getUpdateCommand,
65
65
  isGlobal
66
- } from "./chunks/chunk-WKRF7JKF.js";
66
+ } from "./chunks/chunk-US5SYA7N.js";
67
67
  import {
68
68
  Now,
69
69
  collectContactInformation,
@@ -85,7 +85,7 @@ import {
85
85
  require_format,
86
86
  require_jsonlines,
87
87
  setupDomain
88
- } from "./chunks/chunk-5QNVUXGF.js";
88
+ } from "./chunks/chunk-HUUTUVP5.js";
89
89
  import {
90
90
  processRevocationResponse,
91
91
  readLocalConfig,
@@ -94,7 +94,7 @@ import {
94
94
  sleep,
95
95
  writeToAuthConfigFile,
96
96
  writeToConfigFile
97
- } from "./chunks/chunk-T74PTRRA.js";
97
+ } from "./chunks/chunk-LY3PUG7C.js";
98
98
  import "./chunks/chunk-V5P25P7F.js";
99
99
  import {
100
100
  getCustomEnvironments,
@@ -120,11 +120,11 @@ import {
120
120
  } from "./chunks/chunk-N45K6NXC.js";
121
121
  import {
122
122
  getScope
123
- } from "./chunks/chunk-V766LKN6.js";
123
+ } from "./chunks/chunk-V67XYW74.js";
124
124
  import {
125
125
  formatEnvironment,
126
126
  validateLsArgs
127
- } from "./chunks/chunk-BXSWMI6W.js";
127
+ } from "./chunks/chunk-QQWE4QMB.js";
128
128
  import {
129
129
  validateJsonOutput
130
130
  } from "./chunks/chunk-XPKWKPWA.js";
@@ -351,6 +351,7 @@ import {
351
351
  teamsCommand,
352
352
  telemetryCommand,
353
353
  tokenSubcommand,
354
+ tokenSubcommand2,
354
355
  tokensCommand,
355
356
  tokensSubcommand,
356
357
  transferInSubcommand,
@@ -364,7 +365,7 @@ import {
364
365
  webAnalyticsSubcommand,
365
366
  webhooksCommand,
366
367
  whoamiCommand
367
- } from "./chunks/chunk-QZ3UQIL3.js";
368
+ } from "./chunks/chunk-2OPPBD5D.js";
368
369
  import {
369
370
  addSubcommand as addSubcommand9,
370
371
  deleteSubcommand,
@@ -406,22 +407,22 @@ import {
406
407
  import "./chunks/chunk-VGWGLBUC.js";
407
408
  import {
408
409
  main
409
- } from "./chunks/chunk-BO7LOGQA.js";
410
- import "./chunks/chunk-L7AFYPER.js";
410
+ } from "./chunks/chunk-UC4NDDAU.js";
411
+ import "./chunks/chunk-OP4YIHHX.js";
411
412
  import {
412
413
  ua_default
413
414
  } from "./chunks/chunk-4PQA6H63.js";
414
415
  import {
415
416
  require_execa
416
- } from "./chunks/chunk-HYAMHBSF.js";
417
+ } from "./chunks/chunk-EG4NYQUS.js";
417
418
  import {
418
419
  ensureLink
419
- } from "./chunks/chunk-6GTUL6VG.js";
420
- import "./chunks/chunk-IS75MWZN.js";
421
- import "./chunks/chunk-LGSOFQRC.js";
420
+ } from "./chunks/chunk-I5IBRE7Q.js";
421
+ import "./chunks/chunk-PEB65MJA.js";
422
+ import "./chunks/chunk-FVWOH3F3.js";
422
423
  import {
423
424
  autoInstallVercelPlugin
424
- } from "./chunks/chunk-QO6J4DC7.js";
425
+ } from "./chunks/chunk-K7R6WOLC.js";
425
426
  import {
426
427
  AGENT_ACTION,
427
428
  AGENT_REASON,
@@ -472,7 +473,7 @@ import {
472
473
  resolveProjectCwd,
473
474
  selectAndParseRemoteUrl,
474
475
  selectOrg
475
- } from "./chunks/chunk-LOUKPRIS.js";
476
+ } from "./chunks/chunk-VPI2ZRPP.js";
476
477
  import {
477
478
  TelemetryClient
478
479
  } from "./chunks/chunk-U3WLEFHU.js";
@@ -854,7 +855,7 @@ async function activity(client) {
854
855
  return 0;
855
856
  }
856
857
  telemetry2.trackCliSubcommandLs(subcommandOriginal);
857
- const listFn = (await import("./chunks/list-LTDGGY5C.js")).default;
858
+ const listFn = (await import("./chunks/list-2EQRO64T.js")).default;
858
859
  return listFn(client, telemetry2);
859
860
  }
860
861
  }
@@ -1331,17 +1332,17 @@ async function alerts(client) {
1331
1332
  switch (subcommand) {
1332
1333
  case "inspect": {
1333
1334
  telemetry2.trackCliSubcommandInspect(subcommandOriginal);
1334
- const inspectFn = (await import("./chunks/inspect-7CDEJF2U.js")).default;
1335
+ const inspectFn = (await import("./chunks/inspect-TGMNTP57.js")).default;
1335
1336
  return inspectFn(client, args);
1336
1337
  }
1337
1338
  case "rules": {
1338
1339
  telemetry2.trackCliSubcommandRules(args[0] ?? "ls");
1339
- const rulesFn = (await import("./chunks/rules-MCUCN322.js")).default;
1340
+ const rulesFn = (await import("./chunks/rules-R2BZLO6I.js")).default;
1340
1341
  return rulesFn(client, args);
1341
1342
  }
1342
1343
  default: {
1343
1344
  telemetry2.trackCliSubcommandLs(subcommandOriginal);
1344
- const listFn = (await import("./chunks/list-MKMRMDWW.js")).default;
1345
+ const listFn = (await import("./chunks/list-JQLSGKZN.js")).default;
1345
1346
  return listFn(client, telemetry2);
1346
1347
  }
1347
1348
  }
@@ -2377,8 +2378,8 @@ var BisectTelemetryClient = class extends TelemetryClient {
2377
2378
  });
2378
2379
  }
2379
2380
  }
2380
- trackCliFlagOpen(open11) {
2381
- if (open11) {
2381
+ trackCliFlagOpen(open12) {
2382
+ if (open12) {
2382
2383
  this.trackCliFlag("open");
2383
2384
  }
2384
2385
  }
@@ -4370,7 +4371,7 @@ async function main3(client) {
4370
4371
  help(command, { parent: blobCommand, columns: client.stderr.columns })
4371
4372
  );
4372
4373
  }
4373
- const token = await getBlobRWToken(client, client.argv);
4374
+ const token2 = await getBlobRWToken(client, client.argv);
4374
4375
  telemetry2.trackCliOptionRwToken();
4375
4376
  switch (subcommand) {
4376
4377
  case "list":
@@ -4380,11 +4381,11 @@ async function main3(client) {
4380
4381
  return 2;
4381
4382
  }
4382
4383
  telemetry2.trackCliSubcommandList(subcommandOriginal);
4383
- if (!token.success) {
4384
- printError(token.error);
4384
+ if (!token2.success) {
4385
+ printError(token2.error);
4385
4386
  return 1;
4386
4387
  }
4387
- return list3(client, args, token.token);
4388
+ return list3(client, args, token2.token);
4388
4389
  case "put":
4389
4390
  if (needHelp) {
4390
4391
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4392,11 +4393,11 @@ async function main3(client) {
4392
4393
  return 2;
4393
4394
  }
4394
4395
  telemetry2.trackCliSubcommandPut(subcommandOriginal);
4395
- if (!token.success) {
4396
- printError(token.error);
4396
+ if (!token2.success) {
4397
+ printError(token2.error);
4397
4398
  return 1;
4398
4399
  }
4399
- return put2(client, args, token.token);
4400
+ return put2(client, args, token2.token);
4400
4401
  case "get":
4401
4402
  if (needHelp) {
4402
4403
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4404,11 +4405,11 @@ async function main3(client) {
4404
4405
  return 2;
4405
4406
  }
4406
4407
  telemetry2.trackCliSubcommandGet(subcommandOriginal);
4407
- if (!token.success) {
4408
- printError(token.error);
4408
+ if (!token2.success) {
4409
+ printError(token2.error);
4409
4410
  return 1;
4410
4411
  }
4411
- return get2(client, args, token.token);
4412
+ return get2(client, args, token2.token);
4412
4413
  case "del":
4413
4414
  if (needHelp) {
4414
4415
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4416,11 +4417,11 @@ async function main3(client) {
4416
4417
  return 2;
4417
4418
  }
4418
4419
  telemetry2.trackCliSubcommandDel(subcommandOriginal);
4419
- if (!token.success) {
4420
- printError(token.error);
4420
+ if (!token2.success) {
4421
+ printError(token2.error);
4421
4422
  return 1;
4422
4423
  }
4423
- return del2(client, args, token.token);
4424
+ return del2(client, args, token2.token);
4424
4425
  case "copy":
4425
4426
  if (needHelp) {
4426
4427
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4428,11 +4429,11 @@ async function main3(client) {
4428
4429
  return 2;
4429
4430
  }
4430
4431
  telemetry2.trackCliSubcommandCopy(subcommandOriginal);
4431
- if (!token.success) {
4432
- printError(token.error);
4432
+ if (!token2.success) {
4433
+ printError(token2.error);
4433
4434
  return 1;
4434
4435
  }
4435
- return copy2(client, args, token.token);
4436
+ return copy2(client, args, token2.token);
4436
4437
  case "create-store":
4437
4438
  if (needHelp) {
4438
4439
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4448,7 +4449,7 @@ async function main3(client) {
4448
4449
  return 2;
4449
4450
  }
4450
4451
  telemetry2.trackCliSubcommandDeleteStore(subcommandOriginal);
4451
- return removeStore(client, args, token);
4452
+ return removeStore(client, args, token2);
4452
4453
  case "get-store":
4453
4454
  if (needHelp) {
4454
4455
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4456,7 +4457,7 @@ async function main3(client) {
4456
4457
  return 2;
4457
4458
  }
4458
4459
  telemetry2.trackCliSubcommandGetStore(subcommandOriginal);
4459
- return getStore(client, args, token);
4460
+ return getStore(client, args, token2);
4460
4461
  case "list-stores":
4461
4462
  if (needHelp) {
4462
4463
  telemetry2.trackCliFlagHelp("blob", subcommandOriginal);
@@ -4472,11 +4473,11 @@ async function main3(client) {
4472
4473
  return 2;
4473
4474
  }
4474
4475
  telemetry2.trackCliSubcommandEmptyStore(subcommandOriginal);
4475
- if (!token.success) {
4476
- printError(token.error);
4476
+ if (!token2.success) {
4477
+ printError(token2.error);
4477
4478
  return 1;
4478
4479
  }
4479
- return emptyStore(client, args, token.token, token);
4480
+ return emptyStore(client, args, token2.token, token2);
4480
4481
  default:
4481
4482
  output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG6));
4482
4483
  output_manager_default.print(help(blobCommand, { columns: client.stderr.columns }));
@@ -5716,6 +5717,12 @@ var ConnexTelemetryClient = class extends TelemetryClient {
5716
5717
  value: actual
5717
5718
  });
5718
5719
  }
5720
+ trackCliSubcommandToken(actual) {
5721
+ this.trackCliSubcommand({
5722
+ subcommand: "token",
5723
+ value: actual
5724
+ });
5725
+ }
5719
5726
  trackCliOptionLimit(v) {
5720
5727
  if (v !== void 0) {
5721
5728
  this.trackCliOption({
@@ -5758,11 +5765,11 @@ var POLL_INTERVAL_MS = 2e3;
5758
5765
  var MAX_POLL_DURATION_MS = 30 * 60 * 1e3;
5759
5766
  var MAX_EARLY_404_COUNT = 3;
5760
5767
  function generateRequestCode() {
5761
- const original = randomBytes(37).toString("base64url");
5762
- const hash = createHash("sha256").update(original).digest("base64url");
5763
- return { original, hash };
5768
+ const verifier = randomBytes(37).toString("base64url");
5769
+ const requestCode = createHash("sha256").update(verifier).digest("base64url");
5770
+ return { verifier, requestCode };
5764
5771
  }
5765
- async function awaitConnexResult(client, originalCode) {
5772
+ async function awaitConnexResult(client, verifier) {
5766
5773
  const deadline = Date.now() + MAX_POLL_DURATION_MS;
5767
5774
  let early404Count = 0;
5768
5775
  let lastProgress;
@@ -5770,7 +5777,7 @@ async function awaitConnexResult(client, originalCode) {
5770
5777
  await sleep(POLL_INTERVAL_MS);
5771
5778
  try {
5772
5779
  const result = await client.fetch(
5773
- `/v1/connex/result/${encodeURIComponent(originalCode)}`
5780
+ `/v1/connex/result/${encodeURIComponent(verifier)}`
5774
5781
  );
5775
5782
  if (result.status === "success" && result.data) {
5776
5783
  return result.data;
@@ -5843,12 +5850,12 @@ async function create2(client, args, flags) {
5843
5850
  validate: (val) => val.trim().length > 0 || "Name cannot be empty"
5844
5851
  });
5845
5852
  }
5846
- const { original, hash } = generateRequestCode();
5853
+ const { verifier, requestCode } = generateRequestCode();
5847
5854
  const link = await getProjectLink(client, client.cwd);
5848
5855
  const body = {
5849
5856
  service: serviceType,
5850
5857
  name,
5851
- request_code: hash
5858
+ request_code: requestCode
5852
5859
  };
5853
5860
  if (link?.projectId) {
5854
5861
  body.projectId = link.projectId;
@@ -5887,7 +5894,7 @@ ${browserUrl}`);
5887
5894
  (err) => output_manager_default.debug(`Failed to open browser: ${err}`)
5888
5895
  );
5889
5896
  output_manager_default.spinner("Waiting for you to complete setup in the browser...");
5890
- const resultFromBrowser = await awaitConnexResult(client, original);
5897
+ const resultFromBrowser = await awaitConnexResult(client, verifier);
5891
5898
  output_manager_default.stopSpinner();
5892
5899
  if (resultFromBrowser && "clientId" in resultFromBrowser && typeof resultFromBrowser.clientId === "string") {
5893
5900
  const clientId = resultFromBrowser.clientId;
@@ -6019,10 +6026,177 @@ async function list5(client, flags) {
6019
6026
  return 0;
6020
6027
  }
6021
6028
 
6029
+ // src/commands/connex/token.ts
6030
+ var import_open4 = __toESM(require_open(), 1);
6031
+ async function token(client, args, flags) {
6032
+ const formatResult = validateJsonOutput(flags);
6033
+ if (!formatResult.valid) {
6034
+ output_manager_default.error(formatResult.error);
6035
+ return 1;
6036
+ }
6037
+ const asJson = formatResult.jsonOutput;
6038
+ const clientId = args[0];
6039
+ if (!clientId) {
6040
+ output_manager_default.error("Missing client ID or UID. Usage: vercel connex token <id>");
6041
+ return 1;
6042
+ }
6043
+ const subject = flags["--subject"];
6044
+ if (subject && subject !== "app" && subject !== "user") {
6045
+ output_manager_default.error('Invalid --subject value. Must be "app" or "user".');
6046
+ return 1;
6047
+ }
6048
+ await selectConnexTeam(client, "Select the team for this token request");
6049
+ const body = {};
6050
+ if (subject === "app") {
6051
+ body.subject = { type: "app" };
6052
+ } else if (subject === "user") {
6053
+ body.subject = { type: "user", id: client.authConfig.userId };
6054
+ }
6055
+ if (flags["--installation-id"]) {
6056
+ body.installationId = flags["--installation-id"];
6057
+ }
6058
+ if (flags["--scopes"]) {
6059
+ body.scopes = parseScopes(flags["--scopes"]);
6060
+ }
6061
+ output_manager_default.spinner("Fetching token...");
6062
+ const result = await fetchToken(client, clientId, body);
6063
+ output_manager_default.stopSpinner();
6064
+ if (result.ok) {
6065
+ return printTokenResult(client, result.data, asJson);
6066
+ }
6067
+ const errorCode = result.errorCode;
6068
+ const errorMessage = result.errorMessage ?? "Failed to get token";
6069
+ if (errorCode === "not_found") {
6070
+ output_manager_default.error("Client not found or Connex is not enabled for this team.");
6071
+ return 1;
6072
+ }
6073
+ if (errorCode === "unresolved_token") {
6074
+ output_manager_default.error(
6075
+ `${errorMessage} This client does not support getting a token for the requested subject.`
6076
+ );
6077
+ return 1;
6078
+ }
6079
+ if (!isActionable(errorCode)) {
6080
+ output_manager_default.error(errorMessage);
6081
+ return 1;
6082
+ }
6083
+ const teamId = client.config.currentTeam;
6084
+ if (!teamId) {
6085
+ output_manager_default.error(
6086
+ `${errorMessage} Unable to build recovery URL: no team resolved.`
6087
+ );
6088
+ return 1;
6089
+ }
6090
+ const actionLabel = errorCode === "user_authorization_required" ? "authorization" : "installation";
6091
+ const attemptRecovery = !client.nonInteractive && Boolean(client.stdin.isTTY && client.stdout.isTTY);
6092
+ if (!attemptRecovery) {
6093
+ const { requestCode: requestCode2 } = generateRequestCode();
6094
+ const actionUrl2 = buildActionUrl(errorCode, clientId, teamId, requestCode2);
6095
+ output_manager_default.error(errorMessage);
6096
+ output_manager_default.log(`To ${actionLabel}, open: ${actionUrl2}`);
6097
+ output_manager_default.log(
6098
+ `Or re-run \`vercel connex token ${clientId}\` in an interactive terminal.`
6099
+ );
6100
+ return 1;
6101
+ }
6102
+ output_manager_default.error(errorMessage);
6103
+ if (!flags["--yes"]) {
6104
+ const confirmed = await client.input.confirm(
6105
+ `Open browser to ${actionLabel}?`,
6106
+ true
6107
+ );
6108
+ if (!confirmed) {
6109
+ return 0;
6110
+ }
6111
+ }
6112
+ const { verifier, requestCode } = generateRequestCode();
6113
+ const actionUrl = buildActionUrl(errorCode, clientId, teamId, requestCode);
6114
+ output_manager_default.log(`Opening browser for ${actionLabel}...`);
6115
+ output_manager_default.log(`If the browser doesn't open, visit:
6116
+ ${actionUrl}`);
6117
+ (0, import_open4.default)(actionUrl).catch(
6118
+ (err) => output_manager_default.debug(`Failed to open browser: ${err}`)
6119
+ );
6120
+ output_manager_default.spinner(`Waiting for ${actionLabel} to complete in the browser...`);
6121
+ const pollData = await awaitConnexResult(client, verifier);
6122
+ output_manager_default.stopSpinner();
6123
+ if (!pollData) {
6124
+ return 1;
6125
+ }
6126
+ const retryBody = { ...body };
6127
+ if (pollData.installationId && !retryBody.installationId) {
6128
+ retryBody.installationId = pollData.installationId;
6129
+ }
6130
+ output_manager_default.spinner("Fetching token...");
6131
+ const retryResult = await fetchToken(client, clientId, retryBody);
6132
+ output_manager_default.stopSpinner();
6133
+ if (retryResult.ok) {
6134
+ return printTokenResult(client, retryResult.data, asJson);
6135
+ }
6136
+ output_manager_default.error(
6137
+ retryResult.errorMessage ?? `Failed to get token after ${actionLabel}`
6138
+ );
6139
+ return 1;
6140
+ }
6141
+ function parseScopes(raw) {
6142
+ return raw.split(/[\s,]+/).map((s) => s.trim()).filter(Boolean);
6143
+ }
6144
+ function isActionable(code2) {
6145
+ return code2 === "user_authorization_required" || code2 === "client_installation_required";
6146
+ }
6147
+ function buildActionUrl(code2, clientId, teamId, requestCode) {
6148
+ const path3 = code2 === "user_authorization_required" ? "authorize" : "install";
6149
+ const params = new URLSearchParams({
6150
+ teamId,
6151
+ request_code: requestCode
6152
+ });
6153
+ return `https://vercel.com/api/v1/connex/${path3}/${encodeURIComponent(clientId)}?${params.toString()}`;
6154
+ }
6155
+ function printTokenResult(client, data, asJson) {
6156
+ if (asJson) {
6157
+ client.stdout.write(`${JSON.stringify(data, null, 2)}
6158
+ `);
6159
+ } else {
6160
+ client.stdout.write(`${data.token}
6161
+ `);
6162
+ }
6163
+ return 0;
6164
+ }
6165
+ async function fetchToken(client, clientId, body) {
6166
+ try {
6167
+ const data = await client.fetch(
6168
+ `/v1/connex/token/${encodeURIComponent(clientId)}`,
6169
+ {
6170
+ method: "POST",
6171
+ body: JSON.stringify(body),
6172
+ headers: { "Content-Type": "application/json" }
6173
+ }
6174
+ );
6175
+ return { ok: true, data };
6176
+ } catch (err) {
6177
+ const serverError = extractApiError(err);
6178
+ return {
6179
+ ok: false,
6180
+ errorCode: serverError.code,
6181
+ errorMessage: serverError.message
6182
+ };
6183
+ }
6184
+ }
6185
+ function extractApiError(err) {
6186
+ if (typeof err === "object" && err !== null) {
6187
+ const errObj = err;
6188
+ const code2 = typeof errObj.code === "string" ? errObj.code : void 0;
6189
+ const message = typeof errObj.serverMessage === "string" ? errObj.serverMessage : typeof errObj.message === "string" ? errObj.message : "Unknown error";
6190
+ return { code: code2, message };
6191
+ }
6192
+ return { message: "Unknown error" };
6193
+ }
6194
+
6022
6195
  // src/commands/connex/index.ts
6023
6196
  var COMMAND_CONFIG9 = {
6024
6197
  create: getCommandAliases(createSubcommand2),
6025
- list: getCommandAliases(listSubcommand4)
6198
+ list: getCommandAliases(listSubcommand4),
6199
+ token: getCommandAliases(tokenSubcommand)
6026
6200
  };
6027
6201
  async function connex(client) {
6028
6202
  const telemetry2 = new ConnexTelemetryClient({
@@ -6089,6 +6263,17 @@ async function connex(client) {
6089
6263
  telemetry2.trackCliOptionFormat(listParsedArgs.flags["--format"]);
6090
6264
  return await list5(client, listParsedArgs.flags);
6091
6265
  }
6266
+ case "token": {
6267
+ if (needHelp) {
6268
+ telemetry2.trackCliFlagHelp("connex", subcommandOriginal);
6269
+ printHelp(tokenSubcommand);
6270
+ return 0;
6271
+ }
6272
+ telemetry2.trackCliSubcommandToken(subcommandOriginal);
6273
+ const tokenFlagsSpec = getFlagsSpecification(tokenSubcommand.options);
6274
+ const tokenParsedArgs = parseArguments(subArgs, tokenFlagsSpec);
6275
+ return await token(client, tokenParsedArgs.args, tokenParsedArgs.flags);
6276
+ }
6092
6277
  default: {
6093
6278
  const validSubcommands = Object.keys(COMMAND_CONFIG9).join(" | ");
6094
6279
  const missingSubcommand = subArgs.length === 0;
@@ -7807,15 +7992,15 @@ function getAutomationBypassToken(protectionBypass) {
7807
7992
  if (!protectionBypass) {
7808
7993
  throw new Error("No protection bypass tokens found");
7809
7994
  }
7810
- const token = Object.keys(protectionBypass).find(
7995
+ const token2 = Object.keys(protectionBypass).find(
7811
7996
  (key) => protectionBypass[key].scope === "automation-bypass"
7812
7997
  );
7813
- if (!token) {
7998
+ if (!token2) {
7814
7999
  throw new Error(
7815
8000
  "No automation bypass token found in protection bypass settings"
7816
8001
  );
7817
8002
  }
7818
- return token;
8003
+ return token2;
7819
8004
  }
7820
8005
  async function getOrCreateDeploymentProtectionToken(client, { project, org }) {
7821
8006
  if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) {
@@ -7831,12 +8016,12 @@ async function getOrCreateDeploymentProtectionToken(client, { project, org }) {
7831
8016
  return protectionBypass;
7832
8017
  }
7833
8018
  }
7834
- const token = await createDeploymentProtectionToken(
8019
+ const token2 = await createDeploymentProtectionToken(
7835
8020
  client,
7836
8021
  project.id,
7837
8022
  org.id
7838
8023
  );
7839
- return token;
8024
+ return token2;
7840
8025
  }
7841
8026
 
7842
8027
  // src/commands/curl/deployment-url.ts
@@ -20660,7 +20845,7 @@ function isValidJsonVariantValue(value) {
20660
20845
  }
20661
20846
 
20662
20847
  // src/commands/flags/open.ts
20663
- var import_open4 = __toESM(require_open(), 1);
20848
+ var import_open5 = __toESM(require_open(), 1);
20664
20849
 
20665
20850
  // src/util/telemetry/commands/flags/open.ts
20666
20851
  var FlagsOpenTelemetryClient = class extends TelemetryClient {
@@ -20722,7 +20907,7 @@ async function openFlag(client, argv) {
20722
20907
  if (client.stdout.isTTY) {
20723
20908
  output_manager_default.log(`Opening ${label} in your browser...`);
20724
20909
  output_manager_default.log(`Visit this URL if the browser does not open: ${url}`);
20725
- void (0, import_open4.default)(url).catch(() => void 0);
20910
+ void (0, import_open5.default)(url).catch(() => void 0);
20726
20911
  } else {
20727
20912
  client.stdout.write(`${url}
20728
20913
  `);
@@ -23296,7 +23481,7 @@ async function handleEncrypt(client, args, flags) {
23296
23481
  return 1;
23297
23482
  }
23298
23483
  }
23299
- async function handleDecrypt(client, token) {
23484
+ async function handleDecrypt(client, token2) {
23300
23485
  const secret = resolveSecret(client);
23301
23486
  if (!secret) {
23302
23487
  output_manager_default.error(
@@ -23305,7 +23490,7 @@ async function handleDecrypt(client, token) {
23305
23490
  return 1;
23306
23491
  }
23307
23492
  try {
23308
- const overrides = await decryptOverrides(token, secret);
23493
+ const overrides = await decryptOverrides(token2, secret);
23309
23494
  if (overrides === void 0) {
23310
23495
  output_manager_default.error("Invalid token: not a valid flag overrides token.");
23311
23496
  return 1;
@@ -24942,7 +25127,7 @@ function exitCode(state) {
24942
25127
  // src/commands/integration/add-auto-provision.ts
24943
25128
  var import_chalk115 = __toESM(require_source(), 1);
24944
25129
  var import_error_utils10 = __toESM(require_dist(), 1);
24945
- var import_open8 = __toESM(require_open(), 1);
25130
+ var import_open9 = __toESM(require_open(), 1);
24946
25131
 
24947
25132
  // src/util/integration/auto-provision-resource.ts
24948
25133
  function isAutoProvisionFallback(error) {
@@ -25132,7 +25317,7 @@ async function fetchInstallations(client, integration) {
25132
25317
  }
25133
25318
 
25134
25319
  // src/util/integration/accept-terms-via-browser.ts
25135
- var import_open7 = __toESM(require_open(), 1);
25320
+ var import_open8 = __toESM(require_open(), 1);
25136
25321
 
25137
25322
  // src/util/integration/prompt-for-terms.ts
25138
25323
  var MARKETPLACE_ADDENDUM_URL = "https://vercel.com/legal/integration-marketplace-end-users-addendum";
@@ -25211,7 +25396,7 @@ async function acceptTermsViaBrowser(client, integration, teamId, teamSlug, time
25211
25396
  "Opening browser for terms acceptance. Accept the terms to continue..."
25212
25397
  );
25213
25398
  output_manager_default.log(`Visit this URL if the browser does not open: ${url.href}`);
25214
- (0, import_open7.default)(url.href).catch(
25399
+ (0, import_open8.default)(url.href).catch(
25215
25400
  (err) => output_manager_default.debug(`Failed to open browser: ${err}`)
25216
25401
  );
25217
25402
  if (shouldEmitNonInteractiveCommandError(client)) {
@@ -26248,7 +26433,7 @@ Re-run with --installation-id to select one, e.g.:
26248
26433
  url.searchParams.set("environment", options.environments.join(","));
26249
26434
  }
26250
26435
  output_manager_default.debug(`Opening URL: ${url.href}`);
26251
- (0, import_open8.default)(url.href).catch(
26436
+ (0, import_open9.default)(url.href).catch(
26252
26437
  (err) => output_manager_default.debug(`Failed to open browser: ${err}`)
26253
26438
  );
26254
26439
  return 1;
@@ -27293,7 +27478,7 @@ function integrationLink(integration, team) {
27293
27478
 
27294
27479
  // src/commands/integration/open-integration.ts
27295
27480
  var import_chalk121 = __toESM(require_source(), 1);
27296
- var import_open9 = __toESM(require_open(), 1);
27481
+ var import_open10 = __toESM(require_open(), 1);
27297
27482
 
27298
27483
  // src/util/telemetry/commands/integration/open.ts
27299
27484
  var IntegrationOpenTelemetryClient = class extends TelemetryClient {
@@ -27413,7 +27598,7 @@ function outputLink(client, link, json, name, isResource) {
27413
27598
  } else if (client.stdout.isTTY) {
27414
27599
  const label = isResource ? `Opening the ${import_chalk121.default.bold(name)} resource dashboard...` : `Opening the ${import_chalk121.default.bold(name)} dashboard...`;
27415
27600
  output_manager_default.print(label);
27416
- (0, import_open9.default)(link);
27601
+ (0, import_open10.default)(link);
27417
27602
  } else {
27418
27603
  client.stdout.write(`${link}
27419
27604
  `);
@@ -31532,7 +31717,7 @@ async function metrics(client) {
31532
31717
  return 0;
31533
31718
  }
31534
31719
  telemetry2.trackCliSubcommandSchema(subcommandOriginal);
31535
- const schemaFn = (await import("./chunks/schema-CZ7B2GTS.js")).default;
31720
+ const schemaFn = (await import("./chunks/schema-3G43CXHB.js")).default;
31536
31721
  return schemaFn(client, telemetry2);
31537
31722
  }
31538
31723
  default: {
@@ -31545,7 +31730,7 @@ async function metrics(client) {
31545
31730
  output_manager_default.print(help(metricsCommand, { columns: client.stderr.columns }));
31546
31731
  return 2;
31547
31732
  }
31548
- const queryFn = (await import("./chunks/query-WGX6PLTN.js")).default;
31733
+ const queryFn = (await import("./chunks/query-ID2PPUU6.js")).default;
31549
31734
  return queryFn(client, telemetry2);
31550
31735
  }
31551
31736
  }
@@ -33896,7 +34081,7 @@ async function main24(client) {
33896
34081
  }
33897
34082
 
33898
34083
  // src/commands/open/index.ts
33899
- var import_open11 = __toESM(require_open(), 1);
34084
+ var import_open12 = __toESM(require_open(), 1);
33900
34085
 
33901
34086
  // src/util/telemetry/commands/open/index.ts
33902
34087
  var OpenTelemetryClient = class extends TelemetryClient {
@@ -33950,7 +34135,7 @@ async function openCommandHandler(client) {
33950
34135
  const { org, project } = link;
33951
34136
  const projectUrl = `https://vercel.com/${org.slug}/${project.name}`;
33952
34137
  output_manager_default.log(`Opening ${projectUrl} in your browser...`);
33953
- await (0, import_open11.default)(projectUrl);
34138
+ await (0, import_open12.default)(projectUrl);
33954
34139
  return 0;
33955
34140
  }
33956
34141
 
@@ -35308,7 +35493,7 @@ It will also delete everything under the project including deployments.
35308
35493
  // src/commands/project/token.ts
35309
35494
  var import_chalk147 = __toESM(require_source(), 1);
35310
35495
  async function getOidcToken(client, argv) {
35311
- const flagsSpecification = getFlagsSpecification(tokenSubcommand.options);
35496
+ const flagsSpecification = getFlagsSpecification(tokenSubcommand2.options);
35312
35497
  let parsedArgs;
35313
35498
  try {
35314
35499
  parsedArgs = parseArguments(argv, flagsSpecification);
@@ -35991,7 +36176,7 @@ var COMMAND_CONFIG32 = {
35991
36176
  protection: getCommandAliases(protectionSubcommand),
35992
36177
  rename: getCommandAliases(renameSubcommand),
35993
36178
  remove: getCommandAliases(removeSubcommand11),
35994
- token: getCommandAliases(tokenSubcommand),
36179
+ token: getCommandAliases(tokenSubcommand2),
35995
36180
  speedInsights: getCommandAliases(speedInsightsSubcommand),
35996
36181
  webAnalytics: getCommandAliases(webAnalyticsSubcommand)
35997
36182
  };
@@ -36119,7 +36304,7 @@ async function main25(client) {
36119
36304
  case "token":
36120
36305
  if (needHelp) {
36121
36306
  telemetry2.trackCliFlagHelp("project", subcommandOriginal);
36122
- return printHelp(tokenSubcommand);
36307
+ return printHelp(tokenSubcommand2);
36123
36308
  }
36124
36309
  telemetry2.trackCliSubcommandToken(subcommandOriginal);
36125
36310
  exitCode2 = await getOidcToken(client, args);
@@ -42422,7 +42607,7 @@ async function main27(client) {
42422
42607
  return 2;
42423
42608
  }
42424
42609
  telemetry2.trackCliSubcommandEdit(subcommandOriginal);
42425
- return (await import("./chunks/edit-UFYK3Z3T.js")).default(client, args);
42610
+ return (await import("./chunks/edit-NNTNLAVV.js")).default(client, args);
42426
42611
  case "delete":
42427
42612
  if (needHelp) {
42428
42613
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42430,7 +42615,7 @@ async function main27(client) {
42430
42615
  return 2;
42431
42616
  }
42432
42617
  telemetry2.trackCliSubcommandDelete(subcommandOriginal);
42433
- return (await import("./chunks/delete-H2OF5N72.js")).default(client, args);
42618
+ return (await import("./chunks/delete-VBCRT33S.js")).default(client, args);
42434
42619
  case "enable":
42435
42620
  if (needHelp) {
42436
42621
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42438,7 +42623,7 @@ async function main27(client) {
42438
42623
  return 2;
42439
42624
  }
42440
42625
  telemetry2.trackCliSubcommandEnable(subcommandOriginal);
42441
- return (await import("./chunks/enable-2MEB4O5O.js")).default(client, args);
42626
+ return (await import("./chunks/enable-DCCSTYJV.js")).default(client, args);
42442
42627
  case "disable":
42443
42628
  if (needHelp) {
42444
42629
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42446,7 +42631,7 @@ async function main27(client) {
42446
42631
  return 2;
42447
42632
  }
42448
42633
  telemetry2.trackCliSubcommandDisable(subcommandOriginal);
42449
- return (await import("./chunks/disable-Z4ENND33.js")).default(client, args);
42634
+ return (await import("./chunks/disable-4AGI6NFV.js")).default(client, args);
42450
42635
  case "reorder":
42451
42636
  if (needHelp) {
42452
42637
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42454,7 +42639,7 @@ async function main27(client) {
42454
42639
  return 2;
42455
42640
  }
42456
42641
  telemetry2.trackCliSubcommandReorder(subcommandOriginal);
42457
- return (await import("./chunks/reorder-SQ52RGDY.js")).default(client, args);
42642
+ return (await import("./chunks/reorder-HYBSLO2T.js")).default(client, args);
42458
42643
  case "export":
42459
42644
  if (needHelp) {
42460
42645
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42462,7 +42647,7 @@ async function main27(client) {
42462
42647
  return 2;
42463
42648
  }
42464
42649
  telemetry2.trackCliSubcommandExport(subcommandOriginal);
42465
- return (await import("./chunks/export-T5VEXLYZ.js")).default(client, args);
42650
+ return (await import("./chunks/export-2VCMSLPY.js")).default(client, args);
42466
42651
  case "publish":
42467
42652
  if (needHelp) {
42468
42653
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42470,7 +42655,7 @@ async function main27(client) {
42470
42655
  return 2;
42471
42656
  }
42472
42657
  telemetry2.trackCliSubcommandPublish(subcommandOriginal);
42473
- return (await import("./chunks/publish-SMAXMKKV.js")).default(client, args);
42658
+ return (await import("./chunks/publish-JY65X2KM.js")).default(client, args);
42474
42659
  case "restore":
42475
42660
  if (needHelp) {
42476
42661
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42478,7 +42663,7 @@ async function main27(client) {
42478
42663
  return 2;
42479
42664
  }
42480
42665
  telemetry2.trackCliSubcommandRestore(subcommandOriginal);
42481
- return (await import("./chunks/restore-P6RHBBEG.js")).default(client, args);
42666
+ return (await import("./chunks/restore-33F7XKHU.js")).default(client, args);
42482
42667
  case "discard-staging":
42483
42668
  if (needHelp) {
42484
42669
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -42486,7 +42671,7 @@ async function main27(client) {
42486
42671
  return 2;
42487
42672
  }
42488
42673
  telemetry2.trackCliSubcommandDiscardStaging(subcommandOriginal);
42489
- return (await import("./chunks/discard-UQGHXIL4.js")).default(client, args);
42674
+ return (await import("./chunks/discard-JUCF555L.js")).default(client, args);
42490
42675
  default:
42491
42676
  output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG35));
42492
42677
  output_manager_default.print(help(routesCommand, { columns: client.stderr.columns }));
@@ -42521,7 +42706,7 @@ async function sandbox(client) {
42521
42706
  const sandboxArgs = commandIndex === -1 ? [] : argv.slice(commandIndex + 1);
42522
42707
  const scope = getFlagValue(rootArgs, ["--scope", "-S"]);
42523
42708
  const team = getFlagValue(rootArgs, ["--team", "-T"]);
42524
- const token = getFlagValue(rootArgs, ["--token", "-t"]);
42709
+ const token2 = getFlagValue(rootArgs, ["--token", "-t"]);
42525
42710
  const forwardedArgs = [
42526
42711
  ...scope ? ["--scope", scope] : team ? ["--team", team] : [],
42527
42712
  ...sandboxArgs
@@ -42529,8 +42714,8 @@ async function sandbox(client) {
42529
42714
  const originalCwd = process.cwd();
42530
42715
  const originalAuthToken = process.env.VERCEL_AUTH_TOKEN;
42531
42716
  try {
42532
- if (token) {
42533
- process.env.VERCEL_AUTH_TOKEN = token;
42717
+ if (token2) {
42718
+ process.env.VERCEL_AUTH_TOKEN = token2;
42534
42719
  } else if (!process.env.VERCEL_AUTH_TOKEN && process.env.VERCEL_TOKEN) {
42535
42720
  process.env.VERCEL_AUTH_TOKEN = process.env.VERCEL_TOKEN;
42536
42721
  } else if (!process.env.VERCEL_AUTH_TOKEN && client.authConfig.token) {
@@ -44833,7 +45018,7 @@ async function ls8(client, argv) {
44833
45018
  }
44834
45019
 
44835
45020
  // src/commands/tokens/add.ts
44836
- var import_open13 = __toESM(require_open(), 1);
45021
+ var import_open14 = __toESM(require_open(), 1);
44837
45022
  import { KNOWN_AGENTS as KNOWN_AGENTS2 } from "@vercel/detect-agent";
44838
45023
  var VERCEL_ACCOUNT_TOKENS_URL = "https://vercel.com/account/tokens";
44839
45024
  var CLASSIC_TOKEN_GUIDANCE = `Creating a new token requires a classic personal access token. Sessions from "vercel login" use OAuth and cannot call the create-token API.
@@ -44892,7 +45077,7 @@ async function openTokensDashboardInBrowser(client) {
44892
45077
  return;
44893
45078
  }
44894
45079
  try {
44895
- const p = await (0, import_open13.default)(VERCEL_ACCOUNT_TOKENS_URL);
45080
+ const p = await (0, import_open14.default)(VERCEL_ACCOUNT_TOKENS_URL);
44896
45081
  p?.on?.("error", () => {
44897
45082
  });
44898
45083
  } catch {