vercel 59.7.0 → 59.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/chunks/{add-7O4TM33A.js → add-IJZ2Q46B.js} +5 -5
  2. package/dist/chunks/{add-UVMFKSSY.js → add-KYLIIWQV.js} +2 -2
  3. package/dist/chunks/{add-UT6ZPA4F.js → add-SGSXZWCH.js} +2 -2
  4. package/dist/chunks/{build-SKKT3DIB.js → build-PKOCHFHL.js} +2 -2
  5. package/dist/chunks/{chunk-7HE63HCR.js → chunk-4KVJ2M4J.js} +148 -6
  6. package/dist/chunks/{chunk-2EH6SZRG.js → chunk-53J6IECW.js} +32 -19
  7. package/dist/chunks/{chunk-7IDPPWDN.js → chunk-5BZWQDNJ.js} +1 -1
  8. package/dist/chunks/{chunk-7KSICC3A.js → chunk-5JNGHAUT.js} +1 -1
  9. package/dist/chunks/{chunk-3PA7LXYM.js → chunk-7TYA36S5.js} +1 -1
  10. package/dist/chunks/{chunk-67IIZBBY.js → chunk-AXNMBJKD.js} +1 -1
  11. package/dist/chunks/{chunk-CBHLLOGZ.js → chunk-FNYNYZAZ.js} +3 -3
  12. package/dist/chunks/{chunk-63OX2DER.js → chunk-GRINZMFI.js} +1 -1
  13. package/dist/chunks/{chunk-2YRAWYGE.js → chunk-I526H4AS.js} +17 -0
  14. package/dist/chunks/{chunk-YJUO3EKH.js → chunk-KJBZ5ZST.js} +0 -1
  15. package/dist/chunks/{chunk-2T3IZZTJ.js → chunk-KTCVGTRQ.js} +1 -1
  16. package/dist/chunks/{chunk-WVPMR7XV.js → chunk-LCDVMLKI.js} +4 -4
  17. package/dist/chunks/{chunk-GK3RE3AC.js → chunk-MHO3EJAF.js} +2 -2
  18. package/dist/chunks/{chunk-MHCGKUI7.js → chunk-O6VHU65V.js} +19 -3
  19. package/dist/chunks/{chunk-IFNCPWH5.js → chunk-OBPBFJFP.js} +6 -7
  20. package/dist/chunks/{chunk-SSBYESJ5.js → chunk-QQ77K4QW.js} +1 -1
  21. package/dist/chunks/{chunk-NJCM5JJN.js → chunk-SRVP2UST.js} +1 -1
  22. package/dist/chunks/{chunk-XSYZDMUP.js → chunk-UTWU4DZF.js} +1 -1
  23. package/dist/chunks/{chunk-AFKB6VMO.js → chunk-VV5XULGR.js} +111 -8
  24. package/dist/chunks/{chunk-CMRZ4KI4.js → chunk-WC3XNI4B.js} +2 -2
  25. package/dist/chunks/{chunk-KD2N44NG.js → chunk-X6TBTUZZ.js} +1 -1
  26. package/dist/chunks/{chunk-DG6IMLCF.js → chunk-YLNIMGMQ.js} +3 -3
  27. package/dist/chunks/{chunk-MUMITVZP.js → chunk-Z2RKD7LL.js} +1 -1
  28. package/dist/chunks/{chunk-BQG777JE.js → chunk-Z44PATWW.js} +314 -195
  29. package/dist/chunks/{clear-X7M4WGBC.js → clear-J6TY2J3M.js} +2 -2
  30. package/dist/chunks/{compile-vercel-config-FBOZBWJC.js → compile-vercel-config-WVGNTJXO.js} +1 -1
  31. package/dist/chunks/{config-KGW667XC.js → config-3JDOCLH7.js} +5 -5
  32. package/dist/chunks/{config-RYPSCAR7.js → config-5T7XV4JE.js} +2 -2
  33. package/dist/chunks/config-validator.mjs +1 -1
  34. package/dist/chunks/{delete-VK6FTDBI.js → delete-EPPNTNEW.js} +2 -2
  35. package/dist/chunks/{delete-OXYXXPHR.js → delete-XQOAWEZV.js} +2 -2
  36. package/dist/chunks/{disable-XRJTKNX4.js → disable-U5YAPWPA.js} +2 -2
  37. package/dist/chunks/{discard-NAPSPR6Y.js → discard-OCUCCXKO.js} +2 -2
  38. package/dist/chunks/{edit-WLG4GLU3.js → edit-CD7EXAO3.js} +2 -2
  39. package/dist/chunks/{edit-34GDLPQG.js → edit-PNRGHNGQ.js} +3 -3
  40. package/dist/chunks/{enable-IDKKVXKB.js → enable-25RH2LVW.js} +2 -2
  41. package/dist/chunks/{export-MPMU3FYY.js → export-YSGEUXJW.js} +2 -2
  42. package/dist/chunks/{image-RZ2A4FWP.js → image-4ZKCR4HL.js} +3 -3
  43. package/dist/chunks/{import-builders-GZPE5N44.js → import-builders-FQ2LOIWC.js} +2 -2
  44. package/dist/chunks/{inspect-X2Y5FDKR.js → inspect-3K2EDYL6.js} +3 -3
  45. package/dist/chunks/{inspect-56S2DKPO.js → inspect-F5DJM5DL.js} +2 -2
  46. package/dist/chunks/{inspect-OOV2ORKD.js → inspect-K2NJD2AI.js} +2 -2
  47. package/dist/chunks/{inspect-KGEMHV2T.js → inspect-WRBFJUSY.js} +2 -2
  48. package/dist/chunks/{inspect-EVDBNPP4.js → inspect-ZC4GRGTE.js} +2 -2
  49. package/dist/chunks/{list-TWSOAQRB.js → list-B7C56Z7B.js} +1 -1
  50. package/dist/chunks/{list-H357CF7M.js → list-PUFYWIOF.js} +3 -3
  51. package/dist/chunks/{list-FWLSZYMO.js → list-Z6VHQQBW.js} +2 -2
  52. package/dist/chunks/{login-54OPNB5E.js → login-ZYUF7JZQ.js} +2 -2
  53. package/dist/chunks/{ls-WGIRTAVM.js → ls-2OUQUKPT.js} +2 -2
  54. package/dist/chunks/{ls-WFMTVJOO.js → ls-ALX26ARH.js} +2 -2
  55. package/dist/chunks/{ls-ZMR5RMU4.js → ls-FNOL7XTY.js} +2 -2
  56. package/dist/chunks/{ls-VDFNIR5H.js → ls-PRY6OV4B.js} +3 -3
  57. package/dist/chunks/{ls-DU3S2GBJ.js → ls-SQRTT5RH.js} +2 -2
  58. package/dist/chunks/{ls-6JHFSJBJ.js → ls-TBBLZ766.js} +2 -2
  59. package/dist/chunks/{open-RCSCNKHF.js → open-673AJXYY.js} +2 -2
  60. package/dist/chunks/{permissions-XNN37R4N.js → permissions-B6SFNLN4.js} +4 -4
  61. package/dist/chunks/{publish-PLXEACYY.js → publish-TPJHZ2PJ.js} +2 -2
  62. package/dist/chunks/{push-EFYSB52Q.js → push-3WD5IPXP.js} +2 -2
  63. package/dist/chunks/{query-EKTXDOL7.js → query-ZXOJQZ7G.js} +1 -1
  64. package/dist/chunks/{reorder-OSA7D2RG.js → reorder-SUFOQGPC.js} +2 -2
  65. package/dist/chunks/{reply-6M2IYKLK.js → reply-YOVUA6ZF.js} +2 -2
  66. package/dist/chunks/{resolve-MCX5STKN.js → resolve-OQ7P74JY.js} +2 -2
  67. package/dist/chunks/{restore-52OEP3NL.js → restore-BD5XJOE7.js} +2 -2
  68. package/dist/chunks/{rm-2VAJFK25.js → rm-4KAI42EX.js} +2 -2
  69. package/dist/chunks/{rm-IYEDZOMN.js → rm-4UIILZLP.js} +2 -2
  70. package/dist/chunks/{rm-QW35WHSK.js → rm-5TY3QJUZ.js} +2 -2
  71. package/dist/chunks/{rm-TXV4GB4L.js → rm-EKVIZG2N.js} +3 -3
  72. package/dist/chunks/{rm-4BJN2LJX.js → rm-XAMQUW3J.js} +3 -3
  73. package/dist/chunks/{rule-inspect-WOBAN3Y2.js → rule-inspect-XZZE54SW.js} +3 -3
  74. package/dist/chunks/{rules-CUJRAZYO.js → rules-SF5FBWFF.js} +6 -6
  75. package/dist/chunks/{schema-VCGEJAOG.js → schema-3HRYA6AT.js} +1 -1
  76. package/dist/chunks/{set-2QSXMDVF.js → set-T4IYLXET.js} +3 -3
  77. package/dist/chunks/{tags-NHX2VQ7E.js → tags-EZKT46VN.js} +2 -2
  78. package/dist/chunks/{update-EOHXTT4N.js → update-OE7Y2J5I.js} +5 -5
  79. package/dist/commands/build/index.js +509 -66
  80. package/dist/commands/deploy/index.js +8 -8
  81. package/dist/commands/dev/index.js +20 -9
  82. package/dist/commands/env/index.js +4 -4
  83. package/dist/commands/link/index.js +3 -3
  84. package/dist/commands/list/index.js +3 -3
  85. package/dist/commands-bulk.js +2690 -1850
  86. package/dist/help.js +1 -1
  87. package/dist/index.js +9 -9
  88. package/dist/version.mjs +1 -1
  89. package/package.json +49 -49
