@voltro/cli 0.51.0 → 0.52.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 (164) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/dist/{agentsMd-D6yD7IQv.js → agentsMd-0l980yhL.js} +4 -1
  3. package/dist/agentsMd-SDDSkyl4.js +2 -0
  4. package/dist/apiBuild-BYBpL7Pz.js +2 -0
  5. package/dist/{apiBuild-CPDHXF72.js → apiBuild-CSFI8QGq.js} +3 -3
  6. package/dist/bin.js +1 -1
  7. package/dist/build-CPgcMQug.js +793 -0
  8. package/dist/checkCommand-2SbqzukH.js +2 -0
  9. package/dist/{checkCommand-DNuPiWMc.js → checkCommand-COmqc2cB.js} +92 -46
  10. package/dist/{cloudCmd-F4YJeqM3.js → cloudCmd-QUXh-b5w.js} +1 -1
  11. package/dist/codegen-CctkDO-1.js +2 -0
  12. package/dist/{codegen-CrMXs4hb.js → codegen-VF479Cnb.js} +1 -1
  13. package/dist/{codegenCommand-BNBHcNNj.js → codegenCommand-DCdG2JN-.js} +12 -12
  14. package/dist/{codemodRunner-BDVixlSw.js → codemodRunner-r7J9lIa7.js} +588 -540
  15. package/dist/{commands-B1OiS9bX.js → commands-Cc_nV8WI.js} +35 -35
  16. package/dist/{dashboardCommand-C-vvPY1B.js → dashboardCommand-C-gKvwqh.js} +5 -5
  17. package/dist/{dataCommand-C1GxXW5q.js → dataCommand-BgpBHnlB.js} +27 -27
  18. package/dist/dbCommand-DNb6yeOG.js +2 -0
  19. package/dist/{dbCommand-If4Y1xQ-.js → dbCommand-sHedr-NJ.js} +2 -2
  20. package/dist/dev--A3nsxA3.js +3 -0
  21. package/dist/{dev-kdAg9Q7l.js → dev-CRHoCEiy.js} +2142 -2103
  22. package/dist/doctorCommand-CqoWA2p5.js +2 -0
  23. package/dist/{doctorCommand-nKmeW78u.js → doctorCommand-DtfJ3FA6.js} +314 -234
  24. package/dist/{dormancyCommand-CY3wa_SW.js → dormancyCommand-Drn7o0No.js} +1 -1
  25. package/dist/{embeddingsCommand-BDLIgje_.js → embeddingsCommand-Z-jO1fWN.js} +1 -1
  26. package/dist/{envCommand-C6V_xVlT.js → envCommand-D4gCrrTZ.js} +8 -8
  27. package/dist/{evolveCommand-D3c4DSfN.js → evolveCommand-CMROeKeA.js} +2 -2
  28. package/dist/fileConventions-DOqD3lPS.js +34 -0
  29. package/dist/{fileTaxonomy-CJfgOllU.js → fileTaxonomy-DvDUV9wq.js} +1 -1
  30. package/dist/frameworkTableAssembly-C6ETawPR.js +2 -0
  31. package/dist/{frameworkTableAssembly-BwJVEKLr.js → frameworkTableAssembly-w-XnLa3q.js} +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/{infoCommand-BnRFEF1o.js → infoCommand-DXM868o_.js} +1 -1
  34. package/dist/inspectMetrics-CGF94puw.js +143 -0
  35. package/dist/{metaCommands-CfRLra0s.js → metaCommands-C6RFmF1r.js} +2 -2
  36. package/dist/{migrate-DehuBakM.js → migrate-D0F-eTlK.js} +2 -2
  37. package/dist/{pageConvention-cEiRxdab.js → pageConvention-CzUiSbtU.js} +1 -1
  38. package/dist/{privacyCommand-XejDMvmu.js → privacyCommand-DGdopOI6.js} +1 -1
  39. package/dist/{projectScaffold-mIX_DpSe.js → projectScaffold-B4dmTlwT.js} +1 -1
  40. package/dist/{projectScaffold-BIl97_E6.js → projectScaffold-EzlErR4E.js} +1 -1
  41. package/dist/{renderModeScan-D7J1B7Kw.js → renderModeScan-CcH2X1_D.js} +25 -10
  42. package/dist/{renderProfile-1OWWAAtx.js → renderProfile-Ck32Fzxr.js} +2 -2
  43. package/dist/{runtimeTrace-ZsBU7Tkx.js → runtimeTrace-BPQyCmC5.js} +1 -1
  44. package/dist/{sdkgen-O4XqWOjM.js → sdkgen-Se88ifTd.js} +1 -1
  45. package/dist/serveCommand-DLc-BznW.js +2 -0
  46. package/dist/{serveCommand-DdiYNBBu.js → serveCommand-DkP3OT0W.js} +885 -868
  47. package/dist/serveEntry.js +1 -1
  48. package/dist/start-DfL3fOiN.js +3 -0
  49. package/dist/start-jw89Xbqy.js +1339 -0
  50. package/dist/startEntry.js +1 -1
  51. package/dist/{staticCommand-Dr2M6tpU.js → staticCommand-BwNEDlSU.js} +1 -1
  52. package/dist/{test-rXFq4S76.js → test-f3amja6a.js} +1 -1
  53. package/dist/updateCommand-5gFVfK5q.js +2 -0
  54. package/dist/{updateCommand-Bs322Q78.js → updateCommand-BMk2e4ky.js} +1 -1
  55. package/dist/{webDev-B-ubQEMX.js → webDev-BgWL9gKV.js} +1156 -835
  56. package/dist/webDev-CZbTsDcH.js +2 -0
  57. package/dist/{webhooksCommand-FLYY9IXh.js → webhooksCommand-CoIO3jbj.js} +1 -1
  58. package/package.json +30 -17
  59. package/templates/AGENTS.core.md +11 -0
  60. package/templates/AGENTS.md +15 -4
  61. package/templates/agent-docs/_index.md +4 -4
  62. package/templates/agent-docs/_manifest.json +11 -11
  63. package/templates/agent-docs/cli.md +96 -14
  64. package/templates/agent-docs/data.md +210 -7
  65. package/templates/agent-docs/database/schema.md +1 -1
  66. package/templates/agent-docs/database/seedsdialects.md +1 -1
  67. package/templates/agent-docs/deployment.md +22 -3
  68. package/templates/agent-docs/introduction.md +46 -0
  69. package/templates/agent-docs/local-first-mobile.md +34 -7
  70. package/templates/agent-docs/plugins/ai-flows.md +1 -1
  71. package/templates/agent-docs/plugins/audit.md +5 -5
  72. package/templates/agent-docs/plugins/cdc-out.md +2 -2
  73. package/templates/agent-docs/plugins/{versioning.md → row-history.md} +22 -22
  74. package/templates/agent-docs/plugins/storage.md +2 -2
  75. package/templates/agent-docs/plugins.md +29 -7
  76. package/templates/agent-docs/reference.md +39 -2
  77. package/templates/agent-docs/routing.md +341 -47
  78. package/templates/agent-docs/schema-driven-ui.md +78 -2
  79. package/templates/agent-docs/security.md +125 -8
  80. package/templates/agent-docs/templates/apibackends.md +14 -14
  81. package/templates/agent-docs/templates/overview.md +1 -1
  82. package/templates/agent-docs/whats-new.md +76 -53
  83. package/templates/apps/api-ai/package.json +6 -7
  84. package/templates/apps/api-ai/tests/summarize.test.ts +1 -1
  85. package/templates/apps/api-auth/package.json +8 -8
  86. package/templates/apps/api-backend/package.json +7 -7
  87. package/templates/apps/api-backend-deactivation/package.json +7 -7
  88. package/templates/apps/api-backend-mail/package.json +8 -8
  89. package/templates/apps/api-backend-mariadb/package.json +9 -9
  90. package/templates/apps/api-backend-sqlite/package.json +8 -8
  91. package/templates/apps/api-backend-storage/package.json +8 -8
  92. package/templates/apps/api-cms/package.json +9 -10
  93. package/templates/apps/api-collab/package.json +8 -8
  94. package/templates/apps/api-data-advanced/package.json +8 -8
  95. package/templates/apps/api-durable/package.json +8 -8
  96. package/templates/apps/api-feature-flags/package.json +9 -9
  97. package/templates/apps/api-governance/package.json +8 -8
  98. package/templates/apps/api-kv/package.json +8 -8
  99. package/templates/apps/api-moderation/package.json +8 -8
  100. package/templates/apps/api-observability/package.json +8 -8
  101. package/templates/apps/api-ratelimit/package.json +8 -8
  102. package/templates/apps/api-rbac/package.json +8 -8
  103. package/templates/apps/api-rest/package.json +7 -7
  104. package/templates/apps/{api-versioning → api-row-history}/README.md +3 -3
  105. package/templates/apps/{api-versioning → api-row-history}/actions/documents.asOf.action.server.ts +1 -1
  106. package/templates/apps/{api-versioning → api-row-history}/actions/documents.history.action.server.ts +1 -1
  107. package/templates/apps/{api-versioning → api-row-history}/app.config.ts +3 -3
  108. package/templates/apps/{api-versioning → api-row-history}/database/schema.ts +1 -1
  109. package/templates/apps/{api-versioning → api-row-history}/mutations/documents.create.mutation.server.ts +1 -1
  110. package/templates/apps/{api-versioning → api-row-history}/mutations/documents.create.mutation.ts +1 -1
  111. package/templates/apps/{api-versioning → api-row-history}/mutations/documents.update.mutation.ts +1 -1
  112. package/templates/apps/{api-versioning → api-row-history}/package.json +8 -8
  113. package/templates/apps/api-row-history/template.json +6 -0
  114. package/templates/apps/{api-versioning → api-row-history}/tests/documents.create.test.ts +1 -1
  115. package/templates/apps/api-saas/app.config.ts +1 -0
  116. package/templates/apps/api-saas/package.json +10 -11
  117. package/templates/apps/api-saas-starter/package.json +10 -10
  118. package/templates/apps/api-search/package.json +8 -8
  119. package/templates/apps/api-status/package.json +8 -8
  120. package/templates/apps/api-webhooks/package.json +9 -9
  121. package/templates/apps/changelog/package.json +6 -6
  122. package/templates/apps/edge-functions/package.json +2 -2
  123. package/templates/apps/frontend-admin/package.json +8 -8
  124. package/templates/apps/frontend-app/package.json +9 -9
  125. package/templates/apps/frontend-auth/package.json +8 -8
  126. package/templates/apps/frontend-blank/package.json +7 -7
  127. package/templates/apps/frontend-cms/package.json +9 -9
  128. package/templates/apps/frontend-collab/package.json +10 -10
  129. package/templates/apps/frontend-collab/src/pages/page.test.tsx +10 -9
  130. package/templates/apps/frontend-collab/src/pages/page.tsx +42 -65
  131. package/templates/apps/frontend-contact/package.json +7 -7
  132. package/templates/apps/frontend-dashboard/package.json +7 -7
  133. package/templates/apps/frontend-docs/package.json +6 -7
  134. package/templates/apps/frontend-i18n/package.json +6 -6
  135. package/templates/apps/frontend-landing/package.json +6 -7
  136. package/templates/apps/frontend-portal/package.json +8 -8
  137. package/templates/apps/frontend-saas/package.json +8 -8
  138. package/templates/apps/frontend-spa/package.json +7 -7
  139. package/templates/apps/frontend-ssr/package.json +7 -7
  140. package/templates/apps/frontend-ssr-api/package.json +8 -8
  141. package/templates/apps/frontend-static-blog/package.json +6 -6
  142. package/templates/apps/frontend-status/package.json +8 -8
  143. package/templates/apps/mobile-app/package.json +4 -4
  144. package/dist/agentsMd-Bu_XQgVf.js +0 -2
  145. package/dist/apiBuild-GDKuGOMV.js +0 -2
  146. package/dist/build-DETLZAFt.js +0 -752
  147. package/dist/checkCommand-CWcnDArJ.js +0 -2
  148. package/dist/codegen-DiMn2KkZ.js +0 -2
  149. package/dist/dbCommand-C27HIsGE.js +0 -2
  150. package/dist/dev-CK522MV5.js +0 -3
  151. package/dist/doctorCommand-BK4l18eG.js +0 -2
  152. package/dist/fileConventions-Cof68_BL.js +0 -33
  153. package/dist/frameworkTableAssembly-CVDB2hCq.js +0 -2
  154. package/dist/inspectMetrics-CfdKLh6t.js +0 -72
  155. package/dist/serveCommand-BRnPCxVd.js +0 -2
  156. package/dist/start-BLNmWkLa.js +0 -1154
  157. package/dist/start-Dzicuyw8.js +0 -3
  158. package/dist/updateCommand-eXB35SEv.js +0 -2
  159. package/dist/webDev-DposiF3j.js +0 -2
  160. package/templates/apps/api-versioning/template.json +0 -6
  161. /package/templates/apps/{api-versioning → api-row-history}/actions/documents.asOf.action.ts +0 -0
  162. /package/templates/apps/{api-versioning → api-row-history}/actions/documents.history.action.ts +0 -0
  163. /package/templates/apps/{api-versioning → api-row-history}/mutations/documents.update.mutation.server.ts +0 -0
  164. /package/templates/apps/{api-versioning → api-row-history}/tsconfig.json +0 -0
