@voltro/cli 0.40.0 → 0.42.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 (104) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/dist/{apiBuild-C8xBEYbL.js → apiBuild-B_iH24qf.js} +2 -2
  3. package/dist/apiBuild-RM5W5YXk.js +2 -0
  4. package/dist/bin.js +1 -1
  5. package/dist/{build-CkhFGnKA.js → build-DUdi6F_Q.js} +150 -150
  6. package/dist/{checkCommand-QbHshOac.js → checkCommand-B2RWrpWi.js} +1 -1
  7. package/dist/{checkCommand-BcXJa2IS.js → checkCommand-DWL2_PPR.js} +2 -2
  8. package/dist/{codegenCommand-DF2OJh3O.js → codegenCommand-DkjoJ30Q.js} +2 -2
  9. package/dist/{codemodRunner-BcOvi4A2.js → codemodRunner-sFuWDETH.js} +520 -460
  10. package/dist/{commands-7Z7-HOE3.js → commands-DoTClnSk.js} +22 -22
  11. package/dist/{dashboardCommand-CUycH6dR.js → dashboardCommand-Bro7Jwts.js} +5 -5
  12. package/dist/dataCommand-Rj57y1vg.js +669 -0
  13. package/dist/dataProfile-Cm0YVKSy.js +18 -0
  14. package/dist/{dbCommand-DSwGv9wS.js → dbCommand-B237qI-j.js} +343 -316
  15. package/dist/dbCommand-BvQeKQOb.js +2 -0
  16. package/dist/{dev-Dh1NuYx1.js → dev-D4l_YOzI.js} +22 -22
  17. package/dist/{dev-D8JSKlBM.js → dev-DuqBJC7g.js} +1 -1
  18. package/dist/doctorCommand-Bw3V4L1j.js +2 -0
  19. package/dist/{doctorCommand-C-8-Z9D6.js → doctorCommand-TmZTAepc.js} +385 -279
  20. package/dist/{dormancyCommand-A79Odglm.js → dormancyCommand-CUKhRmGG.js} +1 -1
  21. package/dist/{embeddingsCommand-CoiyHfkY.js → embeddingsCommand-Db-iQM3l.js} +1 -1
  22. package/dist/{envCommand-B6d0s-jZ.js → envCommand-DQ_URZq9.js} +12 -12
  23. package/dist/{evolveCommand-BC5a9lxX.js → evolveCommand-CghRPrGO.js} +2 -2
  24. package/dist/index.js +1 -1
  25. package/dist/{infoCommand-ZqSVzJZ4.js → infoCommand-BCs_ZFnl.js} +1 -1
  26. package/dist/{migrate-BnPw2zC8.js → migrate-DN47p2PG.js} +1 -1
  27. package/dist/{runtimeTrace-BslKJjDY.js → runtimeTrace-jFKvOPBz.js} +1 -1
  28. package/dist/{sdkgen-DQ8uEmmn.js → sdkgen-COQqHB9V.js} +1 -1
  29. package/dist/{serveCommand-Dqb9Ku1-.js → serveCommand-C512kzZA.js} +417 -411
  30. package/dist/serveCommand-gj7MsqXY.js +2 -0
  31. package/dist/serveEntry.js +1 -1
  32. package/dist/{start-dkNYKtgQ.js → start-BjcuFME_.js} +379 -343
  33. package/dist/{start-BA7txHhY.js → start-fifc0xpW.js} +1 -1
  34. package/dist/startEntry.js +1 -1
  35. package/dist/updateCommand-B2alql9k.js +2 -0
  36. package/dist/{updateCommand-eoGpZr3E.js → updateCommand-HZQVBU3T.js} +1 -1
  37. package/dist/webDev-D6QeXw3P.js +2 -0
  38. package/dist/{webDev-bybjZA0o.js → webDev-Dk8lFUzf.js} +642 -525
  39. package/dist/{webhooksCommand-DubZWNOx.js → webhooksCommand-D7ZpH7w0.js} +1 -1
  40. package/package.json +23 -17
  41. package/templates/AGENTS.md +1 -1
  42. package/templates/agent-docs/_index.md +1 -1
  43. package/templates/agent-docs/_manifest.json +1 -1
  44. package/templates/agent-docs/cli.md +79 -6
  45. package/templates/agent-docs/data.md +33 -0
  46. package/templates/agent-docs/plugins/governance.md +8 -0
  47. package/templates/agent-docs/routing.md +141 -28
  48. package/templates/agent-docs/security.md +24 -0
  49. package/templates/agent-docs/whats-new.md +48 -109
  50. package/templates/apps/api-ai/package.json +7 -7
  51. package/templates/apps/api-auth/package.json +8 -8
  52. package/templates/apps/api-backend/package.json +7 -7
  53. package/templates/apps/api-backend-deactivation/package.json +7 -7
  54. package/templates/apps/api-backend-mail/package.json +8 -8
  55. package/templates/apps/api-backend-mariadb/package.json +9 -9
  56. package/templates/apps/api-backend-sqlite/package.json +8 -8
  57. package/templates/apps/api-backend-storage/package.json +8 -8
  58. package/templates/apps/api-cms/package.json +10 -10
  59. package/templates/apps/api-collab/package.json +8 -8
  60. package/templates/apps/api-data-advanced/package.json +8 -8
  61. package/templates/apps/api-durable/package.json +8 -8
  62. package/templates/apps/api-feature-flags/package.json +9 -9
  63. package/templates/apps/api-governance/package.json +8 -8
  64. package/templates/apps/api-kv/package.json +8 -8
  65. package/templates/apps/api-moderation/package.json +8 -8
  66. package/templates/apps/api-observability/package.json +8 -8
  67. package/templates/apps/api-ratelimit/package.json +8 -8
  68. package/templates/apps/api-rbac/package.json +8 -8
  69. package/templates/apps/api-rest/package.json +7 -7
  70. package/templates/apps/api-saas/package.json +11 -11
  71. package/templates/apps/api-saas-starter/package.json +10 -10
  72. package/templates/apps/api-search/package.json +8 -8
  73. package/templates/apps/api-status/package.json +8 -8
  74. package/templates/apps/api-versioning/package.json +8 -8
  75. package/templates/apps/api-webhooks/package.json +9 -9
  76. package/templates/apps/changelog/package.json +6 -6
  77. package/templates/apps/edge-functions/package.json +2 -2
  78. package/templates/apps/frontend-admin/package.json +8 -8
  79. package/templates/apps/frontend-app/package.json +9 -9
  80. package/templates/apps/frontend-auth/package.json +8 -8
  81. package/templates/apps/frontend-blank/package.json +7 -7
  82. package/templates/apps/frontend-cms/package.json +9 -9
  83. package/templates/apps/frontend-collab/package.json +10 -10
  84. package/templates/apps/frontend-contact/package.json +7 -7
  85. package/templates/apps/frontend-dashboard/package.json +7 -7
  86. package/templates/apps/frontend-docs/package.json +7 -7
  87. package/templates/apps/frontend-i18n/package.json +6 -6
  88. package/templates/apps/frontend-landing/package.json +7 -7
  89. package/templates/apps/frontend-portal/package.json +8 -8
  90. package/templates/apps/frontend-saas/package.json +8 -8
  91. package/templates/apps/frontend-spa/package.json +7 -7
  92. package/templates/apps/frontend-ssr/package.json +7 -7
  93. package/templates/apps/frontend-ssr-api/package.json +8 -8
  94. package/templates/apps/frontend-static-blog/package.json +6 -6
  95. package/templates/apps/frontend-status/package.json +8 -8
  96. package/templates/apps/mobile-app/package.json +4 -4
  97. package/dist/apiBuild-BIyGkym8.js +0 -2
  98. package/dist/dataCommand-By78lscK.js +0 -540
  99. package/dist/dataProfile-dW-PsfLB.js +0 -15
  100. package/dist/dbCommand-DcqEyxju.js +0 -2
  101. package/dist/doctorCommand-FhQ7EVYL.js +0 -2
  102. package/dist/serveCommand-BmvEQCMS.js +0 -2
  103. package/dist/updateCommand-BauSVxPp.js +0 -2
  104. package/dist/webDev-CBbKs4dZ.js +0 -2
