@voltro/cli 0.54.0 → 0.56.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 (173) hide show
  1. package/CHANGELOG.md +639 -2
  2. package/bin/voltro.mjs +24 -0
  3. package/dist/{apiBuild-DTWp0S_q.js → apiBuild-Bdaetr37.js} +119 -88
  4. package/dist/apiBuild-Vw1figjO.js +2 -0
  5. package/dist/bin.js +1 -1
  6. package/dist/{build-D4ygSbnV.js → build-CI36wL4R.js} +339 -314
  7. package/dist/buildReport-52gHKgfO.js +64 -0
  8. package/dist/{checkCommand-Dg1G7Gwd.js → checkCommand-CAwFXrxA.js} +6 -6
  9. package/dist/{checkCommand-L7DTlpIF.js → checkCommand-D0QV_zM_.js} +1 -1
  10. package/dist/{clusterCmd-DrVFCzSj.js → clusterCmd-CdLB1GkT.js} +1 -1
  11. package/dist/{codegen-DSLM8Su9.js → codegen-Bth5lUTU.js} +76 -64
  12. package/dist/codegen-DbH7NbCR.js +2 -0
  13. package/dist/{codegenCommand-CG_Vx4lc.js → codegenCommand-CidbQzbv.js} +15 -14
  14. package/dist/{codemodRunner-Cd4xkC6u.js → codemodRunner-BlQPfjzA.js} +277 -0
  15. package/dist/{commands-6Kzi92Np.js → commands-CWjfThXv.js} +35 -35
  16. package/dist/{dashboardCommand-Cq1PWvI1.js → dashboardCommand-BekcY5Ls.js} +3 -3
  17. package/dist/{dataCommand-DYzW8vkv.js → dataCommand-2pccgbIy.js} +267 -195
  18. package/dist/{dbCommand-B4NWZtGL.js → dbCommand-DpK_vQET.js} +457 -441
  19. package/dist/dbCommand-DrycGWWt.js +2 -0
  20. package/dist/{dev-cKUiZZsB.js → dev-B9Gz0k85.js} +1 -1
  21. package/dist/{dev-CmuvUKRq.js → dev-Dw263KPu.js} +2598 -2452
  22. package/dist/doctorCommand-BMWs6aVm.js +2 -0
  23. package/dist/{doctorCommand-DCiFVMtZ.js → doctorCommand-aR_bFmIi.js} +353 -251
  24. package/dist/{dormancyCommand-w1TrmgYP.js → dormancyCommand-eXTQMbHU.js} +1 -1
  25. package/dist/{embeddingsCommand-CMgPyRTr.js → embeddingsCommand-CTmiQvwa.js} +1 -1
  26. package/dist/{envCommand-Cyynmcfa.js → envCommand-BDUgV7EM.js} +12 -12
  27. package/dist/{evolveCommand-BwvQ8dVH.js → evolveCommand-YV8qW1LU.js} +2 -2
  28. package/dist/frameworkTableAssembly-CGNC0qr7.js +2 -0
  29. package/dist/{frameworkTableAssembly-D7LJuALW.js → frameworkTableAssembly-DNOFXfEQ.js} +102 -100
  30. package/dist/index.js +1 -1
  31. package/dist/{infoCommand-DlYlUPqs.js → infoCommand-BjVXpMlP.js} +1 -1
  32. package/dist/inspect-CNYvNXPU.js +1484 -0
  33. package/dist/inspect-S2rWy1Ys.js +2 -0
  34. package/dist/{inspectCmd-niF97fAq.js → inspectCmd-CP-G0sVK.js} +1 -1
  35. package/dist/{inspectFetch-EMuhTG_9.js → inspectFetch-BU1NyzxV.js} +36 -24
  36. package/dist/{inspectMetrics-CGF94puw.js → inspectMetrics-BY0Sjb2F.js} +19 -19
  37. package/dist/interruptedReplace-CwnkBb2X.js +41 -0
  38. package/dist/interruptedReplace-qzmFI020.js +2 -0
  39. package/dist/{logsCmd-B6oNsfaZ.js → logsCmd-BU8uCdys.js} +1 -1
  40. package/dist/{manifestBuild-Cqgsx2bM.js → manifestBuild-CEkjfpwc.js} +1 -1
  41. package/dist/manifestBuild-DIa_s6u0.js +2 -0
  42. package/dist/{migrate-BK_Bbx-_.js → migrate-SICulyz1.js} +2 -2
  43. package/dist/precompressAssets-YhTi1aWp.js +40 -0
  44. package/dist/{probeCommand-_C0YU207.js → probeCommand-6HxEkNDG.js} +2 -2
  45. package/dist/{runtimeTrace-CGWx1Q6l.js → runtimeTrace-DgYMc09E.js} +1 -1
  46. package/dist/{scheduleCmd-DQRu6BZC.js → scheduleCmd-DYBUfo_T.js} +1 -1
  47. package/dist/{sdkgen-CDGHQUFj.js → sdkgen-PY-umd6O.js} +1 -1
  48. package/dist/{seedRunner-Dgsiwk_e.js → seedRunner-DISBKow-.js} +16 -16
  49. package/dist/serveCommand-BITS8Hpj.js +2 -0
  50. package/dist/{serveCommand-Bje09q1v.js → serveCommand-DIJ3ma76.js} +951 -909
  51. package/dist/serveEntry.js +1 -1
  52. package/dist/{start-Clz-1BHB.js → start-B9NGB8gn.js} +627 -588
  53. package/dist/{start-B0bnJgxI.js → start-BFQQkL1i.js} +1 -1
  54. package/dist/startEntry.js +1 -1
  55. package/dist/staticCachePolicy-CIyj6DbS.js +15 -0
  56. package/dist/{test-D_kW4KMj.js → test-jipIQ5Mx.js} +1 -1
  57. package/dist/{tracesCmd-DgtgOUdi.js → tracesCmd-BWYDqMy6.js} +1 -1
  58. package/dist/{updateCommand-CRJlAOaM.js → updateCommand-C9n_Z_oG.js} +8 -2
  59. package/dist/updateCommand-DsXEAHbd.js +2 -0
  60. package/dist/webDev-C2dRz9s5.js +2 -0
  61. package/dist/{webDev-DSI9SOhs.js → webDev-C53hJdcL.js} +1265 -1288
  62. package/dist/{webhooksCommand-BvzXNHji.js → webhooksCommand-uuPu8qQX.js} +1 -1
  63. package/dist/{workflowsCmd-BGF-mRZ5.js → workflowsCmd-g-DNpaUc.js} +1 -1
  64. package/package.json +67 -19
  65. package/templates/AGENTS.core.md +20 -1
  66. package/templates/AGENTS.md +21 -2
  67. package/templates/agent-docs/_index.md +1 -1
  68. package/templates/agent-docs/_manifest.json +1 -1
  69. package/templates/agent-docs/authentication.md +49 -6
  70. package/templates/agent-docs/cli.md +216 -11
  71. package/templates/agent-docs/data.md +209 -18
  72. package/templates/agent-docs/database/scaling.md +40 -1
  73. package/templates/agent-docs/deployment.md +53 -1
  74. package/templates/agent-docs/internationalization.md +32 -0
  75. package/templates/agent-docs/local-first-mobile.md +9 -2
  76. package/templates/agent-docs/observability.md +227 -0
  77. package/templates/agent-docs/plugins/billing.md +15 -0
  78. package/templates/agent-docs/plugins/broadcast.md +2 -1
  79. package/templates/agent-docs/plugins/ratelimit.md +6 -1
  80. package/templates/agent-docs/plugins/row-history.md +11 -0
  81. package/templates/agent-docs/plugins.md +65 -8
  82. package/templates/agent-docs/reference.md +5 -3
  83. package/templates/agent-docs/routing.md +18 -0
  84. package/templates/agent-docs/schema-driven-ui.md +125 -0
  85. package/templates/agent-docs/templates/appshells.md +3 -3
  86. package/templates/agent-docs/whats-new.md +408 -106
  87. package/templates/apps/api-ai/package.json +6 -6
  88. package/templates/apps/api-auth/package.json +8 -8
  89. package/templates/apps/api-backend/package.json +7 -7
  90. package/templates/apps/api-backend-deactivation/package.json +7 -7
  91. package/templates/apps/api-backend-mail/package.json +8 -8
  92. package/templates/apps/api-backend-mariadb/package.json +9 -9
  93. package/templates/apps/api-backend-sqlite/package.json +8 -8
  94. package/templates/apps/api-backend-storage/package.json +8 -8
  95. package/templates/apps/api-cms/package.json +9 -9
  96. package/templates/apps/api-collab/package.json +8 -8
  97. package/templates/apps/api-data-advanced/package.json +8 -8
  98. package/templates/apps/api-durable/package.json +8 -8
  99. package/templates/apps/api-feature-flags/package.json +9 -9
  100. package/templates/apps/api-governance/package.json +8 -8
  101. package/templates/apps/api-kv/package.json +8 -8
  102. package/templates/apps/api-moderation/package.json +8 -8
  103. package/templates/apps/api-observability/package.json +8 -8
  104. package/templates/apps/api-ratelimit/package.json +8 -8
  105. package/templates/apps/api-rbac/package.json +8 -8
  106. package/templates/apps/api-rest/package.json +7 -7
  107. package/templates/apps/api-row-history/package.json +8 -8
  108. package/templates/apps/api-saas/package.json +11 -11
  109. package/templates/apps/api-saas-starter/package.json +10 -10
  110. package/templates/apps/api-search/package.json +8 -8
  111. package/templates/apps/api-status/package.json +8 -8
  112. package/templates/apps/api-webhooks/package.json +9 -9
  113. package/templates/apps/changelog/package.json +7 -7
  114. package/templates/apps/changelog/src/pages/[locale]/page.tsx +7 -1
  115. package/templates/apps/edge-functions/package.json +2 -2
  116. package/templates/apps/frontend-admin/package.json +7 -8
  117. package/templates/apps/frontend-admin/src/pages/(marketing)/layout.tsx +1 -2
  118. package/templates/apps/frontend-admin/src/pages/admin/layout.tsx +1 -2
  119. package/templates/apps/frontend-app/package.json +8 -9
  120. package/templates/apps/frontend-app/src/pages/layout.tsx +1 -2
  121. package/templates/apps/frontend-auth/package.json +7 -8
  122. package/templates/apps/frontend-auth/src/components/AuthShell.tsx +1 -2
  123. package/templates/apps/frontend-blank/package.json +6 -7
  124. package/templates/apps/frontend-blank/src/pages/layout.tsx +1 -2
  125. package/templates/apps/frontend-cms/package.json +8 -9
  126. package/templates/apps/frontend-cms/src/pages/(app)/layout.tsx +1 -2
  127. package/templates/apps/frontend-collab/README.md +7 -2
  128. package/templates/apps/frontend-collab/package.json +9 -10
  129. package/templates/apps/frontend-collab/src/pages/layout.tsx +1 -2
  130. package/templates/apps/frontend-collab/src/pages/page.test.tsx +8 -4
  131. package/templates/apps/frontend-collab/src/pages/page.tsx +10 -5
  132. package/templates/apps/frontend-contact/package.json +7 -7
  133. package/templates/apps/frontend-contact/src/components/ContactForm.island.tsx +1 -1
  134. package/templates/apps/frontend-dashboard/package.json +6 -7
  135. package/templates/apps/frontend-dashboard/src/pages/(marketing)/layout.tsx +1 -2
  136. package/templates/apps/frontend-dashboard/src/pages/dashboard/layout.tsx +1 -2
  137. package/templates/apps/frontend-docs/package.json +8 -8
  138. package/templates/apps/frontend-i18n/package.json +6 -6
  139. package/templates/apps/frontend-landing/package.json +7 -7
  140. package/templates/apps/frontend-portal/package.json +7 -8
  141. package/templates/apps/frontend-portal/src/pages/(portal)/layout.tsx +1 -2
  142. package/templates/apps/frontend-saas/package.json +7 -8
  143. package/templates/apps/frontend-saas/src/pages/(marketing)/layout.tsx +1 -2
  144. package/templates/apps/frontend-saas/src/pages/dashboard/layout.tsx +1 -2
  145. package/templates/apps/frontend-spa/package.json +6 -7
  146. package/templates/apps/frontend-spa/src/pages/layout.tsx +1 -2
  147. package/templates/apps/frontend-ssr/package.json +6 -7
  148. package/templates/apps/frontend-ssr/src/pages/layout.tsx +1 -2
  149. package/templates/apps/frontend-ssr-api/package.json +7 -8
  150. package/templates/apps/frontend-ssr-api/src/pages/layout.tsx +1 -2
  151. package/templates/apps/frontend-static-blog/package.json +8 -8
  152. package/templates/apps/frontend-static-blog/src/components/ReadingProgress.island.tsx +1 -1
  153. package/templates/apps/frontend-static-blog/src/pages/[locale]/page.tsx +7 -1
  154. package/templates/apps/frontend-status/package.json +7 -8
  155. package/templates/apps/frontend-status/src/pages/layout.tsx +1 -2
  156. package/templates/apps/mobile-app/package.json +4 -4
  157. package/templates/baselines/compose/docker/api.Dockerfile +61 -5
  158. package/templates/baselines/compose/docker/web.Dockerfile +55 -10
  159. package/templates/baselines/compose-mariadb/docker/api.Dockerfile +61 -5
  160. package/templates/baselines/compose-mariadb/docker/web.Dockerfile +55 -10
  161. package/dist/apiBuild-CeUN55uk.js +0 -2
  162. package/dist/codegen-DjgxEOnD.js +0 -2
  163. package/dist/dbCommand-CSFWs9ev.js +0 -2
  164. package/dist/doctorCommand-J3qu4E0Y.js +0 -2
  165. package/dist/frameworkTableAssembly-IPD1pUnZ.js +0 -2
  166. package/dist/inspect-Bd8-9wsi.js +0 -1193
  167. package/dist/inspect-CuoDInfZ.js +0 -2
  168. package/dist/interruptedReplace-C3O3M1MM.js +0 -28
  169. package/dist/interruptedReplace-CvmiAM9K.js +0 -2
  170. package/dist/manifestBuild-C4-J1-m_.js +0 -2
  171. package/dist/serveCommand-BiPe8BJm.js +0 -2
  172. package/dist/updateCommand-CIoVDKnj.js +0 -2
  173. package/dist/webDev-DlvZO30c.js +0 -2
@@ -3,51 +3,52 @@ 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 { t as s } from "./interruptedReplace-C3O3M1MM.js";
7
- import { $ as c, $t as l, A as u, An as d, At as f, Bt as ee, C as te, Cn as ne, Ct as p, D as m, Dt as h, E as g, En as re, Et as ie, F as ae, Ft as oe, G as se, Gt as ce, H as le, I as _, It as ue, J as v, Jt as de, K as fe, Kt as pe, L as me, Lt as y, M as b, Mt as he, N as ge, Nt as _e, O as ve, On as ye, Ot as be, P as xe, Pt as Se, Q as Ce, Qt as we, R as Te, Rt as x, S as Ee, Sn as De, St as Oe, T as ke, Tn as Ae, Tt as S, U as je, Ut as Me, Vt as Ne, W as Pe, X as Fe, Xt as C, Y as Ie, Yt as Le, Z as Re, Zt as ze, _ as Be, _n as Ve, _t as w, an as He, at as Ue, b as We, bt as Ge, c as Ke, cn as qe, ct as Je, d as Ye, dn as Xe, dt as Ze, en as Qe, et as $e, fn as et, ft as tt, g as nt, gn as rt, gt as it, h as at, hn as ot, ht as st, i as ct, in as lt, it as ut, j as dt, jn as ft, jt as pt, k as T, kn as mt, kt as ht, ln as gt, lt as _t, m as E, mn as D, mt as vt, nn as yt, nt as bt, o as O, on as xt, ot as k, p as St, pn as Ct, pt as wt, q as Tt, qt as Et, r as Dt, rn as Ot, rt as kt, sn as At, st as jt, t as Mt, tn as A, tt as Nt, u as j, un as Pt, ut as M, v as Ft, vn as It, vt as Lt, w as Rt, wn as zt, wt as Bt, x as Vt, xn as Ht, xt as Ut, y as Wt, yn as Gt, yt as Kt, z as qt, zt as N } from "./dev-CmuvUKRq.js";
8
- import { n as Jt } from "./cliArgs-D4p8n7EE.js";
9
- import { r as Yt } from "./appPort-B_HpJ_ck.js";
10
- import { Ut as Xt, Vt as Zt } from "./webDev-DSI9SOhs.js";
11
- import { r as P } from "./dialectDriver-czCHYpeH.js";
12
- import { i as Qt, n as F } from "./connectionConfig-Bk9IC7D0.js";
13
- import { c as $t, n as en, o as tn } from "./seedRunner-Dgsiwk_e.js";
14
- import { d as nn, h as rn, m as an, p as on, r as sn } from "./frameworkTableAssembly-D7LJuALW.js";
15
- import { n as cn, r as ln, t as un } from "./declaredSchemaGates-BlcwObhb.js";
16
- import { C as dn, a as fn, h as pn, l as mn, n as hn, u as gn, w as _n } from "./fileConventions-l-RIXbx8.js";
17
- import { h as vn, o as yn } from "./inspect-Bd8-9wsi.js";
18
- import { i as bn, n as xn, t as Sn } from "./inspectMetrics-CGF94puw.js";
19
- import { n as Cn } from "./mssqlClusterPatch-_4cE_nun.js";
20
- import { i as wn, n as Tn, r as En, t as Dn } from "./webhookDiscovery-CphsQe59.js";
21
- import { r as On, u as kn } from "./apiBuild-DTWp0S_q.js";
22
- import { t as An } from "./bootTiming-BdyP9nYw.js";
23
- import { a as jn, o as Mn, t as Nn } from "./dataProfile-Du3ztYxv.js";
24
- import I, { basename as Pn, join as Fn } from "node:path";
25
- import { createWriteStream as In, existsSync as Ln } from "node:fs";
26
- import { pathToFileURL as Rn } from "node:url";
27
- import { LoggerLayer as zn, createLogger as L } from "@voltro/logger";
28
- import { AuthMiddleware as Bn, ConnectionInfoMiddleware as Vn, actionToRpc as R, anonymousSubject as Hn, isWireReachable as Un, mutationToRpc as Wn, queryToRpc as z, streamToRpc as Gn, wireErrorUnion as Kn, workflowCancelDescriptor as qn, workflowDomainEventsQueryDescriptor as B, workflowEventDeliveriesQueryDescriptor as V, workflowResumeDescriptor as Jn, workflowRunEventsQueryDescriptor as Yn, workflowRunQueryDescriptor as Xn, workflowRunStepsQueryDescriptor as Zn, workflowRunsQueryDescriptor as Qn, workflowSignalDescriptor as $n, workflowUpdateDescriptor as er } from "@voltro/protocol";
29
- import { DATA_TRANSFERS_TABLE as H, _voltroDataTransfersTable as tr, allRegisteredTables as nr, and as rr, connectionIdentity as ir, derivedRowId as ar, describeTransferRun as or, ensureTableRegistered as sr, eq as U, or as cr } from "@voltro/database";
30
- import { Cause as lr, Effect as W, Layer as G, ManagedRuntime as ur } from "effect";
31
- import { SqlClient as dr } from "@effect/sql";
32
- import { declaredSnapshot as fr, describeOutcome as pr, pendingFileMigrationIds as mr, runPlannedMigrations as hr } from "@voltro/database/sql";
33
- import { AggregateRegistry as gr, CostRegistry as _r, DORMANCY_WAKEUP_TENANT as vr, Dispatcher as yr, ExpectationRegistry as br, ExperimentRegistry as xr, apiKeyManagementRoutes as Sr, attachAnalyticsMirror as Cr, attachExpectations as wr, attachExperiments as Tr, attachFinops as Er, awaitServerListening as Dr, bindMutation as K, bindStream as Or, bindSubscription as q, buildTracingLayer as kr, cancelWakeup as Ar, compileCron as jr, dataStoreApiKeyStore as Mr, formatServerOnlyLeaks as Nr, formatUnresolvedSources as Pr, frameworkApiKeyStrategy as Fr, getResourcePolicy as Ir, installPolicyGuardResolver as Lr, loadResourceTuples as Rr, makeActionRunner as zr, makeAdvisoryLockCoordinator as Br, makeApiKeyService as Vr, makeApiKeyUsageBuffer as Hr, makeApiKeyUsageFlusher as Ur, makeAsyncKv as Wr, makeAuthMiddlewareLayers as Gr, makeCoordinatedScheduler as Kr, makeEffectStoreLayer as qr, makeLazyWorkflowFacade as Jr, makeMutationOutputCodec as Yr, makeMutationRunner as Xr, makeOneShotQueryRunner as Zr, makeQueryDescriptorProducer as J, makeQueryFinalizer as Qr, makeQueryReauthorizer as $r, makeQuerySubscriber as ei, makeSchemaRegistry as ti, makeWorkflowFacade as ni, makeWorkflowFacadeWithCallerContext as ri, makeWorkflowLayers as ii, noopKv as ai, onProcessShutdown as oi, recordSubscriptionDelivery as Y, recordWorkflowRun as si, registerDefaultTupleSource as ci, registerWakeup as li, resolveSecretsBackend as ui, runProvidedEffect as di, setSecretsBackend as fi, setSystemStoreHandle as pi, shutdownGraceMsFromEnv as mi, singleCoordinator as hi, startRpcServer as gi, startScheduler as _i, stripForbiddenForWire as vi, undoCaptureEnabled as yi, unresolvedSources as bi, withScopedRequest as xi, workflowToRpc as Si, wrapStoreWithBootCodec as Ci } from "@voltro/runtime";
34
- import wi, { tmpdir as Ti } from "node:os";
35
- import { RpcGroup as Ei } from "@effect/rpc";
36
- import { appStorageProvider as Di, durabilityNotice as Oi, fromNodeReadable as ki, getObjectStream as Ai, putObjectStream as ji, toNodeReadable as Mi } from "@voltro/plugin-storage";
37
- import { isEnvContract as Ni } from "@voltro/env";
38
- import { assertProductionSessionSecret as Pi } from "@voltro/protocol/session";
6
+ import { n as s, t as c } from "./interruptedReplace-CwnkBb2X.js";
7
+ import { $ as l, $t as u, A as d, At as f, Bt as ee, C as te, Ct as p, D as ne, Dn as m, Dt as re, E as ie, En as h, Et as ae, F as oe, Fn as se, Ft as ce, G as le, Gt as ue, H as g, I as de, In as _, It as fe, J as pe, Jt as me, K as he, Kt as ge, L as v, Lt as y, M as _e, Mn as ve, Mt as ye, N as be, Nn as xe, Nt as Se, O as Ce, On as we, Ot as Te, P as Ee, Pn as b, Pt as De, Q as Oe, Qt as ke, R as Ae, Rt as x, S as je, Sn as Me, St as Ne, T as Pe, Tn as Fe, Tt as Ie, U as Le, Ut as Re, Vt as ze, W as Be, X as S, Xt as C, Y as Ve, Yt as He, Z as Ue, Zt as We, _ as Ge, _n as Ke, _t as w, an as qe, at as Je, b as Ye, bn as Xe, bt as Ze, c as Qe, cn as $e, ct as et, d as tt, dn as nt, dt as rt, en as it, et as at, fn as ot, ft as st, g as ct, gn as lt, gt as ut, h as dt, hn as ft, ht as pt, i as T, in as mt, it as ht, j as E, jn as D, jt as gt, k as _t, kn as vt, kt as yt, ln as bt, lt as O, m as xt, mn as St, mt as Ct, nn as wt, nt as Tt, o as k, on as Et, ot as Dt, p as Ot, pn as kt, pt as At, q as jt, qt as Mt, r as Nt, rn as Pt, rt as Ft, sn as It, st as A, t as j, tn as Lt, tt as Rt, u as zt, un as Bt, ut as M, v as Vt, vn as Ht, vt as Ut, w as Wt, wn as Gt, wt as Kt, x as qt, xn as N, xt as Jt, y as Yt, yn as Xt, yt as Zt, z as Qt, zt as $t } from "./dev-Dw263KPu.js";
8
+ import { Kt as en, Vt as tn, zt as P } from "./webDev-C53hJdcL.js";
9
+ import { g as nn, s as rn } from "./inspect-CNYvNXPU.js";
10
+ import { n as F } from "./cliArgs-D4p8n7EE.js";
11
+ import { r as an } from "./appPort-B_HpJ_ck.js";
12
+ import { r as on, u as sn } from "./apiBuild-Bdaetr37.js";
13
+ import { r as I } from "./dialectDriver-czCHYpeH.js";
14
+ import { i as cn, n as ln } from "./connectionConfig-Bk9IC7D0.js";
15
+ import { c as un, n as dn, o as fn } from "./seedRunner-DISBKow-.js";
16
+ import { d as pn, h as mn, m as hn, p as gn, r as _n } from "./frameworkTableAssembly-DNOFXfEQ.js";
17
+ import { n as vn, r as yn, t as bn } from "./declaredSchemaGates-BlcwObhb.js";
18
+ import { C as xn, a as Sn, h as Cn, l as wn, n as Tn, u as En, w as Dn } from "./fileConventions-l-RIXbx8.js";
19
+ import { i as On, n as kn, t as An } from "./inspectMetrics-BY0Sjb2F.js";
20
+ import { n as jn } from "./mssqlClusterPatch-_4cE_nun.js";
21
+ import { i as Mn, n as Nn, r as Pn, t as Fn } from "./webhookDiscovery-CphsQe59.js";
22
+ import { t as In } from "./bootTiming-BdyP9nYw.js";
23
+ import { a as Ln, o as Rn, t as zn } from "./dataProfile-Du3ztYxv.js";
24
+ import L, { basename as Bn, join as Vn } from "node:path";
25
+ import { createWriteStream as Hn, existsSync as Un } from "node:fs";
26
+ import { pathToFileURL as Wn } from "node:url";
27
+ import { LoggerLayer as Gn, createLogger as R } from "@voltro/logger";
28
+ import { AuthMiddleware as Kn, ConnectionInfoMiddleware as qn, actionToRpc as z, anonymousSubject as Jn, isWireReachable as Yn, mutationToRpc as Xn, queryToRpc as B, streamToRpc as Zn, wireErrorUnion as Qn, workflowCancelDescriptor as $n, workflowDomainEventsQueryDescriptor as er, workflowEventDeliveriesQueryDescriptor as tr, workflowResumeDescriptor as nr, workflowRunEventsQueryDescriptor as rr, workflowRunQueryDescriptor as ir, workflowRunStepsQueryDescriptor as V, workflowRunsQueryDescriptor as ar, workflowSignalDescriptor as or, workflowUpdateDescriptor as sr } from "@voltro/protocol";
29
+ import { DATA_TRANSFERS_TABLE as H, _voltroDataTransfersTable as cr, allRegisteredTables as lr, and as ur, connectionIdentity as dr, derivedRowId as fr, describeTransferRun as pr, ensureTableRegistered as mr, eq as U, or as W } from "@voltro/database";
30
+ import { appMode as hr, frameworkVersion as gr, instanceId as _r, replicaId as vr, resolveAdvertisedHost as yr, setProcessAdvertisedAddress as br, setProcessBootPath as xr } from "@voltro/protocol/identity";
31
+ import { AggregateRegistry as Sr, CostRegistry as Cr, DORMANCY_WAKEUP_TENANT as wr, Dispatcher as Tr, ExpectationRegistry as Er, ExperimentRegistry as Dr, apiKeyManagementRoutes as Or, attachAnalyticsMirror as kr, attachExpectations as Ar, attachExperiments as jr, attachFinops as Mr, awaitServerListening as Nr, bindMutation as G, bindStream as Pr, bindSubscription as Fr, buildTracingLayer as Ir, cancelWakeup as Lr, compileCron as Rr, dataStoreApiKeyStore as zr, formatServerOnlyLeaks as Br, formatUnresolvedSources as Vr, frameworkApiKeyStrategy as Hr, getResourcePolicy as Ur, installPolicyGuardResolver as Wr, loadResourceTuples as Gr, makeActionRunner as Kr, makeAdvisoryLockCoordinator as qr, makeApiKeyService as Jr, makeApiKeyUsageBuffer as Yr, makeApiKeyUsageFlusher as Xr, makeAsyncKv as Zr, makeAuthMiddlewareLayers as Qr, makeCoordinatedScheduler as $r, makeEffectStoreLayer as ei, makeLazyWorkflowFacade as ti, makeMutationOutputCodec as ni, makeMutationRunner as ri, makeOneShotQueryRunner as ii, makeQueryDescriptorProducer as ai, makeQueryFinalizer as oi, makeQueryReauthorizer as si, makeQuerySubscriber as ci, makeSchemaRegistry as li, makeWorkflowFacade as ui, makeWorkflowFacadeWithCallerContext as di, makeWorkflowLayers as K, noopKv as fi, onProcessShutdown as pi, recordSubscriptionDelivery as mi, recordWorkflowRun as hi, registerDefaultTupleSource as gi, registerWakeup as _i, resolveSecretsBackend as vi, runProvidedEffect as yi, setSecretsBackend as bi, setSystemStoreHandle as xi, shutdownGraceMsFromEnv as q, singleCoordinator as Si, startRpcServer as Ci, startScheduler as wi, stripForbiddenForWire as Ti, undoCaptureEnabled as Ei, unresolvedSources as Di, withScopedRequest as Oi, workflowToRpc as ki, wrapStoreWithBootCodec as Ai } from "@voltro/runtime";
32
+ import { assertProductionSessionSecret as ji } from "@voltro/protocol/session";
33
+ import { Cause as Mi, Effect as J, Layer as Y, ManagedRuntime as Ni } from "effect";
34
+ import { SqlClient as Pi } from "@effect/sql";
35
+ import { declaredSnapshot as Fi, describeOutcome as Ii, pendingFileMigrationIds as Li, runPlannedMigrations as Ri } from "@voltro/database/sql";
36
+ import zi, { tmpdir as Bi } from "node:os";
37
+ import { RpcGroup as Vi } from "@effect/rpc";
38
+ import { appStorageProvider as Hi, durabilityNotice as Ui, fromNodeReadable as Wi, getObjectStream as Gi, putObjectStream as Ki, toNodeReadable as qi } from "@voltro/plugin-storage";
39
+ import { isEnvContract as Ji } from "@voltro/env";
39
40
  import X from "node:fs/promises";
