vercel 59.4.0 → 59.6.2

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 (137) hide show
  1. package/dist/chunks/{add-FQMB3XPM.js → add-4GQZ22ZN.js} +20 -16
  2. package/dist/chunks/{add-73X2SKBH.js → add-HJSEM4YJ.js} +17 -13
  3. package/dist/chunks/{add-QJ3WT4FW.js → add-SIGUSM3Y.js} +21 -17
  4. package/dist/chunks/{build-YUYCLCXD.js → build-XOMJDX4M.js} +18 -15
  5. package/dist/chunks/{chunk-F7OXZLY2.js → chunk-26XDDLXM.js} +2 -2
  6. package/dist/chunks/{chunk-VCE6QKFE.js → chunk-2O5J3KMT.js} +4 -4
  7. package/dist/chunks/{chunk-XI6NJLI4.js → chunk-2YRAWYGE.js} +3 -3
  8. package/dist/chunks/{chunk-X6O6XJEA.js → chunk-37V5P4VO.js} +16 -14
  9. package/dist/chunks/{chunk-EB7NJKPL.js → chunk-3F5EGINT.js} +3 -3
  10. package/dist/chunks/{chunk-RIB4S2IB.js → chunk-3HZLXCVL.js} +1 -1
  11. package/dist/chunks/{chunk-KQRVZWJU.js → chunk-3T7WSWZH.js} +1 -1
  12. package/dist/chunks/{chunk-3KNPVXJ3.js → chunk-4KD5BYHB.js} +1 -1
  13. package/dist/chunks/{chunk-XLKFJPMT.js → chunk-57RHXXXG.js} +1 -1
  14. package/dist/chunks/chunk-5GGUB4EO.js +31 -0
  15. package/dist/chunks/{chunk-R6IGDGX3.js → chunk-5XECIWME.js} +1 -1
  16. package/dist/chunks/{chunk-KAYSW4CJ.js → chunk-6JPVTPTU.js} +3 -3
  17. package/dist/chunks/{chunk-ZFWNMVNR.js → chunk-6M2KZUED.js} +19 -8
  18. package/dist/chunks/{chunk-HT2XWSAJ.js → chunk-7AEEQOD4.js} +2 -29
  19. package/dist/chunks/{chunk-HURL5EBN.js → chunk-7HE63HCR.js} +124 -161
  20. package/dist/chunks/chunk-7Q45OKWR.js +149 -0
  21. package/dist/chunks/{chunk-RI7KKKII.js → chunk-7R6M3BHM.js} +4 -18
  22. package/dist/chunks/{chunk-XBN2O34P.js → chunk-7ST552E3.js} +17 -4
  23. package/dist/chunks/{chunk-JKQWQA2T.js → chunk-AINIBIP4.js} +1 -1
  24. package/dist/chunks/{chunk-CV4S27SS.js → chunk-ASBP32T6.js} +1 -1
  25. package/dist/chunks/chunk-AYLY3ZVL.js +104 -0
  26. package/dist/chunks/{chunk-SOFC4MLS.js → chunk-BMKU5KEL.js} +9 -569
  27. package/dist/chunks/{chunk-KDYRLN6H.js → chunk-C5HKWXRR.js} +1 -1
  28. package/dist/chunks/{chunk-2MF3ZAVW.js → chunk-CJV7J7B5.js} +6 -6
  29. package/dist/chunks/{chunk-HJVTLJHO.js → chunk-DE7MBNHQ.js} +6 -6
  30. package/dist/chunks/{chunk-3L2YLLHC.js → chunk-DWIC7MRV.js} +2 -2
  31. package/dist/chunks/{chunk-GFCTRJI5.js → chunk-EZKW5YJ2.js} +1 -1
  32. package/dist/chunks/{chunk-MWYQ24FO.js → chunk-FRAXI2WT.js} +3 -3
  33. package/dist/chunks/{chunk-DDIZGOCK.js → chunk-FRZULOVH.js} +8 -6
  34. package/dist/chunks/{chunk-Y3J4VU2H.js → chunk-FWKSJYDV.js} +2 -2
  35. package/dist/chunks/chunk-FXD67VN5.js +467 -0
  36. package/dist/chunks/{chunk-EB5NBVTV.js → chunk-GISTGGBO.js} +8 -8
  37. package/dist/chunks/chunk-GY5I4AYD.js +122 -0
  38. package/dist/chunks/{chunk-PD4DYNSB.js → chunk-GZQQNLF5.js} +5 -5
  39. package/dist/chunks/{chunk-PIMIKY4X.js → chunk-IJ4X426J.js} +1 -1
  40. package/dist/chunks/{chunk-KSZ4MNHO.js → chunk-JH4WQRIU.js} +2 -2
  41. package/dist/chunks/{chunk-TVXCXIRO.js → chunk-L3UXB2CW.js} +1 -1
  42. package/dist/chunks/{chunk-O5DLWLT7.js → chunk-LXZVOR6F.js} +9 -9
  43. package/dist/chunks/{chunk-EG5BSAXD.js → chunk-MTWHQEXI.js} +1 -1
  44. package/dist/chunks/{chunk-WC7IINFV.js → chunk-NFU4XJIR.js} +1 -1
  45. package/dist/chunks/{chunk-TH2XUVDP.js → chunk-NGGLYKNU.js} +30 -6
  46. package/dist/chunks/{chunk-2PX6N4FE.js → chunk-NGNN6WF2.js} +10 -10
  47. package/dist/chunks/{chunk-GGPE5377.js → chunk-O26N2UPI.js} +1 -1
  48. package/dist/chunks/chunk-O75LSD3C.js +34 -0
  49. package/dist/chunks/{chunk-BBSS3XIW.js → chunk-OQ3C5VXZ.js} +1 -1
  50. package/dist/chunks/{chunk-M22O6CYY.js → chunk-POOO7W47.js} +1 -1
  51. package/dist/chunks/{chunk-LKTQR5JE.js → chunk-PRH6KRUT.js} +2 -2
  52. package/dist/chunks/chunk-Q2DGFCO7.js +579 -0
  53. package/dist/chunks/{chunk-OX7KI3LF.js → chunk-QFAS4OVW.js} +18 -0
  54. package/dist/chunks/{chunk-CHEZBD7H.js → chunk-R5PULMHT.js} +3 -3
  55. package/dist/chunks/{chunk-VAFU7DXZ.js → chunk-RKDCNQ4S.js} +1 -91
  56. package/dist/chunks/{chunk-BLYBHFIE.js → chunk-SF3AYAIF.js} +61 -24
  57. package/dist/chunks/{chunk-GMWRTZVZ.js → chunk-SLPSPYVR.js} +1 -1
  58. package/dist/chunks/{chunk-J5Y2QGGU.js → chunk-SWI6F4X3.js} +2 -2
  59. package/dist/chunks/chunk-V3MDDR2X.js +249 -0
  60. package/dist/chunks/{chunk-HMJVUXE6.js → chunk-VJ5NAOWB.js} +867 -625
  61. package/dist/chunks/{chunk-O5GNPPTU.js → chunk-VP5Y3SZG.js} +1 -1
  62. package/dist/chunks/{chunk-G75NFPIT.js → chunk-WNAKOXGK.js} +1 -1
  63. package/dist/chunks/{chunk-NP6BQPCN.js → chunk-WZ2S3A2A.js} +8 -6
  64. package/dist/chunks/{chunk-7QVJTI5H.js → chunk-XDGOOW3K.js} +1 -1
  65. package/dist/chunks/{chunk-UMA66MKW.js → chunk-XM3LOQIX.js} +1 -1
  66. package/dist/chunks/{chunk-CYNB6LL4.js → chunk-XNFHNTS2.js} +1 -1
  67. package/dist/chunks/{chunk-VDJN4WKH.js → chunk-XRWOTCDO.js} +1 -1
  68. package/dist/chunks/{chunk-UV2ZMFVG.js → chunk-YJKZQEHS.js} +2 -2
  69. package/dist/chunks/{chunk-STPH4Y62.js → chunk-YJUO3EKH.js} +1 -1
  70. package/dist/chunks/{chunk-Y42SPI2H.js → chunk-ZNMTDLYH.js} +6 -6
  71. package/dist/chunks/{chunk-VLPLCJZC.js → chunk-ZSFEACZU.js} +1 -1
  72. package/dist/chunks/{clear-USQM5VW5.js → clear-BWT2FJY4.js} +17 -13
  73. package/dist/chunks/{compile-vercel-config-2JNYMI6W.js → compile-vercel-config-DGM4NISW.js} +10 -7
  74. package/dist/chunks/{config-VTRIDLY4.js → config-NJAN3RMU.js} +20 -16
  75. package/dist/chunks/config-RSE6Z4LB.js +122 -0
  76. package/dist/chunks/{constants-YMCRE6IG.js → constants-WEQVJSYS.js} +1 -1
  77. package/dist/chunks/{delete-ILLSBCVQ.js → delete-LROBRBAH.js} +15 -11
  78. package/dist/chunks/{delete-VTPHK3EB.js → delete-SSL2PK2F.js} +12 -9
  79. package/dist/chunks/{disable-VTOMO64V.js → disable-ASG5JDZR.js} +12 -9
  80. package/dist/chunks/{discard-ZIOZ34ZI.js → discard-PV47B6IL.js} +12 -9
  81. package/dist/chunks/{edit-E3AMR4KM.js → edit-5ATYIOLX.js} +14 -11
  82. package/dist/chunks/{edit-JMZ5XWVW.js → edit-REI7HXGG.js} +16 -12
  83. package/dist/chunks/{enable-A4PMZ7QZ.js → enable-LZXL7XAG.js} +12 -9
  84. package/dist/chunks/{exec-CNBOV577.js → exec-XH4K34JM.js} +3 -3
  85. package/dist/chunks/{export-Y6AJ3WRZ.js → export-ZAZFQU2E.js} +12 -9
  86. package/dist/chunks/{image-26BKPAUB.js → image-QPHN5V7L.js} +7 -6
  87. package/dist/chunks/{import-builders-3H7J2SEK.js → import-builders-W3YE2V6A.js} +12 -9
  88. package/dist/chunks/{inspect-7DGKYHKW.js → inspect-BFGK72WY.js} +18 -14
  89. package/dist/chunks/{inspect-OEY4DJRI.js → inspect-FRXJRM6T.js} +18 -14
  90. package/dist/chunks/{inspect-ZW5N6O5P.js → inspect-RDMC2Z3Q.js} +17 -13
  91. package/dist/chunks/{inspect-GJFVAZIJ.js → inspect-SJEZVGPK.js} +20 -16
  92. package/dist/chunks/{inspect-N3E2PO6K.js → inspect-SSOM3FXS.js} +17 -13
  93. package/dist/chunks/{list-MIQ5D6PM.js → list-2HTR7Q3J.js} +18 -14
  94. package/dist/chunks/{list-2VTCNQEB.js → list-PHDUZVMR.js} +15 -11
  95. package/dist/chunks/{list-DTJBW7OQ.js → list-W33GXKDA.js} +18 -14
  96. package/dist/chunks/{login-L34UHAU5.js → login-JWAFHVDG.js} +30 -17
  97. package/dist/chunks/{ls-OBUDC4SB.js → ls-3AN2DZHN.js} +20 -15
  98. package/dist/chunks/{ls-SXJFBLUT.js → ls-3MH2OCP3.js} +20 -15
  99. package/dist/chunks/ls-D2POUHI7.js +176 -0
  100. package/dist/chunks/{ls-VDYUFSSC.js → ls-KDFU224B.js} +20 -15
  101. package/dist/chunks/{ls-OKO4IHWB.js → ls-KX2VBOGV.js} +18 -14
  102. package/dist/chunks/{ls-NCPQY4FV.js → ls-RWKNJQNT.js} +23 -18
  103. package/dist/chunks/{open-V5JDGXUP.js → open-IEYRB6RL.js} +15 -11
  104. package/dist/chunks/{permissions-6CPRPPBY.js → permissions-ZWZUMEHR.js} +10 -9
  105. package/dist/chunks/{publish-R27DPHFO.js → publish-UWZYBDHK.js} +12 -9
  106. package/dist/chunks/{push-VLVTBS42.js → push-IAEQ3FBF.js} +18 -15
  107. package/dist/chunks/{query-IVVRYMJN.js → query-NNOZYSED.js} +18 -14
  108. package/dist/chunks/{reorder-LJ2RBZM2.js → reorder-TKBM244W.js} +12 -9
  109. package/dist/chunks/{reply-USAISZYC.js → reply-FLBSBMTW.js} +16 -12
  110. package/dist/chunks/{resolve-CRCJYVS5.js → resolve-GJYPMWUE.js} +15 -11
  111. package/dist/chunks/{restore-6PBPEAMU.js → restore-PNI3TM3U.js} +12 -9
  112. package/dist/chunks/{rm-HHELZB7R.js → rm-76CSSSSV.js} +17 -13
  113. package/dist/chunks/{rm-TWU3JR6Z.js → rm-FN7LTIIL.js} +17 -13
  114. package/dist/chunks/{rm-KGOEOWVK.js → rm-FTE33UHE.js} +16 -12
  115. package/dist/chunks/rm-FXA5DLXQ.js +315 -0
  116. package/dist/chunks/{rm-EOD7RDSO.js → rm-PGJ4KR6U.js} +20 -16
  117. package/dist/chunks/{routes-SZI2G4SE.js → routes-2OLIBRYX.js} +3 -3
  118. package/dist/chunks/{rule-inspect-WFTVRK6B.js → rule-inspect-LJIGPTWS.js} +18 -14
  119. package/dist/chunks/{rules-AQYTFJI6.js → rules-6BMNO6M5.js} +11 -10
  120. package/dist/chunks/{schema-LUVFYPWN.js → schema-45SJNY5L.js} +9 -7
  121. package/dist/chunks/{schema-ZCDCJC7E.js → schema-HATXEQDP.js} +14 -11
  122. package/dist/chunks/set-C3UQUQ42.js +243 -0
  123. package/dist/chunks/{tags-RCNRFX7U.js → tags-BTVDROFG.js} +6 -5
  124. package/dist/chunks/{types-AJHILHO5.js → types-JGANJ5EQ.js} +12 -8
  125. package/dist/chunks/{update-I7QGAOYF.js → update-B6PSOHUW.js} +19 -15
  126. package/dist/commands/build/builder-worker.cjs +281 -0
  127. package/dist/commands/build/index.js +695 -236
  128. package/dist/commands/deploy/index.js +131 -50
  129. package/dist/commands/dev/index.js +677 -144
  130. package/dist/commands/env/index.js +1199 -565
  131. package/dist/commands/link/index.js +27 -22
  132. package/dist/commands/list/index.js +21 -14
  133. package/dist/commands-bulk.js +2051 -1019
  134. package/dist/help.js +1 -1
  135. package/dist/index.js +39 -33
  136. package/dist/version.mjs +1 -1
  137. package/package.json +48 -48
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  promptMissingCredentials
9
- } from "../../chunks/chunk-Y42SPI2H.js";
9
+ } from "../../chunks/chunk-ZNMTDLYH.js";
10
10
  import {
11
11
  Now,
12
12
  UploadErrorMissingArchive,
@@ -16,19 +16,21 @@ import {
16
16
  purchaseDomainIfAvailable,
17
17
  require_cjs,
18
18
  setupDomain
19
- } from "../../chunks/chunk-BLYBHFIE.js";
19
+ } from "../../chunks/chunk-SF3AYAIF.js";
20
20
  import "../../chunks/chunk-PRWJUY5U.js";