@@ -0,0 +1,2 @@
1
+ import { s as e } from "./dbCommand-B237qI-j.js";
2
+ export { e as runDbCommand };
@@ -4,7 +4,7 @@ import { n } from "./appModuleLoader-C9r9mxZt.js";
4
4
  import { t as r } from "./bootRefusal-pgvDxlrU.js";
5
5
  import { n as i, r as a } from "./startupRunner-CEqQq7ax.js";
6
6
  import { r as o } from "./appPort-B_HpJ_ck.js";
7
- import { B as s, G as c, H as l, K as u, L as d, R as f, U as p, W as m, at as h, ct as g, dt as _, g as v, it as ee, lt as te, ot as y, q as b } from "./webDev-bybjZA0o.js";
7
+ import { H as s, J as c, K as l, V as u, W as d, X as f, Y as p, Z as m, ct as h, ft as g, g as _, ht as v, lt as ee, pt as te, q as y, ut as b } from "./webDev-Dk8lFUzf.js";
8
8
  import { n as x, r as S } from "./dialectDriver-czCHYpeH.js";
9
9
  import { a as C, i as ne, n as re, t as ie } from "./connectionConfig-Bk9IC7D0.js";
10
10
  import { a as ae, c as oe, i as se, n as ce, o as le, r as ue, t as de } from "./seedRunner-IdHEprqf.js";
