@voltro/cli 0.44.1 → 0.45.0

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