40
- import { createHash as Fi, timingSafeEqual as Ii } from "node:crypto";
41
- import { channelFor as Li, getBroadcastPlugin as Ri } from "@voltro/plugin-broadcast";
42
- import { buildDeliverWebhookExecute as zi, buildWebhooksService as Bi, defaultIncomingPath as Vi, deliverWebhookWorkflow as Hi, makeDeferredEmitHandler as Ui, mountIncomingWebhook as Wi } from "@voltro/plugin-webhooks";
43
- import { getAuthSessionStrategy as Gi } from "@voltro/plugin-auth";
44
- import { registerEmailTemplates as Ki } from "@voltro/plugin-mail";
45
- import { checkSchemaDrift as qi, decideStaging as Ji, isEnvironmentLocal as Yi, packBundle as Xi, peekBundle as Zi, runExport as Qi, runImport as $i, storageBlobSink as ea, storageRefsBlobSource as ta, unpackBundle as na, unpackBundleToDir as ra } from "@voltro/data-transfer";
41
+ import { createHash as Yi, timingSafeEqual as Xi } from "node:crypto";
42
+ import { channelFor as Zi, getBroadcastPlugin as Qi } from "@voltro/plugin-broadcast";
43
+ import { buildDeliverWebhookExecute as $i, buildWebhooksService as ea, defaultIncomingPath as ta, deliverWebhookWorkflow as na, makeDeferredEmitHandler as ra, mountIncomingWebhook as ia } from "@voltro/plugin-webhooks";
44
+ import { getAuthSessionStrategy as aa } from "@voltro/plugin-auth";
45
+ import { registerEmailTemplates as oa } from "@voltro/plugin-mail";
46
+ import { checkSchemaDrift as sa, decideStaging as ca, isEnvironmentLocal as la, packBundle as ua, peekBundle as da, runExport as fa, runImport as pa, storageBlobSink as ma, storageRefsBlobSource as ha, unpackBundle as ga, unpackBundleToDir as _a } from "@voltro/data-transfer";
46
47
  //#region \0rolldown/runtime.js
47
- var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
48
+ var va = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
48
49
  if (typeof require < "u") return require.apply(this, arguments);
49
50
  throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
50
- }), aa = () => Math.max(500, Math.floor(mi() * .6)), oa = (e) => new Promise((t) => setTimeout(t, e)), sa = (e) => {
51
+ }), ya = () => Math.max(500, Math.floor(q() * .6)), ba = (e) => new Promise((t) => setTimeout(t, e)), xa = (e) => {
51
52
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = 0;
52
53
  e.on("connection", (e) => {
53
54
  t.add(e), e.once("close", () => {
@@ -61,14 +62,14 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
61
62
  });
62
63
  });
63
64
  let i, a = async (t = {}) => {
64
- let n = t.budgetMs ?? aa();
65
+ let n = t.budgetMs ?? ya();
65
66
  i ??= new Promise((t) => {
66
67
  e.close(() => {
67
68
  t();
68
69
  });
69
70
  }), e.closeIdleConnections();
70
71
  let a = Date.now() + n;
71
- for (; r > 0 && Date.now() < a;) await oa(25), e.closeIdleConnections();
72
+ for (; r > 0 && Date.now() < a;) await ba(25), e.closeIdleConnections();
72
73
  e.closeIdleConnections();
73
74
  }, o = async () => {
74
75
  i ??= new Promise((t) => {
@@ -85,7 +86,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
85
86
  ]));
86
87
  } catch {}
87
88
  else e.destroy();
88
- for (let e = 0; t.size > 0 && e < 250; e += 25) await oa(25);
89
+ for (let e = 0; t.size > 0 && e < 250; e += 25) await ba(25);
89
90
  for (let e of t) e.destroy();
90
91
  await i;
91
92
  };
@@ -97,83 +98,83 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
97
98
  await a(e), await o();
98
99
  }
99
100
  };
