@voltro/cli 0.22.0 → 0.23.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 (65) hide show
  1. package/CHANGELOG.md +383 -0
  2. package/dist/apiBuild-CD-4JLLA.js +2 -0
  3. package/dist/{apiBuild-2zRxj2hJ.js → apiBuild-JQtIhZPy.js} +2 -2
  4. package/dist/bin.js +3 -3
  5. package/dist/{commands-DGaeTn2f.js → commands-Bsu9Buln.js} +1764 -1492
  6. package/dist/dbCommand-CSguuUQn.js +2 -0
  7. package/dist/{dbCommand-DVASmZj2.js → dbCommand-GI7-BVZt.js} +440 -259
  8. package/dist/{dev-BEYBSGJ7.js → dev-DRxF_qOB.js} +1 -1
  9. package/dist/{dev-DeHVUxQx.js → dev-jM07kq_D.js} +1479 -1479
  10. package/dist/index.js +1 -1
  11. package/dist/{inspectMetrics-4AVPn6IS.js → inspectMetrics-dcC7gnxu.js} +603 -560
  12. package/dist/{serveCommand-DEVTtnLy.js → serveCommand-Cl8sicD5.js} +230 -229
  13. package/dist/serveEntry.js +2 -2
  14. package/dist/{start-BjGUIIvj.js → start-C_4VUDT8.js} +327 -325
  15. package/dist/startEntry.js +2 -2
  16. package/package.json +17 -17
  17. package/templates/AGENTS.md +1 -1
  18. package/templates/agent-docs/_index.md +1 -1
  19. package/templates/agent-docs/_manifest.json +1 -1
  20. package/templates/agent-docs/caching.md +21 -5
  21. package/templates/agent-docs/cli.md +44 -0
  22. package/templates/agent-docs/data.md +23 -5
  23. package/templates/agent-docs/database/migrations.md +94 -0
  24. package/templates/agent-docs/plugins.md +42 -0
  25. package/templates/agent-docs/routing.md +23 -1
  26. package/templates/agent-docs/templates/apibackends.md +2 -2
  27. package/templates/agent-docs/whats-new.md +203 -136
  28. package/templates/apps/api-ai/package.json +7 -7
  29. package/templates/apps/api-auth/package.json +8 -8
  30. package/templates/apps/api-backend/package.json +7 -7
  31. package/templates/apps/api-backend-deactivation/package.json +7 -7
  32. package/templates/apps/api-backend-mail/package.json +8 -8
  33. package/templates/apps/api-backend-mariadb/package.json +9 -9
  34. package/templates/apps/api-backend-storage/package.json +8 -8
  35. package/templates/apps/api-data-advanced/package.json +8 -8
  36. package/templates/apps/api-durable/package.json +8 -8
  37. package/templates/apps/api-feature-flags/package.json +9 -9
  38. package/templates/apps/api-governance/package.json +8 -8
  39. package/templates/apps/api-kv/package.json +8 -8
  40. package/templates/apps/api-moderation/package.json +8 -8
  41. package/templates/apps/api-observability/package.json +8 -8
  42. package/templates/apps/api-ratelimit/package.json +8 -8
  43. package/templates/apps/api-rbac/package.json +8 -8
  44. package/templates/apps/api-rest/package.json +7 -7
  45. package/templates/apps/api-saas/package.json +11 -11
  46. package/templates/apps/api-search/package.json +8 -8
  47. package/templates/apps/api-versioning/app.config.ts +6 -4
  48. package/templates/apps/api-versioning/package.json +8 -8
  49. package/templates/apps/api-webhooks/package.json +9 -9
  50. package/templates/apps/changelog/package.json +6 -6
  51. package/templates/apps/edge-functions/package.json +2 -2
  52. package/templates/apps/frontend-admin/package.json +8 -8
  53. package/templates/apps/frontend-app/package.json +8 -8
  54. package/templates/apps/frontend-blank/package.json +7 -7
  55. package/templates/apps/frontend-contact/package.json +7 -7
  56. package/templates/apps/frontend-dashboard/package.json +7 -7
  57. package/templates/apps/frontend-docs/package.json +7 -7
  58. package/templates/apps/frontend-i18n/package.json +6 -6
  59. package/templates/apps/frontend-landing/package.json +7 -7
  60. package/templates/apps/frontend-spa/package.json +7 -7
  61. package/templates/apps/frontend-ssr/package.json +7 -7
  62. package/templates/apps/frontend-ssr-api/package.json +8 -8
  63. package/templates/apps/frontend-static-blog/package.json +6 -6
  64. package/dist/apiBuild-sqNmWmY5.js +0 -2
  65. package/dist/dbCommand-CO3eSAZR.js +0 -2
@@ -1,24 +1,24 @@
1
- import { at as e, t } from "./inspectMetrics-4AVPn6IS.js";
1
+ import { ot as e, t } from "./inspectMetrics-dcC7gnxu.js";
2
2
  import { s as n } from "./seedRunner-D6eu-u5U.js";
3
3
  import { r, t as i } from "./appModuleLoader-C9r9mxZt.js";
4
4
  import { f as a, m as o, n as s, p as c, u as l } from "./frameworkTableAssembly-sg41s14F.js";
5
5
  import { l as u } from "./fileConventions-CBNPZVOV.js";
6
6
  import { p as d } from "./inspect-_ldwsAwH.js";
7
- import { $ as ee, A as f, B as p, C as te, D as m, E as ne, F as re, G as ie, H as ae, I as h, K as oe, L as g, M as _, N as se, O as v, P as y, R as ce, S as le, T as ue, V as de, W as fe, _ as b, at as pe, b as me, c as he, et as ge, h as x, i as _e, it as S, j as ve, k as ye, lt as C, m as be, nt as w, o as T, ot as xe, q as E, r as Se, rt as Ce, st as we, t as Te, tt as Ee, u as De, ut as Oe, v as ke, w as Ae, x as D, y as je, z as Me } from "./dev-DeHVUxQx.js";
8
- import { l as O, r as k } from "./apiBuild-2zRxj2hJ.js";
9
- import { t as Ne } from "./bootTiming-BdyP9nYw.js";
10
- import { n as Pe } from "./cliArgs-qdZSElM3.js";
11
- import { join as Fe } from "node:path";
12
- import { pathToFileURL as Ie } from "node:url";
13
- import { Cause as Le, Effect as A, Layer as j, ManagedRuntime as Re } from "effect";
14
- import { createLogger as M } from "@voltro/logger";
15
- import { existsSync as ze } from "node:fs";
16
- import { AggregateRegistry as N, Dispatcher as Be, apiKeyManagementRoutes as Ve, applySoftDeleteScope as He, applyTenantScope as Ue, attachAnalyticsMirror as P, awaitServerListening as We, bindMutation as F, bindStream as Ge, bindSubscription as I, buildTracingLayer as Ke, cancelWakeup as qe, compileCron as Je, dataStoreApiKeyStore as Ye, dataStoreIdempotencyStore as Xe, formatServerOnlyLeaks as Ze, frameworkApiKeyStrategy as Qe, installPolicyGuardResolver as $e, loadResourceTuples as et, makeActionRunner as L, makeAdvisoryLockCoordinator as tt, makeApiKeyService as nt, makeApiKeyUsageBuffer as rt, makeApiKeyUsageFlusher as it, makeAsyncKv as at, makeCoordinatedScheduler as ot, makeEffectStoreLayer as st, makeLazyWorkflowFacade as ct, makeMutationRunner as lt, makeOneShotQueryRunner as ut, makeQueryDescriptorProducer as dt, makeQueryReauthorizer as ft, makeQuerySubscriber as pt, makeSchemaRegistry as mt, makeWorkflowFacade as ht, makeWorkflowFacadeWithCallerContext as gt, makeWorkflowLayers as _t, noopKv as R, onProcessShutdown as vt, recordSubscriptionDelivery as yt, registerWakeup as bt, resolveSecretsBackend as xt, runProvidedEffect as St, setSecretsBackend as Ct, setSystemStoreHandle as z, setTupleSource as wt, singleCoordinator as Tt, startRpcServer as Et, startScheduler as Dt, workflowToRpc as B, wrapStoreWithBootCodec as Ot } from "@voltro/runtime";
7
+ import { $ as ee, A as f, B as p, C as te, D as m, E as ne, F as re, G as ie, H as ae, I as h, K as oe, L as g, M as _, N as se, O as v, P as y, R as ce, S as le, T as ue, V as de, W as fe, _ as b, at as pe, b as me, c as he, et as ge, h as _e, i as x, it as S, j as ve, k as ye, lt as be, m as C, nt as w, o as T, ot as xe, q as Se, r as Ce, rt as we, st as E, t as Te, tt as Ee, u as De, ut as Oe, v as ke, w as Ae, x as D, y as je, z as Me } from "./dev-jM07kq_D.js";
8
+ import { l as O, r as k } from "./apiBuild-JQtIhZPy.js";
9
+ import { t as A } from "./bootTiming-BdyP9nYw.js";
10
+ import { n as Ne } from "./cliArgs-qdZSElM3.js";
11
+ import { join as Pe } from "node:path";
12
+ import { pathToFileURL as Fe } from "node:url";
13
+ import { Cause as Ie, Effect as j, Layer as M, ManagedRuntime as Le } from "effect";
14
+ import { createLogger as N } from "@voltro/logger";
15
+ import { existsSync as Re } from "node:fs";
16
+ import { AggregateRegistry as P, Dispatcher as ze, apiKeyManagementRoutes as Be, applySoftDeleteScope as Ve, applyTenantScope as He, attachAnalyticsMirror as Ue, awaitServerListening as We, bindMutation as F, bindStream as Ge, bindSubscription as I, buildTracingLayer as Ke, cancelWakeup as qe, compileCron as L, dataStoreApiKeyStore as Je, dataStoreIdempotencyStore as Ye, formatServerOnlyLeaks as Xe, frameworkApiKeyStrategy as Ze, installPolicyGuardResolver as Qe, loadResourceTuples as $e, makeActionRunner as R, makeAdvisoryLockCoordinator as et, makeApiKeyService as tt, makeApiKeyUsageBuffer as nt, makeApiKeyUsageFlusher as rt, makeAsyncKv as it, makeCoordinatedScheduler as at, makeEffectStoreLayer as ot, makeLazyWorkflowFacade as st, makeMutationRunner as ct, makeOneShotQueryRunner as lt, makeQueryDescriptorProducer as ut, makeQueryReauthorizer as dt, makeQuerySubscriber as ft, makeSchemaRegistry as pt, makeWorkflowFacade as mt, makeWorkflowFacadeWithCallerContext as ht, makeWorkflowLayers as gt, noopKv as z, onProcessShutdown as _t, recordSubscriptionDelivery as vt, registerWakeup as yt, resolveSecretsBackend as bt, runProvidedEffect as xt, setSecretsBackend as St, setSystemStoreHandle as Ct, setTupleSource as wt, singleCoordinator as Tt, startRpcServer as Et, startScheduler as Dt, workflowToRpc as B, wrapStoreWithBootCodec as Ot } from "@voltro/runtime";
17
17
  import { RpcGroup as kt } from "@effect/rpc";
