@voltro/cli 0.37.0 → 0.39.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 (183) hide show
  1. package/CHANGELOG.md +316 -0
  2. package/THIRD-PARTY-NOTICES.md +80 -45
  3. package/dist/{addCommand-BNeoeSxe.js → addCommand-C05L9tZh.js} +2 -2
  4. package/dist/addCommand-C3MdJG-a.js +2 -0
  5. package/dist/{agentsMd-mhQMF1bx.js → agentsMd-7zI2h5l9.js} +3 -3
  6. package/dist/agentsMd-BFCXh2gl.js +2 -0
  7. package/dist/apiBuild-2GvK8CUB.js +2 -0
  8. package/dist/{apiBuild-DGsShRuF.js → apiBuild-DGalUk9v.js} +3 -3
  9. package/dist/baselineCommand-CXv680Dc.js +2 -0
  10. package/dist/{baselineCommand-C6NMt-oa.js → baselineCommand-Ck2Xm8M7.js} +18 -18
  11. package/dist/bin.js +1 -1
  12. package/dist/bootRefusal-pgvDxlrU.js +7 -0
  13. package/dist/{build-CiFA-E19.js → build-CfF6t0UM.js} +88 -81
  14. package/dist/{capabilitiesCommand-nq_pz5xd.js → capabilitiesCommand-D5gucwYa.js} +8 -8
  15. package/dist/{checkCommand-CIPYyNyc.js → checkCommand-BV56Pcc1.js} +1 -1
  16. package/dist/{checkCommand-CLPTzYqM.js → checkCommand-CBtynBKW.js} +34 -34
  17. package/dist/{cloudCmd-NQSwe_Qk.js → cloudCmd-C42gaO8s.js} +16 -16
  18. package/dist/{clusterCmd-D5wsCmA_.js → clusterCmd-DrVFCzSj.js} +8 -4
  19. package/dist/{codegen-GYYcdpCg.js → codegen-CbpGCWLG.js} +1 -1
  20. package/dist/codegen-i8QGcHsi.js +2 -0
  21. package/dist/codegenCommand-W7SDdiAQ.js +129 -0
  22. package/dist/{codemodRunner-cyqu5oxr.js → codemodRunner-D-jTyvWo.js} +679 -495
  23. package/dist/{commands-BwG9A9Vv.js → commands-BD9eBRY3.js} +48 -48
  24. package/dist/{connectionConfig-UFlIEiys.js → connectionConfig-Bk9IC7D0.js} +1 -1
  25. package/dist/{dashboardCommand-C7U146xQ.js → dashboardCommand-7qGylm0F.js} +3 -3
  26. package/dist/{dataCommand-BOwd8_aJ.js → dataCommand-C_F2DYxe.js} +14 -11
  27. package/dist/{dbCommand-C4UW8cVN.js → dbCommand-DSwGv9wS.js} +50 -49
  28. package/dist/dbCommand-DcqEyxju.js +2 -0
  29. package/dist/dev-alhkKoEX.js +3 -0
  30. package/dist/{dev-bwDgSObH.js → dev-gqpnzVhI.js} +2357 -2280
  31. package/dist/{dialectDriver-CgXnDfec.js → dialectDriver-czCHYpeH.js} +2 -1
  32. package/dist/{doctorCommand-BXyrtN2l.js → doctorCommand-Bvs-BQrM.js} +242 -238
  33. package/dist/doctorCommand-CVXfRrng.js +2 -0
  34. package/dist/{dormancyCommand-BDdRRLsa.js → dormancyCommand-B-PPHc9Q.js} +1 -1
  35. package/dist/{e2eCmd-BRabZww-.js → e2eCmd-uFHig1hV.js} +8 -2
  36. package/dist/{embeddingsCommand-CjWGcAE6.js → embeddingsCommand-OKY6XjUf.js} +6 -6
  37. package/dist/{envCommand-B_TeG297.js → envCommand-B1-Zm85H.js} +2 -2
  38. package/dist/{evolveCommand-D6N-WfA4.js → evolveCommand-C4-NlFbd.js} +6 -8
  39. package/dist/{generateCommand-DbgcUpGw.js → generateCommand-CcyvH2ve.js} +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/{infoCommand-BHKTprrx.js → infoCommand-CTo8Jnhq.js} +7 -7
  42. package/dist/inspect-B7U7Cl_Z.js +1192 -0
  43. package/dist/inspect-DUze25t0.js +2 -0
  44. package/dist/{inspectCmd-EHFZ9yYu.js → inspectCmd-niF97fAq.js} +5 -5
  45. package/dist/inspectGateHint-BjnFubmH.js +7 -0
  46. package/dist/{logFileSink-C_D2wRN1.js → logFileSink-B4uP8pvf.js} +1 -1
  47. package/dist/{logsCmd-D36xK7Zu.js → logsCmd-B6oNsfaZ.js} +10 -7
  48. package/dist/{manifestBuild-hpPLaGxV.js → manifestBuild-BK42hu0k.js} +1 -1
  49. package/dist/manifestBuild-j0n109tt.js +2 -0
  50. package/dist/{metaCommands-CIoQNlaQ.js → metaCommands-DUYR--Ts.js} +1 -1
  51. package/dist/{migrate-RwgUWXfc.js → migrate-BnPw2zC8.js} +7 -4
  52. package/dist/{packageCommand-Cug_3Ogl.js → packageCommand-9SVyvsSo.js} +3 -2
  53. package/dist/{probeCommand-BPEpwT32.js → probeCommand-C9gazU0H.js} +35 -24
  54. package/dist/{projectScaffold-CxgtJvlb.js → projectScaffold-BEhhHjPr.js} +1 -1
  55. package/dist/{projectScaffold-DDgWbNLe.js → projectScaffold-BvhLOrLq.js} +17 -15
  56. package/dist/{runtimeTrace-WYV7qYvz.js → runtimeTrace-DzZOCd94.js} +1 -1
  57. package/dist/{scheduleManifestCmd-D2x0CTTY.js → scheduleManifestCmd-kmWzrO_w.js} +6 -9
  58. package/dist/{sdkgen-TM5sSdf7.js → sdkgen-C4roLErM.js} +4 -4
  59. package/dist/{seedRunner-ZmLSqNe2.js → seedRunner-IdHEprqf.js} +1 -4
  60. package/dist/serveCommand-B6TATyCj.js +1770 -0
  61. package/dist/serveCommand-CNR0gI9V.js +2 -0
  62. package/dist/serveEntry.js +2 -2
  63. package/dist/{serverlessCommand-CfJZy6dS.js → serverlessCommand-DbJ7Plg9.js} +3 -3
  64. package/dist/{start-BgN62boB.js → start-BNuTWdRd.js} +1 -1
  65. package/dist/{start-T4VesWiM.js → start-ft_KzFTd.js} +240 -237
  66. package/dist/startEntry.js +1 -1
  67. package/dist/startup.d.ts +40 -1
  68. package/dist/startup.js +2 -2
  69. package/dist/startupRunner-CEqQq7ax.js +108 -0
  70. package/dist/{test-DIQ0jlkQ.js → test-CLYXrZ2F.js} +1 -1
  71. package/dist/{tracesCmd-DStmCJPi.js → tracesCmd-DgtgOUdi.js} +7 -4
  72. package/dist/{typecheckCommand-BlsWiCNq.js → typecheckCommand-BuCtT92o.js} +7 -7
  73. package/dist/updateCommand-6FMU2klq.js +2 -0
  74. package/dist/{updateCommand-9GHHsmDf.js → updateCommand-CHBmCB17.js} +5 -3
  75. package/dist/{webDev-Dybxew86.js → webDev-CTpSY-e_.js} +892 -856
  76. package/dist/webDev-id3I5PvG.js +2 -0
  77. package/dist/{webhookDiscovery-D7VaeMlz.js → webhookDiscovery-CphsQe59.js} +4 -6
  78. package/dist/{webhookDiscovery-CrGAfhIG.js → webhookDiscovery-il9ti-HE.js} +1 -1
  79. package/dist/{webhooksCommand-CHWSPk5z.js → webhooksCommand-BVvOtZ1B.js} +1 -1
  80. package/package.json +39 -21
  81. package/templates/AGENTS.md +2 -2
  82. package/templates/agent-docs/_index.md +2 -2
  83. package/templates/agent-docs/_manifest.json +2 -2
  84. package/templates/agent-docs/authentication.md +30 -0
  85. package/templates/agent-docs/cli.md +17 -13
  86. package/templates/agent-docs/data.md +44 -1
  87. package/templates/agent-docs/database/migrations.md +2 -2
  88. package/templates/agent-docs/database/seedsdialects.md +2 -2
  89. package/templates/agent-docs/deployment.md +21 -7
  90. package/templates/agent-docs/internationalization.md +10 -3
  91. package/templates/agent-docs/local-first-mobile.md +141 -20
  92. package/templates/agent-docs/plugins/audit.md +4 -0
  93. package/templates/agent-docs/plugins/auth.md +4 -6
  94. package/templates/agent-docs/plugins/mail.md +1 -1
  95. package/templates/agent-docs/plugins/ratelimit.md +1 -1
  96. package/templates/agent-docs/plugins.md +3 -1
  97. package/templates/agent-docs/reference.md +3 -2
  98. package/templates/agent-docs/releases.md +130 -1
  99. package/templates/agent-docs/routing.md +34 -2
  100. package/templates/agent-docs/templates/apibackends.md +1 -1
  101. package/templates/agent-docs/templates/mobile.md +1 -1
  102. package/templates/agent-docs/whats-new.md +178 -44
  103. package/templates/apps/api-ai/package.json +7 -7
  104. package/templates/apps/api-auth/package.json +8 -8
  105. package/templates/apps/api-backend/package.json +7 -7
  106. package/templates/apps/api-backend-deactivation/package.json +7 -7
  107. package/templates/apps/api-backend-mail/package.json +8 -8
  108. package/templates/apps/api-backend-mariadb/package.json +9 -9
  109. package/templates/apps/api-backend-sqlite/package.json +8 -8
  110. package/templates/apps/api-backend-storage/package.json +8 -8
  111. package/templates/apps/api-cms/package.json +10 -10
  112. package/templates/apps/api-cms/tests/content.write.test.ts +16 -2
  113. package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +11 -5
  114. package/templates/apps/api-collab/package.json +8 -8
  115. package/templates/apps/api-collab/tests/documents.setBody.test.ts +8 -2
  116. package/templates/apps/api-data-advanced/package.json +8 -8
  117. package/templates/apps/api-durable/package.json +8 -8
  118. package/templates/apps/api-feature-flags/package.json +9 -9
  119. package/templates/apps/api-governance/package.json +8 -8
  120. package/templates/apps/api-kv/package.json +8 -8
  121. package/templates/apps/api-moderation/package.json +8 -8
  122. package/templates/apps/api-observability/package.json +8 -8
  123. package/templates/apps/api-ratelimit/package.json +8 -8
  124. package/templates/apps/api-rbac/authz.ts +16 -1
  125. package/templates/apps/api-rbac/package.json +8 -8
  126. package/templates/apps/api-rest/package.json +7 -7
  127. package/templates/apps/api-saas/package.json +11 -11
  128. package/templates/apps/api-saas-starter/package.json +10 -10
  129. package/templates/apps/api-search/package.json +8 -8
  130. package/templates/apps/api-status/package.json +8 -8
  131. package/templates/apps/api-versioning/mutations/documents.update.mutation.server.ts +7 -5
  132. package/templates/apps/api-versioning/package.json +8 -8
  133. package/templates/apps/api-webhooks/package.json +9 -9
  134. package/templates/apps/changelog/package.json +6 -6
  135. package/templates/apps/edge-functions/package.json +2 -2
  136. package/templates/apps/frontend-admin/package.json +8 -8
  137. package/templates/apps/frontend-app/package.json +9 -9
  138. package/templates/apps/frontend-auth/package.json +8 -8
  139. package/templates/apps/frontend-blank/package.json +7 -7
  140. package/templates/apps/frontend-cms/package.json +9 -9
  141. package/templates/apps/frontend-collab/package.json +10 -10
  142. package/templates/apps/frontend-contact/package.json +7 -7
  143. package/templates/apps/frontend-dashboard/package.json +7 -7
  144. package/templates/apps/frontend-docs/package.json +7 -7
  145. package/templates/apps/frontend-i18n/package.json +6 -6
  146. package/templates/apps/frontend-landing/package.json +7 -7
  147. package/templates/apps/frontend-portal/package.json +8 -8
  148. package/templates/apps/frontend-saas/package.json +8 -8
  149. package/templates/apps/frontend-spa/package.json +7 -7
  150. package/templates/apps/frontend-ssr/package.json +7 -7
  151. package/templates/apps/frontend-ssr-api/package.json +8 -8
  152. package/templates/apps/frontend-static-blog/package.json +6 -6
  153. package/templates/apps/frontend-status/package.json +8 -8
  154. package/templates/apps/mobile-app/README.md +41 -17
  155. package/templates/apps/mobile-app/app.config.ts +1 -1
  156. package/templates/apps/mobile-app/package.json +15 -11
  157. package/templates/apps/mobile-app/src/app/_layout.tsx +44 -13
  158. package/templates/apps/mobile-app/src/app/index.tsx +1 -1
  159. package/templates/apps/mobile-app/src/app/settings.tsx +4 -1
  160. package/templates/apps/mobile-app/src/client.ts +74 -57
  161. package/templates/apps/mobile-app/src/lib/api.ts +4 -4
  162. package/templates/apps/mobile-app/src/lib/deeplinks.ts +6 -6
  163. package/templates/apps/mobile-app/src/persistence.ts +24 -3
  164. package/templates/apps/mobile-app/tsconfig.json +17 -3
  165. package/templates/patches/@effect__cluster@0.60.0.patch +51 -3
  166. package/dist/addCommand-aXSQveak.js +0 -2
  167. package/dist/agentsMd-BTchIZku.js +0 -2
  168. package/dist/apiBuild-D0f6hYbH.js +0 -2
  169. package/dist/baselineCommand-Cfw2Afwm.js +0 -2
  170. package/dist/codegen-uYrrDzQv.js +0 -2
  171. package/dist/codegenCommand-BxS3sCeJ.js +0 -30
  172. package/dist/dbCommand-CC-qNzpz.js +0 -2
  173. package/dist/dev-BV6XNYKf.js +0 -3
  174. package/dist/doctorCommand-C4L61G_L.js +0 -2
  175. package/dist/inspect-CjTYzAs_.js +0 -1190
  176. package/dist/inspect-P4pxoMaV.js +0 -2
  177. package/dist/inspectGateHint-BF6608UT.js +0 -4
  178. package/dist/manifestBuild-COkJoyAr.js +0 -2
  179. package/dist/serveCommand-CyZsXL1l.js +0 -1766
  180. package/dist/serveCommand-qumm7jdF.js +0 -2
  181. package/dist/startupRunner-DPGFchOa.js +0 -71
  182. package/dist/updateCommand-BN0tkl9-.js +0 -2
  183. package/dist/webDev-BcykISYQ2.js +0 -2
