@voltro/cli 0.43.2 → 0.44.1

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 (87) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/{apiBuild-BWuw8ZXS.js → apiBuild-DvWreIQP.js} +1 -1
  3. package/dist/apiBuild-XaW40W8x.js +2 -0
  4. package/dist/bin.js +1 -1
  5. package/dist/{build-CGBs4ZOv.js → build-Ckc-FA7d.js} +6 -6
  6. package/dist/{checkCommand-lTPSN3EQ.js → checkCommand-AlbawIal.js} +1 -1
  7. package/dist/{checkCommand-BFtFBsqL.js → checkCommand-BNfEs4KG.js} +2 -2
  8. package/dist/{codegenCommand-BJeyFlip.js → codegenCommand-iClXoRCW.js} +1 -1
  9. package/dist/{codemodRunner-Cnnz4-I7.js → codemodRunner-BKTnaGOz.js} +22 -0
  10. package/dist/{commands-pEDOcOo2.js → commands-CYkHTox2.js} +18 -18
  11. package/dist/{dashboardCommand-Bt2hHMro.js → dashboardCommand-DHDmlo9A.js} +1 -1
  12. package/dist/{dataCommand-DD2bRHCu.js → dataCommand-WFn8CM11.js} +258 -236
  13. package/dist/{dev-DMx-MF2s.js → dev-BZO5aLdr.js} +1 -1
  14. package/dist/{dev-wumUfDm1.js → dev-D-JZ6CGQ.js} +8 -4
  15. package/dist/doctorCommand-BeLOwq7S.js +2 -0
  16. package/dist/{doctorCommand-RFKpnLih.js → doctorCommand-BlUyESpD.js} +9 -9
  17. package/dist/{dormancyCommand-EFDQWiUw.js → dormancyCommand-lQxdrU8C.js} +1 -1
  18. package/dist/{embeddingsCommand-OeYp3qSq.js → embeddingsCommand-ByBTju6X.js} +1 -1
  19. package/dist/{envCommand-CKgBZK7x.js → envCommand-CpCbYAgR.js} +1 -1
  20. package/dist/{evolveCommand-ClQlAH0j.js → evolveCommand-CBV3-TtK.js} +2 -2
  21. package/dist/index.js +1 -1
  22. package/dist/{infoCommand-Bs_8RU22.js → infoCommand-DJoA9cKD.js} +1 -1
  23. package/dist/{runtimeTrace-CgpAD9wL.js → runtimeTrace-DJ9tPhrc.js} +1 -1
  24. package/dist/{sdkgen-Ca2zj4cd.js → sdkgen-7dr8-Onw.js} +1 -1
  25. package/dist/{serveCommand-CgK7Kj6j.js → serveCommand-BlnAlNQg.js} +632 -621
  26. package/dist/serveCommand-Dg_E1ev4.js +2 -0
  27. package/dist/serveEntry.js +1 -1
  28. package/dist/{updateCommand-CrI9B4d7.js → updateCommand-BvRidHp6.js} +1 -1
  29. package/dist/updateCommand-DcKVmLVN.js +2 -0
  30. package/dist/{webhooksCommand-BVNtNsI0.js → webhooksCommand-BfO_JF2b.js} +1 -1
  31. package/package.json +23 -17
  32. package/templates/AGENTS.md +1 -1
  33. package/templates/agent-docs/_index.md +1 -1
  34. package/templates/agent-docs/cli.md +43 -7
  35. package/templates/agent-docs/plugins/versioning.md +2 -0
  36. package/templates/agent-docs/whats-new.md +6 -21
  37. package/templates/apps/api-ai/package.json +7 -7
  38. package/templates/apps/api-auth/package.json +8 -8
  39. package/templates/apps/api-backend/package.json +7 -7
  40. package/templates/apps/api-backend-deactivation/package.json +7 -7
  41. package/templates/apps/api-backend-mail/package.json +8 -8
  42. package/templates/apps/api-backend-mariadb/package.json +9 -9
  43. package/templates/apps/api-backend-sqlite/package.json +8 -8
  44. package/templates/apps/api-backend-storage/package.json +8 -8
  45. package/templates/apps/api-cms/package.json +10 -10
  46. package/templates/apps/api-collab/package.json +8 -8
  47. package/templates/apps/api-data-advanced/package.json +8 -8
  48. package/templates/apps/api-durable/package.json +8 -8
  49. package/templates/apps/api-feature-flags/package.json +9 -9
  50. package/templates/apps/api-governance/package.json +8 -8
  51. package/templates/apps/api-kv/package.json +8 -8
  52. package/templates/apps/api-moderation/package.json +8 -8
  53. package/templates/apps/api-observability/package.json +8 -8
  54. package/templates/apps/api-ratelimit/package.json +8 -8
  55. package/templates/apps/api-rbac/package.json +8 -8
  56. package/templates/apps/api-rest/package.json +7 -7
  57. package/templates/apps/api-saas/package.json +11 -11
  58. package/templates/apps/api-saas-starter/package.json +10 -10
  59. package/templates/apps/api-search/package.json +8 -8
  60. package/templates/apps/api-status/package.json +8 -8
  61. package/templates/apps/api-versioning/package.json +8 -8
  62. package/templates/apps/api-webhooks/package.json +9 -9
  63. package/templates/apps/changelog/package.json +6 -6
  64. package/templates/apps/edge-functions/package.json +2 -2
  65. package/templates/apps/frontend-admin/package.json +8 -8
  66. package/templates/apps/frontend-app/package.json +9 -9
  67. package/templates/apps/frontend-auth/package.json +8 -8
  68. package/templates/apps/frontend-blank/package.json +7 -7
  69. package/templates/apps/frontend-cms/package.json +9 -9
  70. package/templates/apps/frontend-collab/package.json +10 -10
  71. package/templates/apps/frontend-contact/package.json +7 -7
  72. package/templates/apps/frontend-dashboard/package.json +7 -7
  73. package/templates/apps/frontend-docs/package.json +7 -7
  74. package/templates/apps/frontend-i18n/package.json +6 -6
  75. package/templates/apps/frontend-landing/package.json +7 -7
  76. package/templates/apps/frontend-portal/package.json +8 -8
  77. package/templates/apps/frontend-saas/package.json +8 -8
  78. package/templates/apps/frontend-spa/package.json +7 -7
  79. package/templates/apps/frontend-ssr/package.json +7 -7
  80. package/templates/apps/frontend-ssr-api/package.json +8 -8
  81. package/templates/apps/frontend-static-blog/package.json +6 -6
  82. package/templates/apps/frontend-status/package.json +8 -8
  83. package/templates/apps/mobile-app/package.json +4 -4
  84. package/dist/apiBuild-Cw2-TEXW.js +0 -2
  85. package/dist/doctorCommand-FOXTTaGp.js +0 -2
  86. package/dist/serveCommand-DUm2-ikx.js +0 -2
  87. package/dist/updateCommand-BvkKlV7D.js +0 -2
@@ -3,23 +3,23 @@ import { t } from "./frameworkInspectState-CX2250XB.js";
3
3
  import { r as n, t as r } from "./appModuleLoader-C9r9mxZt.js";
4
4
  import { t as i } from "./bootRefusal-pgvDxlrU.js";
5
5
  import { n as a, r as o } from "./startupRunner-CEqQq7ax.js";
6
- import { $ as s, $t as ee, A as c, At as l, B as u, C as d, Ct as f, D as te, Dt as ne, E as re, Et as p, F as ie, Ft as m, G as h, Gt as ae, H as oe, I as se, It as ce, J as le, Jt as g, K as ue, Kt as _, L as de, Lt as fe, M as pe, Mt as v, N as me, Nt as he, O as ge, Ot as _e, P as ve, Pt as ye, Q as be, Qt as xe, R as Se, Rt as y, S as Ce, Sn as we, St as Te, T as Ee, Tt as De, U as Oe, Ut as b, V as ke, Vt as Ae, W as je, Wt as Me, X as Ne, Xt as Pe, Y as Fe, Yt as Ie, Z as Le, Zt as x, _ as Re, _n as ze, _t as S, an as Be, at as C, b as Ve, bn as He, bt as Ue, c as We, cn as w, ct as Ge, dn as Ke, dt as qe, en as Je, et as Ye, f as T, fn as E, ft as Xe, g as Ze, gn as Qe, gt as $e, h as et, ht as tt, i as nt, in as rt, it, j as at, jt as ot, k as st, kt as ct, ln as D, lt, m as ut, mn as dt, mt as O, nn as k, nt as ft, o as A, on as pt, ot as mt, p as ht, pn as gt, pt as _t, q as vt, qt as yt, r as bt, rn as xt, rt as St, sn as Ct, st as wt, t as Tt, tn as Et, tt as Dt, u as Ot, un as kt, ut as At, v as jt, vn as j, vt as M, w as N, wt as Mt, x as Nt, xn as Pt, xt as Ft, y as It, yn as Lt, yt as Rt, zt } from "./dev-wumUfDm1.js";
7
- import { n as Bt } from "./cliArgs-D4p8n7EE.js";
8
- import { r as Vt } from "./appPort-B_HpJ_ck.js";
9
- import { ht as Ht, pt as P } from "./webDev-101csg6Q.js";
10
- import { r as F } from "./dialectDriver-czCHYpeH.js";
11
- import { i as Ut, n as Wt } from "./connectionConfig-Bk9IC7D0.js";
12
- import { c as Gt, n as Kt, o as qt } from "./seedRunner-IdHEprqf.js";
13
- import { C as I, S as Jt, _ as Yt, d as Xt, g as Zt, l as Qt, m as $t, r as en, u as tn, v as nn } from "./frameworkTableAssembly-oMPBKqlE.js";
14
- import { S as rn, c as an, n as on, p as sn, s as cn, x as ln } from "./fileConventions-Cof68_BL.js";
15
- import { h as un, o as dn } from "./inspect-B7U7Cl_Z.js";
16
- import { n as fn } from "./mssqlClusterPatch-_4cE_nun.js";
17
- import { i as pn, n as mn, r as hn, t as gn } from "./webhookDiscovery-CphsQe59.js";
18
- import { t as _n } from "./inspectMetrics-CfdKLh6t.js";
19
- import { r as vn, u as yn } from "./apiBuild-BWuw8ZXS.js";
20
- import { t as bn } from "./bootTiming-BdyP9nYw.js";
21
- import { t as xn } from "./dataProfile-Cm0YVKSy.js";
22
- import Sn, { basename as Cn, join as wn } from "node:path";
6
+ import { $ as s, $t as c, A as l, At as u, B as d, C as ee, Ct as f, D as p, Dt as te, E as ne, Et as m, F as h, Ft as g, G as _, Gt as re, H as ie, I as ae, It as oe, J as se, Jt as v, K as ce, Kt as y, L as le, Lt as ue, M as de, Mt as b, N as fe, Nt as pe, O as me, Ot as he, P as ge, Pt as _e, Q as ve, Qt as ye, R as be, Rt as x, S as xe, Sn as Se, St as Ce, T as we, Tt as Te, U as Ee, Ut as S, V as De, Vt as Oe, W as ke, Wt as Ae, X as je, Xt as Me, Y as Ne, Yt as Pe, Z as Fe, Zt as C, _ as Ie, _n as Le, _t as w, an as Re, at as ze, b as Be, bn as Ve, bt as He, c as Ue, cn as T, ct as We, dn as Ge, dt as Ke, en as qe, et as Je, f as Ye, fn as Xe, ft as Ze, g as Qe, gn as $e, gt as et, h as tt, ht as nt, i as rt, in as it, it as at, j as ot, jt as st, k as ct, kt as lt, ln as E, lt as ut, m as dt, mn as ft, mt as D, nn as O, nt as pt, o as k, on as mt, ot as ht, p as gt, pn as _t, pt as vt, q as yt, qt as bt, r as xt, rn as St, rt as Ct, sn as wt, st as Tt, t as Et, tn as Dt, tt as Ot, u as kt, un as At, ut as jt, v as Mt, vn as A, vt as j, w as M, wt as Nt, x as Pt, xn as Ft, xt as It, y as Lt, yn as Rt, yt as zt, zt as Bt } from "./dev-D-JZ6CGQ.js";
7
+ import { n as Vt } from "./cliArgs-D4p8n7EE.js";
8
+ import { r as Ht } from "./appPort-B_HpJ_ck.js";
9
+ import { ht as Ut, pt as N } from "./webDev-101csg6Q.js";
10
+ import { r as P } from "./dialectDriver-czCHYpeH.js";
11
+ import { i as Wt, n as Gt } from "./connectionConfig-Bk9IC7D0.js";
12
+ import { c as Kt, n as qt, o as Jt } from "./seedRunner-IdHEprqf.js";
13
+ import { C as F, S as Yt, _ as Xt, d as Zt, g as Qt, l as $t, m as en, r as tn, u as nn, v as rn } from "./frameworkTableAssembly-oMPBKqlE.js";
14
+ import { S as an, c as on, n as sn, p as cn, s as ln, x as un } from "./fileConventions-Cof68_BL.js";
15
+ import { h as dn, o as fn } from "./inspect-B7U7Cl_Z.js";
16
+ import { n as pn } from "./mssqlClusterPatch-_4cE_nun.js";
17
+ import { i as mn, n as hn, r as gn, t as _n } from "./webhookDiscovery-CphsQe59.js";
18
+ import { t as vn } from "./inspectMetrics-CfdKLh6t.js";
19
+ import { r as yn, u as bn } from "./apiBuild-DvWreIQP.js";
20
+ import { t as xn } from "./bootTiming-BdyP9nYw.js";
21
+ import { t as Sn } from "./dataProfile-Cm0YVKSy.js";
22
+ import I, { basename as Cn, join as wn } from "node:path";
23
23
  import { createWriteStream as Tn, existsSync as En } from "node:fs";
24
24
  import { pathToFileURL as Dn } from "node:url";
25
25
  import { createLogger as L } from "@voltro/logger";
@@ -104,7 +104,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
104
104
  if (!t || t.length < 16) return Q(503, { error: "data transfer misconfigured (no/weak secret)" });
105
105
  let n = Bi(e.headers);
106
106
  return !n || !Vi(n, t) ? Q(401, { error: "unauthorized" }) : null;
