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