@@ -0,0 +1,2 @@
1
+ import { v as e, y as t } from "./doctorCommand-Bvs-BQrM.js";
2
+ export { e as runDoctorCommand, t as runServePreflight };
@@ -1,4 +1,4 @@
1
- import { c as e, i as t } from "./dev-bwDgSObH.js";
1
+ import { c as e, i as t } from "./dev-gqpnzVhI.js";
2
2
  import { n, t as r } from "./cliArgs-D4p8n7EE.js";
3
3
  import { r as i } from "./appPort-B_HpJ_ck.js";
4
4
  import { resolve as a } from "node:path";
@@ -67,7 +67,10 @@ var p = l({ scope: "voltro:e2e" }), m = async (e) => {
67
67
  for (let t of s) t.isDirectory() && l(t.name, r) && await u(i(e, t.name), a);
68
68
  };
69
69
  return await u(s, a), c.sort();
70
- }, _ = () => a(r(s(import.meta.url)), "..", "bin", "voltro.mjs"), v = async (e) => {
70
+ }, _ = () => {
71
+ let e = r(s(import.meta.url));
72
+ return a(e, "..", "bin", "voltro.mjs");
73
+ }, v = async (e) => {
71
74
  p.info("starting e2e run", { webRoot: e });
72
75
  let r = await m(e);
73
76
  if (!r) return p.error("no app.config.ts (or type:'web') at this path", { webRoot: e }), 1;
@@ -142,6 +145,9 @@ var p = l({ scope: "voltro:e2e" }), m = async (e) => {
142
145
  }, y = (e) => u.tryPromise({
143
146
  try: () => v(e),
144
147
  catch: (e) => e
145
- }).pipe(u.orDie), b = async (t) => e(y(a(t.find((e) => !e.startsWith("-")) ?? process.cwd())), { scope: "voltro:e2e" });
148
+ }).pipe(u.orDie), b = async (t) => {
149
+ let n = a(t.find((e) => !e.startsWith("-")) ?? process.cwd());
150
+ return e(y(n), { scope: "voltro:e2e" });
151
+ };
146
152
  //#endregion