21
21
  import {
22
22
  login,
23
23
  require_ci_info
24
- } from "../../chunks/chunk-EB5NBVTV.js";
24
+ } from "../../chunks/chunk-GISTGGBO.js";
25
25
  import {
26
26
  readLocalConfig
27
- } from "../../chunks/chunk-O5DLWLT7.js";
27
+ } from "../../chunks/chunk-LXZVOR6F.js";
28
28
  import {
29
29
  highlight
30
- } from "../../chunks/chunk-JKQWQA2T.js";
31
- import "../../chunks/chunk-XBN2O34P.js";
30
+ } from "../../chunks/chunk-AINIBIP4.js";
31
+ import {
32
+ isGuidanceEnabled
33
+ } from "../../chunks/chunk-7ST552E3.js";
32
34
  import {
33
35
  parseMeta
34
36
  } from "../../chunks/chunk-EKPSCRJZ.js";
@@ -44,31 +46,32 @@ import {
44
46
  deprecatedArchiveSplitTgz,
45
47
  getCommandAliases,
46
48
  initSubcommand
47
- } from "../../chunks/chunk-HURL5EBN.js";
48
- import "../../chunks/chunk-2MF3ZAVW.js";
49
- import "../../chunks/chunk-WC7IINFV.js";
50
- import "../../chunks/chunk-RIB4S2IB.js";
51
- import "../../chunks/chunk-GFCTRJI5.js";
52
- import "../../chunks/chunk-EG5BSAXD.js";
53
- import "../../chunks/chunk-M22O6CYY.js";
54
- import "../../chunks/chunk-GMWRTZVZ.js";
55
- import "../../chunks/chunk-3KNPVXJ3.js";
56
- import "../../chunks/chunk-3L2YLLHC.js";
57
- import "../../chunks/chunk-UMA66MKW.js";
58
- import "../../chunks/chunk-7QVJTI5H.js";
59
- import "../../chunks/chunk-O5GNPPTU.js";
49
+ } from "../../chunks/chunk-7HE63HCR.js";
50
+ import "../../chunks/chunk-7Q45OKWR.js";
51
+ import "../../chunks/chunk-GY5I4AYD.js";
52
+ import "../../chunks/chunk-CJV7J7B5.js";
53
+ import "../../chunks/chunk-EZKW5YJ2.js";
54
+ import "../../chunks/chunk-NFU4XJIR.js";
55
+ import "../../chunks/chunk-3HZLXCVL.js";
56
+ import "../../chunks/chunk-MTWHQEXI.js";
57
+ import "../../chunks/chunk-POOO7W47.js";
58
+ import "../../chunks/chunk-SLPSPYVR.js";
59
+ import "../../chunks/chunk-4KD5BYHB.js";
60
+ import "../../chunks/chunk-DWIC7MRV.js";
61
+ import "../../chunks/chunk-XM3LOQIX.js";
62
+ import "../../chunks/chunk-XDGOOW3K.js";
63
+ import "../../chunks/chunk-VP5Y3SZG.js";
60
64
  import {
61
65
  pickOverrides
62
- } from "../../chunks/chunk-KSZ4MNHO.js";
63
- import "../../chunks/chunk-HT2XWSAJ.js";
66
+ } from "../../chunks/chunk-JH4WQRIU.js";
64
67
  import {
65
68
  stamp_default
66
69
  } from "../../chunks/chunk-64IF634X.js";
