@voltro/cli 0.31.0 → 0.32.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 (74) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/dist/{apiBuild-CLPt-pX6.js → apiBuild-C4uEbs3s.js} +2 -2
  3. package/dist/apiBuild-OJEjtwcn.js +2 -0
  4. package/dist/bin.js +3 -3
  5. package/dist/checkCommand-CwMrzAgV.js +2 -0
  6. package/dist/{checkCommand-D7r6_pk7.js → checkCommand-dm7OHtPt.js} +328 -288
  7. package/dist/{commands-CNVVv03h.js → commands-C0nEePif.js} +53 -11
  8. package/dist/dbCommand-By__Ev0R.js +2 -0
  9. package/dist/{dbCommand-BH8GAYuf.js → dbCommand-ifOMafuG.js} +90 -82
  10. package/dist/{dev-DdQEn2Ia.js → dev-5ficNnvF.js} +1232 -1224
  11. package/dist/{dev-DOZVMVfi.js → dev-rc3fwPSZ.js} +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/{inspectMetrics-BeEAnjqw.js → inspectMetrics-BqO4E9G0.js} +757 -715
  14. package/dist/{sdkgen-v9WV8zRi.js → sdkgen-B_5mHQS2.js} +1 -1
  15. package/dist/{serveCommand-KsKXXWn4.js → serveCommand-PxMmn96o.js} +366 -366
  16. package/dist/serveEntry.js +2 -2
  17. package/dist/{start-CI2QdKy9.js → start-D1-8eKrO.js} +1 -1
  18. package/dist/startEntry.js +2 -2
  19. package/package.json +417 -17
  20. package/templates/AGENTS.md +1 -1
  21. package/templates/agent-docs/_index.md +1 -1
  22. package/templates/agent-docs/plugins/audit.md +24 -0
  23. package/templates/agent-docs/security.md +9 -0
  24. package/templates/agent-docs/whats-new.md +109 -61
  25. package/templates/apps/api-ai/package.json +7 -7
  26. package/templates/apps/api-auth/package.json +8 -8
  27. package/templates/apps/api-backend/package.json +7 -7
  28. package/templates/apps/api-backend-deactivation/package.json +7 -7
  29. package/templates/apps/api-backend-mail/package.json +8 -8
  30. package/templates/apps/api-backend-mariadb/package.json +9 -9
  31. package/templates/apps/api-backend-sqlite/package.json +8 -8
  32. package/templates/apps/api-backend-storage/package.json +8 -8
  33. package/templates/apps/api-cms/package.json +10 -10
  34. package/templates/apps/api-collab/package.json +8 -8
  35. package/templates/apps/api-data-advanced/package.json +8 -8
  36. package/templates/apps/api-durable/package.json +8 -8
  37. package/templates/apps/api-feature-flags/package.json +9 -9
  38. package/templates/apps/api-governance/package.json +8 -8
  39. package/templates/apps/api-kv/package.json +8 -8
  40. package/templates/apps/api-moderation/package.json +8 -8
  41. package/templates/apps/api-observability/package.json +8 -8
  42. package/templates/apps/api-ratelimit/package.json +8 -8
  43. package/templates/apps/api-rbac/package.json +8 -8
  44. package/templates/apps/api-rest/package.json +7 -7
  45. package/templates/apps/api-saas/package.json +11 -11
  46. package/templates/apps/api-saas-starter/package.json +10 -10
  47. package/templates/apps/api-search/package.json +8 -8
  48. package/templates/apps/api-status/package.json +8 -8
  49. package/templates/apps/api-versioning/package.json +8 -8
  50. package/templates/apps/api-webhooks/package.json +9 -9
  51. package/templates/apps/changelog/package.json +6 -6
  52. package/templates/apps/edge-functions/package.json +2 -2
  53. package/templates/apps/frontend-admin/package.json +8 -8
  54. package/templates/apps/frontend-app/package.json +8 -8
  55. package/templates/apps/frontend-auth/package.json +8 -8
  56. package/templates/apps/frontend-blank/package.json +7 -7
  57. package/templates/apps/frontend-cms/package.json +9 -9
  58. package/templates/apps/frontend-collab/package.json +9 -9
  59. package/templates/apps/frontend-contact/package.json +7 -7
  60. package/templates/apps/frontend-dashboard/package.json +7 -7
  61. package/templates/apps/frontend-docs/package.json +7 -7
  62. package/templates/apps/frontend-i18n/package.json +6 -6
  63. package/templates/apps/frontend-landing/package.json +7 -7
  64. package/templates/apps/frontend-portal/package.json +8 -8
  65. package/templates/apps/frontend-saas/package.json +8 -8
  66. package/templates/apps/frontend-spa/package.json +7 -7
  67. package/templates/apps/frontend-ssr/package.json +7 -7
  68. package/templates/apps/frontend-ssr-api/package.json +8 -8
  69. package/templates/apps/frontend-static-blog/package.json +6 -6
  70. package/templates/apps/frontend-status/package.json +8 -8
  71. package/templates/apps/mobile-app/package.json +2 -2
  72. package/dist/apiBuild-BOqL1dlg.js +0 -2
  73. package/dist/checkCommand-ClRvH_SN.js +0 -2
  74. package/dist/dbCommand-BwQ_Jl98.js +0 -2