107
- }, Ui = /^[A-Za-z0-9_-]{8,64}$/, Wi = (e) => Ui.test(e), Gi = () => Sn.join(W.tmpdir(), "voltro-import-uploads"), Ki = (e) => Sn.join(Gi(), e), qi = (e) => Sn.join(Ki(e), "archive.bin"), Ji = (e) => Sn.join(Ki(e), "meta.json"), Yi = async (e = Date.now()) => {
107
+ }, Ui = /^[A-Za-z0-9_-]{8,64}$/, Wi = (e) => Ui.test(e), Gi = () => I.join(W.tmpdir(), "voltro-import-uploads"), Ki = (e) => I.join(Gi(), e), qi = (e) => I.join(Ki(e), "archive.bin"), Ji = (e) => I.join(Ki(e), "meta.json"), Yi = async (e = Date.now()) => {
108
108
  let t = 0;
109
109
  try {
110
110
  for (let n of await Z.readdir(Gi())) {
@@ -167,22 +167,22 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
167
167
  }, ra = (e) => async (t) => {
168
168
  let n = Hi(t, e.secret);
169
169
  if (n) return n;
170
- let r = t.headers["x-import-mode"], i = t.headers["x-import-on-conflict"], a = t.headers["x-import-atomic"] === "1" || t.headers["x-import-atomic"] === "true", o = t.headers["x-import-force"] === "1" || t.headers["x-import-force"] === "true", s = t.headers["x-import-dry-run"] === "1" || t.headers["x-import-dry-run"] === "true", ee = (t.headers["x-import-tables"] ?? "").split(",").map((e) => e.trim()).filter(Boolean), c = t.headers["x-import-upload-id"], l;
171
- if (c !== void 0 && c !== "") {
170
+ let r = t.headers["x-import-mode"], i = t.headers["x-import-on-conflict"], a = t.headers["x-import-atomic"], o = a === "0" || a === "false" ? !1 : a === "1" || a === "true" || r === "replace", s = t.headers["x-import-force"] === "1" || t.headers["x-import-force"] === "true", c = t.headers["x-import-dry-run"] === "1" || t.headers["x-import-dry-run"] === "true", l = (t.headers["x-import-tables"] ?? "").split(",").map((e) => e.trim()).filter(Boolean), u = t.headers["x-import-upload-id"], d;
171
+ if (u !== void 0 && u !== "") {
172
172
  if (Yi(), t.headers["x-import-probe"] === "1") return Q(200, {
173
- uploadId: c,
174
- bytes: (await Xi(c)).bytes
173
+ uploadId: u,
174
+ bytes: (await Xi(u)).bytes
175
175
  });
176
176
  let e = t.headers["x-import-upload-key"] ?? "", n = Number(t.headers["x-import-chunk-offset"] ?? "0");
177
177
  if (e === "" || !Number.isFinite(n) || n < 0) return Q(400, { error: "a chunked upload needs x-import-upload-key and a numeric x-import-chunk-offset" });
178
178
  let r = await Zi({
179
- id: c,
179
+ id: u,
180
180
  key: e,
181
181
  offset: n,
182
182
  bytes: t.rawBody
183
183
  });
184
184
  if ("reason" in r) return ea.warn("admin.import chunk refused", {
185
- uploadId: c,
185
+ uploadId: u,
186
186
  reason: r.reason
187
187
  }), Q(409, {
188
188
  error: "chunk refused",
@@ -191,16 +191,16 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
191
191
  ...r.expectedOffset === void 0 ? {} : { expectedOffset: r.expectedOffset }
192
192
  });
193
193
  if (t.headers["x-import-chunk-final"] !== "1") return Q(202, {
194
- uploadId: c,
194
+ uploadId: u,
195
195
  bytes: r.total
196
196
  });
197
- l = (await Qi(c)).path;
197
+ d = (await Qi(u)).path;
198
198
  }
199
- let u = t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === ta, d, f;
200
- if (l !== void 0) {
199
+ let ee = t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === ta, f, p;
200
+ if (d !== void 0) {
201
201
  let { createReadStream: e } = await import("node:fs");
202
- d = e(l), f = "chunked";
203
- } else if (u) d = na(t.rawBody), f = "upload";
202
+ f = e(d), p = "chunked";
203
+ } else if (ee) f = na(t.rawBody), p = "upload";
204
204
  else {
205
205
  let n;
206
206
  try {
@@ -210,24 +210,24 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
210
210
  }
211
211
  if (typeof n.bundleKey != "string" || !n.bundleKey) return Q(400, { error: "body.bundleKey (string) is required for the storage transport" });
212
212
  if (!e.openArchive) return Q(501, { error: "storage transport not configured on this instance" });
213
- d = e.openArchive(n.bundleKey), f = "storage";
213
+ f = e.openArchive(n.bundleKey), p = "storage";
214
214
  }
215
- let te = await import("node:os"), ne = await import("node:fs/promises"), re = await import("node:path"), p = await ne.mkdtemp(re.join(te.tmpdir(), "voltro-admin-import-"));
215
+ let te = await import("node:os"), ne = await import("node:fs/promises"), m = await import("node:path"), h = await ne.mkdtemp(m.join(te.tmpdir(), "voltro-admin-import-"));
216
216
  try {
217
- e.assetSink ? await Ni(d, {
218
- dir: p,
217
+ e.assetSink ? await Ni(f, {
218
+ dir: h,
219
219
  blobs: e.assetSink
220
- }) : await Pi(d, p);
220
+ }) : await Pi(f, h);
221
221
  let t = await H.runPromiseExit(Ai({
222
222
  store: e.store,
223
- bundleDir: p,
223
+ bundleDir: h,
224
224
  ...r ? { mode: r } : {},
225
225
  ...i ? { onConflict: i } : {},
226
- ...a ? { atomic: a } : {},
227
- ...s ? { dryRun: s } : {},
228
- ...ee.length > 0 ? { tables: ee } : {},
226
+ ...o ? { atomic: o } : {},
227
+ ...c ? { dryRun: c } : {},
228
+ ...l.length > 0 ? { tables: l } : {},
229
229
  ...e.snapshot ? { targetSnapshot: e.snapshot } : {},
230
- force: o,
230
+ force: s,
231
231
  onWarn: (e) => ea.warn("admin.import", { message: e }),
232
232
  ...e.assetSink ? { assetsAlreadyRestored: !0 } : {}
233
233
  }));
@@ -236,7 +236,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
236
236
  if (e && e._tag === "SchemaDriftError") {
237
237
  let t = e;
238
238
  return ea.warn("admin.import refused (schema drift)", {
239
- transport: f,
239
+ transport: p,
240
240
  bundle: t.bundleFingerprint.slice(0, 16),
241
241
  target: t.targetFingerprint.slice(0, 16)
242
242
  }), Q(409, {
@@ -249,7 +249,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
249
249
  }
250
250
  let n = typeof e?.reason == "string" ? e.reason : void 0;
251
251
  if (n !== void 0 && e._tag === "ImportModeError") return ea.warn("admin.import refused (mode)", {
252
- transport: f,
252
+ transport: p,
253
253
  mode: e.mode
254
254
  }), Q(409, {
255
255
  error: "import mode refused",
@@ -258,35 +258,46 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
258
258
  });
259
259
  throw Error(n ?? String(e?.message ?? e ?? "import failed"));
260
260
  }
261
- let n = t.value, c = n.tables.reduce((e, t) => e + t.rowCount, 0);
262
- return ea.info(s ? "admin.import (dry run — nothing written)" : "admin.import", {
263
- transport: f,
264
- tables: n.tables.length,
265
- rows: c,
261
+ let n = t.value, a = n.manifest.tables.reduce((e, t) => e + t.rowCount, 0), u = n.rowsWritten;
262
+ return ea.info(c ? "admin.import (dry run — nothing written)" : "admin.import", {
263
+ transport: p,
264
+ tables: n.tablesWritten,
265
+ rows: u,
266
+ carried: a,
266
267
  mode: r ?? "upsert",
267
- atomic: a
268
- }), s || e.refreshSubscriptions?.(`data import: ${n.tables.length} table(s), mode ${r ?? "upsert"}`), Q(200, {
269
- tables: n.tables.length,
270
- rows: c,
271
- transport: f,
272
- ...s ? {
268
+ atomic: o,
269
+ ...n.tablesSkipped > 0 ? {
270
+ skippedTables: n.tablesSkipped,
271
+ skippedRows: n.rowsSkipped
272
+ } : {}
273
+ }), c || e.refreshSubscriptions?.(`data import: ${n.tablesWritten} table(s), mode ${r ?? "upsert"}`), Q(200, {
274
+ tables: n.tablesWritten,
275
+ rows: u,
276
+ carried: a,
277
+ transport: p,
278
+ ...n.tablesSkipped > 0 ? {
279
+ skippedTables: n.tablesSkipped,
280
+ skippedRows: n.rowsSkipped,
281
+ fullyResumed: n.fullyResumed
282
+ } : {},
283
+ ...c ? {
273
284
  dryRun: !0,
274
285
  wrote: !1
275
286
  } : {}
276
287
  });
277
288
  } catch (e) {
278
289
  return ea.warn("admin.import failed", {
279
- transport: f,
290
+ transport: p,
280
291
  error: e?.message ?? String(e)
281
292
  }), Q(500, {
282
293
  error: "import failed",
283
294
  message: e?.message ?? String(e)
284
295
  });
285
296
  } finally {
286
- await ne.rm(p, {
297
+ await ne.rm(h, {
287
298
  recursive: !0,
288
299
  force: !0
289
- }), c !== void 0 && c !== "" && l !== void 0 && await $i(c);
300
+ }), u !== void 0 && u !== "" && d !== void 0 && await $i(u);
290
301
  }
291
302
  }, ia = L({ scope: "voltro:admin-export" }), aa = async (e) => {
292
303
  let t = [];
@@ -319,7 +330,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
319
330
  });
320
331
  }
321
332
  }
322
- let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? oa(r), ee = typeof r.bundleKey == "string" && r.bundleKey.length > 0, c = r.assets === !0 && e.assetSource ? { blobs: e.assetSource } : {}, l = await import("node:os"), u = await import("node:fs/promises"), d = await import("node:path"), f = await u.mkdtemp(d.join(l.tmpdir(), "voltro-admin-export-"));
333
+ let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? oa(r), c = typeof r.bundleKey == "string" && r.bundleKey.length > 0, l = r.assets === !0 && e.assetSource ? { blobs: e.assetSource } : {}, u = await import("node:os"), d = await import("node:fs/promises"), ee = await import("node:path"), f = await d.mkdtemp(ee.join(u.tmpdir(), "voltro-admin-export-"));
323
334
  try {
324
335
  let t = await H.runPromise(ki({
325
336
  store: e.store,
@@ -333,45 +344,45 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
333
344
  consistency: a,
334
345
  ...o ? { compression: o } : {},
335
346
  ...i.masking ? { masking: i.masking } : {}
336
- })), n = t.tables.reduce((e, t) => e + t.rowCount, 0), l = t.masking?.transformed.length ?? 0;
337
- if (ee) {
347
+ })), n = t.tables.reduce((e, t) => e + t.rowCount, 0), u = t.masking?.transformed.length ?? 0;
348
+ if (c) {
338
349
  if (!e.putArchive) return Q(501, { error: "storage transport not configured on this instance" });
339
350
  let i = r.bundleKey;
340
351
  return await e.putArchive(i, () => Oi({
341
352
  dir: f,
342
- ...c
353
+ ...l
343
354
  })), ia.info("admin.export", {
344
355
  transport: "storage",
345
356
  tables: t.tables.length,
346
357
  rows: n,
347
- masked: l,
358
+ masked: u,
348
359
  bundleKey: i
349
360
  }), Q(200, {
350
361
  bundleKey: i,
351
362
  tables: t.tables.length,
352
363
  rows: n,
353
- masked: l,
364
+ masked: u,
354
365
  transport: "storage"
355
366
  });
356
367
  }
357
- let u = await aa(Oi({
368
+ let d = await aa(Oi({
358
369
  dir: f,
359
- ...c
370
+ ...l
360
371
  }));
361
372
  return ia.info("admin.export", {
362
373
  transport: "download",
363
374
  tables: t.tables.length,
364
375
  rows: n,
365
- masked: l,
366
- bytes: u.byteLength
376
+ masked: u,
377
+ bytes: d.byteLength
367
378
  }), {
368
379
  status: 200,
369
380
  contentType: "application/octet-stream",
370
- body: u,
381
+ body: d,
371
382
  headers: {
372
383
  "x-export-tables": String(t.tables.length),
373
384
  "x-export-rows": String(n),
374
- "x-export-masked": String(l)
385
+ "x-export-masked": String(u)
375
386
  }
376
387
  };
377
388
  } catch (e) {
@@ -380,7 +391,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
380
391
  message: e?.message ?? String(e)
381
392
  });
382
393
  } finally {
383
- await u.rm(f, {
394
+ await d.rm(f, {
384
395
  recursive: !0,
385
396
  force: !0
386
397
  });
@@ -405,7 +416,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
405
416
  invalidateTag: async () => 0,
406
417
  wrap: async (e, t, n) => n()
407
418
  }, ua = async (e) => {
408
- zt(e.appProcedures ?? e.discovered, {
419
+ Bt(e.appProcedures ?? e.discovered, {
409
420
  defaultDeny: e.security?.defaultDeny ?? !0,
410
421
  commandHint: "`voltro serve`"
411
422
  }), Qr({
@@ -423,45 +434,45 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
423
434
  durationMs: e.durationMs,
424
435
  rowCount: e.rowCount
425
436
  })
426
- }), i = e.cache ?? la, a = e.kv ?? Wr, o, ee = () => void 0, c, d, f, te, ne, re, ce, le = ae({
437
+ }), i = e.cache ?? la, a = e.kv ?? Wr, o, c = () => void 0, l, ee, f, p, te, ne, oe, se = re({
427
438
  store: e.store,
428
439
  warn: (e, t) => {
429
440
  process.stderr.write(`[workflow] ${e} ${JSON.stringify(t)}\n`);
430
441
  }
431
- }), ue = le.remember, de = le.resolve, fe = _({
442
+ }), ce = se.remember, le = se.resolve, ue = y({
432
443
  authority: e.authority,
433
444
  getStore: () => e.store
434
- }), v = (e.discovered.workflows?.length ?? 0) > 0 ? Nr(() => o) : void 0, he = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, ge = he || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", _e = e.tenantIsolation === "namespace", ve = (e.log ?? L({ scope: "voltro:serve" })).child("webhooks"), xe, Se, y = e.discovered.webhooks;
435
- if (y && y.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
445
+ }), b = (e.discovered.workflows?.length ?? 0) > 0 ? Nr(() => o) : void 0, pe = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, me = pe || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", he = e.tenantIsolation === "namespace", ge = (e.log ?? L({ scope: "voltro:serve" })).child("webhooks"), ye, be, x = e.discovered.webhooks;
446
+ if (x && x.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
436
447
  e.workflowEngineLayer;
437
- let t = w({
448
+ let t = T({
438
449
  store: e.store,
439
450
  schemaRegistry: e.schemaRegistry,
440
451
  cache: i,
441
452
  kv: a
442
- }), n = y.outgoing.map((e) => e.descriptor);
443
- Se = xi.toLayer(vi(t, { events: n })), xe = yi(t, async (e) => {
453
+ }), n = x.outgoing.map((e) => e.descriptor);
454
+ be = xi.toLayer(vi(t, { events: n })), ye = yi(t, async (e) => {
444
455
  let t = f;
445
456
  if (t === void 0) {
446
- ve.error("webhook delivery skipped — the workflow runtime was never built. This is a framework defect, not a configuration problem: report it with your engine setting. Deliveries are NOT queued and will not be retried.", {
457
+ ge.error("webhook delivery skipped — the workflow runtime was never built. This is a framework defect, not a configuration problem: report it with your engine setting. Deliveries are NOT queued and will not be retried.", {
447
458
  deliveryId: e.deliveryId,
448
459
  targetId: e.targetId
449
460
  });
450
461
  return;
451
462
  }
452
463
  t.runPromise(xi.execute(e)).catch((t) => {
453
- ve.error("deliverWebhook workflow crashed", {
464
+ ge.error("deliverWebhook workflow crashed", {
454
465
  deliveryId: e.deliveryId,
455
466
  targetId: e.targetId
456
467
  }, t);
457
468
  });
458
469
  }, { events: n });
459
470
  }
460
- let Ce = /* @__PURE__ */ new Map();
461
- if (y) for (let e of y.incoming) {
471
+ let xe = /* @__PURE__ */ new Map();
472
+ if (x) for (let e of x.incoming) {
462
473
  let t = e.descriptor.path ?? bi(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = Ci(e.descriptor, {
463
474
  resolveSecret: async () => process.env[n] ?? null,
464
- resolveWorkflows: () => v === void 0 ? void 0 : Hr(v, {
475
+ resolveWorkflows: () => b === void 0 ? void 0 : Hr(b, {
465
476
  traceId: `incoming:${e.descriptor.id}`,
466
477
  source: `incoming:${e.descriptor.id}`
467
478
  }),
@@ -473,18 +484,18 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
473
484
  idempotency: e.idempotency,
474
485
  durationMs: e.durationMs
475
486
  };
476
- e.status >= 500 ? ve.error("incoming delivery failed", t) : e.status >= 400 ? ve.warn("incoming delivery rejected", t) : ve.info("incoming delivery handled", t);
487
+ e.status >= 500 ? ge.error("incoming delivery failed", t) : e.status >= 400 ? ge.warn("incoming delivery rejected", t) : ge.info("incoming delivery handled", t);
477
488
  }
478
489
  });
479
- Ce.set(t, { handle: r });
490
+ xe.set(t, { handle: r });
480
491
  }
481
492
  Sr(), X((t) => Cr(e.store, t.subjectId, t.resourceType, t.resourceId)) || L({ scope: "voltro:serve" }).info("policy guards: using the app-registered tuple source");
482
- let we = [], Te = [...e.discovered.outboxHandlers ?? [], ...mn((y?.outgoing.length ?? 0) + (y?.incoming.length ?? 0) + (y?.providers.length ?? 0), []) ? [{
493
+ let Se = [], Ce = [...e.discovered.outboxHandlers ?? [], ...hn((x?.outgoing.length ?? 0) + (x?.incoming.length ?? 0) + (x?.providers.length ?? 0), []) ? [{
483
494
  file: "<framework>/webhooks",
484
495
  id: "voltro-webhook-emit",
485
- definition: Si(() => xe)
486
- }] : []], Ee = Te.length > 0 ? Pe({
487
- handlers: Te,
496
+ definition: Si(() => ye)
497
+ }] : []], we = Ce.length > 0 ? Me({
498
+ handlers: Ce,
488
499
  store: e.store,
489
500
  log: (e.log ?? L({ scope: "voltro:serve" })).child("outbox"),
490
501
  onChange: (t) => e.store.onChange((e) => t({
@@ -492,15 +503,15 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
492
503
  op: e.op
493
504
  })),
494
505
  onShutdown: (e) => {
495
- we.push(e);
506
+ Se.push(e);
496
507
  }
497
- }) : void 0, b = g({
508
+ }) : void 0, S = v({
498
509
  definitions: (e.discovered.connections ?? []).map((e) => e.definition),
499
510
  store: e.store,
500
- publicUrl: yt(e.port ?? 4e3),
511
+ publicUrl: bt(e.port ?? 4e3),
501
512
  log: (e.log ?? L({ scope: "voltro:serve" })).child("connections")
502
513
  });
503
- at({
514
+ ot({
504
515
  events: e.discovered.events ?? [],
505
516
  rpcTags: [
506
517
  ...e.discovered.queries.map((e) => e.descriptor.name),
@@ -509,152 +520,152 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
509
520
  ...(e.discovered.streams ?? []).map((e) => e.descriptor.name)
510
521
  ]
511
522
  });
512
- let Ae = (e.log ?? L({ scope: "voltro:serve" })).child("events"), Me = e.broadcastNamespace ?? Ze(e.plugins, void 0), Fe = Re(e.plugins, Me, Ae), Ie = e.membership?.instanceId ?? process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, ze = e.membership ?? jt(e.plugins, {
513
- instanceId: Ie,
514
- namespace: Me,
523
+ let Oe = (e.log ?? L({ scope: "voltro:serve" })).child("events"), Ae = e.broadcastNamespace ?? Qe(e.plugins, void 0), Ne = Ie(e.plugins, Ae, Oe), Pe = e.membership?.instanceId ?? process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Le = e.membership ?? Mt(e.plugins, {
524
+ instanceId: Pe,
525
+ namespace: Ae,
515
526
  meta: { mode: "serve" },
516
- logger: Ae
517
- }), S = pe({
527
+ logger: Oe
528
+ }), w = de({
518
529
  events: e.discovered.events ?? [],
519
- origin: Ie,
520
- ...Fe.publishRemote === void 0 ? {} : { publishRemote: Fe.publishRemote }
521
- }), Be = (e.discovered.events ?? []).length > 0 ? await Fe.attach(S.bus) : null, C = Ct({
530
+ origin: Pe,
531
+ ...Ne.publishRemote === void 0 ? {} : { publishRemote: Ne.publishRemote }
532
+ }), Re = (e.discovered.events ?? []).length > 0 ? await Ne.attach(w.bus) : null, ze = wt({
522
533
  store: e.store,
523
534
  schemaRegistry: e.schemaRegistry,
524
535
  cache: i,
525
536
  kv: a,
526
- ...xe === void 0 ? {} : { webhooksService: xe },
527
- ...v === void 0 ? {} : { workflowsProxy: v },
537
+ ...ye === void 0 ? {} : { webhooksService: ye },
538
+ ...b === void 0 ? {} : { workflowsProxy: b },
528
539
  eventTriggers: e.discovered.eventTriggers ?? [],
529
- namespaceIsolationOn: _e,
540
+ namespaceIsolationOn: he,
530
541
  ...e.ensureTenantProvisioned === void 0 ? {} : { ensureTenantProvisioned: e.ensureTenantProvisioned },
531
542
  ...e.resolveResidentStore === void 0 ? {} : { resolveResidentStore: e.resolveResidentStore },
532
- ...Ee === void 0 ? {} : { outbox: { nudge: Ee.nudge } },
533
- ...b.active ? { connections: { registry: b.registry } } : {},
534
- eventBus: S.bus
535
- }), Ve = U.succeed(nr, p), He = U.succeed(ar, Ue), We = U.succeed(K, Rt), Ke = U.succeed(or, Ft), Je = (t, n) => {
543
+ ...we === void 0 ? {} : { outbox: { nudge: we.nudge } },
544
+ ...S.active ? { connections: { registry: S.registry } } : {},
545
+ eventBus: w.bus
546
+ }), Be = U.succeed(nr, m), Ve = U.succeed(ar, He), Ue = U.succeed(K, zt), Ge = U.succeed(or, It), qe = (t, n) => {
536
547
  let r = t.pipe(H.provide(Mr(n)));
537
- return (e.baseLayer ? r.pipe(H.provide(e.baseLayer)) : r).pipe(H.provide(Ve)).pipe(H.provide(He)).pipe(H.provide(We)).pipe(H.provide(Ke));
538
- }, Ye = (e, t) => {
539
- let n = Je(e, t);
548
+ return (e.baseLayer ? r.pipe(H.provide(e.baseLayer)) : r).pipe(H.provide(Be)).pipe(H.provide(Ve)).pipe(H.provide(Ue)).pipe(H.provide(Ge));
549
+ }, Je = (e, t) => {
550
+ let n = qe(e, t);
540
551
  return Xr(n);
541
- }, T = _n(), E = vt(e.plugins ?? [], T), Xe = u({
552
+ }, Ye = vn(), Xe = yt(e.plugins ?? [], Ye), Ze = d({
542
553
  plugins: e.plugins ?? [],
543
- metrics: T,
554
+ metrics: Ye,
544
555
  log: e.log ?? L({ scope: "voltro:serve" })
545
- }), Qe = h(e.plugins ?? [], T), $e = e.security?.defaultDeny ?? !0, et = Fr({
556
+ }), $e = _(e.plugins ?? [], Ye), et = e.security?.defaultDeny ?? !0, tt = Fr({
546
557
  store: e.store,
547
- defaultDeny: $e,
558
+ defaultDeny: et,
548
559
  recordMetric: (e) => {
549
- T.record(e);
560
+ Ye.record(e);
550
561
  },
551
- ...E.mutation === void 0 ? {} : { interceptor: E.mutation },
552
- buildContext: (e, t, n) => C(e, t, n),
553
- runEffect: Ye,
554
- undoCapture: be()
555
- }), nt = Le();
562
+ ...Xe.mutation === void 0 ? {} : { interceptor: Xe.mutation },
563
+ buildContext: (e, t, n) => ze(e, t, n),
564
+ runEffect: Je,
565
+ undoCapture: ve()
566
+ }), rt = Fe();
556
567
  {
557
568
  let t = s();
558
569
  t !== void 0 && (e.log ?? L({ scope: "voltro:serve" })).info(t);
559
570
  }
560
- let rt = Ne({
571
+ let it = je({
561
572
  store: e.store,
562
573
  ...e.approvals === void 0 ? {} : { defaultExpiryMs: e.approvals.defaultExpiryMs }
563
- }), it = wr({
564
- defaultDeny: $e,
565
- buildContext: (e) => C(e),
566
- runEffect: Ye,
574
+ }), at = wr({
575
+ defaultDeny: et,
576
+ buildContext: (e) => ze(e),
577
+ runEffect: Je,
567
578
  recordMetric: (e) => {
568
- T.record(e);
579
+ Ye.record(e);
569
580
  },
570
- ...E.action === void 0 ? {} : { interceptor: E.action }
571
- }), st = Rr({
581
+ ...Xe.action === void 0 ? {} : { interceptor: Xe.action }
582
+ }), ct = Rr({
572
583
  tenantScopedTables: e.tenantScopedTables,
573
584
  softDeleteScopedTables: e.softDeleteScopedTables
574
- }), ct = {
575
- defaultDeny: $e,
576
- buildContext: (e) => C(e),
577
- finalize: (e, t) => st(e, t.subject),
578
- provideEffect: Je,
579
- ...E.query === void 0 ? {} : { interceptor: E.query }
580
- }, D = Lr(ct), ut = Ir({
581
- ...ct,
585
+ }), lt = {
586
+ defaultDeny: et,
587
+ buildContext: (e) => ze(e),
588
+ finalize: (e, t) => ct(e, t.subject),
589
+ provideEffect: qe,
590
+ ...Xe.query === void 0 ? {} : { interceptor: Xe.query }
591
+ }, E = Lr(lt), dt = Ir({
592
+ ...lt,
582
593
  queryRows: (t, n) => e.store.query(t).then((e) => ri(t.table, e, n.subject))
583
- }), dt = zr({
584
- ...ct,
594
+ }), ft = zr({
595
+ ...lt,
585
596
  subscribeDescriptor: (e, t, n) => r.subscribe(e, t, n),
586
597
  subscribeComputed: (e, t, n) => r.subscribeComputed(e, t, n)
587
- }), O = (e) => e.filter((e) => jn(e.descriptor)), k = {};
598
+ }), D = (e) => e.filter((e) => jn(e.descriptor)), O = {};
588
599
  for (let t of [
589
- ...O(e.discovered.queries),
590
- ...nt.queries,
600
+ ...D(e.discovered.queries),
591
601
  ...rt.queries,
592
- ...b.queries
593
- ]) k[t.descriptor.name] = (e) => J(D(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, Y(t, e));
602
+ ...it.queries,
603
+ ...S.queries
604
+ ]) O[t.descriptor.name] = (e) => J(E(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, Y(t, e));
594
605
  for (let t of [
595
- ...O(e.discovered.mutations),
596
- ...nt.mutations,
606
+ ...D(e.discovered.mutations),
597
607
  ...rt.mutations,
598
- ...b.mutations
608
+ ...it.mutations,
609
+ ...S.mutations
599
610
  ]) {
600
611
  let n = Pr(t.descriptor.output);
601
- k[t.descriptor.name] = (r) => q(async (e, n) => et(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, Pn(t.descriptor, "mutation"));
612
+ O[t.descriptor.name] = (r) => q(async (e, n) => tt(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, Pn(t.descriptor, "mutation"));
602
613
  }
603
- for (let t of [...O(e.discovered.actions), ...b.actions]) {
614
+ for (let t of [...D(e.discovered.actions), ...S.actions]) {
604
615
  let n = Pr(t.descriptor.output);
605
- k[t.descriptor.name] = (r) => q(async (e, n) => it(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, Pn(t.descriptor, "action"));
616
+ O[t.descriptor.name] = (r) => q(async (e, n) => at(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, Pn(t.descriptor, "action"));
606
617
  }
607
- let ft = () => `public-${Math.random().toString(36).slice(2, 10)}`, A = [
618
+ let pt = () => `public-${Math.random().toString(36).slice(2, 10)}`, k = [
608
619
  ...e.discovered.queries.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
609
620
  descriptor: e.descriptor,
610
- invoke: (t, n) => ut(e, t, {
621
+ invoke: (t, n) => dt(e, t, {
611
622
  subject: n.subject,
612
- traceId: ft()
623
+ traceId: pt()
613
624
  }),
614
- subscribe: (t, n, r) => dt(e, t, {
625
+ subscribe: (t, n, r) => ft(e, t, {
615
626
  subject: n.subject,
616
- traceId: ft()
627
+ traceId: pt()
617
628
  }, r)
618
629
  })),
619
630
  ...e.discovered.mutations.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
620
631
  descriptor: e.descriptor,
621
- invoke: (t, n) => et(e, t, {
632
+ invoke: (t, n) => tt(e, t, {
622
633
  subject: n.subject,
623
- traceId: ft()
634
+ traceId: pt()
624
635
  })
625
636
  })),
626
637
  ...e.discovered.actions.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
627
638
  descriptor: e.descriptor,
628
- invoke: (t, n) => it(e, t, {
639
+ invoke: (t, n) => at(e, t, {
629
640
  subject: n.subject,
630
- traceId: ft()
641
+ traceId: pt()
631
642
  })
632
643
  }))
633
- ], mt = {
634
- candidates: m({
644
+ ], ht = {
645
+ candidates: g({
635
646
  queries: e.discovered.queries,
636
647
  mutations: e.discovered.mutations,
637
648
  actions: e.discovered.actions,
638
649
  descriptorOf: (e) => e.descriptor,
639
- runQuery: (e, t, n) => Promise.resolve(ut(e, t, n)),
640
- runMutation: (e, t, n) => Promise.resolve(et(e, t, n)),
641
- runAction: (e, t, n) => Promise.resolve(it(e, t, n))
650
+ runQuery: (e, t, n) => Promise.resolve(dt(e, t, n)),
651
+ runMutation: (e, t, n) => Promise.resolve(tt(e, t, n)),
652
+ runAction: (e, t, n) => Promise.resolve(at(e, t, n))
642
653
  }),
643
654
  policy: e.agents?.tools ?? {},
644
655
  mcpEnabled: e.agents?.mcp === !0,
645
656
  resolveSubject: (t) => e.resolveSubject(t, -1).then((e) => e.subject)
646
- }, ht = Et({
657
+ }, gt = Dt({
647
658
  ...e.restRoutes === void 0 ? {} : { restRoutes: e.restRoutes },
648
- publicApiEntries: A,
659
+ publicApiEntries: k,
649
660
  store: e.store,
650
661
  resolveSubject: (t) => e.resolveSubject(t, -1).then((e) => e.subject),
651
662
  ...e.idempotency === void 0 ? {} : { idempotency: e.idempotency },
652
663
  log: e.log ?? L({ scope: "voltro:serve" })
653
- }), gt = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, _t = gt && gt.length >= 16 ? [{
664
+ }), _t = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, vt = _t && _t.length >= 16 ? [{
654
665
  method: "POST",
655
666
  path: Ri,
656
667
  handle: ra({
657
- secret: gt,
668
+ secret: _t,
658
669
  store: e.store,
659
670
  ...e.dataTransferSnapshot ? { snapshot: e.dataTransferSnapshot } : {},
660
671
  assetSink: ji(li()),
@@ -667,42 +678,42 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
667
678
  method: "POST",
668
679
  path: zi,
669
680
  handle: sa({
670
- secret: gt,
681
+ secret: _t,
671
682
  store: e.store,
672
683
  snapshot: e.dataTransferSnapshot ?? { tables: [] },
673
684
  dialect: e.dataTransferDialect ?? "memory",
674
685
  tenantTables: [...e.tenantScopedTables],
675
- loadProfile: xn,
686
+ loadProfile: Sn,
676
687
  assetSource: Mi(li(), e.store),
677
688
  putArchive: async (e, t) => {
678
689
  let { Readable: n } = await import("node:stream"), r = li(), i = ui("storage", () => n.from(t()));
679
690
  await H.runPromise(fi(r, e, i, { contentType: "application/octet-stream" }));
680
691
  }
681
692
  })
682
- }] : [], bt = [
693
+ }] : [], xt = [
683
694
  ...e.httpRoutes ?? [],
684
- ...ht.httpRoutes,
685
- ..._t,
686
- ...b.httpRoutes
695
+ ...gt.httpRoutes,
696
+ ...vt,
697
+ ...S.httpRoutes
687
698
  ];
688
- Object.assign(k, S.handlers);
689
- for (let t of O(e.discovered.streams ?? [])) k[t.descriptor.name] = (n) => pr((r) => oi(r, (r) => {
690
- let i = C(r), a = t.executor(n, i);
699
+ Object.assign(O, w.handlers);
700
+ for (let t of D(e.discovered.streams ?? [])) O[t.descriptor.name] = (n) => pr((r) => oi(r, (r) => {
701
+ let i = ze(r), a = t.executor(n, i);
691
702
  if (H.isEffect(a)) {
692
703
  let t = a.pipe(H.provide(Mr(i.store)));
693
- return (e.baseLayer ? t.pipe(H.provide(e.baseLayer)) : t).pipe(H.provide(Ve)).pipe(H.provide(He)).pipe(H.provide(We)).pipe(H.provide(Ke));
704
+ return (e.baseLayer ? t.pipe(H.provide(e.baseLayer)) : t).pipe(H.provide(Be)).pipe(H.provide(Ve)).pipe(H.provide(Ue)).pipe(H.provide(Ge));
694
705
  }
695
706
  return typeof a == "object" && a && typeof a.then == "function" ? H.promise(() => a) : a;
696
707
  }), `stream.${t.descriptor.name}`);
697
- for (let t of e.discovered.workflows ?? []) k[t.definition.name] = (e) => q(async (e, n) => {
708
+ for (let t of e.discovered.workflows ?? []) O[t.definition.name] = (e) => q(async (e, n) => {
698
709
  let r = n;
699
- return Hr(v, {
710
+ return Hr(b, {
700
711
  subject: r.subject,
701
712
  traceId: r.traceId,
702
713
  source: "workflow-rpc"
703
714
  }).start(t.definition.name, e);
704
715
  }, e, `workflow.${t.definition.name}`);
705
- he && (k[Rn.name] = (e) => J(D({
716
+ pe && (O[Rn.name] = (e) => J(E({
706
717
  descriptor: Rn,
707
718
  executor: (e) => {
708
719
  let t = e.id;
@@ -718,7 +729,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
718
729
  projection: void 0
719
730
  };
720
731
  }
721
- }, e), r, `subscription.${Rn.name}`), k[Bn.name] = (e) => J(D({
732
+ }, e), r, `subscription.${Rn.name}`), O[Bn.name] = (e) => J(E({
722
733
  descriptor: Bn,
723
734
  executor: (e) => {
724
735
  let t = e, n = [...t.tag === void 0 ? [] : [G("tag", t.tag)], ...t.status === void 0 ? [] : [G("status", t.status)]], r = Number.isFinite(t.limit) && t.limit !== void 0 ? Math.min(Math.max(Math.floor(t.limit), 1), 500) : 100;
@@ -734,7 +745,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
734
745
  projection: void 0
735
746
  };
736
747
  }
737
- }, e), r, `subscription.${Bn.name}`), k[zn.name] = (e) => J(D({
748
+ }, e), r, `subscription.${Bn.name}`), O[zn.name] = (e) => J(E({
738
749
  descriptor: zn,
739
750
  executor: (e) => {
740
751
  let t = e.runId;
@@ -750,7 +761,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
750
761
  projection: void 0
751
762
  };
752
763
  }
753
- }, e), r, `subscription.${zn.name}`), k[Ln.name] = (e) => J(D({
764
+ }, e), r, `subscription.${zn.name}`), O[Ln.name] = (e) => J(E({
754
765
  descriptor: Ln,
755
766
  executor: (e) => {
756
767
  let t = e.runId;
@@ -766,7 +777,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
766
777
  projection: void 0
767
778
  };
768
779
  }
769
- }, e), r, `subscription.${Ln.name}`), k[B.name] = (e) => J(D({
780
+ }, e), r, `subscription.${Ln.name}`), O[B.name] = (e) => J(E({
770
781
  descriptor: B,
771
782
  executor: (e) => {
772
783
  let t = e;
@@ -782,7 +793,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
782
793
  projection: void 0
783
794
  };
784
795
  }
785
- }, e), r, `subscription.${B.name}`), k[V.name] = (e) => J(D({
796
+ }, e), r, `subscription.${B.name}`), O[V.name] = (e) => J(E({
786
797
  descriptor: V,
787
798
  executor: (e) => {
788
799
  let t = e.eventId;
@@ -798,34 +809,34 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
798
809
  projection: void 0
799
810
  };
800
811
  }
801
- }, e), r, `subscription.${V.name}`), k[Fn.name] = (t) => q(async (t, n) => {
812
+ }, e), r, `subscription.${V.name}`), O[Fn.name] = (t) => q(async (t, n) => {
802
813
  let r = t;
803
- return await pt(e.store, n.subject, { executionId: r.executionId }), await v.cancel(r.workflowName, r.executionId), await Nt(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
804
- }, t, `action.${Fn.name}`), k[In.name] = (t) => q(async (t, n) => {
814
+ return await mt(e.store, n.subject, { executionId: r.executionId }), await b.cancel(r.workflowName, r.executionId), await Pt(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
815
+ }, t, `action.${Fn.name}`), O[In.name] = (t) => q(async (t, n) => {
805
816
  let r = t;
806
- return await pt(e.store, n.subject, { executionId: r.executionId }), await v.resume(r.workflowName, r.executionId), { ok: !0 };
807
- }, t, `action.${In.name}`), k[Vn.name] = (t) => q(async (t, n) => {
817
+ return await mt(e.store, n.subject, { executionId: r.executionId }), await b.resume(r.workflowName, r.executionId), { ok: !0 };
818
+ }, t, `action.${In.name}`), O[Vn.name] = (t) => q(async (t, n) => {
808
819
  let r = t;
809
- return await pt(e.store, n.subject, { id: r.id }), v.signal({ id: r.id }, r.signalName, r.payload);
810
- }, t, `action.${Vn.name}`), k[Hn.name] = (t) => q(async (t, n) => {
820
+ return await mt(e.store, n.subject, { id: r.id }), b.signal({ id: r.id }, r.signalName, r.payload);
821
+ }, t, `action.${Vn.name}`), O[Hn.name] = (t) => q(async (t, n) => {
811
822
  let r = t;
812
- return await pt(e.store, n.subject, { id: r.id }), v.update({ id: r.id }, r.updateName, r.payload, r.timeoutMs === void 0 ? void 0 : { timeoutMs: r.timeoutMs });
823
+ return await mt(e.store, n.subject, { id: r.id }), b.update({ id: r.id }, r.updateName, r.payload, r.timeoutMs === void 0 ? void 0 : { timeoutMs: r.timeoutMs });
813
824
  }, t, `action.${Hn.name}`));
814
- let St = [
815
- ...O(e.discovered.queries).map((e) => z(e.descriptor)),
816
- ...O(e.discovered.mutations).map((e) => Mn(e.descriptor)),
817
- ...O(e.discovered.actions).map((e) => R(e.descriptor)),
818
- ...nt.queries.map((e) => z(e.descriptor)),
819
- ...nt.mutations.map((e) => Mn(e.descriptor)),
825
+ let Ct = [
826
+ ...D(e.discovered.queries).map((e) => z(e.descriptor)),
827
+ ...D(e.discovered.mutations).map((e) => Mn(e.descriptor)),
828
+ ...D(e.discovered.actions).map((e) => R(e.descriptor)),
820
829
  ...rt.queries.map((e) => z(e.descriptor)),
821
830
  ...rt.mutations.map((e) => Mn(e.descriptor)),
822
- ...b.queries.map((e) => z(e.descriptor)),
823
- ...b.mutations.map((e) => Mn(e.descriptor)),
824
- ...b.actions.map((e) => R(e.descriptor)),
825
- ...O(e.discovered.streams ?? []).map((e) => Nn(e.descriptor)),
826
- ...S.rpcs,
831
+ ...it.queries.map((e) => z(e.descriptor)),
832
+ ...it.mutations.map((e) => Mn(e.descriptor)),
833
+ ...S.queries.map((e) => z(e.descriptor)),
834
+ ...S.mutations.map((e) => Mn(e.descriptor)),
835
+ ...S.actions.map((e) => R(e.descriptor)),
836
+ ...D(e.discovered.streams ?? []).map((e) => Nn(e.descriptor)),
837
+ ...w.rpcs,
827
838
  ...(e.discovered.workflows ?? []).map((e) => si(e.definition)),
828
- ...he ? [
839
+ ...pe ? [
829
840
  z(Rn),
830
841
  z(Bn),
831
842
  z(zn),
@@ -837,28 +848,28 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
837
848
  R(Vn),
838
849
  R(Hn)
839
850
  ] : []
840
- ], Tt = Xn.make(...St).middleware(On).middleware(kn), Dt = Ar({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), Ot = e.dormancyTenantId ?? rr, kt = e.dormancy === "sleep" ? {
851
+ ], Et = Xn.make(...Ct).middleware(On).middleware(kn), Ot = Ar({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), kt = e.dormancyTenantId ?? rr, At = e.dormancy === "sleep" ? {
841
852
  register: (t, n, r) => Jr(e.store, {
842
- tenantId: r ?? Ot,
853
+ tenantId: r ?? kt,
843
854
  kind: "workflow",
844
855
  refId: t,
845
856
  wakeAt: n
846
857
  }),
847
858
  cancel: (t, n) => hr(e.store, {
848
- tenantId: n ?? Ot,
859
+ tenantId: n ?? kt,
849
860
  kind: "workflow",
850
861
  refId: t
851
862
  }).then(() => {})
852
- } : void 0, M = ge ? await import("@voltro/workflow") : void 0, N = M?.makeWorkflowRunRecorder({
863
+ } : void 0, j = me ? await import("@voltro/workflow") : void 0, M = j?.makeWorkflowRunRecorder({
853
864
  store: e.store,
854
865
  ...e.workflowRecording === void 0 ? {} : { recording: e.workflowRecording },
855
- ...kt === void 0 ? {} : { wakeups: kt }
856
- }), Mt = async (t, n) => {
857
- await M.closeWorkflowChildrenForParent({
866
+ ...At === void 0 ? {} : { wakeups: At }
867
+ }), Nt = async (t, n) => {
868
+ await j.closeWorkflowChildrenForParent({
858
869
  store: e.store,
859
870
  parentExecutionId: t,
860
871
  parentStatus: n,
861
- recorder: N,
872
+ recorder: M,
862
873
  log: { warn: (e, t) => {
863
874
  process.stderr.write(`[workflow] ${e} ${t ? JSON.stringify(t) : ""}\n`);
864
875
  } },
@@ -869,7 +880,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
869
880
  await f.runPromise(r.definition.interrupt(n));
870
881
  }
871
882
  });
872
- }, Nt = async (t, n, r) => {
883
+ }, Pt = async (t, n, r) => {
873
884
  let i = (await e.store.query({
874
885
  table: "_voltro_workflow_runs",
875
886
  order: [],
@@ -884,7 +895,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
884
895
  cancelled: !0,
885
896
  completedAt: /* @__PURE__ */ new Date()
886
897
  }), o = i.subject?.tenantId ?? void 0;
887
- a && await N.recordEvent({
898
+ a && await M.recordEvent({
888
899
  runId: i.id,
889
900
  eventType: "run-cancelled",
890
901
  payload: {
@@ -893,18 +904,18 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
893
904
  executionId: n,
894
905
  ...o == null ? {} : { tenantId: o }
895
906
  }
896
- }), a && await Mt(n, "cancelled");
897
- }, Pt = [
907
+ }), a && await Nt(n, "cancelled");
908
+ }, Ft = [
898
909
  ...Ur(e.discovered.workflows ?? [], {
899
- buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? C({
910
+ buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? ze({
900
911
  subject: t.subject,
901
912
  traceId: t.traceId
902
913
  }, e.store, void 0, `workflow:${n.workflowName}`, { parentExecutionId: n.executionId }),
903
- resolveStartContext: de,
904
- ...fe === void 0 ? {} : { resolveAuthority: fe }
914
+ resolveStartContext: le,
915
+ ...ue === void 0 ? {} : { resolveAuthority: ue }
905
916
  }, (t, n, r) => {
906
- let i = M.getWorkflowVersionMetadata(t.definition);
907
- return M.wrapWorkflowExecuteWithRunRecording({
917
+ let i = j.getWorkflowVersionMetadata(t.definition);
918
+ return j.wrapWorkflowExecuteWithRunRecording({
908
919
  name: t.definition.name,
909
920
  store: e.store,
910
921
  subject: r.subject,
@@ -915,27 +926,27 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
915
926
  workflowPatches: i.patches,
916
927
  parentExecutionId: r?.parentExecutionId ?? null,
917
928
  parentClosePolicy: r?.parentClosePolicy ?? null,
918
- onParentClose: ({ executionId: e, status: t }) => Mt(e, t),
919
- ...Ge(t.definition),
929
+ onParentClose: ({ executionId: e, status: t }) => Nt(e, t),
930
+ ...We(t.definition),
920
931
  onTerminal: async ({ executionId: e }) => {
921
- await d?.gate.release(e);
932
+ await ee?.gate.release(e);
922
933
  },
923
- recorder: N,
924
- pluginWorkflowStepLayer: Qe,
934
+ recorder: M,
935
+ pluginWorkflowStepLayer: $e,
925
936
  recordRun: qr
926
937
  }, n);
927
938
  }),
928
939
  ...e.discovered.workflowWorkers ?? [],
929
- ...Se === void 0 ? [] : [Se]
930
- ], It = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...Se === void 0 ? [] : ["voltro.deliverWebhook"]], Lt = Pt.length > 0 ? U.mergeAll(...Pt) : U.empty;
931
- if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || Se !== void 0) && e.workflowEngineLayer !== void 0) {
932
- let t = Lt.pipe(U.provideMerge(e.workflowEngineLayer));
933
- f = Wn.make(e.baseLayer === void 0 ? t : t.pipe(U.provideMerge(e.baseLayer))), await f.runPromise(H.void), (e.log ?? L({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${It.length} entity type(s) registered`, { entities: It });
940
+ ...be === void 0 ? [] : [be]
941
+ ], Lt = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...be === void 0 ? [] : ["voltro.deliverWebhook"]], Rt = Ft.length > 0 ? U.mergeAll(...Ft) : U.empty;
942
+ if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || be !== void 0) && e.workflowEngineLayer !== void 0) {
943
+ let t = Rt.pipe(U.provideMerge(e.workflowEngineLayer));
944
+ f = Wn.make(e.baseLayer === void 0 ? t : t.pipe(U.provideMerge(e.baseLayer))), await f.runPromise(H.void), (e.log ?? L({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${Lt.length} entity type(s) registered`, { entities: Lt });
934
945
  let n = await import("@voltro/workflow/cluster"), r = (e) => f.runPromise(n.redriveFailedRun(e)), i = (e) => f.runPromise(n.resumeRunFromStep(e));
935
- re = await j({
946
+ ne = await A({
936
947
  provider: Di(e.plugins ?? [])?.broadcast?.provider,
937
948
  crossReplica: Di(e.plugins ?? [])?.broadcast?.crossReplica ?? !1,
938
- namespace: Me,
949
+ namespace: Ae,
939
950
  replicaId: crypto.randomUUID(),
940
951
  pollStorage: () => f.runPromise(n.pollWorkflowStorage),
941
952
  onChange: (t) => e.store.onChange((e) => t({
@@ -944,13 +955,13 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
944
955
  ...e.origin === void 0 ? {} : { origin: e.origin }
945
956
  })),
946
957
  log: (e.log ?? L({ scope: "voltro:serve" })).child("workflow")
947
- }), te = async (t) => {
948
- let n = await oe({
958
+ }), p = async (t) => {
959
+ let n = await ie({
949
960
  store: e.store,
950
961
  workflows: e.discovered.workflows ?? [],
951
962
  runRedrive: r
952
963
  }, t.runId);
953
- return n.statusReset && await N.recordEvent({
964
+ return n.statusReset && await M.recordEvent({
954
965
  runId: t.runId,
955
966
  eventType: "run-redriven",
956
967
  payload: {
@@ -962,13 +973,13 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
962
973
  activitiesReset: n.outcome.activitiesReset,
963
974
  reason: n.outcome.reason
964
975
  };
965
- }, ne = async (t) => {
966
- let n = await Oe({
976
+ }, te = async (t) => {
977
+ let n = await Ee({
967
978
  store: e.store,
968
979
  workflows: e.discovered.workflows ?? [],
969
980
  runResume: i
970
981
  }, t.runId, t.step);
971
- return n.statusReset && await N.recordEvent({
982
+ return n.statusReset && await M.recordEvent({
972
983
  runId: t.runId,
973
984
  eventType: "run-redriven",
974
985
  payload: {
@@ -986,7 +997,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
986
997
  let a = (e.scheduleCoordination ?? "single") === "advisoryLock" ? Tr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : ei, s = jr({
987
998
  coordinator: a,
988
999
  replicaId: e.scheduleReplicaId ?? `pid-${process.pid}`
989
- }), l = {
1000
+ }), u = {
990
1001
  info: (e, t) => {
991
1002
  process.stdout.write(`[flow-control] ${e} ${t ? JSON.stringify(t) : ""}\n`);
992
1003
  },
@@ -996,19 +1007,19 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
996
1007
  error: (e, t) => {
997
1008
  process.stderr.write(`[flow-control] ERROR ${e} ${t ? JSON.stringify(t) : ""}\n`);
998
1009
  }
999
- }, u, p = () => {
1000
- if (u !== void 0) return u;
1001
- if (o !== void 0 && N !== void 0) return u = ie({
1010
+ }, d, m = () => {
1011
+ if (d !== void 0) return d;
1012
+ if (o !== void 0 && M !== void 0) return d = h({
1002
1013
  store: e.store,
1003
- log: I,
1014
+ log: F,
1004
1015
  workflows: e.discovered.workflows ?? [],
1005
1016
  workflowsProxy: o,
1006
1017
  workflowRuntime: f,
1007
- workflowRunRecorder: N,
1008
- closeChildrenForParent: Mt
1009
- }), u;
1018
+ workflowRunRecorder: M,
1019
+ closeChildrenForParent: Nt
1020
+ }), d;
1010
1021
  };
1011
- ee = p, d = tt({
1022
+ c = m, ee = nt({
1012
1023
  store: e.store,
1013
1024
  onChange: (t) => e.store.onChange((e) => t({
1014
1025
  table: e.table,
@@ -1022,23 +1033,23 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1022
1033
  },
1023
1034
  workflows: e.discovered.workflows ?? [],
1024
1035
  facade: () => o,
1025
- cancelRunWithReason: p,
1026
- recordRunEvent: () => N?.recordEvent,
1036
+ cancelRunWithReason: m,
1037
+ recordRunEvent: () => M?.recordEvent,
1027
1038
  ...e.workflowStaleness === void 0 ? {} : { staleness: e.workflowStaleness },
1028
1039
  ...e.workflowSuspendSignalHintMs === void 0 ? {} : { suspendSignalHintMs: e.workflowSuspendSignalHintMs },
1029
1040
  scheduleCoordinated: s,
1030
1041
  onAbandoned: async (t) => {
1031
- await wt({
1042
+ await Tt({
1032
1043
  workflows: e.discovered.workflows ?? [],
1033
1044
  facade: () => o,
1034
- log: l,
1045
+ log: u,
1035
1046
  ...t
1036
1047
  });
1037
1048
  },
1038
- log: l
1049
+ log: u
1039
1050
  });
1040
- let m = d;
1041
- m !== void 0 && Gr(() => m.stop()), c = qe({
1051
+ let g = ee;
1052
+ g !== void 0 && Gr(() => g.stop()), l = Ke({
1042
1053
  store: e.store,
1043
1054
  onChange: (t) => e.store.onChange((e) => t({
1044
1055
  table: e.table,
@@ -1049,93 +1060,93 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1049
1060
  tickIntervalMs: e.scheduling.inferenceTickMs
1050
1061
  },
1051
1062
  enabled: (e.discovered.workflows?.length ?? 0) > 0,
1052
- resumeSignal: () => f === void 0 || M === void 0 ? void 0 : async ({ executionId: t, workflowName: n, signalName: r, payload: i }) => {
1053
- await f.runPromise(M.completeSuspendingSignal({
1063
+ resumeSignal: () => f === void 0 || j === void 0 ? void 0 : async ({ executionId: t, workflowName: n, signalName: r, payload: i }) => {
1064
+ await f.runPromise(j.completeSuspendingSignal({
1054
1065
  store: e.store,
1055
- target: At(t, n),
1066
+ target: jt(t, n),
1056
1067
  signalName: r,
1057
1068
  payload: i
1058
1069
  }));
1059
1070
  },
1060
1071
  runEffect: (e) => f.runPromise(e),
1061
1072
  scheduleCoordinated: s,
1062
- log: l
1073
+ log: u
1063
1074
  });
1064
- let h = c;
1065
- h !== void 0 && Gr(() => h.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? Vr({
1075
+ let _ = l;
1076
+ _ !== void 0 && Gr(() => _.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? Vr({
1066
1077
  workflows: e.discovered.workflows ?? [],
1067
1078
  runEffect: (e) => f.runPromise(e),
1068
- onEnqueue: () => re?.publishWake(),
1069
- ...m === void 0 ? {} : {
1070
- admitStart: m.gate.admitStart,
1071
- startPayloadSchema: m.gate.startPayloadSchema,
1072
- parkDelayedStart: m.gate.parkDelayed
1079
+ onEnqueue: () => ne?.publishWake(),
1080
+ ...g === void 0 ? {} : {
1081
+ admitStart: g.gate.admitStart,
1082
+ startPayloadSchema: g.gate.startPayloadSchema,
1083
+ parkDelayedStart: g.gate.parkDelayed
1073
1084
  },
1074
- rememberStartContext: ue,
1085
+ rememberStartContext: ce,
1075
1086
  signal: async (t, n, r) => {
1076
- let i = await M.sendWorkflowSignal({
1087
+ let i = await j.sendWorkflowSignal({
1077
1088
  store: e.store,
1078
- recorder: N,
1089
+ recorder: M,
1079
1090
  target: t,
1080
1091
  signalName: n,
1081
1092
  payload: r
1082
1093
  });
1083
- return await f.runPromise(M.completeSuspendingSignal({
1094
+ return await f.runPromise(j.completeSuspendingSignal({
1084
1095
  store: e.store,
1085
1096
  target: t,
1086
1097
  signalName: n,
1087
1098
  payload: r
1088
1099
  })).catch(() => {}), i;
1089
1100
  },
1090
- update: (t, n, r, i) => M.sendWorkflowUpdate({
1101
+ update: (t, n, r, i) => j.sendWorkflowUpdate({
1091
1102
  store: e.store,
1092
- recorder: N,
1103
+ recorder: M,
1093
1104
  target: t,
1094
1105
  updateName: n,
1095
1106
  payload: r,
1096
1107
  ...i === void 0 ? {} : { options: i }
1097
1108
  }),
1098
- listRuns: (t) => ke(e.store, t),
1099
- retry: (t, n) => je({
1109
+ listRuns: (t) => De(e.store, t),
1110
+ retry: (t, n) => ke({
1100
1111
  store: e.store,
1101
1112
  workflows: e.discovered.workflows ?? [],
1102
1113
  runPromise: (e) => f.runPromise(e)
1103
1114
  }, t, n),
1104
- redrive: (t) => oe({
1115
+ redrive: (t) => ie({
1105
1116
  store: e.store,
1106
1117
  workflows: e.discovered.workflows ?? [],
1107
1118
  runRedrive: r
1108
1119
  }, t).then((e) => e.outcome)
1109
1120
  }) : void 0;
1110
1121
  }
1111
- let Bt = U.mergeAll(Tt.toLayer(k), Dt), Vt = xt(k, e.discovered.queries.map((e) => e.descriptor.name), he), Ht = U.mergeAll(Tt.toLayer(Vt), Dt), P = e.observability, F = await mr({
1122
+ let Vt = U.mergeAll(Et.toLayer(O), Ot), Ht = St(O, e.discovered.queries.map((e) => e.descriptor.name), pe), Ut = U.mergeAll(Et.toLayer(Ht), Ot), N = e.observability, P = await mr({
1112
1123
  ...e.appName === void 0 ? {} : { serviceName: e.appName },
1113
- ...P && P.spanProcessors.length > 0 ? { extraSpanProcessors: P.spanProcessors } : {},
1114
- ...P && P.metricReaders.length > 0 ? { extraMetricReaders: P.metricReaders } : {},
1115
- ...P && Object.keys(P.resourceAttributes).length > 0 ? { resourceAttributes: P.resourceAttributes } : {},
1116
- ...P && P.sampler !== void 0 ? { sampler: P.sampler } : {}
1117
- }), Ut = !1, Wt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Gt, shutdown: Kt } = ti({
1118
- group: Tt,
1119
- handlersLayer: Bt,
1120
- httpHandlersLayer: Ht,
1124
+ ...N && N.spanProcessors.length > 0 ? { extraSpanProcessors: N.spanProcessors } : {},
1125
+ ...N && N.metricReaders.length > 0 ? { extraMetricReaders: N.metricReaders } : {},
1126
+ ...N && Object.keys(N.resourceAttributes).length > 0 ? { resourceAttributes: N.resourceAttributes } : {},
1127
+ ...N && N.sampler !== void 0 ? { sampler: N.sampler } : {}
1128
+ }), Wt = !1, Gt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Kt, shutdown: qt } = ti({
1129
+ group: Et,
1130
+ handlersLayer: Vt,
1131
+ httpHandlersLayer: Ut,
1121
1132
  port: e.port ?? 4e3,
1122
1133
  ...e.host === void 0 ? {} : { host: e.host },
1123
1134
  path: e.path ?? "/ws",
1124
- tracerLayer: F.layer,
1125
- security: ye(e),
1126
- ...Xe,
1135
+ tracerLayer: P.layer,
1136
+ security: _e(e),
1137
+ ...Ze,
1127
1138
  healthCheck: {
1128
- isReady: () => Ut,
1129
- ...Wt ? { ping: Wt } : {}
1139
+ isReady: () => Wt,
1140
+ ...Gt ? { ping: Gt } : {}
1130
1141
  },
1131
- ...bt.length > 0 ? { httpRoutes: bt } : {},
1142
+ ...xt.length > 0 ? { httpRoutes: xt } : {},
1132
1143
  ...e.getStore === void 0 ? {} : { getStore: e.getStore },
1133
- ...Ce.size > 0 ? { webhookRoutes: Ce } : {},
1144
+ ...xe.size > 0 ? { webhookRoutes: xe } : {},
1134
1145
  ...e.inspectRoute === void 0 ? {} : { inspectRoute: e.inspectRoute }
1135
- }), qt = Li(Gt);
1136
- if (await fr(Gt), (e.discovered.schedules?.length ?? 0) > 0) {
1146
+ }), Jt = Li(Kt);
1147
+ if (await fr(Kt), (e.discovered.schedules?.length ?? 0) > 0) {
1137
1148
  let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? Tr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : ei;
1138
- ce = await ni(e.discovered.schedules ?? [], {
1149
+ oe = await ni(e.discovered.schedules ?? [], {
1139
1150
  store: e.store,
1140
1151
  coordinator: t,
1141
1152
  defaultTrigger: e.scheduleDefaultTrigger ?? "self",
@@ -1143,7 +1154,7 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1143
1154
  armSelf: e.scheduleArmSelf ?? !0,
1144
1155
  dormancy: e.dormancy ?? "always-on",
1145
1156
  ...e.dormancyTenantId === void 0 ? {} : { dormancyTenantId: e.dormancyTenantId },
1146
- buildContext: ({ traceId: t, scheduleName: n, subject: r }) => C({
1157
+ buildContext: ({ traceId: t, scheduleName: n, subject: r }) => ze({
1147
1158
  subject: r,
1148
1159
  traceId: t
1149
1160
  }, e.store, void 0, `schedule:${n}`),
@@ -1161,26 +1172,26 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1161
1172
  },
1162
1173
  ...e.scheduleFireInterceptor === void 0 ? {} : { interceptFire: e.scheduleFireInterceptor },
1163
1174
  ...e.onScheduleRunEvent === void 0 ? {} : { onRunEvent: e.onScheduleRunEvent }
1164
- }), e.onSchedulerReady?.(ce);
1175
+ }), e.onSchedulerReady?.(oe);
1165
1176
  }
1166
- let I = e.log ?? L({ scope: "voltro:serve" }), Jt, Yt;
1167
- if ((e.discovered.subscribers?.length ?? 0) > 0 && (Jt = x(e.discovered.subscribers ?? [], e.store, I.child("subscribe"), e.schemaRegistry, S.bus)), (e.discovered.reactions?.length ?? 0) > 0) {
1168
- let t = I.child("reaction"), n = async (n, r) => {
1177
+ let F = e.log ?? L({ scope: "voltro:serve" }), Yt, Xt;
1178
+ if ((e.discovered.subscribers?.length ?? 0) > 0 && (Yt = C(e.discovered.subscribers ?? [], e.store, F.child("subscribe"), e.schemaRegistry, w.bus)), (e.discovered.reactions?.length ?? 0) > 0) {
1179
+ let t = F.child("reaction"), n = async (n, r) => {
1169
1180
  if (n.kind === "workflow") {
1170
- if (v === void 0) {
1181
+ if (b === void 0) {
1171
1182
  t.warn("reaction workflow act skipped — no workflow engine in this app", { workflow: n.workflow });
1172
1183
  return;
1173
1184
  }
1174
1185
  let e = n.payload === void 0 ? r.new ?? r.old ?? {} : n.payload(r);
1175
- await Hr(v, {
1186
+ await Hr(b, {
1176
1187
  traceId: `reaction:${n.workflow}`,
1177
1188
  source: `reaction:${n.workflow}`
1178
1189
  }).start(n.workflow, e);
1179
1190
  return;
1180
1191
  }
1181
- await ot(n.agent, r, {
1192
+ await st(n.agent, r, {
1182
1193
  findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
1183
- runAction: (e, t, n) => Promise.resolve(it(e, t, n)),
1194
+ runAction: (e, t, n) => Promise.resolve(at(e, t, n)),
1184
1195
  makeSubject: (e) => An(e),
1185
1196
  now: () => Date.now(),
1186
1197
  log: t
@@ -1195,74 +1206,74 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1195
1206
  } catch (e) {
1196
1207
  return t.warn("reaction budget check failed — refusing the act", { tenantId: n }, e), !1;
1197
1208
  }
1198
- }, i = lt(e.store, { onError: (e) => t.warn("reaction: rate-slot claim failed; refusing the act", { cause: String(e) }) });
1199
- Yt = l(e.discovered.reactions ?? [], e.store, {
1209
+ }, i = ut(e.store, { onError: (e) => t.warn("reaction: rate-slot claim failed; refusing the act", { cause: String(e) }) });
1210
+ Xt = u(e.discovered.reactions ?? [], e.store, {
1200
1211
  runAct: n,
1201
1212
  checkBudget: r,
1202
1213
  claimRateSlot: (e) => i.claim(e)
1203
1214
  }, t);
1204
1215
  }
1205
- let Xt;
1206
- (e.discovered.aggregates?.length ?? 0) > 0 && (Xt = await De({
1216
+ let Zt;
1217
+ (e.discovered.aggregates?.length ?? 0) > 0 && (Zt = await Te({
1207
1218
  discovered: e.discovered.aggregates ?? [],
1208
1219
  store: e.store,
1209
- log: I.child("aggregate"),
1220
+ log: F.child("aggregate"),
1210
1221
  ...e.analytics === void 0 ? {} : { analytics: e.analytics },
1211
1222
  ...e.aggregateStorage === void 0 ? {} : { storage: e.aggregateStorage },
1212
1223
  ...e.aggregateCoordinator === void 0 ? {} : { coordinator: e.aggregateCoordinator }
1213
- }), Ve = U.succeed(nr, Xt.registry));
1214
- let Zt;
1215
- (e.discovered.expectations?.length ?? 0) > 0 && (Zt = lr({
1224
+ }), Be = U.succeed(nr, Zt.registry));
1225
+ let Qt;
1226
+ (e.discovered.expectations?.length ?? 0) > 0 && (Qt = lr({
1216
1227
  discovered: e.discovered.expectations ?? [],
1217
1228
  store: e.store,
1218
- log: I.child("expectation")
1219
- }), He = U.succeed(ar, Zt.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = dr({
1229
+ log: F.child("expectation")
1230
+ }), Ve = U.succeed(ar, Qt.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = dr({
1220
1231
  discovered: e.discovered.budgets ?? [],
1221
- log: I.child("finops")
1222
- }), We = U.succeed(K, n.registry));
1223
- let Qt;
1224
- return (e.discovered.experiments?.length ?? 0) > 0 && (Qt = ur({
1232
+ log: F.child("finops")
1233
+ }), Ue = U.succeed(K, n.registry));
1234
+ let $t;
1235
+ return (e.discovered.experiments?.length ?? 0) > 0 && ($t = ur({
1225
1236
  discovered: e.discovered.experiments ?? [],
1226
1237
  store: e.store,
1227
- log: I.child("experiment")
1228
- }), Ke = U.succeed(or, Qt.registry)), Ut = !0, e.bootTiming?.mark("ready"), {
1238
+ log: F.child("experiment")
1239
+ }), Ge = U.succeed(or, $t.registry)), Wt = !0, e.bootTiming?.mark("ready"), {
1229
1240
  dispatcher: r,
1230
- server: Gt,
1231
- scheduler: ce,
1232
- eventsSnapshot: me(S.bus, S.declared),
1241
+ server: Kt,
1242
+ scheduler: oe,
1243
+ eventsSnapshot: fe(w.bus, w.declared),
1233
1244
  membersSnapshot: () => ({
1234
- members: ze.membership.list(),
1245
+ members: Le.membership.list(),
1235
1246
  capturedAt: Date.now()
1236
1247
  }),
1237
- agentTools: () => mt,
1238
- rpcMetrics: () => T,
1239
- webhooksService: () => xe,
1240
- runCanceller: () => ee(),
1241
- flowControlHealth: () => d?.cancelHealth(),
1242
- inferenceHealth: () => c?.health(),
1243
- workflowWriteActions: () => v === void 0 || N === void 0 ? void 0 : se({
1248
+ agentTools: () => ht,
1249
+ rpcMetrics: () => Ye,
1250
+ webhooksService: () => ye,
1251
+ runCanceller: () => c(),
1252
+ flowControlHealth: () => ee?.cancelHealth(),
1253
+ inferenceHealth: () => l?.health(),
1254
+ workflowWriteActions: () => b === void 0 || M === void 0 ? void 0 : ae({
1244
1255
  store: e.store,
1245
- log: I,
1256
+ log: F,
1246
1257
  workflows: e.discovered.workflows ?? [],
1247
1258
  workflowsProxy: o,
1248
1259
  workflowRuntime: f,
1249
- workflowRunRecorder: N,
1250
- closeChildrenForParent: Mt
1260
+ workflowRunRecorder: M,
1261
+ closeChildrenForParent: Nt
1251
1262
  }),
1252
- redriveWorkflowRun: (e) => te ? te(e) : Promise.reject(/* @__PURE__ */ Error("redrive: this app registers no workflows")),
1253
- resumeWorkflowRunFromStep: (e) => ne ? ne(e) : Promise.reject(/* @__PURE__ */ Error("resume-from-step: this app registers no workflows")),
1263
+ redriveWorkflowRun: (e) => p ? p(e) : Promise.reject(/* @__PURE__ */ Error("redrive: this app registers no workflows")),
1264
+ resumeWorkflowRunFromStep: (e) => te ? te(e) : Promise.reject(/* @__PURE__ */ Error("resume-from-step: this app registers no workflows")),
1254
1265
  close: async () => {
1255
- Ut = !1, await qt.drainRequests();
1256
- for (let e of we) try {
1266
+ Wt = !1, await Jt.drainRequests();
1267
+ for (let e of Se) try {
1257
1268
  await e();
1258
1269
  } catch (e) {
1259
- I.warn("serve: teardown step failed", {}, e);
1270
+ F.warn("serve: teardown step failed", {}, e);
1260
1271
  }
1261
- await Be?.detach(), await ze.detach(), Xt?.detach(), Zt?.detach(), n?.detach(), Qt?.detach(), Yt?.(), Jt?.(), await ce?.shutdown(), r.close(), await re?.detach(), await f?.dispose(), await Kt(), await qt.finish();
1272
+ await Re?.detach(), await Le.detach(), Zt?.detach(), Qt?.detach(), n?.detach(), $t?.detach(), Xt?.(), Yt?.(), await oe?.shutdown(), r.close(), await ne?.detach(), await f?.dispose(), await qt(), await Jt.finish();
1262
1273
  }
1263
1274
  };
1264
- }, $ = L({ scope: "voltro:serve" }), da = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", fa = Bt, pa = async (e) => {
1265
- let t = yn(process.cwd());
1275
+ }, $ = L({ scope: "voltro:serve" }), da = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", fa = Vt, pa = async (e) => {
1276
+ let t = bn(process.cwd());
1266
1277
  if (En(t)) {
1267
1278
  let n;
1268
1279
  try {
@@ -1275,270 +1286,270 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1275
1286
  }
1276
1287
  return ma(e);
1277
1288
  }, ma = async (s) => {
1278
- let l = bn();
1289
+ let u = xn();
1279
1290
  e("serve");
1280
1291
  try {
1281
1292
  hi();
1282
1293
  } catch (e) {
1283
1294
  throw i(e instanceof Error ? e.message : String(e));
1284
1295
  }
1285
- let u = process.cwd(), p = await We(u), ie = Vt({
1296
+ let d = process.cwd(), m = await Ue(d), h = Ht({
1286
1297
  kind: "api",
1287
- configPort: p?.port,
1298
+ configPort: m?.port,
1288
1299
  env: process.env,
1289
1300
  flagPort: fa(s, "--port")
1290
1301
  });
1291
- for (let e of ie.warnings) $.warn(e);
1292
- let m = ie.port;
1293
- Zr(Yr(p?.secrets)), await Ht({
1294
- rawEnv: p?.env,
1302
+ for (let e of h.warnings) $.warn(e);
1303
+ let g = h.port;
1304
+ Zr(Yr(m?.secrets)), await Ut({
1305
+ rawEnv: m?.env,
1295
1306
  appType: "api",
1296
- root: u,
1307
+ root: d,
1297
1308
  log: $,
1298
1309
  generateTypes: !1
1299
- }), l.mark("config");
1300
- let h = (process.env.DB_DIALECT ?? p?.store ?? "memory").toLowerCase(), ae = (h === "mariadb" || h === "postgres" || h === "mssql") && (process.env.CDC ?? "1") !== "0", oe = h === "mariadb" ? "mariadb" : h === "mssql" ? "mssql" : void 0, se = vn(u);
1301
- if (!r() && En(se)) try {
1302
- let e = await import(Dn(se).href);
1310
+ }), u.mark("config");
1311
+ let _ = (process.env.DB_DIALECT ?? m?.store ?? "memory").toLowerCase(), re = (_ === "mariadb" || _ === "postgres" || _ === "mssql") && (process.env.CDC ?? "1") !== "0", ie = _ === "mariadb" ? "mariadb" : _ === "mssql" ? "mssql" : void 0, ae = yn(d);
1312
+ if (!r() && En(ae)) try {
1313
+ let e = await import(Dn(ae).href);
1303
1314
  if (e.modules) {
1304
1315
  let t = {};
1305
- for (let [n, r] of Object.entries(e.modules)) t[wn(u, n)] = r;
1316
+ for (let [n, r] of Object.entries(e.modules)) t[wn(d, n)] = r;
1306
1317
  n(t), $.info("precompiled api bundle loaded", { modules: Object.keys(t).length });
1307
1318
  }
1308
1319
  } catch (e) {
1309
1320
  $.warn("precompiled api bundle failed to load — falling back to source", {}, e);
1310
1321
  }
1311
- let g = await T(u), _ = await Ot(g, { cdc: ae && oe !== void 0 }), pe = y(_);
1322
+ let v = await Ye(d), y = await kt(v, { cdc: re && ie !== void 0 }), de = x(y);
1312
1323
  {
1313
1324
  let e = /* @__PURE__ */ new Set([
1314
- ..._.queries.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1315
- ..._.mutations.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1316
- ..._.actions.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name)
1325
+ ...y.queries.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1326
+ ...y.mutations.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1327
+ ...y.actions.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name)
1317
1328
  ]);
1318
- Jt(I(p?.plugins ?? []), [
1319
- ..._.queries.map((e) => e.descriptor.name),
1320
- ..._.mutations.map((e) => e.descriptor.name),
1321
- ..._.actions.map((e) => e.descriptor.name),
1322
- ..._.streams.map((e) => e.descriptor.name)
1329
+ Yt(F(m?.plugins ?? []), [
1330
+ ...y.queries.map((e) => e.descriptor.name),
1331
+ ...y.mutations.map((e) => e.descriptor.name),
1332
+ ...y.actions.map((e) => e.descriptor.name),
1333
+ ...y.streams.map((e) => e.descriptor.name)
1323
1334
  ], e);
1324
- let t = Me(_.serverOnlyLeaks, b(process.env, "strict"), vr, "`voltro serve`");
1335
+ let t = Ae(y.serverOnlyLeaks, S(process.env, "strict"), vr, "`voltro serve`");
1325
1336
  if (t.action === "fail") throw i(t.message ?? "");
1326
1337
  t.action === "warn" && $.warn(t.message ?? "");
1327
1338
  }
1328
- let me = g.filter((e) => gn.test(e)), be = me.length > 0 ? await hn(me, $.child("webhooks")) : {
1339
+ let fe = v.filter((e) => _n.test(e)), ve = fe.length > 0 ? await gn(fe, $.child("webhooks")) : {
1329
1340
  outgoing: [],
1330
1341
  incoming: [],
1331
1342
  providers: []
1332
- }, De = pn(_.events), Oe = be.outgoing.length + be.incoming.length + be.providers.length + De.length === 0 ? void 0 : {
1333
- ...be,
1334
- outgoing: [...be.outgoing, ...De]
1335
- }, ke = tn({
1343
+ }, Te = mn(y.events), Ee = ve.outgoing.length + ve.incoming.length + ve.providers.length + Te.length === 0 ? void 0 : {
1344
+ ...ve,
1345
+ outgoing: [...ve.outgoing, ...Te]
1346
+ }, De = nn({
1336
1347
  nodeEnv: process.env.NODE_ENV,
1337
- cdcDialect: oe,
1338
- declared: p?.schema
1339
- }), je = Xt({
1340
- gates: ke,
1348
+ cdcDialect: ie,
1349
+ declared: m?.schema
1350
+ }), ke = Zt({
1351
+ gates: De,
1341
1352
  runtime: {
1342
- traces: ve(),
1353
+ traces: ge(),
1343
1354
  undo: ii()
1344
1355
  }
1345
1356
  });
1346
- if (je !== void 0) throw i(`serve: ${je}`);
1347
- let Ne = en({
1348
- mix: _.featureMix,
1349
- plugins: p?.plugins ?? [],
1350
- gates: ke,
1351
- ...oe ? { cdcDialect: oe } : {}
1352
- }), Pe = p?.analytics !== void 0 && p.analytics.kind !== "noop" && h !== "memory" ? (await F(h)).makeSqlLayer(A()) : void 0, Le = await ee({
1353
- spec: p?.analytics,
1354
- sqlLayer: Pe,
1357
+ if (ke !== void 0) throw i(`serve: ${ke}`);
1358
+ let je = tn({
1359
+ mix: y.featureMix,
1360
+ plugins: m?.plugins ?? [],
1361
+ gates: De,
1362
+ ...ie ? { cdcDialect: ie } : {}
1363
+ }), Me = m?.analytics !== void 0 && m.analytics.kind !== "noop" && _ !== "memory" ? (await P(_)).makeSqlLayer(k()) : void 0, Fe = await c({
1364
+ spec: m?.analytics,
1365
+ sqlLayer: Me,
1355
1366
  log: $
1356
- }), x = (() => {
1357
- let e = new Set(_.tables.map((e) => e.tableName)), t = [..._.tables];
1358
- for (let n of [...Ne, ...Le.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1367
+ }), C = (() => {
1368
+ let e = new Set(y.tables.map((e) => e.tableName)), t = [...y.tables];
1369
+ for (let n of [...je, ...Fe.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1359
1370
  return t;
1360
1371
  })();
1361
- for (let e of x) er(e);
1372
+ for (let e of C) er(e);
1362
1373
  {
1363
- let e = yr(ai(_.queries.map((e) => ({
1374
+ let e = yr(ai(y.queries.map((e) => ({
1364
1375
  name: e.descriptor.name,
1365
1376
  source: e.descriptor.source
1366
- })), new Set(x.flatMap((e) => {
1377
+ })), new Set(C.flatMap((e) => {
1367
1378
  let t = e.tableName;
1368
1379
  return t === void 0 ? [] : [t];
1369
1380
  }))));
1370
1381
  e !== void 0 && $.warn(e);
1371
1382
  }
1372
- let Re = (process.env.NODE_ENV ?? "").toLowerCase();
1373
- if (da(Re, h, process.env.VOLTRO_AUTO_MIGRATE)) {
1374
- let e = (await F(h)).makeSqlLayer(A()), t = await H.runPromise(Gn.SqlClient.pipe(H.flatMap((e) => Jn(e, u)), H.provide(e), H.catchAll(() => H.succeed([]))));
1383
+ let Ie = (process.env.NODE_ENV ?? "").toLowerCase();
1384
+ if (da(Ie, _, process.env.VOLTRO_AUTO_MIGRATE)) {
1385
+ let e = (await P(_)).makeSqlLayer(k()), t = await H.runPromise(Gn.SqlClient.pipe(H.flatMap((e) => Jn(e, d)), H.provide(e), H.catchAll(() => H.succeed([]))));
1375
1386
  t.length > 0 && ($.error(`serve: refusing to boot — ${t.length} pending file-based migration(s) have never run against this database. They perform the changes a schema diff cannot infer (data moves, backfills, table splits), so the declarative fingerprint check below cannot see them and would have let this process serve un-migrated data.`, { pending: t }), $.error("Run them from your pre-deploy job — `voltro db migrate .` (schema + files) or `voltro db files .` (files alone) — or set VOLTRO_AUTO_MIGRATE=0 to bypass every boot schema check. `voltro serve` never applies them itself: a rolling deploy would start N replicas and each would try."), process.exit(1));
1376
- let n = await H.runPromise(Gn.SqlClient.pipe(H.flatMap((e) => Yn(e, x, {
1377
- appliedBy: `serve:${Re}`,
1387
+ let n = await H.runPromise(Gn.SqlClient.pipe(H.flatMap((e) => Yn(e, C, {
1388
+ appliedBy: `serve:${Ie}`,
1378
1389
  environment: "prod",
1379
- dialectId: h
1390
+ dialectId: _
1380
1391
  })), H.provide(e)));
1381
- n.kind === "prod-mismatch" && ($.error(qn(n, h)), $.error(Qt({
1382
- gates: ke,
1392
+ n.kind === "prod-mismatch" && ($.error(qn(n, _)), $.error($t({
1393
+ gates: De,
1383
1394
  nodeEnv: process.env.NODE_ENV,
1384
- cdcDialect: oe,
1385
- declared: p?.schema
1386
- })), $.error("serve: refusing to boot — apply the schema first (voltro db apply in a pre-deploy step), or set VOLTRO_AUTO_MIGRATE=0 to bypass this check."), process.exit(1)), $.info(qn(n, h));
1395
+ cdcDialect: ie,
1396
+ declared: m?.schema
1397
+ })), $.error("serve: refusing to boot — apply the schema first (voltro db apply in a pre-deploy step), or set VOLTRO_AUTO_MIGRATE=0 to bypass this check."), process.exit(1)), $.info(qn(n, _));
1387
1398
  }
1388
- await qt({
1389
- dialectId: h,
1390
- tables: x,
1391
- mode: Gt(p?.reactiveTriggers),
1392
- lockSchema: A().schema,
1393
- makeLayer: async () => (await F(h)).makeSqlLayer(A()),
1399
+ await Jt({
1400
+ dialectId: _,
1401
+ tables: C,
1402
+ mode: Kt(m?.reactiveTriggers),
1403
+ lockSchema: k().schema,
1404
+ makeLayer: async () => (await P(_)).makeSqlLayer(k()),
1394
1405
  log: {
1395
1406
  info: (e, t) => $.info(e, t ?? {}),
1396
1407
  warn: (e, t) => $.warn(e, t ?? {})
1397
1408
  }
1398
1409
  });
1399
- let Ue = Br(x);
1400
- l.mark("discover");
1401
- let w = await nt(p, void 0), Ge = ci(w, h);
1402
- for (let e of dt({
1403
- dialect: String(p?.store ?? process.env.DB_DIALECT ?? "postgres"),
1410
+ let He = Br(C);
1411
+ u.mark("discover");
1412
+ let T = await rt(m, void 0), We = ci(T, _);
1413
+ for (let e of ft({
1414
+ dialect: String(m?.store ?? process.env.DB_DIALECT ?? "postgres"),
1404
1415
  changeStrategy: (process.env.CDC ?? "1") === "0" ? "inline" : "cdc",
1405
1416
  dbUrl: process.env.DB_URL,
1406
- crossReplicaBus: Di(p?.plugins ?? [])?.broadcast.crossReplica === !0,
1407
- tables: _.tables.map((e) => ({
1417
+ crossReplicaBus: Di(m?.plugins ?? [])?.broadcast.crossReplica === !0,
1418
+ tables: y.tables.map((e) => ({
1408
1419
  tableName: e.tableName,
1409
1420
  isReactive: e.isReactive === !0
1410
1421
  })),
1411
- querySources: _.queries.flatMap((e) => {
1422
+ querySources: y.queries.flatMap((e) => {
1412
1423
  let t = e.descriptor.source;
1413
1424
  return t === void 0 ? [] : typeof t == "string" ? [t] : [...t];
1414
1425
  })
1415
1426
  })) e.level === "warn" ? $.warn(e.message) : $.info(e.message);
1416
1427
  {
1417
- let e = E({
1428
+ let e = Xe({
1418
1429
  tables: Zn().map((e) => ({ tableName: e.tableName })),
1419
- queries: _.queries.map((e) => ({
1430
+ queries: y.queries.map((e) => ({
1420
1431
  name: e.descriptor.name,
1421
1432
  source: e.descriptor.source
1422
1433
  }))
1423
- }), t = gt(e);
1434
+ }), t = _t(e);
1424
1435
  t !== void 0 && $.warn(t);
1425
1436
  }
1426
- p?.cache && !process.env.CACHE_BACKEND && (process.env.CACHE_BACKEND = p.cache), p?.cacheRedisUrl && !process.env.CACHE_REDIS_URL && (process.env.CACHE_REDIS_URL = p.cacheRedisUrl), p?.cacheRedisDriver && !process.env.CACHE_REDIS_DRIVER && (process.env.CACHE_REDIS_DRIVER = p.cacheRedisDriver), p?.cacheKeyPrefix && !process.env.CACHE_KEY_PREFIX && (process.env.CACHE_KEY_PREFIX = p.cacheKeyPrefix);
1427
- let { service: qe, invalidationBus: tt, snapshotCache: at, cache: ot, semantic: lt, evictSource: pt, backend: vt, stats: yt, dispose: xt } = await Ke({
1437
+ m?.cache && !process.env.CACHE_BACKEND && (process.env.CACHE_BACKEND = m.cache), m?.cacheRedisUrl && !process.env.CACHE_REDIS_URL && (process.env.CACHE_REDIS_URL = m.cacheRedisUrl), m?.cacheRedisDriver && !process.env.CACHE_REDIS_DRIVER && (process.env.CACHE_REDIS_DRIVER = m.cacheRedisDriver), m?.cacheKeyPrefix && !process.env.CACHE_KEY_PREFIX && (process.env.CACHE_KEY_PREFIX = m.cacheKeyPrefix);
1438
+ let { service: Ke, invalidationBus: nt, snapshotCache: ot, cache: st, semantic: ut, evictSource: mt, backend: yt, stats: bt, dispose: St } = await Ge({
1428
1439
  env: process.env,
1429
- semantic: p?.cacheSemantic ?? !1
1440
+ semantic: m?.cacheSemantic ?? !1
1430
1441
  });
1431
- lt !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${vt}` + (vt === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), w.onChange((e) => {
1432
- if (H.runFork(tt.publish(e.table)), pt !== void 0) {
1442
+ ut !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${yt}` + (yt === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), T.onChange((e) => {
1443
+ if (H.runFork(nt.publish(e.table)), mt !== void 0) {
1433
1444
  let t = (e.new ?? e.old)?.id;
1434
- pt({
1445
+ mt({
1435
1446
  table: e.table,
1436
1447
  op: e.op,
1437
1448
  ...t === void 0 ? {} : { id: t }
1438
1449
  });
1439
1450
  }
1440
- }), p?.kv && !process.env.KV_BACKEND && (process.env.KV_BACKEND = p.kv), p?.kvRedisUrl && !process.env.KV_REDIS_URL && (process.env.KV_REDIS_URL = p.kvRedisUrl), p?.kvKeyPrefix && !process.env.KV_KEY_PREFIX && (process.env.KV_KEY_PREFIX = p.kvKeyPrefix);
1441
- let { kv: Ct, service: wt } = await kr({ store: w });
1442
- He({
1451
+ }), m?.kv && !process.env.KV_BACKEND && (process.env.KV_BACKEND = m.kv), m?.kvRedisUrl && !process.env.KV_REDIS_URL && (process.env.KV_REDIS_URL = m.kvRedisUrl), m?.kvKeyPrefix && !process.env.KV_KEY_PREFIX && (process.env.KV_KEY_PREFIX = m.kvKeyPrefix);
1452
+ let { kv: wt, service: Tt } = await kr({ store: T });
1453
+ Ve({
1443
1454
  log: $,
1444
- max: Wt(),
1445
- outOfPool: Lt(h, (process.env.CDC ?? "1") !== "0"),
1455
+ max: Gt(),
1456
+ outOfPool: Rt(_, (process.env.CDC ?? "1") !== "0"),
1446
1457
  readPools: t.replicationSnapshot()?.replicaCount ?? 0,
1447
1458
  always: !0
1448
- }), l.mark("store");
1449
- let Et = cr({
1450
- store: w,
1451
- sink: Le.sink,
1459
+ }), u.mark("store");
1460
+ let Dt = cr({
1461
+ store: T,
1462
+ sink: Fe.sink,
1452
1463
  log: $
1453
- }), At = kt({
1454
- store: w,
1455
- dialect: h,
1464
+ }), jt = At({
1465
+ store: T,
1466
+ dialect: _,
1456
1467
  log: { info: (e) => $.info(e) }
1457
- }), j = p?.plugins ?? [], Ft = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Rt, zt;
1458
- h !== "memory" && (Rt = Wn.make((await F(h)).makeSqlLayer(A())), zt = await Rt.runPromise(Gn.SqlClient));
1459
- let Bt = [
1468
+ }), A = m?.plugins ?? [], It = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, zt, Bt;
1469
+ _ !== "memory" && (zt = Wn.make((await P(_)).makeSqlLayer(k())), Bt = await zt.runPromise(Gn.SqlClient));
1470
+ let Vt = [
1460
1471
  "postgres",
1461
1472
  "mariadb",
1462
1473
  "mysql",
1463
1474
  "mssql"
1464
- ].includes(h) ? Tr(w, Ft, $) : ei, mn = S(p?.scheduling), yn = jr({
1465
- maxIdleIntervalMs: mn.pollCeilingMs,
1466
- coordinator: Bt,
1467
- replicaId: Ft,
1475
+ ].includes(_) ? Tr(T, It, $) : ei, hn = w(m?.scheduling), bn = jr({
1476
+ maxIdleIntervalMs: hn.pollCeilingMs,
1477
+ coordinator: Vt,
1478
+ replicaId: It,
1468
1479
  log: $
1469
- }), xn = [], Sn = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Tn = Di(p?.plugins ?? [])?.broadcast?.provider, L = Ze(p?.plugins, p?.name ?? Cn(u));
1480
+ }), Sn = [], I = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Tn = Di(m?.plugins ?? [])?.broadcast?.provider, L = Qe(m?.plugins, m?.name ?? Cn(d));
1470
1481
  {
1471
- let e = et(p?.plugins, p?.name ?? Cn(u));
1482
+ let e = tt(m?.plugins, m?.name ?? Cn(d));
1472
1483
  e !== void 0 && $.warn(e);
1473
1484
  }
1474
- let On = jt(p?.plugins, {
1475
- instanceId: Sn,
1485
+ let On = Mt(m?.plugins, {
1486
+ instanceId: I,
1476
1487
  namespace: L,
1477
1488
  meta: { mode: "serve" },
1478
1489
  logger: $
1479
1490
  }), kn = {
1480
- ...zt ? { sql: zt } : {},
1481
- instanceId: Sn,
1491
+ ...Bt ? { sql: Bt } : {},
1492
+ instanceId: I,
1482
1493
  membership: On.membership,
1483
1494
  ...Tn === void 0 ? {} : { broadcast: Tn },
1484
1495
  broadcastChannels: { presence: Ei(L, "presence") },
1485
1496
  scheduleCoordinated: (e, t, n) => {
1486
- let r = yn(e, t, n);
1487
- return xn.push(r), r;
1497
+ let r = bn(e, t, n);
1498
+ return Sn.push(r), r;
1488
1499
  }
1489
1500
  };
1490
- for (let e of j) e.bindDataStore?.(Ge, kn);
1491
- c({
1492
- store: w,
1493
- ...st(),
1501
+ for (let e of A) e.bindDataStore?.(We, kn);
1502
+ l({
1503
+ store: T,
1504
+ ...ct(),
1494
1505
  log: $
1495
1506
  });
1496
- let R = j.filter((e) => typeof e.onChangeEvent == "function");
1507
+ let R = A.filter((e) => typeof e.onChangeEvent == "function");
1497
1508
  if (R.length > 0) {
1498
- let e = w.changeScope ?? "local";
1499
- w.onChange((t) => {
1500
- let n = he(t, e);
1509
+ let e = T.changeScope ?? "local";
1510
+ T.onChange((t) => {
1511
+ let n = pe(t, e);
1501
1512
  for (let e of R) H.runFork(e.onChangeEvent(n).pipe(H.catchAllCause((t) => H.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: Un.pretty(t) })))));
1502
1513
  });
1503
1514
  }
1504
- let An = le({
1505
- plugins: j,
1506
- appName: p?.name ?? "voltro-api",
1515
+ let An = se({
1516
+ plugins: A,
1517
+ appName: m?.name ?? "voltro-api",
1507
1518
  appType: "api",
1508
1519
  voltroVersion: process.env.npm_package_version ?? "0.0.0",
1509
1520
  log: $
1510
1521
  });
1511
- j.length && await An.activate(), l.mark("plugins");
1522
+ A.length && await An.activate(), u.mark("plugins");
1512
1523
  let jn = await An.gatherObservability(), Mn = {
1513
1524
  info: (e, t) => process.stdout.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
1514
1525
  warn: (e, t) => process.stderr.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
1515
1526
  debug: () => {}
1516
- }, z, Nn = await ht(w, p, h, L, Mn, (e, t) => {
1527
+ }, z, Nn = await gt(T, m, _, L, Mn, (e, t) => {
1517
1528
  z?.refreshAll(`broadcast gap: missed ${t} change(s) from ${e}`);
1518
- }), Pn = p?.apiKeys, Fn = (typeof Pn == "object" ? Pn.prefix : void 0) ?? "voltro_", B = Pn ? _r(w) : void 0, V = B ? Dr({ flush: Or(B) }) : void 0;
1529
+ }), Pn = m?.apiKeys, Fn = (typeof Pn == "object" ? Pn.prefix : void 0) ?? "voltro_", B = Pn ? _r(T) : void 0, V = B ? Dr({ flush: Or(B) }) : void 0;
1519
1530
  V && Gr(() => V.shutdown());
1520
1531
  let In = B ? Er(B, {
1521
1532
  prefix: Fn,
1522
1533
  ...V ? { usage: V } : {}
1523
- }) : void 0, Ln = In ? [br(In, { prefix: Fn })] : [], Rn = bt([...p?.auth?.strategies ?? [], ...Ln], wi(p?.plugins ?? []), p?.auth?.anonymousTenantRequired ?? !1, p?.auth, () => Ge), zn = [...p?.restRoutes ?? [], ...In ? sr(In, (typeof Pn == "object" ? Pn.managementPath : void 0) ?? "/v1/api-keys") : []], Bn = k(p?.idempotency, w), Vn = j.map((e) => e.services).filter((e) => e !== void 0), Hn = U.mergeAll(Be({
1524
- analyticsLayer: Le.layer,
1525
- cacheService: qe,
1526
- kvService: wt,
1527
- ...lt === void 0 ? {} : { semanticCache: lt },
1534
+ }) : void 0, Ln = In ? [br(In, { prefix: Fn })] : [], Rn = xt([...m?.auth?.strategies ?? [], ...Ln], wi(m?.plugins ?? []), m?.auth?.anonymousTenantRequired ?? !1, m?.auth, () => We), zn = [...m?.restRoutes ?? [], ...In ? sr(In, (typeof Pn == "object" ? Pn.managementPath : void 0) ?? "/v1/api-keys") : []], Bn = O(m?.idempotency, T), Vn = A.map((e) => e.services).filter((e) => e !== void 0), Hn = U.mergeAll(Re({
1535
+ analyticsLayer: Fe.layer,
1536
+ cacheService: Ke,
1537
+ kvService: Tt,
1538
+ ...ut === void 0 ? {} : { semanticCache: ut },
1528
1539
  pluginServices: Vn,
1529
- userLayers: p?.layers ?? []
1530
- }), rt(p?.http ?? {})), W = await it({
1531
- files: g,
1532
- store: w,
1540
+ userLayers: m?.layers ?? []
1541
+ }), it(m?.http ?? {})), W = await at({
1542
+ files: v,
1543
+ store: T,
1533
1544
  log: $,
1534
1545
  seedPolicy: "report",
1535
- seedPattern: ln,
1536
- loadSeedFiles: Kt,
1537
- startupPattern: rn,
1546
+ seedPattern: un,
1547
+ loadSeedFiles: qt,
1548
+ startupPattern: an,
1538
1549
  loadStartupFiles: a,
1539
1550
  runStartups: o,
1540
- emailPattern: C,
1541
- loadEmailFiles: mt,
1551
+ emailPattern: ze,
1552
+ loadEmailFiles: ht,
1542
1553
  registerEmailTemplates: Ti
1543
1554
  });
1544
1555
  (W.startupCount > 0 || W.emailCount > 0) && $.info("boot lifecycle", {
@@ -1546,30 +1557,30 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1546
1557
  emailTemplates: W.emailCount
1547
1558
  }), W.startups !== void 0 && Gr(async () => {
1548
1559
  await W.startups.stop();
1549
- }), ce({
1550
- demands: fe(pe),
1560
+ }), oe({
1561
+ demands: ue(de),
1551
1562
  isRegistered: (e) => xr(e) !== void 0
1552
1563
  });
1553
- let Xn = ft({
1554
- schedules: St({
1555
- schedules: _.schedules,
1564
+ let Xn = pt({
1565
+ schedules: Ct({
1566
+ schedules: y.schedules,
1556
1567
  seeds: W.seeds,
1557
- store: w,
1568
+ store: T,
1558
1569
  log: $.child("seeds")
1559
1570
  }),
1560
- workflows: _.workflows ?? [],
1571
+ workflows: y.workflows ?? [],
1561
1572
  log: $.child("workflow-schedules")
1562
- }), Qn = p?.scheduling ?? {}, G = Qn.trigger ?? "self", tr = /* @__PURE__ */ new Set([
1573
+ }), Qn = m?.scheduling ?? {}, G = Qn.trigger ?? "self", tr = /* @__PURE__ */ new Set([
1563
1574
  "postgres",
1564
1575
  "mysql",
1565
1576
  "mariadb",
1566
1577
  "mssql"
1567
- ]), nr = Qn.coordination ?? (tr.has(h) ? "advisoryLock" : "single"), K = nr === "cluster" && tr.has(h), rr = K ? "cluster" : nr === "advisoryLock" && tr.has(h) ? "advisoryLock" : "single";
1568
- nr === "cluster" && !K && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), nr === "advisoryLock" && !tr.has(h) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
1569
- let ir, ar = _.workflows.length > 0 || _.workflowWorkers.length > 0 || _.eventTriggers.length > 0 || (Oe?.outgoing.length ?? 0) > 0 || K, or;
1578
+ ]), nr = Qn.coordination ?? (tr.has(_) ? "advisoryLock" : "single"), K = nr === "cluster" && tr.has(_), rr = K ? "cluster" : nr === "advisoryLock" && tr.has(_) ? "advisoryLock" : "single";
1579
+ nr === "cluster" && !K && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), nr === "advisoryLock" && !tr.has(_) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
1580
+ let ir, ar = y.workflows.length > 0 || y.workflowWorkers.length > 0 || y.eventTriggers.length > 0 || (Ee?.outgoing.length ?? 0) > 0 || K, or;
1570
1581
  if (ar) {
1571
- if (h === "mssql") {
1572
- let e = await fn(process.cwd());
1582
+ if (_ === "mssql") {
1583
+ let e = await pn(process.cwd());
1573
1584
  e && $.warn(e);
1574
1585
  }
1575
1586
  let [{ WorkflowEngine: e }, { makeClusterCronLayer: t, workflowEngineLayer: n, resolveRunnerStorage: r, resolveFailoverTuning: i }] = await Promise.all([import("@effect/workflow"), import("@voltro/workflow/cluster")]), a = K ? Xn.filter((e) => (e.trigger ?? G) === "self").map((e) => t({
@@ -1579,10 +1590,10 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1579
1590
  await ir?.fireFromCluster(e.name);
1580
1591
  }
1581
1592
  })) : [];
1582
- or = h === "memory" ? e.layerMemory : await (async () => {
1583
- let e = await F(h), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
1593
+ or = _ === "memory" ? e.layerMemory : await (async () => {
1594
+ let e = await P(_), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
1584
1595
  return $.info(`workflow engine: cluster-${t}, dialect=${e.id}` + (t === "memory" ? " — single-process durable replay, no cross-pod shard handoff" + (e.id !== "sqlite" && e.id !== "turso" ? " (VOLTRO_WORKFLOW_RUNNER_STORAGE=memory: SqlRunnerStorage/cluster_runners + GET_LOCK skipped)" : "") : "")), n({
1585
- sqlClientLayer: e.makeSqlLayer(A()),
1596
+ sqlClientLayer: e.makeSqlLayer(k()),
1586
1597
  runnerStorage: t,
1587
1598
  dialectId: e.id,
1588
1599
  ...process.env.VOLTRO_WORKFLOW_RUNNER_PORT ? { runnerListenPort: Number(process.env.VOLTRO_WORKFLOW_RUNNER_PORT) } : {},
@@ -1591,58 +1602,58 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1591
1602
  });
1592
1603
  })();
1593
1604
  }
1594
- let lr = ue(j, _n()), ur = g.filter((e) => /\.subscribe\.tsx?$/.test(e)), dr = ur.length > 0 ? await xe(ur, $) : [], fr = g.filter((e) => /\.reaction\.tsx?$/.test(e)), q = fr.length > 0 ? await v(fr, $) : [], pr = g.filter((e) => sn.test(e)), J = pr.length > 0 ? await Ie(pr, $) : [], mr = g.filter((e) => /\.aggregate\.tsx?$/.test(e)), hr = mr.length > 0 ? await ne(mr, $) : [], Sr = _e();
1595
- if (hr.length > 0 && h !== "memory") try {
1596
- let e = (await F(h)).makeSqlLayer(A());
1597
- Sr = ct(e);
1605
+ let lr = ce(A, vn()), ur = v.filter((e) => /\.subscribe\.tsx?$/.test(e)), dr = ur.length > 0 ? await ye(ur, $) : [], fr = v.filter((e) => /\.reaction\.tsx?$/.test(e)), q = fr.length > 0 ? await b(fr, $) : [], pr = v.filter((e) => cn.test(e)), J = pr.length > 0 ? await Pe(pr, $) : [], mr = v.filter((e) => /\.aggregate\.tsx?$/.test(e)), hr = mr.length > 0 ? await te(mr, $) : [], Sr = he();
1606
+ if (hr.length > 0 && _ !== "memory") try {
1607
+ let e = (await P(_)).makeSqlLayer(k());
1608
+ Sr = lt(e);
1598
1609
  } catch (e) {
1599
1610
  $.warn("aggregate: SQL storage init failed — falling back to in-process", { err: String(e) });
1600
1611
  }
1601
- let Cr = h === "memory" ? ei : Tr(w, `aggregate@${process.pid}`, $), wr = g.filter((e) => cn.test(e)), Ar = wr.length > 0 ? await f(wr, $) : [], Mr = g.filter((e) => on.test(e)), Nr = Mr.length > 0 ? await Te(Mr, $) : [], Pr = g.filter((e) => an.test(e)), Fr = Pr.length > 0 ? await Mt(Pr, $) : [], Ir = [], Lr = [], Rr = g.filter((e) => $t.test(e));
1612
+ let Cr = _ === "memory" ? ei : Tr(T, `aggregate@${process.pid}`, $), wr = v.filter((e) => ln.test(e)), Ar = wr.length > 0 ? await f(wr, $) : [], Mr = v.filter((e) => sn.test(e)), Nr = Mr.length > 0 ? await Ce(Mr, $) : [], Pr = v.filter((e) => on.test(e)), Fr = Pr.length > 0 ? await Nt(Pr, $) : [], Ir = [], Lr = [], Rr = v.filter((e) => en.test(e));
1602
1613
  if (Rr.length > 0) {
1603
- let e = $.child("agent"), t = g.filter((e) => Zt.test(e));
1604
- t.length > 0 && await nn(t, e);
1605
- let n = await Yt(Rr, e);
1606
- for (let e of n.agents) for (let t of Ye(e)) (t.kind === "action" ? Ir : Lr).push({
1614
+ let e = $.child("agent"), t = v.filter((e) => Qt.test(e));
1615
+ t.length > 0 && await rn(t, e);
1616
+ let n = await Xt(Rr, e);
1617
+ for (let e of n.agents) for (let t of Je(e)) (t.kind === "action" ? Ir : Lr).push({
1607
1618
  file: t.file,
1608
1619
  descriptor: t.descriptor,
1609
1620
  executor: t.executor
1610
1621
  });
1611
1622
  n.agents.length > 0 && e.info("synthesized agent routes", { agents: n.agents.map((e) => e.descriptor.name) });
1612
1623
  }
1613
- l.mark("workflow");
1624
+ u.mark("workflow");
1614
1625
  let Y = () => {
1615
1626
  let e = X.workflowWriteActions();
1616
1627
  if (e === void 0) throw Error("workflow actions: this app registers no workflows");
1617
1628
  return e;
1618
1629
  }, zr = $n({
1619
- dialect: h,
1620
- ...A()
1621
- }), Vr = h === "memory" ? void 0 : (await F(h)).makeSqlLayer(A()), Hr = async () => Dt({
1630
+ dialect: _,
1631
+ ...k()
1632
+ }), Vr = _ === "memory" ? void 0 : (await P(_)).makeSqlLayer(k()), Hr = async () => Ot({
1622
1633
  sqlLayer: Vr,
1623
- declared: x,
1634
+ declared: C,
1624
1635
  log: $
1625
1636
  }), Ur = {
1626
1637
  kind: "api",
1627
1638
  meta: {
1628
- name: p?.name ?? "voltro-api",
1629
- voltroVersion: Tt,
1630
- port: m,
1639
+ name: m?.name ?? "voltro-api",
1640
+ voltroVersion: Et,
1641
+ port: g,
1631
1642
  mode: "start",
1632
- store: h,
1633
- cdc: ae ? "on" : "off",
1643
+ store: _,
1644
+ cdc: re ? "on" : "off",
1634
1645
  ...zr === void 0 ? {} : { databaseId: zr }
1635
1646
  },
1636
- rpc: Qe(_, u),
1637
- workflows: ze(_, u),
1647
+ rpc: $e(y, d),
1648
+ workflows: Le(y, d),
1638
1649
  migrations: Hr,
1639
1650
  events: () => X.eventsSnapshot(),
1640
1651
  agentTools: () => X.agentTools(),
1641
1652
  invariantChecks: () => ({
1642
1653
  mode: "serve",
1643
- accessGate: pe,
1644
- config: p,
1645
- serverOnlyLeaks: _.serverOnlyLeaks,
1654
+ accessGate: de,
1655
+ config: m,
1656
+ serverOnlyLeaks: y.serverOnlyLeaks,
1646
1657
  migrations: Hr
1647
1658
  }),
1648
1659
  members: () => X.membersSnapshot(),
@@ -1650,52 +1661,52 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1650
1661
  if (!ir) throw Error("scheduler not started — this app registers no self-triggered schedules (all schedules are trigger:'external', or there are none).");
1651
1662
  return { runId: await ir.fireNow(e, t) ?? null };
1652
1663
  },
1653
- inspectBackfillSchedule: re({
1664
+ inspectBackfillSchedule: ne({
1654
1665
  getHandle: () => ir,
1655
1666
  getSchedules: () => Xn
1656
1667
  }),
1657
- ...Oe === void 0 ? {} : { webhooks: () => ge({
1658
- store: w,
1659
- discoveredWebhooks: Oe
1668
+ ...Ee === void 0 ? {} : { webhooks: () => me({
1669
+ store: T,
1670
+ discoveredWebhooks: Ee
1660
1671
  }) },
1661
1672
  plugins: () => ({
1662
1673
  plugins: An.snapshot(),
1663
1674
  capturedAt: Date.now()
1664
1675
  }),
1665
- env: () => P(p?.name ?? Cn(u), {
1666
- ...p?.env !== void 0 && mi(p.env) ? { contract: p.env } : {},
1667
- plugins: p?.plugins ?? []
1676
+ env: () => N(m?.name ?? Cn(d), {
1677
+ ...m?.env !== void 0 && mi(m.env) ? { contract: m.env } : {},
1678
+ plugins: m?.plugins ?? []
1668
1679
  }),
1669
- dataCache: () => Ve({
1670
- stats: yt,
1671
- backendKind: vt
1680
+ dataCache: () => Be({
1681
+ stats: bt,
1682
+ backendKind: yt
1672
1683
  }),
1673
- subscriptions: () => Nt(() => z),
1674
- inspectTables: () => de(_.tables),
1675
- inspectRows: Se({
1676
- store: w,
1677
- tables: _.tables,
1684
+ subscriptions: () => Pt(() => z),
1685
+ inspectTables: () => le(y.tables),
1686
+ inspectRows: be({
1687
+ store: T,
1688
+ tables: y.tables,
1678
1689
  mask: !0
1679
1690
  }),
1680
1691
  metrics: (e) => X.rpcMetrics().snapshot(e),
1681
- cluster: () => It({
1682
- store: w,
1683
- dialect: h,
1692
+ cluster: () => Lt({
1693
+ store: T,
1694
+ dialect: _,
1684
1695
  useClusterCron: K,
1685
1696
  scheduleCoordChoice: nr
1686
1697
  }),
1687
- inspectSchedules: () => Ee({
1698
+ inspectSchedules: () => we({
1688
1699
  schedules: Xn,
1689
1700
  defaultTrigger: G,
1690
1701
  coordination: rr
1691
1702
  }),
1692
- inspectScheduleRuns: (e) => N(w, e),
1693
- ...d(w, {
1694
- controls: O(_.workflows ?? []),
1695
- active: (_.workflows?.length ?? 0) > 0,
1703
+ inspectScheduleRuns: (e) => M(T, e),
1704
+ ...ee(T, {
1705
+ controls: D(y.workflows ?? []),
1706
+ active: (y.workflows?.length ?? 0) > 0,
1696
1707
  cancellation: () => X.flowControlHealth()
1697
1708
  }),
1698
- webhookActions: Ce(() => X.webhooksService()),
1709
+ webhookActions: xe(() => X.webhooksService()),
1699
1710
  inspectStartWorkflow: (e) => Y().inspectStartWorkflow(e),
1700
1711
  inspectCancelWorkflowRun: (e) => Y().inspectCancelWorkflowRun(e),
1701
1712
  inspectSuspendWorkflowRun: (e) => Y().inspectSuspendWorkflowRun(e),
@@ -1704,13 +1715,13 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1704
1715
  inspectRetryWorkflowRun: (e) => Y().inspectRetryWorkflowRun(e),
1705
1716
  inspectSignalWorkflowRun: (e) => Y().inspectSignalWorkflowRun(e),
1706
1717
  inspectUpdateWorkflowRun: (e) => Y().inspectUpdateWorkflowRun(e),
1707
- inspectInferences: (e) => Xe({
1708
- store: w,
1709
- active: (_.workflows?.length ?? 0) > 0,
1718
+ inspectInferences: (e) => Ze({
1719
+ store: T,
1720
+ active: (y.workflows?.length ?? 0) > 0,
1710
1721
  dispatcher: () => X.inferenceHealth()
1711
1722
  }, e.limit === void 0 ? {} : { limit: e.limit }),
1712
- ..._t({
1713
- store: w,
1723
+ ...vt({
1724
+ store: T,
1714
1725
  cancelRun: async (e) => await X.runCanceller()?.(e) ?? !1,
1715
1726
  retryRun: async (e) => Y().inspectRetryWorkflowRun({ runId: e }),
1716
1727
  redriveRun: async (e) => X.redriveWorkflowRun({ runId: e }),
@@ -1718,22 +1729,22 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1718
1729
  }),
1719
1730
  inspectRedriveWorkflowRun: (e) => X.redriveWorkflowRun(e),
1720
1731
  inspectResumeWorkflowRunFromStep: (e) => X.resumeWorkflowRunFromStep(e)
1721
- }, Wr = (process.env.VOLTRO_TENANT_ISOLATION ?? p?.tenancy?.isolation) === "namespace", Kr = Wr && h !== "memory" ? await (async () => {
1722
- let e = await F(h);
1723
- return D({
1724
- tables: x,
1725
- sqlLayer: e.makeSqlLayer(A()),
1726
- dialect: h,
1732
+ }, Wr = (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace", Kr = Wr && _ !== "memory" ? await (async () => {
1733
+ let e = await P(_);
1734
+ return E({
1735
+ tables: C,
1736
+ sqlLayer: e.makeSqlLayer(k()),
1737
+ dialect: _,
1727
1738
  options: { retryFilter: e.retryFilter },
1728
1739
  log: {
1729
1740
  info: (e, t) => $.info(e, t),
1730
1741
  error: (e, t, n) => $.error(e, t ?? {}, n)
1731
1742
  }
1732
1743
  });
1733
- })() : void 0, qr = await ut({
1734
- input: p?.tenancy?.residency,
1744
+ })() : void 0, qr = await dt({
1745
+ input: m?.tenancy?.residency,
1735
1746
  namespaceIsolationOn: Wr,
1736
- makeStoreForUrl: (e, t) => nt(p, void 0, Ut(A(), t)),
1747
+ makeStoreForUrl: (e, t) => rt(m, void 0, Wt(k(), t)),
1737
1748
  log: {
1738
1749
  info: (e, t) => $.info(e, t),
1739
1750
  warn: (e, t) => $.warn(e, t)
@@ -1743,97 +1754,97 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1743
1754
  await qr.close();
1744
1755
  });
1745
1756
  let X = await ua({
1746
- bootTiming: l,
1757
+ bootTiming: u,
1747
1758
  broadcastNamespace: L,
1748
1759
  scheduling: (() => {
1749
- let e = mn;
1760
+ let e = hn;
1750
1761
  return {
1751
1762
  admissionDrainMs: e.admissionDrainMs,
1752
1763
  inferenceTickMs: e.inferenceTickMs,
1753
1764
  cancelSweepMs: e.cancelSweepMs,
1754
1765
  stalenessSweepMs: e.stalenessSweepMs,
1755
- disarmWhenIdle: $e({
1756
- changeScope: w.changeScope,
1766
+ disarmWhenIdle: et({
1767
+ changeScope: T.changeScope,
1757
1768
  broadcastAttached: Nn !== void 0
1758
1769
  })
1759
1770
  };
1760
1771
  })(),
1761
- ...p?.workflows?.staleness === void 0 ? {} : { workflowStaleness: p.workflows.staleness },
1762
- ...p?.workflows?.suspendSignalHintMs === void 0 ? {} : { workflowSuspendSignalHintMs: p.workflows.suspendSignalHintMs },
1763
- workflowRecording: M(p?.workflows?.recording),
1772
+ ...m?.workflows?.staleness === void 0 ? {} : { workflowStaleness: m.workflows.staleness },
1773
+ ...m?.workflows?.suspendSignalHintMs === void 0 ? {} : { workflowSuspendSignalHintMs: m.workflows.suspendSignalHintMs },
1774
+ workflowRecording: j(m?.workflows?.recording),
1764
1775
  membership: {
1765
1776
  ...On,
1766
- instanceId: Sn
1777
+ instanceId: I
1767
1778
  },
1768
1779
  security: {
1769
- defaultDeny: Ae(p),
1770
- ...ye(p)
1780
+ defaultDeny: Oe(m),
1781
+ ..._e(m)
1771
1782
  },
1772
- approvals: { defaultExpiryMs: Fe(p) },
1773
- ...p?.plugins === void 0 ? {} : { plugins: p.plugins },
1783
+ approvals: { defaultExpiryMs: Ne(m) },
1784
+ ...m?.plugins === void 0 ? {} : { plugins: m.plugins },
1774
1785
  ...Bn ? { idempotency: Bn } : {},
1775
1786
  restRoutes: zn,
1776
- appProcedures: pe,
1787
+ appProcedures: de,
1777
1788
  discovered: {
1778
- queries: [..._.queries, ...Lr],
1779
- mutations: _.mutations,
1780
- actions: [..._.actions, ...Ir],
1781
- streams: _.streams,
1782
- events: _.events,
1783
- workflows: _.workflows,
1784
- workflowWorkers: _.workflowWorkers,
1785
- eventTriggers: _.eventTriggers,
1789
+ queries: [...y.queries, ...Lr],
1790
+ mutations: y.mutations,
1791
+ actions: [...y.actions, ...Ir],
1792
+ streams: y.streams,
1793
+ events: y.events,
1794
+ workflows: y.workflows,
1795
+ workflowWorkers: y.workflowWorkers,
1796
+ eventTriggers: y.eventTriggers,
1786
1797
  schedules: Xn,
1787
1798
  subscribers: dr,
1788
1799
  outboxHandlers: J,
1789
- connections: _.connections,
1800
+ connections: y.connections,
1790
1801
  reactions: q,
1791
1802
  aggregates: hr,
1792
1803
  expectations: Ar,
1793
1804
  budgets: Nr,
1794
1805
  experiments: Fr,
1795
- ...Oe === void 0 ? {} : { webhooks: Oe }
1806
+ ...Ee === void 0 ? {} : { webhooks: Ee }
1796
1807
  },
1797
1808
  log: $,
1798
- analytics: Le.sink,
1809
+ analytics: Fe.sink,
1799
1810
  aggregateStorage: Sr,
1800
1811
  aggregateCoordinator: Cr,
1801
- store: w,
1802
- kv: Ct,
1803
- cache: ot,
1804
- snapshotCache: at,
1805
- ...p?.reactive === void 0 ? {} : { reactive: p.reactive },
1806
- schemaRegistry: Ue,
1807
- tenantScopedTables: _.tenantScopedTables,
1808
- softDeleteScopedTables: _.softDeleteScopedTables,
1809
- dataTransferSnapshot: Kn(x, h),
1810
- dataTransferDialect: h,
1812
+ store: T,
1813
+ kv: wt,
1814
+ cache: st,
1815
+ snapshotCache: ot,
1816
+ ...m?.reactive === void 0 ? {} : { reactive: m.reactive },
1817
+ schemaRegistry: He,
1818
+ tenantScopedTables: y.tenantScopedTables,
1819
+ softDeleteScopedTables: y.softDeleteScopedTables,
1820
+ dataTransferSnapshot: Kn(C, _),
1821
+ dataTransferDialect: _,
1811
1822
  ...Kr === void 0 ? {} : { ensureTenantProvisioned: Kr.ensure },
1812
1823
  ...qr === void 0 ? {} : { resolveResidentStore: qr.resolveStore },
1813
- tenantIsolation: (process.env.VOLTRO_TENANT_ISOLATION ?? p?.tenancy?.isolation) === "namespace" ? "namespace" : "shared-schema",
1824
+ tenantIsolation: (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace" ? "namespace" : "shared-schema",
1814
1825
  resolveSubject: (e, t) => Rn({
1815
1826
  headers: e,
1816
1827
  clientId: t
1817
1828
  }),
1818
- ...p?.auth === void 0 ? {} : { authority: p.auth },
1819
- ...p?.agents === void 0 ? {} : { agents: p.agents },
1820
- httpRoutes: j.flatMap((e) => e.httpRoutes ?? []),
1821
- getStore: () => Ge,
1829
+ ...m?.auth === void 0 ? {} : { authority: m.auth },
1830
+ ...m?.agents === void 0 ? {} : { agents: m.agents },
1831
+ httpRoutes: A.flatMap((e) => e.httpRoutes ?? []),
1832
+ getStore: () => We,
1822
1833
  ...Hn ? { baseLayer: Hn } : {},
1823
1834
  ...or === void 0 ? {} : { workflowEngineLayer: or },
1824
1835
  scheduleDefaultTrigger: G,
1825
1836
  scheduleCoordination: rr,
1826
1837
  scheduleArmSelf: !K,
1827
- dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : p?.dormancy ?? "always-on",
1838
+ dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : m?.dormancy ?? "always-on",
1828
1839
  scheduleReplicaId: process.env.HOSTNAME ?? `pid-${process.pid}`,
1829
1840
  ...lr === void 0 ? {} : { scheduleFireInterceptor: lr },
1830
1841
  onSchedulerReady: (e) => {
1831
1842
  ir = e;
1832
1843
  },
1833
- inspectRoute: { handle: async (e, t, n, r) => await te(e, Ur, t, {
1844
+ inspectRoute: { handle: async (e, t, n, r) => await p(e, Ur, t, {
1834
1845
  method: n,
1835
1846
  ...r === void 0 ? {} : { body: r }
1836
- }) || ((n === "GET" ? await dn(e, Ur, t, { method: n }) : null) ?? un(e, Ur, t, {
1847
+ }) || ((n === "GET" ? await fn(e, Ur, t, { method: n }) : null) ?? dn(e, Ur, t, {
1837
1848
  method: n,
1838
1849
  ...r === void 0 ? {} : { body: r }
1839
1850
  }) ?? {
@@ -1841,36 +1852,36 @@ var Fi = () => Math.max(500, Math.floor($r() * .6)), Ii = (e) => new Promise((t)
1841
1852
  contentType: "application/json",
1842
1853
  body: JSON.stringify({ error: "not an inspect route" })
1843
1854
  }) },
1844
- ...p?.name === void 0 ? {} : { appName: p.name },
1855
+ ...m?.name === void 0 ? {} : { appName: m.name },
1845
1856
  observability: jn,
1846
- port: m,
1847
- ...p?.transport?.wsPath ? { path: p.transport.wsPath } : {}
1857
+ port: g,
1858
+ ...m?.transport?.wsPath ? { path: m.transport.wsPath } : {}
1848
1859
  });
1849
- return z = X.dispatcher, we(Pt([
1850
- _.queries,
1851
- _.mutations,
1852
- _.actions,
1853
- _.streams
1860
+ return z = X.dispatcher, Se(Ft([
1861
+ y.queries,
1862
+ y.mutations,
1863
+ y.actions,
1864
+ y.streams
1854
1865
  ]), (e) => {
1855
1866
  $.warn(e);
1856
- }), $.info(`API listening on :${m}`, {
1857
- dialect: h,
1858
- queries: _.queries.length,
1859
- mutations: _.mutations.length,
1860
- actions: _.actions.length,
1861
- streams: _.streams.length,
1862
- workflows: _.workflows.length,
1863
- workflowWorkers: _.workflowWorkers.length,
1867
+ }), $.info(`API listening on :${g}`, {
1868
+ dialect: _,
1869
+ queries: y.queries.length,
1870
+ mutations: y.mutations.length,
1871
+ actions: y.actions.length,
1872
+ streams: y.streams.length,
1873
+ workflows: y.workflows.length,
1874
+ workflowWorkers: y.workflowWorkers.length,
1864
1875
  schedules: Xn.length,
1865
1876
  scheduleCoordination: rr
1866
- }), l.finish($), Gr(async () => {
1867
- for (let e of xn) e.stop();
1868
- At.stop();
1877
+ }), u.finish($), Gr(async () => {
1878
+ for (let e of Sn) e.stop();
1879
+ jt.stop();
1869
1880
  try {
1870
- await X.close(), xt(), Rt?.dispose(), await An.deactivate(), await Nn?.close(), await Je({
1871
- mirror: Et,
1881
+ await X.close(), St(), zt?.dispose(), await An.deactivate(), await Nn?.close(), await qe({
1882
+ mirror: Dt,
1872
1883
  log: $
1873
- }), await Le.dispose(), await w.close?.();
1884
+ }), await Fe.dispose(), await T.close?.();
1874
1885
  } catch (e) {
1875
1886
  console.error("serve: shutdown step failed, exiting anyway:", e);
1876
1887
  }