@@ -8,21 +8,21 @@ import {
8
8
  parseCustomAlertQueryBody,
9
9
  resolveCustomAlertProjectName,
10
10
  setMissingCustomAlertProjectScope
11
- } from "./chunk-CMRZ4KI4.js";
11
+ } from "./chunk-WC3XNI4B.js";
12
12
  import {
13
13
  emitRulesArgParseError,
14
14
  handleRulesApiError,
15
15
  parseRulesFlagsAndScope,
16
16
  rulesCollectionPath
17
- } from "./chunk-63OX2DER.js";
17
+ } from "./chunk-GRINZMFI.js";
18
18
  import {
19
19
  isCustomAlertRule
20
20
  } from "./chunk-26XDDLXM.js";
21
- import "./chunk-KD2N44NG.js";
21
+ import "./chunk-X6TBTUZZ.js";
22
22
  import "./chunk-A3NYPUKZ.js";
23
23
  import "./chunk-3T7WSWZH.js";
24
24
  import "./chunk-FGDKMNEN.js";
25
- import "./chunk-SSBYESJ5.js";
25
+ import "./chunk-QQ77K4QW.js";
26
26
  import "./chunk-AINIBIP4.js";
27
27
  import "./chunk-XRWOTCDO.js";
28
28
  import {
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  rulesAddSubcommand
33
33
  } from "./chunk-XM3LOQIX.js";
