@voltro/cli 0.39.0 → 0.40.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 (106) hide show
  1. package/CHANGELOG.md +210 -0
  2. package/dist/agentsMd-Bu_XQgVf.js +2 -0
  3. package/dist/{agentsMd-7zI2h5l9.js → agentsMd-D6yD7IQv.js} +31 -14
  4. package/dist/apiBuild-BIyGkym8.js +2 -0
  5. package/dist/{apiBuild-DGalUk9v.js → apiBuild-C8xBEYbL.js} +2 -2
  6. package/dist/bin.js +1 -1
  7. package/dist/{build-CfF6t0UM.js → build-CkhFGnKA.js} +168 -165
  8. package/dist/{checkCommand-CBtynBKW.js → checkCommand-BcXJa2IS.js} +3 -3
  9. package/dist/{checkCommand-BV56Pcc1.js → checkCommand-QbHshOac.js} +1 -1
  10. package/dist/{cloudCmd-C42gaO8s.js → cloudCmd-F4YJeqM3.js} +1 -1
  11. package/dist/{codegenCommand-W7SDdiAQ.js → codegenCommand-DF2OJh3O.js} +2 -2
  12. package/dist/{codemodRunner-D-jTyvWo.js → codemodRunner-BcOvi4A2.js} +103 -0
  13. package/dist/{commands-BD9eBRY3.js → commands-7Z7-HOE3.js} +30 -30
  14. package/dist/{dashboardCommand-7qGylm0F.js → dashboardCommand-CUycH6dR.js} +5 -5
  15. package/dist/{dataCommand-C_F2DYxe.js → dataCommand-By78lscK.js} +1 -1
  16. package/dist/{dev-alhkKoEX.js → dev-D8JSKlBM.js} +1 -1
  17. package/dist/{dev-gqpnzVhI.js → dev-Dh1NuYx1.js} +1569 -1569
  18. package/dist/{doctorCommand-Bvs-BQrM.js → doctorCommand-C-8-Z9D6.js} +55 -42
  19. package/dist/doctorCommand-FhQ7EVYL.js +2 -0
  20. package/dist/{dormancyCommand-B-PPHc9Q.js → dormancyCommand-A79Odglm.js} +1 -1
  21. package/dist/{embeddingsCommand-OKY6XjUf.js → embeddingsCommand-CoiyHfkY.js} +1 -1
  22. package/dist/{envCommand-B1-Zm85H.js → envCommand-B6d0s-jZ.js} +8 -8
  23. package/dist/{evolveCommand-C4-NlFbd.js → evolveCommand-BC5a9lxX.js} +2 -2
  24. package/dist/frameworkTableAssembly-DgylYh9_.js +2 -0
  25. package/dist/index.js +1 -1
  26. package/dist/{infoCommand-CTo8Jnhq.js → infoCommand-ZqSVzJZ4.js} +1 -1
  27. package/dist/{metaCommands-DUYR--Ts.js → metaCommands-CfRLra0s.js} +1 -1
  28. package/dist/{projectScaffold-BEhhHjPr.js → projectScaffold-BIl97_E6.js} +1 -1
  29. package/dist/{projectScaffold-BvhLOrLq.js → projectScaffold-mIX_DpSe.js} +1 -1
  30. package/dist/{runtimeTrace-DzZOCd94.js → runtimeTrace-BslKJjDY.js} +1 -1
  31. package/dist/{sdkgen-C4roLErM.js → sdkgen-DQ8uEmmn.js} +1 -1
  32. package/dist/serveCommand-BmvEQCMS.js +2 -0
  33. package/dist/{serveCommand-B6TATyCj.js → serveCommand-Dqb9Ku1-.js} +657 -657
  34. package/dist/serveEntry.js +1 -1
  35. package/dist/{start-BNuTWdRd.js → start-BA7txHhY.js} +1 -1
  36. package/dist/{start-ft_KzFTd.js → start-dkNYKtgQ.js} +342 -318
  37. package/dist/startEntry.js +1 -1
  38. package/dist/updateCommand-BauSVxPp.js +2 -0
  39. package/dist/{updateCommand-CHBmCB17.js → updateCommand-eoGpZr3E.js} +1 -1
  40. package/dist/webDev-CBbKs4dZ.js +2 -0
  41. package/dist/{webDev-CTpSY-e_.js → webDev-bybjZA0o.js} +240 -186
  42. package/dist/{webhooksCommand-BVvOtZ1B.js → webhooksCommand-DubZWNOx.js} +1 -1
  43. package/package.json +29 -17
  44. package/templates/AGENTS.md +1 -1
  45. package/templates/agent-docs/_index.md +1 -1
  46. package/templates/agent-docs/authentication.md +13 -4
  47. package/templates/agent-docs/data.md +43 -0
  48. package/templates/agent-docs/routing.md +40 -0
  49. package/templates/agent-docs/whats-new.md +91 -157
  50. package/templates/apps/api-ai/package.json +7 -7
  51. package/templates/apps/api-auth/package.json +8 -8
  52. package/templates/apps/api-backend/package.json +7 -7
  53. package/templates/apps/api-backend-deactivation/package.json +7 -7
  54. package/templates/apps/api-backend-mail/package.json +8 -8
  55. package/templates/apps/api-backend-mariadb/package.json +9 -9
  56. package/templates/apps/api-backend-sqlite/package.json +8 -8
  57. package/templates/apps/api-backend-storage/package.json +8 -8
  58. package/templates/apps/api-cms/package.json +10 -10
  59. package/templates/apps/api-collab/package.json +8 -8
  60. package/templates/apps/api-data-advanced/package.json +8 -8
  61. package/templates/apps/api-durable/package.json +8 -8
  62. package/templates/apps/api-durable/startup/warm.startup.tsx +16 -2
  63. package/templates/apps/api-durable/tests/orders.place.test.ts +17 -4
  64. package/templates/apps/api-feature-flags/package.json +9 -9
  65. package/templates/apps/api-governance/package.json +8 -8
  66. package/templates/apps/api-kv/package.json +8 -8
  67. package/templates/apps/api-moderation/package.json +8 -8
  68. package/templates/apps/api-observability/package.json +8 -8
  69. package/templates/apps/api-ratelimit/package.json +8 -8
  70. package/templates/apps/api-rbac/package.json +8 -8
  71. package/templates/apps/api-rest/package.json +7 -7
  72. package/templates/apps/api-saas/package.json +11 -11
  73. package/templates/apps/api-saas-starter/package.json +10 -10
  74. package/templates/apps/api-search/package.json +8 -8
  75. package/templates/apps/api-status/package.json +8 -8
  76. package/templates/apps/api-versioning/package.json +8 -8
  77. package/templates/apps/api-webhooks/package.json +9 -9
  78. package/templates/apps/changelog/package.json +6 -6
  79. package/templates/apps/changelog/src/pages/[slug]/page.test.tsx +8 -1
  80. package/templates/apps/edge-functions/package.json +2 -2
  81. package/templates/apps/frontend-admin/package.json +8 -8
  82. package/templates/apps/frontend-app/package.json +9 -9
  83. package/templates/apps/frontend-auth/package.json +8 -8
  84. package/templates/apps/frontend-blank/package.json +7 -7
  85. package/templates/apps/frontend-cms/package.json +9 -9
  86. package/templates/apps/frontend-collab/package.json +10 -10
  87. package/templates/apps/frontend-contact/package.json +7 -7
  88. package/templates/apps/frontend-dashboard/package.json +7 -7
  89. package/templates/apps/frontend-docs/package.json +7 -7
  90. package/templates/apps/frontend-i18n/package.json +6 -6
  91. package/templates/apps/frontend-landing/package.json +7 -7
  92. package/templates/apps/frontend-portal/package.json +8 -8
  93. package/templates/apps/frontend-saas/package.json +8 -8
  94. package/templates/apps/frontend-spa/package.json +7 -7
  95. package/templates/apps/frontend-ssr/package.json +7 -7
  96. package/templates/apps/frontend-ssr-api/package.json +8 -8
  97. package/templates/apps/frontend-static-blog/package.json +6 -6
  98. package/templates/apps/frontend-status/package.json +8 -8
  99. package/templates/apps/mobile-app/package.json +4 -4
  100. package/dist/agentsMd-BFCXh2gl.js +0 -2
  101. package/dist/apiBuild-2GvK8CUB.js +0 -2
  102. package/dist/doctorCommand-CVXfRrng.js +0 -2
  103. package/dist/frameworkTableAssembly-YyVe32Cb.js +0 -2
  104. package/dist/serveCommand-CNR0gI9V.js +0 -2
  105. package/dist/updateCommand-6FMU2klq.js +0 -2
  106. package/dist/webDev-id3I5PvG.js +0 -2
@@ -3,44 +3,44 @@ 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 f, Ct as p, D as ee, Dt as te, E as ne, Et as m, F as re, Ft as h, G as g, Gt as ie, H as ae, I as oe, It as se, J as ce, Jt as _, K as le, Kt as v, L as ue, Lt as de, M as fe, Mt as y, N as pe, Nt as me, O as he, Ot as ge, P as _e, Pt as ve, Q as ye, Qt as be, R as xe, Rt as b, S as Se, Sn as Ce, St as we, T as Te, Tt as Ee, U as De, Ut as x, V as Oe, Vt as ke, W as Ae, Wt as je, X as Me, Xt as Ne, Y as Pe, Yt as Fe, Z as Ie, Zt as S, _ as Le, _n as Re, _t as C, an as ze, at as Be, b as Ve, bn as He, bt as Ue, c as We, cn as w, ct as Ge, dn as Ke, dt as qe, en as Je, et as Ye, f as Xe, fn as Ze, ft as Qe, g as $e, gn as et, gt as tt, h as nt, ht as rt, i as it, in as at, it as ot, j as st, jt as ct, k as lt, kt as ut, ln as T, lt as dt, m as ft, mn as pt, mt as E, nn as D, nt as mt, o as O, on as ht, ot as gt, p as _t, pn as vt, pt as yt, q as bt, qt as xt, r as St, rn as Ct, rt as wt, sn as Tt, st as Et, t as Dt, tn as Ot, tt as kt, u as At, un as jt, ut as Mt, v as Nt, vn as k, vt as A, w as j, wt as Pt, x as Ft, xn as It, xt as Lt, y as Rt, yn as zt, yt as Bt, zt as Vt } from "./dev-gqpnzVhI.js";
7
- import { n as Ht } from "./cliArgs-D4p8n7EE.js";
8
- import { r as Ut } from "./appPort-B_HpJ_ck.js";
9
- import { at as Wt, st as M } from "./webDev-CTpSY-e_.js";
10
- import { r as N } from "./dialectDriver-czCHYpeH.js";
11
- import { i as Gt, n as Kt } from "./connectionConfig-Bk9IC7D0.js";
12
- import { c as qt, n as Jt, o as Yt } from "./seedRunner-IdHEprqf.js";
13
- import { C as P, S as Xt, _ as Zt, d as Qt, g as $t, l as en, m as tn, r as nn, u as rn, v as an } from "./frameworkTableAssembly-oMPBKqlE.js";
14
- import { S as on, c as sn, n as cn, p as ln, s as un, x as dn } from "./fileConventions-Cof68_BL.js";
15
- import { h as fn, o as pn } from "./inspect-B7U7Cl_Z.js";
16
- import { n as mn } from "./mssqlClusterPatch-_4cE_nun.js";
17
- import { i as hn, n as gn, r as _n, t as vn } from "./webhookDiscovery-CphsQe59.js";
18
- import { t as yn } from "./inspectMetrics-CfdKLh6t.js";
19
- import { r as bn, u as xn } from "./apiBuild-DGalUk9v.js";
20
- import { t as Sn } from "./bootTiming-BdyP9nYw.js";
21
- import { t as Cn } from "./dataProfile-dW-PsfLB.js";
22
- import { basename as wn, join as Tn } from "node:path";
23
- import { existsSync as En } from "node:fs";
24
- import { pathToFileURL as Dn } from "node:url";
25
- import { createLogger as F } from "@voltro/logger";
26
- import { AuthMiddleware as On, ConnectionInfoMiddleware as kn, actionToRpc as I, anonymousSubject as An, isWireReachable as jn, mutationToRpc as L, queryToRpc as R, streamToRpc as Mn, workflowCancelDescriptor as Nn, workflowDomainEventsQueryDescriptor as Pn, workflowEventDeliveriesQueryDescriptor as z, workflowResumeDescriptor as Fn, workflowRunEventsQueryDescriptor as B, workflowRunQueryDescriptor as V, workflowRunStepsQueryDescriptor as H, workflowRunsQueryDescriptor as In, workflowSignalDescriptor as Ln, workflowUpdateDescriptor as Rn } from "@voltro/protocol";
27
- import { Cause as zn, Effect as U, Layer as W, ManagedRuntime as Bn } from "effect";
6
+ import { $ as s, $t as c, A as l, At as u, B as d, C as f, Ct as p, D as ee, Dt as te, E as ne, Et as m, F as re, Ft as h, G as g, Gt as ie, H as _, 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 E, ft as Xe, g as Ze, gn as Qe, gt as $e, h as et, ht as tt, i as nt, in as rt, it, j as at, jt as ot, k as st, kt as ct, ln as D, lt, m as ut, mn as dt, mt as O, nn as k, nt as ft, o as A, on as pt, ot as mt, p as ht, pn as gt, pt as _t, q as vt, qt as yt, r as bt, rn as xt, rt as St, sn as Ct, st as wt, t as Tt, tn as Et, tt as Dt, u as Ot, un as kt, ut as At, v as jt, vn as j, vt as M, w as N, wt as Mt, x as Nt, xn as Pt, xt as Ft, y as It, yn as Lt, yt as Rt, zt } from "./dev-Dh1NuYx1.js";
7
+ import { n as Bt } from "./cliArgs-D4p8n7EE.js";
8
+ import { r as Vt } from "./appPort-B_HpJ_ck.js";
9
+ import { dt as Ht, lt as P } from "./webDev-bybjZA0o.js";
10
+ import { r as F } from "./dialectDriver-czCHYpeH.js";
11
+ import { i as Ut, n as Wt } from "./connectionConfig-Bk9IC7D0.js";
12
+ import { c as Gt, n as Kt, o as qt } from "./seedRunner-IdHEprqf.js";
13
+ import { C as I, S as Jt, _ as Yt, d as Xt, g as Zt, l as Qt, m as $t, r as en, u as tn, v as nn } from "./frameworkTableAssembly-oMPBKqlE.js";
14
+ import { S as rn, c as an, n as on, p as sn, s as cn, x as ln } from "./fileConventions-Cof68_BL.js";
15
+ import { h as un, o as dn } from "./inspect-B7U7Cl_Z.js";
16
+ import { n as fn } from "./mssqlClusterPatch-_4cE_nun.js";
17
+ import { i as pn, n as mn, r as hn, t as gn } from "./webhookDiscovery-CphsQe59.js";
18
+ import { t as _n } from "./inspectMetrics-CfdKLh6t.js";
19
+ import { r as vn, u as yn } from "./apiBuild-C8xBEYbL.js";
20
+ import { t as bn } from "./bootTiming-BdyP9nYw.js";
21
+ import { t as xn } from "./dataProfile-dW-PsfLB.js";
22
+ import { basename as Sn, join as Cn } from "node:path";
23
+ import { existsSync as wn } from "node:fs";
24
+ import { pathToFileURL as Tn } from "node:url";
25
+ import { createLogger as L } from "@voltro/logger";
26
+ import { AuthMiddleware as En, ConnectionInfoMiddleware as Dn, actionToRpc as R, anonymousSubject as On, isWireReachable as kn, mutationToRpc as z, queryToRpc as B, streamToRpc as An, wireErrorUnion as jn, workflowCancelDescriptor as Mn, workflowDomainEventsQueryDescriptor as V, workflowEventDeliveriesQueryDescriptor as Nn, workflowResumeDescriptor as Pn, workflowRunEventsQueryDescriptor as H, workflowRunQueryDescriptor as U, workflowRunStepsQueryDescriptor as Fn, workflowRunsQueryDescriptor as In, workflowSignalDescriptor as Ln, workflowUpdateDescriptor as Rn } from "@voltro/protocol";
27
+ import { Cause as zn, Effect as W, Layer as G, ManagedRuntime as Bn } from "effect";
28
28
  import { SqlClient as Vn } from "@effect/sql";
29
29
  import { declaredSnapshot as Hn, describeOutcome as Un, pendingFileMigrationIds as Wn, runPlannedMigrations as Gn } from "@voltro/database/sql";
30
30
  import { RpcGroup as Kn } from "@effect/rpc";