@@ -1,18 +1,18 @@
1
1
  import { t as e } from "./cliRuntime-Oh517vCV.js";
2
- import { A as t, Ct as n, D as r, Dt as i, Et as a, F as o, I as s, M as c, N as l, O as u, P as d, R as f, S as p, X as m, Y as h, Z as g, _t as _, a as v, b as y, bt as b, c as ee, d as te, f as ne, gt as re, h as ie, ht as ae, j as oe, m as se, o as ce, p as le, s as ue, u as de, vt as fe, w as pe, x as me, xt as he, yt as ge } from "./inspectMetrics-BeEAnjqw.js";
3
- import { _ as _e, a as ve, c as ye, d as x, f as be, g as xe, h as Se, i as Ce, l as we, m as Te, n as Ee, o as De, p as Oe, s as ke, t as Ae, u as je, v as S, y as Me } from "./checkCommand-D7r6_pk7.js";
2
+ import { A as t, Ct as n, D as r, Dt as i, Et as a, F as o, I as s, M as c, N as l, O as u, P as d, R as f, S as p, X as m, Y as h, Z as g, _t as _, a as v, b as y, bt as b, c as ee, d as te, f as ne, gt as re, h as ie, ht as ae, j as oe, m as se, o as ce, p as le, s as ue, u as de, vt as fe, w as pe, x as me, xt as he, yt as ge } from "./inspectMetrics-BqO4E9G0.js";
3
+ import { _ as _e, a as ve, c as ye, d as x, f as be, g as xe, h as Se, i as Ce, l as we, m as Te, n as Ee, o as De, p as Oe, s as ke, t as Ae, u as je, v as S, y as Me } from "./checkCommand-dm7OHtPt.js";
4
4
  import { s as Ne } from "./seedRunner-Bqxgp7HZ.js";
5
5
  import { n as Pe } from "./appModuleLoader-C9r9mxZt.js";
6
6
  import { a as C, c as Fe, i as Ie, o as Le, s as Re } from "./devActivity-BhIu6ncs.js";
7
- import { Gt as ze, It as Be, Vt as Ve, Wt as He, c as Ue, f as We, i as Ge, l as Ke, o as qe, rn as Je, z as Ye } from "./dev-DdQEn2Ia.js";
7
+ import { Gt as ze, It as Be, Vt as Ve, Wt as He, c as Ue, f as We, i as Ge, l as Ke, o as qe, rn as Je, z as Ye } from "./dev-5ficNnvF.js";
8
8
  import { C as Xe, i as Ze, o as Qe } from "./frameworkTableAssembly-BwIrO5nv.js";
9
9
  import { D as $e, E as et, N as tt, O as nt, T as rt, a as it, d as at, f as ot, h as st, i as ct, j as lt, k as ut, l as dt, m as ft, r as pt, u as mt } from "./fileConventions-Cof68_BL.js";
10
- import { i as ht, n as gt, o as _t, s as vt } from "./apiBuild-CLPt-pX6.js";
10
+ import { i as ht, n as gt, o as _t, s as vt } from "./apiBuild-C4uEbs3s.js";
11
11
  import { r as yt } from "./appGraph-gQ_6GkQQ.js";
12
- import { t as bt } from "./start-CI2QdKy9.js";
12
+ import { t as bt } from "./start-D1-8eKrO.js";
13
13
  import { a as xt, i as St, n as Ct, r as wt, t as Tt } from "./cliArgs-qdZSElM3.js";
14
- import { n as Et, r as Dt } from "./serveCommand-KsKXXWn4.js";
15
- import { c as Ot, r as kt, s as At } from "./dbCommand-BH8GAYuf.js";
14
+ import { n as Et, r as Dt } from "./serveCommand-PxMmn96o.js";
15
+ import { c as Ot, r as kt, s as At } from "./dbCommand-ifOMafuG.js";
16
16
  import { basename as w, dirname as T, isAbsolute as jt, join as E, relative as D, resolve as O, sep as Mt } from "node:path";
17
17
  import { fileURLToPath as Nt, pathToFileURL as Pt } from "node:url";
18
18
  import { FileSystem as Ft } from "@effect/platform";