34
- import "./chunk-BQG777JE.js";
34
+ import "./chunk-Z44PATWW.js";
35
35
  import "./chunk-FXD67VN5.js";
36
36
  import "./chunk-XNFHNTS2.js";
37
37
  import {
@@ -9,7 +9,7 @@ import {
9
9
  handleVcrApiError,
10
10
  resolveVcrScope,
11
11
  validateVcrJsonOutput
12
- } from "./chunk-XSYZDMUP.js";
12
+ } from "./chunk-UTWU4DZF.js";
13
13
  import "./chunk-WNAKOXGK.js";
14
14
  import {
15
15
  outputError
@@ -22,7 +22,7 @@ import "./chunk-EZKW5YJ2.js";
22
22
  import "./chunk-NFU4XJIR.js";
23
23
  import "./chunk-3HZLXCVL.js";
24
24
  import "./chunk-5XECIWME.js";
25
- import "./chunk-BQG777JE.js";
25
+ import "./chunk-Z44PATWW.js";
26
26
  import "./chunk-FXD67VN5.js";
27
27
  import "./chunk-XNFHNTS2.js";
28
28
  import {
@@ -17,7 +17,7 @@ import {
17
17
  emitVcrArgParseError,
18
18
  resolveVcrScope,
19
19
  validateVcrJsonOutput
20
- } from "./chunk-XSYZDMUP.js";
20
+ } from "./chunk-UTWU4DZF.js";
21
21
  import "./chunk-WNAKOXGK.js";
22
22
  import {
23
23
  outputError
@@ -27,7 +27,7 @@ import {
27
27
  permissionsAddSubcommand
28
28
  } from "./chunk-EZKW5YJ2.js";
29
29
  import "./chunk-5XECIWME.js";
30
- import "./chunk-BQG777JE.js";
30
+ import "./chunk-Z44PATWW.js";
31
31
  import "./chunk-FXD67VN5.js";
32
32
  import "./chunk-XNFHNTS2.js";
33
33
  import {
@@ -23,7 +23,7 @@ import {
23
23
  runEngine,
24
24
  splitPassthrough,
25
25
  validateVcrChoice
26
- } from "./chunk-XSYZDMUP.js";
26
+ } from "./chunk-UTWU4DZF.js";
27
27
  import "./chunk-WNAKOXGK.js";
28
28
  import {
29
29
  outputError
@@ -36,7 +36,7 @@ import "./chunk-EZKW5YJ2.js";
36
36
  import "./chunk-NFU4XJIR.js";
37
37
  import "./chunk-3HZLXCVL.js";
38
38
  import "./chunk-5XECIWME.js";
39
- import "./chunk-BQG777JE.js";
39
+ import "./chunk-Z44PATWW.js";
40
40
  import "./chunk-FXD67VN5.js";
41
41
  import "./chunk-XNFHNTS2.js";
42
42
  import {
@@ -3102,6 +3102,57 @@ var detachSubcommand = {
3102
3102
  }
3103
3103
  ]
3104
3104
  };
3105
+ var contactsAddSubcommand = {
3106
+ name: "add",
3107
+ aliases: [],
3108
+ description: "Add a phone contact that a connector may message",
3109
+ arguments: [
3110
+ {
3111
+ name: "connector",
3112
+ required: true
3113
+ }
3114
+ ],
3115
+ options: [
3116
+ {
3117
+ name: "phone-number",
3118
+ shorthand: null,
3119
+ type: String,
3120
+ argument: "PHONE",
3121
+ deprecated: false,
3122
+ description: "Contact phone number in E.164 format (e.g. +12025551234)"
3123
+ },
3124
+ formatOption,
3125
+ jsonOption
3126
+ ],
3127
+ examples: [
3128
+ {
3129
+ name: "Add a contact by connector ID",
3130
+ value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234`
3131
+ },
3132
+ {
3133
+ name: "Add a contact by connector UID",
3134
+ value: `${packageName} connect contacts add linq/support --phone-number +12025551234`
3135
+ },
3136
+ {
3137
+ name: "Output the verification result as JSON",
3138
+ value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234 --json`
3139
+ }
3140
+ ]
3141
+ };
3142
+ var contactsSubcommand = {
3143
+ name: "contacts",
3144
+ aliases: [],
3145
+ description: "Manage phone contacts for connectors",
3146
+ arguments: [],
3147
+ options: [],
3148
+ subcommands: [contactsAddSubcommand],
3149
+ examples: [
3150
+ {
3151
+ name: "Add a contact",
3152
+ value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234`
3153
+ }
3154
+ ]
3155
+ };
3105
3156
  var connexCommand = {
3106
3157
  name: "connect",
3107
3158
  aliases: [],
@@ -3117,7 +3168,8 @@ var connexCommand = {
3117
3168
  detachSubcommand,
3118
3169
  removeSubcommand4,
3119
3170
  revokeTokensSubcommand,
3120
- openSubcommand
3171
+ openSubcommand,
3172
+ contactsSubcommand
3121
3173
  ],
3122
3174
  examples: [
3123
3175
  {
@@ -3140,7 +3192,11 @@ var connexCommand = {
3140
3192
  name: "Open a connector in the dashboard",
3141
3193
  value: `${packageName} connect open scl_abc123`
3142
3194
  }
3143
- ]
3195
+ ],
3196
+ documentation: {
3197
+ label: "Vercel Connect guide",
3198
+ url: "https://vercel.com/kb/guide/vercel-connect"
3199
+ }
3144
3200
  };
3145
3201
 
3146
3202
  // src/commands/contract/command.ts
@@ -4982,6 +5038,18 @@ var firewallCommand = {
4982
5038
  ]
4983
5039
  };
4984
5040
 
5041
+ // src/util/flags/attribute-types.ts
5042
+ var TIMESTAMP_IDENTIFY_HELP = "Pass Timestamp values as epoch milliseconds in identify() / evaluation context";
5043
+ function isTimestampAttributeType(type) {
5044
+ return type === "timestamp";
5045
+ }
5046
+ function isBucketingAttribute(attribute) {
5047
+ return !isTimestampAttributeType(attribute.type);
5048
+ }
5049
+ function getFlagAttributeType(settings, kind, attribute) {
5050
+ return settings?.entities.find((entity) => entity.kind === kind)?.attributes.find((candidate) => candidate.key === attribute)?.type;
5051
+ }
5052
+
4985
5053
  // src/util/flags/comparators.ts
4986
5054
  var FLAG_CONDITION_COMPARATORS = [
4987
5055
  "eq",
@@ -5035,11 +5103,18 @@ var FLAG_CONDITION_COMPARATOR_LABELS = {
5035
5103
  lt: "is less than",
5036
5104
  lte: "is less than or equal to"
5037
5105
  };
5106
+ var TIMESTAMP_FLAG_CONDITION_COMPARATOR_LABELS = {
5107
+ gt: "is after",
5108
+ gte: "is on or after",
5109
+ lt: "is before",
5110
+ lte: "is on or before"
5111
+ };
5038
5112
  var LEGACY_FLAG_CONDITION_COMPARATOR_LABELS = {
5039
5113
  notContains: FLAG_CONDITION_COMPARATOR_LABELS["!contains"]
5040
5114
  };
5041
5115
  function formatFlagConditionComparator(comparator, options) {
5042
- const label = FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? LEGACY_FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? comparator;
5116
+ const timestampLabel = options?.attributeType === "timestamp" ? TIMESTAMP_FLAG_CONDITION_COMPARATOR_LABELS[comparator] : void 0;
5117
+ const label = timestampLabel ?? FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? LEGACY_FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? comparator;
5043
5118
  if (options?.ignoreCase) {
5044
5119
  return `${label} (case-insensitive)`;
5045
5120
  }
@@ -5062,7 +5137,7 @@ function isFlagEvaluationsGranularity(value) {
5062
5137
  }
5063
5138
 
5064
5139
  // src/commands/flags/command.ts
5065
- var segmentRuleOperatorDescription = `Valid operators: ${formatFlagConditionComparatorList()}`;
5140
+ var segmentRuleOperatorDescription = `Valid operators: ${formatFlagConditionComparatorList()}. Timestamp attributes also accept after, before, on-or-after, and on-or-before with an ISO 8601 date and time (for example 2026-04-16T09:00:00Z) or epoch milliseconds. after and before are exclusive; use on-or-after or on-or-before for inclusive boundaries. Date/times without a timezone use this machine's timezone. ${TIMESTAMP_IDENTIFY_HELP}`;
5066
5141
  var listSubcommand11 = {
5067
5142
  name: "list",
5068
5143
  aliases: ["ls"],
@@ -5578,6 +5653,58 @@ var setSubcommand2 = {
5578
5653
  }
5579
5654
  ]
5580
5655
  };
5656
+ var useTargetingSubcommand = {
5657
+ name: "use-targeting",
5658
+ aliases: [],
5659
+ description: "Enable targeting for a feature flag environment; keeps the current fallthrough unless --default-variant is set",
5660
+ arguments: [
5661
+ {
5662
+ name: "flag",
5663
+ required: true
5664
+ }
5665
+ ],
5666
+ options: [
5667
+ projectOption,
5668
+ {
5669
+ name: "environment",
5670
+ shorthand: "e",
5671
+ type: String,
5672
+ deprecated: false,
5673
+ description: "The environment to enable targeting in (production, preview, or development)",
5674
+ argument: "ENV"
5675
+ },
5676
+ {
5677
+ name: "default-variant",
5678
+ shorthand: null,
5679
+ type: String,
5680
+ deprecated: false,
5681
+ description: "Replace the fallthrough with this variant when no targeting rules match",
5682
+ argument: "VARIANT"
5683
+ },
5684
+ {
5685
+ name: "message",
5686
+ shorthand: null,
5687
+ type: String,
5688
+ deprecated: false,
5689
+ description: "Optional revision message for the update",
5690
+ argument: "TEXT"
5691
+ }
5692
+ ],
5693
+ examples: [
5694
+ {
5695
+ name: "Enable targeting and keep the current fallthrough",
5696
+ value: `${packageName} flags use-targeting my-feature --environment production`
5697
+ },
5698
+ {
5699
+ name: "Enable targeting with a static default Off",
5700
+ value: `${packageName} flags use-targeting my-feature --environment production --default-variant false`
5701
+ },
5702
+ {
5703
+ name: "Enable targeting with a string default",
5704
+ value: `${packageName} flags use-targeting welcome-message -e production --default-variant control`
5705
+ }
5706
+ ]
5707
+ };
5581
5708
  var splitSubcommand = {
5582
5709
  name: "split",
5583
5710
  aliases: [],
@@ -5900,6 +6027,10 @@ var rulesAddSubcommand3 = {
5900
6027
  name: "Add a segment rule",
5901
6028
  value: `${packageName} flags rules add my-feature -e production --condition segment:eq:seg_beta123 --variant on`
5902
6029
  },
6030
+ {
6031
+ name: "Add a rule with a timestamp condition",
6032
+ value: `${packageName} flags rules add my-feature -e production --condition user.signupAt:after:2026-04-16T09:00:00Z --variant on`
6033
+ },
5903
6034
  {
5904
6035
  name: "Add a split rule at the top",
5905
6036
  value: `${packageName} flags rules add my-feature -e production --condition user.plan:eq:pro --by user.userId --weight off=90 --weight on=10 --position 1`
@@ -6340,8 +6471,8 @@ var segmentsCreateSubcommand = {
6340
6471
  value: `${packageName} flags segments create beta-users --label "Beta users" --add include:user.id=user_123 --add include:user.id=user_456`
6341
6472
  },
6342
6473
  {
6343
- name: "Create a segment from rules",
6344
- value: `${packageName} flags segments create enterprise-users --label "Enterprise users" --add rule:user.plan:eq:enterprise`
6474
+ name: "Create a segment using a timestamp condition",
6475
+ value: `${packageName} flags segments create early-adopters --add rule:user.signupAt:before:2026-04-16T09:00:00Z`
6345
6476
  },
6346
6477
  {
6347
6478
  name: "Create a segment from full JSON data",
@@ -6429,6 +6560,10 @@ var segmentsUpdateSubcommand = {
6429
6560
  {
6430
6561
  name: "Add and remove rules",
6431
6562
  value: `${packageName} flags segments update enterprise-users --add rule:user.email:ends-with:@company.com --remove rule:user.plan:eq:pro`
6563
+ },
6564
+ {
6565
+ name: "Add a timestamp condition",
6566
+ value: `${packageName} flags segments update early-adopters --add rule:user.signupAt:before:2026-04-16T09:00:00Z`
6432
6567
  }
6433
6568
  ]
6434
6569
  };
@@ -6651,6 +6786,7 @@ var flagsCommand = {
6651
6786
  openSubcommand2,
6652
6787
  updateSubcommand3,
6653
6788
  setSubcommand2,
6789
+ useTargetingSubcommand,
6654
6790
  splitSubcommand,
6655
6791
  rolloutSubcommand,
6656
6792
  removeSubcommand8,
@@ -12385,6 +12521,8 @@ export {
12385
12521
  openSubcommand,
12386
12522
  attachSubcommand,
12387
12523
  detachSubcommand,
12524
+ contactsAddSubcommand,
12525
+ contactsSubcommand,
12388
12526
  connexCommand,
12389
12527
  contractCommand,
12390
12528
  addSubcommand3 as addSubcommand2,
@@ -12449,6 +12587,9 @@ export {
12449
12587
  systemMitigationsResumeSubcommand,
12450
12588
  systemMitigationsSubcommand,
12451
12589
  firewallCommand,
12590
+ isTimestampAttributeType,
12591
+ isBucketingAttribute,
12592
+ getFlagAttributeType,
12452
12593
  FLAG_CONDITION_LIST_COMPARATORS,
12453
12594
  FLAG_CONDITION_RHS_OPTIONAL_COMPARATORS,
12454
12595
  formatFlagConditionComparatorList,
@@ -12465,6 +12606,7 @@ export {
12465
12606
  openSubcommand2,
12466
12607
  updateSubcommand3,
12467
12608
  setSubcommand2,
12609
+ useTargetingSubcommand,
12468
12610
  splitSubcommand,
12469
12611
  rolloutSubcommand,
12470
12612
  rulesListSubcommand3,
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  require_lib
9
- } from "./chunk-BQG777JE.js";
9
+ } from "./chunk-Z44PATWW.js";
10
10
  import {
11
11
  isNativeBinaryInstall
12
12
  } from "./chunk-XNFHNTS2.js";
@@ -139,15 +139,21 @@ async function isGlobalByPrefix(installPath) {
139
139
  return true;
140
140
  }
141
141
  }
142
+ function asPackageManager(cliType) {
143
+ if (cliType === "npm" || cliType === "pnpm" || cliType === "yarn" || cliType === "bun" || cliType === "vlt") {
144
+ return cliType;
145
+ }
146
+ return "npm";
147
+ }
142
148
  async function resolveInstall() {
143
149
  const pkg = isNativeBinaryInstall() ? nativePackageName : packageName;
144
150
  const installPath = await (0, import_fs_extra.realpath)(resolve(__dirname));
145
151
  if (await isPnpmHomeInstall(installPath)) {
146
- return { cliType: "pnpm", global: true };
152
+ return { packageManager: "pnpm", global: true, assumed: false };
147
153
  }
148
154
  const globalCliType = await detectGlobalCliType(installPath, pkg);
149
155
  if (globalCliType) {
150
- return { cliType: globalCliType, global: true };
156
+ return { packageManager: globalCliType, global: true, assumed: false };
151
157
  }
152
158
  let lockfileCliType;
153
159
  try {
@@ -161,11 +167,13 @@ async function resolveInstall() {
161
167
  } catch (_) {
162
168
  }
163
169
  if (!lockfileCliType) {
164
- return { cliType: "npm", global: true };
170
+ return { packageManager: "npm", global: true, assumed: true };
165
171
  }
172
+ const packageManager = asPackageManager(lockfileCliType);
166
173
  return {
167
- cliType: lockfileCliType,
168
- global: isGlobalByPath(installPath) || await isGlobalByPrefix(installPath)
174
+ packageManager,
175
+ global: isGlobalByPath(installPath) || await isGlobalByPrefix(installPath),
176
+ assumed: packageManager !== lockfileCliType
169
177
  };
170
178
  }
171
179
  async function isGlobal() {
@@ -180,30 +188,35 @@ async function getUpdateCommandInfo() {
180
188
  const pkgAndVersion = `${nativeInstall ? nativePackageName : packageName}@latest`;
181
189
  if (nativeInstall) {
182
190
  const segments = process.execPath.split(sep);
183
- let cliType2 = "npm";
191
+ let packageManager2 = "npm";
184
192
  if (segments.includes("pnpm") || segments.includes(".pnpm")) {
185
- cliType2 = "pnpm";
193
+ packageManager2 = "pnpm";
186
194
  } else if (segments.includes("yarn") || segments.includes(".yarn")) {
187
- cliType2 = "yarn";
195
+ packageManager2 = "yarn";
188
196
  }
189
- const install2 = cliType2 === "yarn" ? "global add" : "i -g";
190
- const force = cliType2 === "npm" ? " --force" : "";
191
- const allowBuild2 = pnpmAllowBuildFlag(cliType2, nativePackageName);
197
+ const install2 = packageManager2 === "yarn" ? "global add" : "i -g";
198
+ const force = packageManager2 === "npm" ? " --force" : "";
199
+ const allowBuild2 = pnpmAllowBuildFlag(packageManager2, nativePackageName);
192
200
  return {
193
- command: `${cliType2} ${install2} ${pkgAndVersion}${force}${allowBuild2}`,
194
- global: true
201
+ command: `${packageManager2} ${install2} ${pkgAndVersion}${force}${allowBuild2}`,
202
+ global: true,
203
+ packageManager: packageManager2,
204
+ // Native path detection only positively identifies pnpm/yarn.
205
+ assumed: packageManager2 === "npm"
195
206
  };
196
207
  }
197
- const { cliType, global } = await resolveInstall();
198
- const yarn = cliType === "yarn";
208
+ const { packageManager, global, assumed } = await resolveInstall();
209
+ const yarn = packageManager === "yarn";
199
210
  let install = yarn ? "add" : "i";
200
211
  if (global) {
201
212
  install = yarn ? "global add" : "i -g";
202
213
  }
203
- const allowBuild = global ? pnpmAllowBuildFlag(cliType, "esbuild") : "";
214
+ const allowBuild = global ? pnpmAllowBuildFlag(packageManager, "esbuild") : "";
204
215
  return {
205
- command: `${cliType} ${install} ${pkgAndVersion}${allowBuild}`,
206
- global
216
+ command: `${packageManager} ${install} ${pkgAndVersion}${allowBuild}`,
217
+ global,
218
+ packageManager,
219
+ assumed
207
220
  };
208
221
  }
209
222
  function pnpmAllowBuildFlag(cliType, pkg) {
@@ -13,7 +13,7 @@ import {
13
13
  getLinkedProject,
14
14
  getScope,
15
15
  resolveProjectContext
16
- } from "./chunk-BQG777JE.js";
16
+ } from "./chunk-Z44PATWW.js";
17
17
  import {
18
18
  printError
19
19
  } from "./chunk-AYLY3ZVL.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-C5HKWXRR.js";
10
10
  import {
11
11
  ALIGNED_LABEL_WIDTH
12
- } from "./chunk-BQG777JE.js";
12
+ } from "./chunk-Z44PATWW.js";
13
13
  import {
14
14
  require_ms
15
15
  } from "./chunk-GGP5R3FU.js";
@@ -8,7 +8,7 @@ import {
8
8
  VERCEL_DIR,
9
9
  VERCEL_DIR_PROJECT,
10
10
  require_lib
11
- } from "./chunk-BQG777JE.js";
11
+ } from "./chunk-Z44PATWW.js";
12
12
  import {
13
13
  require_dist
14
14
  } from "./chunk-QFAS4OVW.js";
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  STANDARD_ENVIRONMENTS
9
- } from "./chunk-BQG777JE.js";
9
+ } from "./chunk-Z44PATWW.js";
10
10
  import {
11
11
  require_lib
12
12
  } from "./chunk-Q2DGFCO7.js";
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  writeProjectSettings
9
- } from "./chunk-3PA7LXYM.js";
9
+ } from "./chunk-7TYA36S5.js";
10
10
  import {
11
11
  autoInstallVercelPlugin
12
12
  } from "./chunk-7AEEQOD4.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-FWKSJYDV.js";
19
19
  import {
20
20
  help
21
- } from "./chunk-2YRAWYGE.js";
21
+ } from "./chunk-I526H4AS.js";
22
22
  import {
23
23
  VERCEL_DIR,
24
24
  VERCEL_DIR_PROJECT,
@@ -26,7 +26,7 @@ import {
26
26
  envPullCommandLogic,
27
27
  humanizePath,
28
28
  parseTarget
29
- } from "./chunk-BQG777JE.js";
29
+ } from "./chunk-Z44PATWW.js";
30
30
  import {
31
31
  TelemetryClient
32
32
  } from "./chunk-XNFHNTS2.js";
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  resolveAlertsScope
9
- } from "./chunk-KD2N44NG.js";
9
+ } from "./chunk-X6TBTUZZ.js";
10
10
  import {
11
11
  handleValidationError,
12
12
  outputError,
@@ -221,6 +221,21 @@ function buildCommandExampleLines(command) {
221
221
  }
222
222
  return outputArrayToString(outputArray);
223
223
  }