31
- import { allRegisteredTables as qn, and as Jn, connectionIdentity as Yn, ensureTableRegistered as Xn, eq as G, or as K } from "@voltro/database";
32
- import { AggregateRegistry as Zn, CostRegistry as Qn, DORMANCY_WAKEUP_TENANT as $n, Dispatcher as er, ExpectationRegistry as tr, ExperimentRegistry as q, apiKeyManagementRoutes as nr, attachAnalyticsMirror as rr, attachExpectations as ir, attachExperiments as ar, attachFinops as or, awaitServerListening as sr, bindMutation as J, bindStream as cr, bindSubscription as Y, buildTracingLayer as lr, cancelWakeup as ur, compileCron as dr, dataStoreApiKeyStore as fr, formatServerOnlyLeaks as pr, formatUnresolvedSources as mr, frameworkApiKeyStrategy as hr, getResourcePolicy as gr, installPolicyGuardResolver as _r, loadResourceTuples as vr, makeActionRunner as yr, makeAdvisoryLockCoordinator as br, makeApiKeyService as xr, makeApiKeyUsageBuffer as Sr, makeApiKeyUsageFlusher as Cr, makeAsyncKv as wr, makeAuthMiddlewareLayers as Tr, makeCoordinatedScheduler as Er, makeEffectStoreLayer as Dr, makeLazyWorkflowFacade as Or, makeMutationOutputCodec as kr, makeMutationRunner as Ar, makeOneShotQueryRunner as jr, makeQueryDescriptorProducer as Mr, makeQueryFinalizer as Nr, makeQueryReauthorizer as Pr, makeQuerySubscriber as Fr, makeSchemaRegistry as Ir, makeWorkflowFacade as Lr, makeWorkflowFacadeWithCallerContext as Rr, makeWorkflowLayers as X, noopKv as zr, onProcessShutdown as Br, recordSubscriptionDelivery as Vr, recordWorkflowRun as Hr, registerWakeup as Ur, resolveSecretsBackend as Wr, runProvidedEffect as Gr, setSecretsBackend as Kr, setSystemStoreHandle as qr, setTupleSource as Jr, shutdownGraceMsFromEnv as Z, singleCoordinator as Yr, startRpcServer as Xr, startScheduler as Zr, stripForbiddenForWire as Qr, undoCaptureEnabled as $r, unresolvedSources as ei, withScopedRequest as ti, workflowToRpc as ni, wrapStoreWithBootCodec as ri } from "@voltro/runtime";
33
- import { appStorageProvider as ii, fromNodeReadable as ai, getObjectStream as oi, putObjectStream as si, toNodeReadable as ci } from "@voltro/plugin-storage";
34
- import { isEnvContract as li } from "@voltro/env";
35
- import { assertProductionSessionSecret as ui } from "@voltro/protocol/session";
36
- import { createHash as di, timingSafeEqual as fi } from "node:crypto";
37
- import { buildDeliverWebhookExecute as pi, buildWebhooksService as mi, defaultIncomingPath as hi, deliverWebhookWorkflow as gi, makeDeferredEmitHandler as _i, mountIncomingWebhook as vi } from "@voltro/plugin-webhooks";
38
- import { getAuthSessionStrategy as yi } from "@voltro/plugin-auth";
39
- import { registerEmailTemplates as bi } from "@voltro/plugin-mail";
40
- import { channelFor as xi, getBroadcastPlugin as Si } from "@voltro/plugin-broadcast";
41
- import { packBundle as Ci, runExport as wi, runImport as Ti, storageBlobSink as Ei, storageRefsBlobSource as Di, unpackBundle as Oi, unpackBundleToDir as ki } from "@voltro/data-transfer";
31
+ import { allRegisteredTables as qn, and as Jn, connectionIdentity as Yn, ensureTableRegistered as Xn, eq as K, or as Zn } from "@voltro/database";
32
+ import { AggregateRegistry as Qn, CostRegistry as $n, DORMANCY_WAKEUP_TENANT as er, Dispatcher as tr, ExpectationRegistry as q, ExperimentRegistry as nr, apiKeyManagementRoutes as rr, attachAnalyticsMirror as ir, attachExpectations as ar, attachExperiments as or, attachFinops as sr, awaitServerListening as cr, bindMutation as J, bindStream as lr, bindSubscription as Y, buildTracingLayer as ur, cancelWakeup as dr, compileCron as fr, dataStoreApiKeyStore as pr, formatServerOnlyLeaks as mr, formatUnresolvedSources as hr, frameworkApiKeyStrategy as gr, getResourcePolicy as _r, installPolicyGuardResolver as vr, loadResourceTuples as yr, makeActionRunner as br, makeAdvisoryLockCoordinator as xr, makeApiKeyService as Sr, makeApiKeyUsageBuffer as Cr, makeApiKeyUsageFlusher as wr, makeAsyncKv as Tr, makeAuthMiddlewareLayers as Er, makeCoordinatedScheduler as Dr, makeEffectStoreLayer as Or, makeLazyWorkflowFacade as kr, makeMutationOutputCodec as Ar, makeMutationRunner as jr, makeOneShotQueryRunner as Mr, makeQueryDescriptorProducer as Nr, makeQueryFinalizer as Pr, makeQueryReauthorizer as Fr, makeQuerySubscriber as Ir, makeSchemaRegistry as Lr, makeWorkflowFacade as Rr, makeWorkflowFacadeWithCallerContext as X, makeWorkflowLayers as zr, noopKv as Br, onProcessShutdown as Vr, recordSubscriptionDelivery as Hr, recordWorkflowRun as Ur, registerDefaultTupleSource as Wr, registerWakeup as Gr, resolveSecretsBackend as Kr, runProvidedEffect as qr, setSecretsBackend as Jr, setSystemStoreHandle as Z, shutdownGraceMsFromEnv as Yr, singleCoordinator as Xr, startRpcServer as Zr, startScheduler as Qr, stripForbiddenForWire as $r, undoCaptureEnabled as ei, unresolvedSources as ti, withScopedRequest as ni, workflowToRpc as ri, wrapStoreWithBootCodec as ii } from "@voltro/runtime";
33
+ import { appStorageProvider as ai, fromNodeReadable as oi, getObjectStream as si, putObjectStream as ci, toNodeReadable as li } from "@voltro/plugin-storage";
34
+ import { isEnvContract as ui } from "@voltro/env";
35
+ import { assertProductionSessionSecret as di } from "@voltro/protocol/session";
36
+ import { createHash as fi, timingSafeEqual as pi } from "node:crypto";
37
+ import { buildDeliverWebhookExecute as mi, buildWebhooksService as hi, defaultIncomingPath as gi, deliverWebhookWorkflow as _i, makeDeferredEmitHandler as vi, mountIncomingWebhook as yi } from "@voltro/plugin-webhooks";
38
+ import { getAuthSessionStrategy as bi } from "@voltro/plugin-auth";
39
+ import { registerEmailTemplates as xi } from "@voltro/plugin-mail";
40
+ import { channelFor as Si, getBroadcastPlugin as Ci } from "@voltro/plugin-broadcast";
41
+ import { packBundle as wi, runExport as Ti, runImport as Ei, storageBlobSink as Di, storageRefsBlobSource as Oi, unpackBundle as ki, unpackBundleToDir as Ai } from "@voltro/data-transfer";
42
42
  //#region src/serveDrain.ts
43
- var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t) => setTimeout(t, e)), Mi = (e) => {
43
+ var ji = () => Math.max(500, Math.floor(Yr() * .6)), Mi = (e) => new Promise((t) => setTimeout(t, e)), Ni = (e) => {
44
44
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = 0;
45
45
  e.on("connection", (e) => {
46
46
  t.add(e), e.once("close", () => {
@@ -54,14 +54,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
54
54
  });
55
55
  });
56
56
  let i, a = async (t = {}) => {
57
- let n = t.budgetMs ?? Ai();
57
+ let n = t.budgetMs ?? ji();
58
58
  i ??= new Promise((t) => {
59
59
  e.close(() => {
60
60
  t();
61
61
  });
62
62
  }), e.closeIdleConnections();
63
63
  let a = Date.now() + n;
64
- for (; r > 0 && Date.now() < a;) await ji(25), e.closeIdleConnections();
64
+ for (; r > 0 && Date.now() < a;) await Mi(25), e.closeIdleConnections();
65
65
  e.closeIdleConnections();
66
66
  }, o = async () => {
67
67
  i ??= new Promise((t) => {
@@ -78,7 +78,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
78
78
  ]));
79
79
  } catch {}
80
80
  else e.destroy();
81
- for (let e = 0; t.size > 0 && e < 250; e += 25) await ji(25);
81
+ for (let e = 0; t.size > 0 && e < 250; e += 25) await Mi(25);
82
82
  for (let e of t) e.destroy();
83
83
  await i;
84
84
  };
@@ -90,25 +90,25 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
90
90
  await a(e), await o();
91
91
  }
92
92
  };