@@ -870,10 +870,10 @@ never mint — inspect stays closed until an operator opens it.`);
870
870
  }, Kr = async (e) => {
871
871
  let t = await ue(e);
872
872
  if (!t) {
873
- let { loadApiConfig: t } = await import("./dev-DOZVMVfi.js"), n = await t(e);
873
+ let { loadApiConfig: t } = await import("./dev-rc3fwPSZ.js"), n = await t(e);
874
874
  if (n) {
875
875
  V.info("building api app", { app: n.name ?? "(unnamed)" });
876
- let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-BOqL1dlg.js");
876
+ let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-OJEjtwcn.js");
877
877
  await t(e);
878
878
  try {
879
879
  await r(e);
@@ -1092,7 +1092,7 @@ never mint — inspect stays closed until an operator opens it.`);
1092
1092
  return t.ran ? t.exitCode : (yield* k.logError("no web app found at this path", { hint: "looked for app.config.ts with `type: 'web'`" }), 1);
1093
1093
  }), Jr = async (t) => {
1094
1094
  if (t.includes("--target")) {
1095
- let { runSdkBuildCommand: e } = await import("./sdkgen-v9WV8zRi.js");
1095
+ let { runSdkBuildCommand: e } = await import("./sdkgen-B_5mHQS2.js");
1096
1096
  return e(t);
1097
1097
  }
1098
1098
  let n = t.find((e) => !e.startsWith("-")) ?? process.cwd(), r = await e(qr(n), { scope: "voltro:build" }), i = Je(n);
@@ -4447,6 +4447,48 @@ never mint — inspect stays closed until an operator opens it.`);
4447
4447
  "credential on the Subject — `connectionCredentials(...)` keeps it in the",
4448
4448
  "framework vault."
4449
4449
  ].join("\n")
4450
+ }),
4451
+ H({
4452
+ version: "0.32.0",
4453
+ id: "0.32.0/01_audit-redacts-outcome",
4454
+ title: "`auditPlugin` now redacts `outcome` by default — opt out if your trail reads it",
4455
+ kind: "manual",
4456
+ appliesTo: ({ project: e }) => e.getSourceFiles().some((e) => /auditPlugin\s*\(/.test(e.getFullText())),
4457
+ note: [
4458
+ "`auditPlugin` gained `redactOutcome`, and it DEFAULTS TO `'all'`.",
4459
+ "",
4460
+ "What changes in your `_voltro_audit_log` rows from this version on:",
4461
+ "",
4462
+ " outcome.value (on success) → { \"__redacted\": \"all\" }",
4463
+ " outcome.error (on failure) → { \"_tag\": \"<yours>\" } ← the tag SURVIVES",
4464
+ " outcome.kind, outcome.durationMs ← unchanged",
4465
+ "",
4466
+ "Nothing else moves: the input and subject policies are unchanged, the",
4467
+ "caller still receives the real result, and a `record` predicate still sees",
4468
+ "the live outcome, so a filter keyed on what a call returned keeps working.",
4469
+ "",
4470
+ "WHY: a credential-issuing call has nothing sensitive in its INPUT — the",
4471
+ "secret is the thing it returns. `redactInput` could never reach it. A team",
4472
+ "found four live webhook signing secrets stored in full in this column, with",
4473
+ "both existing redaction options already enabled.",
4474
+ "",
4475
+ "IF YOUR TRAIL IS READ FOR THE RESULT PAYLOAD, opt out explicitly:",
4476
+ "",
4477
+ " auditPlugin({ sink: 'datastore', redactOutcome: 'none' })",
4478
+ "",
4479
+ "or keep the shape and drop only the sensitive part:",
4480
+ "",
4481
+ " auditPlugin({ sink: 'datastore', redactOutcome: (e) => summarise(e) })",
4482
+ "",
4483
+ "AND WHILE YOU ARE HERE — the rows already written are not touched by this.",
4484
+ "Run the scan on every environment:",
4485
+ "",
4486
+ " voltro db scan-credentials",
4487
+ "",
4488
+ "It exits 1 on a hit and 2 when it examined nothing. If it finds something,",
4489
+ "purge the rows AND rotate the credentials — assume anything written to a",
4490
+ "log table has been read."
4491
+ ].join("\n")
4450
4492
  })
4451
4493
  ], ls = /* @__PURE__ */ new Set([
4452
4494
  "node_modules",
@@ -8181,7 +8223,7 @@ replicas = 1
8181
8223
  return Ne(e);
8182
8224
  }, yf = async (t) => {
8183
8225
  if (t.includes("--create-only")) return e(gf(O(t.find((e) => !e.startsWith("-")) ?? process.cwd())), { scope: "voltro:migrate" });
8184
- let { runDbCommand: n } = await import("./dbCommand-BwQ_Jl98.js");
8226
+ let { runDbCommand: n } = await import("./dbCommand-By__Ev0R.js");
8185
8227
  return n(["apply", ...t]);
8186
8228
  }, bf = "voltro-backup-stamp.json", xf = (e) => ({
8187
8229
  stampVersion: 1,
@@ -0,0 +1,2 @@
1
+ import { s as e } from "./dbCommand-ifOMafuG.js";
2
+ export { e as runDbCommand };