67
70
  import "../../chunks/chunk-VXYGCOKL.js";
68
- import "../../chunks/chunk-Y3J4VU2H.js";
71
+ import "../../chunks/chunk-FWKSJYDV.js";
69
72
  import {
70
73
  help
71
- } from "../../chunks/chunk-XI6NJLI4.js";
74
+ } from "../../chunks/chunk-2YRAWYGE.js";
72
75
  import {
73
76
  VERCEL_DIR,
74
77
  VERCEL_DIR_PROJECT,
@@ -77,6 +80,7 @@ import {
77
80
  createGitMeta,
78
81
  ensureLink,
79
82
  getDeployment,
83
+ getGitConfigPath,
80
84
  getLinkFromDir,
81
85
  getRepoLink,
82
86
  getVercelDirectory,
@@ -86,32 +90,39 @@ import {
86
90
  mapCertError,
87
91
  param,
88
92
  parseEnv,
93
+ parseGitConfig,
94
+ parseRepoUrl,
89
95
  parseTarget,
96
+ pluckRemoteUrls,
90
97
  printAlignedLabel,
91
98
  require_dist as require_dist2,
92
99
  require_frameworks,
93
100
  require_lib,
94
101
  validatePaths,
95
102
  validateRootDirectory
96
- } from "../../chunks/chunk-HMJVUXE6.js";
103
+ } from "../../chunks/chunk-VJ5NAOWB.js";
104
+ import "../../chunks/chunk-FXD67VN5.js";
97
105
  import {
98
106
  TelemetryClient
99
- } from "../../chunks/chunk-CYNB6LL4.js";
107
+ } from "../../chunks/chunk-XNFHNTS2.js";
100
108
  import {
101
109
  AGENT_STATUS,
102
110
  outputAgentError,
111
+ quoteArg,
103
112
  withGlobalFlags
104
- } from "../../chunks/chunk-TH2XUVDP.js";
113
+ } from "../../chunks/chunk-NGGLYKNU.js";
105
114
  import {
106
115
  require_ms
107
116
  } from "../../chunks/chunk-GGP5R3FU.js";