224
+ function buildCommandDocumentationLines(command, options) {
225
+ if (options.omitDocumentation) {
226
+ return null;
227
+ }
228
+ const documentation = command.documentation ?? options.parent?.documentation;
229
+ if (!documentation) {
230
+ return null;
231
+ }
232
+ return outputArrayToString([
233
+ `${INDENT}${import_chalk.default.dim(`${documentation.label}:`)}`,
234
+ "",
235
+ lineToString([INDENT, INDENT, import_chalk.default.cyan(documentation.url)]),
236
+ ""
237
+ ]);
238
+ }
224
239
  function buildDescriptionLine(command, options) {
225
240
  const wrappingText = wordWrap(command.description, options.columns);
226
241
  return `${wrappingText}${NEWLINE}`;
@@ -237,6 +252,7 @@ function buildHelpOutput(command, options) {
237
252
  buildCommandOptionLines(command.options, options, "Options"),
238
253
  buildCommandOptionLines(filteredGlobalOptions, options, "Global Options"),
239
254
  buildCommandExampleLines(command),
255
+ buildCommandDocumentationLines(command, options),
240
256
  ""
241
257
  ];
242
258
  return outputArrayToString(outputArray);
@@ -249,5 +265,6 @@ function help(command, options) {
249
265
  }
250
266
 
251
267
  export {
268
+ buildCommandDocumentationLines,
252
269
  help
253
270
  };
@@ -79,7 +79,6 @@ var help = () => `
79
79
  metrics <metric> Queries observability metrics for your project or team
80
80
  mcp Set up MCP agents and configuration
81
81
  microfrontends Manages your microfrontends
82
- oauth-apps [cmd] Register Vercel Apps (OAuth) and manage team installations
83
82
  projects Manages your Projects
84
83
  redirects [cmd] Manages redirects for your current Project
85
84
  rm | remove [id] Removes a deployment
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  resolveProjectContext
9
- } from "./chunk-BQG777JE.js";
9
+ } from "./chunk-Z44PATWW.js";
10
10
  import {
11
11
  AGENT_REASON,
12
12
  AGENT_STATUS,
@@ -9,19 +9,19 @@ import {
9
9
  } from "./chunk-PRWJUY5U.js";
10
10
  import {
11
11
  progress
12
- } from "./chunk-DG6IMLCF.js";
12
+ } from "./chunk-YLNIMGMQ.js";
13
13
  import {
14
14
  isJSONObject,
15
15
  printIndications,
16
16
  require_dist as require_dist2,
17
17
  sleep
18
- } from "./chunk-SSBYESJ5.js";
18
+ } from "./chunk-QQ77K4QW.js";
19
19
  import {
20
20
  suggestNextCommands
21
21
  } from "./chunk-7ST552E3.js";
22
22
  import {
23
23
  CommandTimeout
24
- } from "./chunk-7HE63HCR.js";
24
+ } from "./chunk-4KVJ2M4J.js";
25
25
  import {
26
26
  stamp_default
27
27
  } from "./chunk-64IF634X.js";
@@ -35,7 +35,7 @@ import {
35
35
  require_dist as require_dist3,
36
36
  require_pluralize,
37
37
  ua_default
38
- } from "./chunk-BQG777JE.js";
38
+ } from "./chunk-Z44PATWW.js";
39
39
  import {
40
40
  withGlobalFlags
41
41
  } from "./chunk-NGGLYKNU.js";
@@ -7,14 +7,14 @@ const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  login,
9
9
  require_ci_info
10
- } from "./chunk-DG6IMLCF.js";
10
+ } from "./chunk-YLNIMGMQ.js";
11
11
  import {
12
12
  getGlobalPathConfig
13
13
  } from "./chunk-AINIBIP4.js";
14
14
  import {
15
15
  humanizePath,
16
16
  param
17
- } from "./chunk-BQG777JE.js";
17
+ } from "./chunk-Z44PATWW.js";
18
18
  import {
19
19
  printError
20
20
  } from "./chunk-AYLY3ZVL.js";
@@ -18,7 +18,7 @@ import {
18
18
  require_lib,
19
19
  require_minimatch,
20
20
  require_pluralize
21
- } from "./chunk-BQG777JE.js";
21
+ } from "./chunk-Z44PATWW.js";
22
22
  import {
23
23
  isNativeBinaryInstall
24
24
  } from "./chunk-XNFHNTS2.js";
@@ -1348,15 +1348,31 @@ var require_install_builders = __commonJS({
1348
1348
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1349
1349
  var install_builders_exports = {};
1350
1350
  __export2(install_builders_exports, {
1351
- createInstallBuilders: () => createInstallBuilders2
1351
+ createInstallBuilders: () => createInstallBuilders2,
1352
+ getBuildUtilsSpec: () => getBuildUtilsSpec
1352
1353
  });
1353
1354
  module.exports = __toCommonJS(install_builders_exports);
1354
1355
  var import_url = __require("url");
1355
1356
  var import_pluralize = __toESM2(require_pluralize());
1356
1357
  var import_path = __require("path");
1358
+ var import_npm_package_arg = __toESM2(require_npa());
1357
1359
  var import_semver = require_semver();
1358
1360
  var import_fs_extra = require_lib();
1359
1361
  var import_error_utils = require_dist();
1362
+ function getBuildUtilsSpec(buildUtilsVersion) {
1363
+ if (!buildUtilsVersion)
1364
+ return "@vercel/build-utils";
1365
+ if ((0, import_semver.validRange)(buildUtilsVersion)) {
1366
+ return `@vercel/build-utils@${buildUtilsVersion}`;
1367
+ }
1368
+ try {
1369
+ if ((0, import_npm_package_arg.default)(buildUtilsVersion).type === "remote") {
1370
+ return `@vercel/build-utils@${buildUtilsVersion}`;
1371
+ }
1372
+ } catch {
1373
+ }
1374
+ return "@vercel/build-utils";
1375
+ }
1360
1376
  function getErrorMessage(err, execaMessage) {
1361
1377
  if (!err || !("stderr" in err)) {
1362
1378
  return execaMessage;
@@ -1387,7 +1403,7 @@ var require_install_builders = __commonJS({
1387
1403
  buildersToAdd
1388
1404
  ).join(", ")}`
1389
1405
  );
1390
- const buildUtilsSpec = buildUtilsVersion && (0, import_semver.validRange)(buildUtilsVersion) ? `@vercel/build-utils@${buildUtilsVersion}` : "@vercel/build-utils";
1406
+ const buildUtilsSpec = getBuildUtilsSpec(buildUtilsVersion);
1391
1407
  const installArgs = ["install", buildUtilsSpec, ...buildersToAdd];
1392
1408
  try {
1393
1409
  const { stderr } = await run("npm", installArgs, {