vercel 59.3.0 → 59.5.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 (122) hide show
  1. package/dist/chunks/{add-4L46WVRT.js → add-MH3WV6PV.js} +12 -8
  2. package/dist/chunks/{add-BBWVXE2R.js → add-W3FFMTX4.js} +15 -11
  3. package/dist/chunks/{add-KOD24LEM.js → add-Z5FM6TFI.js} +18 -14
  4. package/dist/chunks/{build-2SX3XIRI.js → build-VYYFBJL7.js} +13 -10
  5. package/dist/chunks/{chunk-F7OXZLY2.js → chunk-26XDDLXM.js} +2 -2
  6. package/dist/chunks/{chunk-RIB4S2IB.js → chunk-3HZLXCVL.js} +1 -1
  7. package/dist/chunks/{chunk-OISTYQGR.js → chunk-47VQ6H2S.js} +1 -1
  8. package/dist/chunks/{chunk-WODLA275.js → chunk-4JTF6RD7.js} +7 -7
  9. package/dist/chunks/{chunk-3KNPVXJ3.js → chunk-4KD5BYHB.js} +1 -1
  10. package/dist/chunks/{chunk-XLKFJPMT.js → chunk-57RHXXXG.js} +1 -1
  11. package/dist/chunks/chunk-5GGUB4EO.js +31 -0
  12. package/dist/chunks/chunk-5LX2JDZP.js +34 -0
  13. package/dist/chunks/chunk-7Q45OKWR.js +149 -0
  14. package/dist/chunks/{chunk-7PEQVFHI.js → chunk-7XX4ZEOV.js} +2 -2
  15. package/dist/chunks/{chunk-JKQWQA2T.js → chunk-AINIBIP4.js} +1 -1
  16. package/dist/chunks/{chunk-SOFC4MLS.js → chunk-AWCID36T.js} +8 -568
  17. package/dist/chunks/{chunk-KAYSW4CJ.js → chunk-AWSLWAOC.js} +1 -1
  18. package/dist/chunks/{chunk-KDYRLN6H.js → chunk-C5HKWXRR.js} +1 -1
  19. package/dist/chunks/{chunk-2MF3ZAVW.js → chunk-CJV7J7B5.js} +6 -6
  20. package/dist/chunks/chunk-CQJRLNTX.js +104 -0
  21. package/dist/chunks/{chunk-QKO2DGWR.js → chunk-CSCSGSQG.js} +4 -4
  22. package/dist/chunks/{chunk-3L2YLLHC.js → chunk-DWIC7MRV.js} +2 -2
  23. package/dist/chunks/{chunk-KDL2L4KL.js → chunk-E6LFKMI2.js} +13613 -14235
  24. package/dist/chunks/{chunk-GFCTRJI5.js → chunk-EZKW5YJ2.js} +1 -1
  25. package/dist/chunks/{chunk-DAA5RXUK.js → chunk-FA3MO56Q.js} +6 -4
  26. package/dist/chunks/{chunk-CURHMEJX.js → chunk-GUWPUX2Y.js} +5 -5
  27. package/dist/chunks/chunk-GY5I4AYD.js +122 -0
  28. package/dist/chunks/chunk-HGRWPPYB.js +18 -0
  29. package/dist/chunks/{chunk-D35JUCTC.js → chunk-JJQP3PYM.js} +7 -5
  30. package/dist/chunks/{chunk-KBUCAAG6.js → chunk-JNU3DTEV.js} +14 -12
  31. package/dist/chunks/{chunk-J5ZEHLFM.js → chunk-L7CEMAJG.js} +14 -3
  32. package/dist/chunks/{chunk-ANIKVXGZ.js → chunk-LLM3ZNXJ.js} +2 -2
  33. package/dist/chunks/{chunk-Z2G6SO5B.js → chunk-M3OSDZPY.js} +6 -4
  34. package/dist/chunks/{chunk-WNS53IOA.js → chunk-MRMNMFMD.js} +2 -2
  35. package/dist/chunks/{chunk-EG5BSAXD.js → chunk-MTWHQEXI.js} +1 -1
  36. package/dist/chunks/{chunk-WC7IINFV.js → chunk-NFU4XJIR.js} +1 -1
  37. package/dist/chunks/{chunk-6GWLC2IP.js → chunk-NSU2BTRS.js} +3 -3
  38. package/dist/chunks/chunk-OHER4DGX.js +451 -0
  39. package/dist/chunks/{chunk-BBSS3XIW.js → chunk-OQ3C5VXZ.js} +1 -1
  40. package/dist/chunks/{chunk-Q6QCRFTC.js → chunk-PBHBX6UL.js} +2 -2
  41. package/dist/chunks/{chunk-M22O6CYY.js → chunk-POOO7W47.js} +1 -1
  42. package/dist/chunks/{chunk-G55RLNFE.js → chunk-PPUWG2UB.js} +12 -8
  43. package/dist/chunks/chunk-Q2DGFCO7.js +579 -0
  44. package/dist/chunks/{chunk-7GE2K2WR.js → chunk-QG4PCM45.js} +334 -169
  45. package/dist/chunks/{chunk-VAFU7DXZ.js → chunk-RKDCNQ4S.js} +1 -91
  46. package/dist/chunks/{chunk-XI6NJLI4.js → chunk-RZ5NP6HN.js} +2 -2
  47. package/dist/chunks/{chunk-GMWRTZVZ.js → chunk-SLPSPYVR.js} +1 -1
  48. package/dist/chunks/{chunk-VTP6WIQA.js → chunk-TAZ5ZAKG.js} +257 -4
  49. package/dist/chunks/{chunk-ZHRZMQGN.js → chunk-TDXNNIZ6.js} +1 -1
  50. package/dist/chunks/{chunk-NN2W7WFC.js → chunk-TIWAL2YU.js} +6 -6
  51. package/dist/chunks/{chunk-P3BFTZXW.js → chunk-UUVMIXT4.js} +5 -5
  52. package/dist/chunks/{chunk-AAMJ4ZU4.js → chunk-V4YLY44R.js} +3 -17
  53. package/dist/chunks/{chunk-O5GNPPTU.js → chunk-VP5Y3SZG.js} +1 -1
  54. package/dist/chunks/{chunk-YPPWGI3F.js → chunk-VWYNSJXI.js} +7 -7
  55. package/dist/chunks/{chunk-7QVJTI5H.js → chunk-XDGOOW3K.js} +1 -1
  56. package/dist/chunks/{chunk-UMA66MKW.js → chunk-XM3LOQIX.js} +1 -1
  57. package/dist/chunks/{chunk-VDJN4WKH.js → chunk-XRWOTCDO.js} +1 -1
  58. package/dist/chunks/{chunk-MWYQ24FO.js → chunk-YIHOS3ZF.js} +2 -2
  59. package/dist/chunks/{chunk-STPH4Y62.js → chunk-YJUO3EKH.js} +1 -1
  60. package/dist/chunks/chunk-ZKUHCL6O.js +249 -0
  61. package/dist/chunks/{clear-2DMDKLWZ.js → clear-TNGRDA7D.js} +12 -8
  62. package/dist/chunks/{compile-vercel-config-7HZ4UN6R.js → compile-vercel-config-ERLXKKWW.js} +8 -5
  63. package/dist/chunks/config-7EDKML5Q.js +122 -0
  64. package/dist/chunks/{config-CVZ25C54.js → config-H22EE765.js} +15 -11
  65. package/dist/chunks/{delete-QNAGJM6C.js → delete-LORYIZHY.js} +10 -7
  66. package/dist/chunks/{delete-4LQKP5DG.js → delete-Q4S5F2AI.js} +12 -8
  67. package/dist/chunks/{disable-2RBFIZUB.js → disable-HKWCBDJC.js} +10 -7
  68. package/dist/chunks/{discard-UCOSPSUU.js → discard-UCCRF2JQ.js} +10 -7
  69. package/dist/chunks/{edit-QSAO74S4.js → edit-6IM6VRBR.js} +12 -8
  70. package/dist/chunks/{edit-JX73BG3V.js → edit-AWL35PYQ.js} +11 -8
  71. package/dist/chunks/{enable-NDSB4T26.js → enable-GN3D3L3V.js} +10 -7
  72. package/dist/chunks/{export-DB6BIYQJ.js → export-HHRVFALV.js} +10 -7
  73. package/dist/chunks/{image-MKB6II6L.js → image-4DCU4VPP.js} +6 -5
  74. package/dist/chunks/{import-builders-FIQ7QTVG.js → import-builders-DVG3HOTF.js} +9 -6
  75. package/dist/chunks/{inspect-REJXLWLL.js → inspect-B3OWUFLH.js} +12 -8
  76. package/dist/chunks/{inspect-XS2TC7TC.js → inspect-TGOJDKIT.js} +15 -11
  77. package/dist/chunks/{inspect-QWTWAYLS.js → inspect-TUW67CFZ.js} +15 -11
  78. package/dist/chunks/{inspect-IYRKEWTM.js → inspect-VLGKNHJW.js} +12 -8
  79. package/dist/chunks/{inspect-NY6QRX5W.js → inspect-VPME6UC7.js} +15 -11
  80. package/dist/chunks/{list-PXKVKXHG.js → list-2DPKDHRV.js} +15 -11
  81. package/dist/chunks/{list-VQHBVY3Q.js → list-K552ITMK.js} +15 -11
  82. package/dist/chunks/{list-CDCITV4K.js → list-TK2JO7BK.js} +12 -8
  83. package/dist/chunks/{login-PE4JK7A2.js → login-HRWEKW5P.js} +15 -11
  84. package/dist/chunks/{ls-DL2POAY2.js → ls-IOXGXEY4.js} +15 -11
  85. package/dist/chunks/{ls-S67TNMEG.js → ls-JSV2WZVF.js} +15 -10
  86. package/dist/chunks/{ls-SKOQOPK4.js → ls-M5TYGFP5.js} +15 -10
  87. package/dist/chunks/{ls-3GRHYFDM.js → ls-O2WYF5UL.js} +18 -13
  88. package/dist/chunks/ls-TM6NTZEB.js +176 -0
  89. package/dist/chunks/{ls-YHS5IEBJ.js → ls-YIF3KLF3.js} +15 -10
  90. package/dist/chunks/{open-DUN3BTDH.js → open-FWAVEWGU.js} +12 -8
  91. package/dist/chunks/{permissions-VLIZYINB.js → permissions-DPFYL47Z.js} +9 -8
  92. package/dist/chunks/{publish-36BIJPLN.js → publish-63CGFKQR.js} +10 -7
  93. package/dist/chunks/{push-5NTQV3EC.js → push-T5ZTBW3P.js} +13 -10
  94. package/dist/chunks/{query-ONR2W7HS.js → query-B6O3EMEV.js} +14 -10
  95. package/dist/chunks/{reorder-YKAT4XG3.js → reorder-ANV4NMKH.js} +10 -7
  96. package/dist/chunks/{reply-DH4ZPEXT.js → reply-C73KGOCG.js} +12 -8
  97. package/dist/chunks/{resolve-446IVH6V.js → resolve-IHSIVPEE.js} +12 -8
  98. package/dist/chunks/{restore-HA6TSOOE.js → restore-GSUNXP2O.js} +10 -7
  99. package/dist/chunks/{rm-BCPJUK2C.js → rm-4O74PS4Q.js} +12 -8
  100. package/dist/chunks/{rm-IKYJI7MP.js → rm-M7IJC2WZ.js} +12 -8
  101. package/dist/chunks/{rm-EG35766L.js → rm-PRINF4OU.js} +15 -11
  102. package/dist/chunks/rm-RV5SQFQA.js +317 -0
  103. package/dist/chunks/{rm-COV73VE4.js → rm-YDTK5ESZ.js} +13 -9
  104. package/dist/chunks/{rule-inspect-FQ2635LY.js → rule-inspect-ZZC53FLP.js} +15 -11
  105. package/dist/chunks/{rules-PBOQISWV.js → rules-SAOSSGFI.js} +10 -9
  106. package/dist/chunks/{schema-LUVFYPWN.js → schema-23ZFAKDU.js} +7 -5
  107. package/dist/chunks/{schema-4CDJVH7T.js → schema-2Q3QRMRO.js} +11 -8
  108. package/dist/chunks/set-L47ZCZBJ.js +243 -0
  109. package/dist/chunks/{tags-HNOL4JXL.js → tags-2TWLM77N.js} +5 -4
  110. package/dist/chunks/{types-AJHILHO5.js → types-G3PEUIJH.js} +11 -7
  111. package/dist/chunks/{update-ZIGVLUYG.js → update-SZH2VBD6.js} +16 -12
  112. package/dist/commands/build/index.js +30 -22
  113. package/dist/commands/deploy/index.js +41 -32
  114. package/dist/commands/dev/index.js +82 -39
  115. package/dist/commands/env/index.js +185 -253
  116. package/dist/commands/link/index.js +25 -20
  117. package/dist/commands/list/index.js +19 -12
  118. package/dist/commands-bulk.js +3672 -1717
  119. package/dist/help.js +1 -1
  120. package/dist/index.js +34 -28
  121. package/dist/version.mjs +1 -1
  122. package/package.json +48 -47