18
18
  import { SqlClient as At } from "@effect/sql";
19
19
  import { and as jt, ensureTableRegistered as Mt, eq as V, or as Nt } from "@voltro/database";
20
20
  import { appStorageProvider as H, fromNodeReadable as Pt, getObjectStream as Ft, putObjectStream as It, toNodeReadable as U } from "@voltro/plugin-storage";
21
- import { AuthMiddleware as W, ConnectionInfoMiddleware as G, actionToRpc as K, anonymousSubject as Lt, isWireReachable as Rt, mutationToRpc as zt, queryToRpc as q, streamToRpc as Bt, workflowCancelDescriptor as Vt, workflowDomainEventsQueryDescriptor as J, workflowEventDeliveriesQueryDescriptor as Ht, workflowResumeDescriptor as Ut, workflowRunEventsQueryDescriptor as Y, workflowRunQueryDescriptor as X, workflowRunStepsQueryDescriptor as Wt, workflowRunsQueryDescriptor as Z, workflowSignalDescriptor as Gt, workflowUpdateDescriptor as Kt } from "@voltro/protocol";
21
+ import { AuthMiddleware as Lt, ConnectionInfoMiddleware as W, actionToRpc as G, anonymousSubject as Rt, isWireReachable as zt, mutationToRpc as Bt, queryToRpc as K, streamToRpc as Vt, workflowCancelDescriptor as Ht, workflowDomainEventsQueryDescriptor as q, workflowEventDeliveriesQueryDescriptor as Ut, workflowResumeDescriptor as J, workflowRunEventsQueryDescriptor as Y, workflowRunQueryDescriptor as X, workflowRunStepsQueryDescriptor as Wt, workflowRunsQueryDescriptor as Z, workflowSignalDescriptor as Gt, workflowUpdateDescriptor as Kt } from "@voltro/protocol";
22
22
  import { assertProductionSessionSecret as qt } from "@voltro/protocol/session";
23
23
  import { createHash as Jt, timingSafeEqual as Yt } from "node:crypto";
24
24
  import { declaredSnapshot as Xt, describeOutcome as Zt, runPlannedMigrations as Qt } from "@voltro/database/sql";
@@ -42,7 +42,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
42
42
  if (!t || t.length < 16) return Q(503, { error: "data transfer misconfigured (no/weak secret)" });
43
43
  let n = yn(e.headers);
44
44
  return !n || !bn(n, t) ? Q(401, { error: "unauthorized" }) : null;
45
- }, Sn = M({ scope: "voltro:admin-import" }), Cn = "VBUNDLE2", wn = async function* (e) {
45
+ }, Sn = N({ scope: "voltro:admin-import" }), Cn = "VBUNDLE2", wn = async function* (e) {
46
46
  yield e;
47
47
  }, Tn = (e) => async (t) => {
48
48
  let n = xn(t, e.secret);
@@ -66,7 +66,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
66
66
  dir: f,
67
67
  blobs: e.assetSink
68
68
  }) : await mn(c, f);