@@ -15,7 +15,7 @@ var l = () => {
15
15
  name: "list-templates",
16
16
  summary: "List available app templates (kind, summary, tags).",
17
17
  status: "wired",
18
- run: (e) => import("./projectScaffold-BIl97_E6.js").then((t) => t.runListTemplates(e)),
18
+ run: (e) => import("./projectScaffold-EzlErR4E.js").then((t) => t.runListTemplates(e)),
19
19
  help: {
20
20
  usage: "",
21
21
  examples: [["voltro list-templates", "every template `create-project` / `add-app` can scaffold"]]
@@ -25,7 +25,7 @@ var l = () => {
25
25
  name: "create-project",
26
26
  summary: "Scaffold a new project under apps/<name>/ from one or more templates (creates the workspace root when there is none).",
27
27
  status: "wired",
28
- run: (e) => import("./projectScaffold-BIl97_E6.js").then((t) => t.runCreateProject(e)),
28
+ run: (e) => import("./projectScaffold-EzlErR4E.js").then((t) => t.runCreateProject(e)),
29
29
  help: {
30
30
  usage: "<name> [--api <templateId>] [--web <templateId>] [--mobile[=<templateId>]] [--no-register]",
31
31
  flags: [
@@ -65,7 +65,7 @@ var l = () => {
65
65
  name: "add-app",
66
66
  summary: "Add a new app to an existing project from a template. Usage: voltro add-app <appName> --template <id> [--to <projectName>].",
67
67
  status: "wired",
68
- run: (e) => import("./projectScaffold-BIl97_E6.js").then((t) => t.runAddApp(e)),
68
+ run: (e) => import("./projectScaffold-EzlErR4E.js").then((t) => t.runAddApp(e)),
69
69
  help: {
70
70
  usage: "<appName> --template <templateId> [--to <projectName>] [--no-register]",
71
71
  flags: [
@@ -80,7 +80,7 @@ var l = () => {
80
80
  name: "init",
81
81
  summary: "Initialise the current directory as a Voltro workspace root (pnpm-workspace.yaml, root scripts, .gitignore, git init). Idempotent; takes no arguments.",
82
82
  status: "wired",
83
- run: (e) => import("./metaCommands-CfRLra0s.js").then((t) => t.runInit(e)),
83
+ run: (e) => import("./metaCommands-C6RFmF1r.js").then((t) => t.runInit(e)),
84
84
  help: {
85
85
  usage: "",
86
86
  examples: [["voltro init", "make the current directory a workspace root, then `voltro create-project <name>`"]],
@@ -91,7 +91,7 @@ var l = () => {
91
91
  name: "dev",
92
92
  summary: "Start the local development server (auto-discovers routes / mutations).",
93
93
  status: "wired",
94
- run: (e) => import("./dev-CK522MV5.js").then((t) => t.runDev(e)),
94
+ run: (e) => import("./dev--A3nsxA3.js").then((t) => t.runDev(e)),
95
95
  help: {
96
96
  usage: "[app]",
97
97
  examples: [["voltro dev", "boot the app in the current directory"], ["voltro dev apps/acme/api", "boot a specific app"]],
@@ -109,7 +109,7 @@ var l = () => {
109
109
  name: "dashboard",
110
110
  summary: "Serve the DevTools dashboard standalone (from @voltro/dashboard). Targets via VOLTRO_DASHBOARD_APPS; --port to override.",
111
111
  status: "wired",
112
- run: (e) => import("./dashboardCommand-C-vvPY1B.js").then((t) => t.runDashboardCommand(e)),
112
+ run: (e) => import("./dashboardCommand-C-gKvwqh.js").then((t) => t.runDashboardCommand(e)),
113
113
  help: {
114
114
  usage: "[--port <n>]",
115
115
  flags: [["--port <n>", "port to serve the dashboard on"]],
@@ -121,7 +121,7 @@ var l = () => {
121
121
  name: "check",
122
122
  summary: "Verify the app graph (blast-radius checks) against a running api; LLM-shaped --json diagnostics. Flags: --json, --process <p>, --diff removeTable:<name>.",
123
123
  status: "wired",
124
- run: (e) => import("./checkCommand-CWcnDArJ.js").then((t) => t.runCheckCommand(e)),
124
+ run: (e) => import("./checkCommand-2SbqzukH.js").then((t) => t.runCheckCommand(e)),
125
125
  help: {
126
126
  usage: "[--json] [--offline] [--process <name>] [--diff removeTable:<name>]",
127
127
  flags: [
@@ -155,7 +155,7 @@ var l = () => {
155
155
  name: "webhooks",
156
156
  summary: "Outbound-webhook artefacts. `consumer` generates the ZERO-DEPENDENCY Standard-Webhooks verification package a subscriber installs, from this app's own declared events; `events` lists the events a subscriber can register for. Usage: voltro webhooks <consumer|events> [path] [--out <dir>] [--name <pkg>] [--json].",
157
157
  status: "wired",
158
- run: (e) => import("./webhooksCommand-FLYY9IXh.js").then((t) => t.runWebhooksCommand(e)),
158
+ run: (e) => import("./webhooksCommand-CoIO3jbj.js").then((t) => t.runWebhooksCommand(e)),
159
159
  help: {
160
160
  usage: "<consumer|events> [path] [--out <dir>] [--name <pkg>] [--json]",
161
161
  flags: [
@@ -171,7 +171,7 @@ var l = () => {
171
171
  name: "evolve",
172
172
  summary: "Schema-evolution copilot: propose an observed-graph-driven codemod + a branch-verified backfill for a schema change (rename/retype/split/drop a column, rename a table). Dry-run by default; --write applies. Usage: voltro evolve rename-column <table>.<col> --to <newName> [--write] [--json].",
173
173
  status: "wired",
174
- run: (e) => import("./evolveCommand-D3c4DSfN.js").then((t) => t.runEvolveCommand(e)),
174
+ run: (e) => import("./evolveCommand-CMROeKeA.js").then((t) => t.runEvolveCommand(e)),
175
175
  help: {
176
176
  usage: "<rename-column|rename-table|retype-column|split-column|drop-column> <target> [--to <new>] [--write]",
177
177
  flags: [
@@ -188,7 +188,7 @@ var l = () => {
188
188
  name: "codegen",
189
189
  summary: "Emit rpcGroup.generated.ts from discovered route / mutation descriptors.",
190
190
  status: "wired",
191
- run: (e) => import("./codegenCommand-BNBHcNNj.js").then((t) => t.runCodegenCommand(e)),
191
+ run: (e) => import("./codegenCommand-DCdG2JN-.js").then((t) => t.runCodegenCommand(e)),
192
192
  help: {
193
193
  usage: "[app]",
194
194
  examples: [["voltro codegen", "regenerate rpcGroup.generated.ts for the app in the cwd"]],
@@ -199,7 +199,7 @@ var l = () => {
199
199
  name: "migrate",
200
200
  summary: "Apply the declared schema to the database (alias of `db apply` — diffs declared vs live and emits the ALTERs). `--create-only` for the bootstrap-only CREATE TABLE IF NOT EXISTS path.",
201
201
  status: "wired",
202
- run: (e) => import("./migrate-DehuBakM.js").then((t) => t.runMigrateCommand(e)),
202
+ run: (e) => import("./migrate-D0F-eTlK.js").then((t) => t.runMigrateCommand(e)),
203
203
  help: {
204
204
  usage: "[app] [--create-only]",
205
205
  flags: [["--create-only", "only CREATE TABLE IF NOT EXISTS — never ALTER (bootstrap)"]],
@@ -211,7 +211,7 @@ var l = () => {
211
211
  name: "test",
212
212
  summary: "Run vitest against the app at the cwd (auto-discovers *.test.ts/tsx).",
213
213
  status: "wired",
214
- run: (e) => import("./test-rXFq4S76.js").then((t) => t.runTestCommand(e)),
214
+ run: (e) => import("./test-f3amja6a.js").then((t) => t.runTestCommand(e)),
215
215
  help: {
216
216
  usage: "[dir] [filter…] [--watch] [-t <pattern>]",
217
217
  flags: [
@@ -259,7 +259,7 @@ var l = () => {
259
259
  name: "info",
260
260
  summary: "Report versions (CLI, node, every installed @voltro/* — flags lockstep skew), package manager, and dialect. --json for CI. Exits 1 on version skew.",
261
261
  status: "wired",
262
- run: (e) => import("./infoCommand-BnRFEF1o.js").then((t) => t.runInfoCommand(e)),
262
+ run: (e) => import("./infoCommand-DXM868o_.js").then((t) => t.runInfoCommand(e)),
263
263
  help: {
264
264
  usage: "[--json]",
265
265
  flags: [["--json", "machine-readable report"]],
@@ -280,7 +280,7 @@ var l = () => {
280
280
  name: "env",
281
281
  summary: "Inspect/sync the typed-env manifest. Subcommands: check (default), sync (.env.example), types (env.generated.d.ts for CI tsc), turbo.",
282
282
  status: "wired",
283
- run: (e) => import("./envCommand-C6V_xVlT.js").then((t) => t.runEnvCommand(e)),
283
+ run: (e) => import("./envCommand-D4gCrrTZ.js").then((t) => t.runEnvCommand(e)),
284
284
  help: {
285
285
  usage: "[check|sync|types|turbo] [--force]",
286
286
  flags: [["--force", "overwrite the generated file instead of refusing on a conflict"]],
@@ -309,12 +309,12 @@ var l = () => {
309
309
  run: async (e) => {
310
310
  let t = e.find((e) => !e.startsWith("-")) ?? process.cwd();
311
311
  if (e.includes("--preflight")) {
312
- let { runServePreflight: e } = await import("./doctorCommand-BK4l18eG.js");
312
+ let { runServePreflight: e } = await import("./doctorCommand-CqoWA2p5.js");
313
313
  return e(o(t), !0);
314
314
  }
315
- let { tryRunWebServe: n } = await import("./webDev-DposiF3j.js"), r = await n(o(t));
315
+ let { tryRunWebServe: n } = await import("./webDev-CZbTsDcH.js"), r = await n(o(t));
316
316
  if (!r.ran) {
317
- let { runServeDispatch: t } = await import("./serveCommand-BRnPCxVd.js");
317
+ let { runServeDispatch: t } = await import("./serveCommand-DLc-BznW.js");
318
318
  return t(e);
319
319
  }
320
320
  return r.exitCode;
@@ -342,13 +342,13 @@ var l = () => {
342
342
  handlesHelp: !0,
343
343
  summary: "Preflight an app for production: the precompiled serve bundle, hand-rolled primitives (naming the shipped one), @voltro/* version skew, executors with no access check, `.serverOnly()` leaks, and junction-FK gaps.",
344
344
  status: "wired",
345
- run: (e) => import("./doctorCommand-BK4l18eG.js").then((t) => t.runDoctorCommand(e))
345
+ run: (e) => import("./doctorCommand-CqoWA2p5.js").then((t) => t.runDoctorCommand(e))
346
346
  },
347
347
  {
348
348
  name: "build",
349
349
  summary: "Production build for a web app (vite build + per-page SSG pre-render).",
350
350
  status: "wired",
351
- run: (e) => import("./build-DETLZAFt.js").then((t) => t.runBuildCommand(e)),
351
+ run: (e) => import("./build-CPgcMQug.js").then((t) => t.runBuildCommand(e)),
352
352
  help: {
353
353
  usage: "[app] [--target <t>]",
354
354
  flags: [["--target <t>", "build target"]],
@@ -364,7 +364,7 @@ var l = () => {
364
364
  name: "prune-runtime",
365
365
  summary: "Trim a deployed web tree’s node_modules to the reachable runtime set (standalone image slimming).",
366
366
  status: "wired",
367
- run: (e) => import("./runtimeTrace-ZsBU7Tkx.js").then((t) => t.runPruneRuntimeCommand(e)),
367
+ run: (e) => import("./runtimeTrace-BPQyCmC5.js").then((t) => t.runPruneRuntimeCommand(e)),
368
368
  hidden: !0
369
369
  },
370
370
  {
@@ -382,7 +382,7 @@ var l = () => {
382
382
  name: "dormancy",
383
383
  summary: "Single-node scale-to-zero: front the API with a wake-orchestrator that stops the app when idle and brings it back on a request or a due wakeup (cron/workflow). Needs a SQL store. Flags: --port, --app-port, --idle-grace-ms, --tick-ms.",
384
384
  status: "wired",
385
- run: (e) => import("./dormancyCommand-CY3wa_SW.js").then((t) => t.runDormancyCommand(e)),
385
+ run: (e) => import("./dormancyCommand-Drn7o0No.js").then((t) => t.runDormancyCommand(e)),
386
386
  help: {
387
387
  usage: "[app] [--port <n>] [--app-port <n>] [--idle-grace-ms <n>] [--tick-ms <n>]",
388
388
  flags: [
@@ -399,7 +399,7 @@ var l = () => {
399
399
  name: "start",
400
400
  summary: "Production runtime: serves dist + SSR-on-demand for ssr/isr pages.",
401
401
  status: "wired",
402
- run: (e) => import("./start-Dzicuyw8.js").then((t) => t.runStartCommand(e)),
402
+ run: (e) => import("./start-DfL3fOiN.js").then((t) => t.runStartCommand(e)),
403
403
  help: {
404
404
  usage: "[app]",
405
405
  examples: [["voltro start", "serve a built web app (dist + SSR-on-demand)"]],
@@ -410,7 +410,7 @@ var l = () => {
410
410
  name: "deploy",
411
411
  summary: "Show deploy options + `voltro deploy plan` auto-detects the target tier (static-cdn / container / functions) per app + function.",
412
412
  status: "wired",
413
- run: (e) => import("./metaCommands-CfRLra0s.js").then((t) => t.runDeploy(e)),
413
+ run: (e) => import("./metaCommands-C6RFmF1r.js").then((t) => t.runDeploy(e)),
414
414
  help: {
415
415
  usage: "[plan]",
416
416
  examples: [["voltro deploy plan", "the auto-detected target tier per app + function"]]
@@ -428,13 +428,13 @@ var l = () => {
428
428
  handlesHelp: !0,
429
429
  summary: "Deploy a pre-built static site (./dist) to a cheap external host. Subcommands: hosts, deploy --host cloudflare-pages|s3|netlify [--spa] [--dry-run].",
430
430
  status: "wired",
431
- run: (e) => import("./staticCommand-Dr2M6tpU.js").then((t) => t.runStaticCommand(e))
431
+ run: (e) => import("./staticCommand-BwNEDlSU.js").then((t) => t.runStaticCommand(e))
432
432
  },
433
433
  {
434
434
  name: "privacy",
435
435
  summary: "GDPR / DSAR tooling. scope [root] — derive the subject graph from the schema AND print what it cannot see. export <subjectId> --url <app> / erase <subjectId> --url <app> --confirm — run against the RUNNING app's admin-gated governance endpoint, so the erasure log and configured anonymize fields apply.",
436
436
  status: "wired",
437
- run: (e) => import("./privacyCommand-XejDMvmu.js").then((t) => t.runPrivacyCommand(e)),
437
+ run: (e) => import("./privacyCommand-DGdopOI6.js").then((t) => t.runPrivacyCommand(e)),
438
438
  help: {
439
439
  usage: e(n),
440
440
  examples: [
@@ -453,7 +453,7 @@ var l = () => {
453
453
  name: "db",
454
454
  summary: "Database subcommands. Declarative flow: plan, apply, branch, plans, drift [--accept], squash, restore-snapshot. File migrations: generate [name], migrate, rollback, status, files, rollback-file. Data + housekeeping: seed, gc-snapshots, adopt. Credentials at rest: scan-credentials (find plaintext), encrypt-column (migrate a populated column onto .encrypted()).",
455
455
  status: "wired",
456
- run: (e) => import("./dbCommand-C27HIsGE.js").then((t) => t.runDbCommand(e)),
456
+ run: (e) => import("./dbCommand-DNb6yeOG.js").then((t) => t.runDbCommand(e)),
457
457
  help: {
458
458
  usage: e(t),
459
459
  examples: [
@@ -469,7 +469,7 @@ var l = () => {
469
469
  name: "data",
470
470
  summary: "Export/import + backup/restore of app data. Logical (rows + optional assets): export <dir> [--tenant <id>|--tables a,b|--exclude a,b] [--assets] [--compression zstd|gzip|none] [--consistency live|snapshot]; import <dir> [--assets] [--no-verify]; transfers — the history in all four directions, including a run in flight; inspect <file|dir>; unpack <file> <dir>. Native (vendor dump, no resume): backup <dir> [--assets] / restore <dir> [--assets] (pg_dump/mariadb-dump/…) — a restore marks the database in-progress until it finishes. Recovery: clear-replace-marker, clear-staging. Resumable + typed-NDJSON on the logical path; content-addressed assets on both.",
471
471
  status: "wired",
472
- run: (e) => import("./dataCommand-C1GxXW5q.js").then((t) => t.runDataCommand(e)),
472
+ run: (e) => import("./dataCommand-BgpBHnlB.js").then((t) => t.runDataCommand(e)),
473
473
  help: {
474
474
  usage: e(r),
475
475
  flags: [
@@ -526,27 +526,27 @@ var l = () => {
526
526
  handlesHelp: !0,
527
527
  summary: "Generate strong secrets. `generate [purpose]` (data-transfer, session, bundle-key, field-encryption, …) emits the right var+format; `generate` alone prints a generic secret; `list` shows all. Encrypted per-env storage is in Voltro Cloud.",
528
528
  status: "wired",
529
- run: (e) => import("./metaCommands-CfRLra0s.js").then((t) => t.runSecret(e))
529
+ run: (e) => import("./metaCommands-C6RFmF1r.js").then((t) => t.runSecret(e))
530
530
  },
531
531
  {
532
532
  name: "update",
533
533
  handlesHelp: !0,
534
534
  summary: "Upgrade the app to the latest framework: bump every @voltro/* dependency (across ALL workspace members, install once at the workspace root), then run the codemods shipped with the target version. Flags: --to <version>, --from <version>, --codemods-only, --dry-run, --force, --exact, --help. After: run `voltro db apply`.",
535
535
  status: "wired",
536
- run: (e) => import("./updateCommand-eXB35SEv.js").then((t) => t.runUpdateCommand(e))
536
+ run: (e) => import("./updateCommand-5gFVfK5q.js").then((t) => t.runUpdateCommand(e))
537
537
  },
538
538
  {
539
539
  name: "_apply-codemods",
540
540
  summary: "Internal: apply shipped codemods for a framework version jump (re-exec target of `voltro update`).",
541
541
  status: "wired",
542
542
  hidden: !0,
543
- run: (e) => import("./updateCommand-eXB35SEv.js").then((t) => t.runApplyCodemods(e))
543
+ run: (e) => import("./updateCommand-5gFVfK5q.js").then((t) => t.runApplyCodemods(e))
544
544
  },
545
545
  {
546
546
  name: "embeddings",
547
547
  summary: "Embeddings tooling. Subcommand: backfill <table> --text <field> --vector <field> [--model <m>] [--model-field <f>] [--batch <n>] [--dry-run] — (re)embed rows the vectorEmbedding() mixin missed.",
548
548
  status: "wired",
549
- run: (e) => import("./embeddingsCommand-BDLIgje_.js").then((t) => t.runEmbeddingsCommand(e)),
549
+ run: (e) => import("./embeddingsCommand-Z-jO1fWN.js").then((t) => t.runEmbeddingsCommand(e)),
550
550
  help: {
551
551
  usage: "backfill <table> --text <field> --vector <field> [--model <m>] [--batch <n>] [--dry-run]",
552
552
  flags: [
@@ -564,7 +564,7 @@ var l = () => {
564
564
  name: "telemetry",
565
565
  summary: "Report telemetry status — Voltro collects none (no phone-home, nothing to opt out of).",
566
566
  status: "wired",
567
- run: (e) => import("./metaCommands-CfRLra0s.js").then((t) => t.runTelemetry(e)),
567
+ run: (e) => import("./metaCommands-C6RFmF1r.js").then((t) => t.runTelemetry(e)),
568
568
  help: {
569
569
  usage: "",
570
570
  examples: [["voltro telemetry", "confirm what is collected: nothing"]],
@@ -579,7 +579,7 @@ var l = () => {
579
579
  name: "agents-md",
580
580
  summary: "Write the framework-tailored AGENTS.md into the project root (use --force to overwrite).",
581
581
  status: "wired",
582
- run: (e) => import("./agentsMd-Bu_XQgVf.js").then((t) => t.runAgentsMd(e)),
582
+ run: (e) => import("./agentsMd-SDDSkyl4.js").then((t) => t.runAgentsMd(e)),
583
583
  help: {
584
584
  usage: "[--force]",
585
585
  flags: [["--force", "overwrite existing files (both AGENTS.md and CLAUDE.md)"]],
@@ -655,7 +655,7 @@ var l = () => {
655
655
  name: "login",
656
656
  summary: "Log in to Voltro Cloud — opens a browser (WorkOS) and returns to the CLI after success. Alias for `voltro cloud login`. `--token <t>` (or VOLTRO_CLOUD_TOKEN) for headless.",
657
657
  status: "wired",
658
- run: (e) => import("./cloudCmd-F4YJeqM3.js").then((t) => t.runCloudCommand(["login", ...e])),
658
+ run: (e) => import("./cloudCmd-QUXh-b5w.js").then((t) => t.runCloudCommand(["login", ...e])),
659
659
  help: {
660
660
  usage: "[--token <t>]",
661
661
  flags: [["--token <t>", "headless login with an existing token (or set VOLTRO_CLOUD_TOKEN)"]],
@@ -667,7 +667,7 @@ var l = () => {
667
667
  handlesHelp: !0,
668
668
  summary: "Control-plane client. Subcommands: login (browser/WorkOS), whoami, projects, project create, env list|set|pull, import, deploy, scan, rollback, register. Base url via VOLTRO_CLOUD_URL.",
669
669
  status: "wired",
670
- run: (e) => import("./cloudCmd-F4YJeqM3.js").then((t) => t.runCloudCommand(e))
670
+ run: (e) => import("./cloudCmd-QUXh-b5w.js").then((t) => t.runCloudCommand(e))
671
671
  },
672
672
  {
673
673
  name: "help",
@@ -1,6 +1,6 @@
1
- import { d as e } from "./dev-kdAg9Q7l.js";
2
- import { B as t, U as n } from "./webDev-B-ubQEMX.js";
3
- import { t as r } from "./start-BLNmWkLa.js";
1
+ import { f as e } from "./dev-CRHoCEiy.js";
2
+ import { B as t, L as n } from "./webDev-BgWL9gKV.js";
3
+ import { t as r } from "./start-jw89Xbqy.js";
4
4
  import { join as i } from "node:path";
5
5
  import { existsSync as a } from "node:fs";
6
6
  import { createLogger as o } from "@voltro/logger";
@@ -9,10 +9,10 @@ var s = o({ scope: "voltro:dashboard" }), c = (e, t) => {
9
9
  let n = e.indexOf(t);
10
10
  return n >= 0 ? e[n + 1] : void 0;
11
11
  }, l = async (o) => {
12
- process.env[t] = "1";
12
+ process.env[n] = "1";
13
13
  let l = c(o, "--port") ?? process.env.VOLTRO_DASHBOARD_PORT ?? "5179";
14
14
  process.env.VOLTRO_DASHBOARD_PORT = l;
15
- let u = n(process.cwd());
15
+ let u = t(process.cwd());
16
16
  if (!u) return s.error("dashboard app not found. Install it with `pnpm add @voltro/dashboard`, or set VOLTRO_DASHBOARD_PATH to a dashboard app directory."), 1;
17
17
  let d = a(i(u, ".framework", "dist", "index.html"));
18
18
  return s.info(`serving the Voltro dashboard on :${l}`, {
@@ -1,11 +1,11 @@
1
1
  import { i as e, t } from "./subcommandNames-DpYs3DXr.js";
2
2
  import { t as n } from "./cliError-BmdYnghb.js";
3
- import { c as r, i, o as a, z as o } from "./dev-kdAg9Q7l.js";
3
+ import { B as r, c as i, i as a, o } from "./dev-CRHoCEiy.js";
4
4
  import { n as s, t as c } from "./cliArgs-D4p8n7EE.js";
5
5
  import { r as l } from "./dialectDriver-czCHYpeH.js";
6
6
  import { i as u, n as d, r as f, t as p } from "./dataProfile-Du3ztYxv.js";
7
7
  import { o as m, t as h } from "./inspectFetch-EMuhTG_9.js";
8
- import { r as g } from "./dbCommand-If4Y1xQ-.js";
8
+ import { r as g } from "./dbCommand-sHedr-NJ.js";
9
9
  import { resolve as _ } from "node:path";
10
10
  import { createLogger as v } from "@voltro/logger";
11
11
  import { DATA_TRANSFERS_TABLE as y, REPLACE_IN_PROGRESS_TABLE as b, _voltroDataTransfersTable as x, _voltroReplaceInProgressTable as S, connectionIdentity as C, derivedRowId as w, ensureTableRegistered as T, normaliseTarget as ee, sameDatabase as te, streamTable as ne } from "@voltro/database";
@@ -356,17 +356,17 @@ var Fe = /* @__PURE__ */ new Set([
356
356
  }, Qe = async (e) => {
357
357
  let t = e.includes("--allow-live"), n = t ? null : await Ze(U(e, "--api-url")), r = C({
358
358
  dialect: G(),
359
- ...a()
359
+ ...o()
360
360
  }), i = ee({
361
361
  dialect: G(),
362
- ...a()
363
- }), { refuse: o, message: s } = he({
362
+ ...o()
363
+ }), { refuse: a, message: s } = he({
364
364
  liveInstance: n?.label ?? null,
365
365
  allowLive: t,
366
366
  sameTarget: te(r, n?.databaseId),
367
367
  ...i === void 0 ? {} : { targetLabel: `${i.host}:${i.port}/${i.database}` }
368
368
  });
369
- return !o || (V.error(s ?? "refusing: live instance detected"), !1);
369
+ return !a || (V.error(s ?? "refusing: live instance detected"), !1);
370
370
  }, U = s, $e = [
371
371
  "--api-url",
372
372
  "--bundle-key",
@@ -394,15 +394,15 @@ var Fe = /* @__PURE__ */ new Set([
394
394
  }, et = async (e, t) => {
395
395
  let n = (await l(e)).makeSqlLayer(t);
396
396
  return D.runPromise(oe.SqlClient.pipe(D.flatMap(le), D.provide(n)));
397
- }, tt = (e) => et(e, a()), nt = () => {
398
- let e = a(), t = [];
397
+ }, tt = (e) => et(e, o()), nt = () => {
398
+ let e = o(), t = [];
399
399
  return e.url && t.push(B(e.url)), (e.host || e.database) && t.push(`${(e.host ?? "localhost").toLowerCase()}:${e.port ?? "(default)"}/${e.database ?? ""}`), t;
400
400
  }, K = async () => {
401
- let e = process.cwd(), t = await r(e);
401
+ let e = process.cwd(), t = await i(e);
402
402
  if (!t) throw new n("voltro data: no app.config.ts found in the current directory.");
403
- let a = await i(t, void 0), o = G();
403
+ let r = await a(t, void 0), o = G();
404
404
  return {
405
- store: a,
405
+ store: r,
406
406
  snapshot: await tt(o),
407
407
  dialect: o
408
408
  };
@@ -575,8 +575,8 @@ var Fe = /* @__PURE__ */ new Set([
575
575
  };
576
576
  }, vt = (e) => `--mode replace with --no-atomic against a ${e ? "RUNNING instance" : "live database"}: the target is empty between the delete and the load, and anything the application writes in that window can collide with a row from the bundle — or survive the import as a row the bundle never carried. Drop --no-atomic to run the whole load in one transaction (concurrent writers then wait instead of racing), or stop the traffic for the duration.`, X = (e, t) => e.includes("--no-atomic") ? !1 : e.includes("--atomic") || t === "replace", yt = (e, t, n) => {
577
577
  if (t !== "replace" || e.includes("--no-rollback")) return;
578
- let r = U(e, "--rollback-dir");
579
- return r === void 0 ? o(n) : _(r);
578
+ let i = U(e, "--rollback-dir");
579
+ return i === void 0 ? r(n) : _(i);
580
580
  }, bt = (e, t, n) => {
581
581
  let r = yt(e, t, n);
582
582
  return {
@@ -826,18 +826,18 @@ var Fe = /* @__PURE__ */ new Set([
826
826
  }, Ot = async (e) => {
827
827
  let t = U(e, "--target") === "api", n = U(e, "--bundle-key"), r = W(e);
828
828
  if (!r && !(t && n)) return V.error("usage: voltro data import <bundleDir> [--target direct|api] [--api-url <url>] [--token <secret>] [--timeout <seconds>] [--bundle-key <storage-key>] [--tables a,b] [--mode upsert|append|replace] [--on-conflict skip|fail] [--atomic] [--assets] [--no-verify] [--force] [--allow-live] [--dry-run] (--force: import despite schema drift AND cross-dialect warnings; --dry-run: report what would move, write nothing)"), 1;
829
- let i = U(e, "--mode") ?? "upsert", o = U(e, "--on-conflict") ?? "skip";
829
+ let i = U(e, "--mode") ?? "upsert", a = U(e, "--on-conflict") ?? "skip";
830
830
  if (t) {
831
831
  let t = U(e, "--api-url");
832
832
  if (!t) return V.error("--target api requires --api-url <url> (the running instance)"), 1;
833
- let a = U(e, "--token") ?? process.env.VOLTRO_DATA_TRANSFER_SECRET;
834
- if (!a) return V.error("--target api requires --token <secret> (or VOLTRO_DATA_TRANSFER_SECRET) matching the instance secret"), 1;
833
+ let o = U(e, "--token") ?? process.env.VOLTRO_DATA_TRANSFER_SECRET;
834
+ if (!o) return V.error("--target api requires --token <secret> (or VOLTRO_DATA_TRANSFER_SECRET) matching the instance secret"), 1;
835
835
  let s = U(e, "--tables"), c = U(e, "--rollback-key");
836
836
  i === "replace" && c === void 0 && V.warn("api replace: no rollback capture — this run empties the target first and nothing was asked to be kept.\n Pass --rollback-key <storage-key> and the INSTANCE stores the target's current rows in its own\n object storage before deleting them, which is the one place that survives the pod going away.");
837
837
  let l = {
838
- authorization: `Bearer ${a}`,
838
+ authorization: `Bearer ${o}`,
839
839
  "x-import-mode": i,
840
- "x-import-on-conflict": o,
840
+ "x-import-on-conflict": a,
841
841
  ...X(e, i) ? { "x-import-atomic": "1" } : {},
842
842
  ...e.includes("--no-atomic") ? { "x-import-atomic": "0" } : {},
843
843
  ...c === void 0 ? {} : { "x-import-rollback-key": c },
@@ -893,7 +893,7 @@ var Fe = /* @__PURE__ */ new Set([
893
893
  if (y.alreadyStarted === !0 && V.info(`api import: this bundle is already being imported as ${y.runId} — watching that run instead of starting a second one`), e.includes("--detach")) return V.info(`api import: started as ${y.runId}. NOT waiting for it.\n The outcome is not known yet — read it with: voltro data ${ut} --target api --api-url ${t}`), 0;
894
894
  if (y.recorded === !1) return V.warn(`api import: started as ${y.runId}, but this instance could not record the run — so its outcome\n cannot be read back. Run \`voltro db apply\` against it so the next import is watchable.`), 0;
895
895
  let b = await d({
896
- read: () => ct(t, a, y.runId),
896
+ read: () => ct(t, o, y.runId),
897
897
  onTick: (e) => {
898
898
  V.info(f(e));
899
899
  },
@@ -920,11 +920,11 @@ var Fe = /* @__PURE__ */ new Set([
920
920
  c.tables.some((e) => e.name === y) || V.warn(`this target has no \`${y}\` table, so this import will not be recorded.\n The import itself is unaffected. \`voltro db apply\` creates it.`);
921
921
  let l = e.includes("--force"), p = (e) => V.warn(e), m = e.includes("--assets"), h = m ? O() : void 0;
922
922
  if (m && !h) return V.error("--assets: this app has no storage provider configured, so there is nowhere to put the blobs.\n Install `storagePlugin(...)` in app.config.ts or set STORAGE_PROVIDER, or drop the flag."), 1;
923
- let g = G() === "postgres" ? (await import("@voltro/sql-postgres")).makePgCopySession(a()) : void 0;
923
+ let g = G() === "postgres" ? (await import("@voltro/sql-postgres")).makePgCopySession(o()) : void 0;
924
924
  if (q(r)) {
925
- let t = await import("node:os"), n = await import("node:fs/promises"), { resolve: a, join: u } = await import("node:path"), d = await n.mkdtemp(u(t.tmpdir(), "voltro-import-"));
925
+ let t = await import("node:os"), n = await import("node:fs/promises"), { resolve: o, join: u } = await import("node:path"), d = await n.mkdtemp(u(t.tmpdir(), "voltro-import-"));
926
926
  try {
927
- let t = Y(a(process.cwd(), r)), n = J(e);
927
+ let t = Y(o(process.cwd(), r)), n = J(e);
928
928
  return n && (t = M(t, n)), await je(t, {
929
929
  dir: d,
930
930
  blobs: ke(h ?? de())
@@ -934,7 +934,7 @@ var Fe = /* @__PURE__ */ new Set([
934
934
  store: s,
935
935
  bundleDir: d,
936
936
  mode: i,
937
- onConflict: o,
937
+ onConflict: a,
938
938
  atomic: X(e, i),
939
939
  ...bt(e, i, r),
940
940
  verify: !e.includes("--no-verify"),
@@ -961,7 +961,7 @@ var Fe = /* @__PURE__ */ new Set([
961
961
  store: s,
962
962
  bundleDir: r,
963
963
  mode: i,
964
- onConflict: o,
964
+ onConflict: a,
965
965
  atomic: X(e, i),
966
966
  verify: !e.includes("--no-verify"),
967
967
  targetDialect: G(),
@@ -983,7 +983,7 @@ var Fe = /* @__PURE__ */ new Set([
983
983
  assets: _.manifest.assets.count
984
984
  }), 0);
985
985
  }, kt = () => {
986
- let e = a();
986
+ let e = o();
987
987
  return {
988
988
  ...e.url ? { url: e.url } : {},
989
989
  ...e.host ? { host: e.host } : {},
@@ -1060,7 +1060,7 @@ var Fe = /* @__PURE__ */ new Set([
1060
1060
  }, jt = (e, t) => e?.recorded === !0 ? "voltro data transfers" : t === void 0 ? "NOT recorded (this target keeps no transfer history)" : `NOT recorded — bookkeeping was unavailable HERE, not at the target: ${t}`, Mt = async () => {
1061
1061
  let e;
1062
1062
  try {
1063
- e = await r(process.cwd());
1063
+ e = await i(process.cwd());
1064
1064
  } catch (e) {
1065
1065
  return {
1066
1066
  unavailable: "store-unopenable",
@@ -1069,7 +1069,7 @@ var Fe = /* @__PURE__ */ new Set([
1069
1069
  }
1070
1070
  if (!e) return { unavailable: "no-app-config" };
1071
1071
  try {
1072
- return { store: await i(e, void 0) };
1072
+ return { store: await a(e, void 0) };
1073
1073
  } catch (e) {
1074
1074
  return {
1075
1075
  unavailable: "store-unopenable",
@@ -0,0 +1,2 @@
1
+ import { s as e } from "./dbCommand-sHedr-NJ.js";
2
+ export { e as runDbCommand };
@@ -6,8 +6,8 @@ import { a, i as o, n as s, t as c } from "./cliArgs-D4p8n7EE.js";
6
6
  import { r as l } from "./dialectDriver-czCHYpeH.js";
7
7
  import { a as u } from "./connectionConfig-Bk9IC7D0.js";
8
8
  import { i as d, n as f, r as p, s as m, t as h } from "./seedRunner-Dgsiwk_e.js";
9
- import { g, n as _, s as v } from "./frameworkTableAssembly-BwJVEKLr.js";
10
- import { b as y, x as b } from "./fileConventions-Cof68_BL.js";
9
+ import { g, n as _, s as v } from "./frameworkTableAssembly-w-XnLa3q.js";
10
+ import { b as y, x as b } from "./fileConventions-DOqD3lPS.js";
11
11
  import { r as x, t as S } from "./inspectGateHint-BjnFubmH.js";
12
12
  import { basename as ee, join as C, relative as w, resolve as T } from "node:path";
13
13
  import { promises as E, writeSync as te } from "node:fs";
@@ -0,0 +1,3 @@
1
+ import { c as e, d as t, f as n, i as r, p as i, u as a } from "./dev-CRHoCEiy.js";
2
+ import "./dialectDriver-czCHYpeH.js";
3
+ export { r as buildStore, e as loadApiConfig, a as loadDiscovered, t as mergePluginRoutesInto, n as runDev, i as walk };