@@ -6,25 +6,26 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  import_write_build_result,
9
+ require_detect_builders_with_services,
9
10
  require_get_files,
10
11
  require_service_schedules,
11
12
  require_write_build_result,
12
13
  writeBuildResult
13
- } from "../../chunks/chunk-VTP6WIQA.js";
14
+ } from "../../chunks/chunk-TAZ5ZAKG.js";
14
15
  import {
15
16
  importBuilders,
16
17
  import_import_builders
17
- } from "../../chunks/chunk-D35JUCTC.js";
18
+ } from "../../chunks/chunk-JJQP3PYM.js";
18
19
  import {
19
20
  js_yaml_default,
20
21
  pullCommandLogic
21
- } from "../../chunks/chunk-YPPWGI3F.js";
22
+ } from "../../chunks/chunk-VWYNSJXI.js";
22
23
  import {
23
24
  require_semver
24
25
  } from "../../chunks/chunk-IB5L4LKZ.js";
25
26
  import {
26
27
  readProjectSettings
27
- } from "../../chunks/chunk-ZHRZMQGN.js";
28
+ } from "../../chunks/chunk-TDXNNIZ6.js";
28
29
  import "../../chunks/chunk-R6IGDGX3.js";
29
30
  import "../../chunks/chunk-HT2XWSAJ.js";