69
- let t = await A.runPromiseExit(un({
69
+ let t = await j.runPromiseExit(un({
70
70
  store: e.store,
71
71
  bundleDir: f,
72
72
  ...r ? { mode: r } : {},
@@ -121,7 +121,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
121
121
  force: !0
122
122
  });
123
123
  }
124
- }, En = M({ scope: "voltro:admin-export" }), Dn = async (e) => {
124
+ }, En = N({ scope: "voltro:admin-export" }), Dn = async (e) => {
125
125
  let t = [];
126
126
  for await (let n of e) t.push(Buffer.from(n));
127
127
  return new Uint8Array(Buffer.concat(t));
@@ -154,7 +154,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
154
154
  }
155
155
  let a = r.consistency === "snapshot" ? "snapshot" : i.consistency ?? "live", o = (typeof r.compression == "string" ? r.compression : void 0) ?? i.compression, s = i.scope ?? On(r), c = typeof r.bundleKey == "string" && r.bundleKey.length > 0, l = r.assets === !0 && e.assetSource ? { blobs: e.assetSource } : {}, u = await import("node:os"), d = await import("node:fs/promises"), ee = await import("node:path"), f = await d.mkdtemp(ee.join(u.tmpdir(), "voltro-admin-export-"));
156
156
  try {
157
- let t = await A.runPromise(ln({
157
+ let t = await j.runPromise(ln({
158
158
  store: e.store,
159
159
  snapshot: e.snapshot,
160
160
  dialect: e.dialect,
@@ -230,7 +230,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
230
230
  if (!o) throw Error(`data profile '${i}' has no default export`);
231
231
  return o;
232
232
  }, jn = (e, t, n = {}) => (async function* () {
233
- let r = await U((await A.runPromise(Ft(e, t).pipe(A.timeout(n.openTimeout ?? "30 seconds")))).stream), i = n.stallMs ?? 12e4, a, o = () => {
233
+ let r = await U((await j.runPromise(Ft(e, t).pipe(j.timeout(n.openTimeout ?? "30 seconds")))).stream), i = n.stallMs ?? 12e4, a, o = () => {
234
234
  a && clearTimeout(a), a = setTimeout(() => r.destroy(/* @__PURE__ */ Error(`storage read stalled for ${i}ms reading '${t}'`)), i);
235
235
  };
236
236
  try {
@@ -249,20 +249,20 @@ var hn = "VoltroBootRefusal", gn = (e) => {
249
249
  invalidateTag: async () => 0,
250
250
  wrap: async (e, t, n) => n()
251
251
  }, Nn = async (e) => {
252
- z({
252
+ Ct({
253
253
  dataStore: e.store,
254
254
  schemaRegistry: e.schemaRegistry
255
255
  });
256
- let t = new Be({
256
+ let t = new ze({
257
257
  store: e.store,
258
258
  ...e.snapshotCache ? { cache: e.snapshotCache } : {},
259
- recordDelivery: (e) => yt({
259
+ recordDelivery: (e) => vt({
260
260
  label: e.label,
261
261
  kind: e.kind,
262
262
  durationMs: e.durationMs,
263
263
  rowCount: e.rowCount
264
264
  })
265
- }), n = e.cache ?? Mn, r = e.kv ?? R, i, a, o, s = /* @__PURE__ */ new Map(), c = () => `wfctx_${globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`, l = async (t, n, r) => {
265
+ }), n = e.cache ?? Mn, r = e.kv ?? z, i, a, o, s = /* @__PURE__ */ new Map(), c = () => `wfctx_${globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`, l = async (t, n, r) => {
266
266
  let i = {
267
267
  ...r,
268
268
  source: r.source ?? `workflow:${t}`
@@ -318,7 +318,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
318
318
  process.stderr.write(`[workflow] failed to load start context for ${n}: ${e?.message ?? String(e)}\n`);
319
319
  return;
320
320
  }
321
- }, d = (e.discovered.workflows?.length ?? 0) > 0 ? ct(() => i) : void 0, f = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, te = f || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", re = e.tenantIsolation === "namespace", ie = (e.log ?? M({ scope: "voltro:serve" })).child("webhooks"), ae, h = e.discovered.webhooks;
321
+ }, d = (e.discovered.workflows?.length ?? 0) > 0 ? st(() => i) : void 0, f = (e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.eventTriggers?.length ?? 0) > 0, te = f || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster", re = e.tenantIsolation === "namespace", ie = (e.log ?? N({ scope: "voltro:serve" })).child("webhooks"), ae, h = e.discovered.webhooks;
322
322
  if (h && h.outgoing.length > 0 && e.workflowEngineLayer !== void 0) {
323
323
  let t = e.workflowEngineLayer, i = S({
324
324
  store: e.store,
@@ -327,8 +327,8 @@ var hn = "VoltroBootRefusal", gn = (e) => {
327
327
  kv: r
328
328
  }), a = h.outgoing.map((e) => e.descriptor);
329
329
  ae = rn(i, async (e) => {
330
- let n = on.execute(e).pipe(A.provide(on.toLayer(nn(i, { events: a })).pipe(j.provideMerge(t))));
331
- A.runPromise(n).catch((t) => {
330
+ let n = on.execute(e).pipe(j.provide(on.toLayer(nn(i, { events: a })).pipe(M.provideMerge(t))));
331
+ j.runPromise(n).catch((t) => {
332
332
  ie.error("deliverWebhook workflow crashed", {
333
333
  deliveryId: e.deliveryId,
334
334
  targetId: e.targetId
@@ -340,7 +340,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
340
340
  if (h) for (let e of h.incoming) {
341
341
  let t = e.descriptor.path ?? an(e.descriptor.id), n = `VOLTRO_WEBHOOK_SECRET_${e.descriptor.id.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, r = sn(e.descriptor, {
342
342
  resolveSecret: async () => process.env[n] ?? null,
343
- resolveWorkflows: () => d === void 0 ? void 0 : gt(d, {
343
+ resolveWorkflows: () => d === void 0 ? void 0 : ht(d, {
344
344
  traceId: `incoming:${e.descriptor.id}`,
345
345
  source: `incoming:${e.descriptor.id}`
346
346
  }),
@@ -357,17 +357,17 @@ var hn = "VoltroBootRefusal", gn = (e) => {
357
357
  });
358
358
  oe.set(t, { handle: r });
359
359
  }
360
- $e(), wt((t) => et(e.store, t.subjectId, t.resourceType, t.resourceId));
360
+ Qe(), wt((t) => $e(e.store, t.subjectId, t.resourceType, t.resourceId));
361
361
  let se = (e.discovered.outboxHandlers?.length ?? 0) > 0 ? p({
362
362
  handlers: e.discovered.outboxHandlers ?? [],
363
363
  store: e.store,
364
- log: (e.log ?? M({ scope: "voltro:serve" })).child("outbox")
364
+ log: (e.log ?? N({ scope: "voltro:serve" })).child("outbox")
365
365
  }) : void 0, v = ce({
366
366
  definitions: (e.discovered.connections ?? []).map((e) => e.definition),
367
367
  store: e.store,
368
368
  publicUrl: g(e.port ?? 4e3),
369
- log: (e.log ?? M({ scope: "voltro:serve" })).child("connections")
370
- }), y = Ce({
369
+ log: (e.log ?? N({ scope: "voltro:serve" })).child("connections")
370
+ }), y = we({
371
371
  store: e.store,
372
372
  schemaRegistry: e.schemaRegistry,
373
373
  cache: n,
@@ -378,70 +378,70 @@ var hn = "VoltroBootRefusal", gn = (e) => {
378
378
  namespaceIsolationOn: re,
379
379
  ...se === void 0 ? {} : { outbox: { nudge: se.nudge } },
380
380
  ...v.active ? { connections: { registry: v.registry } } : {}
381
- }), ue = j.succeed(N, m), fe = (t, n) => {
382
- let r = t.pipe(A.provide(st(n)));
383
- return St((e.baseLayer ? r.pipe(A.provide(e.baseLayer)) : r).pipe(A.provide(ue)));
384
- }, pe = lt({
381
+ }), ue = M.succeed(P, m), fe = (t, n) => {
382
+ let r = t.pipe(j.provide(ot(n)));
383
+ return (e.baseLayer ? r.pipe(j.provide(e.baseLayer)) : r).pipe(j.provide(ue));
384
+ }, pe = (e, t) => xt(fe(e, t)), me = ct({
385
385
  store: e.store,
386
386
  buildContext: (e, t, n) => y(e, t, n),
387
- runEffect: fe,
387
+ runEffect: pe,
388
388
  undoCapture: le()
389
- }), me = D(), he = L({
389
+ }), he = D(), ge = R({
390
390
  buildContext: (e) => y(e),
391
- runEffect: fe
392
- }), ge = {
391
+ runEffect: pe
392
+ }), _e = {
393
393
  buildContext: (e) => y(e),
394
- finalize: (t, n) => He(Ue(t, e.tenantScopedTables, n.subject.tenantId), e.softDeleteScopedTables),
395
- provideEffect: (e, t) => e.pipe(A.provide(st(t)))
396
- }, x = dt(ge), _e = ut({
397
- ...ge,
394
+ finalize: (t, n) => Ve(He(t, e.tenantScopedTables, n.subject.tenantId), e.softDeleteScopedTables),
395
+ provideEffect: fe
396
+ }, x = ut(_e), ye = lt({
397
+ ..._e,
398
398
  queryRows: (t) => e.store.query(t)
399
- }), ye = pt({
400
- ...ge,
399
+ }), be = ft({
400
+ ..._e,
401
401
  subscribeDescriptor: (e, n, r) => t.subscribe(e, n, r),
402
402
  subscribeComputed: (e, n, r) => t.subscribeComputed(e, n, r)
403
- }), C = {};
403
+ }), C = (e) => e.filter((e) => zt(e.descriptor)), T = {};
404
404
  for (let n of [
405
- ...e.discovered.queries,
406
- ...me.queries,
405
+ ...C(e.discovered.queries),
406
+ ...he.queries,
407
407
  ...v.queries
408
- ]) C[n.descriptor.name] = (e) => I(x(n, e), t, `subscription.${n.descriptor.name}`, void 0, void 0, ft(n, e));
408
+ ]) T[n.descriptor.name] = (e) => I(x(n, e), t, `subscription.${n.descriptor.name}`, void 0, void 0, dt(n, e));
409
409
  for (let t of [
410
- ...e.discovered.mutations,
411
- ...me.mutations,
410
+ ...C(e.discovered.mutations),
411
+ ...he.mutations,
412
412
  ...v.mutations
413
- ]) C[t.descriptor.name] = (e) => F(async (e, n) => pe(t, e, n), e, `mutation.${t.descriptor.name}`);
414
- for (let t of [...e.discovered.actions, ...v.actions]) C[t.descriptor.name] = (e) => F(async (e, n) => he(t, e, n), e, `action.${t.descriptor.name}`);
415
- let be = () => `public-${Math.random().toString(36).slice(2, 10)}`, T = [
413
+ ]) T[t.descriptor.name] = (e) => F(async (e, n) => me(t, e, n), e, `mutation.${t.descriptor.name}`);
414
+ for (let t of [...C(e.discovered.actions), ...v.actions]) T[t.descriptor.name] = (e) => F(async (e, n) => ge(t, e, n), e, `action.${t.descriptor.name}`);
415
+ let xe = () => `public-${Math.random().toString(36).slice(2, 10)}`, Se = [
416
416
  ...e.discovered.queries.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
417
417
  descriptor: e.descriptor,
418
- invoke: (t, n) => _e(e, t, {
418
+ invoke: (t, n) => ye(e, t, {
419
419
  subject: n.subject,
420
- traceId: be()
420
+ traceId: xe()
421
421
  }),
422
- subscribe: (t, n, r) => ye(e, t, {
422
+ subscribe: (t, n, r) => be(e, t, {
423
423
  subject: n.subject,
424
- traceId: be()
424
+ traceId: xe()
425
425
  }, r)
426
426
  })),
427
427
  ...e.discovered.mutations.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
428
428
  descriptor: e.descriptor,
429
- invoke: (t, n) => pe(e, t, {
429
+ invoke: (t, n) => me(e, t, {
430
430
  subject: n.subject,
431
- traceId: be()
431
+ traceId: xe()
432
432
  })
433
433
  })),
434
434
  ...e.discovered.actions.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
435
435
  descriptor: e.descriptor,
436
- invoke: (t, n) => he(e, t, {
436
+ invoke: (t, n) => ge(e, t, {
437
437
  subject: n.subject,
438
- traceId: be()
438
+ traceId: xe()
439
439
  })
440
440
  }))
441
- ], xe = T.length > 0 ? tn(en(T), {
441
+ ], Ce = Se.length > 0 ? tn(en(Se), {
442
442
  store: e.store,
443
443
  resolveSubject: (t) => e.resolveSubject(t, -1)
444
- }) : [], E = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, Se = E && E.length >= 16 ? [{
444
+ }) : [], E = e.dataTransferSecret ?? process.env.VOLTRO_DATA_TRANSFER_SECRET, Te = E && E.length >= 16 ? [{
445
445
  method: "POST",
446
446
  path: _n,
447
447
  handle: Tn({
@@ -464,32 +464,32 @@ var hn = "VoltroBootRefusal", gn = (e) => {
464
464
  assetSource: fn(H(), e.store),
465
465
  putArchive: async (e, t) => {
466
466
  let { Readable: n } = await import("node:stream"), r = H(), i = Pt("storage", () => n.from(t()));
467
- await A.runPromise(It(r, e, i, { contentType: "application/octet-stream" }));
467
+ await j.runPromise(It(r, e, i, { contentType: "application/octet-stream" }));
468
468
  }
469
469
  })
470
- }] : [], we = [
470
+ }] : [], Ee = [
471
471
  ...e.httpRoutes ?? [],
472
- ...xe,
473
- ...Se,
472
+ ...Ce,
473
+ ...Te,
474
474
  ...v.httpRoutes
475
475
  ];
476
- for (let t of e.discovered.streams ?? []) C[t.descriptor.name] = (n) => Ge((r) => {
476
+ for (let t of C(e.discovered.streams ?? [])) T[t.descriptor.name] = (n) => Ge((r) => {
477
477
  let i = y(r), a = t.executor(n, i);
478
- if (A.isEffect(a)) {
479
- let t = a.pipe(A.provide(st(i.store)));
480
- return (e.baseLayer ? t.pipe(A.provide(e.baseLayer)) : t).pipe(A.provide(ue));
478
+ if (j.isEffect(a)) {
479
+ let t = a.pipe(j.provide(ot(i.store)));
480
+ return (e.baseLayer ? t.pipe(j.provide(e.baseLayer)) : t).pipe(j.provide(ue));
481
481
  }
482
- return typeof a == "object" && a && typeof a.then == "function" ? A.promise(() => a) : a;
482
+ return typeof a == "object" && a && typeof a.then == "function" ? j.promise(() => a) : a;
483
483
  }, `stream.${t.descriptor.name}`);
484
- for (let t of e.discovered.workflows ?? []) C[t.definition.name] = (e) => F(async (e, n) => {
484
+ for (let t of e.discovered.workflows ?? []) T[t.definition.name] = (e) => F(async (e, n) => {
485
485
  let r = n;
486
- return gt(d, {
486
+ return ht(d, {
487
487
  subject: r.subject,
488
488
  traceId: r.traceId,
489
489
  source: "workflow-rpc"
490
490
  }).start(t.definition.name, e);
491
491
  }, e, `workflow.${t.definition.name}`);
492
- f && (C[X.name] = (e) => I(x({
492
+ f && (T[X.name] = (e) => I(x({
493
493
  descriptor: X,
494
494
  executor: (e) => {
495
495
  let t = e.id;
@@ -505,7 +505,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
505
505
  projection: void 0
506
506
  };
507
507
  }
508
- }, e), t, `subscription.${X.name}`), C[Z.name] = (e) => I(x({
508
+ }, e), t, `subscription.${X.name}`), T[Z.name] = (e) => I(x({
509
509
  descriptor: Z,
510
510
  executor: (e) => {
511
511
  let t = e, n = [...t.tag === void 0 ? [] : [V("tag", t.tag)], ...t.status === void 0 ? [] : [V("status", t.status)]], r = Number.isFinite(t.limit) && t.limit !== void 0 ? Math.min(Math.max(Math.floor(t.limit), 1), 500) : 100;
@@ -521,7 +521,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
521
521
  projection: void 0
522
522
  };
523
523
  }
524
- }, e), t, `subscription.${Z.name}`), C[Wt.name] = (e) => I(x({
524
+ }, e), t, `subscription.${Z.name}`), T[Wt.name] = (e) => I(x({
525
525
  descriptor: Wt,
526
526
  executor: (e) => {
527
527
  let t = e.runId;
@@ -537,7 +537,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
537
537
  projection: void 0
538
538
  };
539
539
  }
540
- }, e), t, `subscription.${Wt.name}`), C[Y.name] = (e) => I(x({
540
+ }, e), t, `subscription.${Wt.name}`), T[Y.name] = (e) => I(x({
541
541
  descriptor: Y,
542
542
  executor: (e) => {
543
543
  let t = e.runId;
@@ -553,8 +553,8 @@ var hn = "VoltroBootRefusal", gn = (e) => {
553
553
  projection: void 0
554
554
  };
555
555
  }
556
- }, e), t, `subscription.${Y.name}`), C[J.name] = (e) => I(x({
557
- descriptor: J,
556
+ }, e), t, `subscription.${Y.name}`), T[q.name] = (e) => I(x({
557
+ descriptor: q,
558
558
  executor: (e) => {
559
559
  let t = e;
560
560
  return {
@@ -569,8 +569,8 @@ var hn = "VoltroBootRefusal", gn = (e) => {
569
569
  projection: void 0
570
570
  };
571
571
  }
572
- }, e), t, `subscription.${J.name}`), C[Ht.name] = (e) => I(x({
573
- descriptor: Ht,
572
+ }, e), t, `subscription.${q.name}`), T[Ut.name] = (e) => I(x({
573
+ descriptor: Ut,
574
574
  executor: (e) => {
575
575
  let t = e.eventId;
576
576
  return {
@@ -585,63 +585,63 @@ var hn = "VoltroBootRefusal", gn = (e) => {
585
585
  projection: void 0
586
586
  };
587
587
  }
588
- }, e), t, `subscription.${Ht.name}`), C[Vt.name] = (t) => F(async (t, n) => {
588
+ }, e), t, `subscription.${Ut.name}`), T[Ht.name] = (t) => F(async (t, n) => {
589
589
  let r = t;
590
590
  return await w(e.store, n.subject, { executionId: r.executionId }), await d.cancel(r.workflowName, r.executionId), await Pe(r.workflowName, r.executionId, "workflow.cancel"), { ok: !0 };
591
- }, t, `action.${Vt.name}`), C[Ut.name] = (t) => F(async (t, n) => {
591
+ }, t, `action.${Ht.name}`), T[J.name] = (t) => F(async (t, n) => {
592
592
  let r = t;
593
593
  return await w(e.store, n.subject, { executionId: r.executionId }), await d.resume(r.workflowName, r.executionId), { ok: !0 };
594
- }, t, `action.${Ut.name}`), C[Gt.name] = (t) => F(async (t, n) => {
594
+ }, t, `action.${J.name}`), T[Gt.name] = (t) => F(async (t, n) => {
595
595
  let r = t;
596
596
  return await w(e.store, n.subject, { id: r.id }), d.signal({ id: r.id }, r.signalName, r.payload);
597
- }, t, `action.${Gt.name}`), C[Kt.name] = (t) => F(async (t, n) => {
597
+ }, t, `action.${Gt.name}`), T[Kt.name] = (t) => F(async (t, n) => {
598
598
  let r = t;
599
599
  return await w(e.store, n.subject, { id: r.id }), d.update({ id: r.id }, r.updateName, r.payload, r.timeoutMs === void 0 ? void 0 : { timeoutMs: r.timeoutMs });
600
600
  }, t, `action.${Kt.name}`));
601
- let Te = (e) => e.filter((e) => Rt(e.descriptor)), Ee = [
602
- ...Te(e.discovered.queries).map((e) => q(e.descriptor)),
603
- ...Te(e.discovered.mutations).map((e) => zt(e.descriptor)),
604
- ...Te(e.discovered.actions).map((e) => K(e.descriptor)),
605
- ...me.queries.map((e) => q(e.descriptor)),
606
- ...me.mutations.map((e) => zt(e.descriptor)),
607
- ...v.queries.map((e) => q(e.descriptor)),
608
- ...v.mutations.map((e) => zt(e.descriptor)),
609
- ...v.actions.map((e) => K(e.descriptor)),
610
- ...(e.discovered.streams ?? []).map((e) => Bt(e.descriptor)),
601
+ let De = [
602
+ ...C(e.discovered.queries).map((e) => K(e.descriptor)),
603
+ ...C(e.discovered.mutations).map((e) => Bt(e.descriptor)),
604
+ ...C(e.discovered.actions).map((e) => G(e.descriptor)),
605
+ ...he.queries.map((e) => K(e.descriptor)),
606
+ ...he.mutations.map((e) => Bt(e.descriptor)),
607
+ ...v.queries.map((e) => K(e.descriptor)),
608
+ ...v.mutations.map((e) => Bt(e.descriptor)),
609
+ ...v.actions.map((e) => G(e.descriptor)),
610
+ ...C(e.discovered.streams ?? []).map((e) => Vt(e.descriptor)),
611
611
  ...(e.discovered.workflows ?? []).map((e) => B(e.definition)),
612
612
  ...f ? [
613
- q(X),
614
- q(Z),
615
- q(Wt),
616
- q(Y),
617
- q(J),
618
- q(Ht),
619
- K(Vt),
613
+ K(X),
614
+ K(Z),
615
+ K(Wt),
616
+ K(Y),
617
+ K(q),
620
618
  K(Ut),
621
- K(Gt),
622
- K(Kt)
619
+ G(Ht),
620
+ G(J),
621
+ G(Gt),
622
+ G(Kt)
623
623
  ] : []
624
- ], De = kt.make(...Ee).middleware(W).middleware(G), Oe = j.succeed(W, W.of(({ headers: t, clientId: n }) => A.promise(() => e.resolveSubject(t, n)))), Ae = j.succeed(G, G.of(({ clientId: e }) => A.succeed({ clientId: e }))), je = e.dormancyTenantId ?? "default", Me = e.dormancy === "sleep" ? {
625
- register: (t, n, r) => bt(e.store, {
626
- tenantId: r ?? je,
624
+ ], Oe = kt.make(...De).middleware(Lt).middleware(W), Ae = M.succeed(Lt, Lt.of(({ headers: t, clientId: n }) => j.promise(() => e.resolveSubject(t, n)))), je = M.succeed(W, W.of(({ clientId: e }) => j.succeed({ clientId: e }))), Me = e.dormancyTenantId ?? "default", O = e.dormancy === "sleep" ? {
625
+ register: (t, n, r) => yt(e.store, {
626
+ tenantId: r ?? Me,
627
627
  kind: "workflow",
628
628
  refId: t,
629
629
  wakeAt: n
630
630
  }),
631
631
  cancel: (t, n) => qe(e.store, {
632
- tenantId: n ?? je,
632
+ tenantId: n ?? Me,
633
633
  kind: "workflow",
634
634
  refId: t
635
635
  }).then(() => {})
636
- } : void 0, O = te ? await import("@voltro/workflow") : void 0, k = O?.makeWorkflowRunRecorder({
636
+ } : void 0, k = te ? await import("@voltro/workflow") : void 0, A = k?.makeWorkflowRunRecorder({
637
637
  store: e.store,
638
- ...Me === void 0 ? {} : { wakeups: Me }
638
+ ...O === void 0 ? {} : { wakeups: O }
639
639
  }), Ne = async (t, n) => {
640
- await O.closeWorkflowChildrenForParent({
640
+ await k.closeWorkflowChildrenForParent({
641
641
  store: e.store,
642
642
  parentExecutionId: t,
643
643
  parentStatus: n,
644
- recorder: k,
644
+ recorder: A,
645
645
  log: { warn: (e, t) => {
646
646
  process.stderr.write(`[workflow] ${e} ${t ? JSON.stringify(t) : ""}\n`);
647
647
  } },
@@ -667,7 +667,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
667
667
  cancelled: !0,
668
668
  completedAt: /* @__PURE__ */ new Date()
669
669
  }), o = i.subject?.tenantId ?? void 0;
670
- a && await k.recordEvent({
670
+ a && await A.recordEvent({
671
671
  runId: i.id,
672
672
  eventType: "run-cancelled",
673
673
  payload: {
@@ -677,15 +677,15 @@ var hn = "VoltroBootRefusal", gn = (e) => {
677
677
  ...o == null ? {} : { tenantId: o }
678
678
  }
679
679
  }), a && await Ne(n, "cancelled");
680
- }, Fe = [..._t(e.discovered.workflows ?? [], {
680
+ }, Fe = [...gt(e.discovered.workflows ?? [], {
681
681
  buildContext: (t, n) => e.buildContextForWorkflow?.(t, n) ?? y({
682
682
  subject: t.subject,
683
683
  traceId: t.traceId
684
684
  }, e.store, void 0, `workflow:${n.workflowName}`, { parentExecutionId: n.executionId }),
685
685
  resolveStartContext: u
686
686
  }, (t, n, r) => {
687
- let i = O.getWorkflowVersionMetadata(t.definition);
688
- return O.wrapWorkflowExecuteWithRunRecording({
687
+ let i = k.getWorkflowVersionMetadata(t.definition);
688
+ return k.wrapWorkflowExecuteWithRunRecording({
689
689
  name: t.definition.name,
690
690
  store: e.store,
691
691
  subject: r.subject,
@@ -697,33 +697,33 @@ var hn = "VoltroBootRefusal", gn = (e) => {
697
697
  parentExecutionId: r?.parentExecutionId ?? null,
698
698
  parentClosePolicy: r?.parentClosePolicy ?? null,
699
699
  onParentClose: ({ executionId: e, status: t }) => Ne(e, t),
700
- recorder: k
700
+ recorder: A
701
701
  }, n);
702
- }), ...e.discovered.workflowWorkers ?? []], Ie = Fe.length > 0 ? j.mergeAll(...Fe) : j.empty;
702
+ }), ...e.discovered.workflowWorkers ?? []], Ie = Fe.length > 0 ? M.mergeAll(...Fe) : M.empty;
703
703
  if (((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster") && e.workflowEngineLayer !== void 0) {
704
- let t = Ie.pipe(j.provideMerge(e.workflowEngineLayer));
705
- a = Re.make(e.baseLayer === void 0 ? t : t.pipe(j.provideMerge(e.baseLayer))), await a.runPromise(A.void), i = (e.discovered.workflows?.length ?? 0) > 0 ? ht({
704
+ let t = Ie.pipe(M.provideMerge(e.workflowEngineLayer));
705
+ a = Le.make(e.baseLayer === void 0 ? t : t.pipe(M.provideMerge(e.baseLayer))), await a.runPromise(j.void), i = (e.discovered.workflows?.length ?? 0) > 0 ? mt({
706
706
  workflows: e.discovered.workflows ?? [],
707
707
  runEffect: (e) => a.runPromise(e),
708
708
  rememberStartContext: l,
709
709
  signal: async (t, n, r) => {
710
- let i = await O.sendWorkflowSignal({
710
+ let i = await k.sendWorkflowSignal({
711
711
  store: e.store,
712
- recorder: k,
712
+ recorder: A,
713
713
  target: t,
714
714
  signalName: n,
715
715
  payload: r
716
716
  });
717
- return await a.runPromise(O.completeSuspendingSignal({
717
+ return await a.runPromise(k.completeSuspendingSignal({
718
718
  store: e.store,
719
719
  target: t,
720
720
  signalName: n,
721
721
  payload: r
722
722
  })).catch(() => {}), i;
723
723
  },
724
- update: (t, n, r, i) => O.sendWorkflowUpdate({
724
+ update: (t, n, r, i) => k.sendWorkflowUpdate({
725
725
  store: e.store,
726
- recorder: k,
726
+ recorder: A,
727
727
  target: t,
728
728
  updateName: n,
729
729
  payload: r,
@@ -737,29 +737,30 @@ var hn = "VoltroBootRefusal", gn = (e) => {
737
737
  }, t, n)
738
738
  }) : void 0;
739
739
  }
740
- let Le = j.mergeAll(De.toLayer(C), Oe, Ae), ze = ee(C, e.discovered.queries.map((e) => e.descriptor.name), f), Ve = j.mergeAll(De.toLayer(ze), Oe, Ae), P = e.observability, Je = await Ke({
741
- ...P && P.spanProcessors.length > 0 ? { extraSpanProcessors: P.spanProcessors } : {},
742
- ...P && P.metricReaders.length > 0 ? { extraMetricReaders: P.metricReaders } : {},
743
- ...P && Object.keys(P.resourceAttributes).length > 0 ? { resourceAttributes: P.resourceAttributes } : {},
744
- ...P && P.sampler !== void 0 ? { sampler: P.sampler } : {}
745
- }), Ye = !1, Xe = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Ze, shutdown: Qe } = Et({
746
- group: De,
747
- handlersLayer: Le,
748
- httpHandlersLayer: Ve,
740
+ let Re = M.mergeAll(Oe.toLayer(T), Ae, je), Be = ee(T, e.discovered.queries.map((e) => e.descriptor.name), f), Ue = M.mergeAll(Oe.toLayer(Be), Ae, je), L = e.observability, Je = await Ke({
741
+ ...L && L.spanProcessors.length > 0 ? { extraSpanProcessors: L.spanProcessors } : {},
742
+ ...L && L.metricReaders.length > 0 ? { extraMetricReaders: L.metricReaders } : {},
743
+ ...L && Object.keys(L.resourceAttributes).length > 0 ? { resourceAttributes: L.resourceAttributes } : {},
744
+ ...L && L.sampler !== void 0 ? { sampler: L.sampler } : {}
745
+ }), Ye = !1, Xe = e.store.ping ? () => e.store.ping().then(() => !0).catch(() => !1) : void 0, { server: Ze, shutdown: tt } = Et({
746
+ group: Oe,
747
+ handlersLayer: Re,
748
+ httpHandlersLayer: Ue,
749
749
  port: e.port ?? 4e3,
750
+ ...e.host === void 0 ? {} : { host: e.host },
750
751
  path: e.path ?? "/ws",
751
752
  tracerLayer: Je.layer,
752
753
  healthCheck: {
753
754
  isReady: () => Ye,
754
755
  ...Xe ? { ping: Xe } : {}
755
756
  },
756
- ...we.length > 0 ? { httpRoutes: we } : {},
757
+ ...Ee.length > 0 ? { httpRoutes: Ee } : {},
757
758
  ...e.getStore === void 0 ? {} : { getStore: e.getStore },
758
759
  ...oe.size > 0 ? { webhookRoutes: oe } : {},
759
760
  ...e.inspectRoute === void 0 ? {} : { inspectRoute: e.inspectRoute }
760
761
  });
761
762
  if (await We(Ze), (e.discovered.schedules?.length ?? 0) > 0) {
762
- let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? tt(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Tt;
763
+ let t = (e.scheduleCoordination ?? "single") === "advisoryLock" ? et(e.store, e.scheduleReplicaId ?? `pid-${process.pid}`) : Tt;
763
764
  o = await Dt(e.discovered.schedules ?? [], {
764
765
  store: e.store,
765
766
  coordinator: t,
@@ -788,7 +789,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
788
789
  ...e.onScheduleRunEvent === void 0 ? {} : { onRunEvent: e.onScheduleRunEvent }
789
790
  }), e.onSchedulerReady?.(o);
790
791
  }
791
- let nt = e.log ?? M({ scope: "voltro:serve" }), rt, it;
792
+ let nt = e.log ?? N({ scope: "voltro:serve" }), rt, it;
792
793
  if ((e.discovered.subscribers?.length ?? 0) > 0 && (rt = de(e.discovered.subscribers ?? [], e.store, nt.child("subscribe"), e.schemaRegistry)), (e.discovered.reactions?.length ?? 0) > 0) {
793
794
  let t = nt.child("reaction");
794
795
  it = ve(e.discovered.reactions ?? [], e.store, {
@@ -799,7 +800,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
799
800
  return;
800
801
  }
801
802
  let e = r.new ?? r.old ?? {};
802
- await gt(d, {
803
+ await ht(d, {
803
804
  traceId: `reaction:${n.workflow}`,
804
805
  source: `reaction:${n.workflow}`
805
806
  }).start(n.workflow, e);
@@ -807,8 +808,8 @@ var hn = "VoltroBootRefusal", gn = (e) => {
807
808
  }
808
809
  await _(n.agent, r, {
809
810
  findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
810
- runAction: (e, t, n) => Promise.resolve(he(e, t, n)),
811
- makeSubject: (e) => Lt(e),
811
+ runAction: (e, t, n) => Promise.resolve(ge(e, t, n)),
812
+ makeSubject: (e) => Rt(e),
812
813
  now: () => Date.now(),
813
814
  log: t
814
815
  });
@@ -816,7 +817,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
816
817
  checkBudget: async (n, r) => {
817
818
  try {
818
819
  let { requireAiBudget: t } = await import("@voltro/ai");
819
- return (await A.runPromise(A.either(t(e.store, {
820
+ return (await j.runPromise(j.either(t(e.store, {
820
821
  tenantId: n,
821
822
  limitUsd: r
822
823
  }))))._tag === "Right";
@@ -834,20 +835,20 @@ var hn = "VoltroBootRefusal", gn = (e) => {
834
835
  ...e.analytics === void 0 ? {} : { analytics: e.analytics },
835
836
  ...e.aggregateStorage === void 0 ? {} : { storage: e.aggregateStorage },
836
837
  ...e.aggregateCoordinator === void 0 ? {} : { coordinator: e.aggregateCoordinator }
837
- }), ue = j.succeed(N, at.registry)), Ye = !0, e.bootTiming?.mark("ready"), {
838
+ }), ue = M.succeed(P, at.registry)), Ye = !0, e.bootTiming?.mark("ready"), {
838
839
  dispatcher: t,
839
840
  server: Ze,
840
841
  scheduler: o,
841
842
  close: async () => {
842
- Ye = !1, at?.detach(), it?.(), rt?.(), await o?.shutdown(), t.close(), await a?.dispose(), await new Promise((e) => Ze.close(() => e())), await Qe();
843
+ Ye = !1, at?.detach(), it?.(), rt?.(), await o?.shutdown(), t.close(), await a?.dispose(), await new Promise((e) => Ze.close(() => e())), await tt();
843
844
  }
844
845
  };
845
- }, $ = M({ scope: "voltro:serve" }), Pn = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", Fn = Pe, In = async (e) => {
846
+ }, $ = N({ scope: "voltro:serve" }), Pn = (e, t, n) => (e === "production" || e === "staging") && t !== "memory" && n !== "0", Fn = Ne, In = async (e) => {
846
847
  let t = O(process.cwd());
847
- if (ze(t)) {
848
+ if (Re(t)) {
848
849
  let n;
849
850
  try {
850
- let e = await import(Ie(t).href);
851
+ let e = await import(Fe(t).href);
851
852
  typeof e.runServe == "function" ? n = e.runServe : $.warn("serve bundle has no runServe export — using the standard serve path");
852
853
  } catch (e) {
853
854
  $.warn("serve bundle failed to load — using the standard serve path", {}, e);
@@ -856,7 +857,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
856
857
  }
857
858
  return Ln(e);
858
859
  }, Ln = async (ee) => {
859
- let p = Ne();
860
+ let p = A();
860
861
  process.env.NODE_ENV || (process.env.NODE_ENV = "production");
861
862
  try {
862
863
  qt();
@@ -864,7 +865,7 @@ var hn = "VoltroBootRefusal", gn = (e) => {
864
865
  throw gn(e instanceof Error ? e.message : String(e));
865
866
  }
866
867
  let m = process.cwd(), ne = Number(process.env.PORT ?? Fn(ee, "--port") ?? 4e3), g = await he(m);
867
- Ct(xt(g?.secrets)), await e({
868
+ St(bt(g?.secrets)), await e({
868
869
  rawEnv: g?.env,
869
870
  appType: "api",
870
871
  root: m,
@@ -872,23 +873,23 @@ var hn = "VoltroBootRefusal", gn = (e) => {
872
873
  generateTypes: !1
873
874
  }), p.mark("config");
874
875
  let _ = (process.env.DB_DIALECT ?? g?.store ?? "memory").toLowerCase(), ce = (_ === "mariadb" || _ === "postgres" || _ === "mssql") && (process.env.CDC ?? "1") !== "0", le = _ === "mariadb" ? "mariadb" : _ === "mssql" ? "mssql" : void 0, de = k(m);
875
- if (!i() && ze(de)) try {
876
- let e = await import(Ie(de).href);
876
+ if (!i() && Re(de)) try {
877
+ let e = await import(Fe(de).href);
877
878
  if (e.modules) {
878
879
  let t = {};
879
- for (let [n, r] of Object.entries(e.modules)) t[Fe(m, n)] = r;
880
+ for (let [n, r] of Object.entries(e.modules)) t[Pe(m, n)] = r;
880
881
  r(t), $.info("precompiled api bundle loaded", { modules: Object.keys(t).length });
881
882
  }
882
883
  } catch (e) {
883
884
  $.warn("precompiled api bundle failed to load — falling back to source", {}, e);
884
885
  }
885
- let b = await be(m), S = await De(b, { cdc: ce && le !== void 0 });
886
+ let b = await C(m), S = await De(b, { cdc: ce && le !== void 0 });
886
887
  {
887
- let e = h(S.serverOnlyLeaks, re(process.env, "strict"), Ze, "`voltro serve`");
888
+ let e = h(S.serverOnlyLeaks, re(process.env, "strict"), Xe, "`voltro serve`");
888
889
  if (e.action === "fail") throw gn(e.message ?? "");
889
890
  e.action === "warn" && $.warn(e.message ?? "");
890
891
  }
891
- let ve = b.filter((e) => Ae.test(e)), w = ve.length > 0 ? await ue(ve, $.child("webhooks")) : void 0, Ce = s({
892
+ let ve = b.filter((e) => Ae.test(e)), w = ve.length > 0 ? await ue(ve, $.child("webhooks")) : void 0, we = s({
892
893
  mix: S.featureMix,
893
894
  plugins: g?.plugins ?? [],
894
895
  cdc: ce && le !== void 0,
@@ -899,23 +900,23 @@ var hn = "VoltroBootRefusal", gn = (e) => {
899
900
  log: $
900
901
  }), O = (() => {
901
902
  let e = new Set(S.tables.map((e) => e.tableName)), t = [...S.tables];
902
- for (let n of [...Ce, ...D.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
903
+ for (let n of [...we, ...D.tables]) e.has(n.tableName) || (e.add(n.tableName), t.push(n));
903
904
  return t;
904
905
  })();
905
906
  for (let e of O) Mt(e);
906
- let Pe = (process.env.NODE_ENV ?? "").toLowerCase();
907
- if (Pn(Pe, _, process.env.VOLTRO_AUTO_MIGRATE)) {
908
- let e = (await n(_)).makeSqlLayer(T()), t = await A.runPromise(At.SqlClient.pipe(A.flatMap((e) => Qt(e, O, {
909
- appliedBy: `serve:${Pe}`,
907
+ let Ne = (process.env.NODE_ENV ?? "").toLowerCase();
908
+ if (Pn(Ne, _, process.env.VOLTRO_AUTO_MIGRATE)) {
909
+ let e = (await n(_)).makeSqlLayer(T()), t = await j.runPromise(At.SqlClient.pipe(j.flatMap((e) => Qt(e, O, {
910
+ appliedBy: `serve:${Ne}`,
910
911
  environment: "prod",
911
912
  dialectId: _
912
- })), A.provide(e)));
913
+ })), j.provide(e)));
913
914
  t.kind === "prod-mismatch" && ($.error(Zt(t, _)), $.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(Zt(t, _));
914
915
  }
915
- let M = mt(O);
916
+ let N = pt(O);
916
917
  p.mark("discover");
917
- let N = await _e(g, void 0), Be = Ot(N, _);
918
- for (let e of we({
918
+ let P = await x(g, void 0), ze = Ot(P, _);
919
+ for (let e of E({
919
920
  dialect: String(g?.store ?? process.env.DB_DIALECT ?? "postgres"),
920
921
  changeStrategy: (process.env.CDC ?? "1") === "0" ? "inline" : "cdc",
921
922
  dbUrl: process.env.DB_URL,
@@ -929,77 +930,77 @@ var hn = "VoltroBootRefusal", gn = (e) => {
929
930
  })
930
931
  })) e.level === "warn" ? $.warn(e.message) : $.info(e.message);
931
932
  g?.cache && !process.env.CACHE_BACKEND && (process.env.CACHE_BACKEND = g.cache), g?.cacheRedisUrl && !process.env.CACHE_REDIS_URL && (process.env.CACHE_REDIS_URL = g.cacheRedisUrl), g?.cacheRedisDriver && !process.env.CACHE_REDIS_DRIVER && (process.env.CACHE_REDIS_DRIVER = g.cacheRedisDriver), g?.cacheKeyPrefix && !process.env.CACHE_KEY_PREFIX && (process.env.CACHE_KEY_PREFIX = g.cacheKeyPrefix);
932
- let { service: He, invalidationBus: Ue, snapshotCache: We, cache: F, backend: Ge, dispose: I } = await xe({ env: process.env });
933
- $.info(`cache backend resolved: ${Ge}` + (Ge === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), N.onChange((e) => {
934
- A.runFork(Ue.publish(e.table));
933
+ let { service: Ve, invalidationBus: He, snapshotCache: We, cache: F, backend: Ge, dispose: I } = await xe({ env: process.env });
934
+ $.info(`cache backend resolved: ${Ge}` + (Ge === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), P.onChange((e) => {
935
+ j.runFork(He.publish(e.table));
935
936
  }), g?.kv && !process.env.KV_BACKEND && (process.env.KV_BACKEND = g.kv), g?.kvRedisUrl && !process.env.KV_REDIS_URL && (process.env.KV_REDIS_URL = g.kvRedisUrl), g?.kvKeyPrefix && !process.env.KV_KEY_PREFIX && (process.env.KV_KEY_PREFIX = g.kvKeyPrefix);
936
- let { kv: Ke, service: qe } = await at({ store: N });
937
+ let { kv: Ke, service: qe } = await it({ store: P });
937
938
  p.mark("store");
938
- let $e = P({
939
- store: N,
939
+ let Qe = Ue({
940
+ store: P,
940
941
  sink: D.sink,
941
942
  log: $
942
- }), et = pe({
943
- store: N,
943
+ }), $e = pe({
944
+ store: P,
944
945
  dialect: _
945
- }), L = g?.plugins ?? [], st = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, ct, lt;
946
- _ !== "memory" && (ct = Re.make((await n(_)).makeSqlLayer(T())), lt = await ct.runPromise(At.SqlClient));
947
- let ut = ot({
946
+ }), R = g?.plugins ?? [], ot = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, st, ct;
947
+ _ !== "memory" && (st = Le.make((await n(_)).makeSqlLayer(T())), ct = await st.runPromise(At.SqlClient));
948
+ let lt = at({
948
949
  coordinator: [
949
950
  "postgres",
950
951
  "mariadb",
951
952
  "mysql",
952
953
  "mssql"
953
- ].includes(_) ? tt(N, st, $) : Tt,
954
- replicaId: st,
954
+ ].includes(_) ? et(P, ot, $) : Tt,
955
+ replicaId: ot,
955
956
  log: $
956
- }), dt = [], ft = {
957
- ...lt ? { sql: lt } : {},
957
+ }), ut = [], dt = {
958
+ ...ct ? { sql: ct } : {},
958
959
  scheduleCoordinated: (e, t, n) => {
959
- let r = ut(e, t, n);
960
- return dt.push(r), r;
960
+ let r = lt(e, t, n);
961
+ return ut.push(r), r;
961
962
  }
962
963
  };
963
- for (let e of L) e.bindDataStore?.(N, ft);
964
- let pt = L.filter((e) => typeof e.onChangeEvent == "function");
965
- if (pt.length > 0) {
966
- let e = N.changeScope ?? "local";
967
- N.onChange((t) => {
964
+ for (let e of R) e.bindDataStore?.(P, dt);
965
+ let ft = R.filter((e) => typeof e.onChangeEvent == "function");
966
+ if (ft.length > 0) {
967
+ let e = P.changeScope ?? "local";
968
+ P.onChange((t) => {
968
969
  let n = y(t, e);
969
- for (let e of pt) A.runFork(e.onChangeEvent(n).pipe(A.catchAllCause((t) => A.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: Le.pretty(t) })))));
970
+ for (let e of ft) j.runFork(e.onChangeEvent(n).pipe(j.catchAllCause((t) => j.sync(() => $.warn(`plugin ${e.name} onChangeEvent failed`, { error: Ie.pretty(t) })))));
970
971
  });
971
972
  }
972
- let ht = me({
973
- plugins: L,
973
+ let mt = me({
974
+ plugins: R,
974
975
  appName: g?.name ?? "voltro-api",
975
976
  appType: "api",
976
977
  voltroVersion: process.env.npm_package_version ?? "0.0.0",
977
978
  log: $
978
979
  });
979
- L.length && await ht.activate(), p.mark("plugins");
980
- let gt = await ht.gatherObservability(), _t = await x(N, g, _, {
980
+ R.length && await mt.activate(), p.mark("plugins");
981
+ let ht = await mt.gatherObservability(), gt = await _e(P, g, _, {
981
982
  info: (e, t) => process.stdout.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
982
983
  warn: (e, t) => process.stderr.write(`[broadcast] ${e} ${t ? JSON.stringify(t) : ""}\n`),
983
984
  debug: () => {}
984
- }), R = g?.apiKeys, yt = (typeof R == "object" ? R.prefix : void 0) ?? "voltro_", bt = R ? Ye(N) : void 0, St = bt ? rt({ flush: it(bt) }) : void 0;
985
- St && vt(() => St.shutdown());
986
- let z = bt ? nt(bt, {
987
- prefix: yt,
988
- ...St ? { usage: St } : {}
989
- }) : void 0, wt = z ? [Qe(z, { prefix: yt })] : [], Et = Se([...g?.auth?.strategies ?? [], ...wt], $t(g?.plugins ?? []), g?.auth?.anonymousTenantRequired ?? !1, g?.auth?.resolveScopes, () => Be), Dt = [...g?.restRoutes ?? [], ...z ? Ve(z, (typeof R == "object" ? R.managementPath : void 0) ?? "/v1/api-keys") : []], B = g?.idempotency, kt = B ? {
990
- store: Xe(N),
985
+ }), z = g?.apiKeys, vt = (typeof z == "object" ? z.prefix : void 0) ?? "voltro_", yt = z ? Je(P) : void 0, xt = yt ? nt({ flush: rt(yt) }) : void 0;
986
+ xt && _t(() => xt.shutdown());
987
+ let Ct = yt ? tt(yt, {
988
+ prefix: vt,
989
+ ...xt ? { usage: xt } : {}
990
+ }) : void 0, wt = Ct ? [Ze(Ct, { prefix: vt })] : [], Et = Ce([...g?.auth?.strategies ?? [], ...wt], $t(g?.plugins ?? []), g?.auth?.anonymousTenantRequired ?? !1, g?.auth?.resolveScopes, () => ze), Dt = [...g?.restRoutes ?? [], ...Ct ? Be(Ct, (typeof z == "object" ? z.managementPath : void 0) ?? "/v1/api-keys") : []], B = g?.idempotency, kt = B ? {
991
+ store: Ye(P),
991
992
  header: (typeof B == "object" ? B.header : void 0) ?? "Idempotency-Key",
992
993
  ttlMs: (typeof B == "object" ? B.ttlMs : void 0) ?? 864e5
993
994
  } : void 0, jt = Dt.length > 0 ? tn(Dt, {
994
- store: N,
995
+ store: P,
995
996
  resolveSubject: (e) => Et({
996
997
  headers: e,
997
998
  clientId: -1
998
999
  }),
999
1000
  ...kt ? { idempotency: kt } : {}
1000
- }) : [], V = L.map((e) => e.services).filter((e) => e !== void 0), Nt = j.mergeAll(Ee({
1001
+ }) : [], V = R.map((e) => e.services).filter((e) => e !== void 0), Nt = M.mergeAll(Ee({
1001
1002
  analyticsLayer: D.layer,
1002
- cacheService: He,
1003
+ cacheService: Ve,
1003
1004
  kvService: qe,
1004
1005
  pluginServices: V,
1005
1006
  userLayers: g?.layers ?? []
@@ -1008,22 +1009,22 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1008
1009
  "mysql",
1009
1010
  "mariadb",
1010
1011
  "mssql"
1011
- ]), It = H.coordination ?? (Ft.has(_) ? "advisoryLock" : "single"), U = It === "cluster" && Ft.has(_), W = U ? "cluster" : It === "advisoryLock" && Ft.has(_) ? "advisoryLock" : "single";
1012
+ ]), It = H.coordination ?? (Ft.has(_) ? "advisoryLock" : "single"), U = It === "cluster" && Ft.has(_), Lt = U ? "cluster" : It === "advisoryLock" && Ft.has(_) ? "advisoryLock" : "single";
1012
1013
  It === "cluster" && !U && $.warn("scheduling.coordination=cluster needs a sql-backed store except sqlite — falling back to single"), It === "advisoryLock" && !Ft.has(_) && $.warn("scheduling.coordination=advisoryLock needs a SQL store (the claim-row gate) — falling back to single");
1013
- let G, K = S.workflows.length > 0 || S.workflowWorkers.length > 0 || S.eventTriggers.length > 0 || (w?.outgoing.length ?? 0) > 0 || U, Lt;
1014
- if (K) {
1014
+ let W, G = S.workflows.length > 0 || S.workflowWorkers.length > 0 || S.eventTriggers.length > 0 || (w?.outgoing.length ?? 0) > 0 || U, Rt;
1015
+ if (G) {
1015
1016
  if (_ === "mssql") {
1016
1017
  let e = await fe(process.cwd());
1017
1018
  e && $.warn(e);
1018
1019
  }
1019
1020
  let [{ WorkflowEngine: e }, { makeClusterCronLayer: t, workflowEngineLayer: r, resolveRunnerStorage: i }] = await Promise.all([import("@effect/workflow"), import("@voltro/workflow/cluster")]), a = U ? S.schedules.filter((e) => (e.trigger ?? Pt) === "self").map((e) => t({
1020
1021
  name: e.name,
1021
- cron: Je(e),
1022
+ cron: L(e),
1022
1023
  execute: async () => {
1023
- await G?.fireFromCluster(e.name);
1024
+ await W?.fireFromCluster(e.name);
1024
1025
  }
1025
1026
  })) : [];
1026
- Lt = _ === "memory" ? e.layerMemory : await (async () => {
1027
+ Rt = _ === "memory" ? e.layerMemory : await (async () => {
1027
1028
  let e = await n(_), t = i({ sqliteFamily: e.id === "sqlite" || e.id === "turso" });
1028
1029
  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)" : "") : "")), r({
1029
1030
  sqlClientLayer: e.makeSqlLayer(T()),
@@ -1034,13 +1035,13 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1034
1035
  });
1035
1036
  })();
1036
1037
  }
1037
- let Rt = je(L, t()), zt = b.filter((e) => /\.subscribe\.tsx?$/.test(e)), q = zt.length > 0 ? await ae(zt, $) : [], Bt = b.filter((e) => /\.reaction\.tsx?$/.test(e)), Vt = Bt.length > 0 ? await se(Bt, $) : [], J = b.filter((e) => u.test(e)), Ht = J.length > 0 ? await Me(J, $) : [], Ut = b.filter((e) => /\.aggregate\.tsx?$/.test(e)), Y = Ut.length > 0 ? await v(Ut, $) : [], X = ye();
1038
+ let zt = je(R, t()), Bt = b.filter((e) => /\.subscribe\.tsx?$/.test(e)), K = Bt.length > 0 ? await ae(Bt, $) : [], Vt = b.filter((e) => /\.reaction\.tsx?$/.test(e)), Ht = Vt.length > 0 ? await se(Vt, $) : [], q = b.filter((e) => u.test(e)), Ut = q.length > 0 ? await Me(q, $) : [], J = b.filter((e) => /\.aggregate\.tsx?$/.test(e)), Y = J.length > 0 ? await v(J, $) : [], X = ye();
1038
1039
  if (Y.length > 0 && _ !== "memory") try {
1039
1040
  X = f((await n(_)).makeSqlLayer(T()));
1040
1041
  } catch (e) {
1041
1042
  $.warn("aggregate: SQL storage init failed — falling back to in-process", { err: String(e) });
1042
1043
  }
1043
- let Wt = _ === "memory" ? Tt : tt(N, `aggregate@${process.pid}`, $), Z = [], Gt = [], Kt = b.filter((e) => l.test(e));
1044
+ let Wt = _ === "memory" ? Tt : et(P, `aggregate@${process.pid}`, $), Z = [], Gt = [], Kt = b.filter((e) => l.test(e));
1044
1045
  if (Kt.length > 0) {
1045
1046
  let e = $.child("agent"), t = b.filter((e) => a.test(e));
1046
1047
  t.length > 0 && await o(t, e);
@@ -1064,10 +1065,10 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1064
1065
  workflowWorkers: S.workflowWorkers,
1065
1066
  eventTriggers: S.eventTriggers,
1066
1067
  schedules: S.schedules,
1067
- subscribers: q,
1068
- outboxHandlers: Ht,
1068
+ subscribers: K,
1069
+ outboxHandlers: Ut,
1069
1070
  connections: S.connections,
1070
- reactions: Vt,
1071
+ reactions: Ht,
1071
1072
  aggregates: Y,
1072
1073
  ...w === void 0 ? {} : { webhooks: w }
1073
1074
  },
@@ -1075,11 +1076,11 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1075
1076
  analytics: D.sink,
1076
1077
  aggregateStorage: X,
1077
1078
  aggregateCoordinator: Wt,
1078
- store: N,
1079
+ store: P,
1079
1080
  kv: Ke,
1080
1081
  cache: F,
1081
1082
  snapshotCache: We,
1082
- schemaRegistry: M,
1083
+ schemaRegistry: N,
1083
1084
  tenantScopedTables: S.tenantScopedTables,
1084
1085
  softDeleteScopedTables: S.softDeleteScopedTables,
1085
1086
  dataTransferSnapshot: Xt(O),
@@ -1089,18 +1090,18 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1089
1090
  headers: e,
1090
1091
  clientId: t
1091
1092
  }),
1092
- httpRoutes: [...L.flatMap((e) => e.httpRoutes ?? []), ...jt],
1093
- getStore: () => Be,
1093
+ httpRoutes: [...R.flatMap((e) => e.httpRoutes ?? []), ...jt],
1094
+ getStore: () => ze,
1094
1095
  ...Nt ? { baseLayer: Nt } : {},
1095
- ...Lt === void 0 ? {} : { workflowEngineLayer: Lt },
1096
+ ...Rt === void 0 ? {} : { workflowEngineLayer: Rt },
1096
1097
  scheduleDefaultTrigger: Pt,
1097
- scheduleCoordination: W,
1098
+ scheduleCoordination: Lt,
1098
1099
  scheduleArmSelf: !U,
1099
1100
  dormancy: process.env.VOLTRO_DORMANCY === "sleep" || process.env.VOLTRO_DORMANCY === "always-on" ? process.env.VOLTRO_DORMANCY : g?.dormancy ?? "always-on",
1100
1101
  scheduleReplicaId: process.env.HOSTNAME ?? `pid-${process.pid}`,
1101
- ...Rt === void 0 ? {} : { scheduleFireInterceptor: Rt },
1102
+ ...zt === void 0 ? {} : { scheduleFireInterceptor: zt },
1102
1103
  onSchedulerReady: (e) => {
1103
- G = e;
1104
+ W = e;
1104
1105
  },
1105
1106
  inspectRoute: { handle: (e, t, n, r) => d(e, {
1106
1107
  kind: "api",
@@ -1112,11 +1113,11 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1112
1113
  store: _,
1113
1114
  cdc: ce ? "on" : "off"
1114
1115
  },
1115
- rpc: C(S, m),
1116
+ rpc: be(S, m),
1116
1117
  workflows: Oe(S, m),
1117
1118
  inspectFireSchedule: async ({ name: e, trigger: t }) => {
1118
- if (!G) throw Error("scheduler not started — this app registers no self-triggered schedules (all schedules are trigger:'external', or there are none).");
1119
- return { runId: await G.fireNow(e, t) ?? null };
1119
+ if (!W) throw Error("scheduler not started — this app registers no self-triggered schedules (all schedules are trigger:'external', or there are none).");
1120
+ return { runId: await W.fireNow(e, t) ?? null };
1120
1121
  }
1121
1122
  }, t, {
1122
1123
  method: n,
@@ -1126,11 +1127,11 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1126
1127
  contentType: "application/json",
1127
1128
  body: JSON.stringify({ error: "not an inspect route" })
1128
1129
  } },
1129
- observability: gt,
1130
+ observability: ht,
1130
1131
  port: ne,
1131
1132
  ...g?.transport?.wsPath ? { path: g.transport.wsPath } : {}
1132
1133
  });
1133
- return E(oe([
1134
+ return Se(oe([
1134
1135
  S.queries,
1135
1136
  S.mutations,
1136
1137
  S.actions,
@@ -1146,12 +1147,12 @@ var hn = "VoltroBootRefusal", gn = (e) => {
1146
1147
  workflows: S.workflows.length,
1147
1148
  workflowWorkers: S.workflowWorkers.length,
1148
1149
  schedules: S.schedules.length,
1149
- scheduleCoordination: W
1150
- }), p.finish($), vt(async () => {
1151
- for (let e of dt) e.stop();
1152
- $e.detach(), et.stop(), I(), ct?.dispose();
1150
+ scheduleCoordination: Lt
1151
+ }), p.finish($), _t(async () => {
1152
+ for (let e of ut) e.stop();
1153
+ Qe.detach(), $e.stop(), I(), st?.dispose();
1153
1154
  try {
1154
- await ht.deactivate(), await _t?.close(), await D.dispose(), await Jt.close(), await N.close?.();
1155
+ await mt.deactivate(), await gt?.close(), await D.dispose(), await Jt.close(), await P.close?.();
1155
1156
  } catch (e) {
1156
1157
  console.error("serve: shutdown step failed, exiting anyway:", e);
1157
1158
  }