147
153
  export { b as runE2eCommand };
@@ -1,4 +1,4 @@
1
- import { c as e, i as t } from "./dev-bwDgSObH.js";
1
+ import { c as e, i as t } from "./dev-gqpnzVhI.js";
2
2
  import { Effect as n } from "effect";
3
3
  import { embedMany as r } from "@voltro/ai";
4
4
  //#region src/embeddingsBackfill.ts
@@ -58,16 +58,16 @@ var i = (e, t) => e.filter((e) => {
58
58
  }, c = async (i) => {
59
59
  let a = s(i);
60
60
  if ("error" in a) return console.error(a.error), 1;
61
- let c = await t(await e(process.cwd()), void 0), l = {
62
- all: (e) => c.query({ table: e }).then((e) => e.map((e) => ({
61
+ let c = process.cwd(), l = await e(c), u = await t(l, void 0), d = {
62
+ all: (e) => u.query({ table: e }).then((e) => e.map((e) => ({
63
63
  ...e,
64
64
  id: String(e.id)
65
65
  }))),
66
66
  update: async (e, t, n) => {
67
- await c.update(e, t, n);
67
+ await u.update(e, t, n);
68
68
  }
69
- }, u = (e) => n.runPromise(r(e)), { sub: d, ...f } = a, p = await o(l, u, f);
70
- return console.log(`embeddings backfill — table=${p.table} scanned=${p.scanned} embedded=${p.embedded}${p.dryRun ? " (dry-run)" : ""}`), 0;
69
+ }, f = (e) => n.runPromise(r(e)), { sub: p, ...m } = a, h = await o(d, f, m);
70
+ return console.log(`embeddings backfill — table=${h.table} scanned=${h.scanned} embedded=${h.embedded}${h.dryRun ? " (dry-run)" : ""}`), 0;
71
71
  };
72
72
  //#endregion
73
73
  export { c as runEmbeddingsCommand };
@@ -1,5 +1,5 @@
1
- import { c as e } from "./dev-bwDgSObH.js";
2
- import { at as t, ct as n, lt as r, ot as i } from "./webDev-Dybxew86.js";
1
+ import { c as e } from "./dev-gqpnzVhI.js";
2
+ import { at as t, ct as n, lt as r, ot as i } from "./webDev-CTpSY-e_.js";
3
3
  import { join as a } from "node:path";
4
4
  import { promises as o } from "node:fs";
5
5
  import { createLogger as s } from "@voltro/logger";
@@ -1,6 +1,6 @@
1
1
  import { n as e } from "./cliOutput-D1tSBoRM.js";
2
- import { t } from "./checkCommand-CLPTzYqM.js";
3
- import { i as n, n as r } from "./codemodRunner-cyqu5oxr.js";
2
+ import { t } from "./checkCommand-CBtynBKW.js";
3
+ import { i as n, n as r } from "./codemodRunner-D-jTyvWo.js";
4
4
  import { basename as i, join as a, resolve as o } from "node:path";
5
5
  import { branchNamespaceName as s, planBranchProvision as c } from "@voltro/database";
6
6
  import { readFile as l } from "node:fs/promises";
@@ -148,12 +148,10 @@ var f = (e) => e === void 0 ? [] : typeof e == "string" ? [e] : e, p = (e, t, n)
148
148
  safety: "manual"
149
149
  });
150
150
  break;
151
- case "drop-column":
152
- a.push({
153
- detail: `no backfill — verify the blast radius first, then drop '${e.column}'`,
154
- safety: "safe"
155
- });
156
- break;
151
+ case "drop-column": a.push({
152
+ detail: `no backfill — verify the blast radius first, then drop '${e.column}'`,
153
+ safety: "safe"
154
+ });
157
155
  }
158
156
  return {
159
157
  steps: a,
@@ -5,7 +5,7 @@ import { createLogger as i } from "@voltro/logger";
5
5
  import { Effect as a, Schema as o } from "effect";
6
6
  import { generateObject as s } from "@voltro/ai";
7
7
  //#region src/appBuilder.ts
8
- var c = 3, l = 50, u = 256 * 1024, d = (e) => e.reduce((e, t) => e + Buffer.byteLength(t.content, "utf8"), 0), f = async (t, n) => {
8
+ var c = 3, l = 50, u = 262144, d = (e) => e.reduce((e, t) => e + Buffer.byteLength(t.content, "utf8"), 0), f = async (t, n) => {
9
9
  let r = Math.max(1, n.maxAttempts ?? c), i = n.maxArtifacts ?? l, a = n.maxTotalBytes ?? u, o = [];
10
10
  for (let s = 1; s <= r; s++) {
11
11
  let r = await n.generate({
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "./commands-BwG9A9Vv.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "./commands-BD9eBRY3.js";
2
2
  import { r as o } from "./templates-BR-fb4SP.js";
3
3
  //#region src/index.ts
4
4
  var s = "framework";
@@ -1,5 +1,5 @@
1
1
  import { n as e, r as t, t as n } from "./cliOutput-D1tSBoRM.js";
2
- import { o as r } from "./updateCommand-9GHHsmDf.js";
2
+ import { o as r } from "./updateCommand-CHBmCB17.js";
3
3
  import { join as i, resolve as a } from "node:path";
4
4
  import { readFileSync as o, readdirSync as s, statSync as c } from "node:fs";
5
5
  //#region src/infoCommand.ts
@@ -49,12 +49,12 @@ var l = () => {
49
49
  }, f = async (r) => {
50
50
  let i = t(r);
51
51
  i && n();
52
- let o = a(r.find((e) => !e.startsWith("-")) ?? process.cwd()), s = d(o);
53
- if (i) return e(s), +(s.versionSkew.length > 0);
54
- if (console.log(`voltro v${s.cliVersion}`), console.log(` node ${s.node} (${s.platform})`), console.log(` package manager ${s.packageManager}`), console.log(` dialect ${s.dialect}${s.dbUrlConfigured ? "" : " (DB_URL not set)"}`), s.voltroPackages.length === 0) return console.log(`\n No @voltro packages found under ${o}/node_modules — run from an app root with deps installed.`), 0;
55
- console.log(`\n @voltro packages (${s.voltroPackages.length}):`);
56
- for (let e of s.voltroPackages) console.log(` ${e.name.padEnd(28)} ${e.version}`);
57
- return s.versionSkew.length > 0 ? (console.log(""), console.log(` ⚠ version skew — @voltro/* are released in lockstep but ${s.versionSkew.length} versions are installed:`), console.log(` ${s.versionSkew.join(", ")}`), console.log(" Run `voltro update` to realign every @voltro/* package."), 1) : 0;
52
+ let o = r.find((e) => !e.startsWith("-")), s = a(o ?? process.cwd()), c = d(s);
53
+ if (i) return e(c), +(c.versionSkew.length > 0);
54
+ if (console.log(`voltro v${c.cliVersion}`), console.log(` node ${c.node} (${c.platform})`), console.log(` package manager ${c.packageManager}`), console.log(` dialect ${c.dialect}${c.dbUrlConfigured ? "" : " (DB_URL not set)"}`), c.voltroPackages.length === 0) return console.log(`\n No @voltro packages found under ${s}/node_modules — run from an app root with deps installed.`), 0;
55
+ console.log(`\n @voltro packages (${c.voltroPackages.length}):`);
56
+ for (let e of c.voltroPackages) console.log(` ${e.name.padEnd(28)} ${e.version}`);
57
+ return c.versionSkew.length > 0 ? (console.log(""), console.log(` ⚠ version skew — @voltro/* are released in lockstep but ${c.versionSkew.length} versions are installed:`), console.log(` ${c.versionSkew.join(", ")}`), console.log(" Run `voltro update` to realign every @voltro/* package."), 1) : 0;
58
58
  };
59
59
  //#endregion
60
60
  export { f as runInfoCommand };