vercel 54.20.0 → 54.21.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 (65) hide show
  1. package/dist/chunks/{add-IB7HE5S5.js → add-KZSG7SVG.js} +4 -4
  2. package/dist/chunks/{add-TF5VZLCY.js → add-UDJ45UVF.js} +5 -5
  3. package/dist/chunks/{chunk-YWLVPKNT.js → chunk-6SVPJXCO.js} +1 -1
  4. package/dist/chunks/{chunk-FVI6UYNL.js → chunk-6W7I5IOO.js} +1 -1
  5. package/dist/chunks/{chunk-JHQOIGTY.js → chunk-BEETD7P4.js} +3 -3
  6. package/dist/chunks/{chunk-JDO6BSKN.js → chunk-BLWPQEED.js} +4 -4
  7. package/dist/chunks/{chunk-7PAKWBN4.js → chunk-DBA4N3OZ.js} +2 -2
  8. package/dist/chunks/{chunk-IZOHLD5D.js → chunk-DDS5Z2MB.js} +53 -4
  9. package/dist/chunks/{chunk-3S2QGKYZ.js → chunk-DJ4JEVDI.js} +1 -1
  10. package/dist/chunks/{chunk-FZZWTDNQ.js → chunk-FCYCUCLI.js} +2 -2
  11. package/dist/chunks/{chunk-U3FBUYRS.js → chunk-HAZXLIKZ.js} +1 -1
  12. package/dist/chunks/{chunk-RB7WQKNC.js → chunk-IR674PKY.js} +5 -2
  13. package/dist/chunks/{chunk-5MVXR7B7.js → chunk-JAUGUJR3.js} +1 -1
  14. package/dist/chunks/{chunk-Q7GZMMHB.js → chunk-JIX2UI23.js} +3 -3
  15. package/dist/chunks/{chunk-ITU4COOO.js → chunk-KGPSD6TA.js} +9 -44
  16. package/dist/chunks/{chunk-T63I6OUR.js → chunk-KS5FONWU.js} +4 -4
  17. package/dist/chunks/{chunk-P726GMBL.js → chunk-LVR7QUSG.js} +1 -1
  18. package/dist/chunks/{chunk-LFODAB54.js → chunk-R5FOIIHT.js} +6 -0
  19. package/dist/chunks/{chunk-O2QNLUYX.js → chunk-S2N7BLSM.js} +1 -1
  20. package/dist/chunks/{chunk-4BEUS7AL.js → chunk-SCQAJO6E.js} +88 -2
  21. package/dist/chunks/{chunk-Q4A2Q46Z.js → chunk-TYXSXFVM.js} +4 -4
  22. package/dist/chunks/{chunk-6ISLGUMI.js → chunk-UDIFOPZL.js} +4 -4
  23. package/dist/chunks/{chunk-TV7GKFSY.js → chunk-VDTSYCXY.js} +2 -2
  24. package/dist/chunks/{chunk-GDAO4PGA.js → chunk-VFXF4O4X.js} +3 -3
  25. package/dist/chunks/{compile-vercel-config-XEZ2TPQ4.js → compile-vercel-config-DY63NSZV.js} +2 -2
  26. package/dist/chunks/{delete-O3F4EP2W.js → delete-WVLC7FLA.js} +3 -3
  27. package/dist/chunks/{disable-SJWGUQKZ.js → disable-VLYKCAM5.js} +3 -3
  28. package/dist/chunks/{discard-EQD6ENC3.js → discard-GGNJLKTH.js} +3 -3
  29. package/dist/chunks/{edit-NAIWNSXE.js → edit-ZU5K7DM3.js} +4 -4
  30. package/dist/chunks/{enable-LXO62HU5.js → enable-G3MUGP3W.js} +3 -3
  31. package/dist/chunks/{export-EHVTYAAP.js → export-QHSB2FON.js} +3 -3
  32. package/dist/chunks/{image-2DL7JEWW.js → image-CWHCW3N5.js} +4 -4
  33. package/dist/chunks/{inspect-PL3PE5IJ.js → inspect-HFCKYQQ3.js} +4 -4
  34. package/dist/chunks/{inspect-EGXHWKY3.js → inspect-OVAC6PJK.js} +4 -4
  35. package/dist/chunks/{inspect-Z3QJOMNP.js → inspect-QJSREPM3.js} +4 -4
  36. package/dist/chunks/{inspect-6IHZTLFA.js → inspect-W6RHYESL.js} +4 -4
  37. package/dist/chunks/{list-KNRPDNQF.js → list-2XYQW3YA.js} +4 -4
  38. package/dist/chunks/{list-BB4T4KT5.js → list-R37YS5CX.js} +3 -3
  39. package/dist/chunks/{ls-EP4Q6VF4.js → ls-7JNUKRV2.js} +4 -4
  40. package/dist/chunks/{ls-IQKMDRUB.js → ls-HKVAT223.js} +4 -4
  41. package/dist/chunks/{ls-MUS72LBS.js → ls-JJXUYZU7.js} +4 -4
  42. package/dist/chunks/{ls-FTQGK4R6.js → ls-X7Y37IPT.js} +5 -5
  43. package/dist/chunks/{publish-27V2MMFS.js → publish-MYVZ4UTW.js} +3 -3
  44. package/dist/chunks/{query-C6FEOG5R.js → query-ZH2YJPAC.js} +3 -3
  45. package/dist/chunks/{reorder-DCSIJX72.js → reorder-VY53EYZJ.js} +3 -3
  46. package/dist/chunks/{restore-NRUBGNSK.js → restore-F2AEG3WO.js} +3 -3
  47. package/dist/chunks/{rm-EZFCCZFT.js → rm-IDSOMXQR.js} +4 -4
  48. package/dist/chunks/{rm-NMSG2WG6.js → rm-T6Z6WZZN.js} +4 -4
  49. package/dist/chunks/{rm-GWW57H2V.js → rm-VUL4FHMX.js} +5 -5
  50. package/dist/chunks/{rule-inspect-XPZJO3Y4.js → rule-inspect-ELB7P5YA.js} +5 -5
  51. package/dist/chunks/{rules-C6SB24UO.js → rules-XR6U5U7F.js} +7 -7
  52. package/dist/chunks/{schema-Z6L3EN6F.js → schema-WKPB25ZF.js} +3 -3
  53. package/dist/chunks/{tags-5PFVWGLK.js → tags-NSWTVGHE.js} +3 -3
  54. package/dist/chunks/{update-BCLMLJM7.js → update-H4Q24DK4.js} +5 -5
  55. package/dist/commands/build/index.js +3268 -220
  56. package/dist/commands/deploy/index.js +11 -11
  57. package/dist/commands/dev/index.js +9 -9
  58. package/dist/commands/env/index.js +5 -5
  59. package/dist/commands/link/index.js +8 -8
  60. package/dist/commands/list/index.js +10 -4
  61. package/dist/commands-bulk.js +564 -68
  62. package/dist/help.js +1 -1
  63. package/dist/index.js +10 -10
  64. package/dist/version.mjs +1 -1
  65. package/package.json +18 -16