@@ -6875,16 +6875,16 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
6875
6875
  default: return null;
6876
6876
  }
6877
6877
  }, cg = async (e) => {
6878
- let t = e.find((e) => !e.startsWith("-")) ?? process.cwd(), n = Bt(t), r = await v(n);
6878
+ let t = e.find((e) => !e.startsWith("-")) ?? process.cwd(), n = Bt(t), r = await _(n);
6879
6879
  return r.ran ? r.exitCode : process.env.FRAMEWORK_DEV_INNER !== "1" && process.env.WATCH !== "0" ? (yt(fl({ root: n }), { scope: "voltro:dev" }), new Promise(() => {})) : lg(n);
6880
6880
  }, lg = async (n) => {
6881
- let g = Date.now(), v = await Qh(n), x = o({
6881
+ let g = Date.now(), _ = await Qh(n), x = o({
6882
6882
  kind: "api",
6883
- configPort: v?.port,
6883
+ configPort: _?.port,
6884
6884
  env: process.env
6885
6885
  });
6886
6886
  for (let e of x.warnings) Z.warn(e);
6887
- let C = x.port, ie = v?.name ?? M(n), ae = Ft("api", ie, C), de = It(ie);
6887
+ let C = x.port, ie = _?.name ?? M(n), ae = Ft("api", ie, C), de = It(ie);
6888
6888
  await Nt({
6889
6889
  id: ae,
6890
6890
  name: ie,
@@ -6894,12 +6894,12 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
6894
6894
  status: "booting",
6895
6895
  logFile: de.path
6896
6896
  }).catch(() => {});
6897
- let w = u();
6898
- p(w), Z.info("booting voltro dev", {
6897
+ let w = f();
6898
+ y(w), Z.info("booting voltro dev", {
6899
6899
  root: n,
6900
6900
  version: Eh,
6901
6901
  logFile: de.path
6902
- }), ee(n, Z);
6902
+ }), h(n, Z);
6903
6903
  let he = await fe({
6904
6904
  project: M(n),
6905
6905
  cliVersion: Eh
@@ -6924,18 +6924,18 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
6924
6924
  });
6925
6925
  let T = await Fh(n);
6926
6926
  Z.info(`discovered ${T.length} files`, { count: T.length });
6927
- let { pluginContributions: De, pluginErrorImports: ke, pluginRpcImports: Ae } = await up(v?.plugins ?? [], v?.name ?? M(n), n), je = await Et({
6927
+ let { pluginContributions: De, pluginErrorImports: ke, pluginRpcImports: Ae } = await up(_?.plugins ?? [], _?.name ?? M(n), n), je = await Et({
6928
6928
  root: n,
6929
6929
  ...De.length > 0 ? { pluginContributions: De } : {},
6930
6930
  ...ke.length > 0 ? { pluginErrorImports: ke } : {},
6931
6931
  ...Ae.length > 0 ? { pluginRpcImports: Ae } : {},
6932
- ...v?.name === void 0 ? {} : { apiName: v.name }
6932
+ ..._?.name === void 0 ? {} : { apiName: _.name }
6933
6933
  });
6934
6934
  if (je ? (Z.info("codegen wrote rpcGroup", { path: zt(n, je) }), await Ct(je)) : Z.debug("codegen skipped — no descriptors discovered"), process.env.VOLTRO_BROWSER_SAFETY !== "off") {
6935
6935
  let e = await wt(n, T);
6936
6936
  if (e.length > 0) throw Error(e.map(Tt).join("\n\n"));
6937
6937
  }
6938
- let Me = $(v ?? null), Pe = Me === "mariadb" ? "mariadb" : Me === "mssql" ? "mssql" : void 0, { queries: E, mutations: D, actions: O, streams: Ge, events: qe, workflows: A, workflowWorkers: Xe, eventTriggers: Ze, schedules: Qe, connections: et, tables: nt, featureMix: it, tenantScopedTables: ot, softDeleteScopedTables: st, serverOnlyLeaks: ct, cacheScopeLeaks: ft } = await Xh(T, { cdc: Pe !== void 0 && (process.env.CDC ?? "1") !== "0" }), pt = Hl({
6938
+ let Me = $(_ ?? null), Pe = Me === "mariadb" ? "mariadb" : Me === "mssql" ? "mssql" : void 0, { queries: E, mutations: D, actions: O, streams: Ge, events: qe, workflows: A, workflowWorkers: Xe, eventTriggers: Ze, schedules: Qe, connections: et, tables: nt, featureMix: it, tenantScopedTables: ot, softDeleteScopedTables: st, serverOnlyLeaks: ct, cacheScopeLeaks: ft } = await Xh(T, { cdc: Pe !== void 0 && (process.env.CDC ?? "1") !== "0" }), pt = Hl({
6939
6939
  queries: E,
6940
6940
  mutations: D,
6941
6941
  actions: O,
@@ -6953,7 +6953,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
6953
6953
  e.action === "warn" && Z.warn(e.message ?? "");
6954
6954
  }
6955
6955
  Wl(pt, {
6956
- defaultDeny: Bl(v),
6956
+ defaultDeny: Bl(_),
6957
6957
  commandHint: "`voltro dev`"
6958
6958
  });
6959
6959
  let ht = A.length > 0 || Ze.length > 0, j = await Qh(n), gt = Kc(j?.http ?? {});
@@ -6962,7 +6962,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
6962
6962
  _t.minted.length > 0 && _t.file !== void 0 && (Z.warn(`minted ${_t.minted.length} project secret(s) into ${zt(n, _t.file)} — unique to this project, gitignored. Your DEPLOYMENT needs its own values (\`voltro secret generate\`).`, {
6963
6963
  keys: _t.minted,
6964
6964
  file: zt(n, _t.file)
6965
- }), e.includes(_t.file) || e.unshift(_t.file)), _t.ownershipWarning !== void 0 && Z.warn(_t.ownershipWarning), await _({
6965
+ }), e.includes(_t.file) || e.unshift(_t.file)), _t.ownershipWarning !== void 0 && Z.warn(_t.ownershipWarning), await v({
6966
6966
  rawEnv: j?.env,
6967
6967
  appType: "api",
6968
6968
  root: n,
@@ -7849,7 +7849,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
7849
7849
  scope: n.scope,
7850
7850
  baseKey: `q:${e.name}:${vs(t)}`
7851
7851
  };
7852
- }, bs = Lt(), xs = Ff(j?.plugins ?? [], bs), Ss = xs.mutation, Cs = xs.action, ws = xs.query, Ts = Bl(v), Es = yo({
7852
+ }, bs = Lt(), xs = Ff(j?.plugins ?? [], bs), Ss = xs.mutation, Cs = xs.action, ws = xs.query, Ts = Bl(_), Es = yo({
7853
7853
  store: R,
7854
7854
  defaultDeny: Ts,
7855
7855
  buildContext: (e, t, n) => Qo(e, t, n),
@@ -8695,7 +8695,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
8695
8695
  ...or.httpRoutes
8696
8696
  ];
8697
8697
  try {
8698
- await h(C, "voltro dev (api)");
8698
+ await ee(C, "voltro dev (api)");
8699
8699
  } catch (e) {
8700
8700
  Z.error(String(e.message ?? e)), process.exit(1);
8701
8701
  }
@@ -8754,7 +8754,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
8754
8754
  headers: k(t.origin)
8755
8755
  };
8756
8756
  if (n === "GET" && (e === "/_voltro/inspect/logs" || e.startsWith("/_voltro/inspect/logs?"))) return {
8757
- ...s(e, m(), t),
8757
+ ...d(e, c(), t),
8758
8758
  headers: k(t.origin)
8759
8759
  };
8760
8760
  if (n === "GET" && (e === "/_voltro/inspect/traces" || e.startsWith("/_voltro/inspect/traces?"))) {
@@ -8815,10 +8815,10 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
8815
8815
  reason: "forbidden host (DNS-rebinding guard)"
8816
8816
  },
8817
8817
  isDisabled: () => Ke(),
8818
- replay: () => w.buffered().map(c),
8819
- subscribe: (e) => w.subscribe((t) => e(c(t))),
8818
+ replay: () => w.buffered().map(p),
8819
+ subscribe: (e) => w.subscribe((t) => e(p(t))),
8820
8820
  corsHeaders: (e) => k(e),
8821
- keepAlive: () => b()
8821
+ keepAlive: () => m()
8822
8822
  },
8823
8823
  webhookRoutes: new Map(Array.from(Ba.entries()).map(([e, t]) => [e, { handle: t }])),
8824
8824
  ...er ? { tracerLayer: er } : {}
@@ -8843,9 +8843,9 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
8843
8843
  status: "live",
8844
8844
  logFile: de.path
8845
8845
  });
8846
- let e = f(n);
8846
+ let e = s(n);
8847
8847
  if (e) {
8848
- let t = await d({ dashboardAppPath: e });
8848
+ let t = await u({ dashboardAppPath: e });
8849
8849
  t.status === "launched" ? Z.info(`dashboard launched at http://localhost:${t.port}`, { port: t.port }) : t.status === "already-running" && Z.debug(`dashboard already running on :${t.port}`, { port: t.port });
8850
8850
  }
8851
8851
  setInterval(() => {
@@ -8875,7 +8875,7 @@ ${r.join("\n")}\n A consumer with no producer waits forever and looks exactly l
8875
8875
  } catch (e) {
8876
8876
  Z.warn("runtime-registry write failed", {}, e);
8877
8877
  }
8878
- return y(e, Z, {
8878
+ return b(e, Z, {
8879
8879
  root: n,
8880
8880
  onBeforeRestart: () => {
8881
8881
  try {
@@ -1,3 +1,3 @@
1
- import { c as e, d as t, f as n, i as r, u as i } from "./dev-Dh1NuYx1.js";
1
+ import { c as e, d as t, f as n, i as r, u as i } from "./dev-D4l_YOzI.js";
2
2
  import "./dialectDriver-czCHYpeH.js";
3
3
  export { r as buildStore, e as loadApiConfig, i as loadDiscovered, t as runDev, n as walk };
@@ -0,0 +1,2 @@
1
+ import { v as e, y as t } from "./doctorCommand-TmZTAepc.js";
2
+ export { e as runDoctorCommand, t as runServePreflight };