108
117
  import {
109
- printError,
110
- table
111
- } from "../../chunks/chunk-VAFU7DXZ.js";
118
+ printError
119
+ } from "../../chunks/chunk-AYLY3ZVL.js";
112
120
  import {
113
121
  parseArguments
114
- } from "../../chunks/chunk-XLKFJPMT.js";
122
+ } from "../../chunks/chunk-57RHXXXG.js";
123
+ import {
124
+ table
125
+ } from "../../chunks/chunk-RKDCNQ4S.js";
115
126
  import {
116
127
  AliasDomainConfigured,
117
128
  BuildError,
@@ -134,12 +145,14 @@ import {
134
145
  TooManyRequests,
135
146
  UserAborted,
136
147
  code,
137
- getCommandName,
138
- getFlagsSpecification,
139
148
  isAPIError,
140
- packageName,
141
149
  require_bytes
142
- } from "../../chunks/chunk-SOFC4MLS.js";
150
+ } from "../../chunks/chunk-BMKU5KEL.js";
151
+ import {
152
+ getCommandName,
153
+ getFlagsSpecification,
154
+ packageName
155
+ } from "../../chunks/chunk-Q2DGFCO7.js";
143
156
  import "../../chunks/chunk-P4QNYOFB.js";
144
157
  import "../../chunks/chunk-52QYYTM5.js";