@@ -31,7 +31,7 @@ import {
31
31
  runInteractiveEditLoop,
32
32
  stripQuotes,
33
33
  validateActionFlags
34
- } from "./chunks/chunk-3S2QGKYZ.js";
34
+ } from "./chunks/chunk-DJ4JEVDI.js";
35
35
  import {
36
36
  getRouteVersions
37
37
  } from "./chunks/chunk-AHU7WNL2.js";
@@ -49,7 +49,7 @@ import {
49
49
  parsePosition,
50
50
  parseSubcommandArgs,
51
51
  withGlobalFlags
52
- } from "./chunks/chunk-TV7GKFSY.js";
52
+ } from "./chunks/chunk-VDTSYCXY.js";
53
53
  import {
54
54
  normalizeRepeatableStringFilters,
55
55
  parseTimeFlag
@@ -66,11 +66,11 @@ import {
66
66
  resolveOpenApiTagForTeamsCli,
67
67
  setAutoUpdate,
68
68
  tryOpenApiFallback
69
- } from "./chunks/chunk-JDO6BSKN.js";
69
+ } from "./chunks/chunk-BLWPQEED.js";
70
70
  import {
71
71
  getUpdateCommand,
72
72
  isGlobal
73
- } from "./chunks/chunk-FVI6UYNL.js";
73
+ } from "./chunks/chunk-6W7I5IOO.js";
74
74
  import {
75
75
  Now,
76
76
  addDomain,
@@ -91,14 +91,14 @@ import {
91
91
  require_format,
92
92
  require_jsonlines,
93
93
  setupDomain
94
- } from "./chunks/chunk-T63I6OUR.js";
94
+ } from "./chunks/chunk-KS5FONWU.js";
95
95
  import {
96
96
  getGlobalPathConfig,
97
97
  persistAuthConfig,
98
98
  readLocalConfig,
99
99
  sleep,
100
100
  writeToConfigFile
101
- } from "./chunks/chunk-FZZWTDNQ.js";
101
+ } from "./chunks/chunk-FCYCUCLI.js";
102
102
  import "./chunks/chunk-V5P25P7F.js";
103
103
  import {
104
104
  ellipsis,
@@ -128,7 +128,7 @@ import {
128
128
  import {
129
129
  formatEnvironment,
130
130
  validateLsArgs
131
- } from "./chunks/chunk-U3FBUYRS.js";
131
+ } from "./chunks/chunk-HAZXLIKZ.js";
132
132
  import {
133
133
  validateJsonOutput
134
134
  } from "./chunks/chunk-XPKWKPWA.js";
@@ -398,6 +398,7 @@ import {
398
398
  updateSubcommand2,
399
399
  updateSubcommand3,
400
400
  updateSubcommand4,
401
+ updateSubcommand5,
401
402
  upgradeCommand,
402
403
  uploadSubcommand,
403
404
  usageCommand,
@@ -405,7 +406,7 @@ import {
405
406
  webAnalyticsSubcommand,
406
407
  webhooksCommand,
407
408
  whoamiCommand
408
- } from "./chunks/chunk-4BEUS7AL.js";
409
+ } from "./chunks/chunk-SCQAJO6E.js";
409
410
  import {
410
411
  addSubcommand as addSubcommand12,
411
412
  inspectSubcommand as inspectSubcommand7,
@@ -465,9 +466,9 @@ import "./chunks/chunk-DFEUWDGM.js";
465
466
  import "./chunks/chunk-FNRZFHFO.js";
466
467
  import {
467
468
  main
468
- } from "./chunks/chunk-Q4A2Q46Z.js";
469
+ } from "./chunks/chunk-TYXSXFVM.js";
469
470
  import "./chunks/chunk-IB5L4LKZ.js";
470
- import "./chunks/chunk-5MVXR7B7.js";
471
+ import "./chunks/chunk-JAUGUJR3.js";
471
472
  import {
472
473
  require_execa
473
474
  } from "./chunks/chunk-24FCBXI4.js";
@@ -482,19 +483,19 @@ import {
482
483
  } from "./chunks/chunk-VXYGCOKL.js";
483
484
  import {
484
485
  ensureLink
485
- } from "./chunks/chunk-Q7GZMMHB.js";
486
- import "./chunks/chunk-6ISLGUMI.js";
486
+ } from "./chunks/chunk-JIX2UI23.js";
487
+ import "./chunks/chunk-UDIFOPZL.js";
487
488
  import {
488
489
  AGENT_ACTION,
489
490
  AGENT_REASON,
490
491
  AGENT_STATUS
491
492
  } from "./chunks/chunk-QH7WYDEP.js";
492
- import "./chunks/chunk-YWLVPKNT.js";
493
- import "./chunks/chunk-O2QNLUYX.js";
493
+ import "./chunks/chunk-6SVPJXCO.js";
494
+ import "./chunks/chunk-S2N7BLSM.js";
494
495
  import {
495
496
  detectExplicitScope,
496
497
  getScope
497
- } from "./chunks/chunk-P726GMBL.js";
498
+ } from "./chunks/chunk-LVR7QUSG.js";
498
499
  import {
499
500
  help
500
501
  } from "./chunks/chunk-YSIZGIDP.js";
@@ -546,7 +547,7 @@ import {
546
547
  selectAndParseRemoteUrl,
547
548
  selectOrg,
548
549
  ua_default
549
- } from "./chunks/chunk-RB7WQKNC.js";
550
+ } from "./chunks/chunk-IR674PKY.js";
550
551
  import {
551
552
  argvHasNonInteractive,
552
553
  buildCommandWithGlobalFlags,
@@ -559,7 +560,7 @@ import {
559
560
  outputAgentError,
560
561
  outputAgentSuccess,
561
562
  shouldEmitNonInteractiveCommandError
562
- } from "./chunks/chunk-IZOHLD5D.js";
563
+ } from "./chunks/chunk-DDS5Z2MB.js";
563
564
  import {
564
565
  TelemetryClient
565
566
  } from "./chunks/chunk-ECCWJHC6.js";
@@ -2037,7 +2038,7 @@ async function activity(client) {
2037
2038
  return 0;
2038
2039
  }
2039
2040
  telemetry2.trackCliSubcommandLs(subcommandOriginal);