30
31
  import {
@@ -33,10 +34,10 @@ import {
33
34
  import "../../chunks/chunk-VXYGCOKL.js";
34
35
  import {
35
36
  buildCommand
36
- } from "../../chunks/chunk-7PEQVFHI.js";
37
+ } from "../../chunks/chunk-7XX4ZEOV.js";
37
38
  import {
38
39
  help
39
- } from "../../chunks/chunk-XI6NJLI4.js";
40
+ } from "../../chunks/chunk-RZ5NP6HN.js";
40
41
  import {
41
42
  DEFAULT_VERCEL_CONFIG_FILENAME,
42
43
  VERCEL_DIR,
@@ -54,6 +55,7 @@ import {
54
55
  require_dist,
55
56
  require_dist2,
56
57
  require_dist3,
58
+ require_dist4,
57
59
  require_frameworks,
58
60
  require_lib,
59
61
  require_main,
@@ -61,7 +63,8 @@ import {
61
63
  resolveProjectCwd,
62
64
  ua_default,
63
65
  validateConfig
64
- } from "../../chunks/chunk-KDL2L4KL.js";
66
+ } from "../../chunks/chunk-E6LFKMI2.js";
67
+ import "../../chunks/chunk-OHER4DGX.js";
65
68
  import {
66
69
  TelemetryClient
67
70
  } from "../../chunks/chunk-CYNB6LL4.js";
@@ -69,17 +72,20 @@ import {
69
72
  AGENT_REASON,
70
73
  AGENT_STATUS,
71
74
  outputAgentError
72
- } from "../../chunks/chunk-J5ZEHLFM.js";
75
+ } from "../../chunks/chunk-L7CEMAJG.js";
73
76
  import "../../chunks/chunk-GGP5R3FU.js";
74
77
  import {
75
78
  printError,
76
79
  toEnumerableError
77
- } from "../../chunks/chunk-VAFU7DXZ.js";
80
+ } from "../../chunks/chunk-CQJRLNTX.js";
78
81
  import {
79
82
  parseArguments
80
- } from "../../chunks/chunk-XLKFJPMT.js";
83
+ } from "../../chunks/chunk-57RHXXXG.js";
84
+ import "../../chunks/chunk-RKDCNQ4S.js";
85
+ import {
86
+ CantParseJSONFile
87
+ } from "../../chunks/chunk-AWCID36T.js";
81
88
  import {
82
- CantParseJSONFile,
83
89
  cmd,
84
90
  getCommandName,
85
91
  getCommandNamePlain,
@@ -87,7 +93,7 @@ import {
87
93
  getGlobalFlagsFromArgs,
88
94
  packageName,
89
95
  require_lib as require_lib2
90
- } from "../../chunks/chunk-SOFC4MLS.js";
96
+ } from "../../chunks/chunk-Q2DGFCO7.js";
91
97
  import {
92
98
  pkg_default
93
99
  } from "../../chunks/chunk-P4QNYOFB.js";
@@ -279,7 +285,7 @@ var require_service_route_ownership = __commonJS({
279
285
  scopeRoutesToServiceOwnership: () => scopeRoutesToServiceOwnership
280
286
  });
281
287
  module.exports = __toCommonJS(service_route_ownership_exports);
282
- var import_routing_utils = require_dist2();
288
+ var import_routing_utils = require_dist3();
283
289
  function isWebServiceWithPrefix(service) {
284
290
  return service.type === "web" && typeof service.routePrefix === "string";
285
291
  }
@@ -747,7 +753,7 @@ var require_framework_detection = __commonJS({
747
753
  warnIfFrameworkMismatch: () => warnIfFrameworkMismatch
748
754
  });
749
755
  module.exports = __toCommonJS(framework_detection_exports);
750
- var import_fs_detectors = require_dist3();
756
+ var import_fs_detectors = require_dist2();
751
757
  var import_frameworks = require_frameworks();
752
758
  var import_build_utils2 = __require("@vercel/build-utils");