145
158
  import {
@@ -148,7 +161,7 @@ import {
148
161
  output_manager_default,
149
162
  prependEmoji,
150
163
  require_dist
151
- } from "../../chunks/chunk-OX7KI3LF.js";
164
+ } from "../../chunks/chunk-QFAS4OVW.js";
152
165
  import {
153
166
  require_source
154
167
  } from "../../chunks/chunk-S7KYDPEM.js";
@@ -169,7 +182,7 @@ import {
169
182
  getSupportedNodeVersion,
170
183
  scanParentDirs
171
184
  } from "@vercel/build-utils";
172
- import { join as join4, resolve } from "path";
185
+ import { join as join4, resolve as resolve2 } from "path";
173
186
 
174
187
  // src/util/deploy/generate-cert-for-deploy.ts
175
188
  var import_tldts = __toESM(require_cjs(), 1);
@@ -316,10 +329,10 @@ function parseNdjson(text) {
316
329
  }
317
330
  async function getDeploymentCheckRunLogs(client, deploymentId, checkRunId) {
318
331
  const url = `/v2/deployments/${encodeURIComponent(deploymentId)}/check-runs/${encodeURIComponent(checkRunId)}/logs`;
319
- await new Promise((resolve2) => setTimeout(resolve2, 1e3));
332
+ await new Promise((resolve3) => setTimeout(resolve3, 1e3));
320
333
  for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
321
334
  if (attempt > 0)
322
- await new Promise((resolve2) => setTimeout(resolve2, POLL_INTERVAL_MS));
335
+ await new Promise((resolve3) => setTimeout(resolve3, POLL_INTERVAL_MS));
323
336
  const res = await client.fetch(url, { json: false });
324
337
  const text = typeof res === "string" ? res : await res.text();
325
338
  const entries = parseNdjson(text);
@@ -346,6 +359,49 @@ async function getPrebuiltJson(directory) {
346
359
  return null;
347
360
  }
348
361
 
362
+ // src/util/deploy/get-git-connect-recommendation.ts
363
+ import { resolve } from "path";
364
+ var SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set(["github", "gitlab", "bitbucket"]);
365
+ var defaultDeps = {
366
+ getGitConfigPath,
367
+ parseGitConfig,
368
+ fetchProject: (client, project) => client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`, {
369
+ accountId: project.accountId
370
+ }),
371
+ buildCommand: (client, command) => withGlobalFlags(client, command, { preserveProject: true })
372
+ };
373
+ async function getGitConnectRecommendation(client, cwd, project, options = {}) {
374
+ const { alreadyOffered = false, deps = defaultDeps } = options;
375
+ try {
376
+ if (project.link || alreadyOffered)
377
+ return void 0;
378
+ const gitConfigPath = deps.getGitConfigPath({ cwd });
379
+ if (!gitConfigPath)
380
+ return void 0;
381
+ const gitConfig = await deps.parseGitConfig(gitConfigPath);
382
+ const remoteUrls = gitConfig && pluckRemoteUrls(gitConfig);
383
+ if (!remoteUrls) {
384
+ return void 0;
385
+ }
386
+ const remotes = Object.values(remoteUrls);
387
+ const hasSupportedRemote = remotes.some((remoteUrl) => {
388
+ const repo = parseRepoUrl(remoteUrl);
389
+ return repo && SUPPORTED_PROVIDERS.has(repo.provider);
390
+ });
391
+ if (!hasSupportedRemote || client.nonInteractive && remotes.length !== 1) {
392
+ return void 0;
393
+ }
394
+ const remoteProject = await deps.fetchProject(client, project);
395
+ if (remoteProject.link)
396
+ return void 0;
397
+ const cwdFlag = resolve(cwd) === resolve(client.cwd) ? "" : ` --cwd ${quoteArg(cwd)}`;
398
+ return deps.buildCommand(client, `git connect${cwdFlag}`);
399
+ } catch (error) {
400
+ output_manager_default.debug(`Failed to resolve Git connection guidance: ${error}`);
401
+ return void 0;
402
+ }
403
+ }
404
+
349
405
  // src/util/deploy/validate-archive-format.ts
350
406
  var import_client = __toESM(require_dist2(), 1);
351
407
  var validArchiveFormats = new Set(import_client.VALID_ARCHIVE_FORMATS);
@@ -551,9 +607,6 @@ var DeployTelemetryClient = class extends TelemetryClient {
551
607
  }
552
608
  };
553
609
 
554
- // src/commands/deploy/index.ts
555
- import { determineAgent } from "@vercel/detect-agent";
556
-
557
610
  // src/commands/deploy/anonymous.ts
558
611
  var import_fs_extra3 = __toESM(require_lib(), 1);
559
612
  import { join as join3 } from "path";
@@ -579,7 +632,9 @@ async function readAnonymousState(cwd) {
579
632
  return null;
580
633
  }
581
634
  async function writeAnonymousState(cwd, state) {
582
- await (0, import_fs_extra2.outputJSON)(anonymousStatePath(cwd), state, { spaces: 2 });
635
+ const path = anonymousStatePath(cwd);
636
+ await (0, import_fs_extra2.outputJSON)(path, state, { spaces: 2, mode: 384 });
637
+ await (0, import_fs_extra2.chmod)(path, 384);
583
638
  await addToGitIgnore(cwd);
584
639
  }
585
640
  async function clearAnonymousState(cwd) {
@@ -742,7 +797,8 @@ async function handleAnonymousDeploymentError({
742
797
  }
743
798
  async function runImplicitBuild(client, cwd) {
744
799
  const projectJsonPath = join3(cwd, VERCEL_DIR, VERCEL_DIR_PROJECT);
745
- if (!await import_fs_extra3.default.pathExists(projectJsonPath)) {
800
+ const projectJsonExists = await import_fs_extra3.default.pathExists(projectJsonPath);
801
+ if (!projectJsonExists) {
746
802
  await import_fs_extra3.default.outputJSON(projectJsonPath, { settings: {} }, { spaces: 2 });
747
803
  }
748
804
  if (await import_fs_extra3.default.pathExists(join3(cwd, "package.json"))) {
@@ -751,8 +807,10 @@ async function runImplicitBuild(client, cwd) {
751
807
  const originalArgv = client.argv;
752
808
  const originalCwd = client.cwd;
753
809
  const originalStdout = client.stdout;
810
+ const previousVercelFirstDeployment = process.env.VERCEL_FIRST_DEPLOYMENT;
754
811
  client.cwd = cwd;
755
812
  client.setArgv([...originalArgv.slice(0, 2), "build", "--prod", "--yes"]);
813
+ process.env.VERCEL_FIRST_DEPLOYMENT = "1";
756
814
  client.stdout = createSinkStream();
757
815
  try {
758
816
  const build = (await import("../build/index.js")).default;
@@ -761,6 +819,14 @@ async function runImplicitBuild(client, cwd) {
761
819
  client.setArgv(originalArgv);
762
820
  client.cwd = originalCwd;
763
821
  client.stdout = originalStdout;
822
+ if (previousVercelFirstDeployment === void 0) {
823
+ delete process.env.VERCEL_FIRST_DEPLOYMENT;
824
+ } else {
825
+ process.env.VERCEL_FIRST_DEPLOYMENT = previousVercelFirstDeployment;
826
+ }
827
+ if (!projectJsonExists) {
828
+ await import_fs_extra3.default.remove(projectJsonPath);
829
+ }
764
830
  }
765
831
  }
766
832
  function createSinkStream() {
@@ -850,7 +916,7 @@ async function handleInitDeployment(client, telemetryClient) {
850
916
  args = args.slice(1);
851
917
  let paths;
852
918
  if (args.length > 0) {
853
- paths = args.map((item) => resolve(client.cwd, item));
919
+ paths = args.map((item) => resolve2(client.cwd, item));
854
920
  telemetryClient.trackCliArgumentProjectPath(paths[0]);
855
921
  } else {
856
922
  paths = [client.cwd];
@@ -1511,7 +1577,7 @@ async function handleDefaultDeploy(client, telemetryClient) {
1511
1577
  }
1512
1578
  let paths;
1513
1579
  if (parsedArguments.args.length > 0) {
1514
- paths = parsedArguments.args.map((item) => resolve(client.cwd, item));
1580
+ paths = parsedArguments.args.map((item) => resolve2(client.cwd, item));
1515
1581
  telemetryClient.trackCliArgumentProjectPath(paths[0]);
1516
1582
  } else {
1517
1583
  paths = [client.cwd];
@@ -1655,18 +1721,21 @@ async function handleDefaultDeploy(client, telemetryClient) {
1655
1721
  const { org, project } = link;
1656
1722
  const rootDirectory = project.rootDirectory;
1657
1723
  const sourceFilesOutsideRootDirectory = project.sourceFilesOutsideRootDirectory ?? true;
1724
+ const projectCwd = cwd;
1658
1725
  if (link.repoRoot) {
1659
1726
  cwd = link.repoRoot;
1660
1727
  }
1728
+ const postDeployGuidanceEnabled = !anonymousLink && (client.nonInteractive || !asJson) && isGuidanceEnabled(client, parsedArguments.flags["--guidance"], true);
1661
1729
  const prebuilt = isAnonymous || !!parsedArguments.flags["--prebuilt"];
1662
1730
  let vercelOutputDir;
1731
+ let prebuiltBuild = null;
1663
1732
  if (prebuilt) {
1664
1733
  vercelOutputDir = join4(cwd, ".vercel/output");
1665
1734
  if (link.repoRoot && link.project.rootDirectory) {
1666
1735
  vercelOutputDir = join4(cwd, link.project.rootDirectory, ".vercel/output");
1667
1736
  }
1668
1737
  let prebuiltExists = await import_fs_extra4.default.pathExists(vercelOutputDir);
1669
- if (!prebuiltExists && isAnonymous && !parsedArguments.flags["--dry"]) {
1738
+ if (isAnonymous && !parsedArguments.flags["--prebuilt"] && !parsedArguments.flags["--dry"]) {
1670
1739
  const buildExitCode = await runImplicitBuild(client, cwd);
1671
1740
  if (buildExitCode !== 0) {
1672
1741
  return buildExitCode;
@@ -1683,7 +1752,7 @@ async function handleDefaultDeploy(client, telemetryClient) {
1683
1752
  );
1684
1753
  return 1;
1685
1754
  }
1686
- const prebuiltBuild = await getPrebuiltJson(vercelOutputDir);
1755
+ prebuiltBuild = await getPrebuiltJson(vercelOutputDir);
1687
1756
  const prebuiltError = prebuiltBuild?.error || prebuiltBuild?.builds?.find((build) => "error" in build)?.error;
1688
1757
  if (prebuiltError) {
1689
1758
  output_manager_default.log(
@@ -1905,6 +1974,9 @@ async function handleDefaultDeploy(client, telemetryClient) {
1905
1974
  }
1906
1975
  if (!createArgs.projectSettings)
1907
1976
  createArgs.projectSettings = {};
1977
+ if (isAnonymous && !Object.hasOwn(localConfig, "framework") && createArgs.projectSettings.framework === void 0 && prebuiltBuild?.detectedFramework?.status === "detected" && prebuiltBuild.detectedFramework.slug) {
1978
+ createArgs.projectSettings.framework = prebuiltBuild.detectedFramework.slug;
1979
+ }
1908
1980
  createArgs.projectSettings.nodeVersion = nodeVersion;
1909
1981
  deployment = await createDeploy(
1910
1982
  client,
@@ -2296,6 +2368,9 @@ ${err.stack}`);
2296
2368
  printError(err);
2297
2369
  return 1;
2298
2370
  }
