@voltro/cli 0.34.0 → 0.36.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.
- package/CHANGELOG.md +235 -0
- package/dist/{apiBuild-DZF_f0_I.js → apiBuild-DiE9zcj6.js} +2 -2
- package/dist/apiBuild-ZEZnCXn2.js +2 -0
- package/dist/{appGraph-gQ_6GkQQ.js → appGraph-KGDPTuTy.js} +1 -1
- package/dist/appGraph-zuMGKVYX.js +2 -0
- package/dist/bin.js +1 -1
- package/dist/{build-CE7Ca9gm.js → build-DBe6c7qC.js} +7 -7
- package/dist/{checkCommand-YZDmkAGd.js → checkCommand-BTA6P3Yr.js} +1 -1
- package/dist/{checkCommand-Dv8r9tGO.js → checkCommand-BhG0gmUD.js} +8 -7
- package/dist/{clusterCmd-CNXKlcvD.js → clusterCmd-D5wsCmA_.js} +1 -1
- package/dist/{codegenCommand-DC6w2tNZ.js → codegenCommand-DH-8ZXzR.js} +3 -3
- package/dist/{codemodRunner-DRRqXR74.js → codemodRunner-DjQGrdmg.js} +195 -37
- package/dist/{commands-gutsz-Ac.js → commands-Bp7utV-7.js} +37 -29
- package/dist/{dashboardCommand-3YG8p-UA.js → dashboardCommand-D5Jwjmr1.js} +3 -3
- package/dist/{dataCommand-qL0r7fPO.js → dataCommand-DnCm0B2C.js} +56 -54
- package/dist/dbCommand-DS4b97Is.js +2 -0
- package/dist/{dbCommand-B6X0FZbq.js → dbCommand-O8HA63s2.js} +6 -6
- package/dist/{dev-CoG-ZPx8.js → dev-BSFTgCQ5.js} +1 -1
- package/dist/{dev-CerMd0mW.js → dev-Dc4cpmRl.js} +2741 -2233
- package/dist/doctorCommand-BYffQc0s.js +2 -0
- package/dist/{doctorCommand-CnDXQxfa.js → doctorCommand-CNFtt3nR.js} +76 -73
- package/dist/{dormancyCommand-Dszo57d6.js → dormancyCommand-6F6NsJKf.js} +1 -1
- package/dist/{embeddingsCommand-C0sKVRo1.js → embeddingsCommand-DRRdneJD.js} +1 -1
- package/dist/{envCommand-DPgdV1Bq.js → envCommand-TZzcyqZ-.js} +2 -2
- package/dist/{evolveCommand-DHpkgjgH.js → evolveCommand-iU35TPjT.js} +2 -2
- package/dist/frameworkTableAssembly-YyVe32Cb.js +2 -0
- package/dist/frameworkTableAssembly-oMPBKqlE.js +511 -0
- package/dist/{generateCommand-oibemh97.js → generateCommand-DbgcUpGw.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{infoCommand-BJw9nLUR.js → infoCommand-unqisJGp.js} +1 -1
- package/dist/{inspect-CBqFtAKA.js → inspect-CjTYzAs_.js} +32 -2
- package/dist/inspect-P4pxoMaV.js +2 -0
- package/dist/{inspectCmd-Bppy-GGw.js → inspectCmd-EHFZ9yYu.js} +1 -1
- package/dist/{inspectFetch-Cm8_wVvp.js → inspectFetch-EMuhTG_9.js} +1 -1
- package/dist/{logsCmd-CCca3KRZ.js → logsCmd-D36xK7Zu.js} +1 -1
- package/dist/manifestBuild-COkJoyAr.js +2 -0
- package/dist/{manifestBuild-sxpwdKY1.js → manifestBuild-hpPLaGxV.js} +1 -1
- package/dist/{migrate-CBwOt_iV.js → migrate-BV7I-ZHZ.js} +3 -3
- package/dist/probeCommand-CZfaaUOZ.js +122 -0
- package/dist/{runtimeTrace-CRxalXTs.js → runtimeTrace-D5LJ_N55.js} +1 -1
- package/dist/scheduleCmd-DQRu6BZC.js +149 -0
- package/dist/{sdkgen-CYJscZC7.js → sdkgen-82xVuvbt.js} +1 -1
- package/dist/{seedRunner-TFHHiToI.js → seedRunner-ZmLSqNe2.js} +74 -70
- package/dist/serveCommand-CEBVP36A.js +2 -0
- package/dist/serveCommand-VVGcIMIw.js +1766 -0
- package/dist/serveEntry.js +1 -1
- package/dist/{start-B-9Nsp-S.js → start-BgN62boB.js} +1 -1
- package/dist/{start-9LiUOfES.js → start-T4VesWiM.js} +2 -2
- package/dist/startEntry.js +1 -1
- package/dist/{tracesCmd-CkEZQrtt.js → tracesCmd-DStmCJPi.js} +1 -1
- package/dist/updateCommand-CSBXVsYq.js +2 -0
- package/dist/{updateCommand-Bkptutss.js → updateCommand-CwnUK_mf.js} +1 -1
- package/dist/webDev-BcykISYQ2.js +2 -0
- package/dist/{webDev-CBYvPqQr.js → webDev-Dybxew86.js} +14 -2
- package/dist/{webhooksCommand-CID96Rga.js → webhooksCommand-di1CJVzu.js} +1 -1
- package/dist/{workflowsCmd-D1VTmLMY.js → workflowsCmd-BGF-mRZ5.js} +1 -1
- package/package.json +53 -17
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/_manifest.json +1 -1
- package/templates/agent-docs/authentication.md +55 -7
- package/templates/agent-docs/cli.md +81 -0
- package/templates/agent-docs/data.md +59 -2
- package/templates/agent-docs/database/migrations.md +50 -1
- package/templates/agent-docs/database/misc.md +33 -0
- package/templates/agent-docs/deployment.md +214 -21
- package/templates/agent-docs/introduction.md +1 -1
- package/templates/agent-docs/multi-tenancy.md +93 -22
- package/templates/agent-docs/plugins/ai-flows.md +86 -0
- package/templates/agent-docs/plugins/billing.md +1 -1
- package/templates/agent-docs/plugins/clickhouse.md +31 -0
- package/templates/agent-docs/plugins/search.md +6 -3
- package/templates/agent-docs/plugins/storage.md +11 -0
- package/templates/agent-docs/plugins.md +3 -1
- package/templates/agent-docs/scheduling.md +17 -0
- package/templates/agent-docs/security.md +2 -2
- package/templates/agent-docs/whats-new.md +31 -1764
- package/templates/agent-docs/workflows.md +101 -0
- package/templates/apps/api-ai/package.json +7 -7
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +10 -10
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-saas/package.json +11 -11
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-versioning/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +6 -6
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-app/package.json +9 -9
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-collab/package.json +10 -10
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-docs/package.json +7 -7
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +7 -7
- package/templates/apps/frontend-portal/package.json +8 -8
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-static-blog/package.json +6 -6
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +3 -3
- package/dist/apiBuild-BICVGnEC.js +0 -2
- package/dist/appGraph-CvQCte0z.js +0 -2
- package/dist/dbCommand-CpdKLeQq.js +0 -2
- package/dist/doctorCommand-BvqGBwNG.js +0 -2
- package/dist/frameworkTableAssembly-BGHmck-x.js +0 -2
- package/dist/frameworkTableAssembly-DkkP6BgC.js +0 -674
- package/dist/inspect-C_T_WGvl.js +0 -2
- package/dist/manifestBuild-ChsKAhmn.js +0 -2
- package/dist/scheduleCmd--jksTrf6.js +0 -69
- package/dist/serveCommand-B_isw7q4.js +0 -1647
- package/dist/serveCommand-DOvbgRnQ.js +0 -2
- package/dist/updateCommand-us1_hdIC.js +0 -2
- package/dist/webDev-Cg-fFiyd2.js +0 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./cliError-BmdYnghb.js";
|
|
2
|
-
import { c as t, i as n, o as r } from "./dev-
|
|
2
|
+
import { c as t, i as n, o as r } from "./dev-Dc4cpmRl.js";
|
|
3
3
|
import { n as i, t as a } from "./cliArgs-D4p8n7EE.js";
|
|
4
4
|
import { r as o } from "./dialectDriver-CgXnDfec.js";
|
|
5
5
|
import { t as s } from "./dataProfile-dW-PsfLB.js";
|
|
6
|
-
import { o as c, t as l } from "./inspectFetch-
|
|
7
|
-
import { r as u } from "./dbCommand-
|
|
6
|
+
import { o as c, t as l } from "./inspectFetch-EMuhTG_9.js";
|
|
7
|
+
import { r as u } from "./dbCommand-O8HA63s2.js";
|
|
8
8
|
import { createLogger as d } from "@voltro/logger";
|
|
9
9
|
import { Effect as f, Stream as p } from "effect";
|
|
10
10
|
import { SqlClient as m } from "@effect/sql";
|
|
@@ -331,32 +331,32 @@ var P = "voltro-backup-stamp.json", le = (e) => ({
|
|
|
331
331
|
...x.masking ? { maskedColumns: x.masking.transformed.length } : {}
|
|
332
332
|
}), 0;
|
|
333
333
|
}, Ce = async (e) => {
|
|
334
|
-
let t = H(e, "--target") === "api", n = H(e, "--bundle-key"),
|
|
335
|
-
if (!
|
|
336
|
-
let
|
|
334
|
+
let t = H(e, "--target") === "api", n = H(e, "--bundle-key"), i = U(e);
|
|
335
|
+
if (!i && !(t && n)) return L.error("usage: voltro data import <bundleDir> [--target direct|api] [--api-url <url>] [--token <secret>] [--bundle-key <storage-key>] [--mode upsert|append|replace] [--on-conflict skip|fail] [--atomic] [--assets] [--no-verify] [--force] [--allow-live] (--force: import despite schema drift AND cross-dialect warnings)"), 1;
|
|
336
|
+
let a = H(e, "--mode") ?? "upsert", o = H(e, "--on-conflict") ?? "skip";
|
|
337
337
|
if (t) {
|
|
338
338
|
let t = H(e, "--api-url");
|
|
339
339
|
if (!t) return L.error("--target api requires --api-url <url> (the running instance)"), 1;
|
|
340
|
-
let
|
|
341
|
-
if (!
|
|
340
|
+
let r = H(e, "--token") ?? process.env.VOLTRO_DATA_TRANSFER_SECRET;
|
|
341
|
+
if (!r) return L.error("--target api requires --token <secret> (or VOLTRO_DATA_TRANSFER_SECRET) matching the instance secret"), 1;
|
|
342
342
|
let s = {
|
|
343
|
-
authorization: `Bearer ${
|
|
344
|
-
"x-import-mode":
|
|
345
|
-
"x-import-on-conflict":
|
|
343
|
+
authorization: `Bearer ${r}`,
|
|
344
|
+
"x-import-mode": a,
|
|
345
|
+
"x-import-on-conflict": o,
|
|
346
346
|
...e.includes("--atomic") ? { "x-import-atomic": "1" } : {},
|
|
347
347
|
...e.includes("--force") ? { "x-import-force": "1" } : {}
|
|
348
348
|
}, { resolve: c } = await import("node:path"), l;
|
|
349
349
|
if (n) s["content-type"] = "application/json", l = JSON.stringify({ bundleKey: n });
|
|
350
|
-
else if (Y(
|
|
351
|
-
let t = Z(c(process.cwd(),
|
|
350
|
+
else if (Y(i)) {
|
|
351
|
+
let t = Z(c(process.cwd(), i)), n = X(e);
|
|
352
352
|
n && (t = T(t, n));
|
|
353
|
-
let
|
|
354
|
-
for await (let e of t)
|
|
355
|
-
s["content-type"] = "application/octet-stream", l = Buffer.concat(
|
|
353
|
+
let r = [];
|
|
354
|
+
for await (let e of t) r.push(Buffer.from(e));
|
|
355
|
+
s["content-type"] = "application/octet-stream", l = Buffer.concat(r);
|
|
356
356
|
} else {
|
|
357
|
-
await (await import("node:fs/promises")).access(c(process.cwd(),
|
|
357
|
+
await (await import("node:fs/promises")).access(c(process.cwd(), i, "assets", "index.ndjson")).then(() => !0, () => !1) && L.warn("this directory bundle has assets; --target api uploads DATA ONLY. Pack a single-file `.vbundle` (voltro data export <name>.vbundle --assets) to transfer assets over the API.");
|
|
358
358
|
let e = [];
|
|
359
|
-
for await (let t of E({ dir: c(process.cwd(),
|
|
359
|
+
for await (let t of E({ dir: c(process.cwd(), i) })) e.push(Buffer.from(t));
|
|
360
360
|
s["content-type"] = "application/octet-stream", l = Buffer.concat(e);
|
|
361
361
|
}
|
|
362
362
|
let u = await fetch(`${t.replace(/\/+$/, "")}/_voltro/admin/import`, {
|
|
@@ -369,64 +369,66 @@ var P = "voltro-backup-stamp.json", le = (e) => ({
|
|
|
369
369
|
...await u.json()
|
|
370
370
|
}), 0) : (L.error(`api import failed: HTTP ${u.status} — ${await u.text()}`), 1);
|
|
371
371
|
}
|
|
372
|
-
if (!
|
|
372
|
+
if (!i) return L.error("a <bundleDir> is required for a direct import"), 1;
|
|
373
373
|
if (!await V(e)) return 1;
|
|
374
|
-
let { store:
|
|
375
|
-
if (Y(
|
|
376
|
-
let t = await import("node:os"), n = await import("node:fs/promises"), { resolve:
|
|
374
|
+
let { store: s, snapshot: c } = await q(), l = e.includes("--force"), u = (e) => L.warn(e), d = e.includes("--assets") ? C({}) : void 0, p = W() === "postgres" ? (await import("@voltro/sql-postgres")).makePgCopySession(r()) : void 0;
|
|
375
|
+
if (Y(i)) {
|
|
376
|
+
let t = await import("node:os"), n = await import("node:fs/promises"), { resolve: r, join: m } = await import("node:path"), h = await n.mkdtemp(m(t.tmpdir(), "voltro-import-"));
|
|
377
377
|
try {
|
|
378
|
-
let t = Z(
|
|
378
|
+
let t = Z(r(process.cwd(), i)), n = X(e);
|
|
379
379
|
n && (t = T(t, n)), await ce(t, {
|
|
380
|
-
dir:
|
|
381
|
-
blobs: oe(
|
|
380
|
+
dir: h,
|
|
381
|
+
blobs: oe(d ?? C({}))
|
|
382
382
|
});
|
|
383
|
-
let
|
|
384
|
-
store:
|
|
385
|
-
bundleDir:
|
|
386
|
-
mode:
|
|
387
|
-
onConflict:
|
|
383
|
+
let m = await f.runPromise(A({
|
|
384
|
+
store: s,
|
|
385
|
+
bundleDir: h,
|
|
386
|
+
mode: a,
|
|
387
|
+
onConflict: o,
|
|
388
388
|
atomic: e.includes("--atomic"),
|
|
389
389
|
verify: !e.includes("--no-verify"),
|
|
390
390
|
targetDialect: W(),
|
|
391
|
-
allowIncompatible:
|
|
392
|
-
targetSnapshot:
|
|
393
|
-
force:
|
|
394
|
-
onWarn:
|
|
391
|
+
allowIncompatible: l,
|
|
392
|
+
targetSnapshot: c,
|
|
393
|
+
force: l,
|
|
394
|
+
onWarn: u,
|
|
395
395
|
onProgress: z,
|
|
396
|
-
assetsAlreadyRestored: !0
|
|
396
|
+
assetsAlreadyRestored: !0,
|
|
397
|
+
...p ? { copyLoader: p } : {}
|
|
397
398
|
}));
|
|
398
399
|
return L.info("import complete (single file)", {
|
|
399
|
-
file:
|
|
400
|
-
tables:
|
|
401
|
-
rows:
|
|
400
|
+
file: i,
|
|
401
|
+
tables: m.tables.length,
|
|
402
|
+
rows: m.tables.reduce((e, t) => e + t.rowCount, 0)
|
|
402
403
|
}), 0;
|
|
403
404
|
} finally {
|
|
404
|
-
await n.rm(
|
|
405
|
+
await p?.close(), await n.rm(h, {
|
|
405
406
|
recursive: !0,
|
|
406
407
|
force: !0
|
|
407
408
|
});
|
|
408
409
|
}
|
|
409
410
|
}
|
|
410
|
-
let
|
|
411
|
-
store:
|
|
412
|
-
bundleDir:
|
|
413
|
-
mode:
|
|
414
|
-
onConflict:
|
|
411
|
+
let m = await f.runPromise(A({
|
|
412
|
+
store: s,
|
|
413
|
+
bundleDir: i,
|
|
414
|
+
mode: a,
|
|
415
|
+
onConflict: o,
|
|
415
416
|
atomic: e.includes("--atomic"),
|
|
416
417
|
verify: !e.includes("--no-verify"),
|
|
417
418
|
targetDialect: W(),
|
|
418
|
-
allowIncompatible:
|
|
419
|
-
targetSnapshot:
|
|
420
|
-
force:
|
|
421
|
-
onWarn:
|
|
419
|
+
allowIncompatible: l,
|
|
420
|
+
targetSnapshot: c,
|
|
421
|
+
force: l,
|
|
422
|
+
onWarn: u,
|
|
422
423
|
onProgress: z,
|
|
423
|
-
...
|
|
424
|
-
|
|
424
|
+
...d ? { assets: M(d) } : {},
|
|
425
|
+
...p ? { copyLoader: p } : {}
|
|
426
|
+
})).finally(() => p?.close());
|
|
425
427
|
return L.info("import complete", {
|
|
426
|
-
bundleDir:
|
|
427
|
-
tables:
|
|
428
|
-
rows:
|
|
429
|
-
assets:
|
|
428
|
+
bundleDir: i,
|
|
429
|
+
tables: m.tables.length,
|
|
430
|
+
rows: m.tables.reduce((e, t) => e + t.rowCount, 0),
|
|
431
|
+
assets: m.assets.count
|
|
430
432
|
}), 0;
|
|
431
433
|
}, $ = () => {
|
|
432
434
|
let e = r();
|
|
@@ -4,8 +4,8 @@ import { n as r } from "./appModuleLoader-C9r9mxZt.js";
|
|
|
4
4
|
import { a as i, i as a, n as o, t as s } from "./cliArgs-D4p8n7EE.js";
|
|
5
5
|
import { r as c } from "./dialectDriver-CgXnDfec.js";
|
|
6
6
|
import { a as l } from "./connectionConfig-UFlIEiys.js";
|
|
7
|
-
import { i as u, n as d, r as f, s as p, t as m } from "./seedRunner-
|
|
8
|
-
import { n as h,
|
|
7
|
+
import { i as u, n as d, r as f, s as p, t as m } from "./seedRunner-ZmLSqNe2.js";
|
|
8
|
+
import { n as h, s as g, y as _ } from "./frameworkTableAssembly-oMPBKqlE.js";
|
|
9
9
|
import { b as v, x as y } from "./fileConventions-Cof68_BL.js";
|
|
10
10
|
import { basename as b, join as x, relative as S, resolve as C } from "node:path";
|
|
11
11
|
import { promises as w, writeSync as ee } from "node:fs";
|
|
@@ -339,9 +339,9 @@ var ke = (e) => typeof e != "string", Ae = (e, t, n, r) => {
|
|
|
339
339
|
});
|
|
340
340
|
}
|
|
341
341
|
return [...n].sort((e, t) => e.definition.id < t.definition.id ? -1 : 1);
|
|
342
|
-
}, et = (e) => {
|
|
343
|
-
let t = (process.env.DB_DIALECT ?? "postgres").toLowerCase(), n = t === "memory" ? "postgres" : t;
|
|
344
|
-
return E.runPromise(O(P,
|
|
342
|
+
}, et = async (e) => {
|
|
343
|
+
let t = (process.env.DB_DIALECT ?? "postgres").toLowerCase(), n = t === "memory" ? "postgres" : t, r = n, i = t === "memory" ? void 0 : await c(n).then((e) => e.retryFilter, () => void 0);
|
|
344
|
+
return E.runPromise(O(P, r, void 0, i === void 0 ? {} : { retryFilter: i }).pipe(E.provide(e)));
|
|
345
345
|
}, tt = (e) => E.runPromise(E.gen(function* () {
|
|
346
346
|
let e = yield* (yield* D.SqlClient)`SELECT id, status, hash, "appliedAt" FROM "_voltro_migrations"`.pipe(E.orElseSucceed(() => []));
|
|
347
347
|
return new Map(e.map((e) => [e.id, e]));
|
|
@@ -1414,7 +1414,7 @@ var ke = (e) => typeof e != "string", Ae = (e, t, n, r) => {
|
|
|
1414
1414
|
}
|
|
1415
1415
|
}, an = async (e) => {
|
|
1416
1416
|
let t = H(e), n = await q(), r = $();
|
|
1417
|
-
await J(n, O(P, W()));
|
|
1417
|
+
await J(n, O(P, W(), void 0, { retryFilter: (await c(W())).retryFilter }));
|
|
1418
1418
|
let i = await J(n, D.SqlClient.pipe(E.flatMap((e) => me(e, {
|
|
1419
1419
|
projectRoot: t,
|
|
1420
1420
|
env: r,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as e, d as t, f as n, i as r, u as i } from "./dev-
|
|
1
|
+
import { c as e, d as t, f as n, i as r, u as i } from "./dev-Dc4cpmRl.js";
|
|
2
2
|
import "./dialectDriver-CgXnDfec.js";
|
|
3
3
|
export { r as buildStore, e as loadApiConfig, i as loadDiscovered, t as runDev, n as walk };
|