93
- }, Ni = "/_voltro/admin/import", Pi = "/_voltro/admin/export", Q = (e, t) => ({
93
+ }, Pi = "/_voltro/admin/import", Fi = "/_voltro/admin/export", Q = (e, t) => ({
94
94
  status: e,
95
95
  contentType: "application/json; charset=utf-8",
96
96
  body: JSON.stringify(t)
97
- }), Fi = (e) => {
97
+ }), Ii = (e) => {
98
98
  let t = e.authorization ?? e.Authorization, n = t ? /^Bearer\s+(.+)$/i.exec(t) : null;
99
99
  return n ? n[1] : null;
100
- }, Ii = (e, t) => fi(di("sha256").update(e).digest(), di("sha256").update(t).digest()), Li = (e, t) => {
100
+ }, Li = (e, t) => pi(fi("sha256").update(e).digest(), fi("sha256").update(t).digest()), Ri = (e, t) => {
101
101
  if (e.method.toUpperCase() !== "POST") return Q(405, { error: "method not allowed" });
102
102
  if (!t || t.length < 16) return Q(503, { error: "data transfer misconfigured (no/weak secret)" });
103
- let n = Fi(e.headers);
104
- return !n || !Ii(n, t) ? Q(401, { error: "unauthorized" }) : null;
105
- }, Ri = F({ scope: "voltro:admin-import" }), zi = "VBUNDLE2", Bi = async function* (e) {
103
+ let n = Ii(e.headers);
104
+ return !n || !Li(n, t) ? Q(401, { error: "unauthorized" }) : null;
105
+ }, zi = L({ scope: "voltro:admin-import" }), Bi = "VBUNDLE2", Vi = async function* (e) {
106
106
  yield e;
107
- }, Vi = (e) => async (t) => {
108
- let n = Li(t, e.secret);
107
+ }, Hi = (e) => async (t) => {
108
+ let n = Ri(t, e.secret);
109
109
  if (n) return n;
110
- let r = t.headers["x-import-mode"], i = t.headers["x-import-on-conflict"], a = t.headers["x-import-atomic"] === "1" || t.headers["x-import-atomic"] === "true", o = t.headers["x-import-force"] === "1" || t.headers["x-import-force"] === "true", s = t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === zi, c, l;
111
- if (s) c = Bi(t.rawBody), l = "upload";
110
+ let r = t.headers["x-import-mode"], i = t.headers["x-import-on-conflict"], a = t.headers["x-import-atomic"] === "1" || t.headers["x-import-atomic"] === "true", o = t.headers["x-import-force"] === "1" || t.headers["x-import-force"] === "true", s = t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === Bi, c, l;
111
+ if (s) c = Vi(t.rawBody), l = "upload";
112
112
  else {
113
113
  let n;
114
114
  try {
@@ -122,11 +122,11 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
122
122
  }
123
123
  let u = await import("node:os"), d = await import("node:fs/promises"), f = await import("node:path"), p = await d.mkdtemp(f.join(u.tmpdir(), "voltro-admin-import-"));
124
124
  try {
125
- e.assetSink ? await Oi(c, {
125
+ e.assetSink ? await ki(c, {
126
126
  dir: p,
127
127
  blobs: e.assetSink
128
- }) : await ki(c, p);
129
- let t = await U.runPromiseExit(Ti({
128
+ }) : await Ai(c, p);
129
+ let t = await W.runPromiseExit(Ei({
130
130
  store: e.store,
131
131
  bundleDir: p,
132
132
  ...r ? { mode: r } : {},
@@ -134,14 +134,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
134
134
  ...a ? { atomic: a } : {},
135
135
  ...e.snapshot ? { targetSnapshot: e.snapshot } : {},
136
136
  force: o,
137
- onWarn: (e) => Ri.warn("admin.import", { message: e }),
137
+ onWarn: (e) => zi.warn("admin.import", { message: e }),
138
138
  ...e.assetSink ? { assetsAlreadyRestored: !0 } : {}
139
139
  }));
140
140
  if (t._tag === "Failure") {
141
141
  let e = t.cause._tag === "Fail" ? t.cause.error : void 0;
142
142
  if (e && e._tag === "SchemaDriftError") {
143
143
  let t = e;
144
- return Ri.warn("admin.import refused (schema drift)", {
144
+ return zi.warn("admin.import refused (schema drift)", {
145
145
  transport: l,
146
146
  bundle: t.bundleFingerprint.slice(0, 16),
147
147
  target: t.targetFingerprint.slice(0, 16)
@@ -156,7 +156,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
156
156
  throw Error(String(e?.message ?? e ?? "import failed"));
157
157
  }
158
158
  let n = t.value, s = n.tables.reduce((e, t) => e + t.rowCount, 0);
159
- return Ri.info("admin.import", {
159
+ return zi.info("admin.import", {
160
160
  transport: l,
161
161
  tables: n.tables.length,
162
162
  rows: s,
@@ -168,7 +168,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
168
168
  transport: l
169
169
  });
170
170
  } catch (e) {
171
- return Ri.warn("admin.import failed", {
171
+ return zi.warn("admin.import failed", {
172
172
  transport: l,
173
173
  error: e?.message ?? String(e)
174
174
  }), Q(500, {
@@ -181,18 +181,18 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
181
181
  force: !0
182
182
  });
183
183
  }
184
- }, Hi = F({ scope: "voltro:admin-export" }), Ui = async (e) => {
184
+ }, Ui = L({ scope: "voltro:admin-export" }), Wi = async (e) => {
185
185
  let t = [];
186
186
  for await (let n of e) t.push(Buffer.from(n));
187
187
  return new Uint8Array(Buffer.concat(t));
188
- }, Wi = (e) => typeof e.tenant == "string" && e.tenant ? {
188
+ }, Gi = (e) => typeof e.tenant == "string" && e.tenant ? {
189
189
  kind: "tenant",
190
190
  tenantId: e.tenant
191
191
  } : Array.isArray(e.tables) && e.tables.length ? {
192
192
  kind: "tables",
193
193
  tables: e.tables.filter((e) => typeof e == "string")
194
- } : { kind: "all" }, Gi = (e) => async (t) => {
195
- let n = Li(t, e.secret);
194
+ } : { kind: "all" }, Ki = (e) => async (t) => {
195
+ let n = Ri(t, e.secret);
196
196
  if (n) return n;
197
197
  let r;
198
198
  try {
@@ -212,9 +212,9 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
212
212
  });
213
213
  }
214
214
  }
215
- let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? Wi(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"), f = await import("node:path"), p = await d.mkdtemp(f.join(u.tmpdir(), "voltro-admin-export-"));
215
+ let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? Gi(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"), f = await import("node:path"), p = await d.mkdtemp(f.join(u.tmpdir(), "voltro-admin-export-"));
216
216
  try {
217
- let t = await U.runPromise(wi({
217
+ let t = await W.runPromise(Ti({
218
218
  store: e.store,
219
219
  snapshot: e.snapshot,
220
220
  dialect: e.dialect,
@@ -230,10 +230,10 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
230
230
  if (c) {
231
231
  if (!e.putArchive) return Q(501, { error: "storage transport not configured on this instance" });
232
232
  let i = r.bundleKey;
233
- return await e.putArchive(i, () => Ci({
233
+ return await e.putArchive(i, () => wi({
234
234
  dir: p,
235
235
  ...l
236
- })), Hi.info("admin.export", {
236
+ })), Ui.info("admin.export", {
237
237
  transport: "storage",
238
238
  tables: t.tables.length,
239
239
  rows: n,
@@ -247,11 +247,11 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
247
247
  transport: "storage"
248
248
  });
249
249
  }
250
- let d = await Ui(Ci({
250
+ let d = await Wi(wi({
251
251
  dir: p,
252
252
  ...l
253
253
  }));
254
- return Hi.info("admin.export", {
254
+ return Ui.info("admin.export", {
255
255
  transport: "download",
256
256
  tables: t.tables.length,
257
257
  rows: n,
@@ -268,7 +268,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
268
268
  }
269
269
  };
270
270
  } catch (e) {
271
- return Hi.warn("admin.export failed", { error: e?.message ?? String(e) }), Q(500, {
271
+ return Ui.warn("admin.export failed", { error: e?.message ?? String(e) }), Q(500, {
272
272
  error: "export failed",
273
273
  message: e?.message ?? String(e)
274
274
  });
@@ -278,8 +278,8 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
278
278
  force: !0
279
279
  });
280
280
  }
281
- }, Ki = (e, t, n = {}) => (async function* () {
282
- let r = await U.runPromise(oi(e, t).pipe(U.timeout(n.openTimeout ?? "30 seconds"))), i = await ci(r.stream), a = n.stallMs ?? 12e4, o, s = () => {
281
+ }, qi = (e, t, n = {}) => (async function* () {
282
+ let r = await W.runPromise(si(e, t).pipe(W.timeout(n.openTimeout ?? "30 seconds"))), i = await li(r.stream), a = n.stallMs ?? 12e4, o, s = () => {
283
283
  o && clearTimeout(o), o = setTimeout(() => i.destroy(/* @__PURE__ */ Error(`storage read stalled for ${a}ms reading '${t}'`)), a);
284
284
  };
285
285
  try {
@@ -288,7 +288,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
288
288
  } finally {
289
289
  o && clearTimeout(o), i.destroy();
290
290
  }
291
- })(), qi = {
291
+ })(), Ji = {
292
292
  get: async () => void 0,
293
293
  set: async () => {},
294
294
  setWithTags: async () => {},
@@ -297,64 +297,64 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
297
297
  clear: async () => {},
298
298
  invalidateTag: async () => 0,
299
299
  wrap: async (e, t, n) => n()
300
- }, Ji = async (e) => {
301
- Vt(e.appProcedures ?? e.discovered, {
300
+ }, Yi = async (e) => {
301
+ zt(e.appProcedures ?? e.discovered, {
302
302
  defaultDeny: e.security?.defaultDeny ?? !0,
303
303
  commandHint: "`voltro serve`"
304
- }), qr({
304
+ }), Z({
305
305
  dataStore: e.store,
306
306
  schemaRegistry: e.schemaRegistry
307
307
  });
308
- let t = (e.discovered.budgets?.length ?? 0) > 0, n, r = new er({
308
+ let t = (e.discovered.budgets?.length ?? 0) > 0, n, r = new tr({
309
309
  store: e.store,
310
310
  ...e.snapshotCache ? { cache: e.snapshotCache } : {},
311
311
  ...e.reactive === void 0 ? {} : { reactive: e.reactive },
312
312
  ...t ? { recordCost: (e) => n?.record(e) } : {},
313
- recordDelivery: (e) => Vr({
313
+ recordDelivery: (e) => Hr({
314
314
  label: e.label,
315
315
  kind: e.kind,
316
316
  durationMs: e.durationMs,
317
317
  rowCount: e.rowCount
318
318
  })
319
- }), i = e.cache ?? qi, a = e.kv ?? zr, o, c = () => void 0, l, f, p, ee, te, ne, se, ce = ie({
319
+ }), i = e.cache ?? Ji, a = e.kv ?? Br, o, c = () => void 0, l, f, p, ee, te, ne, oe, se = ie({
320
320
  store: e.store,
321
321
  warn: (e, t) => {
322
322
  process.stderr.write(`[workflow] ${e} ${JSON.stringify(t)}\n`);
323
323
  }
324
- }), le = ce.remember, ue = ce.resolve, de = v({
324
+ }), ce = se.remember, le = se.resolve, ue = y({
325
325
  authority: e.authority,
326
326
  getStore: () => e.store
327
- }), y = (e.discovered.workflows?.length ?? 0) > 0 ? Or(() => o) : void 0, me = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, he = me || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", ge = e.tenantIsolation === "namespace", _e = (e.log ?? F({ scope: "voltro:serve" })).child("webhooks"), be, xe, b = e.discovered.webhooks;
328
- if (b && b.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
327
+ }), b = (e.discovered.workflows?.length ?? 0) > 0 ? kr(() => 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;
328
+ if (x && x.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
329
329
  e.workflowEngineLayer;
330
- let t = w({
330
+ let t = T({
331
331
  store: e.store,
332
332
  schemaRegistry: e.schemaRegistry,
333
333
  cache: i,
334
334
  kv: a
335
- }), n = b.outgoing.map((e) => e.descriptor);
336
- xe = gi.toLayer(pi(t, { events: n })), be = mi(t, async (e) => {
335
+ }), n = x.outgoing.map((e) => e.descriptor);
336
+ be = _i.toLayer(mi(t, { events: n })), ye = hi(t, async (e) => {
337
337
  let t = p;
338
338
  if (t === void 0) {
339
- _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.", {
339
+ 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.", {
340
340
  deliveryId: e.deliveryId,
341
341
  targetId: e.targetId
342
342
  });
343
343
  return;
344
344
  }
345
- t.runPromise(gi.execute(e)).catch((t) => {
346
- _e.error("deliverWebhook workflow crashed", {
345
+ t.runPromise(_i.execute(e)).catch((t) => {
346
+ ge.error("deliverWebhook workflow crashed", {
347
347
  deliveryId: e.deliveryId,
348
348
  targetId: e.targetId
349
349
  }, t);
350
350
  });
351
351
  }, { events: n });
352
352
  }
353
- let Se = /* @__PURE__ */ new Map();
354
- if (b) for (let e of b.incoming) {
355
- let t = e.descriptor.path ?? hi(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = vi(e.descriptor, {
353
+ let xe = /* @__PURE__ */ new Map();
354
+ if (x) for (let e of x.incoming) {
355
+ let t = e.descriptor.path ?? gi(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = yi(e.descriptor, {
356
356
  resolveSecret: async () => process.env[n] ?? null,
357
- resolveWorkflows: () => y === void 0 ? void 0 : Rr(y, {
357
+ resolveWorkflows: () => b === void 0 ? void 0 : X(b, {
358
358
  traceId: `incoming:${e.descriptor.id}`,
359
359
  source: `incoming:${e.descriptor.id}`
360
360
  }),
@@ -366,34 +366,34 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
366
366
  idempotency: e.idempotency,
367
367
  durationMs: e.durationMs
368
368
  };
369
- e.status >= 500 ? _e.error("incoming delivery failed", t) : e.status >= 400 ? _e.warn("incoming delivery rejected", t) : _e.info("incoming delivery handled", t);
369
+ e.status >= 500 ? ge.error("incoming delivery failed", t) : e.status >= 400 ? ge.warn("incoming delivery rejected", t) : ge.info("incoming delivery handled", t);
370
370
  }
371
371
  });
372
- Se.set(t, { handle: r });
372
+ xe.set(t, { handle: r });
373
373
  }
374
- _r(), Jr((t) => vr(e.store, t.subjectId, t.resourceType, t.resourceId));
375
- let Ce = [], we = [...e.discovered.outboxHandlers ?? [], ...gn((b?.outgoing.length ?? 0) + (b?.incoming.length ?? 0) + (b?.providers.length ?? 0), []) ? [{
374
+ vr(), Wr((t) => yr(e.store, t.subjectId, t.resourceType, t.resourceId)) || L({ scope: "voltro:serve" }).info("policy guards: using the app-registered tuple source");
375
+ let Se = [], Ce = [...e.discovered.outboxHandlers ?? [], ...mn((x?.outgoing.length ?? 0) + (x?.incoming.length ?? 0) + (x?.providers.length ?? 0), []) ? [{
376
376
  file: "<framework>/webhooks",
377
377
  id: "voltro-webhook-emit",
378
- definition: _i(() => be)
379
- }] : []], Te = we.length > 0 ? Ne({
380
- handlers: we,
378
+ definition: vi(() => ye)
379
+ }] : []], we = Ce.length > 0 ? Me({
380
+ handlers: Ce,
381
381
  store: e.store,
382
- log: (e.log ?? F({ scope: "voltro:serve" })).child("outbox"),
382
+ log: (e.log ?? L({ scope: "voltro:serve" })).child("outbox"),
383
383
  onChange: (t) => e.store.onChange((e) => t({
384
384
  table: e.table,
385
385
  op: e.op
386
386
  })),
387
387
  onShutdown: (e) => {
388
- Ce.push(e);
388
+ Se.push(e);
389
389
  }
390
- }) : void 0, x = _({
390
+ }) : void 0, S = v({
391
391
  definitions: (e.discovered.connections ?? []).map((e) => e.definition),
392
392
  store: e.store,
393
- publicUrl: xt(e.port ?? 4e3),
394
- log: (e.log ?? F({ scope: "voltro:serve" })).child("connections")
393
+ publicUrl: yt(e.port ?? 4e3),
394
+ log: (e.log ?? L({ scope: "voltro:serve" })).child("connections")
395
395
  });
396
- st({
396
+ at({
397
397
  events: e.discovered.events ?? [],
398
398
  rpcTags: [
399
399
  ...e.discovered.queries.map((e) => e.descriptor.name),
@@ -402,198 +402,198 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
402
402
  ...(e.discovered.streams ?? []).map((e) => e.descriptor.name)
403
403
  ]
404
404
  });
405
- let ke = (e.log ?? F({ scope: "voltro:serve" })).child("events"), je = e.broadcastNamespace ?? $e(e.plugins, void 0), Pe = Le(e.plugins, je, ke), Fe = e.membership?.instanceId ?? process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Re = e.membership ?? Nt(e.plugins, {
406
- instanceId: Fe,
407
- namespace: je,
405
+ let Oe = (e.log ?? L({ scope: "voltro:serve" })).child("events"), Ae = e.broadcastNamespace ?? Ze(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 ?? jt(e.plugins, {
406
+ instanceId: Pe,
407
+ namespace: Ae,
408
408
  meta: { mode: "serve" },
409
- logger: ke
410
- }), C = fe({
409
+ logger: Oe
410
+ }), w = de({
411
411
  events: e.discovered.events ?? [],
412
- origin: Fe,
413
- ...Pe.publishRemote === void 0 ? {} : { publishRemote: Pe.publishRemote }
414
- }), ze = (e.discovered.events ?? []).length > 0 ? await Pe.attach(C.bus) : null, Be = Tt({
412
+ origin: Pe,
413
+ ...Ne.publishRemote === void 0 ? {} : { publishRemote: Ne.publishRemote }
414
+ }), Re = (e.discovered.events ?? []).length > 0 ? await Ne.attach(w.bus) : null, ze = Ct({
415
415
  store: e.store,
416
416
  schemaRegistry: e.schemaRegistry,
417
417
  cache: i,
418
418
  kv: a,
419
- ...be === void 0 ? {} : { webhooksService: be },
420
- ...y === void 0 ? {} : { workflowsProxy: y },
419
+ ...ye === void 0 ? {} : { webhooksService: ye },
420
+ ...b === void 0 ? {} : { workflowsProxy: b },
421
421
  eventTriggers: e.discovered.eventTriggers ?? [],
422
- namespaceIsolationOn: ge,
422
+ namespaceIsolationOn: he,
423
423
  ...e.ensureTenantProvisioned === void 0 ? {} : { ensureTenantProvisioned: e.ensureTenantProvisioned },
424
424
  ...e.resolveResidentStore === void 0 ? {} : { resolveResidentStore: e.resolveResidentStore },
425
- ...Te === void 0 ? {} : { outbox: { nudge: Te.nudge } },
426
- ...x.active ? { connections: { registry: x.registry } } : {},
427
- eventBus: C.bus
428
- }), Ve = W.succeed(Zn, m), He = W.succeed(tr, Ue), We = W.succeed(Qn, Bt), Ke = W.succeed(q, Lt), Je = (t, n) => {
429
- let r = t.pipe(U.provide(Dr(n)));
430
- return (e.baseLayer ? r.pipe(U.provide(e.baseLayer)) : r).pipe(U.provide(Ve)).pipe(U.provide(He)).pipe(U.provide(We)).pipe(U.provide(Ke));
431
- }, Ye = (e, t) => {
432
- let n = Je(e, t);
433
- return Gr(n);
434
- }, Xe = yn(), Ze = bt(e.plugins ?? [], Xe), Qe = d({
425
+ ...we === void 0 ? {} : { outbox: { nudge: we.nudge } },
426
+ ...S.active ? { connections: { registry: S.registry } } : {},
427
+ eventBus: w.bus
428
+ }), Be = G.succeed(Qn, m), Ve = G.succeed(q, He), Ue = G.succeed($n, Rt), Ge = G.succeed(nr, Ft), qe = (t, n) => {
429
+ let r = t.pipe(W.provide(Or(n)));
430
+ return (e.baseLayer ? r.pipe(W.provide(e.baseLayer)) : r).pipe(W.provide(Be)).pipe(W.provide(Ve)).pipe(W.provide(Ue)).pipe(W.provide(Ge));
431
+ }, Je = (e, t) => {
432
+ let n = qe(e, t);
433
+ return qr(n);
434
+ }, Ye = _n(), E = vt(e.plugins ?? [], Ye), Xe = d({
435
435
  plugins: e.plugins ?? [],
436
- metrics: Xe,
437
- log: e.log ?? F({ scope: "voltro:serve" })
438
- }), et = g(e.plugins ?? [], Xe), tt = e.security?.defaultDeny ?? !0, nt = Ar({
436
+ metrics: Ye,
437
+ log: e.log ?? L({ scope: "voltro:serve" })
438
+ }), Qe = g(e.plugins ?? [], Ye), $e = e.security?.defaultDeny ?? !0, et = jr({
439
439
  store: e.store,
440
- defaultDeny: tt,
440
+ defaultDeny: $e,
441
441
  recordMetric: (e) => {
442
- Xe.record(e);
442
+ Ye.record(e);
443
443
  },
444
- ...Ze.mutation === void 0 ? {} : { interceptor: Ze.mutation },
445
- buildContext: (e, t, n) => Be(e, t, n),
446
- runEffect: Ye,
447
- undoCapture: ye()
448
- }), it = Ie();
444
+ ...E.mutation === void 0 ? {} : { interceptor: E.mutation },
445
+ buildContext: (e, t, n) => ze(e, t, n),
446
+ runEffect: Je,
447
+ undoCapture: ve()
448
+ }), nt = Fe();
449
449
  {
450
450
  let t = s();
451
- t !== void 0 && (e.log ?? F({ scope: "voltro:serve" })).info(t);
451
+ t !== void 0 && (e.log ?? L({ scope: "voltro:serve" })).info(t);
452
452
  }
453
- let at = Me({
453
+ let rt = je({
454
454
  store: e.store,
455
455
  ...e.approvals === void 0 ? {} : { defaultExpiryMs: e.approvals.defaultExpiryMs }
456
- }), ot = yr({
457
- defaultDeny: tt,
458
- buildContext: (e) => Be(e),
459
- runEffect: Ye,
456
+ }), it = br({
457
+ defaultDeny: $e,
458
+ buildContext: (e) => ze(e),
459
+ runEffect: Je,
460
460
  recordMetric: (e) => {
461
- Xe.record(e);
461
+ Ye.record(e);
462
462
  },
463
- ...Ze.action === void 0 ? {} : { interceptor: Ze.action }
464
- }), lt = Nr({
463
+ ...E.action === void 0 ? {} : { interceptor: E.action }
464
+ }), st = Pr({
465
465
  tenantScopedTables: e.tenantScopedTables,
466
466
  softDeleteScopedTables: e.softDeleteScopedTables
467
- }), ut = {
468
- defaultDeny: tt,
469
- buildContext: (e) => Be(e),
470
- finalize: (e, t) => lt(e, t.subject),
471
- provideEffect: Je,
472
- ...Ze.query === void 0 ? {} : { interceptor: Ze.query }
473
- }, T = Mr(ut), ft = jr({
474
- ...ut,
475
- queryRows: (t, n) => e.store.query(t).then((e) => Qr(t.table, e, n.subject))
476
- }), pt = Fr({
477
- ...ut,
467
+ }), ct = {
468
+ defaultDeny: $e,
469
+ buildContext: (e) => ze(e),
470
+ finalize: (e, t) => st(e, t.subject),
471
+ provideEffect: qe,
472
+ ...E.query === void 0 ? {} : { interceptor: E.query }
473
+ }, D = Nr(ct), ut = Mr({
474
+ ...ct,
475
+ queryRows: (t, n) => e.store.query(t).then((e) => $r(t.table, e, n.subject))
476
+ }), dt = Ir({
477
+ ...ct,
478
478
  subscribeDescriptor: (e, t, n) => r.subscribe(e, t, n),
479
479
  subscribeComputed: (e, t, n) => r.subscribeComputed(e, t, n)
480
- }), E = (e) => e.filter((e) => jn(e.descriptor)), D = {};
480
+ }), O = (e) => e.filter((e) => kn(e.descriptor)), k = {};
481
481
  for (let t of [
482
- ...E(e.discovered.queries),
483
- ...it.queries,
484
- ...at.queries,
485
- ...x.queries
486
- ]) D[t.descriptor.name] = (e) => Y(T(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, Pr(t, e));
482
+ ...O(e.discovered.queries),
483
+ ...nt.queries,
484
+ ...rt.queries,
485
+ ...S.queries
486
+ ]) k[t.descriptor.name] = (e) => Y(D(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, Fr(t, e));
487
487
  for (let t of [
488
- ...E(e.discovered.mutations),
489
- ...it.mutations,
490
- ...at.mutations,
491
- ...x.mutations
488
+ ...O(e.discovered.mutations),
489
+ ...nt.mutations,
490
+ ...rt.mutations,
491
+ ...S.mutations
492
492
  ]) {
493
- let n = kr(t.descriptor.output);
494
- D[t.descriptor.name] = (r) => J(async (e, n) => nt(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, t.descriptor.error);
493
+ let n = Ar(t.descriptor.output);
494
+ k[t.descriptor.name] = (r) => J(async (e, n) => et(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, jn(t.descriptor, "mutation"));
495
495
  }
496
- for (let t of [...E(e.discovered.actions), ...x.actions]) {
497
- let n = kr(t.descriptor.output);
498
- D[t.descriptor.name] = (r) => J(async (e, n) => ot(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, t.descriptor.error);
496
+ for (let t of [...O(e.discovered.actions), ...S.actions]) {
497
+ let n = Ar(t.descriptor.output);
498
+ k[t.descriptor.name] = (r) => J(async (e, n) => it(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, jn(t.descriptor, "action"));
499
499
  }
500
- let mt = () => `public-${Math.random().toString(36).slice(2, 10)}`, O = [
500
+ let ft = () => `public-${Math.random().toString(36).slice(2, 10)}`, A = [
501
501
  ...e.discovered.queries.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
502
502
  descriptor: e.descriptor,
503
- invoke: (t, n) => ft(e, t, {
503
+ invoke: (t, n) => ut(e, t, {
504
504
  subject: n.subject,
505
- traceId: mt()
505
+ traceId: ft()
506
506
  }),
507
- subscribe: (t, n, r) => pt(e, t, {
507
+ subscribe: (t, n, r) => dt(e, t, {
508
508
  subject: n.subject,
509
- traceId: mt()
509
+ traceId: ft()
510
510
  }, r)
511
511
  })),
512
512
  ...e.discovered.mutations.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
513
513
  descriptor: e.descriptor,
514
- invoke: (t, n) => nt(e, t, {
514
+ invoke: (t, n) => et(e, t, {
515
515
  subject: n.subject,
516
- traceId: mt()
516
+ traceId: ft()
517
517
  })
518
518
  })),
519
519
  ...e.discovered.actions.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
520
520
  descriptor: e.descriptor,
521
- invoke: (t, n) => ot(e, t, {
521
+ invoke: (t, n) => it(e, t, {
522
522
  subject: n.subject,
523
- traceId: mt()
523
+ traceId: ft()
524
524
  })
525
525
  }))
526
- ], gt = {
526
+ ], mt = {
527
527
  candidates: h({
528
528
  queries: e.discovered.queries,
529
529
  mutations: e.discovered.mutations,
530
530
  actions: e.discovered.actions,
531
531
  descriptorOf: (e) => e.descriptor,
532
- runQuery: (e, t, n) => Promise.resolve(ft(e, t, n)),
533
- runMutation: (e, t, n) => Promise.resolve(nt(e, t, n)),
534
- runAction: (e, t, n) => Promise.resolve(ot(e, t, n))
532
+ runQuery: (e, t, n) => Promise.resolve(ut(e, t, n)),
533
+ runMutation: (e, t, n) => Promise.resolve(et(e, t, n)),
534
+ runAction: (e, t, n) => Promise.resolve(it(e, t, n))
535
535
  }),
536
536
  policy: e.agents?.tools ?? {},
537
537
  mcpEnabled: e.agents?.mcp === !0,
538
538
  resolveSubject: (t) => e.resolveSubject(t, -1).then((e) => e.subject)
539
- }, _t = Ot({
539
+ }, ht = Et({
540
540
  ...e.restRoutes === void 0 ? {} : { restRoutes: e.restRoutes },
541
- publicApiEntries: O,
541
+ publicApiEntries: A,
542
542
  store: e.store,
543
543
  resolveSubject: (t) => e.resolveSubject(t, -1).then((e) => e.subject),
544
544
  ...e.idempotency === void 0 ? {} : { idempotency: e.idempotency },
545
- log: e.log ?? F({ scope: "voltro:serve" })
546
- }), vt = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, yt = vt && vt.length >= 16 ? [{
545
+ log: e.log ?? L({ scope: "voltro:serve" })
546
+ }), gt = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, _t = gt && gt.length >= 16 ? [{
547
547
  method: "POST",
548
- path: Ni,
549
- handle: Vi({
550
- secret: vt,
548
+ path: Pi,
549
+ handle: Hi({
550
+ secret: gt,
551
551
  store: e.store,
552
552
  ...e.dataTransferSnapshot ? { snapshot: e.dataTransferSnapshot } : {},
553
- assetSink: Ei(ii()),
554
- openArchive: (e) => Ki(ii(), e)
553
+ assetSink: Di(ai()),
554
+ openArchive: (e) => qi(ai(), e)
555
555
  })
556
556
  }, {
557
557
  method: "POST",
558
- path: Pi,
559
- handle: Gi({
560
- secret: vt,
558
+ path: Fi,
559
+ handle: Ki({
560
+ secret: gt,
561
561
  store: e.store,
562
562
  snapshot: e.dataTransferSnapshot ?? { tables: [] },
563
563
  dialect: e.dataTransferDialect ?? "memory",
564
564
  tenantTables: [...e.tenantScopedTables],
565
- loadProfile: Cn,
566
- assetSource: Di(ii(), e.store),
565
+ loadProfile: xn,
566
+ assetSource: Oi(ai(), e.store),
567
567
  putArchive: async (e, t) => {
568
- let { Readable: n } = await import("node:stream"), r = ii(), i = ai("storage", () => n.from(t()));
569
- await U.runPromise(si(r, e, i, { contentType: "application/octet-stream" }));
568
+ let { Readable: n } = await import("node:stream"), r = ai(), i = oi("storage", () => n.from(t()));
569
+ await W.runPromise(ci(r, e, i, { contentType: "application/octet-stream" }));
570
570
  }
571
571
  })
572
- }] : [], St = [
572
+ }] : [], bt = [
573
573
  ...e.httpRoutes ?? [],
574
- ..._t.httpRoutes,
575
- ...yt,
576
- ...x.httpRoutes
574
+ ...ht.httpRoutes,
575
+ ..._t,
576
+ ...S.httpRoutes
577
577
  ];
578
- Object.assign(D, C.handlers);
579
- for (let t of E(e.discovered.streams ?? [])) D[t.descriptor.name] = (n) => cr((r) => ti(r, (r) => {
580
- let i = Be(r), a = t.executor(n, i);
581
- if (U.isEffect(a)) {
582
- let t = a.pipe(U.provide(Dr(i.store)));
583
- return (e.baseLayer ? t.pipe(U.provide(e.baseLayer)) : t).pipe(U.provide(Ve)).pipe(U.provide(He)).pipe(U.provide(We)).pipe(U.provide(Ke));
578
+ Object.assign(k, w.handlers);
579
+ for (let t of O(e.discovered.streams ?? [])) k[t.descriptor.name] = (n) => lr((r) => ni(r, (r) => {
580
+ let i = ze(r), a = t.executor(n, i);
581
+ if (W.isEffect(a)) {
582
+ let t = a.pipe(W.provide(Or(i.store)));
583
+ return (e.baseLayer ? t.pipe(W.provide(e.baseLayer)) : t).pipe(W.provide(Be)).pipe(W.provide(Ve)).pipe(W.provide(Ue)).pipe(W.provide(Ge));
584
584
  }
585
- return typeof a == "object" && a && typeof a.then == "function" ? U.promise(() => a) : a;
585
+ return typeof a == "object" && a && typeof a.then == "function" ? W.promise(() => a) : a;
586
586
  }), `stream.${t.descriptor.name}`);
587
- for (let t of e.discovered.workflows ?? []) D[t.definition.name] = (e) => J(async (e, n) => {
587
+ for (let t of e.discovered.workflows ?? []) k[t.definition.name] = (e) => J(async (e, n) => {
588
588
  let r = n;
589
- return Rr(y, {
589
+ return X(b, {
590
590
  subject: r.subject,
591
591
  traceId: r.traceId,
592
592
  source: "workflow-rpc"
593
593
  }).start(t.definition.name, e);
594
594
  }, e, `workflow.${t.definition.name}`);
595
- me && (D[V.name] = (e) => Y(T({
596
- descriptor: V,
595
+ pe && (k[U.name] = (e) => Y(D({
596
+ descriptor: U,
597
597
  executor: (e) => {
598
598
  let t = e.id;
599
599
  return {
@@ -602,16 +602,16 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
602
602
  column: "startedAt",
603
603
  direction: "desc"
604
604
  }],
605
- predicate: K(G("id", t), G("executionId", t)),
605
+ predicate: Zn(K("id", t), K("executionId", t)),
606
606
  take: 1,
607
607
  skip: void 0,
608
608
  projection: void 0
609
609
  };
610
610
  }
611
- }, e), r, `subscription.${V.name}`), D[In.name] = (e) => Y(T({
611
+ }, e), r, `subscription.${U.name}`), k[In.name] = (e) => Y(D({
612
612
  descriptor: In,
613
613
  executor: (e) => {
614
- 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;
614
+ let t = e, n = [...t.tag === void 0 ? [] : [K("tag", t.tag)], ...t.status === void 0 ? [] : [K("status", t.status)]], r = Number.isFinite(t.limit) && t.limit !== void 0 ? Math.min(Math.max(Math.floor(t.limit), 1), 500) : 100;
615
615
  return {
616
616
  table: "_voltro_workflow_runs",
617
617
  order: [{
@@ -624,8 +624,8 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
624
624
  projection: void 0
625
625
  };
626
626
  }
627
- }, e), r, `subscription.${In.name}`), D[H.name] = (e) => Y(T({
628
- descriptor: H,
627
+ }, e), r, `subscription.${In.name}`), k[Fn.name] = (e) => Y(D({
628
+ descriptor: Fn,
629
629
  executor: (e) => {
630
630
  let t = e.runId;
631
631
  return {
@@ -634,14 +634,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
634
634
  column: "startedAt",
635
635
  direction: "asc"
636
636
  }],
637
- predicate: G("runId", t),
637
+ predicate: K("runId", t),
638
638
  take: 1e3,
639
639
  skip: void 0,
640
640
  projection: void 0
641
641
  };
642
642
  }
643
- }, e), r, `subscription.${H.name}`), D[B.name] = (e) => Y(T({
644
- descriptor: B,
643
+ }, e), r, `subscription.${Fn.name}`), k[H.name] = (e) => Y(D({
644
+ descriptor: H,
645
645
  executor: (e) => {
646
646
  let t = e.runId;
647
647
  return {
@@ -650,14 +650,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
650
650
  column: "occurredAt",
651
651
  direction: "asc"
652
652
  }],
653
- predicate: G("runId", t),
653
+ predicate: K("runId", t),
654
654
  take: 1e3,
655
655
  skip: void 0,
656
656
  projection: void 0
657
657
  };
658
658
  }
659
- }, e), r, `subscription.${B.name}`), D[Pn.name] = (e) => Y(T({
660
- descriptor: Pn,
659
+ }, e), r, `subscription.${H.name}`), k[V.name] = (e) => Y(D({
660
+ descriptor: V,
661
661
  executor: (e) => {
662
662
  let t = e;
663
663
  return {
@@ -666,14 +666,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
666
666
  column: "occurredAt",
667
667
  direction: "desc"
668
668
  }],
669
- predicate: t.name === void 0 ? void 0 : G("name", t.name),
669
+ predicate: t.name === void 0 ? void 0 : K("name", t.name),
670
670
  take: Math.max(1, Math.min(500, t.limit ?? 100)),
671
671
  skip: void 0,
672
672
  projection: void 0
673
673
  };
674
674
  }
675
- }, e), r, `subscription.${Pn.name}`), D[z.name] = (e) => Y(T({
676
- descriptor: z,
675
+ }, e), r, `subscription.${V.name}`), k[Nn.name] = (e) => Y(D({
676
+ descriptor: Nn,
677
677
  executor: (e) => {
678
678
  let t = e.eventId;
679
679
  return {
@@ -682,73 +682,73 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
682
682
  column: "createdAt",
683
683
  direction: "asc"
684
684
  }],
685
- predicate: G("eventId", t),
685
+ predicate: K("eventId", t),
686
686
  take: 500,
687
687
  skip: void 0,
688
688
  projection: void 0
689
689
  };
690
690
  }
691
- }, e), r, `subscription.${z.name}`), D[Nn.name] = (t) => J(async (t, n) => {
691
+ }, e), r, `subscription.${Nn.name}`), k[Mn.name] = (t) => J(async (t, n) => {
692
692
  let r = t;
693
- return await ht(e.store, n.subject, { executionId: r.executionId }), await y.cancel(r.workflowName, r.executionId), await Ft(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
694
- }, t, `action.${Nn.name}`), D[Fn.name] = (t) => J(async (t, n) => {
693
+ return await pt(e.store, n.subject, { executionId: r.executionId }), await b.cancel(r.workflowName, r.executionId), await Nt(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
694
+ }, t, `action.${Mn.name}`), k[Pn.name] = (t) => J(async (t, n) => {
695
695
  let r = t;
696
- return await ht(e.store, n.subject, { executionId: r.executionId }), await y.resume(r.workflowName, r.executionId), { ok: !0 };
697
- }, t, `action.${Fn.name}`), D[Ln.name] = (t) => J(async (t, n) => {
696
+ return await pt(e.store, n.subject, { executionId: r.executionId }), await b.resume(r.workflowName, r.executionId), { ok: !0 };
697
+ }, t, `action.${Pn.name}`), k[Ln.name] = (t) => J(async (t, n) => {
698
698
  let r = t;
699
- return await ht(e.store, n.subject, { id: r.id }), y.signal({ id: r.id }, r.signalName, r.payload);
700
- }, t, `action.${Ln.name}`), D[Rn.name] = (t) => J(async (t, n) => {
699
+ return await pt(e.store, n.subject, { id: r.id }), b.signal({ id: r.id }, r.signalName, r.payload);
700
+ }, t, `action.${Ln.name}`), k[Rn.name] = (t) => J(async (t, n) => {
701
701
  let r = t;
702
- return await ht(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 });
702
+ return await pt(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 });
703
703
  }, t, `action.${Rn.name}`));
704
- let wt = [
705
- ...E(e.discovered.queries).map((e) => R(e.descriptor)),
706
- ...E(e.discovered.mutations).map((e) => L(e.descriptor)),
707
- ...E(e.discovered.actions).map((e) => I(e.descriptor)),
708
- ...it.queries.map((e) => R(e.descriptor)),
709
- ...it.mutations.map((e) => L(e.descriptor)),
710
- ...at.queries.map((e) => R(e.descriptor)),
711
- ...at.mutations.map((e) => L(e.descriptor)),
712
- ...x.queries.map((e) => R(e.descriptor)),
713
- ...x.mutations.map((e) => L(e.descriptor)),
714
- ...x.actions.map((e) => I(e.descriptor)),
715
- ...E(e.discovered.streams ?? []).map((e) => Mn(e.descriptor)),
716
- ...C.rpcs,
717
- ...(e.discovered.workflows ?? []).map((e) => ni(e.definition)),
718
- ...me ? [
719
- R(V),
720
- R(In),
721
- R(H),
722
- R(B),
704
+ let St = [
705
+ ...O(e.discovered.queries).map((e) => B(e.descriptor)),
706
+ ...O(e.discovered.mutations).map((e) => z(e.descriptor)),
707
+ ...O(e.discovered.actions).map((e) => R(e.descriptor)),
708
+ ...nt.queries.map((e) => B(e.descriptor)),
709
+ ...nt.mutations.map((e) => z(e.descriptor)),
710
+ ...rt.queries.map((e) => B(e.descriptor)),
711
+ ...rt.mutations.map((e) => z(e.descriptor)),
712
+ ...S.queries.map((e) => B(e.descriptor)),
713
+ ...S.mutations.map((e) => z(e.descriptor)),
714
+ ...S.actions.map((e) => R(e.descriptor)),
715
+ ...O(e.discovered.streams ?? []).map((e) => An(e.descriptor)),
716
+ ...w.rpcs,
717
+ ...(e.discovered.workflows ?? []).map((e) => ri(e.definition)),
718
+ ...pe ? [
719
+ B(U),
720
+ B(In),
721
+ B(Fn),
722
+ B(H),
723
+ B(V),
724
+ B(Nn),
725
+ R(Mn),
723
726
  R(Pn),
724
- R(z),
725
- I(Nn),
726
- I(Fn),
727
- I(Ln),
728
- I(Rn)
727
+ R(Ln),
728
+ R(Rn)
729
729
  ] : []
730
- ], Dt = Kn.make(...wt).middleware(On).middleware(kn), kt = Tr({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), At = e.dormancyTenantId ?? $n, jt = e.dormancy === "sleep" ? {
731
- register: (t, n, r) => Ur(e.store, {
732
- tenantId: r ?? At,
730
+ ], Tt = Kn.make(...St).middleware(En).middleware(Dn), Dt = Er({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), Ot = e.dormancyTenantId ?? er, kt = e.dormancy === "sleep" ? {
731
+ register: (t, n, r) => Gr(e.store, {
732
+ tenantId: r ?? Ot,
733
733
  kind: "workflow",
734
734
  refId: t,
735
735
  wakeAt: n
736
736
  }),
737
- cancel: (t, n) => ur(e.store, {
738
- tenantId: n ?? At,
737
+ cancel: (t, n) => dr(e.store, {
738
+ tenantId: n ?? Ot,
739
739
  kind: "workflow",
740
740
  refId: t
741
741
  }).then(() => {})
742
- } : void 0, A = he ? await import("@voltro/workflow") : void 0, j = A?.makeWorkflowRunRecorder({
742
+ } : void 0, M = me ? await import("@voltro/workflow") : void 0, N = M?.makeWorkflowRunRecorder({
743
743
  store: e.store,
744
744
  ...e.workflowRecording === void 0 ? {} : { recording: e.workflowRecording },
745
- ...jt === void 0 ? {} : { wakeups: jt }
746
- }), Pt = async (t, n) => {
747
- await A.closeWorkflowChildrenForParent({
745
+ ...kt === void 0 ? {} : { wakeups: kt }
746
+ }), Mt = async (t, n) => {
747
+ await M.closeWorkflowChildrenForParent({
748
748
  store: e.store,
749
749
  parentExecutionId: t,
750
750
  parentStatus: n,
751
- recorder: j,
751
+ recorder: N,
752
752
  log: { warn: (e, t) => {
753
753
  process.stderr.write(`[workflow] ${e} ${t ? JSON.stringify(t) : ""}\n`);
754
754
  } },
@@ -759,11 +759,11 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
759
759
  await p.runPromise(r.definition.interrupt(n));
760
760
  }
761
761
  });
762
- }, Ft = async (t, n, r) => {
762
+ }, Nt = async (t, n, r) => {
763
763
  let i = (await e.store.query({
764
764
  table: "_voltro_workflow_runs",
765
765
  order: [],
766
- predicate: G("executionId", n),
766
+ predicate: K("executionId", n),
767
767
  projection: void 0,
768
768
  skip: void 0,
769
769
  take: 1
@@ -774,7 +774,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
774
774
  cancelled: !0,
775
775
  completedAt: /* @__PURE__ */ new Date()
776
776
  }), o = i.subject?.tenantId ?? void 0;
777
- a && await j.recordEvent({
777
+ a && await N.recordEvent({
778
778
  runId: i.id,
779
779
  eventType: "run-cancelled",
780
780
  payload: {
@@ -783,18 +783,18 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
783
783
  executionId: n,
784
784
  ...o == null ? {} : { tenantId: o }
785
785
  }
786
- }), a && await Pt(n, "cancelled");
787
- }, It = [
788
- ...X(e.discovered.workflows ?? [], {
789
- buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? Be({
786
+ }), a && await Mt(n, "cancelled");
787
+ }, Pt = [
788
+ ...zr(e.discovered.workflows ?? [], {
789
+ buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? ze({
790
790
  subject: t.subject,
791
791
  traceId: t.traceId
792
792
  }, e.store, void 0, `workflow:${n.workflowName}`, { parentExecutionId: n.executionId }),
793
- resolveStartContext: ue,
794
- ...de === void 0 ? {} : { resolveAuthority: de }
793
+ resolveStartContext: le,
794
+ ...ue === void 0 ? {} : { resolveAuthority: ue }
795
795
  }, (t, n, r) => {
796
- let i = A.getWorkflowVersionMetadata(t.definition);
797
- return A.wrapWorkflowExecuteWithRunRecording({
796
+ let i = M.getWorkflowVersionMetadata(t.definition);
797
+ return M.wrapWorkflowExecuteWithRunRecording({
798
798
  name: t.definition.name,
799
799
  store: e.store,
800
800
  subject: r.subject,
@@ -805,27 +805,27 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
805
805
  workflowPatches: i.patches,
806
806
  parentExecutionId: r?.parentExecutionId ?? null,
807
807
  parentClosePolicy: r?.parentClosePolicy ?? null,
808
- onParentClose: ({ executionId: e, status: t }) => Pt(e, t),
809
- ...Ge(t.definition),
808
+ onParentClose: ({ executionId: e, status: t }) => Mt(e, t),
809
+ ...We(t.definition),
810
810
  onTerminal: async ({ executionId: e }) => {
811
811
  await f?.gate.release(e);
812
812
  },
813
- recorder: j,
814
- pluginWorkflowStepLayer: et,
815
- recordRun: Hr
813
+ recorder: N,
814
+ pluginWorkflowStepLayer: Qe,
815
+ recordRun: Ur
816
816
  }, n);
817
817
  }),
818
818
  ...e.discovered.workflowWorkers ?? [],
819
- ...xe === void 0 ? [] : [xe]
820
- ], Rt = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...xe === void 0 ? [] : ["voltro.deliverWebhook"]], zt = It.length > 0 ? W.mergeAll(...It) : W.empty;
821
- if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || xe !== void 0) && e.workflowEngineLayer !== void 0) {
822
- let t = zt.pipe(W.provideMerge(e.workflowEngineLayer));
823
- p = Bn.make(e.baseLayer === void 0 ? t : t.pipe(W.provideMerge(e.baseLayer))), await p.runPromise(U.void), (e.log ?? F({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${Rt.length} entity type(s) registered`, { entities: Rt });
819
+ ...be === void 0 ? [] : [be]
820
+ ], It = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...be === void 0 ? [] : ["voltro.deliverWebhook"]], Lt = Pt.length > 0 ? G.mergeAll(...Pt) : G.empty;
821
+ if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || be !== void 0) && e.workflowEngineLayer !== void 0) {
822
+ let t = Lt.pipe(G.provideMerge(e.workflowEngineLayer));
823
+ p = Bn.make(e.baseLayer === void 0 ? t : t.pipe(G.provideMerge(e.baseLayer))), await p.runPromise(W.void), (e.log ?? L({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${It.length} entity type(s) registered`, { entities: It });
824
824
  let n = await import("@voltro/workflow/cluster"), r = (e) => p.runPromise(n.redriveFailedRun(e)), i = (e) => p.runPromise(n.resumeRunFromStep(e));
825
- ne = await k({
826
- provider: Si(e.plugins ?? [])?.broadcast?.provider,
827
- crossReplica: Si(e.plugins ?? [])?.broadcast?.crossReplica ?? !1,
828
- namespace: je,
825
+ ne = await j({
826
+ provider: Ci(e.plugins ?? [])?.broadcast?.provider,
827
+ crossReplica: Ci(e.plugins ?? [])?.broadcast?.crossReplica ?? !1,
828
+ namespace: Ae,
829
829
  replicaId: crypto.randomUUID(),
830
830
  pollStorage: () => p.runPromise(n.pollWorkflowStorage),
831
831
  onChange: (t) => e.store.onChange((e) => t({
@@ -833,14 +833,14 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
833
833
  op: e.op,
834
834
  ...e.origin === void 0 ? {} : { origin: e.origin }
835
835
  })),
836
- log: (e.log ?? F({ scope: "voltro:serve" })).child("workflow")
836
+ log: (e.log ?? L({ scope: "voltro:serve" })).child("workflow")
837
837
  }), ee = async (t) => {
838
- let n = await ae({
838
+ let n = await _({
839
839
  store: e.store,
840
840
  workflows: e.discovered.workflows ?? [],
841
841
  runRedrive: r
842
842
  }, t.runId);
843
- return n.statusReset && await j.recordEvent({
843
+ return n.statusReset && await N.recordEvent({
844
844
  runId: t.runId,
845
845
  eventType: "run-redriven",
846
846
  payload: {
@@ -853,12 +853,12 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
853
853
  reason: n.outcome.reason
854
854
  };
855
855
  }, te = async (t) => {
856
- let n = await De({
856
+ let n = await Ee({
857
857
  store: e.store,
858
858
  workflows: e.discovered.workflows ?? [],
859
859
  runResume: i
860
860
  }, t.runId, t.step);
861
- return n.statusReset && await j.recordEvent({
861
+ return n.statusReset && await N.recordEvent({
862
862
  runId: t.runId,
863
863
  eventType: "run-redriven",
864
864
  payload: {
@@ -873,7 +873,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
873
873
  reason: n.outcome.reason
874
874
  };
875
875
  };
876
- let a = (e.scheduleCoordination ?? "single") === "advisoryLock" ? br(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Yr, s = Er({
876
+ let a = (e.scheduleCoordination ?? "single") === "advisoryLock" ? xr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Xr, s = Dr({
877
877
  coordinator: a,
878
878
  replicaId: e.scheduleReplicaId ?? `pid-${process.pid}`
879
879
  }), u = {
@@ -888,17 +888,17 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
888
888
  }
889
889
  }, d, m = () => {
890
890
  if (d !== void 0) return d;
891
- if (o !== void 0 && j !== void 0) return d = re({
891
+ if (o !== void 0 && N !== void 0) return d = re({
892
892
  store: e.store,
893
- log: P,
893
+ log: I,
894
894
  workflows: e.discovered.workflows ?? [],
895
895
  workflowsProxy: o,
896
896
  workflowRuntime: p,
897
- workflowRunRecorder: j,
898
- closeChildrenForParent: Pt
897
+ workflowRunRecorder: N,
898
+ closeChildrenForParent: Mt
899
899
  }), d;
900
900
  };
901
- c = m, f = rt({
901
+ c = m, f = tt({
902
902
  store: e.store,
903
903
  onChange: (t) => e.store.onChange((e) => t({
904
904
  table: e.table,
@@ -913,12 +913,12 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
913
913
  workflows: e.discovered.workflows ?? [],
914
914
  facade: () => o,
915
915
  cancelRunWithReason: m,
916
- recordRunEvent: () => j?.recordEvent,
916
+ recordRunEvent: () => N?.recordEvent,
917
917
  ...e.workflowStaleness === void 0 ? {} : { staleness: e.workflowStaleness },
918
918
  ...e.workflowSuspendSignalHintMs === void 0 ? {} : { suspendSignalHintMs: e.workflowSuspendSignalHintMs },
919
919
  scheduleCoordinated: s,
920
920
  onAbandoned: async (t) => {
921
- await Et({
921
+ await wt({
922
922
  workflows: e.discovered.workflows ?? [],
923
923
  facade: () => o,
924
924
  log: u,
@@ -928,7 +928,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
928
928
  log: u
929
929
  });
930
930
  let h = f;
931
- h !== void 0 && Br(() => h.stop()), l = qe({
931
+ h !== void 0 && Vr(() => h.stop()), l = Ke({
932
932
  store: e.store,
933
933
  onChange: (t) => e.store.onChange((e) => t({
934
934
  table: e.table,
@@ -939,10 +939,10 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
939
939
  tickIntervalMs: e.scheduling.inferenceTickMs
940
940
  },
941
941
  enabled: (e.discovered.workflows?.length ?? 0) > 0,
942
- resumeSignal: () => p === void 0 || A === void 0 ? void 0 : async ({ executionId: t, workflowName: n, signalName: r, payload: i }) => {
943
- await p.runPromise(A.completeSuspendingSignal({
942
+ resumeSignal: () => p === void 0 || M === void 0 ? void 0 : async ({ executionId: t, workflowName: n, signalName: r, payload: i }) => {
943
+ await p.runPromise(M.completeSuspendingSignal({
944
944
  store: e.store,
945
- target: Mt(t, n),
945
+ target: At(t, n),
946
946
  signalName: r,
947
947
  payload: i
948
948
  }));
@@ -952,7 +952,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
952
952
  log: u
953
953
  });
954
954
  let g = l;
955
- g !== void 0 && Br(() => g.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? Lr({
955
+ g !== void 0 && Vr(() => g.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? Rr({
956
956
  workflows: e.discovered.workflows ?? [],
957
957
  runEffect: (e) => p.runPromise(e),
958
958
  onEnqueue: () => ne?.publishWake(),
@@ -961,71 +961,71 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
961
961
  startPayloadSchema: h.gate.startPayloadSchema,
962
962
  parkDelayedStart: h.gate.parkDelayed
963
963
  },
964
- rememberStartContext: le,
964
+ rememberStartContext: ce,
965
965
  signal: async (t, n, r) => {
966
- let i = await A.sendWorkflowSignal({
966
+ let i = await M.sendWorkflowSignal({
967
967
  store: e.store,
968
- recorder: j,
968
+ recorder: N,
969
969
  target: t,
970
970
  signalName: n,
971
971
  payload: r
972
972
  });
973
- return await p.runPromise(A.completeSuspendingSignal({
973
+ return await p.runPromise(M.completeSuspendingSignal({
974
974
  store: e.store,
975
975
  target: t,
976
976
  signalName: n,
977
977
  payload: r
978
978
  })).catch(() => {}), i;
979
979
  },
980
- update: (t, n, r, i) => A.sendWorkflowUpdate({
980
+ update: (t, n, r, i) => M.sendWorkflowUpdate({
981
981
  store: e.store,
982
- recorder: j,
982
+ recorder: N,
983
983
  target: t,
984
984
  updateName: n,
985
985
  payload: r,
986
986
  ...i === void 0 ? {} : { options: i }
987
987
  }),
988
- listRuns: (t) => Oe(e.store, t),
989
- retry: (t, n) => Ae({
988
+ listRuns: (t) => De(e.store, t),
989
+ retry: (t, n) => ke({
990
990
  store: e.store,
991
991
  workflows: e.discovered.workflows ?? [],
992
992
  runPromise: (e) => p.runPromise(e)
993
993
  }, t, n),
994
- redrive: (t) => ae({
994
+ redrive: (t) => _({
995
995
  store: e.store,
996
996
  workflows: e.discovered.workflows ?? [],
997
997
  runRedrive: r
998
998
  }, t).then((e) => e.outcome)
999
999
  }) : void 0;
1000
1000
  }
1001
- let Ht = W.mergeAll(Dt.toLayer(D), kt), Ut = Ct(D, e.discovered.queries.map((e) => e.descriptor.name), me), Wt = W.mergeAll(Dt.toLayer(Ut), kt), M = e.observability, N = await lr({
1001
+ let Bt = G.mergeAll(Tt.toLayer(k), Dt), Vt = xt(k, e.discovered.queries.map((e) => e.descriptor.name), pe), Ht = G.mergeAll(Tt.toLayer(Vt), Dt), P = e.observability, F = await ur({
1002
1002
  ...e.appName === void 0 ? {} : { serviceName: e.appName },
1003
- ...M && M.spanProcessors.length > 0 ? { extraSpanProcessors: M.spanProcessors } : {},
1004
- ...M && M.metricReaders.length > 0 ? { extraMetricReaders: M.metricReaders } : {},
1005
- ...M && Object.keys(M.resourceAttributes).length > 0 ? { resourceAttributes: M.resourceAttributes } : {},
1006
- ...M && M.sampler !== void 0 ? { sampler: M.sampler } : {}
1007
- }), Gt = !1, Kt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: qt, shutdown: Jt } = Xr({
1008
- group: Dt,
1009
- handlersLayer: Ht,
1010
- httpHandlersLayer: Wt,
1003
+ ...P && P.spanProcessors.length > 0 ? { extraSpanProcessors: P.spanProcessors } : {},
1004
+ ...P && P.metricReaders.length > 0 ? { extraMetricReaders: P.metricReaders } : {},
1005
+ ...P && Object.keys(P.resourceAttributes).length > 0 ? { resourceAttributes: P.resourceAttributes } : {},
1006
+ ...P && P.sampler !== void 0 ? { sampler: P.sampler } : {}
1007
+ }), Ut = !1, Wt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Gt, shutdown: Kt } = Zr({
1008
+ group: Tt,
1009
+ handlersLayer: Bt,
1010
+ httpHandlersLayer: Ht,
1011
1011
  port: e.port ?? 4e3,
1012
1012
  ...e.host === void 0 ? {} : { host: e.host },
1013
1013
  path: e.path ?? "/ws",
1014
- tracerLayer: N.layer,
1015
- security: ve(e),
1016
- ...Qe,
1014
+ tracerLayer: F.layer,
1015
+ security: _e(e),
1016
+ ...Xe,
1017
1017
  healthCheck: {
1018
- isReady: () => Gt,
1019
- ...Kt ? { ping: Kt } : {}
1018
+ isReady: () => Ut,
1019
+ ...Wt ? { ping: Wt } : {}
1020
1020
  },
1021
- ...St.length > 0 ? { httpRoutes: St } : {},
1021
+ ...bt.length > 0 ? { httpRoutes: bt } : {},
1022
1022
  ...e.getStore === void 0 ? {} : { getStore: e.getStore },
1023
- ...Se.size > 0 ? { webhookRoutes: Se } : {},
1023
+ ...xe.size > 0 ? { webhookRoutes: xe } : {},
1024
1024
  ...e.inspectRoute === void 0 ? {} : { inspectRoute: e.inspectRoute }
1025
- }), Yt = Mi(qt);
1026
- if (await sr(qt), (e.discovered.schedules?.length ?? 0) > 0) {
1027
- let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? br(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Yr;
1028
- se = await Zr(e.discovered.schedules ?? [], {
1025
+ }), qt = Ni(Gt);
1026
+ if (await cr(Gt), (e.discovered.schedules?.length ?? 0) > 0) {
1027
+ let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? xr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Xr;
1028
+ oe = await Qr(e.discovered.schedules ?? [], {
1029
1029
  store: e.store,
1030
1030
  coordinator: t,
1031
1031
  defaultTrigger: e.scheduleDefaultTrigger ?? "self",
@@ -1033,7 +1033,7 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1033
1033
  armSelf: e.scheduleArmSelf ?? !0,
1034
1034
  dormancy: e.dormancy ?? "always-on",
1035
1035
  ...e.dormancyTenantId === void 0 ? {} : { dormancyTenantId: e.dormancyTenantId },
1036
- buildContext: ({ traceId: t, scheduleName: n, subject: r }) => Be({
1036
+ buildContext: ({ traceId: t, scheduleName: n, subject: r }) => ze({
1037
1037
  subject: r,
1038
1038
  traceId: t
1039
1039
  }, e.store, void 0, `schedule:${n}`),
@@ -1051,428 +1051,428 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1051
1051
  },
1052
1052
  ...e.scheduleFireInterceptor === void 0 ? {} : { interceptFire: e.scheduleFireInterceptor },
1053
1053
  ...e.onScheduleRunEvent === void 0 ? {} : { onRunEvent: e.onScheduleRunEvent }
1054
- }), e.onSchedulerReady?.(se);
1054
+ }), e.onSchedulerReady?.(oe);
1055
1055
  }
1056
- let P = e.log ?? F({ scope: "voltro:serve" }), Xt, Zt;
1057
- if ((e.discovered.subscribers?.length ?? 0) > 0 && (Xt = S(e.discovered.subscribers ?? [], e.store, P.child("subscribe"), e.schemaRegistry, C.bus)), (e.discovered.reactions?.length ?? 0) > 0) {
1058
- let t = P.child("reaction"), n = async (n, r) => {
1056
+ let I = e.log ?? L({ scope: "voltro:serve" }), Jt, Yt;
1057
+ if ((e.discovered.subscribers?.length ?? 0) > 0 && (Jt = C(e.discovered.subscribers ?? [], e.store, I.child("subscribe"), e.schemaRegistry, w.bus)), (e.discovered.reactions?.length ?? 0) > 0) {
1058
+ let t = I.child("reaction"), n = async (n, r) => {
1059
1059
  if (n.kind === "workflow") {
1060
- if (y === void 0) {
1060
+ if (b === void 0) {
1061
1061
  t.warn("reaction workflow act skipped — no workflow engine in this app", { workflow: n.workflow });
1062
1062
  return;
1063
1063
  }
1064
1064
  let e = n.payload === void 0 ? r.new ?? r.old ?? {} : n.payload(r);
1065
- await Rr(y, {
1065
+ await X(b, {
1066
1066
  traceId: `reaction:${n.workflow}`,
1067
1067
  source: `reaction:${n.workflow}`
1068
1068
  }).start(n.workflow, e);
1069
1069
  return;
1070
1070
  }
1071
- await ct(n.agent, r, {
1071
+ await ot(n.agent, r, {
1072
1072
  findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
1073
- runAction: (e, t, n) => Promise.resolve(ot(e, t, n)),
1074
- makeSubject: (e) => An(e),
1073
+ runAction: (e, t, n) => Promise.resolve(it(e, t, n)),
1074
+ makeSubject: (e) => On(e),
1075
1075
  now: () => Date.now(),
1076
1076
  log: t
1077
1077
  });
1078
1078
  }, r = async (n, r) => {
1079
1079
  try {
1080
1080
  let { requireAiBudget: t } = await import("@voltro/ai");
1081
- return (await U.runPromise(U.either(t(e.store, {
1081
+ return (await W.runPromise(W.either(t(e.store, {
1082
1082
  tenantId: n,
1083
1083
  limitUsd: r
1084
1084
  }))))._tag === "Right";
1085
1085
  } catch (e) {
1086
1086
  return t.warn("reaction budget check failed — refusing the act", { tenantId: n }, e), !1;
1087
1087
  }
1088
- }, i = dt(e.store, { onError: (e) => t.warn("reaction: rate-slot claim failed; refusing the act", { cause: String(e) }) });
1089
- Zt = u(e.discovered.reactions ?? [], e.store, {
1088
+ }, i = lt(e.store, { onError: (e) => t.warn("reaction: rate-slot claim failed; refusing the act", { cause: String(e) }) });
1089
+ Yt = u(e.discovered.reactions ?? [], e.store, {
1090
1090
  runAct: n,
1091
1091
  checkBudget: r,
1092
1092
  claimRateSlot: (e) => i.claim(e)
1093
1093
  }, t);
1094
1094
  }
1095
- let Qt;
1096
- (e.discovered.aggregates?.length ?? 0) > 0 && (Qt = await Ee({
1095
+ let Xt;
1096
+ (e.discovered.aggregates?.length ?? 0) > 0 && (Xt = await Te({
1097
1097
  discovered: e.discovered.aggregates ?? [],
1098
1098
  store: e.store,
1099
- log: P.child("aggregate"),
1099
+ log: I.child("aggregate"),
1100
1100
  ...e.analytics === void 0 ? {} : { analytics: e.analytics },
1101
1101
  ...e.aggregateStorage === void 0 ? {} : { storage: e.aggregateStorage },
1102
1102
  ...e.aggregateCoordinator === void 0 ? {} : { coordinator: e.aggregateCoordinator }
1103
- }), Ve = W.succeed(Zn, Qt.registry));
1104
- let $t;
1105
- (e.discovered.expectations?.length ?? 0) > 0 && ($t = ir({
1103
+ }), Be = G.succeed(Qn, Xt.registry));
1104
+ let Zt;
1105
+ (e.discovered.expectations?.length ?? 0) > 0 && (Zt = ar({
1106
1106
  discovered: e.discovered.expectations ?? [],
1107
1107
  store: e.store,
1108
- log: P.child("expectation")
1109
- }), He = W.succeed(tr, $t.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = or({
1108
+ log: I.child("expectation")
1109
+ }), Ve = G.succeed(q, Zt.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = sr({
1110
1110
  discovered: e.discovered.budgets ?? [],
1111
- log: P.child("finops")
1112
- }), We = W.succeed(Qn, n.registry));
1113
- let en;
1114
- return (e.discovered.experiments?.length ?? 0) > 0 && (en = ar({
1111
+ log: I.child("finops")
1112
+ }), Ue = G.succeed($n, n.registry));
1113
+ let Qt;
1114
+ return (e.discovered.experiments?.length ?? 0) > 0 && (Qt = or({
1115
1115
  discovered: e.discovered.experiments ?? [],
1116
1116
  store: e.store,
1117
- log: P.child("experiment")
1118
- }), Ke = W.succeed(q, en.registry)), Gt = !0, e.bootTiming?.mark("ready"), {
1117
+ log: I.child("experiment")
1118
+ }), Ge = G.succeed(nr, Qt.registry)), Ut = !0, e.bootTiming?.mark("ready"), {
1119
1119
  dispatcher: r,
1120
- server: qt,
1121
- scheduler: se,
1122
- eventsSnapshot: pe(C.bus, C.declared),
1120
+ server: Gt,
1121
+ scheduler: oe,
1122
+ eventsSnapshot: fe(w.bus, w.declared),
1123
1123
  membersSnapshot: () => ({
1124
- members: Re.membership.list(),
1124
+ members: Le.membership.list(),
1125
1125
  capturedAt: Date.now()
1126
1126
  }),
1127
- agentTools: () => gt,
1128
- rpcMetrics: () => Xe,
1129
- webhooksService: () => be,
1127
+ agentTools: () => mt,
1128
+ rpcMetrics: () => Ye,
1129
+ webhooksService: () => ye,
1130
1130
  runCanceller: () => c(),
1131
1131
  flowControlHealth: () => f?.cancelHealth(),
1132
1132
  inferenceHealth: () => l?.health(),
1133
- workflowWriteActions: () => y === void 0 || j === void 0 ? void 0 : oe({
1133
+ workflowWriteActions: () => b === void 0 || N === void 0 ? void 0 : ae({
1134
1134
  store: e.store,
1135
- log: P,
1135
+ log: I,
1136
1136
  workflows: e.discovered.workflows ?? [],
1137
1137
  workflowsProxy: o,
1138
1138
  workflowRuntime: p,
1139
- workflowRunRecorder: j,
1140
- closeChildrenForParent: Pt
1139
+ workflowRunRecorder: N,
1140
+ closeChildrenForParent: Mt
1141
1141
  }),
1142
1142
  redriveWorkflowRun: (e) => ee ? ee(e) : Promise.reject(/* @__PURE__ */ Error("redrive: this app registers no workflows")),
1143
1143
  resumeWorkflowRunFromStep: (e) => te ? te(e) : Promise.reject(/* @__PURE__ */ Error("resume-from-step: this app registers no workflows")),
1144
1144
  close: async () => {
1145
- Gt = !1, await Yt.drainRequests();
1146
- for (let e of Ce) try {
1145
+ Ut = !1, await qt.drainRequests();
1146
+ for (let e of Se) try {
1147
1147
  await e();
1148
1148
  } catch (e) {
1149
- P.warn("serve: teardown step failed", {}, e);
1149
+ I.warn("serve: teardown step failed", {}, e);
1150
1150
  }
1151
- await ze?.detach(), await Re.detach(), Qt?.detach(), $t?.detach(), n?.detach(), en?.detach(), Zt?.(), Xt?.(), await se?.shutdown(), r.close(), await ne?.detach(), await p?.dispose(), await Jt(), await Yt.finish();
1151
+ await Re?.detach(), await Le.detach(), Xt?.detach(), Zt?.detach(), n?.detach(), Qt?.detach(), Yt?.(), Jt?.(), await oe?.shutdown(), r.close(), await ne?.detach(), await p?.dispose(), await Kt(), await qt.finish();
1152
1152
  }
1153
1153
  };
1154
- }, $ = F({ scope: "voltro:serve" }), Yi = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", Xi = Ht, Zi = async (e) => {
1155
- let t = xn(process.cwd());
1156
- if (En(t)) {
1154
+ }, $ = L({ scope: "voltro:serve" }), Xi = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", Zi = Bt, Qi = async (e) => {
1155
+ let t = yn(process.cwd());
1156
+ if (wn(t)) {
1157
1157
  let n;
1158
1158
  try {
1159
- let e = await import(Dn(t).href);
1159
+ let e = await import(Tn(t).href);
1160
1160
  typeof e.runServe == "function" ? n = e.runServe : $.warn("serve bundle has no runServe export — using the standard serve path");
1161
1161
  } catch (e) {
1162
1162
  $.warn("serve bundle failed to load — using the standard serve path", {}, e);
1163
1163
  }
1164
1164
  if (n) return $.info("serve: booting from the precompiled serve bundle"), n(e);
1165
1165
  }
1166
- return Qi(e);
1167
- }, Qi = async (s) => {
1168
- let u = Sn();
1166
+ return $i(e);
1167
+ }, $i = async (s) => {
1168
+ let u = bn();
1169
1169
  e("serve");
1170
1170
  try {
1171
- ui();
1171
+ di();
1172
1172
  } catch (e) {
1173
1173
  throw i(e instanceof Error ? e.message : String(e));
1174
1174
  }
1175
- let d = process.cwd(), m = await We(d), re = Ut({
1175
+ let d = process.cwd(), m = await Ue(d), re = Vt({
1176
1176
  kind: "api",
1177
1177
  configPort: m?.port,
1178
1178
  env: process.env,
1179
- flagPort: Xi(s, "--port")
1179
+ flagPort: Zi(s, "--port")
1180
1180
  });
1181
1181
  for (let e of re.warnings) $.warn(e);
1182
1182
  let h = re.port;
1183
- Kr(Wr(m?.secrets)), await M({
1183
+ Jr(Kr(m?.secrets)), await Ht({
1184
1184
  rawEnv: m?.env,
1185
1185
  appType: "api",
1186
1186
  root: d,
1187
1187
  log: $,
1188
1188
  generateTypes: !1
1189
1189
  }), u.mark("config");
1190
- let g = (process.env.DB_DIALECT ?? m?.store ?? "memory").toLowerCase(), ie = (g === "mariadb" || g === "postgres" || g === "mssql") && (process.env.CDC ?? "1") !== "0", ae = g === "mariadb" ? "mariadb" : g === "mssql" ? "mssql" : void 0, oe = bn(d);
1191
- if (!r() && En(oe)) try {
1192
- let e = await import(Dn(oe).href);
1190
+ let g = (process.env.DB_DIALECT ?? m?.store ?? "memory").toLowerCase(), ie = (g === "mariadb" || g === "postgres" || g === "mssql") && (process.env.CDC ?? "1") !== "0", _ = g === "mariadb" ? "mariadb" : g === "mssql" ? "mssql" : void 0, ae = vn(d);
1191
+ if (!r() && wn(ae)) try {
1192
+ let e = await import(Tn(ae).href);
1193
1193
  if (e.modules) {
1194
1194
  let t = {};
1195
- for (let [n, r] of Object.entries(e.modules)) t[Tn(d, n)] = r;
1195
+ for (let [n, r] of Object.entries(e.modules)) t[Cn(d, n)] = r;
1196
1196
  n(t), $.info("precompiled api bundle loaded", { modules: Object.keys(t).length });
1197
1197
  }
1198
1198
  } catch (e) {
1199
1199
  $.warn("precompiled api bundle failed to load — falling back to source", {}, e);
1200
1200
  }
1201
- let _ = await Xe(d), v = await At(_, { cdc: ie && ae !== void 0 }), fe = b(v);
1201
+ let v = await Ye(d), y = await Ot(v, { cdc: ie && _ !== void 0 }), de = x(y);
1202
1202
  {
1203
1203
  let e = /* @__PURE__ */ new Set([
1204
- ...v.queries.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1205
- ...v.mutations.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1206
- ...v.actions.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name)
1204
+ ...y.queries.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1205
+ ...y.mutations.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name),
1206
+ ...y.actions.filter((e) => e.descriptor.overridesPlugin === !0).map((e) => e.descriptor.name)
1207
1207
  ]);
1208
- Xt(P(m?.plugins ?? []), [
1209
- ...v.queries.map((e) => e.descriptor.name),
1210
- ...v.mutations.map((e) => e.descriptor.name),
1211
- ...v.actions.map((e) => e.descriptor.name),
1212
- ...v.streams.map((e) => e.descriptor.name)
1208
+ Jt(I(m?.plugins ?? []), [
1209
+ ...y.queries.map((e) => e.descriptor.name),
1210
+ ...y.mutations.map((e) => e.descriptor.name),
1211
+ ...y.actions.map((e) => e.descriptor.name),
1212
+ ...y.streams.map((e) => e.descriptor.name)
1213
1213
  ], e);
1214
- let t = je(v.serverOnlyLeaks, x(process.env, "strict"), pr, "`voltro serve`");
1214
+ let t = Ae(y.serverOnlyLeaks, S(process.env, "strict"), mr, "`voltro serve`");
1215
1215
  if (t.action === "fail") throw i(t.message ?? "");
1216
1216
  t.action === "warn" && $.warn(t.message ?? "");
1217
1217
  }
1218
- let pe = _.filter((e) => vn.test(e)), ye = pe.length > 0 ? await _n(pe, $.child("webhooks")) : {
1218
+ let fe = v.filter((e) => gn.test(e)), ve = fe.length > 0 ? await hn(fe, $.child("webhooks")) : {
1219
1219
  outgoing: [],
1220
1220
  incoming: [],
1221
1221
  providers: []
1222
- }, Ee = hn(v.events), De = ye.outgoing.length + ye.incoming.length + ye.providers.length + Ee.length === 0 ? void 0 : {
1223
- ...ye,
1224
- outgoing: [...ye.outgoing, ...Ee]
1225
- }, Oe = rn({
1222
+ }, Te = pn(y.events), Ee = ve.outgoing.length + ve.incoming.length + ve.providers.length + Te.length === 0 ? void 0 : {
1223
+ ...ve,
1224
+ outgoing: [...ve.outgoing, ...Te]
1225
+ }, De = tn({
1226
1226
  nodeEnv: process.env.NODE_ENV,
1227
- cdcDialect: ae,
1227
+ cdcDialect: _,
1228
1228
  declared: m?.schema
1229
- }), Ae = Qt({
1230
- gates: Oe,
1229
+ }), ke = Xt({
1230
+ gates: De,
1231
1231
  runtime: {
1232
- traces: _e(),
1233
- undo: $r()
1232
+ traces: ge(),
1233
+ undo: ei()
1234
1234
  }
1235
1235
  });
1236
- if (Ae !== void 0) throw i(`serve: ${Ae}`);
1237
- let Me = nn({
1238
- mix: v.featureMix,
1236
+ if (ke !== void 0) throw i(`serve: ${ke}`);
1237
+ let je = en({
1238
+ mix: y.featureMix,
1239
1239
  plugins: m?.plugins ?? [],
1240
- gates: Oe,
1241
- ...ae ? { cdcDialect: ae } : {}
1242
- }), Ne = m?.analytics !== void 0 && m.analytics.kind !== "noop" && g !== "memory" ? (await N(g)).makeSqlLayer(O()) : void 0, Ie = await c({
1240
+ gates: De,
1241
+ ..._ ? { cdcDialect: _ } : {}
1242
+ }), Me = m?.analytics !== void 0 && m.analytics.kind !== "noop" && g !== "memory" ? (await F(g)).makeSqlLayer(A()) : void 0, Fe = await c({
1243
1243
  spec: m?.analytics,
1244
- sqlLayer: Ne,
1244
+ sqlLayer: Me,
1245
1245
  log: $
1246
- }), S = (() => {
1247
- let e = new Set(v.tables.map((e) => e.tableName)), t = [...v.tables];
1248
- for (let n of [...Me, ...Ie.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1246
+ }), C = (() => {
1247
+ let e = new Set(y.tables.map((e) => e.tableName)), t = [...y.tables];
1248
+ for (let n of [...je, ...Fe.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1249
1249
  return t;
1250
1250
  })();
1251
- for (let e of S) Xn(e);
1251
+ for (let e of C) Xn(e);
1252
1252
  {
1253
- let e = mr(ei(v.queries.map((e) => ({
1253
+ let e = hr(ti(y.queries.map((e) => ({
1254
1254
  name: e.descriptor.name,
1255
1255
  source: e.descriptor.source
1256
- })), new Set(S.flatMap((e) => {
1256
+ })), new Set(C.flatMap((e) => {
1257
1257
  let t = e.tableName;
1258
1258
  return t === void 0 ? [] : [t];
1259
1259
  }))));
1260
1260
  e !== void 0 && $.warn(e);
1261
1261
  }
1262
- let Le = (process.env.NODE_ENV ?? "").toLowerCase();
1263
- if (Yi(Le, g, process.env.VOLTRO_AUTO_MIGRATE)) {
1264
- let e = (await N(g)).makeSqlLayer(O()), t = await U.runPromise(Vn.SqlClient.pipe(U.flatMap((e) => Wn(e, d)), U.provide(e), U.catchAll(() => U.succeed([]))));
1262
+ let Ie = (process.env.NODE_ENV ?? "").toLowerCase();
1263
+ if (Xi(Ie, g, process.env.VOLTRO_AUTO_MIGRATE)) {
1264
+ let e = (await F(g)).makeSqlLayer(A()), t = await W.runPromise(Vn.SqlClient.pipe(W.flatMap((e) => Wn(e, d)), W.provide(e), W.catchAll(() => W.succeed([]))));
1265
1265
  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));
1266
- let n = await U.runPromise(Vn.SqlClient.pipe(U.flatMap((e) => Gn(e, S, {
1267
- appliedBy: `serve:${Le}`,
1266
+ let n = await W.runPromise(Vn.SqlClient.pipe(W.flatMap((e) => Gn(e, C, {
1267
+ appliedBy: `serve:${Ie}`,
1268
1268
  environment: "prod",
1269
1269
  dialectId: g
1270
- })), U.provide(e)));
1271
- n.kind === "prod-mismatch" && ($.error(Un(n, g)), $.error(en({
1272
- gates: Oe,
1270
+ })), W.provide(e)));
1271
+ n.kind === "prod-mismatch" && ($.error(Un(n, g)), $.error(Qt({
1272
+ gates: De,
1273
1273
  nodeEnv: process.env.NODE_ENV,
1274
- cdcDialect: ae,
1274
+ cdcDialect: _,
1275
1275
  declared: m?.schema
1276
1276
  })), $.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(Un(n, g));
1277
1277
  }
1278
- await Yt({
1278
+ await qt({
1279
1279
  dialectId: g,
1280
- tables: S,
1281
- mode: qt(m?.reactiveTriggers),
1282
- lockSchema: O().schema,
1283
- makeLayer: async () => (await N(g)).makeSqlLayer(O()),
1280
+ tables: C,
1281
+ mode: Gt(m?.reactiveTriggers),
1282
+ lockSchema: A().schema,
1283
+ makeLayer: async () => (await F(g)).makeSqlLayer(A()),
1284
1284
  log: {
1285
1285
  info: (e, t) => $.info(e, t ?? {}),
1286
1286
  warn: (e, t) => $.warn(e, t ?? {})
1287
1287
  }
1288
1288
  });
1289
- let Ue = Ir(S);
1289
+ let He = Lr(C);
1290
1290
  u.mark("discover");
1291
- let w = await it(m, void 0), Ge = ri(w, g);
1292
- for (let e of pt({
1291
+ let T = await nt(m, void 0), We = ii(T, g);
1292
+ for (let e of dt({
1293
1293
  dialect: String(m?.store ?? process.env.DB_DIALECT ?? "postgres"),
1294
1294
  changeStrategy: (process.env.CDC ?? "1") === "0" ? "inline" : "cdc",
1295
1295
  dbUrl: process.env.DB_URL,
1296
- crossReplicaBus: Si(m?.plugins ?? [])?.broadcast.crossReplica === !0,
1297
- tables: v.tables.map((e) => ({
1296
+ crossReplicaBus: Ci(m?.plugins ?? [])?.broadcast.crossReplica === !0,
1297
+ tables: y.tables.map((e) => ({
1298
1298
  tableName: e.tableName,
1299
1299
  isReactive: e.isReactive === !0
1300
1300
  })),
1301
- querySources: v.queries.flatMap((e) => {
1301
+ querySources: y.queries.flatMap((e) => {
1302
1302
  let t = e.descriptor.source;
1303
1303
  return t === void 0 ? [] : typeof t == "string" ? [t] : [...t];
1304
1304
  })
1305
1305
  })) e.level === "warn" ? $.warn(e.message) : $.info(e.message);
1306
1306
  {
1307
- let e = Ze({
1307
+ let e = E({
1308
1308
  tables: qn().map((e) => ({ tableName: e.tableName })),
1309
- queries: v.queries.map((e) => ({
1309
+ queries: y.queries.map((e) => ({
1310
1310
  name: e.descriptor.name,
1311
1311
  source: e.descriptor.source
1312
1312
  }))
1313
- }), t = vt(e);
1313
+ }), t = gt(e);
1314
1314
  t !== void 0 && $.warn(t);
1315
1315
  }
1316
1316
  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);
1317
- let { service: qe, invalidationBus: rt, snapshotCache: st, cache: ct, semantic: dt, evictSource: ht, backend: bt, stats: xt, dispose: Ct } = await Ke({
1317
+ let { service: Ke, invalidationBus: tt, snapshotCache: at, cache: ot, semantic: lt, evictSource: pt, backend: vt, stats: yt, dispose: xt } = await Ge({
1318
1318
  env: process.env,
1319
1319
  semantic: m?.cacheSemantic ?? !1
1320
1320
  });
1321
- dt !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${bt}` + (bt === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), w.onChange((e) => {
1322
- if (U.runFork(rt.publish(e.table)), ht !== void 0) {
1321
+ lt !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${vt}` + (vt === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), T.onChange((e) => {
1322
+ if (W.runFork(tt.publish(e.table)), pt !== void 0) {
1323
1323
  let t = (e.new ?? e.old)?.id;
1324
- ht({
1324
+ pt({
1325
1325
  table: e.table,
1326
1326
  op: e.op,
1327
1327
  ...t === void 0 ? {} : { id: t }
1328
1328
  });
1329
1329
  }
1330
1330
  }), 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);
1331
- let { kv: Tt, service: Et } = await wr({ store: w });
1332
- He({
1331
+ let { kv: Ct, service: wt } = await Tr({ store: T });
1332
+ Ve({
1333
1333
  log: $,
1334
- max: Kt(),
1335
- outOfPool: zt(g, (process.env.CDC ?? "1") !== "0"),
1334
+ max: Wt(),
1335
+ outOfPool: Lt(g, (process.env.CDC ?? "1") !== "0"),
1336
1336
  readPools: t.replicationSnapshot()?.replicaCount ?? 0,
1337
1337
  always: !0
1338
1338
  }), u.mark("store");
1339
- let Ot = rr({
1340
- store: w,
1341
- sink: Ie.sink,
1339
+ let Et = ir({
1340
+ store: T,
1341
+ sink: Fe.sink,
1342
1342
  log: $
1343
- }), Mt = jt({
1344
- store: w,
1343
+ }), At = kt({
1344
+ store: T,
1345
1345
  dialect: g,
1346
1346
  log: { info: (e) => $.info(e) }
1347
- }), k = m?.plugins ?? [], Lt = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Bt, Vt;
1348
- g !== "memory" && (Bt = Bn.make((await N(g)).makeSqlLayer(O())), Vt = await Bt.runPromise(Vn.SqlClient));
1349
- let Ht = [
1347
+ }), j = m?.plugins ?? [], Ft = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Rt, zt;
1348
+ g !== "memory" && (Rt = Bn.make((await F(g)).makeSqlLayer(A())), zt = await Rt.runPromise(Vn.SqlClient));
1349
+ let Bt = [
1350
1350
  "postgres",
1351
1351
  "mariadb",
1352
1352
  "mysql",
1353
1353
  "mssql"
1354
- ].includes(g) ? br(w, Lt, $) : Yr, gn = C(m?.scheduling), xn = Er({
1355
- maxIdleIntervalMs: gn.pollCeilingMs,
1356
- coordinator: Ht,
1357
- replicaId: Lt,
1354
+ ].includes(g) ? xr(T, Ft, $) : Xr, mn = w(m?.scheduling), yn = Dr({
1355
+ maxIdleIntervalMs: mn.pollCeilingMs,
1356
+ coordinator: Bt,
1357
+ replicaId: Ft,
1358
1358
  log: $
1359
- }), Cn = [], F = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, On = Si(m?.plugins ?? [])?.broadcast?.provider, kn = $e(m?.plugins, m?.name ?? wn(d));
1359
+ }), xn = [], L = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, En = Ci(m?.plugins ?? [])?.broadcast?.provider, Dn = Ze(m?.plugins, m?.name ?? Sn(d));
1360
1360
  {
1361
- let e = nt(m?.plugins, m?.name ?? wn(d));
1361
+ let e = et(m?.plugins, m?.name ?? Sn(d));
1362
1362
  e !== void 0 && $.warn(e);
1363
1363
  }
1364
- let I = Nt(m?.plugins, {
1365
- instanceId: F,
1366
- namespace: kn,
1364
+ let R = jt(m?.plugins, {
1365
+ instanceId: L,
1366
+ namespace: Dn,
1367
1367
  meta: { mode: "serve" },
1368
1368
  logger: $
1369
- }), An = {
1370
- ...Vt ? { sql: Vt } : {},
1371
- instanceId: F,
1372
- membership: I.membership,
1373
- ...On === void 0 ? {} : { broadcast: On },
1374
- broadcastChannels: { presence: xi(kn, "presence") },
1369
+ }), On = {
1370
+ ...zt ? { sql: zt } : {},
1371
+ instanceId: L,
1372
+ membership: R.membership,
1373
+ ...En === void 0 ? {} : { broadcast: En },
1374
+ broadcastChannels: { presence: Si(Dn, "presence") },
1375
1375
  scheduleCoordinated: (e, t, n) => {
1376
- let r = xn(e, t, n);
1377
- return Cn.push(r), r;
1376
+ let r = yn(e, t, n);
1377
+ return xn.push(r), r;
1378
1378
  }
1379
1379
  };
1380
- for (let e of k) e.bindDataStore?.(Ge, An);
1380
+ for (let e of j) e.bindDataStore?.(We, On);
1381
1381
  l({
1382
- store: w,
1383
- ...lt(),
1382
+ store: T,
1383
+ ...st(),
1384
1384
  log: $
1385
1385
  });
1386
- let jn = k.filter((e) => typeof e.onChangeEvent == "function");
1387
- if (jn.length > 0) {
1388
- let e = w.changeScope ?? "local";
1389
- w.onChange((t) => {
1390
- let n = me(t, e);
1391
- for (let e of jn) U.runFork(e.onChangeEvent(n).pipe(U.catchAllCause((t) => U.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: zn.pretty(t) })))));
1386
+ let kn = j.filter((e) => typeof e.onChangeEvent == "function");
1387
+ if (kn.length > 0) {
1388
+ let e = T.changeScope ?? "local";
1389
+ T.onChange((t) => {
1390
+ let n = pe(t, e);
1391
+ for (let e of kn) W.runFork(e.onChangeEvent(n).pipe(W.catchAllCause((t) => W.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: zn.pretty(t) })))));
1392
1392
  });
1393
1393
  }
1394
- let L = ce({
1395
- plugins: k,
1394
+ let z = se({
1395
+ plugins: j,
1396
1396
  appName: m?.name ?? "voltro-api",
1397
1397
  appType: "api",
1398
1398
  voltroVersion: process.env.npm_package_version ?? "0.0.0",
1399
1399
  log: $
1400
1400
  });
1401
- k.length && await L.activate(), u.mark("plugins");
1402
- let R = await L.gatherObservability(), Mn = {
1401
+ j.length && await z.activate(), u.mark("plugins");
1402
+ let B = await z.gatherObservability(), An = {
1403
1403
  info: (e, t) => process.stdout.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
1404
1404
  warn: (e, t) => process.stderr.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
1405
1405
  debug: () => {}
1406
- }, Nn, Pn = await _t(w, m, g, kn, Mn, (e, t) => {
1407
- Nn?.refreshAll(`broadcast gap: missed ${t} change(s) from ${e}`);
1408
- }), z = m?.apiKeys, Fn = (typeof z == "object" ? z.prefix : void 0) ?? "voltro_", B = z ? fr(w) : void 0, V = B ? Sr({ flush: Cr(B) }) : void 0;
1409
- V && Br(() => V.shutdown());
1410
- let H = B ? xr(B, {
1411
- prefix: Fn,
1412
- ...V ? { usage: V } : {}
1413
- }) : void 0, In = H ? [hr(H, { prefix: Fn })] : [], Ln = St([...m?.auth?.strategies ?? [], ...In], yi(m?.plugins ?? []), m?.auth?.anonymousTenantRequired ?? !1, m?.auth, () => Ge), Rn = [...m?.restRoutes ?? [], ...H ? nr(H, (typeof z == "object" ? z.managementPath : void 0) ?? "/v1/api-keys") : []], Kn = D(m?.idempotency, w), Jn = k.map((e) => e.services).filter((e) => e !== void 0), G = W.mergeAll(ze({
1414
- analyticsLayer: Ie.layer,
1415
- cacheService: qe,
1416
- kvService: Et,
1417
- ...dt === void 0 ? {} : { semanticCache: dt },
1418
- pluginServices: Jn,
1406
+ }, jn, Mn = await ht(T, m, g, Dn, An, (e, t) => {
1407
+ jn?.refreshAll(`broadcast gap: missed ${t} change(s) from ${e}`);
1408
+ }), V = m?.apiKeys, Nn = (typeof V == "object" ? V.prefix : void 0) ?? "voltro_", Pn = V ? pr(T) : void 0, H = Pn ? Cr({ flush: wr(Pn) }) : void 0;
1409
+ H && Vr(() => H.shutdown());
1410
+ let U = Pn ? Sr(Pn, {
1411
+ prefix: Nn,
1412
+ ...H ? { usage: H } : {}
1413
+ }) : void 0, Fn = U ? [gr(U, { prefix: Nn })] : [], In = bt([...m?.auth?.strategies ?? [], ...Fn], bi(m?.plugins ?? []), m?.auth?.anonymousTenantRequired ?? !1, m?.auth, () => We), Ln = [...m?.restRoutes ?? [], ...U ? rr(U, (typeof V == "object" ? V.managementPath : void 0) ?? "/v1/api-keys") : []], Rn = k(m?.idempotency, T), Kn = j.map((e) => e.services).filter((e) => e !== void 0), Jn = G.mergeAll(Re({
1414
+ analyticsLayer: Fe.layer,
1415
+ cacheService: Ke,
1416
+ kvService: wt,
1417
+ ...lt === void 0 ? {} : { semanticCache: lt },
1418
+ pluginServices: Kn,
1419
1419
  userLayers: m?.layers ?? []
1420
- }), at(m?.http ?? {})), K = await ot({
1421
- files: _,
1422
- store: w,
1420
+ }), rt(m?.http ?? {})), K = await it({
1421
+ files: v,
1422
+ store: T,
1423
1423
  log: $,
1424
1424
  seedPolicy: "report",
1425
- seedPattern: dn,
1426
- loadSeedFiles: Jt,
1427
- startupPattern: on,
1425
+ seedPattern: ln,
1426
+ loadSeedFiles: Kt,
1427
+ startupPattern: rn,
1428
1428
  loadStartupFiles: a,
1429
1429
  runStartups: o,
1430
- emailPattern: Be,
1431
- loadEmailFiles: gt,
1432
- registerEmailTemplates: bi
1430
+ emailPattern: ze,
1431
+ loadEmailFiles: mt,
1432
+ registerEmailTemplates: xi
1433
1433
  });
1434
1434
  (K.startupCount > 0 || K.emailCount > 0) && $.info("boot lifecycle", {
1435
1435
  startups: K.startupCount,
1436
1436
  emailTemplates: K.emailCount
1437
- }), K.startups !== void 0 && Br(async () => {
1437
+ }), K.startups !== void 0 && Vr(async () => {
1438
1438
  await K.startups.stop();
1439
- }), se({
1440
- demands: de(fe),
1441
- isRegistered: (e) => gr(e) !== void 0
1439
+ }), oe({
1440
+ demands: ue(de),
1441
+ isRegistered: (e) => _r(e) !== void 0
1442
1442
  });
1443
- let Zn = mt({
1444
- schedules: wt({
1445
- schedules: v.schedules,
1443
+ let Zn = ft({
1444
+ schedules: St({
1445
+ schedules: y.schedules,
1446
1446
  seeds: K.seeds,
1447
- store: w,
1447
+ store: T,
1448
1448
  log: $.child("seeds")
1449
1449
  }),
1450
- workflows: v.workflows ?? [],
1450
+ workflows: y.workflows ?? [],
1451
1451
  log: $.child("workflow-schedules")
1452
1452
  }), Qn = m?.scheduling ?? {}, $n = Qn.trigger ?? "self", er = /* @__PURE__ */ new Set([
1453
1453
  "postgres",
1454
1454
  "mysql",
1455
1455
  "mariadb",
1456
1456
  "mssql"
1457
- ]), tr = Qn.coordination ?? (er.has(g) ? "advisoryLock" : "single"), q = tr === "cluster" && er.has(g), ir = q ? "cluster" : tr === "advisoryLock" && er.has(g) ? "advisoryLock" : "single";
1457
+ ]), tr = Qn.coordination ?? (er.has(g) ? "advisoryLock" : "single"), q = tr === "cluster" && er.has(g), nr = q ? "cluster" : tr === "advisoryLock" && er.has(g) ? "advisoryLock" : "single";
1458
1458
  tr === "cluster" && !q && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), tr === "advisoryLock" && !er.has(g) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
1459
- let ar, or = v.workflows.length > 0 || v.workflowWorkers.length > 0 || v.eventTriggers.length > 0 || (De?.outgoing.length ?? 0) > 0 || q, sr;
1459
+ let ar, or = y.workflows.length > 0 || y.workflowWorkers.length > 0 || y.eventTriggers.length > 0 || (Ee?.outgoing.length ?? 0) > 0 || q, sr;
1460
1460
  if (or) {
1461
1461
  if (g === "mssql") {
1462
- let e = await mn(process.cwd());
1462
+ let e = await fn(process.cwd());
1463
1463
  e && $.warn(e);
1464
1464
  }
1465
1465
  let [{ WorkflowEngine: e }, { makeClusterCronLayer: t, workflowEngineLayer: n, resolveRunnerStorage: r, resolveFailoverTuning: i }] = await Promise.all([import("@effect/workflow"), import("@voltro/workflow/cluster")]), a = q ? Zn.filter((e) => (e.trigger ?? $n) === "self").map((e) => t({
1466
1466
  name: e.name,
1467
- cron: dr(e),
1467
+ cron: fr(e),
1468
1468
  execute: async () => {
1469
1469
  await ar?.fireFromCluster(e.name);
1470
1470
  }
1471
1471
  })) : [];
1472
1472
  sr = g === "memory" ? e.layerMemory : await (async () => {
1473
- let e = await N(g), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
1473
+ let e = await F(g), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
1474
1474
  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({
1475
- sqlClientLayer: e.makeSqlLayer(O()),
1475
+ sqlClientLayer: e.makeSqlLayer(A()),
1476
1476
  runnerStorage: t,
1477
1477
  dialectId: e.id,
1478
1478
  ...process.env.VOLTRO_WORKFLOW_RUNNER_PORT ? { runnerListenPort: Number(process.env.VOLTRO_WORKFLOW_RUNNER_PORT) } : {},
@@ -1481,19 +1481,19 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1481
1481
  });
1482
1482
  })();
1483
1483
  }
1484
- let J = le(k, yn()), cr = _.filter((e) => /\.subscribe\.tsx?$/.test(e)), Y = cr.length > 0 ? await be(cr, $) : [], lr = _.filter((e) => /\.reaction\.tsx?$/.test(e)), ur = lr.length > 0 ? await y(lr, $) : [], _r = _.filter((e) => ln.test(e)), vr = _r.length > 0 ? await Fe(_r, $) : [], yr = _.filter((e) => /\.aggregate\.tsx?$/.test(e)), Tr = yr.length > 0 ? await te(yr, $) : [], Dr = ge();
1485
- if (Tr.length > 0 && g !== "memory") try {
1486
- let e = (await N(g)).makeSqlLayer(O());
1487
- Dr = ut(e);
1484
+ let cr = ce(j, _n()), J = v.filter((e) => /\.subscribe\.tsx?$/.test(e)), lr = J.length > 0 ? await ye(J, $) : [], Y = v.filter((e) => /\.reaction\.tsx?$/.test(e)), ur = Y.length > 0 ? await b(Y, $) : [], dr = v.filter((e) => sn.test(e)), vr = dr.length > 0 ? await Pe(dr, $) : [], yr = v.filter((e) => /\.aggregate\.tsx?$/.test(e)), br = yr.length > 0 ? await te(yr, $) : [], Er = he();
1485
+ if (br.length > 0 && g !== "memory") try {
1486
+ let e = (await F(g)).makeSqlLayer(A());
1487
+ Er = ct(e);
1488
1488
  } catch (e) {
1489
1489
  $.warn("aggregate: SQL storage init failed — falling back to in-process", { err: String(e) });
1490
1490
  }
1491
- let Or = g === "memory" ? Yr : br(w, `aggregate@${process.pid}`, $), kr = _.filter((e) => un.test(e)), Ar = kr.length > 0 ? await p(kr, $) : [], jr = _.filter((e) => cn.test(e)), Mr = jr.length > 0 ? await we(jr, $) : [], Nr = _.filter((e) => sn.test(e)), Pr = Nr.length > 0 ? await Pt(Nr, $) : [], Fr = [], Lr = [], Rr = _.filter((e) => tn.test(e));
1491
+ let Or = g === "memory" ? Xr : xr(T, `aggregate@${process.pid}`, $), kr = v.filter((e) => cn.test(e)), Ar = kr.length > 0 ? await p(kr, $) : [], jr = v.filter((e) => on.test(e)), Mr = jr.length > 0 ? await Ce(jr, $) : [], Nr = v.filter((e) => an.test(e)), Pr = Nr.length > 0 ? await Mt(Nr, $) : [], Fr = [], Ir = [], Rr = v.filter((e) => $t.test(e));
1492
1492
  if (Rr.length > 0) {
1493
- let e = $.child("agent"), t = _.filter((e) => $t.test(e));
1494
- t.length > 0 && await an(t, e);
1495
- let n = await Zt(Rr, e);
1496
- for (let e of n.agents) for (let t of Ye(e)) (t.kind === "action" ? Fr : Lr).push({
1493
+ let e = $.child("agent"), t = v.filter((e) => Zt.test(e));
1494
+ t.length > 0 && await nn(t, e);
1495
+ let n = await Yt(Rr, e);
1496
+ for (let e of n.agents) for (let t of Je(e)) (t.kind === "action" ? Fr : Ir).push({
1497
1497
  file: t.file,
1498
1498
  descriptor: t.descriptor,
1499
1499
  executor: t.executor
@@ -1507,32 +1507,32 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1507
1507
  return e;
1508
1508
  }, zr = Yn({
1509
1509
  dialect: g,
1510
- ...O()
1511
- }), Vr = g === "memory" ? void 0 : (await N(g)).makeSqlLayer(O()), Hr = async () => kt({
1512
- sqlLayer: Vr,
1513
- declared: S,
1510
+ ...A()
1511
+ }), Br = g === "memory" ? void 0 : (await F(g)).makeSqlLayer(A()), Hr = async () => Dt({
1512
+ sqlLayer: Br,
1513
+ declared: C,
1514
1514
  log: $
1515
1515
  }), Ur = {
1516
1516
  kind: "api",
1517
1517
  meta: {
1518
1518
  name: m?.name ?? "voltro-api",
1519
- voltroVersion: Dt,
1519
+ voltroVersion: Tt,
1520
1520
  port: h,
1521
1521
  mode: "start",
1522
1522
  store: g,
1523
1523
  cdc: ie ? "on" : "off",
1524
1524
  ...zr === void 0 ? {} : { databaseId: zr }
1525
1525
  },
1526
- rpc: et(v, d),
1527
- workflows: Re(v, d),
1526
+ rpc: Qe(y, d),
1527
+ workflows: Le(y, d),
1528
1528
  migrations: Hr,
1529
1529
  events: () => Z.eventsSnapshot(),
1530
1530
  agentTools: () => Z.agentTools(),
1531
1531
  invariantChecks: () => ({
1532
1532
  mode: "serve",
1533
- accessGate: fe,
1533
+ accessGate: de,
1534
1534
  config: m,
1535
- serverOnlyLeaks: v.serverOnlyLeaks,
1535
+ serverOnlyLeaks: y.serverOnlyLeaks,
1536
1536
  migrations: Hr
1537
1537
  }),
1538
1538
  members: () => Z.membersSnapshot(),
@@ -1544,48 +1544,48 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1544
1544
  getHandle: () => ar,
1545
1545
  getSchedules: () => Zn
1546
1546
  }),
1547
- ...De === void 0 ? {} : { webhooks: () => he({
1548
- store: w,
1549
- discoveredWebhooks: De
1547
+ ...Ee === void 0 ? {} : { webhooks: () => me({
1548
+ store: T,
1549
+ discoveredWebhooks: Ee
1550
1550
  }) },
1551
1551
  plugins: () => ({
1552
- plugins: L.snapshot(),
1552
+ plugins: z.snapshot(),
1553
1553
  capturedAt: Date.now()
1554
1554
  }),
1555
- env: () => Wt(m?.name ?? wn(d), {
1556
- ...m?.env !== void 0 && li(m.env) ? { contract: m.env } : {},
1555
+ env: () => P(m?.name ?? Sn(d), {
1556
+ ...m?.env !== void 0 && ui(m.env) ? { contract: m.env } : {},
1557
1557
  plugins: m?.plugins ?? []
1558
1558
  }),
1559
- dataCache: () => Ve({
1560
- stats: xt,
1561
- backendKind: bt
1559
+ dataCache: () => Be({
1560
+ stats: yt,
1561
+ backendKind: vt
1562
1562
  }),
1563
- subscriptions: () => Ft(() => Nn),
1564
- inspectTables: () => ue(v.tables),
1565
- inspectRows: xe({
1566
- store: w,
1567
- tables: v.tables,
1563
+ subscriptions: () => Nt(() => jn),
1564
+ inspectTables: () => le(y.tables),
1565
+ inspectRows: be({
1566
+ store: T,
1567
+ tables: y.tables,
1568
1568
  mask: !0
1569
1569
  }),
1570
1570
  metrics: (e) => Z.rpcMetrics().snapshot(e),
1571
- cluster: () => Rt({
1572
- store: w,
1571
+ cluster: () => It({
1572
+ store: T,
1573
1573
  dialect: g,
1574
1574
  useClusterCron: q,
1575
1575
  scheduleCoordChoice: tr
1576
1576
  }),
1577
- inspectSchedules: () => Te({
1577
+ inspectSchedules: () => we({
1578
1578
  schedules: Zn,
1579
1579
  defaultTrigger: $n,
1580
- coordination: ir
1580
+ coordination: nr
1581
1581
  }),
1582
- inspectScheduleRuns: (e) => j(w, e),
1583
- ...f(w, {
1584
- controls: E(v.workflows ?? []),
1585
- active: (v.workflows?.length ?? 0) > 0,
1582
+ inspectScheduleRuns: (e) => N(T, e),
1583
+ ...f(T, {
1584
+ controls: O(y.workflows ?? []),
1585
+ active: (y.workflows?.length ?? 0) > 0,
1586
1586
  cancellation: () => Z.flowControlHealth()
1587
1587
  }),
1588
- webhookActions: Se(() => Z.webhooksService()),
1588
+ webhookActions: xe(() => Z.webhooksService()),
1589
1589
  inspectStartWorkflow: (e) => X().inspectStartWorkflow(e),
1590
1590
  inspectCancelWorkflowRun: (e) => X().inspectCancelWorkflowRun(e),
1591
1591
  inspectSuspendWorkflowRun: (e) => X().inspectSuspendWorkflowRun(e),
@@ -1594,13 +1594,13 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1594
1594
  inspectRetryWorkflowRun: (e) => X().inspectRetryWorkflowRun(e),
1595
1595
  inspectSignalWorkflowRun: (e) => X().inspectSignalWorkflowRun(e),
1596
1596
  inspectUpdateWorkflowRun: (e) => X().inspectUpdateWorkflowRun(e),
1597
- inspectInferences: (e) => Qe({
1598
- store: w,
1599
- active: (v.workflows?.length ?? 0) > 0,
1597
+ inspectInferences: (e) => Xe({
1598
+ store: T,
1599
+ active: (y.workflows?.length ?? 0) > 0,
1600
1600
  dispatcher: () => Z.inferenceHealth()
1601
1601
  }, e.limit === void 0 ? {} : { limit: e.limit }),
1602
- ...yt({
1603
- store: w,
1602
+ ..._t({
1603
+ store: T,
1604
1604
  cancelRun: async (e) => await Z.runCanceller()?.(e) ?? !1,
1605
1605
  retryRun: async (e) => X().inspectRetryWorkflowRun({ runId: e }),
1606
1606
  redriveRun: async (e) => Z.redriveWorkflowRun({ runId: e }),
@@ -1608,11 +1608,11 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1608
1608
  }),
1609
1609
  inspectRedriveWorkflowRun: (e) => Z.redriveWorkflowRun(e),
1610
1610
  inspectResumeWorkflowRunFromStep: (e) => Z.resumeWorkflowRunFromStep(e)
1611
- }, Gr = (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace", qr = Gr && g !== "memory" ? await (async () => {
1612
- let e = await N(g);
1613
- return T({
1614
- tables: S,
1615
- sqlLayer: e.makeSqlLayer(O()),
1611
+ }, Wr = (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace", Gr = Wr && g !== "memory" ? await (async () => {
1612
+ let e = await F(g);
1613
+ return D({
1614
+ tables: C,
1615
+ sqlLayer: e.makeSqlLayer(A()),
1616
1616
  dialect: g,
1617
1617
  options: { retryFilter: e.retryFilter },
1618
1618
  log: {
@@ -1620,110 +1620,110 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1620
1620
  error: (e, t, n) => $.error(e, t ?? {}, n)
1621
1621
  }
1622
1622
  });
1623
- })() : void 0, Jr = await ft({
1623
+ })() : void 0, qr = await ut({
1624
1624
  input: m?.tenancy?.residency,
1625
- namespaceIsolationOn: Gr,
1626
- makeStoreForUrl: (e, t) => it(m, void 0, Gt(O(), t)),
1625
+ namespaceIsolationOn: Wr,
1626
+ makeStoreForUrl: (e, t) => nt(m, void 0, Ut(A(), t)),
1627
1627
  log: {
1628
1628
  info: (e, t) => $.info(e, t),
1629
1629
  warn: (e, t) => $.warn(e, t)
1630
1630
  }
1631
1631
  });
1632
- Jr !== void 0 && Br(async () => {
1633
- await Jr.close();
1632
+ qr !== void 0 && Vr(async () => {
1633
+ await qr.close();
1634
1634
  });
1635
- let Z = await Ji({
1635
+ let Z = await Yi({
1636
1636
  bootTiming: u,
1637
- broadcastNamespace: kn,
1637
+ broadcastNamespace: Dn,
1638
1638
  scheduling: (() => {
1639
- let e = gn;
1639
+ let e = mn;
1640
1640
  return {
1641
1641
  admissionDrainMs: e.admissionDrainMs,
1642
1642
  inferenceTickMs: e.inferenceTickMs,
1643
1643
  cancelSweepMs: e.cancelSweepMs,
1644
1644
  stalenessSweepMs: e.stalenessSweepMs,
1645
- disarmWhenIdle: tt({
1646
- changeScope: w.changeScope,
1647
- broadcastAttached: Pn !== void 0
1645
+ disarmWhenIdle: $e({
1646
+ changeScope: T.changeScope,
1647
+ broadcastAttached: Mn !== void 0
1648
1648
  })
1649
1649
  };
1650
1650
  })(),
1651
1651
  ...m?.workflows?.staleness === void 0 ? {} : { workflowStaleness: m.workflows.staleness },
1652
1652
  ...m?.workflows?.suspendSignalHintMs === void 0 ? {} : { workflowSuspendSignalHintMs: m.workflows.suspendSignalHintMs },
1653
- workflowRecording: A(m?.workflows?.recording),
1653
+ workflowRecording: M(m?.workflows?.recording),
1654
1654
  membership: {
1655
- ...I,
1656
- instanceId: F
1655
+ ...R,
1656
+ instanceId: L
1657
1657
  },
1658
1658
  security: {
1659
- defaultDeny: ke(m),
1660
- ...ve(m)
1659
+ defaultDeny: Oe(m),
1660
+ ..._e(m)
1661
1661
  },
1662
- approvals: { defaultExpiryMs: Pe(m) },
1662
+ approvals: { defaultExpiryMs: Ne(m) },
1663
1663
  ...m?.plugins === void 0 ? {} : { plugins: m.plugins },
1664
- ...Kn ? { idempotency: Kn } : {},
1665
- restRoutes: Rn,
1666
- appProcedures: fe,
1664
+ ...Rn ? { idempotency: Rn } : {},
1665
+ restRoutes: Ln,
1666
+ appProcedures: de,
1667
1667
  discovered: {
1668
- queries: [...v.queries, ...Lr],
1669
- mutations: v.mutations,
1670
- actions: [...v.actions, ...Fr],
1671
- streams: v.streams,
1672
- events: v.events,
1673
- workflows: v.workflows,
1674
- workflowWorkers: v.workflowWorkers,
1675
- eventTriggers: v.eventTriggers,
1668
+ queries: [...y.queries, ...Ir],
1669
+ mutations: y.mutations,
1670
+ actions: [...y.actions, ...Fr],
1671
+ streams: y.streams,
1672
+ events: y.events,
1673
+ workflows: y.workflows,
1674
+ workflowWorkers: y.workflowWorkers,
1675
+ eventTriggers: y.eventTriggers,
1676
1676
  schedules: Zn,
1677
- subscribers: Y,
1677
+ subscribers: lr,
1678
1678
  outboxHandlers: vr,
1679
- connections: v.connections,
1679
+ connections: y.connections,
1680
1680
  reactions: ur,
1681
- aggregates: Tr,
1681
+ aggregates: br,
1682
1682
  expectations: Ar,
1683
1683
  budgets: Mr,
1684
1684
  experiments: Pr,
1685
- ...De === void 0 ? {} : { webhooks: De }
1685
+ ...Ee === void 0 ? {} : { webhooks: Ee }
1686
1686
  },
1687
1687
  log: $,
1688
- analytics: Ie.sink,
1689
- aggregateStorage: Dr,
1688
+ analytics: Fe.sink,
1689
+ aggregateStorage: Er,
1690
1690
  aggregateCoordinator: Or,
1691
- store: w,
1692
- kv: Tt,
1693
- cache: ct,
1694
- snapshotCache: st,
1691
+ store: T,
1692
+ kv: Ct,
1693
+ cache: ot,
1694
+ snapshotCache: at,
1695
1695
  ...m?.reactive === void 0 ? {} : { reactive: m.reactive },
1696
- schemaRegistry: Ue,
1697
- tenantScopedTables: v.tenantScopedTables,
1698
- softDeleteScopedTables: v.softDeleteScopedTables,
1699
- dataTransferSnapshot: Hn(S),
1696
+ schemaRegistry: He,
1697
+ tenantScopedTables: y.tenantScopedTables,
1698
+ softDeleteScopedTables: y.softDeleteScopedTables,
1699
+ dataTransferSnapshot: Hn(C),
1700
1700
  dataTransferDialect: g,
1701
- ...qr === void 0 ? {} : { ensureTenantProvisioned: qr.ensure },
1702
- ...Jr === void 0 ? {} : { resolveResidentStore: Jr.resolveStore },
1701
+ ...Gr === void 0 ? {} : { ensureTenantProvisioned: Gr.ensure },
1702
+ ...qr === void 0 ? {} : { resolveResidentStore: qr.resolveStore },
1703
1703
  tenantIsolation: (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace" ? "namespace" : "shared-schema",
1704
- resolveSubject: (e, t) => Ln({
1704
+ resolveSubject: (e, t) => In({
1705
1705
  headers: e,
1706
1706
  clientId: t
1707
1707
  }),
1708
1708
  ...m?.auth === void 0 ? {} : { authority: m.auth },
1709
1709
  ...m?.agents === void 0 ? {} : { agents: m.agents },
1710
- httpRoutes: k.flatMap((e) => e.httpRoutes ?? []),
1711
- getStore: () => Ge,
1712
- ...G ? { baseLayer: G } : {},
1710
+ httpRoutes: j.flatMap((e) => e.httpRoutes ?? []),
1711
+ getStore: () => We,
1712
+ ...Jn ? { baseLayer: Jn } : {},
1713
1713
  ...sr === void 0 ? {} : { workflowEngineLayer: sr },
1714
1714
  scheduleDefaultTrigger: $n,
1715
- scheduleCoordination: ir,
1715
+ scheduleCoordination: nr,
1716
1716
  scheduleArmSelf: !q,
1717
1717
  dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : m?.dormancy ?? "always-on",
1718
1718
  scheduleReplicaId: process.env.HOSTNAME ?? `pid-${process.pid}`,
1719
- ...J === void 0 ? {} : { scheduleFireInterceptor: J },
1719
+ ...cr === void 0 ? {} : { scheduleFireInterceptor: cr },
1720
1720
  onSchedulerReady: (e) => {
1721
1721
  ar = e;
1722
1722
  },
1723
1723
  inspectRoute: { handle: async (e, t, n, r) => await ee(e, Ur, t, {
1724
1724
  method: n,
1725
1725
  ...r === void 0 ? {} : { body: r }
1726
- }) || ((n === "GET" ? await pn(e, Ur, t, { method: n }) : null) ?? fn(e, Ur, t, {
1726
+ }) || ((n === "GET" ? await dn(e, Ur, t, { method: n }) : null) ?? un(e, Ur, t, {
1727
1727
  method: n,
1728
1728
  ...r === void 0 ? {} : { body: r }
1729
1729
  }) ?? {
@@ -1732,39 +1732,39 @@ var Ai = () => Math.max(500, Math.floor(Z() * .6)), ji = (e) => new Promise((t)
1732
1732
  body: JSON.stringify({ error: "not an inspect route" })
1733
1733
  }) },
1734
1734
  ...m?.name === void 0 ? {} : { appName: m.name },
1735
- observability: R,
1735
+ observability: B,
1736
1736
  port: h,
1737
1737
  ...m?.transport?.wsPath ? { path: m.transport.wsPath } : {}
1738
1738
  });
1739
- return Nn = Z.dispatcher, Ce(It([
1740
- v.queries,
1741
- v.mutations,
1742
- v.actions,
1743
- v.streams
1739
+ return jn = Z.dispatcher, Se(Pt([
1740
+ y.queries,
1741
+ y.mutations,
1742
+ y.actions,
1743
+ y.streams
1744
1744
  ]), (e) => {
1745
1745
  $.warn(e);
1746
1746
  }), $.info(`API listening on :${h}`, {
1747
1747
  dialect: g,
1748
- queries: v.queries.length,
1749
- mutations: v.mutations.length,
1750
- actions: v.actions.length,
1751
- streams: v.streams.length,
1752
- workflows: v.workflows.length,
1753
- workflowWorkers: v.workflowWorkers.length,
1748
+ queries: y.queries.length,
1749
+ mutations: y.mutations.length,
1750
+ actions: y.actions.length,
1751
+ streams: y.streams.length,
1752
+ workflows: y.workflows.length,
1753
+ workflowWorkers: y.workflowWorkers.length,
1754
1754
  schedules: Zn.length,
1755
- scheduleCoordination: ir
1756
- }), u.finish($), Br(async () => {
1757
- for (let e of Cn) e.stop();
1758
- Mt.stop();
1755
+ scheduleCoordination: nr
1756
+ }), u.finish($), Vr(async () => {
1757
+ for (let e of xn) e.stop();
1758
+ At.stop();
1759
1759
  try {
1760
- await Z.close(), Ct(), Bt?.dispose(), await L.deactivate(), await Pn?.close(), await Je({
1761
- mirror: Ot,
1760
+ await Z.close(), xt(), Rt?.dispose(), await z.deactivate(), await Mn?.close(), await qe({
1761
+ mirror: Et,
1762
1762
  log: $
1763
- }), await Ie.dispose(), await w.close?.();
1763
+ }), await Fe.dispose(), await T.close?.();
1764
1764
  } catch (e) {
1765
1765
  console.error("serve: shutdown step failed, exiting anyway:", e);
1766
1766
  }
1767
1767
  }), await new Promise(() => {}), 0;
1768
1768
  };
1769
1769
  //#endregion
1770
- export { Zi as n, Yi as r, Qi as t };
1770
+ export { Qi as n, Xi as r, $i as t };