2371
+ const gitConnectCommand = postDeployGuidanceEnabled ? await getGitConnectRecommendation(client, projectCwd, project, {
2372
+ alreadyOffered: "gitConnectOffered" in link ? link.gitConnectOffered : false
2373
+ }) : void 0;
2299
2374
  if (asJson) {
2300
2375
  output_manager_default.stopSpinner();
2301
2376
  const anonymousUrl = anonymousLink ? deployment.alias?.[0] : void 0;
@@ -2325,6 +2400,12 @@ ${err.stack}`);
2325
2400
  when: "Create an account to keep deploying"
2326
2401
  }
2327
2402
  ] : [
2403
+ ...gitConnectCommand ? [
2404
+ {
2405
+ command: gitConnectCommand,
2406
+ when: "Automatically deploy changes on every push"
2407
+ }
2408
+ ] : [],
2328
2409
  {
2329
2410
  command: `${packageName} curl https://${deployment.url}`,
2330
2411
  when: "Verify deployment, including when Deployment Protection is enabled"
@@ -2345,8 +2426,6 @@ ${err.stack}`);
2345
2426
  `);
2346
2427
  return 0;
2347
2428
  }
2348
- const { isAgent } = await determineAgent();
2349
- const guidanceMode = (parsedArguments.flags["--guidance"] ?? isAgent) && !anonymousLink;
2350
2429
  if (anonymousLink) {
2351
2430
  output_manager_default.print("\n");
2352
2431
  log(
@@ -2362,7 +2441,9 @@ ${err.stack}`);
2362
2441
  deployment,
2363
2442
  deployStamp,
2364
2443
  noWait,
2365
- guidanceMode
2444
+ postDeployGuidanceEnabled,
2445
+ void 0,
2446
+ gitConnectCommand
2366
2447
  );
2367
2448
  }
2368
2449
  function handleCreateDeployError(error, localConfig) {