100
- }, ca = "/_voltro/admin/import", la = "/_voltro/admin/import/start", ua = "/_voltro/admin/export", da = "/_voltro/admin/export/download", fa = "/_voltro/admin/transfers", Z = (e, t) => ({
101
+ }, Sa = "/_voltro/admin/import", Ca = "/_voltro/admin/import/start", wa = "/_voltro/admin/export", Ta = "/_voltro/admin/export/download", Ea = "/_voltro/admin/transfers", Z = (e, t) => ({
101
102
  status: e,
102
103
  contentType: "application/json; charset=utf-8",
103
104
  body: JSON.stringify(t)
104
- }), pa = (e) => {
105
+ }), Da = (e) => {
105
106
  let t = e.authorization ?? e.Authorization, n = t ? /^Bearer\s+(.+)$/i.exec(t) : null;
106
107
  return n ? n[1] : null;
107
- }, ma = (e, t) => Ii(Fi("sha256").update(e).digest(), Fi("sha256").update(t).digest()), ha = (e, t, n = "POST") => {
108
+ }, Oa = (e, t) => Xi(Yi("sha256").update(e).digest(), Yi("sha256").update(t).digest()), ka = (e, t, n = "POST") => {
108
109
  if (e.method.toUpperCase() !== n) return Z(405, { error: "method not allowed" });
109
110
  if (!t || t.length < 16) return Z(503, { error: "data transfer misconfigured (no/weak secret)" });
110
- let r = pa(e.headers);
111
- return !r || !ma(r, t) ? Z(401, { error: "unauthorized" }) : null;
112
- }, ga = /^[A-Za-z0-9_-]{8,64}$/, _a = (e) => ga.test(e), va = () => process.env.VOLTRO_IMPORT_UPLOAD_DIR ?? I.join(wi.tmpdir(), "voltro-import-uploads"), ya = (e) => I.join(va(), e), ba = (e) => I.join(ya(e), "archive.bin"), xa = (e) => I.join(ya(e), "meta.json"), Sa = async (e = Date.now()) => {
111
+ let r = Da(e.headers);
112
+ return !r || !Oa(r, t) ? Z(401, { error: "unauthorized" }) : null;
113
+ }, Aa = /^[A-Za-z0-9_-]{8,64}$/, ja = (e) => Aa.test(e), Ma = () => process.env.VOLTRO_IMPORT_UPLOAD_DIR ?? L.join(zi.tmpdir(), "voltro-import-uploads"), Na = (e) => L.join(Ma(), e), Pa = (e) => L.join(Na(e), "archive.bin"), Fa = (e) => L.join(Na(e), "meta.json"), Ia = async (e = Date.now()) => {
113
114
  let t = 0;
114
115
  try {
115
- for (let n of await X.readdir(va())) {
116
+ for (let n of await X.readdir(Ma())) {
116
117
  if (n === ".runs") continue;
117
- let r = await X.stat(ya(n)).catch(() => null);
118
- r !== null && (e - r.mtimeMs <= 864e5 || (await X.rm(ya(n), {
118
+ let r = await X.stat(Na(n)).catch(() => null);
119
+ r !== null && (e - r.mtimeMs <= 864e5 || (await X.rm(Na(n), {
119
120
  recursive: !0,
120
121
  force: !0
121
122
  }).catch(() => void 0), t++));
122
123
  }
123
124
  } catch {}
124
125
  return t;
125
- }, Ca = async (e) => {
126
- if (!_a(e)) return {
126
+ }, La = async (e) => {
127
+ if (!ja(e)) return {
127
128
  bytes: 0,
128
129
  key: null,
129
130
  runId: null
130
131
  };
131
- let t = await X.stat(ba(e)).catch(() => null);
132
+ let t = await X.stat(Pa(e)).catch(() => null);
132
133
  if (t === null) return {
133
134
  bytes: 0,
134
135
  key: null,
135
136
  runId: null
136
137
  };
137
- let n = await wa(e);
138
+ let n = await Ra(e);
138
139
  return {
139
140
  bytes: t.size,
140
141
  key: n.key ?? null,
141
142
  runId: n.runId ?? null
142
143
  };
143
- }, wa = async (e) => {
144
+ }, Ra = async (e) => {
144
145
  try {
145
- let t = await X.readFile(xa(e), "utf8");
146
+ let t = await X.readFile(Fa(e), "utf8");
146
147
  return JSON.parse(t);
147
148
  } catch {
148
149
  return {};
149
150
  }
150
- }, Ta = async (e, t) => {
151
- let n = xa(e), r = `${n}.${process.pid}.${Math.random().toString(36).slice(2, 8)}.tmp`;
151
+ }, za = async (e, t) => {
152
+ let n = Fa(e), r = `${n}.${process.pid}.${Math.random().toString(36).slice(2, 8)}.tmp`;
152
153
  await X.writeFile(r, JSON.stringify(t)), await X.rename(r, n);
153
- }, Ea = async (e, t, n) => {
154
- if (!_a(e)) return t;
155
- await X.mkdir(ya(e), { recursive: !0 });
156
- let r = await wa(e), i = typeof r.runId == "string" && r.runId.length > 0 ? r.runId : null;
157
- return i !== null && n?.takeOver !== !0 ? i : (await Ta(e, {
154
+ }, Ba = async (e, t, n) => {
155
+ if (!ja(e)) return t;
156
+ await X.mkdir(Na(e), { recursive: !0 });
157
+ let r = await Ra(e), i = typeof r.runId == "string" && r.runId.length > 0 ? r.runId : null;
158
+ return i !== null && n?.takeOver !== !0 ? i : (await za(e, {
158
159
  ...r,
159
160
  runId: t
160
161
  }), t);
161
- }, Da = async (e) => {
162
- if (!_a(e)) return;
163
- let t = await wa(e);
162
+ }, Va = async (e) => {
163
+ if (!ja(e)) return;
164
+ let t = await Ra(e);
164
165
  if (t.runId === void 0) return;
165
166
  let { runId: n, ...r } = t;
166
- await Ta(e, r).catch(() => void 0);
167
- }, Oa = async (e, t, n) => (await X.mkdir(ya(e), { recursive: !0 }), await X.writeFile(ba(e), Buffer.from(t)), await Ta(e, {
168
- ...await wa(e),
167
+ await za(e, r).catch(() => void 0);
168
+ }, Ha = async (e, t, n) => (await X.mkdir(Na(e), { recursive: !0 }), await X.writeFile(Pa(e), Buffer.from(t)), await za(e, {
169
+ ...await Ra(e),
169
170
  key: n,
170
171
  startedAt: (/* @__PURE__ */ new Date()).toISOString()
171
- }), t.byteLength), ka = (e) => `up-${Fi("sha256").update(e).digest("hex").slice(0, 32)}`, Aa = async (e) => {
172
- if (!_a(e.id)) return {
172
+ }), t.byteLength), Ua = (e) => `up-${Yi("sha256").update(e).digest("hex").slice(0, 32)}`, Wa = async (e) => {
173
+ if (!ja(e.id)) return {
173
174
  reason: "bad-id",
174
- message: `upload id must match ${String(ga)}`
175
+ message: `upload id must match ${String(Aa)}`
175
176
  };
176
- let t = await Ca(e.id);
177
+ let t = await La(e.id);
177
178
  if (t.key !== null && t.key !== e.key) return {
178
179
  reason: "key-mismatch",
179
180
  message: "this upload id already holds a different bundle. Use a new upload id, or delete the partial upload."
@@ -183,34 +184,34 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
183
184
  message: `chunk starts at ${e.offset} but the server holds ${t.bytes} byte(s)`,
184
185
  expectedOffset: t.bytes
185
186
  };
186
- if (await X.mkdir(ya(e.id), { recursive: !0 }), t.key === null) {
187
- let t = await wa(e.id);
188
- await Ta(e.id, {
187
+ if (await X.mkdir(Na(e.id), { recursive: !0 }), t.key === null) {
188
+ let t = await Ra(e.id);
189
+ await za(e.id, {
189
190
  ...t,
190
191
  key: e.key,
191
192
  startedAt: (/* @__PURE__ */ new Date()).toISOString()
192
193
  });
193
194
  }
194
195
  return await new Promise((t, n) => {
195
- let r = In(ba(e.id), { flags: "a" });
196
+ let r = Hn(Pa(e.id), { flags: "a" });
196
197
  r.on("error", n), r.on("finish", () => t()), r.end(Buffer.from(e.bytes));
197
198
  }), { total: t.bytes + e.bytes.byteLength };
198
- }, ja = async (e) => {
199
- let t = await X.stat(ba(e));
199
+ }, Ga = async (e) => {
200
+ let t = await X.stat(Pa(e));
200
201
  return {
201
- path: ba(e),
202
+ path: Pa(e),
202
203
  bytes: t.size
203
204
  };
204
- }, Ma = () => I.join(va(), ".runs"), Na = (e) => I.join(Ma(), `${e}.bin`), Pa = async (e, t) => {
205
- if (!_a(e)) return null;
206
- let n = ba(e), r = await X.stat(n).catch(() => null);
205
+ }, Ka = () => L.join(Ma(), ".runs"), qa = (e) => L.join(Ka(), `${e}.bin`), Ja = async (e, t) => {
206
+ if (!ja(e)) return null;
207
+ let n = Pa(e), r = await X.stat(n).catch(() => null);
207
208
  if (r === null || r.size === 0) return null;
208
- await X.mkdir(Ma(), { recursive: !0 });
209
- let i = Na(t);
209
+ await X.mkdir(Ka(), { recursive: !0 });
210
+ let i = qa(t);
210
211
  return await X.rename(n, i), i;
211
- }, Fa = async (e) => {
212
- await X.rm(Na(e), { force: !0 }).catch(() => void 0);
213
- }, Q = L({ scope: "voltro:admin-import" }), Ia = "VBUNDLE2", La = (e) => {
212
+ }, Ya = async (e) => {
213
+ await X.rm(qa(e), { force: !0 }).catch(() => void 0);
214
+ }, Q = R({ scope: "voltro:admin-import" }), Xa = "VBUNDLE2", Za = (e) => {
214
215
  let t = e.req.headers["x-import-rollback-key"];
215
216
  if (e.mode !== "replace") return { options: {} };
216
217
  if (typeof t != "string" || t.length === 0) return Q.warn("admin.import: no rollback capture — this run empties the target first, and nothing was asked to be kept. Send `x-import-rollback-key: <storage key>` (voltro data import --rollback-key <key>) to have the instance store the target's current rows before deleting them."), { options: {} };
@@ -221,18 +222,18 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
221
222
  hint: "A capture written to the pod would not survive the failure it exists for. Configure storage (the same one the storage-push export uses), or re-send without `x-import-rollback-key` to accept that a run which does not finish can leave the target emptied. Note that CONFIGURED is not the same question as SURVIVES: a `filesystem` provider pointed at a container directory with no volume behind it passes this check and dies with the pod. The run says so when it can observe it — the capture path being on the same filesystem as `/`."
222
223
  })
223
224
  };
224
- let n = Fn(Ti(), `voltro-rollback-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`), r = e.deps.putArchive;
225
+ let n = Vn(Bi(), `voltro-rollback-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`), r = e.deps.putArchive;
225
226
  return {
226
227
  key: t,
227
228
  options: {
228
229
  rollbackDir: n,
229
230
  onRollbackCaptured: async () => {
230
- let e = Oi(n);
231
- e !== void 0 && Q.warn(`admin.import: ${e}`), await r(t, () => Xi({ dir: n })), Q.info("admin.import: rollback capture stored", { bundleKey: t });
231
+ let e = Ui(n);
232
+ e !== void 0 && Q.warn(`admin.import: ${e}`), await r(t, () => ua({ dir: n })), Q.info("admin.import: rollback capture stored", { bundleKey: t });
232
233
  }
233
234
  }
234
235
  };
235
- }, Ra = (e) => {
236
+ }, Qa = (e) => {
236
237
  let t = e["x-import-mode"], n = e["x-import-atomic"];
237
238
  return {
238
239
  mode: t,
@@ -242,34 +243,34 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
242
243
  dryRun: e["x-import-dry-run"] === "1" || e["x-import-dry-run"] === "true",
243
244
  tables: (e["x-import-tables"] ?? "").split(",").map((e) => e.trim()).filter(Boolean)
244
245
  };
245
- }, za = async (e, t) => {
246
+ }, $a = async (e, t) => {
246
247
  if (typeof t.bundleKey == "string" && t.bundleKey !== "") {
247
248
  if (!e.openArchive) return { refusal: Z(501, { error: "storage transport not configured on this instance" }) };
248
249
  let n = e.openArchive, r = t.bundleKey;
249
250
  return {
250
251
  source: () => n(r),
251
252
  transport: "storage",
252
- uploadId: ka(r)
253
+ uploadId: Ua(r)
253
254
  };
254
255
  }
255
256
  let n = t.uploadId;
256
- if (typeof n != "string" || !_a(n)) return { refusal: Z(400, { error: "start needs { uploadId } from an upload, or { bundleKey } for the storage transport" }) };
257
- let r = await ja(n).catch(() => null);
257
+ if (typeof n != "string" || !ja(n)) return { refusal: Z(400, { error: "start needs { uploadId } from an upload, or { bundleKey } for the storage transport" }) };
258
+ let r = await Ga(n).catch(() => null);
258
259
  return r === null || r.bytes === 0 ? { refusal: Z(409, {
259
260
  error: "no such upload",
260
261
  message: `this instance holds no bytes for upload '${n}'. Upload the bundle first, or re-upload if it has expired.`
261
262
  }) } : {
262
- source: () => Ba(r.path),
263
+ source: () => eo(r.path),
263
264
  transport: "upload",
264
265
  uploadId: n
265
266
  };
266
- }, Ba = (e) => {
267
- let { createReadStream: t } = ia("node:fs");
267
+ }, eo = (e) => {
268
+ let { createReadStream: t } = va("node:fs");
268
269
  return t(e);
269
- }, Va = (e) => async (t) => {
270
- let n = ha(t, e.secret);
270
+ }, to = (e) => async (t) => {
271
+ let n = ka(t, e.secret);
271
272
  if (n) return n;
272
- let r = Ra(t.headers), i = La({
273
+ let r = Qa(t.headers), i = Za({
273
274
  req: t,
274
275
  mode: r.mode,
275
276
  deps: e
@@ -283,16 +284,16 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
283
284
  return Z(400, { error: "a preflight body must be JSON: { tables: string[] } or { bundleKey: string }" });
284
285
  }
285
286
  let a = Array.isArray(n.tables) ? n.tables.filter((e) => typeof e == "string") : [];
286
- if (a.length === 0 && typeof n.bundleKey == "string" && n.bundleKey !== "" && e.openArchive && (a = [...await Ha(e.openArchive(n.bundleKey))]), a.length === 0) return Z(400, {
287
+ if (a.length === 0 && typeof n.bundleKey == "string" && n.bundleKey !== "" && e.openArchive && (a = [...await no(e.openArchive(n.bundleKey))]), a.length === 0) return Z(400, {
287
288
  error: "a preflight needs { tables: string[] } — the bundle's table names, so the staging decision can be made against them",
288
289
  hint: "or { bundleKey } on an instance with storage configured, where this endpoint reads the table list out of the archive itself"
289
290
  });
290
- let o = Ji({
291
+ let o = ca({
291
292
  mode: r.mode ?? "upsert",
292
293
  ...e.dialect === void 0 ? {} : { targetDialect: e.dialect },
293
294
  ...e.snapshot === void 0 ? {} : { targetSnapshot: e.snapshot },
294
295
  bundleTables: a,
295
- isSkipped: Yi,
296
+ isSkipped: la,
296
297
  canRunSql: !0
297
298
  });
298
299
  return Z(200, {
@@ -311,8 +312,8 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
311
312
  }
312
313
  let a = t.headers["x-import-upload-id"];
313
314
  if (a !== void 0 && a !== "") {
314
- if (Sa(), t.headers["x-import-probe"] === "1") {
315
- let e = await Ca(a);
315
+ if (Ia(), t.headers["x-import-probe"] === "1") {
316
+ let e = await La(a);
316
317
  return Z(200, {
317
318
  uploadId: a,
318
319
  bytes: e.bytes,
@@ -321,7 +322,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
321
322
  }
322
323
  let e = t.headers["x-import-upload-key"] ?? "", n = Number(t.headers["x-import-chunk-offset"] ?? "0");
323
324
  if (e === "" || !Number.isFinite(n) || n < 0) return Z(400, { error: "a chunked upload needs x-import-upload-key and a numeric x-import-chunk-offset" });
324
- let r = await Aa({
325
+ let r = await Wa({
325
326
  id: a,
326
327
  key: e,
327
328
  offset: n,
@@ -343,12 +344,12 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
343
344
  complete: i
344
345
  });
345
346
  }
346
- if (t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === Ia) {
347
- Sa();
348
- let e = Fi("sha256").update(Buffer.from(t.rawBody)).digest("hex"), n = ka(e);
347
+ if (t.rawBody.byteLength >= 8 && Buffer.from(t.rawBody.subarray(0, 8)).toString("latin1") === Xa) {
348
+ Ia();
349
+ let e = Yi("sha256").update(Buffer.from(t.rawBody)).digest("hex"), n = Ua(e);
349
350
  return Z(202, {
350
351
  uploadId: n,
351
- bytes: await Oa(n, t.rawBody, e),
352
+ bytes: await Ha(n, t.rawBody, e),
352
353
  complete: !0
353
354
  });
354
355
  }
@@ -359,22 +360,22 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
359
360
  return Z(400, { error: "body must be a packed bundle archive or { bundleKey } JSON" });
360
361
  }
361
362
  return typeof o.bundleKey != "string" || !o.bundleKey ? Z(400, { error: "body.bundleKey (string) is required for the storage transport" }) : e.openArchive ? Z(202, {
362
- uploadId: ka(o.bundleKey),
363
+ uploadId: Ua(o.bundleKey),
363
364
  bundleKey: o.bundleKey,
364
365
  complete: !0
365
366
  }) : Z(501, { error: "storage transport not configured on this instance" });
366
- }, Ha = async (e) => {
367
- let t = await Zi(e, ["manifest.json"]).then((e) => e.get("manifest.json"), () => void 0);
367
+ }, no = async (e) => {
368
+ let t = await da(e, ["manifest.json"]).then((e) => e.get("manifest.json"), () => void 0);
368
369
  if (t === void 0) return [];
369
370
  try {
370
371
  return (JSON.parse(Buffer.from(t).toString("utf8")).tables ?? []).map((e) => e.name).filter((e) => typeof e == "string");
371
372
  } catch {
372
373
  return [];
373
374
  }
374
- }, Ua = (e) => async (t) => {
375
- let n = ha(t, e.secret);
375
+ }, ro = (e) => async (t) => {
376
+ let n = ka(t, e.secret);
376
377
  if (n) return n;
377
- let r = Ra(t.headers), i = La({
378
+ let r = Qa(t.headers), i = Za({
378
379
  req: t,
379
380
  mode: r.mode,
380
381
  deps: e
@@ -386,12 +387,12 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
386
387
  } catch {
387
388
  return Z(400, { error: "body must be JSON: { uploadId } or { bundleKey }" });
388
389
  }
389
- let o = typeof a.bundleKey == "string" && a.bundleKey !== "" ? ka(a.bundleKey) : typeof a.uploadId == "string" ? a.uploadId : "";
390
- if (!_a(o)) return Z(400, { error: "start needs { uploadId } from an upload, or { bundleKey } for the storage transport" });
391
- let s = ar("dimp", `${o}-${Date.now()}-${Math.random()}`), c = await Ea(o, s);
390
+ let o = typeof a.bundleKey == "string" && a.bundleKey !== "" ? Ua(a.bundleKey) : typeof a.uploadId == "string" ? a.uploadId : "";
391
+ if (!ja(o)) return Z(400, { error: "start needs { uploadId } from an upload, or { bundleKey } for the storage transport" });
392
+ let s = fr("dimp", `${o}-${Date.now()}-${Math.random()}`), c = await Ba(o, s);
392
393
  if (c !== s) {
393
- let t = await jn(e.store, c);
394
- if (Mn(t) === void 0 && t !== null) return Q.info("admin.import start: already running", {
394
+ let t = await Ln(e.store, c);
395
+ if (Rn(t) === void 0 && t !== null) return Q.info("admin.import start: already running", {
395
396
  uploadId: o,
396
397
  runId: c
397
398
  }), Z(202, {
@@ -402,18 +403,18 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
402
403
  Q.info("admin.import start: taking over a claim whose run is not running", {
403
404
  uploadId: o,
404
405
  staleRunId: c,
405
- outcome: Mn(t) ?? "no record"
406
- }), c = await Ea(o, s, { takeOver: !0 });
406
+ outcome: Rn(t) ?? "no record"
407
+ }), c = await Ba(o, s, { takeOver: !0 });
407
408
  }
408
- let l = async (e) => (await Da(o).catch(() => void 0), e), u = await za(e, {
409
+ let l = async (e) => (await Va(o).catch(() => void 0), e), u = await $a(e, {
409
410
  ...typeof a.uploadId == "string" ? { uploadId: a.uploadId } : {},
410
411
  ...typeof a.bundleKey == "string" ? { bundleKey: a.bundleKey } : {}
411
412
  });
412
413
  if ("refusal" in u) return l(u.refusal);
413
414
  if (e.snapshot !== void 0 && !r.force) {
414
- let t = await Wa(u.source());
415
+ let t = await io(u.source());
415
416
  if (t !== null) {
416
- let n = qi(t.source?.schemaFingerprint ?? "", e.snapshot, Ga(t));
417
+ let n = sa(t.source?.schemaFingerprint ?? "", e.snapshot, ao(t));
417
418
  if (n.drifted) return Q.warn("admin.import refused (schema drift)", {
418
419
  transport: u.transport,
419
420
  bundle: n.bundleFingerprint.slice(0, 16),
@@ -428,17 +429,17 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
428
429
  }
429
430
  }
430
431
  let d = null;
431
- if (u.transport === "upload" && (d = await Pa(u.uploadId, c), d === null)) return l(Z(409, {
432
+ if (u.transport === "upload" && (d = await Ja(u.uploadId, c), d === null)) return l(Z(409, {
432
433
  error: "no such upload",
433
434
  message: `the bytes for upload '${u.uploadId}' are gone. Re-upload the bundle.`
434
435
  }));
435
- let f = await Ka(e.store, {
436
+ let f = await oo(e.store, {
436
437
  runId: c,
437
438
  mode: r.mode ?? "upsert",
438
439
  via: "api",
439
440
  bundle: u.transport === "storage" ? String(a.bundleKey) : u.uploadId
440
441
  });
441
- return qa({
442
+ return so({
442
443
  deps: e,
443
444
  opts: r,
444
445
  rollback: i,
@@ -446,7 +447,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
446
447
  traced: f,
447
448
  resolved: d === null ? u : {
448
449
  ...u,
449
- source: () => Ba(d)
450
+ source: () => eo(d)
450
451
  }
451
452
  }), Q.info("admin.import started", {
452
453
  runId: c,
@@ -465,15 +466,15 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
465
466
  recorded: f,
466
467
  outcome: "poll /_voltro/admin/transfers for this runId — a 202 means started, not finished"
467
468
  });
468
- }, Wa = async (e) => {
469
- let t = await Zi(e, ["manifest.json"]).then((e) => e.get("manifest.json"), () => null);
469
+ }, io = async (e) => {
470
+ let t = await da(e, ["manifest.json"]).then((e) => e.get("manifest.json"), () => null);
470
471
  if (t == null) return null;
471
472
  try {
472
473
  return JSON.parse(Buffer.from(t).toString("utf8"));
473
474
  } catch {
474
475
  return null;
475
476
  }
476
- }, Ga = (e) => ({ tables: (e.tables ?? []).map((e) => ({
477
+ }, ao = (e) => ({ tables: (e.tables ?? []).map((e) => ({
477
478
  name: e.name,
478
479
  indexes: [],
479
480
  columns: Object.entries(e.columnTypes ?? {}).map(([e, t]) => ({
@@ -483,9 +484,9 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
483
484
  unique: !1,
484
485
  hasDefault: !1
485
486
  }))
486
- })) }), Ka = async (e, t) => {
487
+ })) }), oo = async (e, t) => {
487
488
  try {
488
- return sr(tr), await e.insert(H, {
489
+ return mr(cr), await e.insert(H, {
489
490
  id: t.runId,
490
491
  direction: "import",
491
492
  startedAt: /* @__PURE__ */ new Date(),
@@ -505,7 +506,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
505
506
  error: e?.message ?? String(e)
506
507
  }), !1;
507
508
  }
508
- }, qa = async (e) => {
509
+ }, so = async (e) => {
509
510
  let { deps: t, opts: n, rollback: r, resolved: i, runId: a } = e, o = await import("node:os"), s = await import("node:fs/promises"), c = await import("node:path"), l = await s.mkdtemp(c.join(o.tmpdir(), "voltro-admin-import-")), u = async (n) => {
510
511
  Q.warn("admin.import failed", {
511
512
  runId: a,
@@ -517,11 +518,11 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
517
518
  }).then(() => void 0, () => void 0);
518
519
  };
519
520
  try {
520
- t.assetSink ? await na(i.source(), {
521
+ t.assetSink ? await ga(i.source(), {
521
522
  dir: l,
522
523
  blobs: t.assetSink
523
- }) : await ra(i.source(), l);
524
- let o = await W.runPromiseExit($i({
524
+ }) : await _a(i.source(), l);
525
+ let o = await J.runPromiseExit(pa({
525
526
  store: t.store,
526
527
  bundleDir: l,
527
528
  ...n.mode ? { mode: n.mode } : {},
@@ -566,24 +567,24 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
566
567
  await s.rm(l, {
567
568
  recursive: !0,
568
569
  force: !0
569
- }).catch(() => void 0), await Fa(a).catch(() => void 0), await Da(i.uploadId).catch(() => void 0);
570
+ }).catch(() => void 0), await Ya(a).catch(() => void 0), await Va(i.uploadId).catch(() => void 0);
570
571
  }
571
- }, Ja = /^[A-Za-z0-9_-]{8,64}$/, Ya = (e) => Ja.test(e), Xa = () => process.env.VOLTRO_EXPORT_ARTIFACT_DIR ?? I.join(wi.tmpdir(), "voltro-export-artifacts"), Za = (e) => I.join(Xa(), e), Qa = (e) => I.join(Za(e), "archive.bin"), $a = async (e = Date.now()) => {
572
+ }, co = /^[A-Za-z0-9_-]{8,64}$/, lo = (e) => co.test(e), uo = () => process.env.VOLTRO_EXPORT_ARTIFACT_DIR ?? L.join(zi.tmpdir(), "voltro-export-artifacts"), fo = (e) => L.join(uo(), e), po = (e) => L.join(fo(e), "archive.bin"), mo = async (e = Date.now()) => {
572
573
  let t = 0;
573
574
  try {
574
- for (let n of await X.readdir(Xa())) {
575
- let r = await X.stat(Za(n)).catch(() => null);
576
- r !== null && (e - r.mtimeMs <= 864e5 || (await X.rm(Za(n), {
575
+ for (let n of await X.readdir(uo())) {
576
+ let r = await X.stat(fo(n)).catch(() => null);
577
+ r !== null && (e - r.mtimeMs <= 864e5 || (await X.rm(fo(n), {
577
578
  recursive: !0,
578
579
  force: !0
579
580
  }).catch(() => void 0), t++));
580
581
  }
581
582
  } catch {}
582
583
  return t;
583
- }, eo = async (e, t) => {
584
- if (!Ya(e)) throw Error(`invalid run id: ${e}`);
585
- await X.mkdir(Za(e), { recursive: !0 });
586
- let { createWriteStream: n } = await import("node:fs"), r = n(Qa(e)), i = 0;
584
+ }, ho = async (e, t) => {
585
+ if (!lo(e)) throw Error(`invalid run id: ${e}`);
586
+ await X.mkdir(fo(e), { recursive: !0 });
587
+ let { createWriteStream: n } = await import("node:fs"), r = n(po(e)), i = 0;
587
588
  try {
588
589
  for await (let e of t) i += e.byteLength, r.write(Buffer.from(e)) || await new Promise((e, t) => {
589
590
  r.once("drain", e), r.once("error", t);
@@ -594,18 +595,18 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
594
595
  });
595
596
  }
596
597
  return i;
597
- }, to = async (e) => {
598
- if (!Ya(e)) return null;
599
- let t = await X.stat(Qa(e)).catch(() => null);
598
+ }, go = async (e) => {
599
+ if (!lo(e)) return null;
600
+ let t = await X.stat(po(e)).catch(() => null);
600
601
  return t === null ? null : t.size;
601
- }, no = async (e, t, n) => {
602
- let r = await to(e);
602
+ }, _o = async (e, t, n) => {
603
+ let r = await go(e);
603
604
  if (r === null) return null;
604
605
  if (t >= r) return {
605
606
  bytes: Buffer.alloc(0),
606
607
  total: r
607
608
  };
608
- let i = await X.open(Qa(e), "r");
609
+ let i = await X.open(po(e), "r");
609
610
  try {
610
611
  let e = Math.max(0, Math.min(n, r - t)), a = Buffer.alloc(e);
611
612
  return await i.read(a, 0, e, t), {
@@ -615,27 +616,27 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
615
616
  } finally {
616
617
  await i.close();
617
618
  }
618
- }, ro = async (e) => {
619
- Ya(e) && await X.rm(Za(e), {
619
+ }, vo = async (e) => {
620
+ lo(e) && await X.rm(fo(e), {
620
621
  recursive: !0,
621
622
  force: !0
622
623
  }).catch(() => void 0);
623
- }, io = L({ scope: "voltro:admin-export" }), ao = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [], oo = (e) => {
624
+ }, yo = R({ scope: "voltro:admin-export" }), bo = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [], xo = (e) => {
624
625
  if (typeof e.tenant == "string" && e.tenant) return {
625
626
  kind: "tenant",
626
627
  tenantId: e.tenant
627
628
  };
628
629
  if (Array.isArray(e.tables) && e.tables.length) return {
629
630
  kind: "tables",
630
- tables: ao(e.tables)
631
+ tables: bo(e.tables)
631
632
  };
632
- let t = ao(e.exclude);
633
+ let t = bo(e.exclude);
633
634
  return t.length > 0 ? {
634
635
  kind: "all",
635
636
  exclude: t
636
637
  } : { kind: "all" };
637
- }, so = (e) => async (t) => {
638
- let n = ha(t, e.secret);
638
+ }, So = (e) => async (t) => {
639
+ let n = ka(t, e.secret);
639
640
  if (n) return n;
640
641
  let r;
641
642
  try {
@@ -655,12 +656,12 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
655
656
  });
656
657
  }
657
658
  }
658
- let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? oo(r), c = typeof r.bundleKey == "string" && r.bundleKey.length > 0, l = r.assets === !0 && e.assetSource ? { blobs: e.assetSource } : {}, u = ar("dexp", `${Date.now()}-${Math.random()}`), d = await co(e.store, {
659
+ let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? xo(r), c = typeof r.bundleKey == "string" && r.bundleKey.length > 0, l = r.assets === !0 && e.assetSource ? { blobs: e.assetSource } : {}, u = fr("dexp", `${Date.now()}-${Math.random()}`), d = await Co(e.store, {
659
660
  runId: u,
660
661
  mode: i.subset ? "subset" : s.kind,
661
662
  bundle: c ? String(r.bundleKey) : null
662
663
  });
663
- return lo({
664
+ return wo({
664
665
  deps: e,
665
666
  runId: u,
666
667
  recorded: d,
@@ -670,7 +671,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
670
671
  blobs: l,
671
672
  ...o ? { compression: o } : {},
672
673
  ...c ? { bundleKey: String(r.bundleKey) } : {}
673
- }), $a(), io.info("admin.export started", {
674
+ }), mo(), yo.info("admin.export started", {
674
675
  runId: u,
675
676
  scope: s.kind,
676
677
  storage: c
@@ -681,9 +682,9 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
681
682
  recorded: d,
682
683
  outcome: "poll /_voltro/admin/transfers for this runId; fetch the bytes from /_voltro/admin/export/download"
683
684
  });
684
- }, co = async (e, t) => {
685
+ }, Co = async (e, t) => {
685
686
  try {
686
- return sr(tr), await e.insert(H, {
687
+ return mr(cr), await e.insert(H, {
687
688
  id: t.runId,
688
689
  direction: "export",
689
690
  startedAt: /* @__PURE__ */ new Date(),
@@ -698,17 +699,17 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
698
699
  staged: null
699
700
  }), !0;
700
701
  } catch (e) {
701
- return io.warn("admin.export: the run could not be recorded", {
702
+ return yo.warn("admin.export: the run could not be recorded", {
702
703
  runId: t.runId,
703
704
  error: e?.message ?? String(e)
704
705
  }), !1;
705
706
  }
706
- }, lo = async (e) => {
707
+ }, wo = async (e) => {
707
708
  let { deps: t, runId: n } = e, r = await import("node:os"), i = await import("node:fs/promises"), a = await import("node:path"), o = await i.mkdtemp(a.join(r.tmpdir(), "voltro-admin-export-")), s = async (r) => {
708
709
  e.recorded && await t.store.update(H, n, r).then(() => void 0, () => void 0);
709
710
  };
710
711
  try {
711
- let r = await W.runPromise(Qi({
712
+ let r = await J.runPromise(fa({
712
713
  store: t.store,
713
714
  snapshot: t.snapshot,
714
715
  dialect: t.dialect,
@@ -723,16 +724,16 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
723
724
  })), i = r.tables.reduce((e, t) => e + t.rowCount, 0), a = r.masking?.transformed.length ?? 0;
724
725
  if (e.bundleKey !== void 0) {
725
726
  if (!t.putArchive) throw Error("storage transport not configured on this instance");
726
- await t.putArchive(e.bundleKey, () => Xi({
727
+ await t.putArchive(e.bundleKey, () => ua({
727
728
  dir: o,
728
729
  ...e.blobs
729
730
  }));
730
731
  }
731
- let c = await eo(n, Xi({
732
+ let c = await ho(n, ua({
732
733
  dir: o,
733
734
  ...e.blobs
734
735
  }));
735
- io.info("admin.export complete", {
736
+ yo.info("admin.export complete", {
736
737
  runId: n,
737
738
  tables: r.tables.length,
738
739
  rows: i,
@@ -748,25 +749,25 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
748
749
  });
749
750
  } catch (e) {
750
751
  let t = e?.message ?? String(e);
751
- io.warn("admin.export failed", {
752
+ yo.warn("admin.export failed", {
752
753
  runId: n,
753
754
  error: t
754
755
  }), await s({
755
756
  failure: t,
756
757
  finishedAt: null
757
- }), await ro(n);
758
+ }), await vo(n);
758
759
  } finally {
759
760
  await i.rm(o, {
760
761
  recursive: !0,
761
762
  force: !0
762
763
  }).catch(() => void 0);
763
764
  }
764
- }, uo = (e) => async (t) => {
765
- let n = ha(t, e.secret, "GET");
765
+ }, To = (e) => async (t) => {
766
+ let n = ka(t, e.secret, "GET");
766
767
  if (n) return n;
767
768
  let r = new URLSearchParams(t.query ?? ""), i = r.get("runId") ?? "";
768
- if (!Ya(i)) return Z(400, { error: "download needs ?runId=<id> from the 202 the export answered with" });
769
- let a = Math.max(0, Number(r.get("offset") ?? "0") || 0), o = Number(r.get("length") ?? "8388608"), s = await no(i, a, Number.isFinite(o) && o > 0 ? Math.min(o, po) : fo);
769
+ if (!lo(i)) return Z(400, { error: "download needs ?runId=<id> from the 202 the export answered with" });
770
+ let a = Math.max(0, Number(r.get("offset") ?? "0") || 0), o = Number(r.get("length") ?? "8388608"), s = await _o(i, a, Number.isFinite(o) && o > 0 ? Math.min(o, Do) : Eo);
770
771
  return s === null ? Z(404, {
771
772
  error: "no artefact",
772
773
  message: `this instance holds no produced bundle for run '${i}'. It may have expired, or the export may still be running — poll the run first.`
@@ -780,7 +781,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
780
781
  "x-export-length": String(s.bytes.byteLength)
781
782
  }
782
783
  };
783
- }, fo = 8388608, po = 33554432, mo = async (e, t) => await e.query({
784
+ }, Eo = 8388608, Do = 33554432, Oo = async (e, t) => await e.query({
784
785
  table: H,
785
786
  order: [{
786
787
  column: "startedAt",
@@ -790,19 +791,19 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
790
791
  projection: void 0,
791
792
  skip: 0,
792
793
  take: t
793
- }), ho = (e) => {
794
+ }), ko = (e) => {
794
795
  let t = new Date(e);
795
796
  return Number.isFinite(t.getTime()) ? t : /* @__PURE__ */ new Date(0);
796
- }, go = (e) => ({
797
+ }, Ao = (e) => ({
797
798
  ...e,
798
- startedAt: ho(e.startedAt),
799
- finishedAt: e.finishedAt === null || e.finishedAt === void 0 ? null : ho(e.finishedAt)
800
- }), _o = (e) => async (t) => {
801
- let n = ha(t, e.secret, "GET");
799
+ startedAt: ko(e.startedAt),
800
+ finishedAt: e.finishedAt === null || e.finishedAt === void 0 ? null : ko(e.finishedAt)
801
+ }), jo = (e) => async (t) => {
802
+ let n = ka(t, e.secret, "GET");
802
803
  if (n) return n;
803
804
  let r = Number(new URLSearchParams(t.query ?? "").get("limit") ?? "20"), i = Number.isFinite(r) ? Math.max(1, Math.min(200, Math.trunc(r))) : 20, a;
804
805
  try {
805
- a = (await mo(e.store, i)).map(go);
806
+ a = (await Oo(e.store, i)).map(Ao);
806
807
  } catch (e) {
807
808
  return Z(409, {
808
809
  error: "no import history",
@@ -825,11 +826,11 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
825
826
  direction: e.direction,
826
827
  failure: e.failure,
827
828
  staged: e.staged,
828
- line: or(e)
829
+ line: pr(e)
829
830
  }))
830
831
  });
831
- }, vo = (e, t, n = {}) => (async function* () {
832
- let r = await W.runPromise(Ai(e, t).pipe(W.timeout(n.openTimeout ?? "30 seconds"))), i = await Mi(r.stream), a = n.stallMs ?? 12e4, o, s = () => {
832
+ }, Mo = (e, t, n = {}) => (async function* () {
833
+ let r = await J.runPromise(Gi(e, t).pipe(J.timeout(n.openTimeout ?? "30 seconds"))), i = await qi(r.stream), a = n.stallMs ?? 12e4, o, s = () => {
833
834
  o && clearTimeout(o), o = setTimeout(() => i.destroy(/* @__PURE__ */ Error(`storage read stalled for ${a}ms reading '${t}'`)), a);
834
835
  };
835
836
  try {
@@ -838,7 +839,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
838
839
  } finally {
839
840
  o && clearTimeout(o), i.destroy();
840
841
  }
841
- })(), yo = {
842
+ })(), No = {
842
843
  get: async () => void 0,
843
844
  set: async () => {},
844
845
  setWithTags: async () => {},
@@ -847,63 +848,63 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
847
848
  clear: async () => {},
848
849
  invalidateTag: async () => 0,
849
850
  wrap: async (e, t, n) => n()
850
- }, bo = async (e) => {
851
- Ne(e.appProcedures ?? e.discovered, {
851
+ }, Po = async (e) => {
852
+ ze(e.appProcedures ?? e.discovered, {
852
853
  defaultDeny: e.security?.defaultDeny ?? !0,
853
854
  commandHint: "`voltro serve`"
854
- }), pi({
855
+ }), xi({
855
856
  dataStore: e.store,
856
857
  schemaRegistry: e.schemaRegistry
857
858
  });
858
- let t = (e.discovered.budgets?.length ?? 0) > 0, n, r = new yr({
859
+ let t = (e.discovered.budgets?.length ?? 0) > 0, n, r = new Tr({
859
860
  crdtColumnsOf: (t) => e.schemaRegistry.crdtColumns(t),
860
861
  store: e.store,
861
862
  ...e.snapshotCache ? { cache: e.snapshotCache } : {},
862
863
  ...e.reactive === void 0 ? {} : { reactive: e.reactive },
863
864
  ...t ? { recordCost: (e) => n?.record(e) } : {},
864
- recordDelivery: (e) => Y({
865
+ recordDelivery: (e) => mi({
865
866
  label: e.label,
866
867
  kind: e.kind,
867
868
  durationMs: e.durationMs,
868
869
  rowCount: e.rowCount
869
870
  })
870
- }), i = e.cache ?? yo, a = e.kv ?? ai, o, s = () => void 0, u, d, f, ee, te, ne, m, g = L({ scope: "voltro:workflow" }), re = L({ scope: "voltro:schedule" }), ie = Et({
871
+ }), i = e.cache ?? No, a = e.kv ?? fi, o, s = () => void 0, c, d, f, ee, te, ne, ie, h = R({ scope: "voltro:workflow" }), ae = R({ scope: "voltro:schedule" }), oe = Mt({
871
872
  store: e.store,
872
- warn: (e, t) => g.warn(e, t)
873
- }), ae = ie.remember, oe = ie.resolve, ce = de({
873
+ warn: (e, t) => h.warn(e, t)
874
+ }), se = oe.remember, ce = oe.resolve, ue = me({
874
875
  authority: e.authority,
875
876
  getStore: () => e.store
876
- }), v = (e.discovered.workflows?.length ?? 0) > 0 ? Jr(() => o) : void 0, pe = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, ve = pe || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", ye = e.tenantIsolation === "namespace", Se = (e.log ?? L({ scope: "voltro:serve" })).child("webhooks"), we, Te, x = e.discovered.webhooks;
877
- if (x && x.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
877
+ }), _ = (e.discovered.workflows?.length ?? 0) > 0 ? ti(() => o) : void 0, pe = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, ge = pe || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", ve = e.tenantIsolation === "namespace", xe = (e.log ?? R({ scope: "voltro:serve" })).child("webhooks"), Ce, we, b = e.discovered.webhooks;
878
+ if (b && b.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
878
879
  e.workflowEngineLayer;
879
- let t = Xe({
880
+ let t = St({
880
881
  store: e.store,
881
882
  schemaRegistry: e.schemaRegistry,
882
883
  cache: i,
883
884
  kv: a
884
- }), n = x.outgoing.map((e) => e.descriptor);
885
- Te = Hi.toLayer(zi(t, { events: n })), we = Bi(t, async (e) => {
885
+ }), n = b.outgoing.map((e) => e.descriptor);
886
+ we = na.toLayer($i(t, { events: n })), Ce = ea(t, async (e) => {
886
887
  let t = f;
887
888
  if (t === void 0) {
888
- Se.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.", {
889
+ xe.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.", {
889
890
  deliveryId: e.deliveryId,
890
891
  targetId: e.targetId
891
892
  });
892
893
  return;
893
894
  }
894
- t.runPromise(Hi.execute(e)).catch((t) => {
895
- Se.error("deliverWebhook workflow crashed", {
895
+ t.runPromise(na.execute(e)).catch((t) => {
896
+ xe.error("deliverWebhook workflow crashed", {
896
897
  deliveryId: e.deliveryId,
897
898
  targetId: e.targetId
898
899
  }, t);
899
900
  });
900
901
  }, { events: n });
901
902
  }
902
- let Ee = /* @__PURE__ */ new Map();
903
- if (x) for (let e of x.incoming) {
904
- let t = e.descriptor.path ?? Vi(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = Wi(e.descriptor, {
903
+ let De = /* @__PURE__ */ new Map();
904
+ if (b) for (let e of b.incoming) {
905
+ let t = e.descriptor.path ?? ta(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = ia(e.descriptor, {
905
906
  resolveSecret: async () => process.env[n] ?? null,
906
- resolveWorkflows: () => v === void 0 ? void 0 : ri(v, {
907
+ resolveWorkflows: () => _ === void 0 ? void 0 : di(_, {
907
908
  traceId: `incoming:${e.descriptor.id}`,
908
909
  source: `incoming:${e.descriptor.id}`
909
910
  }),
@@ -915,34 +916,34 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
915
916
  idempotency: e.idempotency,
916
917
  durationMs: e.durationMs
917
918
  };
918
- e.status >= 500 ? Se.error("incoming delivery failed", t) : e.status >= 400 ? Se.warn("incoming delivery rejected", t) : Se.info("incoming delivery handled", t);
919
+ e.status >= 500 ? xe.error("incoming delivery failed", t) : e.status >= 400 ? xe.warn("incoming delivery rejected", t) : xe.info("incoming delivery handled", t);
919
920
  }
920
921
  });
921
- Ee.set(t, { handle: r });
922
+ De.set(t, { handle: r });
922
923
  }
923
- Lr(), ci((t) => Rr(e.store, t.subjectId, t.resourceType, t.resourceId)) || L({ scope: "voltro:serve" }).info("policy guards: using the app-registered tuple source");
924
- let De = [], ke = [...e.discovered.outboxHandlers ?? [], ...Tn((x?.outgoing.length ?? 0) + (x?.incoming.length ?? 0) + (x?.providers.length ?? 0), []) ? [{
924
+ Wr(), gi((t) => Gr(e.store, t.subjectId, t.resourceType, t.resourceId)) || R({ scope: "voltro:serve" }).info("policy guards: using the app-registered tuple source");
925
+ let Oe = [], ke = [...e.discovered.outboxHandlers ?? [], ...Nn((b?.outgoing.length ?? 0) + (b?.incoming.length ?? 0) + (b?.providers.length ?? 0), []) ? [{
925
926
  file: "<framework>/webhooks",
926
927
  id: "voltro-webhook-emit",
927
- definition: Ui(() => we)
928
- }] : []], Ae = ke.length > 0 ? l({
928
+ definition: ra(() => Ce)
929
+ }] : []], Ae = ke.length > 0 ? u({
929
930
  handlers: ke,
930
931
  store: e.store,
931
- log: (e.log ?? L({ scope: "voltro:serve" })).child("outbox"),
932
+ log: (e.log ?? R({ scope: "voltro:serve" })).child("outbox"),
932
933
  onChange: (t) => e.store.onChange((e) => t({
933
934
  table: e.table,
934
935
  op: e.op
935
936
  })),
936
937
  onShutdown: (e) => {
937
- De.push(e);
938
+ Oe.push(e);
938
939
  }
939
- }) : void 0, S = C({
940
+ }) : void 0, x = C({
940
941
  definitions: (e.discovered.connections ?? []).map((e) => e.definition),
941
942
  store: e.store,
942
- publicUrl: Le(e.port ?? 4e3),
943
- log: (e.log ?? L({ scope: "voltro:serve" })).child("connections")
943
+ publicUrl: He(e.port ?? 4e3),
944
+ log: (e.log ?? R({ scope: "voltro:serve" })).child("connections")
944
945
  });
945
- b({
946
+ _e({
946
947
  events: e.discovered.events ?? [],
947
948
  rpcTags: [
948
949
  ...e.discovered.queries.map((e) => e.descriptor.name),
@@ -951,135 +952,135 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
951
952
  ...(e.discovered.streams ?? []).map((e) => e.descriptor.name)
952
953
  ]
953
954
  });
954
- let Me = (e.log ?? L({ scope: "voltro:serve" })).child("events"), Fe = e.broadcastNamespace ?? Be(e.plugins, void 0), Re = Ft(e.plugins, Fe, Me), ze = e.membership?.instanceId ?? process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, Ve = e.membership ?? Wt(e.plugins, {
955
- instanceId: ze,
956
- namespace: Fe,
955
+ let je = (e.log ?? R({ scope: "voltro:serve" })).child("events"), Me = e.broadcastNamespace ?? Ge(e.plugins, void 0), Pe = Vt(e.plugins, Me, je), Fe = e.membership?.instanceId ?? vr(), Ie = _r(), Re = e.membership ?? Yt(e.plugins, {
956
+ instanceId: Fe,
957
+ namespace: Me,
957
958
  meta: { mode: "serve" },
958
- logger: Me
959
- }), He = ge({
959
+ logger: je
960
+ }), S = be({
960
961
  events: e.discovered.events ?? [],
961
- origin: ze,
962
- ...Re.publishRemote === void 0 ? {} : { publishRemote: Re.publishRemote }
963
- }), Ue = (e.discovered.events ?? []).length > 0 ? await Re.attach(He.bus) : null, We = Pt({
962
+ origin: Ie,
963
+ ...Pe.publishRemote === void 0 ? {} : { publishRemote: Pe.publishRemote }
964
+ }), Ue = (e.discovered.events ?? []).length > 0 ? await Pe.attach(S.bus) : null, We = kt({
964
965
  store: e.store,
965
966
  schemaRegistry: e.schemaRegistry,
966
967
  cache: i,
967
968
  kv: a,
968
- ...we === void 0 ? {} : { webhooksService: we },
969
- ...v === void 0 ? {} : { workflowsProxy: v },
969
+ ...Ce === void 0 ? {} : { webhooksService: Ce },
970
+ ..._ === void 0 ? {} : { workflowsProxy: _ },
970
971
  eventTriggers: e.discovered.eventTriggers ?? [],
971
- namespaceIsolationOn: ye,
972
+ namespaceIsolationOn: ve,
972
973
  ...e.ensureTenantProvisioned === void 0 ? {} : { ensureTenantProvisioned: e.ensureTenantProvisioned },
973
974
  ...e.resolveResidentStore === void 0 ? {} : { resolveResidentStore: e.resolveResidentStore },
974
975
  ...Ae === void 0 ? {} : { outbox: { nudge: Ae.nudge } },
975
- ...S.active ? { connections: { registry: S.registry } } : {},
976
- eventBus: He.bus
977
- }), Ge = G.succeed(gr, be), Ke = G.succeed(br, Oe), qe = G.succeed(_r, Ut), Je = G.succeed(xr, p), Ye = (t, n) => {
978
- let r = t.pipe(W.provide(qr(n)));
979
- return (e.baseLayer ? r.pipe(W.provide(e.baseLayer)) : r).pipe(W.provide(Ge)).pipe(W.provide(Ke)).pipe(W.provide(qe)).pipe(W.provide(Je));
980
- }, et = (e, t) => {
981
- let n = Ye(e, t);
982
- return di(n);
983
- }, nt = Sn(), rt = Ie(e.plugins ?? [], nt), it = le({
976
+ ...x.active ? { connections: { registry: x.registry } } : {},
977
+ eventBus: S.bus
978
+ }), Ke = Y.succeed(Sr, Te), qe = Y.succeed(Er, Ne), Je = Y.succeed(Cr, Jt), Ye = Y.succeed(Dr, p), Xe = (t, n) => {
979
+ let r = t.pipe(J.provide(ei(n)));
980
+ return (e.baseLayer ? r.pipe(J.provide(e.baseLayer)) : r).pipe(J.provide(Ke)).pipe(J.provide(qe)).pipe(J.provide(Je)).pipe(J.provide(Ye));
981
+ }, Ze = (e, t) => {
982
+ let n = Xe(e, t);
983
+ return yi(n);
984
+ }, Qe = An(), $e = Ve(e.plugins ?? [], Qe), et = g({
984
985
  plugins: e.plugins ?? [],
985
- metrics: nt,
986
- log: e.log ?? L({ scope: "voltro:serve" })
987
- }), at = Tt(e.plugins ?? [], nt), ot = e.security?.defaultDeny ?? !0, st = Xr({
986
+ metrics: Qe,
987
+ log: e.log ?? R({ scope: "voltro:serve" })
988
+ }), tt = jt(e.plugins ?? [], Qe), nt = e.security?.defaultDeny ?? !0, ct = ri({
988
989
  store: e.store,
989
- defaultDeny: ot,
990
+ defaultDeny: nt,
990
991
  recordMetric: (e) => {
991
- nt.record(e);
992
+ Qe.record(e);
992
993
  },
993
- ...rt.mutation === void 0 ? {} : { interceptor: rt.mutation },
994
+ ...$e.mutation === void 0 ? {} : { interceptor: $e.mutation },
994
995
  buildContext: (e, t, n) => We(e, t, n),
995
- runEffect: et,
996
- undoCapture: $e((t) => e.schemaRegistry.crdtColumns(t))
997
- }), ct = c();
996
+ runEffect: Ze,
997
+ undoCapture: Rt((t) => e.schemaRegistry.crdtColumns(t))
998
+ }), lt = at();
998
999
  {
999
- let t = Nt();
1000
- t !== void 0 && (e.log ?? L({ scope: "voltro:serve" })).info(t);
1000
+ let t = Tt();
1001
+ t !== void 0 && (e.log ?? R({ scope: "voltro:serve" })).info(t);
1001
1002
  }
1002
- let ut = Ce({
1003
+ let ut = l({
1003
1004
  store: e.store,
1004
1005
  ...e.approvals === void 0 ? {} : { defaultExpiryMs: e.approvals.defaultExpiryMs }
1005
- }), dt = zr({
1006
- defaultDeny: ot,
1006
+ }), dt = Kr({
1007
+ defaultDeny: nt,
1007
1008
  buildContext: (e) => We(e),
1008
- runEffect: et,
1009
+ runEffect: Ze,
1009
1010
  recordMetric: (e) => {
1010
- nt.record(e);
1011
+ Qe.record(e);
1011
1012
  },
1012
- ...rt.action === void 0 ? {} : { interceptor: rt.action }
1013
- }), ft = Qr({
1013
+ ...$e.action === void 0 ? {} : { interceptor: $e.action }
1014
+ }), ft = oi({
1014
1015
  tenantScopedTables: e.tenantScopedTables,
1015
1016
  softDeleteScopedTables: e.softDeleteScopedTables
1016
1017
  }), pt = {
1017
- defaultDeny: ot,
1018
+ defaultDeny: nt,
1018
1019
  buildContext: (e) => We(e),
1019
1020
  finalize: (e, t) => ft(e, t.subject),
1020
- provideEffect: Ye,
1021
- ...rt.query === void 0 ? {} : { interceptor: rt.query }
1022
- }, T = J(pt), mt = Zr({
1021
+ provideEffect: Xe,
1022
+ ...$e.query === void 0 ? {} : { interceptor: $e.query }
1023
+ }, T = ai(pt), mt = ii({
1023
1024
  ...pt,
1024
- queryRows: (t, n) => e.store.query(t).then((e) => vi(t.table, e, n.subject))
1025
- }), ht = ei({
1025
+ queryRows: (t, n) => e.store.query(t).then((e) => Ti(t.table, e, n.subject))
1026
+ }), ht = ci({
1026
1027
  ...pt,
1027
1028
  subscribeDescriptor: (e, t, n, i, a) => r.subscribe(e, t, n, void 0, void 0, void 0, i, a),
1028
1029
  subscribeComputed: (e, t, n) => r.subscribeComputed(e, t, n)
1029
- }), E = (e) => e.filter((e) => Un(e.descriptor)), D = {};
1030
+ }), E = (e) => e.filter((e) => Yn(e.descriptor)), D = {};
1030
1031
  for (let t of [
1031
1032
  ...E(e.discovered.queries),
1032
- ...ct.queries,
1033
+ ...lt.queries,
1033
1034
  ...ut.queries,
1034
- ...S.queries
1035
- ]) D[t.descriptor.name] = (e) => q(T(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, $r(t, e));
1035
+ ...x.queries
1036
+ ]) D[t.descriptor.name] = (e) => Fr(T(t, e), r, `subscription.${t.descriptor.name}`, void 0, void 0, si(t, e));
1036
1037
  for (let t of [
1037
1038
  ...E(e.discovered.mutations),
1038
- ...ct.mutations,
1039
+ ...lt.mutations,
1039
1040
  ...ut.mutations,
1040
- ...S.mutations
1041
+ ...x.mutations
1041
1042
  ]) {
1042
- let n = Yr(t.descriptor.output);
1043
- D[t.descriptor.name] = (r) => K(async (e, n) => st(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, Kn(t.descriptor, "mutation"));
1043
+ let n = ni(t.descriptor.output);
1044
+ D[t.descriptor.name] = (r) => G(async (e, n) => ct(t, e, n), r, `mutation.${t.descriptor.name}`, n, e.idempotency, Qn(t.descriptor, "mutation"));
1044
1045
  }
1045
- for (let t of [...E(e.discovered.actions), ...S.actions]) {
1046
- let n = Yr(t.descriptor.output);
1047
- D[t.descriptor.name] = (r) => K(async (e, n) => dt(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, Kn(t.descriptor, "action"));
1046
+ for (let t of [...E(e.discovered.actions), ...x.actions]) {
1047
+ let n = ni(t.descriptor.output);
1048
+ D[t.descriptor.name] = (r) => G(async (e, n) => dt(t, e, n), r, `action.${t.descriptor.name}`, n, e.idempotency, Qn(t.descriptor, "action"));
1048
1049
  }
1049
- let vt = () => `public-${Math.random().toString(36).slice(2, 10)}`, yt = [
1050
+ let gt = () => `public-${Math.random().toString(36).slice(2, 10)}`, _t = [
1050
1051
  ...e.discovered.queries.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
1051
1052
  descriptor: e.descriptor,
1052
1053
  invoke: (t, n) => mt(e, t, {
1053
1054
  subject: n.subject,
1054
- traceId: vt()
1055
+ traceId: gt()
1055
1056
  }),
1056
1057
  subscribe: (t, n, r) => ht(e, t, {
1057
1058
  subject: n.subject,
1058
- traceId: vt()
1059
+ traceId: gt()
1059
1060
  }, r)
1060
1061
  })),
1061
1062
  ...e.discovered.mutations.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
1062
1063
  descriptor: e.descriptor,
1063
- invoke: (t, n) => st(e, t, {
1064
+ invoke: (t, n) => ct(e, t, {
1064
1065
  subject: n.subject,
1065
- traceId: vt()
1066
+ traceId: gt()
1066
1067
  })
1067
1068
  })),
1068
1069
  ...e.discovered.actions.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
1069
1070
  descriptor: e.descriptor,
1070
1071
  invoke: (t, n) => dt(e, t, {
1071
1072
  subject: n.subject,
1072
- traceId: vt()
1073
+ traceId: gt()
1073
1074
  })
1074
1075
  }))
1075
- ], bt = {
1076
+ ], vt = {
1076
1077
  candidates: y({
1077
1078
  queries: e.discovered.queries,
1078
1079
  mutations: e.discovered.mutations,
1079
1080
  actions: e.discovered.actions,
1080
1081
  descriptorOf: (e) => e.descriptor,
1081
1082
  runQuery: (e, t, n) => Promise.resolve(mt(e, t, n)),
1082
- runMutation: (e, t, n) => Promise.resolve(st(e, t, n)),
1083
+ runMutation: (e, t, n) => Promise.resolve(ct(e, t, n)),
1083
1084
  runAction: (e, t, n) => Promise.resolve(dt(e, t, n))
1084
1085
  }),
1085
1086
  policy: e.agents?.tools ?? {},
@@ -1108,7 +1109,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1108
1109
  kind: "mutation",
1109
1110
  input: e.descriptor.input,
1110
1111
  output: e.descriptor.output,
1111
- invoke: (n, r, i) => st(e, n, {
1112
+ invoke: (n, r, i) => ct(e, n, {
1112
1113
  subject: r.subject,
1113
1114
  traceId: t(),
1114
1115
  signal: i
@@ -1126,7 +1127,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1126
1127
  })
1127
1128
  }))
1128
1129
  ];
1129
- await Ht({
1130
+ await Gt({
1130
1131
  config: e.grpc.config,
1131
1132
  candidates: n,
1132
1133
  resolveSubject: async (t) => {
@@ -1138,106 +1139,106 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1138
1139
  },
1139
1140
  store: e.store,
1140
1141
  root: e.grpc.root,
1141
- log: e.log ?? L({ scope: "voltro:serve" }),
1142
- onShutdown: (e) => oi(e)
1142
+ log: e.log ?? R({ scope: "voltro:serve" }),
1143
+ onShutdown: (e) => pi(e)
1143
1144
  });
1144
1145
  }
1145
- let O = lt({
1146
+ let yt = It({
1146
1147
  ...e.restRoutes === void 0 ? {} : { restRoutes: e.restRoutes },
1147
- publicApiEntries: yt,
1148
+ publicApiEntries: _t,
1148
1149
  store: e.store,
1149
1150
  resolveSubject: (t) => e.resolveSubject(t, -1).then((e) => e.subject),
1150
1151
  ...e.idempotency === void 0 ? {} : { idempotency: e.idempotency },
1151
- log: e.log ?? L({ scope: "voltro:serve" })
1152
- }), k = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, St = async (e, t) => {
1153
- let { Readable: n } = await import("node:stream"), r = Di(), i = ki("storage", () => n.from(t()));
1154
- await W.runPromise(ji(r, e, i, { contentType: "application/octet-stream" }));
1155
- }, Ct = k && k.length >= 16 ? [
1152
+ log: e.log ?? R({ scope: "voltro:serve" })
1153
+ }), O = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, xt = async (e, t) => {
1154
+ let { Readable: n } = await import("node:stream"), r = Hi(), i = Wi("storage", () => n.from(t()));
1155
+ await J.runPromise(Ki(r, e, i, { contentType: "application/octet-stream" }));
1156
+ }, Ct = O && O.length >= 16 ? [
1156
1157
  {
1157
1158
  method: "POST",
1158
- path: ca,
1159
- handle: Va({
1160
- secret: k,
1159
+ path: Sa,
1160
+ handle: to({
1161
+ secret: O,
1161
1162
  store: e.store,
1162
1163
  ...e.dataTransferSnapshot ? { snapshot: e.dataTransferSnapshot } : {},
1163
1164
  ...e.dataTransferDialect ? { dialect: e.dataTransferDialect } : {},
1164
- assetSink: ea(Di()),
1165
- openArchive: (e) => vo(Di(), e),
1165
+ assetSink: ma(Hi()),
1166
+ openArchive: (e) => Mo(Hi(), e),
1166
1167
  refreshSubscriptions: (e) => {
1167
1168
  r.refreshAll(e);
1168
1169
  },
1169
- putArchive: St,
1170
+ putArchive: xt,
1170
1171
  ...e.dataTransferDialect ? { dialect: e.dataTransferDialect } : {}
1171
1172
  })
1172
1173
  },
1173
1174
  {
1174
1175
  method: "POST",
1175
- path: la,
1176
- handle: Ua({
1177
- secret: k,
1176
+ path: Ca,
1177
+ handle: ro({
1178
+ secret: O,
1178
1179
  store: e.store,
1179
1180
  ...e.dataTransferSnapshot ? { snapshot: e.dataTransferSnapshot } : {},
1180
1181
  ...e.dataTransferDialect ? { dialect: e.dataTransferDialect } : {},
1181
- assetSink: ea(Di()),
1182
- openArchive: (e) => vo(Di(), e),
1182
+ assetSink: ma(Hi()),
1183
+ openArchive: (e) => Mo(Hi(), e),
1183
1184
  refreshSubscriptions: (e) => {
1184
1185
  r.refreshAll(e);
1185
1186
  },
1186
- putArchive: St
1187
+ putArchive: xt
1187
1188
  })
1188
1189
  },
1189
1190
  {
1190
1191
  method: "GET",
1191
- path: fa,
1192
- handle: _o({
1193
- secret: k,
1192
+ path: Ea,
1193
+ handle: jo({
1194
+ secret: O,
1194
1195
  store: e.store
1195
1196
  })
1196
1197
  },
1197
1198
  {
1198
1199
  method: "GET",
1199
- path: da,
1200
- handle: uo({ secret: k })
1200
+ path: Ta,
1201
+ handle: To({ secret: O })
1201
1202
  },
1202
1203
  {
1203
1204
  method: "POST",
1204
- path: ua,
1205
- handle: so({
1206
- secret: k,
1205
+ path: wa,
1206
+ handle: So({
1207
+ secret: O,
1207
1208
  store: e.store,
1208
1209
  snapshot: e.dataTransferSnapshot ?? { tables: [] },
1209
1210
  dialect: e.dataTransferDialect ?? "memory",
1210
1211
  tenantTables: [...e.tenantScopedTables],
1211
- loadProfile: Nn,
1212
- assetSource: ta(Di(), e.store),
1213
- putArchive: St
1212
+ loadProfile: zn,
1213
+ assetSource: ha(Hi(), e.store),
1214
+ putArchive: xt
1214
1215
  })
1215
1216
  }
1216
- ] : [], Dt = [
1217
+ ] : [], k = [
1217
1218
  ...e.httpRoutes ?? [],
1218
- ...O.httpRoutes,
1219
+ ...yt.httpRoutes,
1219
1220
  ...Ct,
1220
- ...S.httpRoutes
1221
+ ...x.httpRoutes
1221
1222
  ];
1222
- Object.assign(D, He.handlers);
1223
- for (let t of E(e.discovered.streams ?? [])) D[t.descriptor.name] = (n) => Or((r) => xi(r, (r) => {
1223
+ Object.assign(D, S.handlers);
1224
+ for (let t of E(e.discovered.streams ?? [])) D[t.descriptor.name] = (n) => Pr((r) => Oi(r, (r) => {
1224
1225
  let i = We(r), a = t.executor(n, i);
1225
- if (W.isEffect(a)) {
1226
- let t = a.pipe(W.provide(qr(i.store)));
1227
- return (e.baseLayer ? t.pipe(W.provide(e.baseLayer)) : t).pipe(W.provide(Ge)).pipe(W.provide(Ke)).pipe(W.provide(qe)).pipe(W.provide(Je));
1226
+ if (J.isEffect(a)) {
1227
+ let t = a.pipe(J.provide(ei(i.store)));
1228
+ return (e.baseLayer ? t.pipe(J.provide(e.baseLayer)) : t).pipe(J.provide(Ke)).pipe(J.provide(qe)).pipe(J.provide(Je)).pipe(J.provide(Ye));
1228
1229
  }
1229
- return typeof a == "object" && a && typeof a.then == "function" ? W.promise(() => a) : a;
1230
+ return typeof a == "object" && a && typeof a.then == "function" ? J.promise(() => a) : a;
1230
1231
  }), `stream.${t.descriptor.name}`);
1231
- for (let t of e.discovered.workflows ?? []) D[t.definition.name] = (e) => K(async (e, n) => {
1232
+ for (let t of e.discovered.workflows ?? []) D[t.definition.name] = (e) => G(async (e, n) => {
1232
1233
  let r = n;
1233
- return ri(v, {
1234
+ return di(_, {
1234
1235
  subject: r.subject,
1235
1236
  traceId: r.traceId,
1236
1237
  source: "workflow-rpc"
1237
1238
  }).start(t.definition.name, e);
1238
1239
  }, e, `workflow.${t.definition.name}`);
1239
- pe && (D[Xn.name] = (e) => q(T({
1240
- descriptor: Xn,
1240
+ pe && (D[ir.name] = (e) => Fr(T({
1241
+ descriptor: ir,
1241
1242
  executor: (e) => {
1242
1243
  let t = e.id;
1243
1244
  return {
@@ -1246,14 +1247,14 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1246
1247
  column: "startedAt",
1247
1248
  direction: "desc"
1248
1249
  }],
1249
- predicate: cr(U("id", t), U("executionId", t)),
1250
+ predicate: W(U("id", t), U("executionId", t)),
1250
1251
  take: 1,
1251
1252
  skip: void 0,
1252
1253
  projection: void 0
1253
1254
  };
1254
1255
  }
1255
- }, e), r, `subscription.${Xn.name}`), D[Qn.name] = (e) => q(T({
1256
- descriptor: Qn,
1256
+ }, e), r, `subscription.${ir.name}`), D[ar.name] = (e) => Fr(T({
1257
+ descriptor: ar,
1257
1258
  executor: (e) => {
1258
1259
  let t = e, n = [...t.tag === void 0 ? [] : [U("tag", t.tag)], ...t.status === void 0 ? [] : [U("status", t.status)]], r = Number.isFinite(t.limit) && t.limit !== void 0 ? Math.min(Math.max(Math.floor(t.limit), 1), 500) : 100;
1259
1260
  return {
@@ -1262,14 +1263,14 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1262
1263
  column: "startedAt",
1263
1264
  direction: "desc"
1264
1265
  }],
1265
- predicate: n.length === 0 ? void 0 : n.length === 1 ? n[0] : rr(...n),
1266
+ predicate: n.length === 0 ? void 0 : n.length === 1 ? n[0] : ur(...n),
1266
1267
  take: r,
1267
1268
  skip: void 0,
1268
1269
  projection: void 0
1269
1270
  };
1270
1271
  }
1271
- }, e), r, `subscription.${Qn.name}`), D[Zn.name] = (e) => q(T({
1272
- descriptor: Zn,
1272
+ }, e), r, `subscription.${ar.name}`), D[V.name] = (e) => Fr(T({
1273
+ descriptor: V,
1273
1274
  executor: (e) => {
1274
1275
  let t = e.runId;
1275
1276
  return {
@@ -1284,8 +1285,8 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1284
1285
  projection: void 0
1285
1286
  };
1286
1287
  }
1287
- }, e), r, `subscription.${Zn.name}`), D[Yn.name] = (e) => q(T({
1288
- descriptor: Yn,
1288
+ }, e), r, `subscription.${V.name}`), D[rr.name] = (e) => Fr(T({
1289
+ descriptor: rr,
1289
1290
  executor: (e) => {
1290
1291
  let t = e.runId;
1291
1292
  return {
@@ -1300,8 +1301,8 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1300
1301
  projection: void 0
1301
1302
  };
1302
1303
  }
1303
- }, e), r, `subscription.${Yn.name}`), D[B.name] = (e) => q(T({
1304
- descriptor: B,
1304
+ }, e), r, `subscription.${rr.name}`), D[er.name] = (e) => Fr(T({
1305
+ descriptor: er,
1305
1306
  executor: (e) => {
1306
1307
  let t = e;
1307
1308
  return {
@@ -1316,8 +1317,8 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1316
1317
  projection: void 0
1317
1318
  };
1318
1319
  }
1319
- }, e), r, `subscription.${B.name}`), D[V.name] = (e) => q(T({
1320
- descriptor: V,
1320
+ }, e), r, `subscription.${er.name}`), D[tr.name] = (e) => Fr(T({
1321
+ descriptor: tr,
1321
1322
  executor: (e) => {
1322
1323
  let t = e.eventId;
1323
1324
  return {
@@ -1332,68 +1333,68 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1332
1333
  projection: void 0
1333
1334
  };
1334
1335
  }
1335
- }, e), r, `subscription.${V.name}`), D[qn.name] = (t) => K(async (t, n) => {
1336
+ }, e), r, `subscription.${tr.name}`), D[$n.name] = (t) => G(async (t, n) => {
1336
1337
  let r = t;
1337
- return await gt(e.store, n.subject, { executionId: r.executionId }), await v.cancel(r.workflowName, r.executionId), await Lt(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
1338
- }, t, `action.${qn.name}`), D[Jn.name] = (t) => K(async (t, n) => {
1338
+ return await ot(e.store, n.subject, { executionId: r.executionId }), await _.cancel(r.workflowName, r.executionId), await zt(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
1339
+ }, t, `action.${$n.name}`), D[nr.name] = (t) => G(async (t, n) => {
1339
1340
  let r = t;
1340
- return await gt(e.store, n.subject, { executionId: r.executionId }), await v.resume(r.workflowName, r.executionId), { ok: !0 };
1341
- }, t, `action.${Jn.name}`), D[$n.name] = (t) => K(async (t, n) => {
1341
+ return await ot(e.store, n.subject, { executionId: r.executionId }), await _.resume(r.workflowName, r.executionId), { ok: !0 };
1342
+ }, t, `action.${nr.name}`), D[or.name] = (t) => G(async (t, n) => {
1342
1343
  let r = t;
1343
- return await gt(e.store, n.subject, { id: r.id }), v.signal({ id: r.id }, r.signalName, r.payload);
1344
- }, t, `action.${$n.name}`), D[er.name] = (t) => K(async (t, n) => {
1344
+ return await ot(e.store, n.subject, { id: r.id }), _.signal({ id: r.id }, r.signalName, r.payload);
1345
+ }, t, `action.${or.name}`), D[sr.name] = (t) => G(async (t, n) => {
1345
1346
  let r = t;
1346
- return await gt(e.store, n.subject, { id: r.id }), v.update({ id: r.id }, r.updateName, r.payload, r.timeoutMs === void 0 ? void 0 : { timeoutMs: r.timeoutMs });
1347
- }, t, `action.${er.name}`));
1348
- let Ot = [
1349
- ...E(e.discovered.queries).map((e) => z(e.descriptor)),
1350
- ...E(e.discovered.mutations).map((e) => Wn(e.descriptor)),
1351
- ...E(e.discovered.actions).map((e) => R(e.descriptor)),
1352
- ...ct.queries.map((e) => z(e.descriptor)),
1353
- ...ct.mutations.map((e) => Wn(e.descriptor)),
1354
- ...ut.queries.map((e) => z(e.descriptor)),
1355
- ...ut.mutations.map((e) => Wn(e.descriptor)),
1356
- ...S.queries.map((e) => z(e.descriptor)),
1357
- ...S.mutations.map((e) => Wn(e.descriptor)),
1358
- ...S.actions.map((e) => R(e.descriptor)),
1359
- ...E(e.discovered.streams ?? []).map((e) => Gn(e.descriptor)),
1360
- ...He.rpcs,
1361
- ...(e.discovered.workflows ?? []).map((e) => Si(e.definition)),
1347
+ return await ot(e.store, n.subject, { id: r.id }), _.update({ id: r.id }, r.updateName, r.payload, r.timeoutMs === void 0 ? void 0 : { timeoutMs: r.timeoutMs });
1348
+ }, t, `action.${sr.name}`));
1349
+ let Et = [
1350
+ ...E(e.discovered.queries).map((e) => B(e.descriptor)),
1351
+ ...E(e.discovered.mutations).map((e) => Xn(e.descriptor)),
1352
+ ...E(e.discovered.actions).map((e) => z(e.descriptor)),
1353
+ ...lt.queries.map((e) => B(e.descriptor)),
1354
+ ...lt.mutations.map((e) => Xn(e.descriptor)),
1355
+ ...ut.queries.map((e) => B(e.descriptor)),
1356
+ ...ut.mutations.map((e) => Xn(e.descriptor)),
1357
+ ...x.queries.map((e) => B(e.descriptor)),
1358
+ ...x.mutations.map((e) => Xn(e.descriptor)),
1359
+ ...x.actions.map((e) => z(e.descriptor)),
1360
+ ...E(e.discovered.streams ?? []).map((e) => Zn(e.descriptor)),
1361
+ ...S.rpcs,
1362
+ ...(e.discovered.workflows ?? []).map((e) => ki(e.definition)),
1362
1363
  ...pe ? [
1363
- z(Xn),
1364
- z(Qn),
1365
- z(Zn),
1366
- z(Yn),
1367
- z(B),
1368
- z(V),
1369
- R(qn),
1370
- R(Jn),
1371
- R($n),
1372
- R(er)
1364
+ B(ir),
1365
+ B(ar),
1366
+ B(V),
1367
+ B(rr),
1368
+ B(er),
1369
+ B(tr),
1370
+ z($n),
1371
+ z(nr),
1372
+ z(or),
1373
+ z(sr)
1373
1374
  ] : []
1374
- ], kt = Ei.make(...Ot).middleware(Bn).middleware(Vn), At = Gr({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), jt = e.dormancyTenantId ?? vr, Mt = e.dormancy === "sleep" ? {
1375
- register: (t, n, r) => li(e.store, {
1376
- tenantId: r ?? jt,
1375
+ ], Dt = Vi.make(...Et).middleware(Kn).middleware(qn), Ot = Qr({ resolveSubject: ({ headers: t, clientId: n }) => e.resolveSubject(t, n) }), Nt = e.dormancyTenantId ?? wr, Ft = e.dormancy === "sleep" ? {
1376
+ register: (t, n, r) => _i(e.store, {
1377
+ tenantId: r ?? Nt,
1377
1378
  kind: "workflow",
1378
1379
  refId: t,
1379
1380
  wakeAt: n
1380
1381
  }),
1381
- cancel: (t, n) => Ar(e.store, {
1382
- tenantId: n ?? jt,
1382
+ cancel: (t, n) => Lr(e.store, {
1383
+ tenantId: n ?? Nt,
1383
1384
  kind: "workflow",
1384
1385
  refId: t
1385
1386
  }).then(() => {})
1386
- } : void 0, A = ve ? await import("@voltro/workflow") : void 0, j = A?.makeWorkflowRunRecorder({
1387
+ } : void 0, A = ge ? await import("@voltro/workflow") : void 0, j = A?.makeWorkflowRunRecorder({
1387
1388
  store: e.store,
1388
1389
  ...e.workflowRecording === void 0 ? {} : { recording: e.workflowRecording },
1389
- ...Mt === void 0 ? {} : { wakeups: Mt }
1390
- }), It = async (t, n) => {
1390
+ ...Ft === void 0 ? {} : { wakeups: Ft }
1391
+ }), Lt = async (t, n) => {
1391
1392
  await A.closeWorkflowChildrenForParent({
1392
1393
  store: e.store,
1393
1394
  parentExecutionId: t,
1394
1395
  parentStatus: n,
1395
1396
  recorder: j,
1396
- log: { warn: (e, t) => g.warn(e, t ?? {}) },
1397
+ log: { warn: (e, t) => h.warn(e, t ?? {}) },
1397
1398
  interruptChild: async (t, n) => {
1398
1399
  let r = (e.discovered.workflows ?? []).find((e) => e.definition.name === t);
1399
1400
  if (!r) throw Error(`Unknown child workflow: ${t}`);
@@ -1401,7 +1402,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1401
1402
  await f.runPromise(r.definition.interrupt(n));
1402
1403
  }
1403
1404
  });
1404
- }, Lt = async (t, n, r) => {
1405
+ }, zt = async (t, n, r) => {
1405
1406
  let i = (await e.store.query({
1406
1407
  table: "_voltro_workflow_runs",
1407
1408
  order: [],
@@ -1425,15 +1426,15 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1425
1426
  executionId: n,
1426
1427
  ...o == null ? {} : { tenantId: o }
1427
1428
  }
1428
- }), a && await It(n, "cancelled");
1429
- }, Rt = [
1430
- ...ii(e.discovered.workflows ?? [], {
1429
+ }), a && await Lt(n, "cancelled");
1430
+ }, Bt = [
1431
+ ...K(e.discovered.workflows ?? [], {
1431
1432
  buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? We({
1432
1433
  subject: t.subject,
1433
1434
  traceId: t.traceId
1434
1435
  }, e.store, void 0, `workflow:${n.workflowName}`, { parentExecutionId: n.executionId }),
1435
- resolveStartContext: oe,
1436
- ...ce === void 0 ? {} : { resolveAuthority: ce }
1436
+ resolveStartContext: ce,
1437
+ ...ue === void 0 ? {} : { resolveAuthority: ue }
1437
1438
  }, (t, n, r) => {
1438
1439
  let i = A.getWorkflowVersionMetadata(t.definition);
1439
1440
  return A.wrapWorkflowExecuteWithRunRecording({
@@ -1447,27 +1448,27 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1447
1448
  workflowPatches: i.patches,
1448
1449
  parentExecutionId: r?.parentExecutionId ?? null,
1449
1450
  parentClosePolicy: r?.parentClosePolicy ?? null,
1450
- onParentClose: ({ executionId: e, status: t }) => It(e, t),
1451
- ...M(t.definition),
1451
+ onParentClose: ({ executionId: e, status: t }) => Lt(e, t),
1452
+ ...rt(t.definition),
1452
1453
  onTerminal: async ({ executionId: e }) => {
1453
1454
  await d?.gate.release(e);
1454
1455
  },
1455
1456
  recorder: j,
1456
- pluginWorkflowStepLayer: at,
1457
- recordRun: si
1457
+ pluginWorkflowStepLayer: tt,
1458
+ recordRun: hi
1458
1459
  }, n);
1459
1460
  }),
1460
1461
  ...e.discovered.workflowWorkers ?? [],
1461
- ...Te === void 0 ? [] : [Te]
1462
- ], Bt = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...Te === void 0 ? [] : ["voltro.deliverWebhook"]], Vt = Rt.length > 0 ? G.mergeAll(...Rt) : G.empty;
1463
- if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || Te !== void 0) && e.workflowEngineLayer !== void 0) {
1464
- let t = Vt.pipe(G.provideMerge(e.workflowEngineLayer));
1465
- f = ur.make((e.baseLayer === void 0 ? t : t.pipe(G.provideMerge(e.baseLayer))).pipe(G.provideMerge(zn({})))), await f.runPromise(W.void), (e.log ?? L({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${Bt.length} entity type(s) registered`, { entities: Bt });
1462
+ ...we === void 0 ? [] : [we]
1463
+ ], Ht = [...(e.discovered.workflows ?? []).map((e) => e.definition.name).filter(Boolean), ...we === void 0 ? [] : ["voltro.deliverWebhook"]], Ut = Bt.length > 0 ? Y.mergeAll(...Bt) : Y.empty;
1464
+ if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster" || we !== void 0) && e.workflowEngineLayer !== void 0) {
1465
+ let t = Ut.pipe(Y.provideMerge(e.workflowEngineLayer));
1466
+ f = Ni.make((e.baseLayer === void 0 ? t : t.pipe(Y.provideMerge(e.baseLayer))).pipe(Y.provideMerge(Gn({})))), await f.runPromise(J.void), (e.log ?? R({ scope: "voltro:serve" })).child("workflow").info(`workflow runtime ready — ${Ht.length} entity type(s) registered`, { entities: Ht });
1466
1467
  let n = await import("@voltro/workflow/cluster"), r = (e) => f.runPromise(n.redriveFailedRun(e)), i = (e) => f.runPromise(n.resumeRunFromStep(e));
1467
- ne = await zt({
1468
- provider: Ri(e.plugins ?? [])?.broadcast?.provider,
1469
- crossReplica: Ri(e.plugins ?? [])?.broadcast?.crossReplica ?? !1,
1470
- namespace: Fe,
1468
+ ne = await m({
1469
+ provider: Qi(e.plugins ?? [])?.broadcast?.provider,
1470
+ crossReplica: Qi(e.plugins ?? [])?.broadcast?.crossReplica ?? !1,
1471
+ namespace: Me,
1471
1472
  replicaId: crypto.randomUUID(),
1472
1473
  pollStorage: () => f.runPromise(n.pollWorkflowStorage),
1473
1474
  onChange: (t) => e.store.onChange((e) => t({
@@ -1475,9 +1476,9 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1475
1476
  op: e.op,
1476
1477
  ...e.origin === void 0 ? {} : { origin: e.origin }
1477
1478
  })),
1478
- log: (e.log ?? L({ scope: "voltro:serve" })).child("workflow")
1479
+ log: (e.log ?? R({ scope: "voltro:serve" })).child("workflow")
1479
1480
  }), ee = async (t) => {
1480
- let n = await Pe({
1481
+ let n = await Be({
1481
1482
  store: e.store,
1482
1483
  workflows: e.discovered.workflows ?? [],
1483
1484
  runRedrive: r
@@ -1495,7 +1496,7 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1495
1496
  reason: n.outcome.reason
1496
1497
  };
1497
1498
  }, te = async (t) => {
1498
- let n = await se({
1499
+ let n = await le({
1499
1500
  store: e.store,
1500
1501
  workflows: e.discovered.workflows ?? [],
1501
1502
  runResume: i
@@ -1515,32 +1516,32 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1515
1516
  reason: n.outcome.reason
1516
1517
  };
1517
1518
  };
1518
- let a = (e.scheduleCoordination ?? "single") === "advisoryLock" ? Br(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : hi, c = Kr({
1519
+ let a = (e.scheduleCoordination ?? "single") === "advisoryLock" ? qr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Si, l = $r({
1519
1520
  coordinator: a,
1520
1521
  replicaId: e.scheduleReplicaId ?? `pid-${process.pid}`
1521
- }), l = L({ scope: "voltro:flow-control" }), p = {
1522
+ }), u = R({ scope: "voltro:flow-control" }), p = {
1522
1523
  info: (e, t) => {
1523
- l.info(e, t);
1524
+ u.info(e, t);
1524
1525
  },
1525
1526
  warn: (e, t) => {
1526
- l.warn(e, t);
1527
+ u.warn(e, t);
1527
1528
  },
1528
1529
  error: (e, t) => {
1529
- l.error(e, t ?? {});
1530
+ u.error(e, t ?? {});
1530
1531
  }
1531
- }, m, h = () => {
1532
- if (m !== void 0) return m;
1533
- if (o !== void 0 && j !== void 0) return m = _({
1532
+ }, re, ie = () => {
1533
+ if (re !== void 0) return re;
1534
+ if (o !== void 0 && j !== void 0) return re = de({
1534
1535
  store: e.store,
1535
- log: F,
1536
+ log: P,
1536
1537
  workflows: e.discovered.workflows ?? [],
1537
1538
  workflowsProxy: o,
1538
1539
  workflowRuntime: f,
1539
1540
  workflowRunRecorder: j,
1540
- closeChildrenForParent: It
1541
- }), m;
1541
+ closeChildrenForParent: Lt
1542
+ }), re;
1542
1543
  };
1543
- s = h, d = w({
1544
+ s = ie, d = w({
1544
1545
  store: e.store,
1545
1546
  onChange: (t) => e.store.onChange((e) => t({
1546
1547
  table: e.table,
@@ -1554,13 +1555,13 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1554
1555
  },
1555
1556
  workflows: e.discovered.workflows ?? [],
1556
1557
  facade: () => o,
1557
- cancelRunWithReason: h,
1558
+ cancelRunWithReason: ie,
1558
1559
  recordRunEvent: () => j?.recordEvent,
1559
1560
  ...e.workflowStaleness === void 0 ? {} : { staleness: e.workflowStaleness },
1560
1561
  ...e.workflowSuspendSignalHintMs === void 0 ? {} : { suspendSignalHintMs: e.workflowSuspendSignalHintMs },
1561
- scheduleCoordinated: c,
1562
+ scheduleCoordinated: l,
1562
1563
  onAbandoned: async (t) => {
1563
- await _t({
1564
+ await M({
1564
1565
  workflows: e.discovered.workflows ?? [],
1565
1566
  facade: () => o,
1566
1567
  log: p,
@@ -1569,8 +1570,8 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1569
1570
  },
1570
1571
  log: p
1571
1572
  });
1572
- let g = d;
1573
- g !== void 0 && oi(() => g.stop()), u = wt({
1573
+ let h = d;
1574
+ h !== void 0 && pi(() => h.stop()), c = At({
1574
1575
  store: e.store,
1575
1576
  onChange: (t) => e.store.onChange((e) => t({
1576
1577
  table: e.table,
@@ -1584,26 +1585,26 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1584
1585
  resumeSignal: () => f === void 0 || A === void 0 ? void 0 : async ({ executionId: t, workflowName: n, signalName: r, payload: i }) => {
1585
1586
  await f.runPromise(A.completeSuspendingSignal({
1586
1587
  store: e.store,
1587
- target: tt(t, n),
1588
+ target: st(t, n),
1588
1589
  signalName: r,
1589
1590
  payload: i
1590
1591
  }));
1591
1592
  },
1592
1593
  runEffect: (e) => f.runPromise(e),
1593
- scheduleCoordinated: c,
1594
+ scheduleCoordinated: l,
1594
1595
  log: p
1595
1596
  });
1596
- let re = u;
1597
- re !== void 0 && oi(() => re.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? ni({
1597
+ let ae = c;
1598
+ ae !== void 0 && pi(() => ae.stop()), o = (e.discovered.workflows?.length ?? 0) > 0 ? ui({
1598
1599
  workflows: e.discovered.workflows ?? [],
1599
1600
  runEffect: (e) => f.runPromise(e),
1600
1601
  onEnqueue: () => ne?.publishWake(),
1601
- ...g === void 0 ? {} : {
1602
- admitStart: g.gate.admitStart,
1603
- startPayloadSchema: g.gate.startPayloadSchema,
1604
- parkDelayedStart: g.gate.parkDelayed
1602
+ ...h === void 0 ? {} : {
1603
+ admitStart: h.gate.admitStart,
1604
+ startPayloadSchema: h.gate.startPayloadSchema,
1605
+ parkDelayedStart: h.gate.parkDelayed
1605
1606
  },
1606
- rememberStartContext: ae,
1607
+ rememberStartContext: se,
1607
1608
  signal: async (t, n, r) => {
1608
1609
  let i = await A.sendWorkflowSignal({
1609
1610
  store: e.store,
@@ -1627,35 +1628,35 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1627
1628
  payload: r,
1628
1629
  ...i === void 0 ? {} : { options: i }
1629
1630
  }),
1630
- listRuns: (t) => je(e.store, t),
1631
- retry: (t, n) => fe({
1631
+ listRuns: (t) => Le(e.store, t),
1632
+ retry: (t, n) => he({
1632
1633
  store: e.store,
1633
1634
  workflows: e.discovered.workflows ?? [],
1634
1635
  runPromise: (e) => f.runPromise(e)
1635
1636
  }, t, n),
1636
- redrive: (t) => Pe({
1637
+ redrive: (t) => Be({
1637
1638
  store: e.store,
1638
1639
  workflows: e.discovered.workflows ?? [],
1639
1640
  runRedrive: r
1640
1641
  }, t).then((e) => e.outcome)
1641
1642
  }) : void 0;
1642
1643
  }
1643
- let Gt = G.mergeAll(kt.toLayer(D), At), Kt = xt(D, e.discovered.queries.map((e) => e.descriptor.name), pe), qt = G.mergeAll(kt.toLayer(Kt), At), N = e.observability, Jt = await kr({
1644
+ let Wt = Y.mergeAll(Dt.toLayer(D), Ot), Kt = bt(D, e.discovered.queries.map((e) => e.descriptor.name), pe), qt = Y.mergeAll(Dt.toLayer(Kt), Ot), N = e.observability, Xt = await Ir({
1644
1645
  ...e.appName === void 0 ? {} : { serviceName: e.appName },
1645
1646
  ...N && N.spanProcessors.length > 0 ? { extraSpanProcessors: N.spanProcessors } : {},
1646
1647
  ...N && N.metricReaders.length > 0 ? { extraMetricReaders: N.metricReaders } : {},
1647
1648
  ...N && Object.keys(N.resourceAttributes).length > 0 ? { resourceAttributes: N.resourceAttributes } : {},
1648
1649
  ...N && N.sampler !== void 0 ? { sampler: N.sampler } : {}
1649
- }), Yt = !1, Xt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Zt, shutdown: P } = gi({
1650
- group: kt,
1651
- handlersLayer: Gt,
1650
+ }), Zt = !1, Qt = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: $t, shutdown: en } = Ci({
1651
+ group: Dt,
1652
+ handlersLayer: Wt,
1652
1653
  httpHandlersLayer: qt,
1653
1654
  port: e.port ?? 4e3,
1654
1655
  ...e.host === void 0 ? {} : { host: e.host },
1655
1656
  path: e.path ?? "/ws",
1656
- tracerLayer: Jt.layer,
1657
- security: ue(e),
1658
- ...xn(e),
1657
+ tracerLayer: Xt.layer,
1658
+ security: fe(e),
1659
+ ...kn(e),
1659
1660
  ...e.discovered.wsGateways !== void 0 && e.discovered.wsGateways.length > 0 ? { webSocketGateways: e.discovered.wsGateways } : {},
1660
1661
  resolveGatewaySubject: async (t) => {
1661
1662
  let n = await e.resolveSubject(t, -1);
@@ -1664,19 +1665,20 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1664
1665
  ...n.credentialExpiresAt === void 0 ? {} : { credentialExpiresAt: n.credentialExpiresAt * 1e3 }
1665
1666
  };
1666
1667
  },
1667
- ...it,
1668
+ ...et,
1668
1669
  healthCheck: {
1669
- isReady: () => Yt,
1670
- ...Xt ? { ping: Xt } : {}
1670
+ isReady: () => Zt,
1671
+ ...Qt ? { ping: Qt } : {}
1671
1672
  },
1672
- ...Dt.length > 0 ? { httpRoutes: Dt } : {},
1673
+ ...k.length > 0 ? { httpRoutes: k } : {},
1673
1674
  ...e.getStore === void 0 ? {} : { getStore: e.getStore },
1674
- ...Ee.size > 0 ? { webhookRoutes: Ee } : {},
1675
- ...e.inspectRoute === void 0 ? {} : { inspectRoute: e.inspectRoute }
1676
- }), Qt = sa(Zt);
1677
- if (await Dr(Zt), (e.discovered.schedules?.length ?? 0) > 0) {
1678
- let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? Br(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : hi;
1679
- m = await _i(e.discovered.schedules ?? [], {
1675
+ ...De.size > 0 ? { webhookRoutes: De } : {},
1676
+ ...e.inspectRoute === void 0 ? {} : { inspectRoute: e.inspectRoute },
1677
+ ...e.inspectStream === void 0 ? {} : { inspectStream: e.inspectStream }
1678
+ }), tn = xa($t);
1679
+ if (await Nr($t), (e.discovered.schedules?.length ?? 0) > 0) {
1680
+ let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? qr(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Si;
1681
+ ie = await wi(e.discovered.schedules ?? [], {
1680
1682
  store: e.store,
1681
1683
  coordinator: t,
1682
1684
  defaultTrigger: e.scheduleDefaultTrigger ?? "self",
@@ -1690,451 +1692,478 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
1690
1692
  }, e.store, void 0, `schedule:${n}`),
1691
1693
  log: {
1692
1694
  info: (e, t) => {
1693
- re.info(e, t);
1695
+ ae.info(e, t);
1694
1696
  },
1695
1697
  warn: (e, t) => {
1696
- re.warn(e, t);
1698
+ ae.warn(e, t);
1697
1699
  },
1698
1700
  error: (e, t) => {
1699
- re.error(e, t ?? {});
1701
+ ae.error(e, t ?? {});
1700
1702
  },
1701
1703
  debug: () => {}
1702
1704
  },
1703
1705
  ...e.scheduleFireInterceptor === void 0 ? {} : { interceptFire: e.scheduleFireInterceptor },
1704
1706
  ...e.onScheduleRunEvent === void 0 ? {} : { onRunEvent: e.onScheduleRunEvent }
1705
- }), e.onSchedulerReady?.(m);
1707
+ }), e.onSchedulerReady?.(ie);
1706
1708
  }
1707
- let F = e.log ?? L({ scope: "voltro:serve" }), $t, en;
1708
- if ((e.discovered.subscribers?.length ?? 0) > 0 && ($t = Qe(e.discovered.subscribers ?? [], e.store, F.child("subscribe"), e.schemaRegistry, He.bus)), (e.discovered.reactions?.length ?? 0) > 0) {
1709
- let t = F.child("reaction"), n = async (n, r) => {
1710
- if (n.kind === "workflow") {
1711
- if (v === void 0) {
1712
- t.warn("reaction workflow act skipped — no workflow engine in this app", { workflow: n.workflow });
1709
+ let P = e.log ?? R({ scope: "voltro:serve" }), nn, rn, F = e.claimChange;
1710
+ if ((e.discovered.subscribers?.length ?? 0) > 0 && (nn = it(e.discovered.subscribers ?? [], e.store, P.child("subscribe"), e.schemaRegistry, {
1711
+ eventBus: S.bus,
1712
+ ...F === void 0 ? {} : { claimOnce: F }
1713
+ })), (e.discovered.reactions?.length ?? 0) > 0) {
1714
+ let t = P.child("reaction");
1715
+ rn = ye(e.discovered.reactions ?? [], e.store, {
1716
+ runAct: async (n, r) => {
1717
+ if (n.kind === "workflow") {
1718
+ if (_ === void 0) {
1719
+ t.warn("reaction workflow act skipped — no workflow engine in this app", { workflow: n.workflow });
1720
+ return;
1721
+ }
1722
+ let e = n.payload === void 0 ? r.new ?? r.old ?? {} : n.payload(r);
1723
+ await di(_, {
1724
+ traceId: `reaction:${n.workflow}`,
1725
+ source: `reaction:${n.workflow}`
1726
+ }).start(n.workflow, e);
1713
1727
  return;
1714
1728
  }
1715
- let e = n.payload === void 0 ? r.new ?? r.old ?? {} : n.payload(r);
1716
- await ri(v, {
1717
- traceId: `reaction:${n.workflow}`,
1718
- source: `reaction:${n.workflow}`
1719
- }).start(n.workflow, e);
1720
- return;
1721
- }
1722
- await _e(n.agent, r, {
1723
- findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
1724
- runAction: (e, t, n) => Promise.resolve(dt(e, t, n)),
1725
- makeSubject: (e) => Hn(e),
1726
- now: () => Date.now(),
1727
- log: t
1728
- });
1729
- }, r = async (n, r) => {
1730
- try {
1731
- let { requireAiBudget: t } = await import("@voltro/ai");
1732
- return (await W.runPromise(W.either(t(e.store, {
1733
- tenantId: n,
1734
- limitUsd: r
1735
- }))))._tag === "Right";
1736
- } catch (e) {
1737
- return t.warn("reaction budget check failed — refusing the act", { tenantId: n }, e), !1;
1738
- }
1739
- }, i = Ze(e.store, { onError: (e) => t.warn("reaction: rate-slot claim failed; refusing the act", { cause: String(e) }) });
1740
- en = he(e.discovered.reactions ?? [], e.store, {
1741
- runAct: n,
1742
- checkBudget: r,
1743
- claimRateSlot: (e) => i.claim(e)
1729
+ await Se(n.agent, r, {
1730
+ findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
1731
+ runAction: (e, t, n) => Promise.resolve(dt(e, t, n)),
1732
+ makeSubject: (e) => Jn(e),
1733
+ now: () => Date.now(),
1734
+ log: t
1735
+ });
1736
+ },
1737
+ checkBudget: async (n, r) => {
1738
+ try {
1739
+ let { requireAiBudget: t } = await import("@voltro/ai");
1740
+ return (await J.runPromise(J.either(t(e.store, {
1741
+ tenantId: n,
1742
+ limitUsd: r
1743
+ }))))._tag === "Right";
1744
+ } catch (e) {
1745
+ return t.warn("reaction budget check failed — refusing the act", { tenantId: n }, e), !1;
1746
+ }
1747
+ },
1748
+ ...F === void 0 ? {} : { claimRateSlot: (e) => F(Pt, e) },
1749
+ ...F === void 0 ? {} : { claimDedupe: (e) => F(wt, e) }
1744
1750
  }, t);
1745
1751
  }
1746
- let tn;
1747
- (e.discovered.aggregates?.length ?? 0) > 0 && (tn = await h({
1752
+ let an;
1753
+ (e.discovered.aggregates?.length ?? 0) > 0 && (an = await re({
1748
1754
  discovered: e.discovered.aggregates ?? [],
1749
1755
  store: e.store,
1750
- log: F.child("aggregate"),
1756
+ log: P.child("aggregate"),
1751
1757
  ...e.analytics === void 0 ? {} : { analytics: e.analytics },
1752
1758
  ...e.aggregateStorage === void 0 ? {} : { storage: e.aggregateStorage },
1753
1759
  ...e.aggregateCoordinator === void 0 ? {} : { coordinator: e.aggregateCoordinator }
1754
- }), Ge = G.succeed(gr, tn.registry));
1755
- let nn;
1756
- (e.discovered.expectations?.length ?? 0) > 0 && (nn = wr({
1760
+ }), Ke = Y.succeed(Sr, an.registry));
1761
+ let on;
1762
+ (e.discovered.expectations?.length ?? 0) > 0 && (on = Ar({
1757
1763
  discovered: e.discovered.expectations ?? [],
1758
1764
  store: e.store,
1759
- log: F.child("expectation")
1760
- }), Ke = G.succeed(br, nn.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = Er({
1765
+ log: P.child("expectation")
1766
+ }), qe = Y.succeed(Er, on.registry)), (e.discovered.budgets?.length ?? 0) > 0 && (n = Mr({
1761
1767
  discovered: e.discovered.budgets ?? [],
1762
- log: F.child("finops")
1763
- }), qe = G.succeed(_r, n.registry));
1764
- let rn;
1765
- return (e.discovered.experiments?.length ?? 0) > 0 && (rn = Tr({
1768
+ log: P.child("finops")
1769
+ }), Je = Y.succeed(Cr, n.registry));
1770
+ let sn;
1771
+ return (e.discovered.experiments?.length ?? 0) > 0 && (sn = jr({
1766
1772
  discovered: e.discovered.experiments ?? [],
1767
1773
  store: e.store,
1768
- log: F.child("experiment")
1769
- }), Je = G.succeed(xr, rn.registry)), Yt = !0, e.bootTiming?.mark("ready"), {
1774
+ log: P.child("experiment")
1775
+ }), Ye = Y.succeed(Dr, sn.registry)), Zt = !0, e.bootTiming?.mark("ready"), {
1770
1776
  dispatcher: r,
1771
- server: Zt,
1772
- scheduler: m,
1773
- eventsSnapshot: xe(He.bus, He.declared),
1777
+ server: $t,
1778
+ scheduler: ie,
1779
+ eventsSnapshot: Ee(S.bus, S.declared),
1774
1780
  membersSnapshot: () => ({
1775
- members: Ve.membership.list(),
1781
+ members: Re.membership.list(),
1776
1782
  capturedAt: Date.now()
1777
1783
  }),
1778
- agentTools: () => bt,
1779
- rpcMetrics: () => nt,
1780
- webhooksService: () => we,
1784
+ agentTools: () => vt,
1785
+ rpcMetrics: () => Qe,
1786
+ webhooksService: () => Ce,
1781
1787
  runCanceller: () => s(),
1782
1788
  flowControlHealth: () => d?.cancelHealth(),
1783
- inferenceHealth: () => u?.health(),
1784
- workflowWriteActions: () => v === void 0 || j === void 0 ? void 0 : me({
1789
+ inferenceHealth: () => c?.health(),
1790
+ workflowWriteActions: () => _ === void 0 || j === void 0 ? void 0 : v({
1785
1791
  store: e.store,
1786
- log: F,
1792
+ log: P,
1787
1793
  workflows: e.discovered.workflows ?? [],
1788
1794
  workflowsProxy: o,
1789
1795
  workflowRuntime: f,
1790
1796
  workflowRunRecorder: j,
1791
- closeChildrenForParent: It
1797
+ closeChildrenForParent: Lt
1792
1798
  }),
1793
1799
  redriveWorkflowRun: (e) => ee ? ee(e) : Promise.reject(/* @__PURE__ */ Error("redrive: this app registers no workflows")),
1794
1800
  resumeWorkflowRunFromStep: (e) => te ? te(e) : Promise.reject(/* @__PURE__ */ Error("resume-from-step: this app registers no workflows")),
1795
1801
  close: async () => {
1796
- Yt = !1, await Qt.drainRequests();
1797
- for (let e of De) try {
1802
+ Zt = !1, await tn.drainRequests();
1803
+ for (let e of Oe) try {
1798
1804
  await e();
1799
1805
  } catch (e) {
1800
- F.warn("serve: teardown step failed", {}, e);
1806
+ P.warn("serve: teardown step failed", {}, e);
1801
1807
  }
1802
- await Ue?.detach(), await Ve.detach(), tn?.detach(), nn?.detach(), n?.detach(), rn?.detach(), en?.(), $t?.(), await m?.shutdown(), r.close(), await ne?.detach(), await f?.dispose(), await P(), await Qt.finish();
1808
+ await Ue?.detach(), await Re.detach(), an?.detach(), on?.detach(), n?.detach(), sn?.detach(), rn?.(), nn?.(), await ie?.shutdown(), r.close(), await ne?.detach(), await f?.dispose(), await en(), await tn.finish();
1803
1809
  }
1804
1810
  };
1805
- }, $ = L({ scope: "voltro:serve" }), xo = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", So = Jt, Co = async (e) => {
1806
- let t = kn(process.cwd());
1807
- if (Ln(t)) {
1811
+ }, $ = R({ scope: "voltro:serve" }), Fo = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", Io = F, Lo = async (e) => {
1812
+ let t = sn(process.cwd());
1813
+ if (Un(t)) {
1808
1814
  let n;
1809
1815
  try {
1810
- let e = await import(Rn(t).href);
1816
+ let e = await import(Wn(t).href);
1811
1817
  typeof e.runServe == "function" ? n = e.runServe : $.warn("serve bundle has no runServe export — using the standard serve path");
1812
1818
  } catch (e) {
1813
1819
  $.warn("serve bundle failed to load — using the standard serve path", {}, e);
1814
1820
  }
1815
1821
  if (n) return $.info("serve: booting from the precompiled serve bundle"), n(e);
1816
1822
  }
1817
- return wo(e);
1818
- }, wo = async (c) => {
1819
- let l = An();
1823
+ return Ro(e);
1824
+ }, Ro = async (l) => {
1825
+ xr("serve");
1826
+ let u = In();
1820
1827
  e("serve");
1821
1828
  try {
1822
- Pi();
1829
+ ji();
1823
1830
  } catch (e) {
1824
1831
  throw i(e instanceof Error ? e.message : String(e));
1825
1832
  }
1826
- let p = process.cwd(), h = await Ke(p), se = Yt({
1833
+ let p = process.cwd(), m = await Qe(p), re = an({
1827
1834
  kind: "api",
1828
- configPort: h?.port,
1835
+ configPort: m?.port,
1829
1836
  env: process.env,
1830
- flagPort: So(c, "--port")
1837
+ flagPort: Io(l, "--port")
1831
1838
  });
1832
- for (let e of se.warnings) $.warn(e);
1833
- let le = se.port;
1834
- fi(ui(h?.secrets)), await Xt({
1835
- rawEnv: h?.env,
1839
+ for (let e of re.warnings) $.warn(e);
1840
+ let le = re.port;
1841
+ bi(vi(m?.secrets)), await tn({
1842
+ rawEnv: m?.env,
1836
1843
  appType: "api",
1837
1844
  root: p,
1838
1845
  log: $,
1839
1846
  generateTypes: !1
1840
- }), l.mark("config");
1841
- let _ = (process.env.DB_DIALECT ?? h?.store ?? "memory").toLowerCase(), de = (_ === "mariadb" || _ === "postgres" || _ === "mssql") && (process.env.CDC ?? "1") !== "0", fe = _ === "mariadb" ? "mariadb" : _ === "mssql" ? "mssql" : void 0, me = On(p);
1842
- if (!r() && Ln(me)) try {
1843
- let e = await import(Rn(me).href);
1847
+ }), u.mark("config");
1848
+ let g = (process.env.DB_DIALECT ?? m?.store ?? "memory").toLowerCase(), de = (g === "mariadb" || g === "postgres" || g === "mssql") && (process.env.CDC ?? "1") !== "0", me = g === "mariadb" ? "mariadb" : g === "mssql" ? "mssql" : void 0, he = on(p);
1849
+ if (!r() && Un(he)) try {
1850
+ let e = await import(Wn(he).href);
1844
1851
  if (e.modules) {
1845
1852
  let t = {};
1846
- for (let [n, r] of Object.entries(e.modules)) t[Fn(p, n)] = r;
1853
+ for (let [n, r] of Object.entries(e.modules)) t[Vn(p, n)] = r;
1847
1854
  n(t), $.info("precompiled api bundle loaded", { modules: Object.keys(t).length });
1848
1855
  }
1849
1856
  } catch (e) {
1850
1857
  $.warn("precompiled api bundle failed to load — falling back to source", {}, e);
1851
1858
  }
1852
- let y = await St(p), b = await j(y, { cdc: de && fe !== void 0 }), he = ee(b);
1859
+ let v = await Ot(p), y = await zt(v, { cdc: de && me !== void 0 }), _e = ee(y);
1853
1860
  {
1854
- Ye({
1855
- plugins: h?.plugins ?? [],
1856
- queries: b.queries,
1857
- mutations: b.mutations,
1858
- actions: b.actions,
1859
- streams: b.streams,
1861
+ tt({
1862
+ plugins: m?.plugins ?? [],
1863
+ queries: y.queries,
1864
+ mutations: y.mutations,
1865
+ actions: y.actions,
1866
+ streams: y.streams,
1860
1867
  log: $
1861
1868
  });
1862
- let e = pe(b.serverOnlyLeaks, ce(process.env, "strict"), Nr, "`voltro serve`");
1869
+ let e = ge(y.serverOnlyLeaks, ue(process.env, "strict"), Br, "`voltro serve`");
1863
1870
  if (e.action === "fail") throw i(e.message ?? "");
1864
1871
  e.action === "warn" && $.warn(e.message ?? "");
1865
1872
  }
1866
- let ge = y.filter((e) => Dn.test(e)), _e = ge.length > 0 ? await En(ge, $.child("webhooks")) : {
1873
+ let ye = v.filter((e) => Fn.test(e)), be = ye.length > 0 ? await Pn(ye, $.child("webhooks")) : {
1867
1874
  outgoing: [],
1868
1875
  incoming: [],
1869
1876
  providers: []
1870
- }, be = wn(b.events), xe = _e.outgoing.length + _e.incoming.length + _e.providers.length + be.length === 0 ? void 0 : {
1871
- ..._e,
1872
- outgoing: [..._e.outgoing, ...be]
1873
- }, Ce = cn({
1877
+ }, Se = Mn(y.events), Te = be.outgoing.length + be.incoming.length + be.providers.length + Se.length === 0 ? void 0 : {
1878
+ ...be,
1879
+ outgoing: [...be.outgoing, ...Se]
1880
+ }, Ee = vn({
1874
1881
  nodeEnv: process.env.NODE_ENV,
1875
- cdcDialect: fe,
1876
- declared: h?.schema
1877
- }), Oe = ln({
1878
- gates: Ce,
1882
+ cdcDialect: me,
1883
+ declared: m?.schema
1884
+ }), Ne = yn({
1885
+ gates: Ee,
1879
1886
  runtime: {
1880
- traces: ae(),
1881
- undo: yi()
1887
+ traces: oe(),
1888
+ undo: Ei()
1882
1889
  }
1883
1890
  });
1884
- if (Oe !== void 0) throw i(`serve: ${Oe}`);
1885
- let je = sn({
1886
- mix: b.featureMix,
1887
- plugins: h?.plugins ?? [],
1888
- gates: Ce,
1889
- ...fe ? { cdcDialect: fe } : {}
1890
- }), Ne = h?.analytics !== void 0 && h.analytics.kind !== "noop" && _ !== "memory" ? (await P(_)).makeSqlLayer(O()) : void 0, Pe = await yt({
1891
- spec: h?.analytics,
1892
- sqlLayer: Ne,
1891
+ if (Ne !== void 0) throw i(`serve: ${Ne}`);
1892
+ let Le = _n({
1893
+ mix: y.featureMix,
1894
+ plugins: m?.plugins ?? [],
1895
+ gates: Ee,
1896
+ ...me ? { cdcDialect: me } : {}
1897
+ }), ze = m?.analytics !== void 0 && m.analytics.kind !== "noop" && g !== "memory" ? (await I(g)).makeSqlLayer(k()) : void 0, Be = await qe({
1898
+ spec: m?.analytics,
1899
+ sqlLayer: ze,
1893
1900
  log: $
1894
1901
  }), C = (() => {
1895
- let e = new Set(b.tables.map((e) => e.tableName)), t = [...b.tables];
1896
- for (let n of [...je, ...Pe.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1902
+ let e = new Set(y.tables.map((e) => e.tableName)), t = [...y.tables];
1903
+ for (let n of [...Le, ...Be.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
1897
1904
  return t;
1898
1905
  })();
1899
- for (let e of C) sr(e);
1906
+ for (let e of C) mr(e);
1900
1907
  {
1901
- let e = Pr(bi(Ae(b), re(C)));
1908
+ let e = Vr(Di(we(y), vt(C)));
1902
1909
  e !== void 0 && $.warn(e);
1903
1910
  }
1904
- let Ie = (process.env.NODE_ENV ?? "").toLowerCase();
1905
- if (xo(Ie, _, process.env.VOLTRO_AUTO_MIGRATE)) {
1906
- let e = (await P(_)).makeSqlLayer(O()), t = await W.runPromise(dr.SqlClient.pipe(W.flatMap((e) => mr(e, p)), W.provide(e), W.catchAll(() => W.succeed([]))));
1911
+ let Ve = (process.env.NODE_ENV ?? "").toLowerCase();
1912
+ if (Fo(Ve, g, process.env.VOLTRO_AUTO_MIGRATE)) {
1913
+ let e = (await I(g)).makeSqlLayer(k()), t = await J.runPromise(Pi.SqlClient.pipe(J.flatMap((e) => Li(e, p)), J.provide(e), J.catchAll(() => J.succeed([]))));
1907
1914
  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));
1908
- let n = await W.runPromise(dr.SqlClient.pipe(W.flatMap((e) => hr(e, C, {
1909
- appliedBy: `serve:${Ie}`,
1915
+ let n = await J.runPromise(Pi.SqlClient.pipe(J.flatMap((e) => Ri(e, C, {
1916
+ appliedBy: `serve:${Ve}`,
1910
1917
  environment: "prod",
1911
- dialectId: _
1912
- })), W.provide(e)));
1913
- n.kind === "prod-mismatch" && ($.error(pr(n, _)), $.error(un({
1914
- gates: Ce,
1918
+ dialectId: g
1919
+ })), J.provide(e)));
1920
+ n.kind === "prod-mismatch" && ($.error(Ii(n, g)), $.error(bn({
1921
+ gates: Ee,
1915
1922
  nodeEnv: process.env.NODE_ENV,
1916
- cdcDialect: fe,
1917
- declared: h?.schema
1918
- })), $.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(pr(n, _));
1923
+ cdcDialect: me,
1924
+ declared: m?.schema
1925
+ })), $.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(Ii(n, g));
1919
1926
  }
1920
- await tn({
1921
- dialectId: _,
1927
+ await fn({
1928
+ dialectId: g,
1922
1929
  tables: C,
1923
- mode: $t(h?.reactiveTriggers),
1924
- lockSchema: O().schema,
1925
- makeLayer: async () => (await P(_)).makeSqlLayer(O()),
1930
+ mode: un(m?.reactiveTriggers),
1931
+ lockSchema: k().schema,
1932
+ makeLayer: async () => (await I(g)).makeSqlLayer(k()),
1926
1933
  log: {
1927
1934
  info: (e, t) => $.info(e, t ?? {}),
1928
1935
  warn: (e, t) => $.warn(e, t ?? {})
1929
1936
  }
1930
1937
  });
1931
- let Le = ti(C);
1932
- l.mark("discover");
1933
- let w = await ct(h, void 0);
1938
+ let He = li(C);
1939
+ u.mark("discover");
1940
+ let w = await T(m, void 0);
1934
1941
  {
1935
- let e = await s(w);
1942
+ let e = await c(w);
1936
1943
  if (e !== void 0) throw i(`serve: ${e}`);
1944
+ let t = await s(w, g, m);
1945
+ t !== void 0 && $.warn(t);
1937
1946
  }
1938
- let Xe = Ci(w, _);
1939
- for (let e of Gt({
1940
- dialect: String(h?.store ?? process.env.DB_DIALECT ?? "postgres"),
1947
+ let rt = Ai(w, g);
1948
+ for (let e of Me({
1949
+ dialect: String(m?.store ?? process.env.DB_DIALECT ?? "postgres"),
1941
1950
  changeStrategy: (process.env.CDC ?? "1") === "0" ? "inline" : "cdc",
1942
1951
  dbUrl: process.env.DB_URL,
1943
- crossReplicaBus: Ri(h?.plugins ?? [])?.broadcast.crossReplica === !0,
1944
- tables: b.tables.map((e) => ({
1952
+ crossReplicaBus: Qi(m?.plugins ?? [])?.broadcast.crossReplica === !0,
1953
+ tables: y.tables.map((e) => ({
1945
1954
  tableName: e.tableName,
1946
1955
  isReactive: e.isReactive === !0
1947
1956
  })),
1948
- querySources: b.queries.flatMap((e) => {
1957
+ querySources: y.queries.flatMap((e) => {
1949
1958
  let t = e.descriptor.source;
1950
1959
  return t === void 0 ? [] : typeof t == "string" ? [t] : [...t];
1951
1960
  })
1952
1961
  })) e.level === "warn" ? $.warn(e.message) : $.info(e.message);
1953
1962
  {
1954
- let e = Ve({
1955
- tables: nr().map((e) => ({ tableName: e.tableName })),
1956
- queries: b.queries.map((e) => ({
1963
+ let e = Xe({
1964
+ tables: lr().map((e) => ({ tableName: e.tableName })),
1965
+ queries: y.queries.map((e) => ({
1957
1966
  name: e.descriptor.name,
1958
1967
  source: e.descriptor.source
1959
1968
  }))
1960
- }), t = It(e);
1969
+ }), t = N(e);
1961
1970
  t !== void 0 && $.warn(t);
1962
1971
  }
1963
- h?.cache && !process.env.CACHE_BACKEND && (process.env.CACHE_BACKEND = h.cache), h?.cacheRedisUrl && !process.env.CACHE_REDIS_URL && (process.env.CACHE_REDIS_URL = h.cacheRedisUrl), h?.cacheRedisDriver && !process.env.CACHE_REDIS_DRIVER && (process.env.CACHE_REDIS_DRIVER = h.cacheRedisDriver), h?.cacheKeyPrefix && !process.env.CACHE_KEY_PREFIX && (process.env.CACHE_KEY_PREFIX = h.cacheKeyPrefix);
1964
- let { service: Ze, invalidationBus: Qe, snapshotCache: $e, cache: tt, semantic: lt, evictSource: gt, backend: _t, stats: xt, dispose: wt } = await rt({
1972
+ 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);
1973
+ let { service: it, invalidationBus: at, snapshotCache: ot, cache: st, semantic: bt, evictSource: St, backend: wt, stats: Tt, dispose: kt } = await Xt({
1965
1974
  env: process.env,
1966
- semantic: h?.cacheSemantic ?? !1
1975
+ semantic: m?.cacheSemantic ?? !1
1967
1976
  });
1968
- lt !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${_t}` + (_t === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), w.onChange((e) => {
1969
- if (W.runFork(Qe.publish(e.table)), gt !== void 0) {
1977
+ bt !== void 0 && $.info("semantic cache enabled — reactive eviction on live writes"), $.info(`cache backend resolved: ${wt}` + (wt === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance"));
1978
+ let At = (e) => {
1979
+ J.runFork(at.publish(e));
1980
+ };
1981
+ w.onChange((e) => {
1982
+ if (J.runFork(at.publish(e.table)), St !== void 0) {
1970
1983
  let t = (e.new ?? e.old)?.id;
1971
- gt({
1984
+ St({
1972
1985
  table: e.table,
1973
1986
  op: e.op,
1974
1987
  ...t === void 0 ? {} : { id: t }
1975
1988
  });
1976
1989
  }
1977
- }), h?.kv && !process.env.KV_BACKEND && (process.env.KV_BACKEND = h.kv), h?.kvRedisUrl && !process.env.KV_REDIS_URL && (process.env.KV_REDIS_URL = h.kvRedisUrl), h?.kvKeyPrefix && !process.env.KV_KEY_PREFIX && (process.env.KV_KEY_PREFIX = h.kvKeyPrefix);
1978
- let { kv: Tt, service: Et } = await Wr({ store: w });
1979
- mt({
1990
+ }), 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);
1991
+ let { kv: jt, service: Mt } = await Zr({ store: w });
1992
+ ve({
1980
1993
  log: $,
1981
- max: F(),
1982
- outOfPool: ye(_, (process.env.CDC ?? "1") !== "0"),
1994
+ max: ln(),
1995
+ outOfPool: D(g, (process.env.CDC ?? "1") !== "0"),
1983
1996
  readPools: t.replicationSnapshot()?.replicaCount ?? 0,
1984
1997
  always: !0
1985
- }), l.mark("store");
1986
- let Nt = Cr({
1998
+ }), u.mark("store");
1999
+ let Pt = kr({
1987
2000
  store: w,
1988
- sink: Pe.sink,
2001
+ sink: Be.sink,
1989
2002
  log: $
1990
- }), Pt = ot({
2003
+ }), It = $e(m?.idempotency, w), Rt = Ht({
1991
2004
  store: w,
1992
- dialect: _,
1993
- log: { info: (e) => $.info(e) }
1994
- }), M = h?.plugins ?? [], Ft = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, zt, Ht;
1995
- _ !== "memory" && (zt = ur.make((await P(_)).makeSqlLayer(O()).pipe(G.provideMerge(zn({})))), Ht = await zt.runPromise(dr.SqlClient));
1996
- let Ut = [
2005
+ dialect: g,
2006
+ log: { info: (e) => $.info(e) },
2007
+ ...It === void 0 ? {} : { idempotencyTtlMs: It.ttlMs }
2008
+ }), M = m?.plugins ?? [], Vt = vr(), Gt, Jt;
2009
+ g !== "memory" && (Gt = Ni.make((await I(g)).makeSqlLayer(k()).pipe(Y.provideMerge(Gn({})))), Jt = await Gt.runPromise(Pi.SqlClient));
2010
+ let F = [
1997
2011
  "postgres",
1998
2012
  "mariadb",
1999
2013
  "mysql",
2000
2014
  "mssql"
2001
- ].includes(_) ? Br(w, Ft, $) : hi, Jt = Kt(h?.scheduling), xn = Kr({
2002
- maxIdleIntervalMs: Jt.pollCeilingMs,
2003
- coordinator: Ut,
2004
- replicaId: Ft,
2015
+ ].includes(g) ? qr(w, Vt, $) : Si, sn = Zt(m?.scheduling), kn = $r({
2016
+ maxIdleIntervalMs: sn.pollCeilingMs,
2017
+ coordinator: F,
2018
+ replicaId: Vt,
2005
2019
  log: $
2006
- }), Tn = [], kn = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, jn = Ri(h?.plugins ?? [])?.broadcast?.provider, Mn = Be(h?.plugins, h?.name ?? Pn(p));
2020
+ }), Nn = [], Ln = vr(), Rn = Qi(m?.plugins ?? [])?.broadcast?.provider, zn = Ge(m?.plugins, m?.name ?? Bn(p));
2007
2021
  {
2008
- let e = nt(h?.plugins, h?.name ?? Pn(p));
2022
+ let e = ct(m?.plugins, m?.name ?? Bn(p));
2009
2023
  e !== void 0 && $.warn(e);
2010
2024
  }
2011
- let Nn = Wt(h?.plugins, {
2012
- instanceId: kn,
2013
- namespace: Mn,
2025
+ let L = Yt(m?.plugins, {
2026
+ instanceId: Ln,
2027
+ namespace: zn,
2014
2028
  meta: { mode: "serve" },
2015
2029
  logger: $
2016
- }), I = bn({
2030
+ }), Hn = yr();
2031
+ br(`${Hn.host}:${le}`, Hn.declared);
2032
+ let Kn = en(), qn = _({
2033
+ store: w,
2034
+ members: () => L.membership?.list() ?? []
2035
+ }), z = () => {
2036
+ let e = L.membership?.list().length;
2037
+ return typeof e == "number" && e > 0 ? { fleetSize: e } : {};
2038
+ }, Jn = On({
2017
2039
  mode: "serve",
2018
- dialect: _,
2019
- ...jn === void 0 ? {} : { provider: jn },
2040
+ dialect: g,
2041
+ ...Rn === void 0 ? {} : { provider: Rn },
2020
2042
  logger: $
2021
2043
  });
2022
- oi(async () => {
2023
- await I.stop();
2024
- }), D(h?.reactive), Ct(h);
2025
- let In = {
2026
- ...Ht ? { sql: Ht } : {},
2027
- instanceId: kn,
2028
- membership: Nn.membership,
2029
- ...jn === void 0 ? {} : { broadcast: jn },
2030
- broadcastChannels: { presence: Li(Mn, "presence") },
2044
+ pi(async () => {
2045
+ await Jn.stop();
2046
+ }), Ke(m?.reactive), lt(m);
2047
+ let Yn = mt(w, {
2048
+ claimedBy: _r(),
2049
+ onError: (e) => $.warn("change claim failed — the claimed effect is being SKIPPED, not duplicated", { cause: String(e) })
2050
+ }), Xn = {
2051
+ ...Jt ? { sql: Jt } : {},
2052
+ instanceId: Ln,
2053
+ membership: L.membership,
2054
+ ...Rn === void 0 ? {} : { broadcast: Rn },
2055
+ broadcastChannels: { presence: Zi(zn, "presence") },
2031
2056
  scheduleCoordinated: (e, t, n) => {
2032
- let r = xn(e, t, n);
2033
- return Tn.push(r), r;
2034
- }
2057
+ let r = kn(e, t, n);
2058
+ return Nn.push(r), r;
2059
+ },
2060
+ claimChange: Yn.claim
2035
2061
  };
2036
- for (let e of M) e.bindDataStore?.(Xe, In);
2037
- dt({
2062
+ for (let e of M) e.bindDataStore?.(rt, Xn);
2063
+ E({
2038
2064
  store: w,
2039
- ...u(),
2065
+ ...d(),
2040
2066
  log: $
2041
2067
  });
2042
- let Bn = M.filter((e) => typeof e.onChangeEvent == "function");
2043
- if (Bn.length > 0) {
2068
+ let B = M.filter((e) => typeof e.onChangeEvent == "function");
2069
+ if (B.length > 0) {
2044
2070
  let e = w.changeScope ?? "local";
2045
2071
  w.onChange((t) => {
2046
- let n = oe(t, e);
2047
- for (let e of Bn) W.runFork(e.onChangeEvent(n).pipe(W.catchAllCause((t) => W.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: lr.pretty(t) })))));
2072
+ let n = ce(t, e);
2073
+ for (let e of B) J.runFork(e.onChangeEvent(n).pipe(J.catchAllCause((t) => J.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: Mi.pretty(t) })))));
2048
2074
  });
2049
2075
  }
2050
- let Vn = y.filter((e) => fn.test(e));
2051
- Vn.length > 0 && (await ze(Vn, $), $.info(`queue: ${Vn.length} consumer file(s) loaded`));
2052
- let R = Fe({
2076
+ let Zn = v.filter((e) => Sn.test(e));
2077
+ Zn.length > 0 && (await We(Zn, $), $.info(`queue: ${Zn.length} consumer file(s) loaded`));
2078
+ let Qn = S({
2053
2079
  plugins: M,
2054
- appName: h?.name ?? "voltro-api",
2080
+ appName: m?.name ?? "voltro-api",
2055
2081
  appType: "api",
2056
- voltroVersion: process.env.npm_package_version ?? "0.0.0",
2082
+ voltroVersion: gr() ?? "unknown",
2057
2083
  log: $
2058
2084
  });
2059
- M.length && await R.activate(), l.mark("plugins");
2060
- let Hn = await R.gatherObservability(), Un = L({ scope: "voltro:broadcast" }), Wn = {
2085
+ M.length && await Qn.activate(), u.mark("plugins");
2086
+ let $n = await Qn.gatherObservability(), er = R({ scope: "voltro:broadcast" }), tr = {
2061
2087
  info: (e, t) => {
2062
- Un.info(e, t);
2088
+ er.info(e, t);
2063
2089
  },
2064
2090
  warn: (e, t) => {
2065
- Un.warn(e, t);
2091
+ er.warn(e, t);
2066
2092
  },
2067
2093
  debug: () => {}
2068
- }, z, Gn = await E(w, h, _, Mn, Wn, (e, t) => {
2069
- z?.refreshAll(`broadcast gap: missed ${t} change(s) from ${e}`);
2070
- }), Kn = h?.apiKeys, qn = (typeof Kn == "object" ? Kn.prefix : void 0) ?? "voltro_", B = Kn ? Mr(w) : void 0, V = B ? Hr({ flush: Ur(B) }) : void 0;
2071
- V && oi(() => V.shutdown());
2072
- let Jn = B ? Vr(B, {
2073
- prefix: qn,
2074
- ...V ? { usage: V } : {}
2075
- }) : void 0, Yn = Jn ? [Fr(Jn, { prefix: qn })] : [], Xn = Dt([...h?.auth?.strategies ?? [], ...Yn], Gi(h?.plugins ?? []), h?.auth?.anonymousTenantRequired ?? !1, h?.auth, () => Xe), Zn = [...h?.restRoutes ?? [], ...Jn ? Sr(Jn, (typeof Kn == "object" ? Kn.managementPath : void 0) ?? "/v1/api-keys") : []], Qn = He(h?.idempotency, w), $n = M.map((e) => e.services).filter((e) => e !== void 0), er = G.mergeAll(qe({
2076
- analyticsLayer: Pe.layer,
2077
- cacheService: Ze,
2078
- kvService: Et,
2079
- ...lt === void 0 ? {} : { semanticCache: lt },
2080
- pluginServices: $n,
2081
- userLayers: h?.layers ?? []
2082
- }), At(h?.http ?? {})), H = await k({
2083
- files: y,
2094
+ }, nr, rr = Ue({
2095
+ store: w,
2096
+ dispatcher: () => nr,
2097
+ invalidateTable: () => At,
2098
+ log: tr
2099
+ }), ir = await xt(w, m, g, zn, tr, rr.onBroadcastGap), V = m?.apiKeys, ar = (typeof V == "object" ? V.prefix : void 0) ?? "voltro_", or = V ? zr(w) : void 0, sr = or ? Yr({ flush: Xr(or) }) : void 0;
2100
+ sr && pi(() => sr.shutdown());
2101
+ let H = or ? Jr(or, {
2102
+ prefix: ar,
2103
+ ...sr ? { usage: sr } : {}
2104
+ }) : void 0, cr = H ? [Hr(H, { prefix: ar })] : [], ur = Nt([...m?.auth?.strategies ?? [], ...cr], aa(m?.plugins ?? []), m?.auth?.anonymousTenantRequired ?? !1, m?.auth, () => rt), fr = [...m?.restRoutes ?? [], ...H ? Or(H, (typeof V == "object" ? V.managementPath : void 0) ?? "/v1/api-keys") : []], pr = M.map((e) => e.services).filter((e) => e !== void 0), U = Y.mergeAll(nt({
2105
+ analyticsLayer: Be.layer,
2106
+ cacheService: it,
2107
+ kvService: Mt,
2108
+ ...bt === void 0 ? {} : { semanticCache: bt },
2109
+ pluginServices: pr,
2110
+ userLayers: m?.layers ?? []
2111
+ }), Bt(m?.http ?? {})), W = await A({
2112
+ files: v,
2084
2113
  store: w,
2085
2114
  log: $,
2086
2115
  seedPolicy: "report",
2087
- seedPattern: dn,
2088
- loadSeedFiles: en,
2089
- startupPattern: _n,
2116
+ seedPattern: xn,
2117
+ loadSeedFiles: dn,
2118
+ startupPattern: Dn,
2090
2119
  loadStartupFiles: a,
2091
2120
  runStartups: o,
2092
- emailPattern: jt,
2093
- loadEmailFiles: Je,
2094
- registerEmailTemplates: Ki
2121
+ emailPattern: et,
2122
+ loadEmailFiles: O,
2123
+ registerEmailTemplates: oa
2095
2124
  });
2096
- (H.startupCount > 0 || H.emailCount > 0) && $.info("boot lifecycle", {
2097
- startups: H.startupCount,
2098
- emailTemplates: H.emailCount
2099
- }), H.startups !== void 0 && oi(async () => {
2100
- await H.startups.stop();
2125
+ (W.startupCount > 0 || W.emailCount > 0) && $.info("boot lifecycle", {
2126
+ startups: W.startupCount,
2127
+ emailTemplates: W.emailCount
2128
+ }), W.startups !== void 0 && pi(async () => {
2129
+ await W.startups.stop();
2101
2130
  }), x({
2102
- demands: N(he),
2103
- isRegistered: (e) => Ir(e) !== void 0
2131
+ demands: $t(_e),
2132
+ isRegistered: (e) => Ur(e) !== void 0
2104
2133
  });
2105
- let tr = ut({
2106
- schedules: Ue({
2107
- schedules: b.schedules,
2108
- seeds: H.seeds,
2134
+ let Sr = Je({
2135
+ schedules: Dt({
2136
+ schedules: y.schedules,
2137
+ seeds: W.seeds,
2109
2138
  store: w,
2110
2139
  log: $.child("seeds")
2111
2140
  }),
2112
- workflows: b.workflows ?? [],
2141
+ workflows: y.workflows ?? [],
2113
2142
  log: $.child("workflow-schedules")
2114
- }), rr = h?.scheduling ?? {}, ar = rr.trigger ?? "self", or = /* @__PURE__ */ new Set([
2143
+ }), Cr = m?.scheduling ?? {}, wr = Cr.trigger ?? "self", Tr = /* @__PURE__ */ new Set([
2115
2144
  "postgres",
2116
2145
  "mysql",
2117
2146
  "mariadb",
2118
2147
  "mssql"
2119
- ]), U = rr.coordination ?? (or.has(_) ? "advisoryLock" : "single"), cr = U === "cluster" && or.has(_), gr = cr ? "cluster" : U === "advisoryLock" && or.has(_) ? "advisoryLock" : "single";
2120
- U === "cluster" && !cr && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), U === "advisoryLock" && !or.has(_) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
2121
- let _r, vr = b.workflows.length > 0 || b.workflowWorkers.length > 0 || b.eventTriggers.length > 0 || (xe?.outgoing.length ?? 0) > 0 || cr, yr;
2122
- if (vr) {
2123
- if (_ === "mssql") {
2124
- let e = await Cn(process.cwd());
2148
+ ]), Er = Cr.coordination ?? (Tr.has(g) ? "advisoryLock" : "single"), Dr = Er === "cluster" && Tr.has(g), Ar = Dr ? "cluster" : Er === "advisoryLock" && Tr.has(g) ? "advisoryLock" : "single";
2149
+ Er === "cluster" && !Dr && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), Er === "advisoryLock" && !Tr.has(g) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
2150
+ let jr, Mr = y.workflows.length > 0 || y.workflowWorkers.length > 0 || y.eventTriggers.length > 0 || (Te?.outgoing.length ?? 0) > 0 || Dr, Nr;
2151
+ if (Mr) {
2152
+ if (g === "mssql") {
2153
+ let e = await jn(process.cwd());
2125
2154
  e && $.warn(e);
2126
2155
  }
2127
- let [{ WorkflowEngine: e }, { makeClusterCronLayer: t, workflowEngineLayer: n, resolveRunnerStorage: r, resolveFailoverTuning: i }] = await Promise.all([import("@effect/workflow"), import("@voltro/workflow/cluster")]), a = cr ? tr.filter((e) => (e.trigger ?? ar) === "self").map((e) => t({
2156
+ let [{ WorkflowEngine: e }, { makeClusterCronLayer: t, workflowEngineLayer: n, resolveRunnerStorage: r, resolveFailoverTuning: i }] = await Promise.all([import("@effect/workflow"), import("@voltro/workflow/cluster")]), a = Dr ? Sr.filter((e) => (e.trigger ?? wr) === "self").map((e) => t({
2128
2157
  name: e.name,
2129
- cron: jr(e),
2158
+ cron: Rr(e),
2130
2159
  execute: async () => {
2131
- await _r?.fireFromCluster(e.name);
2160
+ await jr?.fireFromCluster(e.name);
2132
2161
  }
2133
2162
  })) : [];
2134
- yr = _ === "memory" ? e.layerMemory : await (async () => {
2135
- let e = await P(_), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
2163
+ Nr = g === "memory" ? e.layerMemory : await (async () => {
2164
+ let e = await I(g), t = r({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
2136
2165
  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({
2137
- sqlClientLayer: e.makeSqlLayer(O()),
2166
+ sqlClientLayer: e.makeSqlLayer(k()),
2138
2167
  runnerStorage: t,
2139
2168
  dialectId: e.id,
2140
2169
  ...process.env.VOLTRO_WORKFLOW_RUNNER_PORT ? { runnerListenPort: Number(process.env.VOLTRO_WORKFLOW_RUNNER_PORT) } : {},
@@ -2143,301 +2172,314 @@ var ia = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy <
2143
2172
  });
2144
2173
  })();
2145
2174
  }
2146
- let br = v(M, Sn()), xr = y.filter((e) => /\.subscribe\.tsx?$/.test(e)), wr = xr.length > 0 ? await A(xr, $) : [], Tr = y.filter((e) => /\.reaction\.tsx?$/.test(e)), Er = Tr.length > 0 ? await Se(Tr, $) : [], Dr = y.filter((e) => pn.test(e)), K = Dr.length > 0 ? await we(Dr, $) : [], Or = y.filter((e) => /\.aggregate\.tsx?$/.test(e)), q = Or.length > 0 ? await ht(Or, $) : [];
2175
+ let G = pe(M, An()), Pr = v.filter((e) => /\.subscribe\.tsx?$/.test(e)), Fr = Pr.length > 0 ? await Lt(Pr, $) : [], Ir = v.filter((e) => /\.reaction\.tsx?$/.test(e)), Lr = Ir.length > 0 ? await De(Ir, $) : [], Wr = v.filter((e) => Cn.test(e)), Gr = Wr.length > 0 ? await ke(Wr, $) : [], Kr = v.filter((e) => /\.aggregate\.tsx?$/.test(e)), Qr = Kr.length > 0 ? await yt(Kr, $) : [];
2147
2176
  {
2148
- let e = Pr(bi(Ae({ aggregates: q.map((e) => e.definition) }), re(C)));
2177
+ let e = Vr(Di(we({ aggregates: Qr.map((e) => e.definition) }), vt(C)));
2149
2178
  e !== void 0 && $.warn(e);
2150
2179
  }
2151
- let kr = f();
2152
- if (q.length > 0 && _ !== "memory") try {
2153
- let e = (await P(_)).makeSqlLayer(O());
2154
- kr = pt(e);
2180
+ let ei = f();
2181
+ if (Qr.length > 0 && g !== "memory") try {
2182
+ let e = (await I(g)).makeSqlLayer(k());
2183
+ ei = gt(e);
2155
2184
  } catch (e) {
2156
2185
  $.warn("aggregate: SQL storage init failed — falling back to in-process", { err: String(e) });
2157
2186
  }
2158
- let Ar = _ === "memory" ? hi : Br(w, `aggregate@${process.pid}`, $), Lr = y.filter((e) => mn.test(e)), Rr = Lr.length > 0 ? await S(Lr, $) : [], zr = y.filter((e) => hn.test(e)), Gr = zr.length > 0 ? await Bt(zr, $) : [], qr = y.filter((e) => gn.test(e)), Jr = qr.length > 0 ? await ie(qr, $) : [], Yr = [], Xr = [], Zr = y.filter((e) => nn.test(e));
2159
- if (Zr.length > 0) {
2160
- let e = $.child("agent"), t = y.filter((e) => on.test(e));
2161
- t.length > 0 && await rn(t, e);
2162
- let n = await an(Zr, e);
2163
- for (let e of n.agents) for (let t of bt(e)) (t.kind === "action" ? Yr : Xr).push({
2187
+ let ti = g === "memory" ? Si : qr(w, `aggregate@${process.pid}`, $), ni = v.filter((e) => wn.test(e)), ri = ni.length > 0 ? await Ie(ni, $) : [], ii = v.filter((e) => Tn.test(e)), ai = ii.length > 0 ? await Kt(ii, $) : [], oi = v.filter((e) => En.test(e)), si = oi.length > 0 ? await ae(oi, $) : [], ci = [], ui = [], di = v.filter((e) => pn.test(e));
2188
+ if (di.length > 0) {
2189
+ let e = $.child("agent"), t = v.filter((e) => gn.test(e));
2190
+ t.length > 0 && await mn(t, e);
2191
+ let n = await hn(di, e);
2192
+ for (let e of n.agents) for (let t of Ft(e)) (t.kind === "action" ? ci : ui).push({
2164
2193
  file: t.file,
2165
2194
  descriptor: t.descriptor,
2166
2195
  executor: t.executor
2167
2196
  });
2168
2197
  n.agents.length > 0 && e.info("synthesized agent routes", { agents: n.agents.map((e) => e.descriptor.name) });
2169
2198
  }
2170
- l.mark("workflow");
2171
- let J = () => {
2172
- let e = Y.workflowWriteActions();
2199
+ u.mark("workflow");
2200
+ let K = () => {
2201
+ let e = q.workflowWriteActions();
2173
2202
  if (e === void 0) throw Error("workflow actions: this app registers no workflows");
2174
2203
  return e;
2175
- }, Qr = ir({
2176
- dialect: _,
2177
- ...O()
2178
- }), $r = _ === "memory" ? void 0 : (await P(_)).makeSqlLayer(O()), ei = async () => kt({
2179
- sqlLayer: $r,
2204
+ }, fi = dr({
2205
+ dialect: g,
2206
+ ...k()
2207
+ }), mi = g === "memory" ? void 0 : (await I(g)).makeSqlLayer(k()), hi = async () => ht({
2208
+ sqlLayer: mi,
2180
2209
  declared: C,
2181
2210
  log: $
2182
- }), ni = {
2211
+ }), gi = {
2183
2212
  kind: "api",
2184
2213
  meta: {
2185
- name: h?.name ?? "voltro-api",
2186
- voltroVersion: Mt,
2214
+ name: m?.name ?? "voltro-api",
2215
+ voltroVersion: j,
2187
2216
  port: le,
2188
- mode: "start",
2189
- store: _,
2217
+ mode: hr(),
2218
+ store: g,
2190
2219
  cdc: de ? "on" : "off",
2191
- ...Qr === void 0 ? {} : { databaseId: Qr }
2220
+ ...fi === void 0 ? {} : { databaseId: fi }
2192
2221
  },
2193
- rpc: De(b, p),
2194
- workflows: ne(b, p),
2195
- migrations: ei,
2196
- events: () => Y.eventsSnapshot(),
2197
- agentTools: () => Y.agentTools(),
2222
+ rpc: Fe(y, p),
2223
+ workflows: h(y, p),
2224
+ migrations: hi,
2225
+ events: () => q.eventsSnapshot(),
2226
+ agentTools: () => q.agentTools(),
2198
2227
  invariantChecks: () => ({
2199
2228
  mode: "serve",
2200
- accessGate: he,
2201
- config: h,
2202
- serverOnlyLeaks: b.serverOnlyLeaks,
2203
- migrations: ei
2229
+ accessGate: _e,
2230
+ config: m,
2231
+ serverOnlyLeaks: y.serverOnlyLeaks,
2232
+ migrations: hi
2204
2233
  }),
2205
- members: () => Y.membersSnapshot(),
2234
+ members: () => q.membersSnapshot(),
2206
2235
  inspectFireSchedule: async ({ name: e, trigger: t }) => {
2207
- if (!_r) throw Error("scheduler not started — this app registers no self-triggered schedules (all schedules are trigger:'external', or there are none).");
2208
- return { runId: await _r.fireNow(e, t) ?? null };
2236
+ if (!jr) throw Error("scheduler not started — this app registers no self-triggered schedules (all schedules are trigger:'external', or there are none).");
2237
+ return { runId: await jr.fireNow(e, t) ?? null };
2209
2238
  },
2210
- inspectBackfillSchedule: m({
2211
- getHandle: () => _r,
2212
- getSchedules: () => tr
2239
+ inspectBackfillSchedule: ne({
2240
+ getHandle: () => jr,
2241
+ getSchedules: () => Sr
2213
2242
  }),
2214
- ...xe === void 0 ? {} : { webhooks: () => T({
2243
+ ...Te === void 0 ? {} : { webhooks: () => _t({
2215
2244
  store: w,
2216
- discoveredWebhooks: xe
2245
+ discoveredWebhooks: Te
2217
2246
  }) },
2218
2247
  plugins: () => ({
2219
- plugins: R.snapshot(),
2248
+ plugins: Qn.snapshot(),
2220
2249
  capturedAt: Date.now()
2221
2250
  }),
2222
- env: () => Zt(h?.name ?? Pn(p), {
2223
- ...h?.env !== void 0 && Ni(h.env) ? { contract: h.env } : {},
2224
- plugins: h?.plugins ?? []
2251
+ env: () => P(m?.name ?? Bn(p), {
2252
+ ...m?.env !== void 0 && Ji(m.env) ? { contract: m.env } : {},
2253
+ plugins: m?.plugins ?? []
2225
2254
  }),
2226
- dataCache: () => Vt({
2227
- stats: xt,
2228
- backendKind: _t
2255
+ dataCache: () => qt({
2256
+ stats: Tt,
2257
+ backendKind: wt
2229
2258
  }),
2230
- subscriptions: () => Ee(() => z),
2231
- inspectTables: () => Te(C),
2232
- inspectRows: qt({
2259
+ subscriptions: () => je(() => nr),
2260
+ fleetObservations: (e) => qn.fleet(e),
2261
+ peerAddress: (e) => qn.addressOf(e),
2262
+ inspectTables: () => Ae(C),
2263
+ inspectRows: Qt({
2233
2264
  store: w,
2234
2265
  tables: C,
2235
2266
  mask: !0
2236
2267
  }),
2237
- metrics: (e) => Y.rpcMetrics().snapshot(e),
2238
- cluster: () => We({
2268
+ metrics: (e) => q.rpcMetrics().snapshot(e),
2269
+ cluster: () => Ye({
2239
2270
  store: w,
2240
- dialect: _,
2241
- useClusterCron: cr,
2242
- scheduleCoordChoice: U
2271
+ dialect: g,
2272
+ useClusterCron: Dr,
2273
+ scheduleCoordChoice: Er
2243
2274
  }),
2244
- inspectSchedules: () => g({
2245
- schedules: tr,
2246
- defaultTrigger: ar,
2247
- coordination: gr
2275
+ inspectSchedules: () => ie({
2276
+ schedules: Sr,
2277
+ defaultTrigger: wr,
2278
+ coordination: Ar
2248
2279
  }),
2249
- inspectScheduleRuns: (e) => ke(w, e),
2250
- ...Rt(w, {
2251
- controls: it(b.workflows ?? []),
2252
- active: (b.workflows?.length ?? 0) > 0,
2253
- cancellation: () => Y.flowControlHealth()
2280
+ inspectScheduleRuns: (e) => Pe(w, e),
2281
+ ...Wt(w, {
2282
+ controls: ut(y.workflows ?? []),
2283
+ active: (y.workflows?.length ?? 0) > 0,
2284
+ cancellation: () => q.flowControlHealth()
2254
2285
  }),
2255
- webhookActions: te(() => Y.webhooksService()),
2256
- inspectStartWorkflow: (e) => J().inspectStartWorkflow(e),
2257
- inspectCancelWorkflowRun: (e) => J().inspectCancelWorkflowRun(e),
2258
- inspectSuspendWorkflowRun: (e) => J().inspectSuspendWorkflowRun(e),
2259
- inspectResumeWorkflowRun: (e) => J().inspectResumeWorkflowRun(e),
2260
- inspectDiscardWorkflowRun: (e) => J().inspectDiscardWorkflowRun(e),
2261
- inspectRetryWorkflowRun: (e) => J().inspectRetryWorkflowRun(e),
2262
- inspectSignalWorkflowRun: (e) => J().inspectSignalWorkflowRun(e),
2263
- inspectUpdateWorkflowRun: (e) => J().inspectUpdateWorkflowRun(e),
2264
- inspectInferences: (e) => vt({
2286
+ webhookActions: te(() => q.webhooksService()),
2287
+ inspectStartWorkflow: (e) => K().inspectStartWorkflow(e),
2288
+ inspectCancelWorkflowRun: (e) => K().inspectCancelWorkflowRun(e),
2289
+ inspectSuspendWorkflowRun: (e) => K().inspectSuspendWorkflowRun(e),
2290
+ inspectResumeWorkflowRun: (e) => K().inspectResumeWorkflowRun(e),
2291
+ inspectDiscardWorkflowRun: (e) => K().inspectDiscardWorkflowRun(e),
2292
+ inspectRetryWorkflowRun: (e) => K().inspectRetryWorkflowRun(e),
2293
+ inspectSignalWorkflowRun: (e) => K().inspectSignalWorkflowRun(e),
2294
+ inspectUpdateWorkflowRun: (e) => K().inspectUpdateWorkflowRun(e),
2295
+ inspectInferences: (e) => Ct({
2265
2296
  store: w,
2266
- active: (b.workflows?.length ?? 0) > 0,
2267
- dispatcher: () => Y.inferenceHealth()
2297
+ active: (y.workflows?.length ?? 0) > 0,
2298
+ dispatcher: () => q.inferenceHealth()
2268
2299
  }, e.limit === void 0 ? {} : { limit: e.limit }),
2269
- ...st({
2300
+ ...pt({
2270
2301
  store: w,
2271
- cancelRun: async (e) => await Y.runCanceller()?.(e) ?? !1,
2272
- retryRun: async (e) => J().inspectRetryWorkflowRun({ runId: e }),
2273
- redriveRun: async (e) => Y.redriveWorkflowRun({ runId: e }),
2302
+ cancelRun: async (e) => await q.runCanceller()?.(e) ?? !1,
2303
+ retryRun: async (e) => K().inspectRetryWorkflowRun({ runId: e }),
2304
+ redriveRun: async (e) => q.redriveWorkflowRun({ runId: e }),
2274
2305
  log: $
2275
2306
  }),
2276
- inspectRedriveWorkflowRun: (e) => Y.redriveWorkflowRun(e),
2277
- inspectResumeWorkflowRunFromStep: (e) => Y.resumeWorkflowRunFromStep(e)
2278
- }, ri = (process.env.VOLTRO_TENANT_ISOLATION ?? h?.tenancy?.isolation) === "namespace", ii = ri && _ !== "memory" ? await (async () => {
2279
- let e = await P(_);
2280
- return et({
2307
+ inspectRedriveWorkflowRun: (e) => q.redriveWorkflowRun(e),
2308
+ inspectResumeWorkflowRunFromStep: (e) => q.resumeWorkflowRunFromStep(e)
2309
+ }, _i = (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace", yi = _i && g !== "memory" ? await (async () => {
2310
+ let e = await I(g);
2311
+ return ft({
2281
2312
  tables: C,
2282
- sqlLayer: e.makeSqlLayer(O()),
2283
- dialect: _,
2313
+ sqlLayer: e.makeSqlLayer(k()),
2314
+ dialect: g,
2284
2315
  options: { retryFilter: e.retryFilter },
2285
2316
  log: {
2286
2317
  info: (e, t) => $.info(e, t),
2287
2318
  error: (e, t, n) => $.error(e, t ?? {}, n)
2288
2319
  }
2289
2320
  });
2290
- })() : void 0, ai = await at({
2291
- input: h?.tenancy?.residency,
2292
- namespaceIsolationOn: ri,
2293
- makeStoreForUrl: (e, t) => ct(h, void 0, Qt(O(), t)),
2321
+ })() : void 0, xi = await dt({
2322
+ input: m?.tenancy?.residency,
2323
+ namespaceIsolationOn: _i,
2324
+ makeStoreForUrl: (e, t) => T(m, void 0, cn(k(), t)),
2294
2325
  log: {
2295
2326
  info: (e, t) => $.info(e, t),
2296
2327
  warn: (e, t) => $.warn(e, t)
2297
2328
  }
2298
2329
  });
2299
- ai !== void 0 && oi(async () => {
2300
- await ai.close();
2330
+ xi !== void 0 && pi(async () => {
2331
+ await xi.close();
2301
2332
  });
2302
- let Y = await bo({
2303
- bootTiming: l,
2304
- broadcastNamespace: Mn,
2333
+ let q = await Po({
2334
+ bootTiming: u,
2335
+ claimChange: Yn.claim,
2336
+ broadcastNamespace: zn,
2305
2337
  scheduling: (() => {
2306
- let e = Jt;
2338
+ let e = sn;
2307
2339
  return {
2308
2340
  admissionDrainMs: e.admissionDrainMs,
2309
2341
  inferenceTickMs: e.inferenceTickMs,
2310
2342
  cancelSweepMs: e.cancelSweepMs,
2311
2343
  stalenessSweepMs: e.stalenessSweepMs,
2312
- disarmWhenIdle: Lt({
2344
+ disarmWhenIdle: Ut({
2313
2345
  changeScope: w.changeScope,
2314
- broadcastAttached: Gn !== void 0
2346
+ broadcastAttached: ir !== void 0
2315
2347
  })
2316
2348
  };
2317
2349
  })(),
2318
- ...h?.workflows?.staleness === void 0 ? {} : { workflowStaleness: h.workflows.staleness },
2319
- ...h?.workflows?.suspendSignalHintMs === void 0 ? {} : { workflowSuspendSignalHintMs: h.workflows.suspendSignalHintMs },
2320
- workflowRecording: Ge(h?.workflows?.recording),
2350
+ ...m?.workflows?.staleness === void 0 ? {} : { workflowStaleness: m.workflows.staleness },
2351
+ ...m?.workflows?.suspendSignalHintMs === void 0 ? {} : { workflowSuspendSignalHintMs: m.workflows.suspendSignalHintMs },
2352
+ workflowRecording: Ze(m?.workflows?.recording),
2321
2353
  membership: {
2322
- ...Nn,
2323
- instanceId: kn
2354
+ ...L,
2355
+ instanceId: Ln
2324
2356
  },
2325
2357
  security: {
2326
- defaultDeny: Me(h),
2327
- ...ue(h)
2358
+ defaultDeny: Re(m),
2359
+ ...fe(m)
2328
2360
  },
2329
- approvals: { defaultExpiryMs: Re(h) },
2330
- ...h?.plugins === void 0 ? {} : { plugins: h.plugins },
2331
- ...Qn ? { idempotency: Qn } : {},
2332
- restRoutes: Zn,
2333
- ...h?.grpc === void 0 ? {} : { grpc: {
2334
- config: h.grpc,
2361
+ approvals: { defaultExpiryMs: Oe(m) },
2362
+ ...m?.plugins === void 0 ? {} : { plugins: m.plugins },
2363
+ ...It ? { idempotency: It } : {},
2364
+ restRoutes: fr,
2365
+ ...m?.grpc === void 0 ? {} : { grpc: {
2366
+ config: m.grpc,
2335
2367
  root: p
2336
2368
  } },
2337
- appProcedures: he,
2369
+ appProcedures: _e,
2338
2370
  discovered: {
2339
- wsGateways: b.wsGateways,
2340
- queries: [...b.queries, ...Xr],
2341
- mutations: b.mutations,
2342
- actions: [...b.actions, ...Yr],
2343
- streams: b.streams,
2344
- events: b.events,
2345
- workflows: b.workflows,
2346
- workflowWorkers: b.workflowWorkers,
2347
- eventTriggers: b.eventTriggers,
2348
- schedules: tr,
2349
- subscribers: wr,
2350
- outboxHandlers: K,
2351
- connections: b.connections,
2352
- reactions: Er,
2353
- aggregates: q,
2354
- expectations: Rr,
2355
- budgets: Gr,
2356
- experiments: Jr,
2357
- ...xe === void 0 ? {} : { webhooks: xe }
2371
+ wsGateways: y.wsGateways,
2372
+ queries: [...y.queries, ...ui],
2373
+ mutations: y.mutations,
2374
+ actions: [...y.actions, ...ci],
2375
+ streams: y.streams,
2376
+ events: y.events,
2377
+ workflows: y.workflows,
2378
+ workflowWorkers: y.workflowWorkers,
2379
+ eventTriggers: y.eventTriggers,
2380
+ schedules: Sr,
2381
+ subscribers: Fr,
2382
+ outboxHandlers: Gr,
2383
+ connections: y.connections,
2384
+ reactions: Lr,
2385
+ aggregates: Qr,
2386
+ expectations: ri,
2387
+ budgets: ai,
2388
+ experiments: si,
2389
+ ...Te === void 0 ? {} : { webhooks: Te }
2358
2390
  },
2359
2391
  log: $,
2360
- analytics: Pe.sink,
2361
- aggregateStorage: kr,
2362
- aggregateCoordinator: Ar,
2392
+ analytics: Be.sink,
2393
+ aggregateStorage: ei,
2394
+ aggregateCoordinator: ti,
2363
2395
  store: w,
2364
- kv: Tt,
2365
- cache: tt,
2366
- snapshotCache: $e,
2367
- ...h?.reactive === void 0 ? {} : { reactive: h.reactive },
2368
- schemaRegistry: Le,
2369
- tenantScopedTables: b.tenantScopedTables,
2370
- softDeleteScopedTables: b.softDeleteScopedTables,
2371
- dataTransferSnapshot: fr(C, _),
2372
- dataTransferDialect: _,
2373
- ...ii === void 0 ? {} : { ensureTenantProvisioned: ii.ensure },
2374
- ...ai === void 0 ? {} : { resolveResidentStore: ai.resolveStore },
2375
- tenantIsolation: (process.env.VOLTRO_TENANT_ISOLATION ?? h?.tenancy?.isolation) === "namespace" ? "namespace" : "shared-schema",
2376
- resolveSubject: (e, t) => Xn({
2396
+ kv: jt,
2397
+ cache: st,
2398
+ snapshotCache: ot,
2399
+ ...m?.reactive === void 0 ? {} : { reactive: m.reactive },
2400
+ schemaRegistry: He,
2401
+ tenantScopedTables: y.tenantScopedTables,
2402
+ softDeleteScopedTables: y.softDeleteScopedTables,
2403
+ dataTransferSnapshot: Fi(C, g),
2404
+ dataTransferDialect: g,
2405
+ ...yi === void 0 ? {} : { ensureTenantProvisioned: yi.ensure },
2406
+ ...xi === void 0 ? {} : { resolveResidentStore: xi.resolveStore },
2407
+ tenantIsolation: (process.env.VOLTRO_TENANT_ISOLATION ?? m?.tenancy?.isolation) === "namespace" ? "namespace" : "shared-schema",
2408
+ resolveSubject: (e, t) => ur({
2377
2409
  headers: e,
2378
2410
  clientId: t
2379
2411
  }),
2380
- ...h?.auth === void 0 ? {} : { authority: h.auth },
2381
- ...h?.agents === void 0 ? {} : { agents: h.agents },
2412
+ ...m?.auth === void 0 ? {} : { authority: m.auth },
2413
+ ...m?.agents === void 0 ? {} : { agents: m.agents },
2382
2414
  httpRoutes: M.flatMap((e) => e.httpRoutes ?? []),
2383
- getStore: () => Xe,
2384
- ...er ? { baseLayer: er } : {},
2385
- ...yr === void 0 ? {} : { workflowEngineLayer: yr },
2386
- scheduleDefaultTrigger: ar,
2387
- scheduleCoordination: gr,
2388
- scheduleArmSelf: !cr,
2389
- dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : h?.dormancy ?? "always-on",
2390
- scheduleReplicaId: process.env.HOSTNAME ?? `pid-${process.pid}`,
2391
- ...br === void 0 ? {} : { scheduleFireInterceptor: br },
2415
+ getStore: () => rt,
2416
+ ...U ? { baseLayer: U } : {},
2417
+ ...Nr === void 0 ? {} : { workflowEngineLayer: Nr },
2418
+ scheduleDefaultTrigger: wr,
2419
+ scheduleCoordination: Ar,
2420
+ scheduleArmSelf: !Dr,
2421
+ dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : m?.dormancy ?? "always-on",
2422
+ scheduleReplicaId: vr(),
2423
+ ...G === void 0 ? {} : { scheduleFireInterceptor: G },
2392
2424
  onSchedulerReady: (e) => {
2393
- _r = e;
2425
+ jr = e;
2394
2426
  },
2395
- inspectRoute: { handle: async (e, t, n, r) => await ve(e, ni, t, {
2427
+ inspectStream: se(Kn),
2428
+ inspectRoute: { handle: async (e, t, n, r) => await Ce(e, gi, t, {
2429
+ method: n,
2430
+ ...r === void 0 ? {} : { body: r },
2431
+ ...z()
2432
+ }) || ((n === "GET" ? await rn(e, gi, t, {
2396
2433
  method: n,
2397
- ...r === void 0 ? {} : { body: r }
2398
- }) || ((n === "GET" ? await yn(e, ni, t, { method: n }) : null) ?? vn(e, ni, t, {
2434
+ ...z()
2435
+ }) : null) ?? nn(e, gi, t, {
2399
2436
  method: n,
2400
- ...r === void 0 ? {} : { body: r }
2437
+ ...r === void 0 ? {} : { body: r },
2438
+ ...z()
2401
2439
  }) ?? {
2402
2440
  status: 404,
2403
2441
  contentType: "application/json",
2404
2442
  body: JSON.stringify({ error: "not an inspect route" })
2405
2443
  }) },
2406
- ...h?.name === void 0 ? {} : { appName: h.name },
2407
- observability: Hn,
2444
+ ...m?.name === void 0 ? {} : { appName: m.name },
2445
+ observability: $n,
2408
2446
  port: le,
2409
- ...h?.transport?.wsPath ? { path: h.transport.wsPath } : {},
2410
- ...h?.http === void 0 ? {} : { http: h.http }
2447
+ ...m?.transport?.wsPath ? { path: m.transport.wsPath } : {},
2448
+ ...m?.http === void 0 ? {} : { http: m.http }
2411
2449
  });
2412
- return z = Y.dispatcher, ft(d([
2413
- b.queries,
2414
- b.mutations,
2415
- b.actions,
2416
- b.streams
2450
+ nr = q.dispatcher;
2451
+ let Ci = () => {
2452
+ Kn.emit("subscriptions", je(() => nr));
2453
+ }, wi = q.dispatcher.onSubscriptionsChange(Ci);
2454
+ return Ci(), b(xe([
2455
+ y.queries,
2456
+ y.mutations,
2457
+ y.actions,
2458
+ y.streams
2417
2459
  ]), (e) => {
2418
2460
  $.warn(e);
2419
2461
  }), $.info(`API listening on :${le}`, {
2420
- dialect: _,
2421
- queries: b.queries.length,
2422
- mutations: b.mutations.length,
2423
- actions: b.actions.length,
2424
- streams: b.streams.length,
2425
- workflows: b.workflows.length,
2426
- workflowWorkers: b.workflowWorkers.length,
2427
- schedules: tr.length,
2428
- scheduleCoordination: gr
2429
- }), l.finish($), oi(async () => {
2430
- for (let e of Tn) e.stop();
2431
- Pt.stop();
2462
+ dialect: g,
2463
+ queries: y.queries.length,
2464
+ mutations: y.mutations.length,
2465
+ actions: y.actions.length,
2466
+ streams: y.streams.length,
2467
+ workflows: y.workflows.length,
2468
+ workflowWorkers: y.workflowWorkers.length,
2469
+ schedules: Sr.length,
2470
+ scheduleCoordination: Ar
2471
+ }), u.finish($), pi(async () => {
2472
+ for (let e of Nn) e.stop();
2473
+ Rt.stop(), wi(), qn.stop();
2432
2474
  try {
2433
- await Y.close(), wt(), zt?.dispose(), await R.deactivate(), await Gn?.close(), await Ot({
2434
- mirror: Nt,
2475
+ await q.close(), kt(), Gt?.dispose(), await Qn.deactivate(), await ir?.close(), await Et({
2476
+ mirror: Pt,
2435
2477
  log: $
2436
- }), await Pe.dispose(), await w.close?.();
2478
+ }), await Be.dispose(), await w.close?.();
2437
2479
  } catch (e) {
2438
2480
  console.error("serve: shutdown step failed, exiting anyway:", e);
2439
2481
  }
2440
2482
  }), await new Promise(() => {}), 0;
2441
2483
  };
2442
2484
  //#endregion
2443
- export { Co as n, xo as r, wo as t };
2485
+ export { Lo as n, Fo as r, Ro as t };