753
759
  function logDebug(message, output) {
@@ -980,7 +986,7 @@ var require_monorepo = __commonJS({
980
986
  });
981
987
  module.exports = __toCommonJS(monorepo_exports);
982
988
  var import_path2 = __require("path");
983
- var import_fs_detectors = require_dist3();
989
+ var import_fs_detectors = require_dist2();
984
990
  var import_title = __toESM2(require_lib2());
985
991
  var import_build_utils2 = __require("@vercel/build-utils");
986
992
  async function setMonorepoDefaultSettings(cwd, workPath, projectSettings, output) {
@@ -1175,8 +1181,10 @@ var require_do_build = __commonJS({
1175
1181
  var import_build_utils2 = __require("@vercel/build-utils");
1176
1182
  var import_client = require_dist();
1177
1183
  var import_frameworks = require_frameworks();
1178
- var import_fs_detectors = require_dist3();
1179
- var import_routing_utils = require_dist2();
1184
+ var import_fs_detectors = require_dist2();
1185
+ var import_service_topology = require_dist4();
1186
+ var import_detect_builders_with_services = require_detect_builders_with_services();
1187
+ var import_routing_utils = require_dist3();
1180
1188
  var import_write_build_result3 = require_write_build_result();
1181
1189
  var import_execute_builder = require_execute_builder();
1182
1190
  var import_backend_rewrite_warning = require_backend_rewrite_warning();
@@ -1437,7 +1445,7 @@ var require_do_build = __commonJS({
1437
1445
  } else {
1438
1446
  isZeroConfig = true;
1439
1447
  const detectedBuilders = await span.child("vc.detectBuilders").trace(
1440
- () => (0, import_fs_detectors.detectBuilders)(files, pkg, {
1448
+ () => (0, import_detect_builders_with_services.detectBuildersWithServices)(files, pkg, {
1441
1449
  ...localConfig,
1442
1450
  services: void 0,
1443
1451
  experimentalServicesV2: configuredExperimentalServicesV2,
@@ -2064,7 +2072,7 @@ var require_do_build = __commonJS({
2064
2072
  );
2065
2073
  };
2066
2074
  const appendExperimentalServicesV1Routes = (services) => {
2067
- const serviceRoutes = (0, import_fs_detectors.generateServicesRoutes)(services);
2075
+ const serviceRoutes = (0, import_service_topology.generateServicesRoutes)(services);
2068
2076
  zeroConfigRoutes = (0, import_routing_utils.appendRoutesToPhase)({
2069
2077
  routes: zeroConfigRoutes,
2070
2078
  newRoutes: serviceRoutes.hostRewrites.length ? serviceRoutes.hostRewrites : null,
@@ -2124,7 +2132,7 @@ var require_do_build = __commonJS({
2124
2132
  (config2) => (hasGeneratedServicesConfig(config2) || hasNonEmptyObject(config2?.experimentalServicesV2)) && Array.isArray(config2?.routes)
2125
2133
  )?.routes : void 0;
2126
2134
  const generatedBuilders = await span.child("vc.detectGeneratedServices").trace(
2127
- () => (0, import_fs_detectors.detectBuilders)(files, pkg, {
2135
+ () => (0, import_detect_builders_with_services.detectBuildersWithServices)(files, pkg, {
2128
2136
  ...localConfig,
2129
2137
  ...generatedServicesConfig ? {
2130
2138
  services: generatedServicesConfig,
@@ -2802,7 +2810,7 @@ var require_do_build = __commonJS({
2802
2810
  });
2803
2811
 
2804
2812
  // ../../internals/cli-builder-integration/dist/index.js
2805
- var require_dist4 = __commonJS({
2813
+ var require_dist5 = __commonJS({
2806
2814
  "../../internals/cli-builder-integration/dist/index.js"(exports, module) {
2807
2815
  "use strict";
2808
2816
  var __defProp = Object.defineProperty;
@@ -2848,7 +2856,7 @@ import {
2848
2856
  validateNpmrc,
2849
2857
  glob
2850
2858
  } from "@vercel/build-utils";
2851
- var import_cli_builder_integration = __toESM(require_dist4(), 1);
2859
+ var import_cli_builder_integration = __toESM(require_dist5(), 1);
2852
2860
 
2853
2861
  // src/util/build/scrub-argv.ts
2854
2862
  function scrubArgv(argv) {
@@ -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-CURHMEJX.js";
9
+ } from "../../chunks/chunk-GUWPUX2Y.js";
10
10
  import {
11
11
  Now,
12
12
  UploadErrorMissingArchive,
@@ -16,18 +16,18 @@ import {
16
16
  purchaseDomainIfAvailable,
17
17
  require_cjs,
18
18
  setupDomain
19
- } from "../../chunks/chunk-G55RLNFE.js";
19
+ } from "../../chunks/chunk-PPUWG2UB.js";
20
20
  import "../../chunks/chunk-PRWJUY5U.js";
21
21
  import {
22
22
  login,
23
23
  require_ci_info
24
- } from "../../chunks/chunk-NN2W7WFC.js";
24
+ } from "../../chunks/chunk-TIWAL2YU.js";
25
25
  import {
26
26
  readLocalConfig
27
- } from "../../chunks/chunk-WODLA275.js";
27
+ } from "../../chunks/chunk-4JTF6RD7.js";
28
28
  import {
29
29
  highlight
30
- } from "../../chunks/chunk-JKQWQA2T.js";
30
+ } from "../../chunks/chunk-AINIBIP4.js";
31
31
  import "../../chunks/chunk-XBN2O34P.js";
32
32
  import {
33
33
  parseMeta
@@ -44,31 +44,33 @@ import {
44
44
  deprecatedArchiveSplitTgz,
45
45
  getCommandAliases,
46
46
  initSubcommand
47
- } from "../../chunks/chunk-7GE2K2WR.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";
47
+ } from "../../chunks/chunk-QG4PCM45.js";
48
+ import "../../chunks/chunk-7Q45OKWR.js";
49
+ import "../../chunks/chunk-GY5I4AYD.js";
50
+ import "../../chunks/chunk-CJV7J7B5.js";
51
+ import "../../chunks/chunk-EZKW5YJ2.js";
52
+ import "../../chunks/chunk-NFU4XJIR.js";
53
+ import "../../chunks/chunk-3HZLXCVL.js";
54
+ import "../../chunks/chunk-MTWHQEXI.js";
55
+ import "../../chunks/chunk-POOO7W47.js";
56
+ import "../../chunks/chunk-SLPSPYVR.js";
57
+ import "../../chunks/chunk-4KD5BYHB.js";
58
+ import "../../chunks/chunk-DWIC7MRV.js";
59
+ import "../../chunks/chunk-XM3LOQIX.js";
60
+ import "../../chunks/chunk-XDGOOW3K.js";
61
+ import "../../chunks/chunk-VP5Y3SZG.js";
60
62
  import {
61
63
  pickOverrides
62
- } from "../../chunks/chunk-ZHRZMQGN.js";
64
+ } from "../../chunks/chunk-TDXNNIZ6.js";
63
65
  import "../../chunks/chunk-HT2XWSAJ.js";
64
66
  import {
65
67
  stamp_default
66
68
  } from "../../chunks/chunk-64IF634X.js";
67
69
  import "../../chunks/chunk-VXYGCOKL.js";
68
- import "../../chunks/chunk-7PEQVFHI.js";
70
+ import "../../chunks/chunk-7XX4ZEOV.js";
69
71
  import {
70
72
  help
71
- } from "../../chunks/chunk-XI6NJLI4.js";
73
+ } from "../../chunks/chunk-RZ5NP6HN.js";
72
74
  import {
73
75
  VERCEL_DIR,
74
76
  VERCEL_DIR_PROJECT,
@@ -93,7 +95,8 @@ import {
93
95
  require_lib,
94
96
  validatePaths,
95
97
  validateRootDirectory
96
- } from "../../chunks/chunk-KDL2L4KL.js";
98
+ } from "../../chunks/chunk-E6LFKMI2.js";
99
+ import "../../chunks/chunk-OHER4DGX.js";
97
100
  import {
98
101
  TelemetryClient
99
102
  } from "../../chunks/chunk-CYNB6LL4.js";
@@ -101,17 +104,19 @@ import {
101
104
  AGENT_STATUS,
102
105
  outputAgentError,
103
106
  withGlobalFlags
104
- } from "../../chunks/chunk-J5ZEHLFM.js";
107
+ } from "../../chunks/chunk-L7CEMAJG.js";
105
108
  import {
106
109
  require_ms
107
110
  } from "../../chunks/chunk-GGP5R3FU.js";
108
111
  import {
109
- printError,
110
- table
111
- } from "../../chunks/chunk-VAFU7DXZ.js";
112
+ printError
113
+ } from "../../chunks/chunk-CQJRLNTX.js";
112
114
  import {
113
115
  parseArguments
114
- } from "../../chunks/chunk-XLKFJPMT.js";
116
+ } from "../../chunks/chunk-57RHXXXG.js";
117
+ import {
118
+ table
119
+ } from "../../chunks/chunk-RKDCNQ4S.js";
115
120
  import {
116
121
  AliasDomainConfigured,
117
122
  BuildError,
@@ -134,12 +139,14 @@ import {
134
139
  TooManyRequests,
135
140
  UserAborted,
136
141
  code,
137
- getCommandName,
138
- getFlagsSpecification,
139
142
  isAPIError,
140
- packageName,
141
143
  require_bytes
142
- } from "../../chunks/chunk-SOFC4MLS.js";
144
+ } from "../../chunks/chunk-AWCID36T.js";
145
+ import {
146
+ getCommandName,
147
+ getFlagsSpecification,
148
+ packageName
149
+ } from "../../chunks/chunk-Q2DGFCO7.js";
143
150
  import "../../chunks/chunk-P4QNYOFB.js";
144
151
  import "../../chunks/chunk-52QYYTM5.js";
145
152
  import {
@@ -579,7 +586,9 @@ async function readAnonymousState(cwd) {
579
586
  return null;
580
587
  }
581
588
  async function writeAnonymousState(cwd, state) {
582
- await (0, import_fs_extra2.outputJSON)(anonymousStatePath(cwd), state, { spaces: 2 });
589
+ const path = anonymousStatePath(cwd);
590
+ await (0, import_fs_extra2.outputJSON)(path, state, { spaces: 2, mode: 384 });
591
+ await (0, import_fs_extra2.chmod)(path, 384);
583
592
  await addToGitIgnore(cwd);
584
593
  }
585
594
  async function clearAnonymousState(cwd) {
@@ -9,35 +9,36 @@ import {
9
9
  } from "../../chunks/chunk-2HSQ7YUK.js";
10
10
  import {
11
11
  getUpdateCommand
12
- } from "../../chunks/chunk-ANIKVXGZ.js";
12
+ } from "../../chunks/chunk-LLM3ZNXJ.js";
13
13
  import {
14
14
  getGlobalPathConfig,
15
15
  highlight
16
- } from "../../chunks/chunk-JKQWQA2T.js";
16
+ } from "../../chunks/chunk-AINIBIP4.js";
17
17
  import {
18
18
  getSubcommand
19
19
  } from "../../chunks/chunk-YPQSDAEW.js";
20
20
  import {
21
21
  devCommand
22
- } from "../../chunks/chunk-7QVJTI5H.js";
22
+ } from "../../chunks/chunk-XDGOOW3K.js";
23
23
  import {
24
24
  import_write_build_result,
25
+ require_detect_builders_with_services,
25
26
  require_get_files,
26
27
  require_mime_types,
27
28
  require_service_schedules
28
- } from "../../chunks/chunk-VTP6WIQA.js";
29
+ } from "../../chunks/chunk-TAZ5ZAKG.js";
29
30
  import {
30
31
  importBuilders,
31
32
  require_npa
32
- } from "../../chunks/chunk-D35JUCTC.js";
33
+ } from "../../chunks/chunk-JJQP3PYM.js";
33
34
  import "../../chunks/chunk-IB5L4LKZ.js";
34
35
  import {
35
36
  pickOverrides
36
- } from "../../chunks/chunk-ZHRZMQGN.js";
37
+ } from "../../chunks/chunk-TDXNNIZ6.js";
37
38
  import "../../chunks/chunk-R6IGDGX3.js";
38
39
  import {
39
40
  help
40
- } from "../../chunks/chunk-XI6NJLI4.js";
41
+ } from "../../chunks/chunk-RZ5NP6HN.js";
41
42
  import {
42
43
  VERCEL_DIR,
43
44
  VERCEL_OIDC_TOKEN,
@@ -68,36 +69,40 @@ import {
68
69
  setupAndLink,
69
70
  tryDetectServices,
70
71
  validateConfig
71
- } from "../../chunks/chunk-KDL2L4KL.js";
72
+ } from "../../chunks/chunk-E6LFKMI2.js";
73
+ import "../../chunks/chunk-OHER4DGX.js";
72
74
  import {
73
75
  TelemetryClient
74
76
  } from "../../chunks/chunk-CYNB6LL4.js";
75
77
  import {
76
78
  buildCommandWithYes,
77
79
  outputActionRequired
78
- } from "../../chunks/chunk-J5ZEHLFM.js";
80
+ } from "../../chunks/chunk-L7CEMAJG.js";
79
81
  import {
80
82
  require_ms
81
83
  } from "../../chunks/chunk-GGP5R3FU.js";
82
84
  import {
83
85
  printError
84
- } from "../../chunks/chunk-VAFU7DXZ.js";
86
+ } from "../../chunks/chunk-CQJRLNTX.js";
85
87
  import {
86
88
  parseArguments
87
- } from "../../chunks/chunk-XLKFJPMT.js";
89
+ } from "../../chunks/chunk-57RHXXXG.js";
90
+ import "../../chunks/chunk-RKDCNQ4S.js";
88
91
  import {
89
92
  CantParseJSONFile,
90
93
  LambdaSizeExceededError,
91
94
  MissingDotenvVarsError,
92
95
  NowError,
96
+ require_bytes
97
+ } from "../../chunks/chunk-AWCID36T.js";
98
+ import {
93
99
  cmd,
94
100
  getCommandName,
95
101
  getCommandNamePlain,
96
102
  getFlagsSpecification,
97
103
  getTitleName,
98
- packageName,
99
- require_bytes
100
- } from "../../chunks/chunk-SOFC4MLS.js";
104
+ packageName
105
+ } from "../../chunks/chunk-Q2DGFCO7.js";
101
106
  import {
102
107
  pkg_default
103
108
  } from "../../chunks/chunk-P4QNYOFB.js";
@@ -16755,6 +16760,8 @@ import path5 from "path";
16755
16760
  var import_chalk3 = __toESM(require_source(), 1);
16756
16761
  var import_ms6 = __toESM(require_ms(), 1);
16757
16762
  var import_fs_extra2 = __toESM(require_lib(), 1);
16763
+ var import_fs_detectors3 = __toESM(require_dist3(), 1);
16764
+ var import_frameworks3 = __toESM(require_frameworks(), 1);
16758
16765
  import { resolve, join as join5 } from "path";
16759
16766
 
16760
16767
  // src/util/dev/server.ts
@@ -16812,13 +16819,16 @@ async function checkForPort(port, timeout) {
16812
16819
  var import_npm_package_arg = __toESM(require_npa(), 1);
16813
16820
  var import_json_parse_better_errors = __toESM(require_json_parse_better_errors(), 1);
16814
16821
  var import_client = __toESM(require_dist2(), 1);
16815
- var import_routing_utils3 = __toESM(require_dist3(), 1);
16816
- var import_fs_detectors3 = __toESM(require_dist4(), 1);
16822
+ var import_routing_utils3 = __toESM(require_dist4(), 1);
16823
+ var import_fs_detectors2 = __toESM(require_dist3(), 1);
16824
+ var import_detect_builders_with_services = __toESM(require_detect_builders_with_services(), 1);
16817
16825
  var import_frameworks2 = __toESM(require_frameworks(), 1);
16818
16826
  import {
16819
16827
  cloneEnv as cloneEnv2,
16820
16828
  getNodeBinPaths as getNodeBinPaths2,
16821
16829
  isQueueBackedService as isQueueBackedService3,
16830
+ isExperimentalService as isExperimentalService2,
16831
+ isExperimentalServiceV2 as isExperimentalServiceV22,
16822
16832
  FileFsRef as FileFsRef2,
16823
16833
  spawnCommand as spawnCommand2,
16824
16834
  shouldUseExperimentalBackends
@@ -16847,7 +16857,7 @@ function isURL(str) {
16847
16857
  }
16848
16858
 
16849
16859
  // src/util/dev/router.ts
16850
- var import_routing_utils = __toESM(require_dist3(), 1);
16860
+ var import_routing_utils = __toESM(require_dist4(), 1);
16851
16861
 
16852
16862
  // src/util/dev/parse-query-string.ts
16853
16863
  function parseQueryString(querystring) {
@@ -17450,7 +17460,7 @@ function getMimeType(fileName) {
17450
17460
  // src/util/dev/builder.ts
17451
17461
  var import_ms = __toESM(require_ms(), 1);
17452
17462
  var import_bytes = __toESM(require_bytes(), 1);
17453
- var import_fs_detectors = __toESM(require_dist4(), 1);
17463
+ var import_fs_detectors = __toESM(require_dist3(), 1);
17454
17464
  var import_pluralize = __toESM(require_pluralize(), 1);
17455
17465
  var import_minimatch = __toESM(require_minimatch(), 1);
17456
17466
  import { readFileSync, unlinkSync } from "fs";
@@ -17480,7 +17490,7 @@ function treeKill(pid, signal = "SIGTERM") {
17480
17490
  }
17481
17491
 
17482
17492
  // src/util/dev/builder.ts
17483
- var import_routing_utils2 = __toESM(require_dist3(), 1);
17493
+ var import_routing_utils2 = __toESM(require_dist4(), 1);
17484
17494
  async function deserializeOutput(obj) {
17485
17495
  switch (obj.type) {
17486
17496
  case "FileFsRef": {
@@ -18046,7 +18056,6 @@ function redirect(it) {
18046
18056
  var import_ms2 = __toESM(require_ms(), 1);
18047
18057
  var import_get_port = __toESM(require_get_port(), 1);
18048
18058
  var import_chalk = __toESM(require_source(), 1);
18049
- var import_fs_detectors2 = __toESM(require_dist4(), 1);
18050
18059
  var import_frameworks = __toESM(require_frameworks(), 1);
18051
18060
  import path2 from "path";
18052
18061
  import { Transform, Writable } from "stream";
@@ -18161,6 +18170,10 @@ function getNextCronDelay(expression, now = /* @__PURE__ */ new Date()) {
18161
18170
 
18162
18171
  // src/util/dev/services-orchestrator.ts
18163
18172
  import {
18173
+ getInternalServiceCronPath,
18174
+ getInternalServiceCronPathPrefix,
18175
+ getInternalServiceWorkerPathPrefix,
18176
+ isExperimentalServiceV2,
18164
18177
  isExperimentalService,
18165
18178
  isQueueBackedService,
18166
18179
  isQueueTriggeredService,
@@ -18368,10 +18381,10 @@ function createServiceLogger(serviceName, colorIndex, maxNameLength) {
18368
18381
  }
18369
18382
  function getServiceRoutePrefixes(service) {
18370
18383
  if (isQueueTriggeredService(service) || isWorkflowTriggeredService(service)) {
18371
- return [(0, import_fs_detectors2.getInternalServiceWorkerPathPrefix)(service.name)];
18384
+ return [getInternalServiceWorkerPathPrefix(service.name)];
18372
18385
  }
18373
18386
  if (isScheduleTriggeredService(service)) {
18374
- return [(0, import_fs_detectors2.getInternalServiceCronPathPrefix)(service.name)];
18387
+ return [getInternalServiceCronPathPrefix(service.name)];
18375
18388
  }
18376
18389
  if (service.type === "web") {
18377
18390
  return [service.routePrefix || "/"];
@@ -18457,7 +18470,7 @@ var ServicesOrchestrator = class {
18457
18470
  const pythonWorkspaces = options.services.filter((service) => service.runtime === "python").map(
18458
18471
  (service) => path2.resolve(
18459
18472
  this.cwd,
18460
- (0, import_fs_detectors2.isExperimentalServiceV2)(service) ? service.root || "." : service.workspace || "."
18473
+ isExperimentalServiceV2(service) ? service.root || "." : service.workspace || "."
18461
18474
  )
18462
18475
  );
18463
18476
  this.pythonServiceCount = new Set(pythonWorkspaces).size;
@@ -18666,7 +18679,7 @@ var ServicesOrchestrator = class {
18666
18679
  colorIndex,
18667
18680
  this.maxNameLength
18668
18681
  );
18669
- const spec = (0, import_fs_detectors2.isExperimentalServiceV2)(service) ? this.getV2StartSpec(service) : this.getV1StartSpec(service);
18682
+ const spec = isExperimentalServiceV2(service) ? this.getV2StartSpec(service) : this.getV1StartSpec(service);
18670
18683
  const port = this.servicePorts.get(service.name);
18671
18684
  if (port !== void 0) {
18672
18685
  spec.env.VERCEL_DEV_PORT = String(port);
@@ -19073,7 +19086,7 @@ var ServicesOrchestrator = class {
19073
19086
  for (const [name, managed] of this.managedServices) {
19074
19087
  const service = this.services.find((candidate) => candidate.name === name);
19075
19088
  const crons = managed.crons && managed.crons.length > 0 ? managed.crons : service && isExperimentalService(service) && isScheduleTriggeredService(service) && service.schedule ? (0, import_service_schedules.getStaticServiceSchedules)(service.schedule).map((schedule) => ({
19076
- path: (0, import_fs_detectors2.getInternalServiceCronPath)(
19089
+ path: getInternalServiceCronPath(
19077
19090
  name,
19078
19091
  service.entrypoint || service.builder.src || "index",
19079
19092
  service.handlerFunction || "cron"
@@ -19764,10 +19777,10 @@ function isApiDirBuild(build) {
19764
19777
  return typeof src === "string" && src.startsWith("api/");
19765
19778
  }
19766
19779
  function sortBuilders(buildA, buildB) {
19767
- if (buildA && buildA.use && (0, import_fs_detectors3.isOfficialRuntime)("static-build", buildA.use)) {
19780
+ if (buildA && buildA.use && (0, import_fs_detectors2.isOfficialRuntime)("static-build", buildA.use)) {
19768
19781
  return 1;
19769
19782
  }
19770
- if (buildB && buildB.use && (0, import_fs_detectors3.isOfficialRuntime)("static-build", buildB.use)) {
19783
+ if (buildB && buildB.use && (0, import_fs_detectors2.isOfficialRuntime)("static-build", buildB.use)) {
19771
19784
  return -1;
19772
19785
  }
19773
19786
  return 0;
@@ -21109,7 +21122,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21109
21122
  return void 0;
21110
21123
  }
21111
21124
  async _getVercelConfig() {
21112
- const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-7HZ4UN6R.js");
21125
+ const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-ERLXKKWW.js");
21113
21126
  await compileVercelConfig(this.cwd);
21114
21127
  const configPath = getLocalPathConfig(this.cwd);
21115
21128
  const [
@@ -21140,7 +21153,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21140
21153
  const files = (await staticFiles(this.cwd, {})).map(
21141
21154
  (f) => relative2(this.cwd, f)
21142
21155
  );
21143
- const detectedBuilders = await (0, import_fs_detectors3.detectBuilders)(files, pkg, {
21156
+ const detectedBuilders = await (0, import_detect_builders_with_services.detectBuildersWithServices)(files, pkg, {
21144
21157
  tag: "latest",
21145
21158
  bunVersion: vercelConfig.bunVersion,
21146
21159
  functions: vercelConfig.functions,
@@ -21211,11 +21224,11 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21211
21224
  }
21212
21225
  vercelConfig.builds = vercelConfig.builds || [];
21213
21226
  vercelConfig.builds.push(
21214
- (0, import_fs_detectors3.getProxyBuilder)(vercelConfig.proxy, "latest", vercelConfig.functions)
21227
+ (0, import_fs_detectors2.getProxyBuilder)(vercelConfig.proxy, "latest", vercelConfig.functions)
21215
21228
  );
21216
21229
  }
21217
21230
  if (this.sidecars === void 0) {
21218
- const services = (this.services ?? []).filter(import_fs_detectors3.isExperimentalServiceV2);
21231
+ const services = (this.services ?? []).filter(isExperimentalServiceV22);
21219
21232
  this.sidecars = await collectBuilderDevSidecars({
21220
21233
  builds: this.shouldUseServicesOrchestrator() ? services.map((service) => service.builder) : vercelConfig.builds ?? [],
21221
21234
  workPath: this.cwd,
@@ -21241,8 +21254,8 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21241
21254
  return true;
21242
21255
  });
21243
21256
  this.caseSensitive = hasNewRoutingProperties(vercelConfig);
21244
- this.apiDir = (0, import_fs_detectors3.detectApiDirectory)(vercelConfig.builds || []);
21245
- this.apiExtensions = (0, import_fs_detectors3.detectApiExtensions)(vercelConfig.builds || []);
21257
+ this.apiDir = (0, import_fs_detectors2.detectApiDirectory)(vercelConfig.builds || []);
21258
+ this.apiExtensions = (0, import_fs_detectors2.detectApiExtensions)(vercelConfig.builds || []);
21246
21259
  let [runEnv, buildEnv] = await Promise.all([
21247
21260
  this.getLocalEnv(".env", vercelConfig.env),
21248
21261
  this.getLocalEnv(".env.build", vercelConfig.build?.env)
@@ -21380,6 +21393,18 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21380
21393
  resolveBuildFiles(files) {
21381
21394
  return Object.keys(files).filter(this.filter);
21382
21395
  }
21396
+ /**
21397
+ * `this.filter` expects gitignore-style relative paths but chokidar reports
21398
+ * absolute ones, so without relativizing, anchored patterns never match —
21399
+ * including the default `/target` rule for Cargo projects.
21400
+ */
21401
+ isWatcherIgnored(fsPath) {
21402
+ const relativePath = relative2(this.cwd, fsPath);
21403
+ if (relativePath === "") {
21404
+ return false;
21405
+ }
21406
+ return !this.filter(relativePath);
21407
+ }
21383
21408
  start(...listenSpec) {
21384
21409
  if (!this.startPromise) {
21385
21410
  this.startPromise = this._start(...listenSpec).catch((err) => {
@@ -21458,7 +21483,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21458
21483
  });
21459
21484
  devCommandPromise = this.orchestrator.startAll();
21460
21485
  this.devProcessOrigin = void 0;
21461
- const queueServices = orchestratorServices.filter(import_fs_detectors3.isExperimentalService).filter(isQueueBackedService3);
21486
+ const queueServices = orchestratorServices.filter(isExperimentalService2).filter(isQueueBackedService3);
21462
21487
  if (queueServices.length > 0) {
21463
21488
  this.queueBroker = new QueueBroker(
21464
21489
  queueServices,
@@ -21471,7 +21496,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21471
21496
  }
21472
21497
  output_manager_default.print(`${import_chalk2.default.cyan(">")} Available at:
21473
21498
  `);
21474
- const v1WebServices = (this.services || []).filter(import_fs_detectors3.isExperimentalService).filter((service) => service.type === "web");
21499
+ const v1WebServices = (this.services || []).filter(isExperimentalService2).filter((service) => service.type === "web");
21475
21500
  if (v1WebServices.length > 0) {
21476
21501
  for (const service of v1WebServices) {
21477
21502
  const servicePath = service.routePrefix || "/";
@@ -21514,7 +21539,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21514
21539
  }
21515
21540
  await import_fs_extra.default.mkdirp(this.devCacheDir);
21516
21541
  this.watcher = watch(this.cwd, {
21517
- ignored: (path6) => !this.filter(path6),
21542
+ ignored: (fsPath) => this.isWatcherIgnored(fsPath),
21518
21543
  ignoreInitial: true,
21519
21544
  usePolling: false,
21520
21545
  persistent: true
@@ -21835,7 +21860,7 @@ ${error_code}
21835
21860
  if (!this.serviceRoutesTable) {
21836
21861
  this.serviceRoutesTable = /* @__PURE__ */ new Map();
21837
21862
  for (const service of this.services || []) {
21838
- if (!(0, import_fs_detectors3.isExperimentalServiceV2)(service))
21863
+ if (!isExperimentalServiceV22(service))
21839
21864
  continue;
21840
21865
  const { routes, error: error2 } = (0, import_routing_utils3.getTransformedRoutes)({
21841
21866
  routes: service.routes,
@@ -22564,7 +22589,7 @@ function releaseDevLock(projectRoot) {
22564
22589
  }
22565
22590
 
22566
22591
  // src/commands/dev/dev.ts
22567
- async function dev(client, opts, args2, telemetry) {
22592
+ async function dev(client, opts, args2, telemetry, localConfig) {
22568
22593
  const [dir = "."] = args2;
22569
22594
  let cwd = resolve(dir);
22570
22595
  const listen2 = parseListen(opts["--listen"] || "3000");
@@ -22666,6 +22691,24 @@ To link your project, run ${getCommandName("dev")} without \`-L\` or \`--local\`
22666
22691
  displayDetectedServices(services);
22667
22692
  useImplicitServicesEnvInjection = servicesResult.useImplicitEnvInjection;
22668
22693
  }
22694
+ const hasExplicitBuilds = Boolean(localConfig?.builds?.length);
22695
+ const hasExplicitFramework = localConfig?.framework !== void 0;
22696
+ const hasServicesConfig = Boolean(
22697
+ localConfig?.services ?? localConfig?.experimentalServicesV2 ?? localConfig?.experimentalServices
22698
+ );
22699
+ const shouldDetectFramework = link.status === "not_linked" && Boolean(opts["--local"]) && !foundServices && !hasServicesConfig && !hasExplicitBuilds && !hasExplicitFramework;
22700
+ if (shouldDetectFramework) {
22701
+ const detectedFramework = await (0, import_fs_detectors3.detectFramework)({
22702
+ fs: new import_fs_detectors3.LocalFileSystemDetector(cwd),
22703
+ frameworkList: import_frameworks3.frameworkList
22704
+ });
22705
+ if (detectedFramework) {
22706
+ output_manager_default.debug(
22707
+ `Detected framework ${detectedFramework} for unlinked local dev`
22708
+ );
22709
+ projectSettings = { framework: detectedFramework };
22710
+ }
22711
+ }
22669
22712
  let lockAcquired = false;
22670
22713
  if (foundServices) {
22671
22714
  const port = typeof listen2[0] === "number" ? listen2[0] : 0;
@@ -22927,7 +22970,7 @@ async function main(client) {
22927
22970
  return 1;
22928
22971
  }
22929
22972
  try {
22930
- return await dev(client, parsedArgs.flags, args2, telemetry);
22973
+ return await dev(client, parsedArgs.flags, args2, telemetry, vercelConfig);
22931
22974
  } catch (err) {
22932
22975
  if (err instanceof DevCommandExitError || err instanceof ServiceStartError) {
22933
22976
  output_manager_default.error(err.message);