2040
- const listFn = (await import("./chunks/list-BB4T4KT5.js")).default;
2041
+ const listFn = (await import("./chunks/list-R37YS5CX.js")).default;
2041
2042
  return listFn(client, telemetry2);
2042
2043
  }
2043
2044
  }
@@ -3140,17 +3141,17 @@ async function alerts(client) {
3140
3141
  switch (subcommand) {
3141
3142
  case "inspect": {
3142
3143
  telemetry2.trackCliSubcommandInspect(subcommandOriginal);
3143
- const inspectFn = (await import("./chunks/inspect-Z3QJOMNP.js")).default;
3144
+ const inspectFn = (await import("./chunks/inspect-QJSREPM3.js")).default;
3144
3145
  return inspectFn(client, args);
3145
3146
  }
3146
3147
  case "rules": {
3147
3148
  telemetry2.trackCliSubcommandRules(args[0] ?? "ls");
3148
- const rulesFn = (await import("./chunks/rules-C6SB24UO.js")).default;
3149
+ const rulesFn = (await import("./chunks/rules-XR6U5U7F.js")).default;
3149
3150
  return rulesFn(client, args);
3150
3151
  }
3151
3152
  default: {
3152
3153
  telemetry2.trackCliSubcommandLs(subcommandOriginal);
3153
- const listFn = (await import("./chunks/list-KNRPDNQF.js")).default;
3154
+ const listFn = (await import("./chunks/list-2XYQW3YA.js")).default;
3154
3155
  return listFn(client, telemetry2);
3155
3156
  }
3156
3157
  }
@@ -16022,17 +16023,54 @@ function formatNSTable(intendedNameservers, currentNameservers, { extraSpace = "
16022
16023
  }
16023
16024
 
16024
16025
  // src/util/projects/find-projects-for-domain.ts
16026
+ var PROJECT_FETCH_BATCH_SIZE = 10;
16027
+ async function getDomainAssignmentsByProject(client, domainName) {
16028
+ const domainsByProjectId = /* @__PURE__ */ new Map();
16029
+ for await (const chunk of client.fetchPaginated(`/v1/domains/${encodeURIComponent(domainName)}/project-domains`)) {
16030
+ for (const projectDomain of chunk.projectDomains) {
16031
+ const domains2 = domainsByProjectId.get(projectDomain.projectId) ?? [];
16032
+ domains2.push(projectDomain.name);
16033
+ domainsByProjectId.set(projectDomain.projectId, domains2);
16034
+ }
16035
+ }
16036
+ return domainsByProjectId;
16037
+ }
16038
+ async function countProjectsForDomain(client, domainName) {
16039
+ try {
16040
+ const assignments = await getDomainAssignmentsByProject(client, domainName);
16041
+ return assignments.size;
16042
+ } catch (err) {
16043
+ if (isAPIError(err) && err.status < 500) {
16044
+ return err;
16045
+ }
16046
+ throw err;
16047
+ }
16048
+ }
16025
16049
  async function findProjectsForDomain(client, domainName) {
16026
16050
  try {
16051
+ const assignments = Array.from(
16052
+ await getDomainAssignmentsByProject(client, domainName)
16053
+ );
16027
16054
  const result = [];
16028
- for await (const chunk of client.fetchPaginated(
16029
- "/v9/projects"
16030
- )) {
16031
- for (const project of chunk.projects) {
16032
- if (project.targets?.production?.alias?.some?.(
16033
- (alias2) => alias2.endsWith(domainName)
16034
- )) {
16035
- result.push(project);
16055
+ for (let i = 0; i < assignments.length; i += PROJECT_FETCH_BATCH_SIZE) {
16056
+ const batch = await Promise.all(
16057
+ assignments.slice(i, i + PROJECT_FETCH_BATCH_SIZE).map(async ([projectId, domains2]) => {
16058
+ try {
16059
+ const project = await client.fetch(
16060
+ `/v9/projects/${encodeURIComponent(projectId)}`
16061
+ );
16062
+ return { project, domains: domains2 };
16063
+ } catch (err) {
16064
+ if (isAPIError(err) && err.status < 500) {
16065
+ return null;
16066
+ }
16067
+ throw err;
16068
+ }
16069
+ })
16070
+ );
16071
+ for (const entry of batch) {
16072
+ if (entry) {
16073
+ result.push(entry);
16036
16074
  }
16037
16075
  }
16038
16076
  }
@@ -16162,13 +16200,9 @@ async function inspect2(client, argv) {
16162
16200
  ["l", "l"],
16163
16201
  [
16164
16202
  {
16165
- rows: projects2.map((project) => {
16166
- const name = project.name;
16167
- const domains2 = (project.targets?.production?.alias || []).filter(
16168
- (alias2) => alias2.endsWith(domainName)
16169
- );
16203
+ rows: projects2.map(({ project, domains: domains2 }) => {
16170
16204
  const cols = domains2.length ? domains2.join(", ") : "-";
16171
- return [name, cols];
16205
+ return [project.name, cols];
16172
16206
  })
16173
16207
  }
16174
16208
  ]
@@ -16200,7 +16234,7 @@ async function inspect2(client, argv) {
16200
16234
  );
16201
16235
  const contextNameConst = contextName;
16202
16236
  const projectNames = Array.from(
16203
- new Set(projects2.map((project) => project.name))
16237
+ new Set(projects2.map(({ project }) => project.name))
16204
16238
  );
16205
16239
  if (projectNames.length) {
16206
16240
  projectNames.forEach((name, index) => {
@@ -16520,14 +16554,10 @@ async function rm6(client, argv) {
16520
16554
  output_manager_default.log(`Run ${getCommandName(`domains ls`)} to see your domains.`);
16521
16555
  return 1;
16522
16556
  }
16523
- const projects2 = await findProjectsForDomain(client, domain2.name);
16524
- if (Array.isArray(projects2) && projects2.length > 0) {
16557
+ const projectCount = await countProjectsForDomain(client, domain2.name);
16558
+ if (typeof projectCount === "number" && projectCount > 0) {
16525
16559
  output_manager_default.warn(
16526
- `The domain is currently used by ${(0, import_pluralize6.default)(
16527
- "project",
16528
- projects2.length,
16529
- true
16530
- )}.`
16560
+ `The domain is currently used by ${(0, import_pluralize6.default)("project", projectCount, true)}.`
16531
16561
  );
16532
16562
  }
16533
16563
  const skipConfirmation = opts["--yes"] || false;
@@ -18938,7 +18968,7 @@ async function main9(client) {
18938
18968
  default:
18939
18969
  if (needHelp) {
18940
18970
  telemetry2.trackCliFlagHelp("domains", subcommandOriginal);
18941
- return printHelp(transferInSubcommand);
18971
+ return printHelp(listSubcommand9);
18942
18972
  }
18943
18973
  telemetry2.trackCliSubcommandList(subcommandOriginal);
18944
18974
  return ls6(client, args);
@@ -28715,13 +28745,13 @@ async function promptForVariantLabelUpdate(client, selectedVariant) {
28715
28745
  function applyVariantUpdates(flag, updates) {
28716
28746
  const variants = flag.variants.map((variant) => ({ ...variant }));
28717
28747
  const changedVariantIds = /* @__PURE__ */ new Set();
28718
- for (const update4 of updates) {
28719
- const result = resolveVariant(update4.selector, variants);
28748
+ for (const update5 of updates) {
28749
+ const result = resolveVariant(update5.selector, variants);
28720
28750
  if (result.error || !result.variant) {
28721
- throw new Error(result.error || `Variant "${update4.selector}" not found`);
28751
+ throw new Error(result.error || `Variant "${update5.selector}" not found`);
28722
28752
  }
28723
- const nextValue = update4.valueInput !== void 0 ? parseUpdatedVariantValue(update4.valueInput, flag.kind, result.variant) : result.variant.value;
28724
- const nextLabel = update4.label ?? result.variant.label;
28753
+ const nextValue = update5.valueInput !== void 0 ? parseUpdatedVariantValue(update5.valueInput, flag.kind, result.variant) : result.variant.value;
28754
+ const nextLabel = update5.label ?? result.variant.label;
28725
28755
  const variantIndex = variants.findIndex((v) => v.id === result.variant.id);
28726
28756
  const existingVariant = variants[variantIndex];
28727
28757
  const hasChanged = !(0, import_fast_deep_equal2.default)(existingVariant.value, nextValue) || existingVariant.label !== nextLabel;
@@ -34969,6 +34999,7 @@ function exitCode(state) {
34969
34999
 
34970
35000
  // src/commands/integration/add-auto-provision.ts
34971
35001
  var import_chalk143 = __toESM(require_source(), 1);
35002
+ var import_execa2 = __toESM(require_execa(), 1);
34972
35003
  var import_error_utils11 = __toESM(require_dist(), 1);
34973
35004
  var import_open12 = __toESM(require_open(), 1);
34974
35005
 
@@ -35343,6 +35374,41 @@ async function selectProduct(client, products, productSlug) {
35343
35374
  });
35344
35375
  }
35345
35376
 
35377
+ // src/util/integration/skill-suggestion.ts
35378
+ function resolveProductSkills(product) {
35379
+ const resolved = [];
35380
+ for (const entry of product.agentSkills ?? []) {
35381
+ const skill = resolveSkillFromUrl(entry);
35382
+ if (skill) {
35383
+ resolved.push(skill);
35384
+ }
35385
+ }
35386
+ return resolved;
35387
+ }
35388
+ function resolveSkillFromUrl(value) {
35389
+ let url;
35390
+ try {
35391
+ url = new URL(value);
35392
+ } catch {
35393
+ return null;
35394
+ }
35395
+ if (url.hostname.replace(/^www\./, "") !== "github.com") {
35396
+ return null;
35397
+ }
35398
+ const [owner, repo, kind, , ...rest] = url.pathname.split("/").filter(Boolean);
35399
+ if (!owner || !repo) {
35400
+ return null;
35401
+ }
35402
+ const repoUrl = `https://github.com/${owner.toLowerCase()}/${repo.toLowerCase()}`;
35403
+ let skill;
35404
+ if (kind === "blob" || kind === "tree") {
35405
+ const parts = rest.filter((part) => part.toLowerCase() !== "skill.md");
35406
+ skill = parts[parts.length - 1];
35407
+ }
35408
+ const command = skill ? `npx skills add ${repoUrl} --skill ${skill}` : `npx skills add ${repoUrl}`;
35409
+ return { repoUrl, skill, command };
35410
+ }
35411
+
35346
35412
  // src/commands/integration-resource/claim.ts
35347
35413
  var import_chalk141 = __toESM(require_source(), 1);
35348
35414
  var import_open11 = __toESM(require_open(), 1);
@@ -36822,6 +36888,47 @@ Re-run with --installation-id to select one, e.g.:
36822
36888
  }
36823
36889
  }
36824
36890
  );
36891
+ const skills2 = resolveProductSkills(product);
36892
+ if (skills2.length && !options.asJson) {
36893
+ const noun = skills2.length === 1 ? "the agent skill" : "agent skills";
36894
+ let runInstall = !canPrompt(client);
36895
+ if (canPrompt(client)) {
36896
+ runInstall = await client.input.confirm(
36897
+ `Install ${noun} so your AI tools can use ${import_chalk143.default.bold(product.name)}?`,
36898
+ true
36899
+ );
36900
+ }
36901
+ if (runInstall) {
36902
+ output_manager_default.log(`Installing ${noun} for ${import_chalk143.default.bold(product.name)}\u2026`);
36903
+ for (const skill of skills2) {
36904
+ output_manager_default.log(indent_default(import_chalk143.default.cyan(skill.command), 4));
36905
+ const args = [
36906
+ "--yes",
36907
+ "skills",
36908
+ "add",
36909
+ skill.repoUrl,
36910
+ ...skill.skill ? ["--skill", skill.skill] : []
36911
+ ];
36912
+ const result2 = await (0, import_execa2.default)("npx", args, {
36913
+ cwd: client.cwd,
36914
+ stdio: "inherit",
36915
+ reject: false
36916
+ });
36917
+ if (result2.exitCode !== 0) {
36918
+ output_manager_default.warn(
36919
+ `Failed to install ${skill.skill ?? skill.repoUrl}. Run it manually: ${import_chalk143.default.cyan(skill.command)}`
36920
+ );
36921
+ }
36922
+ }
36923
+ } else {
36924
+ output_manager_default.log(
36925
+ `Install ${noun} so your AI tools can use ${import_chalk143.default.bold(product.name)}:`
36926
+ );
36927
+ for (const skill of skills2) {
36928
+ output_manager_default.log(indent_default(import_chalk143.default.cyan(skill.command), 4));
36929
+ }
36930
+ }
36931
+ }
36825
36932
  if (options.asJson) {
36826
36933
  const warnings = [];
36827
36934
  if (setupResult.connectError) {
@@ -36873,6 +36980,7 @@ Re-run with --installation-id to select one, e.g.:
36873
36980
  environments: setupResult.environments,
36874
36981
  envPulled: setupResult.envPulled,
36875
36982
  guideCommand,
36983
+ skills: skills2,
36876
36984
  warnings
36877
36985
  };
36878
36986
  client.stdout.write(`${JSON.stringify(jsonOutput, null, 2)}
@@ -42667,7 +42775,7 @@ async function metrics(client) {
42667
42775
  return 0;
42668
42776
  }
42669
42777
  telemetry2.trackCliSubcommandSchema(subcommandOriginal);
42670
- const schemaFn = (await import("./chunks/schema-Z6L3EN6F.js")).default;
42778
+ const schemaFn = (await import("./chunks/schema-WKPB25ZF.js")).default;
42671
42779
  return schemaFn(client, telemetry2);
42672
42780
  }
42673
42781
  default: {
@@ -42680,7 +42788,7 @@ async function metrics(client) {
42680
42788
  output_manager_default.print(help(metricsCommand, { columns: client.stderr.columns }));
42681
42789
  return 2;
42682
42790
  }
42683
- const queryFn = (await import("./chunks/query-C6FEOG5R.js")).default;
42791
+ const queryFn = (await import("./chunks/query-ZH2YJPAC.js")).default;
42684
42792
  return queryFn(client, telemetry2);
42685
42793
  }
42686
42794
  }
@@ -46367,6 +46475,379 @@ async function rename(client, argv) {
46367
46475
  return 0;
46368
46476
  }
46369
46477
 
46478
+ // src/commands/project/update.ts
46479
+ var import_frameworks2 = __toESM(require_frameworks(), 1);
46480
+
46481
+ // src/util/telemetry/commands/project/update.ts
46482
+ var ProjectUpdateTelemetryClient = class extends TelemetryClient {
46483
+ trackCliArgumentName(name) {
46484
+ if (name) {
46485
+ this.trackCliArgument({
46486
+ arg: "name",
46487
+ value: this.redactedValue
46488
+ });
46489
+ }
46490
+ }
46491
+ trackCliOptionFramework(framework) {
46492
+ if (framework) {
46493
+ this.trackCliOption({
46494
+ option: "framework",
46495
+ value: this.redactedValue
46496
+ });
46497
+ }
46498
+ }
46499
+ trackCliOptionBuildCommand(value) {
46500
+ this.trackSettingOption("build-command", value);
46501
+ }
46502
+ trackCliOptionDevCommand(value) {
46503
+ this.trackSettingOption("dev-command", value);
46504
+ }
46505
+ trackCliOptionInstallCommand(value) {
46506
+ this.trackSettingOption("install-command", value);
46507
+ }
46508
+ trackCliOptionOutputDirectory(value) {
46509
+ this.trackSettingOption("output-directory", value);
46510
+ }
46511
+ trackCliOptionAutoDetect(value) {
46512
+ if (value?.length) {
46513
+ this.trackCliOption({
46514
+ option: "auto-detect",
46515
+ value: this.redactedValue
46516
+ });
46517
+ }
46518
+ }
46519
+ trackSettingOption(option, value) {
46520
+ if (value !== void 0) {
46521
+ this.trackCliOption({
46522
+ option,
46523
+ value: this.redactedValue
46524
+ });
46525
+ }
46526
+ }
46527
+ };
46528
+
46529
+ // src/commands/project/update.ts
46530
+ var OTHER_FRAMEWORK_SLUG = "other";
46531
+ var MAX_SETTING_LENGTH = 256;
46532
+ var CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/;
46533
+ var frameworkSlugs = import_frameworks2.frameworkList.map(
46534
+ (framework) => framework.slug ?? OTHER_FRAMEWORK_SLUG
46535
+ );
46536
+ var buildSettingDefinitions = [
46537
+ {
46538
+ key: "buildCommand",
46539
+ flag: "--build-command",
46540
+ autoDetect: "build-command",
46541
+ label: "Build Command"
46542
+ },
46543
+ {
46544
+ key: "devCommand",
46545
+ flag: "--dev-command",
46546
+ autoDetect: "dev-command",
46547
+ label: "Dev Command"
46548
+ },
46549
+ {
46550
+ key: "installCommand",
46551
+ flag: "--install-command",
46552
+ autoDetect: "install-command",
46553
+ label: "Install Command"
46554
+ },
46555
+ {
46556
+ key: "outputDirectory",
46557
+ flag: "--output-directory",
46558
+ autoDetect: "output-directory",
46559
+ label: "Output Directory"
46560
+ }
46561
+ ];
46562
+ var settingOrder = [
46563
+ "framework",
46564
+ ...buildSettingDefinitions.map((setting) => setting.key)
46565
+ ];
46566
+ var autoDetectSettings = buildSettingDefinitions.map(
46567
+ (setting) => setting.autoDetect
46568
+ );
46569
+ var settingLabels = {
46570
+ framework: "Framework",
46571
+ buildCommand: "Build Command",
46572
+ devCommand: "Dev Command",
46573
+ installCommand: "Install Command",
46574
+ outputDirectory: "Output Directory"
46575
+ };
46576
+ function resolveFramework(input) {
46577
+ const slug = input.trim().toLowerCase();
46578
+ return import_frameworks2.frameworkList.find(
46579
+ (framework) => (framework.slug ?? OTHER_FRAMEWORK_SLUG) === slug
46580
+ );
46581
+ }
46582
+ function formatFramework(slug) {
46583
+ const framework = import_frameworks2.frameworkList.find((item) => item.slug === slug);
46584
+ if (!framework) {
46585
+ return slug ?? OTHER_FRAMEWORK_SLUG;
46586
+ }
46587
+ return `${framework.name} (${framework.slug ?? OTHER_FRAMEWORK_SLUG})`;
46588
+ }
46589
+ function formatSettingValue(key, value) {
46590
+ if (key === "framework") {
46591
+ return formatFramework(value);
46592
+ }
46593
+ if (value === null) {
46594
+ return "Auto";
46595
+ }
46596
+ return value === "" ? '""' : value;
46597
+ }
46598
+ function getCurrentSetting(project, key) {
46599
+ return project[key] ?? null;
46600
+ }
46601
+ function hasSetting(settings, key) {
46602
+ return Object.prototype.hasOwnProperty.call(settings, key);
46603
+ }
46604
+ function getUpdateCommand2(framework = "<slug>") {
46605
+ return `project update <name> --framework ${framework}`;
46606
+ }
46607
+ function printUsageError(client, message, exitCode2, reason, suggestedCommand = getUpdateCommand2()) {
46608
+ outputAgentError(
46609
+ client,
46610
+ {
46611
+ status: "error",
46612
+ reason,
46613
+ message,
46614
+ next: [
46615
+ {
46616
+ command: buildCommandWithGlobalFlags(client.argv, suggestedCommand),
46617
+ when: "Update project settings"
46618
+ }
46619
+ ]
46620
+ },
46621
+ exitCode2
46622
+ );
46623
+ output_manager_default.error(message);
46624
+ return exitCode2;
46625
+ }
46626
+ function validateSettingValue(definition, value) {
46627
+ if (value.length > MAX_SETTING_LENGTH) {
46628
+ return `${definition.label} must be ${MAX_SETTING_LENGTH} characters or fewer.`;
46629
+ }
46630
+ if (CONTROL_CHARACTERS.test(value)) {
46631
+ return `${definition.label} can't contain control characters.`;
46632
+ }
46633
+ }
46634
+ function parseAutoDetectSettings(inputs) {
46635
+ return inputs.flatMap((input) => input.split(",")).map((input) => input.trim());
46636
+ }
46637
+ function writeResult({
46638
+ changedSettings,
46639
+ project,
46640
+ previousSettings,
46641
+ requestedSettings,
46642
+ asJson,
46643
+ client
46644
+ }) {
46645
+ const changed = changedSettings.length > 0;
46646
+ if (asJson) {
46647
+ client.stdout.write(
46648
+ `${JSON.stringify(
46649
+ {
46650
+ changed,
46651
+ changedSettings,
46652
+ projectId: project.id,
46653
+ projectName: project.name,
46654
+ settings: requestedSettings
46655
+ },
46656
+ null,
46657
+ 2
46658
+ )}
46659
+ `
46660
+ );
46661
+ return;
46662
+ }
46663
+ printAlignedLabel(changed ? "Updated" : "Unchanged", "Project Settings", {
46664
+ gutter: "\u2713"
46665
+ });
46666
+ printAlignedLabel("Project", project.name);
46667
+ for (const key of settingOrder) {
46668
+ if (!hasSetting(requestedSettings, key)) {
46669
+ continue;
46670
+ }
46671
+ const previous = previousSettings[key] ?? null;
46672
+ const next = requestedSettings[key] ?? null;
46673
+ const value = changedSettings.includes(key) ? `${formatSettingValue(key, previous)} \u2192 ${formatSettingValue(key, next)}` : formatSettingValue(key, next);
46674
+ printAlignedLabel(settingLabels[key], value);
46675
+ }
46676
+ }
46677
+ async function update4(client, argv) {
46678
+ const telemetry2 = new ProjectUpdateTelemetryClient({
46679
+ opts: { store: client.telemetryEventStore }
46680
+ });
46681
+ let parsedArgs;
46682
+ try {
46683
+ parsedArgs = parseArguments(
46684
+ argv,
46685
+ getFlagsSpecification(updateSubcommand5.options)
46686
+ );
46687
+ } catch (error) {
46688
+ outputAgentError(
46689
+ client,
46690
+ {
46691
+ status: "error",
46692
+ reason: "invalid_arguments",
46693
+ message: error instanceof Error ? error.message : String(error)
46694
+ },
46695
+ 1
46696
+ );
46697
+ printError(error);
46698
+ return 1;
46699
+ }
46700
+ const { args, flags } = parsedArgs;
46701
+ const [projectNameOrId] = args;
46702
+ const frameworkInput = flags["--framework"];
46703
+ const autoDetectInputs = flags["--auto-detect"] ?? [];
46704
+ telemetry2.trackCliArgumentName(projectNameOrId);
46705
+ telemetry2.trackCliOptionFramework(frameworkInput);
46706
+ telemetry2.trackCliOptionBuildCommand(flags["--build-command"]);
46707
+ telemetry2.trackCliOptionDevCommand(flags["--dev-command"]);
46708
+ telemetry2.trackCliOptionInstallCommand(flags["--install-command"]);
46709
+ telemetry2.trackCliOptionOutputDirectory(flags["--output-directory"]);
46710
+ telemetry2.trackCliOptionAutoDetect(
46711
+ flags["--auto-detect"]
46712
+ );
46713
+ telemetry2.trackCliOptionFormat(flags["--format"]);
46714
+ if (args.length > 1) {
46715
+ return printUsageError(
46716
+ client,
46717
+ `Invalid number of arguments. Usage: ${getCommandNamePlain(
46718
+ "project update [name] [options]"
46719
+ )}`,
46720
+ 2,
46721
+ "invalid_arguments"
46722
+ );
46723
+ }
46724
+ const formatResult = validateJsonOutput(flags);
46725
+ if (!formatResult.valid) {
46726
+ return printUsageError(client, formatResult.error, 1, "invalid_arguments");
46727
+ }
46728
+ const requestedSettings = {};
46729
+ if (frameworkInput !== void 0) {
46730
+ const framework = resolveFramework(frameworkInput);
46731
+ if (!framework) {
46732
+ const normalizedInput = frameworkInput.trim().toLowerCase();
46733
+ const suggestion = normalizedInput ? did_you_mean_default(normalizedInput, frameworkSlugs, 0.7) : void 0;
46734
+ const message = suggestion ? `Unsupported framework preset ${JSON.stringify(frameworkInput)}. Did you mean ${JSON.stringify(suggestion)}?` : `Unsupported framework preset ${JSON.stringify(frameworkInput)}. Use a framework slug such as "nextjs", or "other" to clear the preset.`;
46735
+ return printUsageError(
46736
+ client,
46737
+ message,
46738
+ 1,
46739
+ "invalid_arguments",
46740
+ getUpdateCommand2(suggestion)
46741
+ );
46742
+ }
46743
+ requestedSettings.framework = framework.slug;
46744
+ }
46745
+ const requestedAutoDetect = parseAutoDetectSettings(autoDetectInputs);
46746
+ const autoDetectSet = /* @__PURE__ */ new Set();
46747
+ for (const setting of requestedAutoDetect) {
46748
+ if (!autoDetectSettings.includes(setting)) {
46749
+ const suggestion = setting ? did_you_mean_default(setting, autoDetectSettings, 0.7) : void 0;
46750
+ const message = suggestion ? `Unknown auto-detect setting ${JSON.stringify(setting)}. Did you mean ${JSON.stringify(suggestion)}?` : `Unknown auto-detect setting ${JSON.stringify(setting)}. Accepted settings: ${autoDetectSettings.join(", ")}.`;
46751
+ return printUsageError(
46752
+ client,
46753
+ message,
46754
+ 1,
46755
+ "invalid_arguments",
46756
+ `project update <name> --auto-detect ${suggestion ?? "<setting>"}`
46757
+ );
46758
+ }
46759
+ autoDetectSet.add(setting);
46760
+ }
46761
+ for (const definition of buildSettingDefinitions) {
46762
+ const value = flags[definition.flag];
46763
+ if (value !== void 0 && autoDetectSet.has(definition.autoDetect)) {
46764
+ return printUsageError(
46765
+ client,
46766
+ `Can't use "${definition.flag}" and "--auto-detect ${definition.autoDetect}" together. Choose one.`,
46767
+ 2,
46768
+ "invalid_arguments",
46769
+ `project update <name> ${definition.flag} <value>`
46770
+ );
46771
+ }
46772
+ if (value !== void 0) {
46773
+ const validationError = validateSettingValue(definition, value);
46774
+ if (validationError) {
46775
+ return printUsageError(
46776
+ client,
46777
+ validationError,
46778
+ 1,
46779
+ "invalid_arguments",
46780
+ `project update <name> ${definition.flag} <value>`
46781
+ );
46782
+ }
46783
+ requestedSettings[definition.key] = value;
46784
+ } else if (autoDetectSet.has(definition.autoDetect)) {
46785
+ requestedSettings[definition.key] = null;
46786
+ }
46787
+ }
46788
+ if (settingOrder.every((key) => !hasSetting(requestedSettings, key))) {
46789
+ return printUsageError(
46790
+ client,
46791
+ "Provide at least one setting option: --framework, --build-command, --dev-command, --install-command, --output-directory, or --auto-detect.",
46792
+ 2,
46793
+ "missing_arguments"
46794
+ );
46795
+ }
46796
+ let project;
46797
+ try {
46798
+ project = await getProjectByCwdOrLink({
46799
+ client,
46800
+ commandName: "project update",
46801
+ projectNameOrId,
46802
+ forReadOnlyCommand: true
46803
+ });
46804
+ } catch (error) {
46805
+ exitWithNonInteractiveError(client, error, 1, { variant: "update" });
46806
+ printError(error);
46807
+ return 1;
46808
+ }
46809
+ const previousSettings = {};
46810
+ const changedSettings = [];
46811
+ const changedUpdates = {};
46812
+ for (const key of settingOrder) {
46813
+ if (!hasSetting(requestedSettings, key)) {
46814
+ continue;
46815
+ }
46816
+ const previous = getCurrentSetting(project, key);
46817
+ const next = requestedSettings[key] ?? null;
46818
+ previousSettings[key] = previous;
46819
+ if (previous !== next) {
46820
+ changedSettings.push(key);
46821
+ Object.assign(changedUpdates, { [key]: next });
46822
+ }
46823
+ }
46824
+ let updatedProject = project;
46825
+ if (changedSettings.length > 0) {
46826
+ try {
46827
+ updatedProject = await client.fetch(
46828
+ `/v9/projects/${encodeURIComponent(project.id)}`,
46829
+ {
46830
+ method: "PATCH",
46831
+ body: changedUpdates
46832
+ }
46833
+ );
46834
+ } catch (error) {
46835
+ exitWithNonInteractiveError(client, error, 1, { variant: "update" });
46836
+ printError(error);
46837
+ return 1;
46838
+ }
46839
+ }
46840
+ writeResult({
46841
+ changedSettings,
46842
+ project: updatedProject,
46843
+ previousSettings,
46844
+ requestedSettings,
46845
+ asJson: formatResult.jsonOutput,
46846
+ client
46847
+ });
46848
+ return 0;
46849
+ }
46850
+
46370
46851
  // src/commands/project/rm.ts
46371
46852
  var import_chalk176 = __toESM(require_source(), 1);
46372
46853
  var import_ms25 = __toESM(require_ms(), 1);
@@ -47101,6 +47582,12 @@ var ProjectTelemetryClient = class extends TelemetryClient {
47101
47582
  value: actual
47102
47583
  });
47103
47584
  }
47585
+ trackCliSubcommandUpdate(actual) {
47586
+ this.trackCliSubcommand({
47587
+ subcommand: "update",
47588
+ value: actual
47589
+ });
47590
+ }
47104
47591
  trackCliSubcommandToken(actual) {
47105
47592
  this.trackCliSubcommand({
47106
47593
  subcommand: "token",
@@ -47149,6 +47636,7 @@ var COMMAND_CONFIG35 = {
47149
47636
  "access-summary": getCommandAliases(accessSummarySubcommand),
47150
47637
  checks: getCommandAliases(checksSubcommand),
47151
47638
  protection: getCommandAliases(protectionSubcommand),
47639
+ update: getCommandAliases(updateSubcommand5),
47152
47640
  rename: getCommandAliases(renameSubcommand),
47153
47641
  remove: getCommandAliases(removeSubcommand12),
47154
47642
  token: getCommandAliases(tokenSubcommand2),
@@ -47292,6 +47780,14 @@ async function main25(client) {
47292
47780
  telemetry2.trackCliSubcommandRename(subcommandOriginal);
47293
47781
  exitCode2 = await rename(client, args);
47294
47782
  break;
47783
+ case "update":
47784
+ if (needHelp) {
47785
+ telemetry2.trackCliFlagHelp("project", subcommandOriginal);
47786
+ return printHelp(updateSubcommand5);
47787
+ }
47788
+ telemetry2.trackCliSubcommandUpdate(subcommandOriginal);
47789
+ exitCode2 = await update4(client, args);
47790
+ break;
47295
47791
  case "remove":
47296
47792
  if (needHelp) {
47297
47793
  telemetry2.trackCliFlagHelp("project", subcommandOriginal);
@@ -53590,7 +54086,7 @@ async function main27(client) {
53590
54086
  return 2;
53591
54087
  }
53592
54088
  telemetry2.trackCliSubcommandEdit(subcommandOriginal);
53593
- return (await import("./chunks/edit-NAIWNSXE.js")).default(client, args);
54089
+ return (await import("./chunks/edit-ZU5K7DM3.js")).default(client, args);
53594
54090
  case "delete":
53595
54091
  if (needHelp) {
53596
54092
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53598,7 +54094,7 @@ async function main27(client) {
53598
54094
  return 2;
53599
54095
  }
53600
54096
  telemetry2.trackCliSubcommandDelete(subcommandOriginal);
53601
- return (await import("./chunks/delete-O3F4EP2W.js")).default(client, args);
54097
+ return (await import("./chunks/delete-WVLC7FLA.js")).default(client, args);
53602
54098
  case "enable":
53603
54099
  if (needHelp) {
53604
54100
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53606,7 +54102,7 @@ async function main27(client) {
53606
54102
  return 2;
53607
54103
  }
53608
54104
  telemetry2.trackCliSubcommandEnable(subcommandOriginal);
53609
- return (await import("./chunks/enable-LXO62HU5.js")).default(client, args);
54105
+ return (await import("./chunks/enable-G3MUGP3W.js")).default(client, args);
53610
54106
  case "disable":
53611
54107
  if (needHelp) {
53612
54108
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53614,7 +54110,7 @@ async function main27(client) {
53614
54110
  return 2;
53615
54111
  }
53616
54112
  telemetry2.trackCliSubcommandDisable(subcommandOriginal);
53617
- return (await import("./chunks/disable-SJWGUQKZ.js")).default(client, args);
54113
+ return (await import("./chunks/disable-VLYKCAM5.js")).default(client, args);
53618
54114
  case "reorder":
53619
54115
  if (needHelp) {
53620
54116
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53622,7 +54118,7 @@ async function main27(client) {
53622
54118
  return 2;
53623
54119
  }
53624
54120
  telemetry2.trackCliSubcommandReorder(subcommandOriginal);
53625
- return (await import("./chunks/reorder-DCSIJX72.js")).default(client, args);
54121
+ return (await import("./chunks/reorder-VY53EYZJ.js")).default(client, args);
53626
54122
  case "export":
53627
54123
  if (needHelp) {
53628
54124
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53630,7 +54126,7 @@ async function main27(client) {
53630
54126
  return 2;
53631
54127
  }
53632
54128
  telemetry2.trackCliSubcommandExport(subcommandOriginal);
53633
- return (await import("./chunks/export-EHVTYAAP.js")).default(client, args);
54129
+ return (await import("./chunks/export-QHSB2FON.js")).default(client, args);
53634
54130
  case "publish":
53635
54131
  if (needHelp) {
53636
54132
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53638,7 +54134,7 @@ async function main27(client) {
53638
54134
  return 2;
53639
54135
  }
53640
54136
  telemetry2.trackCliSubcommandPublish(subcommandOriginal);
53641
- return (await import("./chunks/publish-27V2MMFS.js")).default(client, args);
54137
+ return (await import("./chunks/publish-MYVZ4UTW.js")).default(client, args);
53642
54138
  case "restore":
53643
54139
  if (needHelp) {
53644
54140
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53646,7 +54142,7 @@ async function main27(client) {
53646
54142
  return 2;
53647
54143
  }
53648
54144
  telemetry2.trackCliSubcommandRestore(subcommandOriginal);
53649
- return (await import("./chunks/restore-NRUBGNSK.js")).default(client, args);
54145
+ return (await import("./chunks/restore-F2AEG3WO.js")).default(client, args);
53650
54146
  case "discard-staging":
53651
54147
  if (needHelp) {
53652
54148
  telemetry2.trackCliFlagHelp("routes", subcommandOriginal);
@@ -53654,7 +54150,7 @@ async function main27(client) {
53654
54150
  return 2;
53655
54151
  }
53656
54152
  telemetry2.trackCliSubcommandDiscardStaging(subcommandOriginal);
53657
- return (await import("./chunks/discard-EQD6ENC3.js")).default(client, args);
54153
+ return (await import("./chunks/discard-GGNJLKTH.js")).default(client, args);
53658
54154
  default:
53659
54155
  output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG38));
53660
54156
  output_manager_default.print(help(routesCommand, { columns: client.stderr.columns }));
@@ -53726,7 +54222,7 @@ async function sandbox(client) {
53726
54222
 
53727
54223
  // src/commands/skills/index.ts
53728
54224
  var import_chalk199 = __toESM(require_source(), 1);
53729
- var import_frameworks2 = __toESM(require_frameworks(), 1);
54225
+ var import_frameworks3 = __toESM(require_frameworks(), 1);
53730
54226
  var import_fs_detectors = __toESM(require_dist3(), 1);
53731
54227
  import { access as access2, readFile as readFile7 } from "fs/promises";
53732
54228
  import { join as join8 } from "path";
@@ -53822,7 +54318,7 @@ async function searchSkills(query) {
53822
54318
  async function detectProjectFramework(cwd) {
53823
54319
  try {
53824
54320
  const fs2 = new import_fs_detectors.LocalFileSystemDetector(cwd);
53825
- const detected = await (0, import_fs_detectors.detectFrameworks)({ fs: fs2, frameworkList: import_frameworks2.frameworkList });
54321
+ const detected = await (0, import_fs_detectors.detectFrameworks)({ fs: fs2, frameworkList: import_frameworks3.frameworkList });
53826
54322
  if (detected.length > 0) {
53827
54323
  return { name: detected[0].name, slug: detected[0].slug || "" };
53828
54324
  }
@@ -58233,22 +58729,22 @@ async function vcr(client) {
58233
58729
  switch (subcommand) {
58234
58730
  case "ls":
58235
58731
  telemetry2.trackCliSubcommandLs(subcommandOriginal);
58236
- return (await import("./chunks/ls-IQKMDRUB.js")).default(client, args, telemetry2);
58732
+ return (await import("./chunks/ls-HKVAT223.js")).default(client, args, telemetry2);
58237
58733
  case "inspect":
58238
58734
  telemetry2.trackCliSubcommandInspect(subcommandOriginal);
58239
- return (await import("./chunks/inspect-PL3PE5IJ.js")).default(client, args, telemetry2);
58735
+ return (await import("./chunks/inspect-HFCKYQQ3.js")).default(client, args, telemetry2);
58240
58736
  case "add":
58241
58737
  telemetry2.trackCliSubcommandAdd(subcommandOriginal);
58242
- return (await import("./chunks/add-IB7HE5S5.js")).default(client, args, telemetry2);
58738
+ return (await import("./chunks/add-KZSG7SVG.js")).default(client, args, telemetry2);
58243
58739
  case "rm":
58244
58740
  telemetry2.trackCliSubcommandRm(subcommandOriginal);
58245
- return (await import("./chunks/rm-NMSG2WG6.js")).default(client, args, telemetry2);
58741
+ return (await import("./chunks/rm-T6Z6WZZN.js")).default(client, args, telemetry2);
58246
58742
  case "tag":
58247
58743
  telemetry2.trackCliSubcommandTag(subcommandOriginal);
58248
- return (await import("./chunks/tags-5PFVWGLK.js")).default(client, args, telemetry2);
58744
+ return (await import("./chunks/tags-NSWTVGHE.js")).default(client, args, telemetry2);
58249
58745
  case "image":
58250
58746
  telemetry2.trackCliSubcommandImage(subcommandOriginal);
58251
- return (await import("./chunks/image-2DL7JEWW.js")).default(client, args, telemetry2);
58747
+ return (await import("./chunks/image-CWHCW3N5.js")).default(client, args, telemetry2);
58252
58748
  default:
58253
58749
  output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG44));
58254
58750
  output_manager_default.print(help(vcrCommand, { columns: client.stderr.columns }));