@voltro/runtime 0.9.0 → 0.10.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.
package/dist/index.js CHANGED
@@ -1,24 +1,24 @@
1
- import { ENCRYPTED_PREFIX as e, and as t, attachEagerLoads as n, boolean as r, clearRetentions as i, collectSubqueries as a, contains as o, decryptFieldsOnRead as s, deserializeArraysOnRead as c, encryptFieldsForWrite as l, eq as u, evaluatePredicate as d, generateId as f, getRelations as p, getTable as m, gt as h, gte as g, hasEagerLoads as _, id as v, inSet as y, integer as b, isEncrypted as x, isNull as S, json as C, listRetentions as ee, lt as w, lte as te, neq as T, or as ne, queryFor as re, registerRetention as ie, requireTable as ae, retentionTtlMsFromEnv as oe, serializeArraysForWrite as se, sweepRetention as ce, table as E, text as D, timestamp as O, walkLeaves as le } from "@voltro/database";
2
- import { createCipheriv as ue, createDecipheriv as de, createHash as fe, randomBytes as pe, randomUUID as me, scryptSync as he } from "node:crypto";
3
- import { EventEmitter as ge } from "node:events";
4
- import { ADMIN_SCOPE as _e, ConnectionHandshakeFailed as k, ConnectionInfo as ve, ConnectionKindMismatch as ye, ConnectionNotDeclared as be, ConnectionSubjectRequired as xe, SubjectService as Se, UndoConflict as Ce, UndoForbidden as we, UndoNotFound as Te, WorkflowRunHandleSchema as Ee, checkGuardsEffect as De, diffRows as Oe, effectiveScopes as ke, hasEffectiveScope as Ae, isIdKeyed as je, publishServerError as Me, requireScope as Ne, setPolicyGuardResolver as Pe, systemSubject as Fe, tsMs as Ie } from "@voltro/protocol";
5
- import { createLogger as A } from "@voltro/logger";
6
- import { Cause as j, Clock as Le, Context as Re, Cron as ze, Deferred as Be, Duration as Ve, Effect as M, Either as He, Exit as Ue, Layer as N, ManagedRuntime as We, Metric as P, MetricBoundaries as Ge, MetricState as Ke, Option as F, Ref as I, Schedule as qe, Schema as L, Stream as R, Tracer as Je } from "effect";
7
- import * as Ye from "node:http";
8
- import { createServer as Xe } from "node:http";
9
- import { HttpClient as Ze, HttpClientRequest as Qe, HttpLayerRouter as z, HttpServer as $e, HttpServerRequest as et, HttpServerResponse as B } from "@effect/platform";
10
- import { NodeContext as tt, NodeHttpServer as nt, NodeRuntime as rt } from "@effect/platform-node";
11
- import { Rpc as it, RpcSerialization as at, RpcServer as ot } from "@effect/rpc";
12
- import { defineRestRoute as st, dispatchSharedPath as ct, requireScope as lt } from "@voltro/protocol/rest";
13
- import { AsyncLocalStorage as ut } from "node:async_hooks";
14
- import { SpanKind as dt, SpanStatusCode as ft } from "@opentelemetry/api";
15
- import { Kv as pt, KvError as mt, KvStore as ht, layerConnections as gt, layerMemory as _t, layerRedis as vt } from "@voltro/kv";
16
- import { apiKeyStrategy as yt } from "@voltro/protocol/apikey";
17
- import { getCurrentWorkflowExecutionId as bt, inspectWorkflow as xt } from "@voltro/workflow";
18
- import { ArrayFormatter as St } from "effect/ParseResult";
19
- import { spawn as Ct } from "node:child_process";
1
+ import { ENCRYPTED_PREFIX as e, and as t, attachEagerLoads as n, boolean as r, clearRetentions as i, collectSubqueries as a, contains as o, decryptFieldsOnRead as s, deserializeArraysOnRead as c, encryptFieldsForWrite as l, eq as u, evaluatePredicate as d, generateId as f, getRelations as p, getTable as m, gt as h, gte as g, hasEagerLoads as _, id as v, inSet as y, integer as b, isEncrypted as x, isNull as S, json as C, listRetentions as ee, lt as te, lte as ne, neq as w, or as re, queryFor as ie, raiseChangeListenerCeiling as ae, registerRetention as oe, requireTable as se, retentionTtlMsFromEnv as ce, serializeArraysForWrite as le, sweepRetention as ue, table as T, text as E, timestamp as D, walkLeaves as de } from "@voltro/database";
2
+ import { createCipheriv as fe, createDecipheriv as pe, createHash as me, randomBytes as he, randomUUID as ge, scryptSync as _e } from "node:crypto";
3
+ import { EventEmitter as ve } from "node:events";
4
+ import { ADMIN_SCOPE as ye, ConnectionHandshakeFailed as O, ConnectionInfo as be, ConnectionKindMismatch as xe, ConnectionNotDeclared as Se, ConnectionSubjectRequired as Ce, SubjectService as we, UndoConflict as Te, UndoForbidden as Ee, UndoNotFound as De, WorkflowRunHandleSchema as Oe, checkGuardsEffect as ke, diffRows as Ae, effectiveScopes as je, hasEffectiveScope as Me, isIdKeyed as Ne, publishServerError as Pe, requireScope as Fe, setPolicyGuardResolver as Ie, systemSubject as Le, tsMs as Re } from "@voltro/protocol";
5
+ import { createLogger as k } from "@voltro/logger";
6
+ import { Cause as A, Clock as ze, Context as Be, Cron as j, Deferred as Ve, Duration as He, Effect as M, Either as Ue, Exit as We, Layer as N, ManagedRuntime as Ge, Metric as P, MetricBoundaries as Ke, MetricState as qe, Option as F, Ref as I, Schedule as Je, Schema as L, Stream as R, Tracer as Ye } from "effect";
7
+ import * as Xe from "node:http";
8
+ import { createServer as Ze } from "node:http";
9
+ import { HttpClient as Qe, HttpClientRequest as $e, HttpLayerRouter as z, HttpServer as et, HttpServerRequest as tt, HttpServerResponse as B } from "@effect/platform";
10
+ import { NodeContext as nt, NodeHttpServer as rt, NodeRuntime as it } from "@effect/platform-node";
11
+ import { Rpc as at, RpcSerialization as ot, RpcServer as st } from "@effect/rpc";
12
+ import { defineRestRoute as ct, dispatchSharedPath as lt, requireScope as ut } from "@voltro/protocol/rest";
13
+ import { AsyncLocalStorage as dt } from "node:async_hooks";
14
+ import { SpanKind as ft, SpanStatusCode as pt } from "@opentelemetry/api";
15
+ import { Kv as mt, KvError as ht, KvStore as gt, layerConnections as _t, layerMemory as vt, layerRedis as yt } from "@voltro/kv";
16
+ import { apiKeyStrategy as bt } from "@voltro/protocol/apikey";
17
+ import { getCurrentWorkflowExecutionId as xt, inspectWorkflow as St } from "@voltro/workflow";
18
+ import { ArrayFormatter as Ct } from "effect/ParseResult";
19
+ import { spawn as wt } from "node:child_process";
20
20
  //#region src/matcher.ts
21
- var wt = class {
21
+ var Tt = class {
22
22
  byTable = /* @__PURE__ */ new Map();
23
23
  register(e) {
24
24
  let t = this.byTable.get(e.table);
@@ -59,9 +59,9 @@ var wt = class {
59
59
  });
60
60
  return { perTable: e };
61
61
  }
62
- }, Tt = (e) => {
62
+ }, Et = (e) => {
63
63
  let t = [];
64
- for (let n of le(e)) n.conjunctive && n.path === void 0 && (n.op === "eq" && t.push({
64
+ for (let n of de(e)) n.conjunctive && n.path === void 0 && (n.op === "eq" && t.push({
65
65
  column: n.column,
66
66
  values: [n.value]
67
67
  }), n.op === "in" && t.push({
@@ -69,18 +69,18 @@ var wt = class {
69
69
  values: n.value
70
70
  }));
71
71
  return t;
72
- }, Et = (e) => {
72
+ }, Dt = (e) => {
73
73
  let t = [];
74
- for (let n of le(e)) n.conjunctive && n.path === void 0 && (n.op === "gt" || n.op === "gte" || n.op === "lt" || n.op === "lte") && t.push({
74
+ for (let n of de(e)) n.conjunctive && n.path === void 0 && (n.op === "gt" || n.op === "gte" || n.op === "lt" || n.op === "lte") && t.push({
75
75
  column: n.column,
76
76
  op: n.op,
77
77
  threshold: n.value
78
78
  });
79
79
  return t;
80
- }, Dt = (e, t) => {
81
- for (let n of le(e)) if (n.conjunctive && n.path === void 0 && n.op === "eq" && n.column === t) return n.value;
82
- return null;
83
80
  }, Ot = (e, t) => {
81
+ for (let n of de(e)) if (n.conjunctive && n.path === void 0 && n.op === "eq" && n.column === t) return n.value;
82
+ return null;
83
+ }, kt = (e, t) => {
84
84
  let n = [];
85
85
  for (let r of e) {
86
86
  let e = t(r);
@@ -88,8 +88,8 @@ var wt = class {
88
88
  n.push(`${typeof e}:${String(e)}`);
89
89
  }
90
90
  return n.join("|");
91
- }, kt = (e, t) => e === null || t === null ? null : e === t ? 0 : typeof e == typeof t ? e > t ? 1 : -1 : null, At = (e, t, n) => {
92
- let r = kt(e, n);
91
+ }, At = (e, t) => e === null || t === null ? null : e === t ? 0 : typeof e == typeof t ? e > t ? 1 : -1 : null, jt = (e, t, n) => {
92
+ let r = At(e, n);
93
93
  if (r === null) return !1;
94
94
  switch (t) {
95
95
  case "gt": return r > 0;
@@ -97,7 +97,7 @@ var wt = class {
97
97
  case "lt": return r < 0;
98
98
  case "lte": return r <= 0;
99
99
  }
100
- }, jt = class {
100
+ }, Mt = class {
101
101
  columnByTable = /* @__PURE__ */ new Map();
102
102
  rangeByTable = /* @__PURE__ */ new Map();
103
103
  tupleByTable = /* @__PURE__ */ new Map();
@@ -105,9 +105,9 @@ var wt = class {
105
105
  subscriptions = /* @__PURE__ */ new Map();
106
106
  register(e) {
107
107
  this.columnByTable.has(e.table) || this.columnByTable.set(e.table, /* @__PURE__ */ new Map()), this.rangeByTable.has(e.table) || this.rangeByTable.set(e.table, /* @__PURE__ */ new Map()), this.tupleByTable.has(e.table) || this.tupleByTable.set(e.table, /* @__PURE__ */ new Map()), this.unindexedByTable.has(e.table) || this.unindexedByTable.set(e.table, /* @__PURE__ */ new Set());
108
- let t = Tt(e.predicate), n = Et(e.predicate);
108
+ let t = Et(e.predicate), n = Dt(e.predicate);
109
109
  if (e.usingIndex !== void 0) {
110
- let r = e.usingIndex, i = Ot(r.fields, (t) => Dt(e.predicate, t));
110
+ let r = e.usingIndex, i = kt(r.fields, (t) => Ot(e.predicate, t));
111
111
  if (i !== null) {
112
112
  let a = `${r.name}|${i}`, o = this.tupleByTable.get(e.table), s = o.get(a);
113
113
  s || (s = /* @__PURE__ */ new Set(), o.set(a, s)), s.add(e.id), this.subscriptions.set(e.id, {
@@ -252,7 +252,7 @@ var wt = class {
252
252
  }
253
253
  }
254
254
  for (let [e, a] of i) {
255
- let i = Ot(a, (e) => t[e]);
255
+ let i = kt(a, (e) => t[e]);
256
256
  if (i === null) continue;
257
257
  let o = r.get(`${e}|${i}`);
258
258
  if (o) for (let e of o) n.add(e);
@@ -266,7 +266,7 @@ var wt = class {
266
266
  let a = this.rangeByTable.get(e);
267
267
  if (a) for (let [e, r] of a) {
268
268
  let i = t[e];
269
- if (i !== null) for (let [e, t] of r) for (let r of t) At(i, e, r.threshold) && n.add(r.subId);
269
+ if (i !== null) for (let [e, t] of r) for (let r of t) jt(i, e, r.threshold) && n.add(r.subId);
270
270
  }
271
271
  return n;
272
272
  }
@@ -275,7 +275,7 @@ var wt = class {
275
275
  let e = t[n.column];
276
276
  if (n.kind === "eq") {
277
277
  if (e !== n.value) return !1;
278
- } else if (!At(e, n.op, n.threshold)) return !1;
278
+ } else if (!jt(e, n.op, n.threshold)) return !1;
279
279
  }
280
280
  return !0;
281
281
  }
@@ -297,23 +297,23 @@ var wt = class {
297
297
  }
298
298
  return i;
299
299
  }
300
- }, Mt = (e) => {
300
+ }, Nt = (e) => {
301
301
  if (e == null) return null;
302
- if (Array.isArray(e)) return e.map(Mt);
302
+ if (Array.isArray(e)) return e.map(Nt);
303
303
  if (typeof e == "object") {
304
304
  let t = e, n = Object.keys(t).sort(), r = {};
305
- for (let e of n) r[e] = Mt(t[e]);
305
+ for (let e of n) r[e] = Nt(t[e]);
306
306
  return r;
307
307
  }
308
308
  return e;
309
- }, Nt = (e, t, n) => {
310
- let r = Mt({
309
+ }, Pt = (e, t, n) => {
310
+ let r = Nt({
311
311
  table: e,
312
312
  predicate: t,
313
313
  indexHint: n ?? null
314
314
  });
315
- return fe("sha256").update(JSON.stringify(r)).digest("hex").slice(0, 16);
316
- }, Pt = class {
315
+ return me("sha256").update(JSON.stringify(r)).digest("hex").slice(0, 16);
316
+ }, Ft = class {
317
317
  matcher;
318
318
  byFingerprint = /* @__PURE__ */ new Map();
319
319
  byClient = /* @__PURE__ */ new Map();
@@ -332,7 +332,7 @@ var wt = class {
332
332
  } catch {}
333
333
  }
334
334
  subscribe(e, t, n, r) {
335
- let i = Nt(t, n, r?.name), a = this.byFingerprint.get(i);
335
+ let i = Pt(t, n, r?.name), a = this.byFingerprint.get(i);
336
336
  return a ? (a.subscribers.add(e), this.byClient.set(e, i), this.notifyChange(), {
337
337
  fingerprint: i,
338
338
  deduplicated: !0
@@ -390,7 +390,7 @@ var wt = class {
390
390
  });
391
391
  return e;
392
392
  }
393
- }, Ft = (e, t) => t.length === 0 ? e : [...e].sort((e, n) => {
393
+ }, It = (e, t) => t.length === 0 ? e : [...e].sort((e, n) => {
394
394
  for (let r of t) {
395
395
  let t = e[r.column], i = n[r.column];
396
396
  if (t === i) continue;
@@ -400,7 +400,7 @@ var wt = class {
400
400
  return r.direction === "asc" ? a : -a;
401
401
  }
402
402
  return 0;
403
- }), It = (e, t, n) => {
403
+ }), Lt = (e, t, n) => {
404
404
  let r = t.split("."), i = r[0], a = r.slice(1), o = (e) => typeof e == "object" && !!e && !Array.isArray(e), s = e[i], c;
405
405
  if (a.length === 0) c = o(s) && o(n) ? {
406
406
  ...s,
@@ -418,11 +418,11 @@ var wt = class {
418
418
  ...e,
419
419
  [i]: c
420
420
  };
421
- }, Lt = (e, t, n) => !e || d(e, t, n), V = (e, t) => {
421
+ }, Rt = (e, t, n) => !e || d(e, t, n), V = (e, t) => {
422
422
  let n = /* @__PURE__ */ new Map();
423
423
  if (!e) return n;
424
424
  for (let r of a(e)) {
425
- let e = t.get(r.descriptor.table) ?? /* @__PURE__ */ new Map(), i = V(r.descriptor.predicate, t), a = Rt(r.descriptor, e, t, i);
425
+ let e = t.get(r.descriptor.table) ?? /* @__PURE__ */ new Map(), i = V(r.descriptor.predicate, t), a = zt(r.descriptor, e, t, i);
426
426
  if (r.kind === "exists") n.set(r.descriptor, a.length);
427
427
  else {
428
428
  let e = r.descriptor.projection, t = /* @__PURE__ */ new Set();
@@ -437,15 +437,15 @@ var wt = class {
437
437
  }
438
438
  }
439
439
  return n;
440
- }, Rt = (e, t, n = /* @__PURE__ */ new Map(), r = null) => {
441
- let i = r ?? V(e.predicate, n), a = [...t.values()].filter((t) => Lt(e.predicate, t, i));
440
+ }, zt = (e, t, n = /* @__PURE__ */ new Map(), r = null) => {
441
+ let i = r ?? V(e.predicate, n), a = [...t.values()].filter((t) => Rt(e.predicate, t, i));
442
442
  if (e.aggregations && e.aggregations.length > 0) {
443
- let t = zt(a, e.aggregations, e.groupBy);
443
+ let t = Bt(a, e.aggregations, e.groupBy);
444
444
  if (!e.having) return t;
445
445
  let r = V(e.having, n);
446
- return t.filter((t) => Lt(e.having, t, r));
446
+ return t.filter((t) => Rt(e.having, t, r));
447
447
  }
448
- let o = Ft(a, e.order), s = e.skip ? o.slice(e.skip) : o, c = e.take === void 0 ? s : s.slice(0, e.take);
448
+ let o = It(a, e.order), s = e.skip ? o.slice(e.skip) : o, c = e.take === void 0 ? s : s.slice(0, e.take);
449
449
  if (!e.projection) return c;
450
450
  let l = e.projection;
451
451
  return c.map((e) => {
@@ -453,7 +453,7 @@ var wt = class {
453
453
  for (let n of l) t[n] = e[n];
454
454
  return t;
455
455
  });
456
- }, zt = (e, t, n) => {
456
+ }, Bt = (e, t, n) => {
457
457
  let r = /* @__PURE__ */ new Map();
458
458
  for (let t of e) {
459
459
  let e = {};
@@ -471,11 +471,11 @@ var wt = class {
471
471
  let i = [];
472
472
  for (let e of r.values()) {
473
473
  let n = { ...e.keyVals };
474
- for (let r of t) n[r.alias] = Bt(r, e.rows);
474
+ for (let r of t) n[r.alias] = Vt(r, e.rows);
475
475
  i.push(n);
476
476
  }
477
477
  return i;
478
- }, Bt = (e, t) => {
478
+ }, Vt = (e, t) => {
479
479
  switch (e.op) {
480
480
  case "count": return e.column === void 0 ? t.length : t.reduce((t, n) => t + +(n[e.column] !== null && n[e.column] !== void 0), 0);
481
481
  case "count-distinct": {
@@ -519,7 +519,7 @@ var wt = class {
519
519
  }
520
520
  default: throw Error(`computeAggregates: unknown op '${e.op}'`);
521
521
  }
522
- }, Vt = "\0", Ht = (e, t) => e === null ? t : `${e}${Vt}${t}`, Ut = class e {
522
+ }, Ht = "\0", Ut = (e, t) => e === null ? t : `${e}${Ht}${t}`, Wt = class e {
523
523
  #e;
524
524
  #t;
525
525
  #n;
@@ -529,13 +529,13 @@ var wt = class {
529
529
  return r.#e = t.tables, r.#t = t.emitter, r.#n = t.numericCounters, r;
530
530
  }
531
531
  constructor(e, t = null) {
532
- if (this.#r = t, this.#e = /* @__PURE__ */ new Map(), this.#t = new ge(), this.#n = /* @__PURE__ */ new Map(), e) for (let [n, r] of Object.entries(e)) {
532
+ if (this.#r = t, this.#e = /* @__PURE__ */ new Map(), this.#t = new ve(), ae(this.#t), this.#n = /* @__PURE__ */ new Map(), e) for (let [n, r] of Object.entries(e)) {
533
533
  let e = /* @__PURE__ */ new Map();
534
534
  for (let t of r) {
535
535
  let n = t.id;
536
536
  n && e.set(n, t);
537
537
  }
538
- this.#e.set(Ht(t, n), e);
538
+ this.#e.set(Ut(t, n), e);
539
539
  }
540
540
  }
541
541
  withNamespace(t) {
@@ -546,11 +546,11 @@ var wt = class {
546
546
  }, t);
547
547
  }
548
548
  #a(e) {
549
- return Ht(this.#r, e);
549
+ return Ut(this.#r, e);
550
550
  }
551
551
  #o() {
552
- let e = /* @__PURE__ */ new Map(), t = this.#r === null ? null : `${this.#r}${Vt}`;
553
- for (let [n, r] of this.#e) t === null ? n.includes(Vt) || e.set(n, r) : n.startsWith(t) && e.set(n.slice(t.length), r);
552
+ let e = /* @__PURE__ */ new Map(), t = this.#r === null ? null : `${this.#r}${Ht}`;
553
+ for (let [n, r] of this.#e) t === null ? n.includes(Ht) || e.set(n, r) : n.startsWith(t) && e.set(n.slice(t.length), r);
554
554
  return e;
555
555
  }
556
556
  #s(e) {
@@ -558,8 +558,8 @@ var wt = class {
558
558
  return n || (n = /* @__PURE__ */ new Map(), this.#e.set(t, n)), n;
559
559
  }
560
560
  async query(e) {
561
- let t = Rt(e, this.#e.get(this.#a(e.table)) ?? /* @__PURE__ */ new Map(), this.#o());
562
- return _(e) ? n(t, e.eager, ae(e.table), (e) => this.query(e)) : t;
561
+ let t = zt(e, this.#e.get(this.#a(e.table)) ?? /* @__PURE__ */ new Map(), this.#o());
562
+ return _(e) ? n(t, e.eager, se(e.table), (e) => this.query(e)) : t;
563
563
  }
564
564
  async insert(e, t) {
565
565
  let n = t;
@@ -588,7 +588,7 @@ var wt = class {
588
588
  if (!i) return null;
589
589
  let a = i.get(t);
590
590
  if (!a) return null;
591
- let o = It(a, n, r);
591
+ let o = Lt(a, n, r);
592
592
  return i.set(t, o), this.#t.emit("change", {
593
593
  table: e,
594
594
  op: "update",
@@ -688,7 +688,7 @@ var wt = class {
688
688
  }
689
689
  }
690
690
  async transactional(e) {
691
- let t = new Wt(this.#u());
691
+ let t = new Gt(this.#u());
692
692
  try {
693
693
  let n = await e(t);
694
694
  return t.commit(), n;
@@ -724,7 +724,7 @@ var wt = class {
724
724
  allocateNumericId: (e) => this.#c(e)
725
725
  };
726
726
  }
727
- }, Wt = class {
727
+ }, Gt = class {
728
728
  parent;
729
729
  overlay = /* @__PURE__ */ new Map();
730
730
  tombstones = /* @__PURE__ */ new Map();
@@ -754,8 +754,8 @@ var wt = class {
754
754
  return t || (t = /* @__PURE__ */ new Map(), this.overlay.set(e, t)), t;
755
755
  }
756
756
  async query(e) {
757
- let t = this.buildTablesView(e), r = Rt(e, this.materialise(e.table), t);
758
- return _(e) ? n(r, e.eager, ae(e.table), (e) => this.query(e)) : r;
757
+ let t = this.buildTablesView(e), r = zt(e, this.materialise(e.table), t);
758
+ return _(e) ? n(r, e.eager, se(e.table), (e) => this.query(e)) : r;
759
759
  }
760
760
  async insert(e, t) {
761
761
  let n = t;
@@ -793,7 +793,7 @@ var wt = class {
793
793
  async patchJson(e, t, n, r) {
794
794
  let i = this.materialise(e).get(t);
795
795
  if (!i) return null;
796
- let a = It(i, n, r);
796
+ let a = Lt(i, n, r);
797
797
  return this.getOrCreateOverlay(e).set(t, a), this.events.push({
798
798
  table: e,
799
799
  op: "update",
@@ -894,7 +894,7 @@ var wt = class {
894
894
  discard() {
895
895
  this.settled || (this.settled = !0, this.overlay.clear(), this.tombstones.clear(), this.events.length = 0);
896
896
  }
897
- }, Gt = (e) => {
897
+ }, Kt = (e) => {
898
898
  let t = {}, n = [], r = e;
899
899
  for (let e = 0; e < 8 && typeof r == "object" && r; e++) {
900
900
  let e = r;
@@ -905,23 +905,23 @@ var wt = class {
905
905
  (o || s) && n.push(`${o || "Error"}${s ? `: ${s.slice(0, 200)}` : ""}`), r = e.cause;
906
906
  }
907
907
  return n.length > 0 && (t.dbCauseChain = n.join(" ← "), t.dbMessage === void 0 && (t.dbMessage = n[n.length - 1])), t;
908
- }, Kt = (e) => {
908
+ }, qt = (e) => {
909
909
  let t = e.dbCode;
910
910
  return t === "23503" || e.dbErrno === 1452 || t === 547 || t === "SQLITE_CONSTRAINT_FOREIGNKEY";
911
- }, qt = (e) => ({
912
- has: (t) => Ae(e, t),
913
- hasAny: (t) => t.some((t) => Ae(e, t)),
914
- require: (t) => Ne(e, t),
911
+ }, Jt = (e) => ({
912
+ has: (t) => Me(e, t),
913
+ hasAny: (t) => t.some((t) => Me(e, t)),
914
+ require: (t) => Fe(e, t),
915
915
  get scopes() {
916
- return ke(e);
916
+ return je(e);
917
917
  }
918
- }), Jt = (e) => {
918
+ }), Yt = (e) => {
919
919
  let t = /* @__PURE__ */ new Set();
920
- return Yt(e, t), t;
921
- }, Yt = (e, t) => {
922
- if (t.add(e.table), e.eager !== void 0 && Xt(e.table, e.eager, t), e.setOp !== void 0) for (let n of e.setOp.queries) Yt(n, t);
923
- if (e.ctes !== void 0) for (let n of e.ctes) Yt(n.descriptor, t);
924
- }, Xt = (e, t, n) => {
920
+ return Xt(e, t), t;
921
+ }, Xt = (e, t) => {
922
+ if (t.add(e.table), e.eager !== void 0 && Zt(e.table, e.eager, t), e.setOp !== void 0) for (let n of e.setOp.queries) Xt(n, t);
923
+ if (e.ctes !== void 0) for (let n of e.ctes) Xt(n.descriptor, t);
924
+ }, Zt = (e, t, n) => {
925
925
  let r = p(e);
926
926
  if (r !== void 0) for (let [e, i] of Object.entries(t)) {
927
927
  let t = r[e];
@@ -929,24 +929,24 @@ var wt = class {
929
929
  let a = i === !0 ? {} : i;
930
930
  if (t.kind === "manyToMany") {
931
931
  let e = t.through().tableName, r = t.target().tableName;
932
- n.add(e), n.add(r), a.with !== void 0 && Xt(r, a.with, n);
932
+ n.add(e), n.add(r), a.with !== void 0 && Zt(r, a.with, n);
933
933
  } else {
934
934
  let e = t.target().tableName;
935
- n.add(e), a.with !== void 0 && Xt(e, a.with, n);
935
+ n.add(e), a.with !== void 0 && Zt(e, a.with, n);
936
936
  }
937
937
  }
938
- }, Zt = (e) => e.setOp !== void 0 || e.ctes !== void 0 && e.ctes.length > 0 || e.aggregations !== void 0 && e.aggregations.some((e) => e.op.startsWith("window-")), Qt = /* @__PURE__ */ new Set(["*"]), $t = (e, t) => {
938
+ }, Qt = (e) => e.setOp !== void 0 || e.ctes !== void 0 && e.ctes.length > 0 || e.aggregations !== void 0 && e.aggregations.some((e) => e.op.startsWith("window-")), $t = /* @__PURE__ */ new Set(["*"]), en = (e, t) => {
939
939
  if (e !== void 0) {
940
940
  if ("not" in e) {
941
- $t(e.not, t);
941
+ en(e.not, t);
942
942
  return;
943
943
  }
944
944
  if ("and" in e) {
945
- for (let n of e.and) $t(n, t);
945
+ for (let n of e.and) en(n, t);
946
946
  return;
947
947
  }
948
948
  if ("or" in e) {
949
- for (let n of e.or) $t(n, t);
949
+ for (let n of e.or) en(n, t);
950
950
  return;
951
951
  }
952
952
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
@@ -959,7 +959,7 @@ var wt = class {
959
959
  let r = e.get(t);
960
960
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r));
961
961
  for (let e of n) r.add(e);
962
- }, en = (e, t, n) => {
962
+ }, tn = (e, t, n) => {
963
963
  let r = p(e);
964
964
  if (r !== void 0) for (let [i, a] of Object.entries(t)) {
965
965
  let t = r[i];
@@ -967,65 +967,65 @@ var wt = class {
967
967
  let o = a === !0 ? {} : a;
968
968
  if (t.kind === "manyToMany") {
969
969
  let r = t.through(), i = t.target();
970
- H(n, r.tableName, [t.sourceKey, t.targetKey]), H(n, e, ["id"]), H(n, i.tableName, ["id"]), tn(i.tableName, o, n), o.with !== void 0 && en(i.tableName, o.with, n);
970
+ H(n, r.tableName, [t.sourceKey, t.targetKey]), H(n, e, ["id"]), H(n, i.tableName, ["id"]), nn(i.tableName, o, n), o.with !== void 0 && tn(i.tableName, o.with, n);
971
971
  continue;
972
972
  }
973
973
  let s = t.target();
974
- t.foreignKey !== void 0 && H(n, s.tableName, [t.foreignKey]), t.sourceKey === void 0 ? H(n, e, ["id"]) : H(n, e, [t.sourceKey]), H(n, s.tableName, ["id"]), tn(s.tableName, o, n), o.with !== void 0 && en(s.tableName, o.with, n);
974
+ t.foreignKey !== void 0 && H(n, s.tableName, [t.foreignKey]), t.sourceKey === void 0 ? H(n, e, ["id"]) : H(n, e, [t.sourceKey]), H(n, s.tableName, ["id"]), nn(s.tableName, o, n), o.with !== void 0 && tn(s.tableName, o.with, n);
975
975
  }
976
- }, tn = (e, t, n) => {
976
+ }, nn = (e, t, n) => {
977
977
  if (t.where !== void 0) {
978
978
  let r = /* @__PURE__ */ new Set();
979
- $t(t.where, r), H(n, e, r);
979
+ en(t.where, r), H(n, e, r);
980
980
  }
981
981
  t.orderBy !== void 0 && H(n, e, t.orderBy.map((e) => e.column));
982
982
  let r = m(e);
983
983
  r === void 0 ? H(n, e, ["*"]) : H(n, e, Object.keys(r.fields));
984
- }, nn = (e) => {
984
+ }, rn = (e) => {
985
985
  let t = /* @__PURE__ */ new Map();
986
- if (Zt(e)) {
987
- for (let n of Jt(e)) H(t, n, ["*"]);
986
+ if (Qt(e)) {
987
+ for (let n of Yt(e)) H(t, n, ["*"]);
988
988
  return t;
989
989
  }
990
990
  let n = /* @__PURE__ */ new Set();
991
991
  if (e.projection !== void 0) for (let t of e.projection) n.add(t);
992
992
  else n.add("*");
993
- $t(e.predicate, n);
993
+ en(e.predicate, n);
994
994
  for (let t of e.order) n.add(t.column);
995
- return H(t, e.table, n), e.eager !== void 0 && en(e.table, e.eager, t), t;
996
- }, rn = (e) => {
997
- if (e.op === "insert" || e.op === "delete" || e.old === null || e.new === null) return Qt;
995
+ return H(t, e.table, n), e.eager !== void 0 && tn(e.table, e.eager, t), t;
996
+ }, an = (e) => {
997
+ if (e.op === "insert" || e.op === "delete" || e.old === null || e.new === null) return $t;
998
998
  let t = /* @__PURE__ */ new Set(), n = e.old, r = e.new, i = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(r)]);
999
999
  for (let e of i) Object.is(n[e], r[e]) || t.add(e);
1000
1000
  return t;
1001
- }, an = (e, t) => {
1001
+ }, on = (e, t) => {
1002
1002
  let n = t.get(e.table);
1003
1003
  if (n === void 0) return !1;
1004
1004
  if (n.has("*")) return !0;
1005
- let r = rn(e);
1005
+ let r = an(e);
1006
1006
  if (r.has("*")) return !0;
1007
1007
  for (let e of r) if (n.has(e)) return !0;
1008
1008
  return !1;
1009
- }, on = Ge.exponential({
1009
+ }, sn = Ke.exponential({
1010
1010
  start: .001,
1011
1011
  factor: 2,
1012
1012
  count: 16
1013
- }), sn = P.counter("voltro_rpc_requests_total", { description: "Total RPC handler invocations." }), cn = P.counter("voltro_rpc_errors_total", { description: "RPC handler invocations that errored." }), ln = P.histogram("voltro_rpc_duration_seconds", on, "RPC handler duration in seconds."), un = P.counter("voltro_http_requests_total", { description: "Total HTTP route invocations." }), dn = P.histogram("voltro_http_duration_seconds", on, "HTTP route duration in seconds."), fn = P.histogram("voltro_plugin_hook_duration_seconds", on, "Plugin interceptor duration in seconds."), pn = P.counter("voltro_plugin_hook_errors_total", { description: "Plugin interceptor invocations that errored." }), mn = P.counter("voltro_subscription_deliveries_total", { description: "Total subscription deliveries (snapshot + delta)." }), hn = P.histogram("voltro_subscription_delivery_seconds", on, "Subscription delivery produce→push latency in seconds."), gn = P.gauge("voltro_subscriptions_active", { description: "Currently-open subscriptions." }), _n = (e) => {
1014
- let t = e.durationMs / 1e3, n = e.kind === "rpc" ? M.zipRight(P.increment(sn).pipe(M.tagMetrics("tag", e.tag), M.tagMetrics("status", e.status)), M.zipRight(P.update(ln, t).pipe(M.tagMetrics("tag", e.tag)), e.status === "error" ? P.increment(cn).pipe(M.tagMetrics("tag", e.tag)) : M.void)) : e.kind === "request" ? M.zipRight(P.increment(un).pipe(M.tagMetrics("route", e.tag), M.tagMetrics("status", e.status)), P.update(dn, t).pipe(M.tagMetrics("route", e.tag))) : M.zipRight(P.update(fn, t).pipe(M.tagMetrics("hook", e.tag)), e.status === "error" ? P.increment(pn).pipe(M.tagMetrics("hook", e.tag)) : M.void);
1013
+ }), cn = P.counter("voltro_rpc_requests_total", { description: "Total RPC handler invocations." }), ln = P.counter("voltro_rpc_errors_total", { description: "RPC handler invocations that errored." }), un = P.histogram("voltro_rpc_duration_seconds", sn, "RPC handler duration in seconds."), dn = P.counter("voltro_http_requests_total", { description: "Total HTTP route invocations." }), fn = P.histogram("voltro_http_duration_seconds", sn, "HTTP route duration in seconds."), pn = P.histogram("voltro_plugin_hook_duration_seconds", sn, "Plugin interceptor duration in seconds."), mn = P.counter("voltro_plugin_hook_errors_total", { description: "Plugin interceptor invocations that errored." }), hn = P.counter("voltro_subscription_deliveries_total", { description: "Total subscription deliveries (snapshot + delta)." }), gn = P.histogram("voltro_subscription_delivery_seconds", sn, "Subscription delivery produce→push latency in seconds."), _n = P.gauge("voltro_subscriptions_active", { description: "Currently-open subscriptions." }), vn = (e) => {
1014
+ let t = e.durationMs / 1e3, n = e.kind === "rpc" ? M.zipRight(P.increment(cn).pipe(M.tagMetrics("tag", e.tag), M.tagMetrics("status", e.status)), M.zipRight(P.update(un, t).pipe(M.tagMetrics("tag", e.tag)), e.status === "error" ? P.increment(ln).pipe(M.tagMetrics("tag", e.tag)) : M.void)) : e.kind === "request" ? M.zipRight(P.increment(dn).pipe(M.tagMetrics("route", e.tag), M.tagMetrics("status", e.status)), P.update(fn, t).pipe(M.tagMetrics("route", e.tag))) : M.zipRight(P.update(pn, t).pipe(M.tagMetrics("hook", e.tag)), e.status === "error" ? P.increment(mn).pipe(M.tagMetrics("hook", e.tag)) : M.void);
1015
1015
  M.runSync(n);
1016
- }, vn = (e) => e.startsWith("subscription.") ? e.slice(13) : e, yn = (e) => {
1017
- let t = vn(e.label);
1018
- M.runSync(M.zipRight(P.increment(mn).pipe(M.tagMetrics("tag", t), M.tagMetrics("kind", e.kind)), P.update(hn, e.durationMs / 1e3).pipe(M.tagMetrics("tag", t), M.tagMetrics("kind", e.kind))));
1019
- }, bn = /* @__PURE__ */ new Map(), U = (e, t) => {
1020
- let n = vn(e), r = Math.max(0, (bn.get(n) ?? 0) + t);
1021
- r === 0 ? bn.delete(n) : bn.set(n, r), M.runSync(P.set(gn, r).pipe(M.tagMetrics("tag", n)));
1022
- }, xn = (e, t) => P.counter(e, t === void 0 ? {} : { description: t }), Sn = (e, t) => P.gauge(e, t === void 0 ? {} : { description: t }), Cn = (e, t = on, n) => P.histogram(e, t, n), wn = (e) => {
1016
+ }, yn = (e) => e.startsWith("subscription.") ? e.slice(13) : e, bn = (e) => {
1017
+ let t = yn(e.label);
1018
+ M.runSync(M.zipRight(P.increment(hn).pipe(M.tagMetrics("tag", t), M.tagMetrics("kind", e.kind)), P.update(gn, e.durationMs / 1e3).pipe(M.tagMetrics("tag", t), M.tagMetrics("kind", e.kind))));
1019
+ }, xn = /* @__PURE__ */ new Map(), U = (e, t) => {
1020
+ let n = yn(e), r = Math.max(0, (xn.get(n) ?? 0) + t);
1021
+ r === 0 ? xn.delete(n) : xn.set(n, r), M.runSync(P.set(_n, r).pipe(M.tagMetrics("tag", n)));
1022
+ }, Sn = (e, t) => P.counter(e, t === void 0 ? {} : { description: t }), Cn = (e, t) => P.gauge(e, t === void 0 ? {} : { description: t }), wn = (e, t = sn, n) => P.histogram(e, t, n), Tn = (e) => {
1023
1023
  let t = {};
1024
1024
  for (let n of e) t[n.key] = n.value;
1025
1025
  return t;
1026
- }, Tn = P.snapshot.pipe(M.map((e) => e.map((e) => {
1027
- let t = e.metricKey.name, n = wn(e.metricKey.tags), r = F.getOrUndefined(e.metricKey.description), i = r === void 0 ? {} : { description: r }, a = e.metricState;
1028
- if (Ke.isHistogramState(a)) return {
1026
+ }, En = P.snapshot.pipe(M.map((e) => e.map((e) => {
1027
+ let t = e.metricKey.name, n = Tn(e.metricKey.tags), r = F.getOrUndefined(e.metricKey.description), i = r === void 0 ? {} : { description: r }, a = e.metricState;
1028
+ if (qe.isHistogramState(a)) return {
1029
1029
  name: t,
1030
1030
  labels: n,
1031
1031
  ...i,
@@ -1037,14 +1037,14 @@ var wt = class {
1037
1037
  sum: a.sum,
1038
1038
  count: a.count
1039
1039
  };
1040
- if (Ke.isGaugeState(a)) return {
1040
+ if (qe.isGaugeState(a)) return {
1041
1041
  name: t,
1042
1042
  labels: n,
1043
1043
  ...i,
1044
1044
  type: "gauge",
1045
1045
  value: Number(a.value)
1046
1046
  };
1047
- if (Ke.isSummaryState(a)) return {
1047
+ if (qe.isSummaryState(a)) return {
1048
1048
  name: t,
1049
1049
  labels: n,
1050
1050
  ...i,
@@ -1056,7 +1056,7 @@ var wt = class {
1056
1056
  value: t.value
1057
1057
  }] : [])
1058
1058
  };
1059
- if (Ke.isFrequencyState(a)) {
1059
+ if (qe.isFrequencyState(a)) {
1060
1060
  let e = {};
1061
1061
  for (let [t, n] of a.occurrences) e[t] = n;
1062
1062
  return {
@@ -1074,25 +1074,25 @@ var wt = class {
1074
1074
  type: "counter",
1075
1075
  value: Number(a.count)
1076
1076
  };
1077
- }))), En = () => M.runSync(Tn), Dn = class extends L.TaggedError()("RowFilterUnavailable", { cause: L.String }) {}, On = qe.exponential("20 millis").pipe(qe.intersect(qe.recurs(2))), kn, An = (e) => {
1078
- kn = e;
1079
- }, jn = () => kn, Mn = () => void 0, Nn = (e, t) => Pn(kn, e, t), Pn = (e, t, n) => {
1080
- if (e === void 0 || t.type === "system") return M.succeed(Mn);
1081
- let r = e.retry ?? On, i = e.load(t);
1082
- return (r === !1 ? i : M.retry(i, r)).pipe(M.map((t) => (n) => e.predicate(t, n)), M.catchAll((t) => M.suspend(() => (n?.(t), e.onLoadError === "deny" ? M.succeed(Fn) : M.fail(new Dn({ cause: String(t) }))))));
1083
- }, Fn = () => ({
1077
+ }))), Dn = () => M.runSync(En), On = class extends L.TaggedError()("RowFilterUnavailable", { cause: L.String }) {}, kn = Je.exponential("20 millis").pipe(Je.intersect(Je.recurs(2))), An, jn = (e) => {
1078
+ An = e;
1079
+ }, Mn = () => An, Nn = () => void 0, Pn = (e, t) => Fn(An, e, t), Fn = (e, t, n) => {
1080
+ if (e === void 0 || t.type === "system") return M.succeed(Nn);
1081
+ let r = e.retry ?? kn, i = e.load(t);
1082
+ return (r === !1 ? i : M.retry(i, r)).pipe(M.map((t) => (n) => e.predicate(t, n)), M.catchAll((t) => M.suspend(() => (n?.(t), e.onLoadError === "deny" ? M.succeed(In) : M.fail(new On({ cause: String(t) }))))));
1083
+ }, In = () => ({
1084
1084
  column: "id",
1085
1085
  op: "isNull"
1086
- }), In = (e, n, r) => {
1086
+ }), Ln = (e, n, r) => {
1087
1087
  let i = e(n);
1088
1088
  return i === void 0 ? r : r ? t(r, i) : i;
1089
- }, Ln = (e, t) => {
1090
- let n = In(e, t.table, t.predicate);
1089
+ }, Rn = (e, t) => {
1090
+ let n = Ln(e, t.table, t.predicate);
1091
1091
  return n === t.predicate ? t : {
1092
1092
  ...t,
1093
1093
  predicate: n
1094
1094
  };
1095
- }, W = A({ scope: "voltro:dispatcher" }), Rn = (e) => typeof e == "object" && !!e && e._tag === "ScopeError", zn = class {
1095
+ }, W = k({ scope: "voltro:dispatcher" }), zn = (e) => Array.isArray(e) ? e.length : e == null ? 0 : 1, Bn = (e) => typeof e == "object" && !!e && e._tag === "ScopeError", Vn = class {
1096
1096
  deps;
1097
1097
  subscriptionRegistry;
1098
1098
  matcher;
@@ -1102,12 +1102,12 @@ var wt = class {
1102
1102
  computedSubs = /* @__PURE__ */ new Map();
1103
1103
  computedByTable = /* @__PURE__ */ new Map();
1104
1104
  constructor(e) {
1105
- this.deps = e, this.matcher = new jt(), this.subscriptionRegistry = new Pt(this.matcher), this.unsubscribeChange = e.store.onChange((e) => {
1105
+ this.deps = e, this.matcher = new Mt(), this.subscriptionRegistry = new Ft(this.matcher), this.unsubscribeChange = e.store.onChange((e) => {
1106
1106
  this.handleChange(e);
1107
1107
  });
1108
1108
  }
1109
1109
  async subscribe(e, t, n, r, i, a, o, s) {
1110
- let c = `sub_${me()}`, l = i ?? `subscription.${e.table}`, u = Jt(e), d = nn(e);
1110
+ let c = `sub_${ge()}`, l = i ?? `subscription.${e.table}`, u = Yt(e), d = rn(e);
1111
1111
  e.predicate !== void 0 && this.subscriptionRegistry.subscribe(c, e.table, e.predicate, r);
1112
1112
  for (let e of u) {
1113
1113
  let t = this.dependentByTable.get(e);
@@ -1121,7 +1121,7 @@ var wt = class {
1121
1121
  }
1122
1122
  }, h, g;
1123
1123
  try {
1124
- h = s === void 0 ? e : Ln(await s(), e), g = this.deps.cache !== void 0 && a !== void 0 ? await this.deps.cache.wrap(a, p, () => this.deps.store.query(h)) : await this.deps.store.query(h);
1124
+ h = s === void 0 ? e : Rn(await s(), e), g = this.deps.cache !== void 0 && a !== void 0 ? await this.deps.cache.wrap(a, p, () => this.deps.store.query(h)) : await this.deps.store.query(h);
1125
1125
  } catch (e) {
1126
1126
  throw m(), e;
1127
1127
  }
@@ -1188,7 +1188,7 @@ var wt = class {
1188
1188
  });
1189
1189
  }
1190
1190
  async subscribeComputed(e, t, n, r) {
1191
- let i = `csub_${me()}`, a = e.dependentTables, o = {
1191
+ let i = `csub_${ge()}`, a = e.dependentTables, o = {
1192
1192
  id: i,
1193
1193
  recompute: e.recompute,
1194
1194
  tenantId: e.tenantId,
@@ -1196,7 +1196,7 @@ var wt = class {
1196
1196
  context: n,
1197
1197
  label: r ?? "subscription.computed",
1198
1198
  tables: a,
1199
- lastJson: Bn(e.value),
1199
+ lastJson: Hn(e.value),
1200
1200
  revision: 0
1201
1201
  };
1202
1202
  this.computedSubs.set(i, o), U(o.label, 1);
@@ -1217,7 +1217,7 @@ var wt = class {
1217
1217
  startMs: s,
1218
1218
  endMs: Date.now(),
1219
1219
  durationMs: Date.now() - s,
1220
- rowCount: 1
1220
+ rowCount: zn(e.value)
1221
1221
  }), () => {
1222
1222
  this.computedSubs.delete(i), U(o.label, -1);
1223
1223
  for (let e of a) {
@@ -1229,7 +1229,7 @@ var wt = class {
1229
1229
  async recomputeComputed(e) {
1230
1230
  let t = Date.now();
1231
1231
  try {
1232
- let n = await e.recompute(), r = Bn(n);
1232
+ let n = await e.recompute(), r = Hn(n);
1233
1233
  if (r === e.lastJson) return;
1234
1234
  e.lastJson = r, e.revision += 1;
1235
1235
  let i = Date.now();
@@ -1245,10 +1245,10 @@ var wt = class {
1245
1245
  startMs: t,
1246
1246
  endMs: i,
1247
1247
  durationMs: i - t,
1248
- rowCount: 1
1248
+ rowCount: zn(n)
1249
1249
  });
1250
1250
  } catch (t) {
1251
- if (Rn(t)) {
1251
+ if (Bn(t)) {
1252
1252
  this.revokeComputed(e, t);
1253
1253
  return;
1254
1254
  }
@@ -1301,7 +1301,7 @@ var wt = class {
1301
1301
  W.trace("missing subscription", { subscriberId: t });
1302
1302
  continue;
1303
1303
  }
1304
- if (!an(e, n.relevantFields)) {
1304
+ if (!on(e, n.relevantFields)) {
1305
1305
  o++;
1306
1306
  continue;
1307
1307
  }
@@ -1324,21 +1324,21 @@ var wt = class {
1324
1324
  this.revokeSubscription(n, e, "row filter unavailable");
1325
1325
  continue;
1326
1326
  }
1327
- i = Ln(e, n.baseDescriptor);
1327
+ i = Rn(e, n.baseDescriptor);
1328
1328
  }
1329
1329
  let o = await this.deps.store.query(i), s = n.lastDelivered;
1330
- if (Vn(o, s)) {
1330
+ if (Un(o, s)) {
1331
1331
  W.trace("suppressed no-op delta", {
1332
1332
  subscriberId: t,
1333
1333
  table: e.table
1334
1334
  });
1335
1335
  continue;
1336
1336
  }
1337
- n.lastDelivered = o, this.deps.cache !== void 0 && n.cacheBinding !== void 0 && this.deps.cache.put(n.cacheBinding, Array.from(n.dependentTables), o), je(s) && je(o) ? n.emit({
1337
+ n.lastDelivered = o, this.deps.cache !== void 0 && n.cacheBinding !== void 0 && this.deps.cache.put(n.cacheBinding, Array.from(n.dependentTables), o), Ne(s) && Ne(o) ? n.emit({
1338
1338
  _tag: "delta",
1339
1339
  revision: a,
1340
1340
  emittedAt: a,
1341
- patch: Oe(s, o)
1341
+ patch: Ae(s, o)
1342
1342
  }) : n.emit({
1343
1343
  _tag: "snapshot",
1344
1344
  revision: a,
@@ -1370,44 +1370,44 @@ var wt = class {
1370
1370
  skipped: o
1371
1371
  });
1372
1372
  }
1373
- }, Bn = (e) => {
1373
+ }, Hn = (e) => {
1374
1374
  try {
1375
1375
  return JSON.stringify(e) ?? "null";
1376
1376
  } catch {
1377
1377
  return String(e);
1378
1378
  }
1379
- }, Vn = (e, t) => {
1379
+ }, Un = (e, t) => {
1380
1380
  if (e === t) return !0;
1381
1381
  if (e.length !== t.length) return !1;
1382
1382
  for (let n = 0; n < e.length; n++) if (JSON.stringify(e[n]) !== JSON.stringify(t[n])) return !1;
1383
1383
  return !0;
1384
- }, Hn = (e) => typeof e == "object" && !!e && e.__voltroComputed === !0, Un = 1440 * 60 * 1e3, Wn = 3600 * 1e3, G = /* @__PURE__ */ new Map(), Gn = /* @__PURE__ */ new Set(), Kn = (e, t) => {
1384
+ }, Wn = (e) => typeof e == "object" && !!e && e.__voltroComputed === !0, Gn = 1440 * 60 * 1e3, Kn = 3600 * 1e3, G = /* @__PURE__ */ new Map(), qn = /* @__PURE__ */ new Set(), Jn = (e, t) => {
1385
1385
  G.set(e, {
1386
1386
  subject: t,
1387
1387
  touchedAt: Date.now()
1388
1388
  });
1389
- for (let n of Gn) try {
1389
+ for (let n of qn) try {
1390
1390
  n(e, t);
1391
1391
  } catch {}
1392
- }, qn = (e) => {
1392
+ }, Yn = (e) => {
1393
1393
  let t = G.get(e);
1394
1394
  if (t) return t.touchedAt = Date.now(), t.subject;
1395
- }, Jn = (e) => {
1395
+ }, Xn = (e) => {
1396
1396
  G.delete(e);
1397
- }, Yn = (e) => (Gn.add(e), () => {
1398
- Gn.delete(e);
1399
- }), Xn = setInterval(() => {
1400
- let e = Date.now() - Un;
1397
+ }, Zn = (e) => (qn.add(e), () => {
1398
+ qn.delete(e);
1399
+ }), Qn = setInterval(() => {
1400
+ let e = Date.now() - Gn;
1401
1401
  for (let [t, n] of G) n.touchedAt < e && G.delete(t);
1402
- }, Wn);
1403
- typeof Xn == "object" && Xn && "unref" in Xn && Xn.unref();
1404
- var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1402
+ }, Kn);
1403
+ typeof Qn == "object" && Qn && "unref" in Qn && Qn.unref();
1404
+ var K = /* @__PURE__ */ new Map(), $n = (e, t) => {
1405
1405
  let n = K.get(e);
1406
1406
  return n || (n = /* @__PURE__ */ new Set(), K.set(e, n)), n.add(t), () => {
1407
1407
  let n = K.get(e);
1408
1408
  n && (n.delete(t), n.size === 0 && K.delete(e));
1409
1409
  };
1410
- }, Qn = (e) => {
1410
+ }, er = (e) => {
1411
1411
  let t = K.get(e);
1412
1412
  if (t) {
1413
1413
  for (let e of [...t]) try {
@@ -1415,15 +1415,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1415
1415
  } catch {}
1416
1416
  K.delete(e);
1417
1417
  }
1418
- }, $n = (e) => K.get(e)?.size ?? 0, er = () => {
1418
+ }, tr = (e) => K.get(e)?.size ?? 0, nr = () => {
1419
1419
  G.clear(), K.clear();
1420
- }, tr = () => [...G.entries()].map(([e, t]) => ({
1420
+ }, rr = () => [...G.entries()].map(([e, t]) => ({
1421
1421
  clientId: e,
1422
1422
  subjectType: t.subject.type,
1423
1423
  tenantId: t.subject.tenantId
1424
- })), nr = /^00-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/, rr = (e) => `00-${e.traceId}-${e.spanId}-${e.sampled ? "01" : "00"}`, ir = (e) => {
1424
+ })), ir = /^00-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/, ar = (e) => `00-${e.traceId}-${e.spanId}-${e.sampled ? "01" : "00"}`, or = (e) => {
1425
1425
  if (typeof e != "string") return null;
1426
- let t = nr.exec(e.trim().toLowerCase());
1426
+ let t = ir.exec(e.trim().toLowerCase());
1427
1427
  if (t === null) return null;
1428
1428
  let [, n, r, i] = t;
1429
1429
  return n === "0".repeat(32) || r === "0".repeat(16) ? null : {
@@ -1431,14 +1431,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1431
1431
  spanId: r,
1432
1432
  sampled: (parseInt(i, 16) & 1) == 1
1433
1433
  };
1434
- }, ar = (e) => {
1435
- let t = ir(e);
1436
- if (t !== null) return Je.externalSpan({
1434
+ }, sr = (e) => {
1435
+ let t = or(e);
1436
+ if (t !== null) return Ye.externalSpan({
1437
1437
  traceId: t.traceId,
1438
1438
  spanId: t.spanId,
1439
1439
  sampled: t.sampled
1440
1440
  });
1441
- }, or = new ut(), sr = (e, t) => or.run(e, t), cr = () => or.getStore(), lr = (e = {}) => {
1441
+ }, cr = new dt(), lr = (e, t) => cr.run(e, t), ur = () => cr.getStore(), dr = (e = {}) => {
1442
1442
  let t = e.random ?? Math.random, n = /* @__PURE__ */ new Map(), r = (e) => n.get(e) ?? 0;
1443
1443
  return {
1444
1444
  pick(e) {
@@ -1463,7 +1463,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1463
1463
  }));
1464
1464
  }
1465
1465
  };
1466
- }, ur = (e = {}) => {
1466
+ }, fr = (e = {}) => {
1467
1467
  let t = e.thresholdFailures ?? 3, n = e.windowMs ?? 1e4, r = e.blackoutMs ?? 6e4, i = e.now ?? Date.now, a = /* @__PURE__ */ new Map(), o = (e) => {
1468
1468
  let t = a.get(e);
1469
1469
  return t === void 0 && (t = {
@@ -1497,7 +1497,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1497
1497
  }));
1498
1498
  }
1499
1499
  };
1500
- }, dr = (e = {}) => {
1500
+ }, pr = (e = {}) => {
1501
1501
  let t = e.now ?? Date.now, n = /* @__PURE__ */ new Map();
1502
1502
  return {
1503
1503
  get(e) {
@@ -1520,7 +1520,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1520
1520
  return n.size;
1521
1521
  }
1522
1522
  };
1523
- }, fr = (e, t) => e === null ? t === void 0 ? "anon:bg" : `anon:${t}` : `subject:${e}`, pr = (e) => {
1523
+ }, mr = (e, t) => e === null ? t === void 0 ? "anon:bg" : `anon:${t}` : `subject:${e}`, hr = (e) => {
1524
1524
  let t = e.now ?? Date.now, n = e.keyPrefix ?? "voltro:ryw", r = e.channel ?? `${n}:bus`, i = e.onError ?? ((e, t) => {
1525
1525
  process.stderr.write(`[voltro:ryw] redis ${t} failed: ${String(e)}\n`);
1526
1526
  }), a = `${process.pid ?? 0}:${Math.random() * 1e9 | 0}:${t()}`, o = /* @__PURE__ */ new Map(), s = (e) => {
@@ -1579,7 +1579,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1579
1579
  return o.size;
1580
1580
  }
1581
1581
  };
1582
- }, mr = A({ scope: "voltro:replication" }), hr = new ut(), gr = (e, t) => hr.run(e, t), _r = () => hr.getStore(), vr = class {
1582
+ }, gr = k({ scope: "voltro:replication" }), _r = new dt(), vr = (e, t) => _r.run(e, t), yr = () => _r.getStore(), br = class {
1583
1583
  primary;
1584
1584
  replicas;
1585
1585
  adapter;
@@ -1592,10 +1592,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1592
1592
  recordRouting;
1593
1593
  now;
1594
1594
  constructor(e) {
1595
- this.primary = e.primary, this.replicas = e.replicas, this.adapter = e.replicationAdapter, this.policy = e.rywPolicy ?? "fallback", this.rywTtlMs = e.rywTtlMs ?? 3e4, this.rywMaxWaitMs = e.rywMaxWaitMs ?? 500, this.now = e.now ?? Date.now, this.rywStore = e.rywStore ?? dr({ now: this.now }), this.selector = e.replicaSelector ?? lr(), this.health = e.replicaHealth ?? ur({ now: this.now }), e.recordRouting !== void 0 && (this.recordRouting = e.recordRouting);
1595
+ this.primary = e.primary, this.replicas = e.replicas, this.adapter = e.replicationAdapter, this.policy = e.rywPolicy ?? "fallback", this.rywTtlMs = e.rywTtlMs ?? 3e4, this.rywMaxWaitMs = e.rywMaxWaitMs ?? 500, this.now = e.now ?? Date.now, this.rywStore = e.rywStore ?? pr({ now: this.now }), this.selector = e.replicaSelector ?? dr(), this.health = e.replicaHealth ?? fr({ now: this.now }), e.recordRouting !== void 0 && (this.recordRouting = e.recordRouting);
1596
1596
  }
1597
1597
  async query(e) {
1598
- let t = hr.getStore(), n = t?.subjectKey ?? "anon:bg";
1598
+ let t = _r.getStore(), n = t?.subjectKey ?? "anon:bg";
1599
1599
  if (t?.forcePrimary === !0) return this.emitRouting({
1600
1600
  target: "primary",
1601
1601
  replicaIndex: null,
@@ -1659,7 +1659,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1659
1659
  waitMs: 0
1660
1660
  }), r;
1661
1661
  } catch (r) {
1662
- return this.health.reportFailure(i, String(r)), mr.warn("replica query failed; falling back to primary", {
1662
+ return this.health.reportFailure(i, String(r)), gr.warn("replica query failed; falling back to primary", {
1663
1663
  idx: a,
1664
1664
  err: r
1665
1665
  }), this.emitRouting({
@@ -1728,7 +1728,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1728
1728
  fallbackReason: "wait-timeout"
1729
1729
  }), this.primary.query(e);
1730
1730
  }
1731
- await yr(10);
1731
+ await xr(10);
1732
1732
  }
1733
1733
  }
1734
1734
  async insert(e, t) {
@@ -1768,8 +1768,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1768
1768
  return await this.stampPostWrite(), r;
1769
1769
  }
1770
1770
  async transactional(e) {
1771
- let t = await gr({
1772
- subjectKey: hr.getStore()?.subjectKey ?? "anon:bg",
1771
+ let t = await vr({
1772
+ subjectKey: _r.getStore()?.subjectKey ?? "anon:bg",
1773
1773
  forcePrimary: !0
1774
1774
  }, () => this.primary.transactional(e));
1775
1775
  return await this.stampPostWrite(), t;
@@ -1785,7 +1785,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1785
1785
  }
1786
1786
  async stampPostWrite() {
1787
1787
  if (this.replicas.length === 0) return;
1788
- let e = hr.getStore()?.subjectKey ?? "anon:bg";
1788
+ let e = _r.getStore()?.subjectKey ?? "anon:bg";
1789
1789
  try {
1790
1790
  let t = await this.adapter.capturePrimaryPosition(this.primary);
1791
1791
  this.rywStore.set(e, {
@@ -1793,37 +1793,37 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1793
1793
  expiresAt: this.now() + this.rywTtlMs
1794
1794
  });
1795
1795
  } catch (e) {
1796
- mr.warn("failed to capture primary position; RYW skipped", { err: e });
1796
+ gr.warn("failed to capture primary position; RYW skipped", { err: e });
1797
1797
  }
1798
1798
  }
1799
1799
  emitRouting(e) {
1800
1800
  this.recordRouting?.(e);
1801
1801
  }
1802
- }, yr = (e) => new Promise((t) => setTimeout(t, e)), br = (e, t, n) => ({
1802
+ }, xr = (e) => new Promise((t) => setTimeout(t, e)), Sr = (e, t, n) => ({
1803
1803
  subject: e,
1804
- traceId: t?.traceId ?? me(),
1804
+ traceId: t?.traceId ?? ge(),
1805
1805
  ...t?.spanId === void 0 ? {} : { spanId: t.spanId },
1806
1806
  ...n === void 0 ? {} : { clientId: n }
1807
- }), xr = M.currentSpan.pipe(M.catchAll(() => M.succeed(void 0))), Sr = (e) => ({
1807
+ }), Cr = M.currentSpan.pipe(M.catchAll(() => M.succeed(void 0))), wr = (e) => ({
1808
1808
  traceId: e.traceId,
1809
1809
  ...e.spanId === void 0 ? {} : { spanId: e.spanId }
1810
- }), Cr = (e, t, n) => {
1810
+ }), Tr = (e, t, n) => {
1811
1811
  e !== void 0 && (e.attribute("rpc.tag", t), e.attribute("subject.type", n.type), n.tenantId !== void 0 && n.tenantId !== null && e.attribute("tenant.id", n.tenantId));
1812
- }, wr = (e) => {
1813
- if (jn() !== void 0) return async () => {
1814
- let t = await M.runPromise(M.either(Nn(e, (e) => {
1812
+ }, Er = (e) => {
1813
+ if (Mn() !== void 0) return async () => {
1814
+ let t = await M.runPromise(M.either(Pn(e, (e) => {
1815
1815
  console.error("[voltro] row filter failed to load — subscription", e);
1816
1816
  })));
1817
1817
  if (t._tag === "Left") throw t.left;
1818
1818
  return t.right;
1819
1819
  };
1820
- }, Tr = (e, t, n, r, i, a, o, s) => R.asyncScoped((c) => M.gen(function* () {
1820
+ }, Dr = (e, t, n, r, i, a, o, s) => R.asyncScoped((c) => M.gen(function* () {
1821
1821
  let l = yield* M.tryPromise(() => t.subscribe(e, (e) => {
1822
1822
  c.single(e);
1823
1823
  }, n, r, i, a, o, s)).pipe(M.matchCause({
1824
- onFailure: (e) => (jr(`subscription.${i}`, n.traceId, e), {
1824
+ onFailure: (e) => (Nr(`subscription.${i}`, n.traceId, e), {
1825
1825
  ok: !1,
1826
- error: Fr(e)
1826
+ error: Lr(e)
1827
1827
  }),
1828
1828
  onSuccess: (e) => ({
1829
1829
  ok: !0,
@@ -1839,21 +1839,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1839
1839
  }
1840
1840
  let u = l.unsubscribe;
1841
1841
  if (yield* M.addFinalizer(() => M.sync(() => u())), n.clientId !== void 0) {
1842
- let e = Zn(n.clientId, () => {
1842
+ let e = $n(n.clientId, () => {
1843
1843
  c.end();
1844
1844
  });
1845
1845
  yield* M.addFinalizer(() => M.sync(() => e()));
1846
1846
  }
1847
- })), Er = (e, t, n, r) => R.asyncScoped((i) => M.gen(function* () {
1847
+ })), Or = (e, t, n, r) => R.asyncScoped((i) => M.gen(function* () {
1848
1848
  let a = yield* M.tryPromise(() => t.subscribeComputed(e, (e) => {
1849
1849
  i.single(e._tag === "snapshot" ? {
1850
1850
  ...e,
1851
1851
  computed: !0
1852
1852
  } : e);
1853
1853
  }, n, r)).pipe(M.matchCause({
1854
- onFailure: (e) => (jr(`subscription.${r}`, n.traceId, e), {
1854
+ onFailure: (e) => (Nr(`subscription.${r}`, n.traceId, e), {
1855
1855
  ok: !1,
1856
- error: Fr(e)
1856
+ error: Lr(e)
1857
1857
  }),
1858
1858
  onSuccess: (e) => ({
1859
1859
  ok: !0,
@@ -1869,21 +1869,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1869
1869
  }
1870
1870
  let o = a.unsubscribe;
1871
1871
  if (yield* M.addFinalizer(() => M.sync(() => o())), n.clientId !== void 0) {
1872
- let e = Zn(n.clientId, () => {
1872
+ let e = $n(n.clientId, () => {
1873
1873
  i.end();
1874
1874
  });
1875
1875
  yield* M.addFinalizer(() => M.sync(() => e()));
1876
1876
  }
1877
- })), Dr = (e, t, n = "rpc.subscription", r, i, a, o) => R.unwrap(M.gen(function* () {
1878
- let s = yield* Se, c = yield* ve, l = yield* xr;
1879
- Cr(l, n, s);
1880
- let u = br(s, l, c.clientId), d = fr(s.id, c.clientId), f = gr({ subjectKey: d }, () => sr({
1877
+ })), kr = (e, t, n = "rpc.subscription", r, i, a, o) => R.unwrap(M.gen(function* () {
1878
+ let s = yield* we, c = yield* be, l = yield* Cr;
1879
+ Tr(l, n, s);
1880
+ let u = Sr(s, l, c.clientId), d = mr(s.id, c.clientId), f = vr({ subjectKey: d }, () => lr({
1881
1881
  traceId: u.traceId,
1882
1882
  ...u.spanId === void 0 ? {} : { spanId: u.spanId }
1883
1883
  }, () => e(u))), p = M.isEffect(f) ? yield* f.pipe(M.matchCause({
1884
- onFailure: (e) => (jr(`subscription.${n}`, u.traceId, e), {
1884
+ onFailure: (e) => (Nr(`subscription.${n}`, u.traceId, e), {
1885
1885
  ok: !1,
1886
- error: Fr(e)
1886
+ error: Lr(e)
1887
1887
  }),
1888
1888
  onSuccess: (e) => ({
1889
1889
  ok: !0,
@@ -1898,39 +1898,39 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1898
1898
  error: p.error
1899
1899
  });
1900
1900
  let m = p.value;
1901
- if (Hn(m)) return Er(m, t, u, n);
1901
+ if (Wn(m)) return Or(m, t, u, n);
1902
1902
  let h = m, g = r?.(h);
1903
- return Tr(h, t, u, g, n, i === void 0 ? void 0 : {
1903
+ return Dr(h, t, u, g, n, i === void 0 ? void 0 : {
1904
1904
  key: i.scope === "subject" ? `${i.baseKey}:s:${d}` : `${i.baseKey}:global`,
1905
1905
  ttlMs: i.ttlMs,
1906
1906
  swrMs: i.swrMs
1907
- }, a?.(s), o?.(s) ?? wr(s));
1908
- }).pipe(M.withSpan(n, { attributes: { "framework.kind": "subscription" } }))), Or = (e, t = "rpc.stream") => R.unwrap(M.gen(function* () {
1909
- let n = yield* Se, r = yield* ve, i = yield* xr;
1910
- Cr(i, t, n);
1911
- let a = br(n, i, r.clientId), o = e(a), s = M.isEffect(o) ? yield* o.pipe(M.orDie) : o;
1907
+ }, a?.(s), o?.(s) ?? Er(s));
1908
+ }).pipe(M.withSpan(n, { attributes: { "framework.kind": "subscription" } }))), Ar = (e, t = "rpc.stream") => R.unwrap(M.gen(function* () {
1909
+ let n = yield* we, r = yield* be, i = yield* Cr;
1910
+ Tr(i, t, n);
1911
+ let a = Sr(n, i, r.clientId), o = e(a), s = M.isEffect(o) ? yield* o.pipe(M.orDie) : o;
1912
1912
  if (a.clientId === void 0) return s;
1913
1913
  let c = a.clientId;
1914
1914
  return R.unwrapScoped(M.gen(function* () {
1915
- let e = yield* Be.make(), t = Zn(c, () => {
1916
- Be.unsafeDone(e, M.void);
1915
+ let e = yield* Ve.make(), t = $n(c, () => {
1916
+ Ve.unsafeDone(e, M.void);
1917
1917
  });
1918
- return yield* M.addFinalizer(() => M.sync(() => t())), s.pipe(R.interruptWhen(Be.await(e)));
1918
+ return yield* M.addFinalizer(() => M.sync(() => t())), s.pipe(R.interruptWhen(Ve.await(e)));
1919
1919
  }));
1920
- }).pipe(M.withSpan(t, { attributes: { "framework.kind": "stream" } }))), kr = A({ scope: "voltro:rpc" }), Ar = A({ scope: "voltro:http" }), jr = (e, t, n) => {
1921
- if (j.isInterruptedOnly(n)) return;
1922
- let r = j.squash(n), i = r?._tag, a = r instanceof Error ? r.message : r?.message ?? String(r), o = j.dieOption(n)._tag === "Some", s = Gt(r), c = {
1920
+ }).pipe(M.withSpan(t, { attributes: { "framework.kind": "stream" } }))), jr = k({ scope: "voltro:rpc" }), Mr = k({ scope: "voltro:http" }), Nr = (e, t, n) => {
1921
+ if (A.isInterruptedOnly(n)) return;
1922
+ let r = A.squash(n), i = r?._tag, a = r instanceof Error ? r.message : r?.message ?? String(r), o = A.dieOption(n)._tag === "Some", s = Kt(r), c = {
1923
1923
  traceId: t,
1924
1924
  ...i === void 0 ? {} : { errorTag: i },
1925
1925
  ...s
1926
1926
  }, l = a === "Failed to execute statement" && typeof s.dbMessage == "string" ? s.dbMessage : a;
1927
- o ? kr.error(`${e} failed: ${l}`, c) : kr.warn(`${e} failed: ${l}`, c);
1928
- }, Mr = /* @__PURE__ */ new Set(["SqlError", "ResultLengthMismatch"]), Nr = (e) => typeof e == "object" && !!e && typeof e._tag == "string" && Mr.has(e._tag), Pr = (e) => ({
1927
+ o ? jr.error(`${e} failed: ${l}`, c) : jr.warn(`${e} failed: ${l}`, c);
1928
+ }, Pr = /* @__PURE__ */ new Set(["SqlError", "ResultLengthMismatch"]), Fr = (e) => typeof e == "object" && !!e && typeof e._tag == "string" && Pr.has(e._tag), Ir = (e) => ({
1929
1929
  _tag: "InternalError",
1930
1930
  message: "internal server error",
1931
1931
  traceId: e
1932
- }), Fr = (e) => {
1933
- let t = j.squash(e);
1932
+ }), Lr = (e) => {
1933
+ let t = A.squash(e);
1934
1934
  t && typeof t == "object" && t._tag === "UnknownException" && (t = t.error ?? t.cause ?? t);
1935
1935
  let n = t && typeof t == "object" ? t : {}, r = {};
1936
1936
  for (let [e, t] of Object.entries(n)) e === "cause" || e === "stack" || e === "message" || (t === null || typeof t == "string" || typeof t == "number" || typeof t == "boolean") && (r[e] = t);
@@ -1940,19 +1940,19 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1940
1940
  ...typeof i == "string" ? { _tag: i } : {},
1941
1941
  message: typeof a == "string" ? a : String(t)
1942
1942
  };
1943
- }, Ir = (e, t, n = "rpc.mutation") => M.gen(function* () {
1944
- let r = yield* Se, i = yield* ve, a = yield* xr;
1945
- Cr(a, n, r);
1946
- let o = br(r, a, i.clientId), s = gr({ subjectKey: fr(r.id, i.clientId) }, () => sr({
1943
+ }, Rr = (e, t, n = "rpc.mutation") => M.gen(function* () {
1944
+ let r = yield* we, i = yield* be, a = yield* Cr;
1945
+ Tr(a, n, r);
1946
+ let o = Sr(r, a, i.clientId), s = vr({ subjectKey: mr(r.id, i.clientId) }, () => lr({
1947
1947
  traceId: o.traceId,
1948
1948
  ...o.spanId === void 0 ? {} : { spanId: o.spanId }
1949
1949
  }, () => e(t, o)));
1950
1950
  return yield* (M.isEffect(s) ? s : M.tryPromise({
1951
1951
  try: () => Promise.resolve(s),
1952
1952
  catch: (e) => e
1953
- })).pipe(M.tapErrorCause((e) => M.sync(() => jr(n, o.traceId, e))), M.catchIf(Nr, () => M.die(Pr(o.traceId))), M.annotateLogs(Sr(o)));
1954
- }).pipe(M.withSpan(n, { attributes: { "framework.kind": "mutation" } })), Lr = 8 * 1024 * 1024, Rr = (e) => {
1955
- let t = e.port ?? 4e3, n = e.path ?? "/ws", r = Xe(), i = (t) => et.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
1953
+ })).pipe(M.tapErrorCause((e) => M.sync(() => Nr(n, o.traceId, e))), M.catchIf(Fr, () => M.die(Ir(o.traceId))), M.annotateLogs(wr(o)));
1954
+ }).pipe(M.withSpan(n, { attributes: { "framework.kind": "mutation" } })), zr = 8 * 1024 * 1024, Br = (e) => {
1955
+ let t = e.port ?? 4e3, n = e.path ?? "/ws", r = Ze(), i = (t) => tt.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
1956
1956
  if (!e.inspectRoute) return B.text("inspect route not configured", { status: 404 });
1957
1957
  let n = {};
1958
1958
  for (let [e, r] of Object.entries(t.headers)) r !== void 0 && (n[e.toLowerCase()] = Array.isArray(r) ? r.join(", ") : r);
@@ -1964,7 +1964,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
1964
1964
  contentType: a.contentType,
1965
1965
  headers: a.headers ?? {}
1966
1966
  });
1967
- }))), a = () => et.HttpServerRequest.pipe(M.flatMap((t) => {
1967
+ }))), a = () => tt.HttpServerRequest.pipe(M.flatMap((t) => {
1968
1968
  let n = e.inspectStream;
1969
1969
  if (!n) return M.succeed(B.text("inspect stream not configured", { status: 404 }));
1970
1970
  let r = {};
@@ -2009,7 +2009,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2009
2009
  ...i
2010
2010
  }
2011
2011
  }));
2012
- })), o = z.add("*", "/_voltro/inspect/*", et.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2012
+ })), o = z.add("*", "/_voltro/inspect/*", tt.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2013
2013
  if (!e.inspectRoute) return B.text("inspect route not configured", { status: 404 });
2014
2014
  let n = {};
2015
2015
  for (let [e, r] of Object.entries(t.headers)) r !== void 0 && (n[e.toLowerCase()] = Array.isArray(r) ? r.join(", ") : r);
@@ -2025,10 +2025,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2025
2025
  e.inspectRoute !== void 0 && (s = e.inspectStream === void 0 ? N.mergeAll(z.add("*", "/_voltro/inspect", i(!0)), o) : N.mergeAll(z.add("GET", "/_voltro/inspect/stream", a()), z.add("*", "/_voltro/inspect", i(!0)), o));
2026
2026
  let c = N.empty;
2027
2027
  if (e.webhookRoutes !== void 0 && e.webhookRoutes.size > 0) {
2028
- let t = (e) => et.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2028
+ let t = (e) => tt.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2029
2029
  let n = {};
2030
2030
  for (let [e, r] of Object.entries(t.headers)) r !== void 0 && (n[e.toLowerCase()] = Array.isArray(r) ? r.join(", ") : r);
2031
- let r = t.method !== "GET" && t.method !== "HEAD" ? yield* t.text.pipe(M.orElseSucceed(() => "")) : "", i = new TextEncoder().encode(r), a = t.url.split("?")[0], o = ar(n.traceparent), s = yield* M.promise(() => e.handle({
2031
+ let r = t.method !== "GET" && t.method !== "HEAD" ? yield* t.text.pipe(M.orElseSucceed(() => "")) : "", i = new TextEncoder().encode(r), a = t.url.split("?")[0], o = sr(n.traceparent), s = yield* M.promise(() => e.handle({
2032
2032
  method: t.method,
2033
2033
  path: a,
2034
2034
  headers: n,
@@ -2049,7 +2049,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2049
2049
  }
2050
2050
  let l = N.empty;
2051
2051
  if (e.httpRoutes !== void 0 && e.httpRoutes.length > 0) {
2052
- let t = (e) => et.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2052
+ let t = (e) => tt.HttpServerRequest.pipe(M.flatMap((t) => M.gen(function* () {
2053
2053
  let n = {};
2054
2054
  for (let [e, r] of Object.entries(t.headers)) r !== void 0 && (n[e.toLowerCase()] = Array.isArray(r) ? r.join(", ") : r);
2055
2055
  let r = t.url.indexOf("?"), i = r >= 0 ? t.url.slice(0, r) : t.url, a = r >= 0 ? t.url.slice(r + 1) : "", o = t.method !== "GET" && t.method !== "HEAD" ? new Uint8Array(yield* t.arrayBuffer.pipe(M.orElseSucceed(() => /* @__PURE__ */ new ArrayBuffer(0)))) : /* @__PURE__ */ new Uint8Array(), s = {
@@ -2058,8 +2058,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2058
2058
  query: a,
2059
2059
  headers: n,
2060
2060
  rawBody: o
2061
- }, c = yield* M.promise(() => ct(e, s));
2062
- c.status >= 500 && Ar.warn(`${t.method} ${i} → ${c.status}`, {
2061
+ }, c = yield* M.promise(() => lt(e, s));
2062
+ c.status >= 500 && Mr.warn(`${t.method} ${i} → ${c.status}`, {
2063
2063
  method: t.method,
2064
2064
  path: i,
2065
2065
  status: c.status,
@@ -2071,7 +2071,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2071
2071
  headers: l
2072
2072
  };
2073
2073
  return c.body instanceof Uint8Array ? B.uint8Array(c.body, u) : B.text(c.body ?? "", u);
2074
- })), M.tapErrorCause((t) => j.isInterruptedOnly(t) ? M.void : M.sync(() => Ar.error(`${e.map((e) => e.method).join("|")} ${e[0].path} threw`, { path: e[0].path }, j.squash(t))))), n = /* @__PURE__ */ new Map();
2074
+ })), M.tapErrorCause((t) => A.isInterruptedOnly(t) ? M.void : M.sync(() => Mr.error(`${e.map((e) => e.method).join("|")} ${e[0].path} threw`, { path: e[0].path }, A.squash(t))))), n = /* @__PURE__ */ new Map();
2075
2075
  for (let t of e.httpRoutes) {
2076
2076
  let e = n.get(t.path);
2077
2077
  e ? e.push(t) : n.set(t.path, [t]);
@@ -2082,14 +2082,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2082
2082
  });
2083
2083
  l = N.mergeAll(...r);
2084
2084
  }
2085
- let u = ot.layerProtocolWebsocketRouter({ path: n }), d = ot.layer(e.group), f = ot.layer(e.group).pipe(N.provide(ot.layerProtocolHttpRouter({ path: "/rpc" })), N.provide(at.layerJson), N.provide(e.httpHandlersLayer ?? e.handlersLayer)), p = N.scopedDiscard(M.gen(function* () {
2086
- let e = yield* ot.Protocol;
2085
+ let u = st.layerProtocolWebsocketRouter({ path: n }), d = st.layer(e.group), f = st.layer(e.group).pipe(N.provide(st.layerProtocolHttpRouter({ path: "/rpc" })), N.provide(ot.layerJson), N.provide(e.httpHandlersLayer ?? e.handlersLayer)), p = N.scopedDiscard(M.gen(function* () {
2086
+ let e = yield* st.Protocol;
2087
2087
  yield* M.forkScoped(M.gen(function* () {
2088
2088
  let t = yield* e.disconnects.take;
2089
- Jn(t), Qn(t);
2089
+ Xn(t), er(t);
2090
2090
  }).pipe(M.forever));
2091
- })), m = N.mergeAll(d, p).pipe(N.provide(u), N.provide(at.layerJson), N.provide(e.handlersLayer)), h = N.mergeAll(m, f, s, c, l), g = e.pluginHttpInterceptor, _ = e.healthCheck, v = Number(process.env.VOLTRO_MAX_RPC_BODY_BYTES), y = e.maxRpcBodyBytes ?? (Number.isFinite(v) && v > 0 ? v : 8388608), b = { "cache-control": "no-store" }, x = (e) => M.gen(function* () {
2092
- let t = yield* et.HttpServerRequest, n = {};
2091
+ })), m = N.mergeAll(d, p).pipe(N.provide(u), N.provide(ot.layerJson), N.provide(e.handlersLayer)), h = N.mergeAll(m, f, s, c, l), g = e.pluginHttpInterceptor, _ = e.healthCheck, v = Number(process.env.VOLTRO_MAX_RPC_BODY_BYTES), y = e.maxRpcBodyBytes ?? (Number.isFinite(v) && v > 0 ? v : 8388608), b = { "cache-control": "no-store" }, x = (e) => M.gen(function* () {
2092
+ let t = yield* tt.HttpServerRequest, n = {};
2093
2093
  for (let [e, r] of Object.entries(t.headers)) r !== void 0 && (n[e.toLowerCase()] = Array.isArray(r) ? r.join(", ") : r);
2094
2094
  let r = t.url.indexOf("?"), i = r === -1 ? t.url : t.url.slice(0, r);
2095
2095
  if (t.method === "POST" && i === "/rpc") {
@@ -2129,13 +2129,13 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2129
2129
  status: l.status,
2130
2130
  ...l.headers ? { headers: l.headers } : {}
2131
2131
  });
2132
- }), S = N.unwrapEffect(z.toHttpEffect(h).pipe(M.map((e) => $e.serve(x(e))))).pipe(N.provide(nt.layer(() => r, { port: t })), N.provide(tt.layer));
2132
+ }), S = N.unwrapEffect(z.toHttpEffect(h).pipe(M.map((e) => et.serve(x(e))))).pipe(N.provide(rt.layer(() => r, { port: t })), N.provide(nt.layer));
2133
2133
  e.tracerLayer && (S = S.pipe(N.provide(e.tracerLayer)));
2134
- let C = A({ scope: "voltro:rpc" }), ee = N.launch(S).pipe(M.catchAllCause((e) => M.sync(() => {
2135
- C.error("rpc server crashed", {}, j.squash(e)), process.exit(1);
2134
+ let C = k({ scope: "voltro:rpc" }), ee = N.launch(S).pipe(M.catchAllCause((e) => M.sync(() => {
2135
+ C.error("rpc server crashed", {}, A.squash(e)), process.exit(1);
2136
2136
  })));
2137
- return rt.runMain(ee, { disableErrorReporting: !0 }), r;
2138
- }, zr = (e, t = 1e4) => new Promise((n, r) => {
2137
+ return it.runMain(ee, { disableErrorReporting: !0 }), r;
2138
+ }, Vr = (e, t = 1e4) => new Promise((n, r) => {
2139
2139
  if (e.listening) {
2140
2140
  n();
2141
2141
  return;
@@ -2151,13 +2151,13 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2151
2151
  o(e);
2152
2152
  }
2153
2153
  a = setTimeout(() => o(/* @__PURE__ */ Error(`rpc server did not bind within ${t}ms`)), t), e.on("listening", s), e.on("error", c);
2154
- }), Br = () => {
2154
+ }), Hr = () => {
2155
2155
  let e = process.env.FRAMEWORK_TRACING?.toLowerCase();
2156
2156
  return e === "console" || e === "otlp" || e === "off" ? e : process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ? "otlp" : "off";
2157
- }, Vr = () => {
2157
+ }, Ur = () => {
2158
2158
  let e = process.env.FRAMEWORK_METRICS?.toLowerCase();
2159
2159
  return e === "console" || e === "otlp" || e === "off" ? e : process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT ? "otlp" : "off";
2160
- }, Hr = async () => {
2160
+ }, Wr = async () => {
2161
2161
  let [e, t, n, r, i] = await Promise.all([
2162
2162
  import("@opentelemetry/sdk-trace-base"),
2163
2163
  import("@opentelemetry/sdk-metrics"),
@@ -2172,7 +2172,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2172
2172
  otlpMetrics: r,
2173
2173
  nodeSdk: i
2174
2174
  };
2175
- }, Ur = (e, t, n) => {
2175
+ }, Gr = (e, t, n) => {
2176
2176
  let { PeriodicExportingMetricReader: r, ConsoleMetricExporter: i, InMemoryMetricExporter: a, AggregationTemporality: o } = e.sdkMetrics;
2177
2177
  if (t === "off") return {
2178
2178
  reader: void 0,
@@ -2195,8 +2195,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2195
2195
  }),
2196
2196
  inMemory: void 0
2197
2197
  };
2198
- }, Wr = async (e = {}) => {
2199
- let t = e.mode ?? Br(), n = e.metricsMode ?? Vr(), r = e.extraSpanProcessors ?? [], i = e.extraMetricReaders ?? [];
2198
+ }, Kr = async (e = {}) => {
2199
+ let t = e.mode ?? Hr(), n = e.metricsMode ?? Ur(), r = e.extraSpanProcessors ?? [], i = e.extraMetricReaders ?? [];
2200
2200
  if (t === "off" && e.traceSink === void 0 && n === "off" && r.length === 0 && i.length === 0) return {
2201
2201
  layer: N.empty,
2202
2202
  mode: t,
@@ -2205,13 +2205,13 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2205
2205
  metricsMode: n,
2206
2206
  inMemoryMetricExporter: void 0
2207
2207
  };
2208
- let a = await Hr(), { ConsoleSpanExporter: o, InMemorySpanExporter: s, SimpleSpanProcessor: c, BatchSpanProcessor: l } = a.sdkTrace, u = t === "off", d = e.serviceName ?? process.env.OTEL_SERVICE_NAME ?? "voltro-app", f, p;
2208
+ let a = await Wr(), { ConsoleSpanExporter: o, InMemorySpanExporter: s, SimpleSpanProcessor: c, BatchSpanProcessor: l } = a.sdkTrace, u = t === "off", d = e.serviceName ?? process.env.OTEL_SERVICE_NAME ?? "voltro-app", f, p;
2209
2209
  e.spanProcessor ? p = e.spanProcessor : u ? p = void 0 : t === "memory" ? (f = new s(), p = new c(f)) : p = t === "console" ? new c(new o()) : new l(new a.otlpTrace.OTLPTraceExporter());
2210
2210
  let m = [
2211
2211
  ...e.traceSink ? [e.traceSink] : [],
2212
2212
  ...p ? [p] : [],
2213
2213
  ...r
2214
- ], h = m.length === 1 ? m[0] : m, { reader: g, inMemory: _ } = Ur(a, n, e.metricExportIntervalMillis ?? (process.env.OTEL_METRIC_EXPORT_INTERVAL ? Number(process.env.OTEL_METRIC_EXPORT_INTERVAL) : 6e4)), v = [...g ? [g] : [], ...i], y = v.length === 0 ? void 0 : v.length === 1 ? v[0] : v, b = {
2214
+ ], h = m.length === 1 ? m[0] : m, { reader: g, inMemory: _ } = Gr(a, n, e.metricExportIntervalMillis ?? (process.env.OTEL_METRIC_EXPORT_INTERVAL ? Number(process.env.OTEL_METRIC_EXPORT_INTERVAL) : 6e4)), v = [...g ? [g] : [], ...i], y = v.length === 0 ? void 0 : v.length === 1 ? v[0] : v, b = {
2215
2215
  serviceName: d,
2216
2216
  ...e.serviceVersion ? { serviceVersion: e.serviceVersion } : {},
2217
2217
  ...e.resourceAttributes ? { attributes: e.resourceAttributes } : {}
@@ -2229,18 +2229,18 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2229
2229
  metricsMode: n,
2230
2230
  inMemoryMetricExporter: _
2231
2231
  };
2232
- }, Gr = {
2233
- [dt.INTERNAL]: "internal",
2234
- [dt.SERVER]: "server",
2235
- [dt.CLIENT]: "client",
2236
- [dt.PRODUCER]: "producer",
2237
- [dt.CONSUMER]: "consumer"
2238
- }, Kr = (e) => e[0] * 1e3 + e[1] / 1e6, qr = 512, Jr = 48, Yr = (e) => {
2232
+ }, qr = {
2233
+ [ft.INTERNAL]: "internal",
2234
+ [ft.SERVER]: "server",
2235
+ [ft.CLIENT]: "client",
2236
+ [ft.PRODUCER]: "producer",
2237
+ [ft.CONSUMER]: "consumer"
2238
+ }, Jr = (e) => e[0] * 1e3 + e[1] / 1e6, Yr = 512, Xr = 48, Zr = (e) => {
2239
2239
  let t = {}, n = 0;
2240
2240
  for (let r in e) {
2241
- if (n >= Jr) break;
2241
+ if (n >= Xr) break;
2242
2242
  let i = e[r];
2243
- if (typeof i == "string") t[r] = i.length > qr ? `${i.slice(0, qr)}…` : i;
2243
+ if (typeof i == "string") t[r] = i.length > Yr ? `${i.slice(0, Yr)}…` : i;
2244
2244
  else if (typeof i == "number" || typeof i == "boolean" || i == null) t[r] = i;
2245
2245
  else {
2246
2246
  let e;
@@ -2249,49 +2249,49 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2249
2249
  } catch {
2250
2250
  e = String(i);
2251
2251
  }
2252
- t[r] = e.length > qr ? `${e.slice(0, qr)}…` : e;
2252
+ t[r] = e.length > Yr ? `${e.slice(0, Yr)}…` : e;
2253
2253
  }
2254
2254
  n++;
2255
2255
  }
2256
2256
  return t;
2257
- }, Xr = {
2258
- [ft.UNSET]: "unset",
2259
- [ft.OK]: "ok",
2260
- [ft.ERROR]: "error"
2261
- }, Zr = (e) => {
2257
+ }, Qr = {
2258
+ [pt.UNSET]: "unset",
2259
+ [pt.OK]: "ok",
2260
+ [pt.ERROR]: "error"
2261
+ }, $r = (e) => {
2262
2262
  let t = e.spanContext(), n = e.events.length > 0 ? e.events.slice(0, 16).map((e) => ({
2263
2263
  name: e.name,
2264
- tsMs: Kr(e.time),
2265
- ...e.attributes ? { attributes: Yr(e.attributes) } : {}
2264
+ tsMs: Jr(e.time),
2265
+ ...e.attributes ? { attributes: Zr(e.attributes) } : {}
2266
2266
  })) : void 0;
2267
2267
  return {
2268
2268
  traceId: t.traceId,
2269
2269
  spanId: t.spanId,
2270
2270
  parentSpanId: e.parentSpanContext?.spanId ?? null,
2271
2271
  name: e.name,
2272
- kind: Gr[e.kind] ?? "internal",
2273
- attributes: Yr(e.attributes),
2274
- startMs: Kr(e.startTime),
2275
- endMs: Kr(e.endTime),
2276
- durationMs: Kr(e.duration),
2277
- status: Xr[e.status.code] ?? "unset",
2272
+ kind: qr[e.kind] ?? "internal",
2273
+ attributes: Zr(e.attributes),
2274
+ startMs: Jr(e.startTime),
2275
+ endMs: Jr(e.endTime),
2276
+ durationMs: Jr(e.duration),
2277
+ status: Qr[e.status.code] ?? "unset",
2278
2278
  ...e.status.message ? { statusMessage: e.status.message } : {},
2279
2279
  ...n ? { events: n } : {}
2280
2280
  };
2281
- }, Qr = (e) => ({
2281
+ }, ei = (e) => ({
2282
2282
  onStart: () => {},
2283
2283
  onEnd: (t) => {
2284
2284
  try {
2285
- e(Zr(t));
2285
+ e($r(t));
2286
2286
  } catch {}
2287
2287
  },
2288
2288
  forceFlush: () => Promise.resolve(),
2289
2289
  shutdown: () => Promise.resolve()
2290
- }), $r = { get: (e) => Promise.resolve(process.env[e]) }, ei = $r, ti = (e) => {
2291
- ei = e;
2292
- }, ni = () => {
2293
- ei = $r;
2294
- }, ri = async (e) => await ei.get(e) ?? process.env[e], ii = (e) => process.env[e], ai = (e, t = 6e4, n = () => Date.now()) => {
2290
+ }), ti = { get: (e) => Promise.resolve(process.env[e]) }, ni = ti, ri = (e) => {
2291
+ ni = e;
2292
+ }, ii = () => {
2293
+ ni = ti;
2294
+ }, ai = async (e) => await ni.get(e) ?? process.env[e], oi = (e) => process.env[e], si = (e, t = 6e4, n = () => Date.now()) => {
2295
2295
  let r = /* @__PURE__ */ new Map();
2296
2296
  return { get: async (i) => {
2297
2297
  let a = r.get(i);
@@ -2302,12 +2302,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2302
2302
  at: n()
2303
2303
  }), o;
2304
2304
  } };
2305
- }, oi = (e) => {
2305
+ }, ci = (e) => {
2306
2306
  let t = {
2307
2307
  accept: "application/json",
2308
2308
  ...e.headers ?? {}
2309
2309
  };
2310
- if (e.perKey) return ai({ get: async (n) => {
2310
+ if (e.perKey) return si({ get: async (n) => {
2311
2311
  let r = await fetch(`${e.url.replace(/\/$/, "")}/${encodeURIComponent(n)}`, { headers: t });
2312
2312
  if (!r.ok) return;
2313
2313
  let i = await r.json();
@@ -2318,59 +2318,59 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2318
2318
  let t = (await a())[e];
2319
2319
  return typeof t == "string" ? t : void 0;
2320
2320
  } };
2321
- }, si = (e) => e === void 0 || e === "env" || typeof e == "object" && e.kind === "env" ? $r : e.kind === "custom" ? e.backend : e.kind === "http" ? oi(e) : $r, ci = (e) => /^[0-9a-f]{64}$/i.test(e) ? Buffer.from(e, "hex") : he(e, "voltro:field-encryption:v1", 32), li = (t) => {
2321
+ }, li = (e) => e === void 0 || e === "env" || typeof e == "object" && e.kind === "env" ? ti : e.kind === "custom" ? e.backend : e.kind === "http" ? ci(e) : ti, ui = (e) => /^[0-9a-f]{64}$/i.test(e) ? Buffer.from(e, "hex") : _e(e, "voltro:field-encryption:v1", 32), di = (t) => {
2322
2322
  if (t.length !== 32) throw Error(`field cipher key must be 32 bytes, got ${t.length}`);
2323
2323
  return {
2324
2324
  encrypt: (n) => {
2325
- let r = pe(12), i = ue("aes-256-gcm", t, r), a = Buffer.concat([i.update(n, "utf8"), i.final()]), o = i.getAuthTag();
2325
+ let r = he(12), i = fe("aes-256-gcm", t, r), a = Buffer.concat([i.update(n, "utf8"), i.final()]), o = i.getAuthTag();
2326
2326
  return `${e}${r.toString("base64")}:${o.toString("base64")}:${a.toString("base64")}`;
2327
2327
  },
2328
2328
  decrypt: (n) => {
2329
2329
  let [r, i, a] = n.slice(e.length).split(":");
2330
2330
  if (!r || !i || a === void 0) throw Error("field cipher: malformed ciphertext");
2331
- let o = de("aes-256-gcm", t, Buffer.from(r, "base64"));
2331
+ let o = pe("aes-256-gcm", t, Buffer.from(r, "base64"));
2332
2332
  return o.setAuthTag(Buffer.from(i, "base64")), Buffer.concat([o.update(Buffer.from(a, "base64")), o.final()]).toString("utf8");
2333
2333
  }
2334
2334
  };
2335
- }, ui = (e) => li(ci(e)), di, fi = (e) => {
2336
- di = e;
2337
- }, pi = () => di, mi = "no field cipher registered — enable `@voltro/plugin-governance` `governancePlugin({ fieldEncryption: { key } })` (or call setFieldCipher) so a key is available.", q = (e) => {
2338
- let t = pi();
2339
- if (!t) throw Error(`encryptField: ${mi}`);
2335
+ }, fi = (e) => di(ui(e)), pi, mi = (e) => {
2336
+ pi = e;
2337
+ }, hi = () => pi, gi = "no field cipher registered — enable `@voltro/plugin-governance` `governancePlugin({ fieldEncryption: { key } })` (or call setFieldCipher) so a key is available.", q = (e) => {
2338
+ let t = hi();
2339
+ if (!t) throw Error(`encryptField: ${gi}`);
2340
2340
  return t.encrypt(e);
2341
- }, hi = (e) => {
2341
+ }, _i = (e) => {
2342
2342
  if (!x(e)) return e;
2343
- let t = pi();
2344
- if (!t) throw Error(`decryptField: ${mi}`);
2343
+ let t = hi();
2344
+ if (!t) throw Error(`decryptField: ${gi}`);
2345
2345
  return t.decrypt(e);
2346
- }, gi = "_voltro_idempotency", _i = (e) => {
2346
+ }, vi = "_voltro_idempotency", yi = (e) => {
2347
2347
  if (e == null) return null;
2348
2348
  let t = typeof e == "string" ? JSON.parse(e) : e;
2349
2349
  return t && typeof t == "object" && "status" in t ? t : null;
2350
- }, vi = (e) => ({
2350
+ }, bi = (e) => ({
2351
2351
  scope: e.scope,
2352
2352
  key: e.key,
2353
2353
  status: e.status === "completed" ? "completed" : "in_flight",
2354
- response: _i(e.response),
2355
- createdAt: Ie(e.createdAt)
2356
- }), yi = async (e, n, r) => (await e.query({
2357
- table: gi,
2354
+ response: yi(e.response),
2355
+ createdAt: Re(e.createdAt)
2356
+ }), xi = async (e, n, r) => (await e.query({
2357
+ table: vi,
2358
2358
  predicate: t(u("scope", n), u("key", r)),
2359
2359
  order: [],
2360
2360
  take: 1,
2361
2361
  skip: void 0,
2362
2362
  projection: void 0
2363
- }))[0] ?? null, bi = (e) => ({
2363
+ }))[0] ?? null, Si = (e) => ({
2364
2364
  get: async (t, n) => {
2365
- let r = await yi(e, t, n);
2366
- return r ? vi(r) : null;
2365
+ let r = await xi(e, t, n);
2366
+ return r ? bi(r) : null;
2367
2367
  },
2368
2368
  claim: async (t, n, r, i) => {
2369
2369
  for (let a = 0; a < 2; a++) {
2370
2370
  let a = f({
2371
2371
  kind: "typeid",
2372
2372
  prefix: "idem"
2373
- }, gi), o = await e.insertIgnore(gi, {
2373
+ }, vi), o = await e.insertIgnore(vi, {
2374
2374
  id: a,
2375
2375
  scope: t,
2376
2376
  key: n,
@@ -2379,11 +2379,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2379
2379
  createdAt: new Date(r)
2380
2380
  }, { conflictColumns: ["scope", "key"] });
2381
2381
  if (o.id === a) return "claimed";
2382
- if (r - Ie(o.createdAt) < i) return vi(o);
2383
- await e.delete(gi, o.id);
2382
+ if (r - Re(o.createdAt) < i) return bi(o);
2383
+ await e.delete(vi, o.id);
2384
2384
  }
2385
- let a = await yi(e, t, n);
2386
- return a ? vi(a) : {
2385
+ let a = await xi(e, t, n);
2386
+ return a ? bi(a) : {
2387
2387
  scope: t,
2388
2388
  key: n,
2389
2389
  status: "in_flight",
@@ -2392,36 +2392,36 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2392
2392
  };
2393
2393
  },
2394
2394
  complete: async (t, n, r, i) => {
2395
- let a = await yi(e, t, n);
2396
- a && await e.update(gi, a.id, {
2395
+ let a = await xi(e, t, n);
2396
+ a && await e.update(vi, a.id, {
2397
2397
  status: "completed",
2398
2398
  response: r
2399
2399
  });
2400
2400
  },
2401
2401
  release: async (t, n) => {
2402
- let r = await yi(e, t, n);
2403
- r && await e.delete(gi, r.id);
2402
+ let r = await xi(e, t, n);
2403
+ r && await e.delete(vi, r.id);
2404
2404
  }
2405
- }), J = "_voltro_kv", xi = (e) => {
2405
+ }), J = "_voltro_kv", Ci = (e) => {
2406
2406
  if (e == null) return null;
2407
2407
  if (e instanceof Date) return e.getTime();
2408
2408
  if (typeof e == "number") return e;
2409
2409
  let t = Date.parse(String(e));
2410
2410
  return Number.isNaN(t) ? null : t;
2411
- }, Si = (e, t) => {
2412
- let n = xi(e.expiresAt);
2411
+ }, wi = (e, t) => {
2412
+ let n = Ci(e.expiresAt);
2413
2413
  return n !== null && n <= t;
2414
- }, Ci = (e) => e === null ? null : JSON.parse(e), wi = async (e, t) => (await e.query({
2414
+ }, Ti = (e) => e === null ? null : JSON.parse(e), Ei = async (e, t) => (await e.query({
2415
2415
  table: J,
2416
2416
  predicate: u("key", t),
2417
2417
  order: [],
2418
2418
  take: 1,
2419
2419
  skip: void 0,
2420
2420
  projection: void 0
2421
- }))[0] ?? null, Ti = (e) => {
2421
+ }))[0] ?? null, Di = (e) => {
2422
2422
  let n = (e, t, n) => M.tryPromise({
2423
2423
  try: n,
2424
- catch: (n) => new mt({
2424
+ catch: (n) => new ht({
2425
2425
  operation: e,
2426
2426
  key: t,
2427
2427
  cause: String(n)
@@ -2429,8 +2429,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2429
2429
  });
2430
2430
  return {
2431
2431
  get: (t) => n("get", t, async () => {
2432
- let n = await wi(e, t);
2433
- return n === null ? F.none() : Si(n, Date.now()) ? (await e.delete(J, n.id), F.none()) : F.some(Ci(n.value));
2432
+ let n = await Ei(e, t);
2433
+ return n === null ? F.none() : wi(n, Date.now()) ? (await e.delete(J, n.id), F.none()) : F.some(Ti(n.value));
2434
2434
  }),
2435
2435
  set: (t, r, i) => n("set", t, async () => {
2436
2436
  let n = Date.now(), a = i?.ttlMs !== void 0 && i.ttlMs > 0 ? new Date(n + i.ttlMs) : null, o = f({
@@ -2453,17 +2453,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2453
2453
  });
2454
2454
  }),
2455
2455
  delete: (t) => n("delete", t, async () => {
2456
- let n = await wi(e, t);
2456
+ let n = await Ei(e, t);
2457
2457
  if (n === null) return !1;
2458
- let r = !Si(n, Date.now());
2458
+ let r = !wi(n, Date.now());
2459
2459
  return await e.delete(J, n.id), r;
2460
2460
  }),
2461
2461
  has: (t) => n("has", t, async () => {
2462
- let n = await wi(e, t);
2463
- return n === null ? !1 : Si(n, Date.now()) ? (await e.delete(J, n.id), !1) : !0;
2462
+ let n = await Ei(e, t);
2463
+ return n === null ? !1 : wi(n, Date.now()) ? (await e.delete(J, n.id), !1) : !0;
2464
2464
  }),
2465
2465
  list: (r) => n("list", "", async () => {
2466
- let n = Date.now(), i = ne(S("expiresAt"), h("expiresAt", new Date(n))), a = r === "" ? i : t(o("key", r), i), s = await e.query({
2466
+ let n = Date.now(), i = re(S("expiresAt"), h("expiresAt", new Date(n))), a = r === "" ? i : t(o("key", r), i), s = await e.query({
2467
2467
  table: J,
2468
2468
  predicate: a,
2469
2469
  order: [],
@@ -2471,7 +2471,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2471
2471
  skip: void 0,
2472
2472
  projection: void 0
2473
2473
  }), c = [];
2474
- for (let e of s) Si(e, n) || (r === "" || e.key.startsWith(r)) && c.push(e.key);
2474
+ for (let e of s) wi(e, n) || (r === "" || e.key.startsWith(r)) && c.push(e.key);
2475
2475
  return c;
2476
2476
  }),
2477
2477
  clear: () => n("clear", "", async () => {
@@ -2481,8 +2481,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2481
2481
  } });
2482
2482
  })
2483
2483
  };
2484
- }, Ei = async ({ store: e, env: t = process.env }) => {
2485
- let n = (t.KV_BACKEND ?? "database").toLowerCase(), r = n === "redis" ? "redis" : n === "memory" ? "memory" : "database", i = r === "redis" ? vt(t.KV_KEY_PREFIX ? { keyPrefix: t.KV_KEY_PREFIX } : {}).pipe(N.provide(gt)) : r === "memory" ? _t() : N.succeed(ht, ht.of(Ti(e))), a = We.make(pt.Default.pipe(N.provide(i))), o = await a.runPromise(pt);
2484
+ }, Oi = async ({ store: e, env: t = process.env }) => {
2485
+ let n = (t.KV_BACKEND ?? "database").toLowerCase(), r = n === "redis" ? "redis" : n === "memory" ? "memory" : "database", i = r === "redis" ? yt(t.KV_KEY_PREFIX ? { keyPrefix: t.KV_KEY_PREFIX } : {}).pipe(N.provide(_t)) : r === "memory" ? vt() : N.succeed(gt, gt.of(Di(e))), a = Ge.make(mt.Default.pipe(N.provide(i))), o = await a.runPromise(mt);
2486
2486
  return {
2487
2487
  kv: {
2488
2488
  get: (e) => a.runPromise(o.get(e)).then((e) => F.getOrUndefined(e)),
@@ -2497,7 +2497,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2497
2497
  backend: r,
2498
2498
  dispose: () => a.dispose()
2499
2499
  };
2500
- }, Di = {
2500
+ }, ki = {
2501
2501
  get: () => Promise.resolve(void 0),
2502
2502
  getOrElse: (e, t) => Promise.resolve(t()),
2503
2503
  set: () => Promise.resolve(),
@@ -2505,7 +2505,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2505
2505
  has: () => Promise.resolve(!1),
2506
2506
  list: () => Promise.resolve([]),
2507
2507
  clear: () => Promise.resolve()
2508
- }, Oi = "_voltro_api_keys", ki = (e) => fe("sha256").update(e, "utf8").digest("hex"), Ai = (e = "voltro_") => `${e}${pe(30).toString("base64url")}`, ji = (e) => ({
2508
+ }, Ai = "_voltro_api_keys", ji = (e) => me("sha256").update(e, "utf8").digest("hex"), Mi = (e = "voltro_") => `${e}${he(30).toString("base64url")}`, Ni = (e) => ({
2509
2509
  id: e.id,
2510
2510
  name: e.name,
2511
2511
  keyPrefix: e.keyPrefix,
@@ -2515,17 +2515,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2515
2515
  expiresAt: e.expiresAt,
2516
2516
  revokedAt: e.revokedAt,
2517
2517
  createdAt: e.createdAt
2518
- }), Mi = (e, t) => e.revokedAt === null && (e.expiresAt === null || e.expiresAt > t), Ni = (e, t = {}) => {
2518
+ }), Pi = (e, t) => e.revokedAt === null && (e.expiresAt === null || e.expiresAt > t), Fi = (e, t = {}) => {
2519
2519
  let n = t.prefix ?? "voltro_", r = async (t) => {
2520
- let r = Ai(n), i = f({
2520
+ let r = Mi(n), i = f({
2521
2521
  kind: "typeid",
2522
2522
  prefix: "apikey"
2523
- }, Oi), a = t.scopes ?? [], o = t.expiresAt == null ? null : t.expiresAt instanceof Date ? t.expiresAt.getTime() : t.expiresAt;
2523
+ }, Ai), a = t.scopes ?? [], o = t.expiresAt == null ? null : t.expiresAt instanceof Date ? t.expiresAt.getTime() : t.expiresAt;
2524
2524
  return await e.insert({
2525
2525
  id: i,
2526
2526
  tenantId: t.tenantId ?? null,
2527
2527
  name: t.name,
2528
- hashedKey: ki(r),
2528
+ hashedKey: ji(r),
2529
2529
  keyPrefix: r.slice(0, n.length + 6),
2530
2530
  scopes: a,
2531
2531
  lastUsedAt: null,
@@ -2543,7 +2543,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2543
2543
  };
2544
2544
  }, i = async (t, n = Date.now()) => {
2545
2545
  let r = await e.findByHash(t);
2546
- return !r || !Mi(r, n) ? null : (await e.patch(r.id, { lastUsedAt: n }), {
2546
+ return !r || !Pi(r, n) ? null : (await e.patch(r.id, { lastUsedAt: n }), {
2547
2547
  id: r.id,
2548
2548
  tenantId: r.tenantId ?? "",
2549
2549
  createdBy: r.createdBy ?? null,
@@ -2553,7 +2553,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2553
2553
  return {
2554
2554
  issue: r,
2555
2555
  resolveByHash: i,
2556
- verify: (e, t) => i(ki(e), t),
2556
+ verify: (e, t) => i(ji(e), t),
2557
2557
  revoke: async (t, n = Date.now()) => await e.findById(t) ? (await e.patch(t, { revokedAt: n }), !0) : !1,
2558
2558
  rotate: async (t, n = Date.now()) => {
2559
2559
  let i = await e.findById(t);
@@ -2564,9 +2564,9 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2564
2564
  createdBy: i.createdBy
2565
2565
  })) : null;
2566
2566
  },
2567
- list: async (t) => (await e.listByTenant(t)).map(ji)
2567
+ list: async (t) => (await e.listByTenant(t)).map(Ni)
2568
2568
  };
2569
- }, Pi = () => {
2569
+ }, Ii = () => {
2570
2570
  let e = /* @__PURE__ */ new Map();
2571
2571
  return {
2572
2572
  insert: async (t) => {
@@ -2583,21 +2583,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2583
2583
  });
2584
2584
  }
2585
2585
  };
2586
- }, Fi = (e) => e == null ? null : e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : null, Ii = (e) => ({
2586
+ }, Li = (e) => e == null ? null : e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : null, Ri = (e) => ({
2587
2587
  id: String(e.id),
2588
2588
  tenantId: e.tenantId ?? null,
2589
2589
  name: String(e.name),
2590
2590
  hashedKey: String(e.hashedKey),
2591
2591
  keyPrefix: String(e.keyPrefix),
2592
2592
  scopes: e.scopes ?? null,
2593
- lastUsedAt: Fi(e.lastUsedAt),
2594
- expiresAt: Fi(e.expiresAt),
2595
- revokedAt: Fi(e.revokedAt),
2593
+ lastUsedAt: Li(e.lastUsedAt),
2594
+ expiresAt: Li(e.expiresAt),
2595
+ revokedAt: Li(e.revokedAt),
2596
2596
  createdBy: e.createdBy ?? null,
2597
- createdAt: Fi(e.createdAt) ?? 0
2598
- }), Li = (e) => {
2597
+ createdAt: Li(e.createdAt) ?? 0
2598
+ }), zi = (e) => {
2599
2599
  let t = async (t) => await e.query({
2600
- table: Oi,
2600
+ table: Ai,
2601
2601
  predicate: t,
2602
2602
  order: [],
2603
2603
  take: void 0,
@@ -2615,32 +2615,32 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2615
2615
  };
2616
2616
  return {
2617
2617
  insert: async (t) => {
2618
- await e.insert(Oi, n(t));
2618
+ await e.insert(Ai, n(t));
2619
2619
  },
2620
2620
  findByHash: async (e) => {
2621
2621
  let n = await t(u("hashedKey", e));
2622
- return n[0] ? Ii(n[0]) : null;
2622
+ return n[0] ? Ri(n[0]) : null;
2623
2623
  },
2624
2624
  findById: async (e) => {
2625
2625
  let n = await t(u("id", e));
2626
- return n[0] ? Ii(n[0]) : null;
2626
+ return n[0] ? Ri(n[0]) : null;
2627
2627
  },
2628
- listByTenant: async (e) => (await t(e === null ? void 0 : u("tenantId", e))).map(Ii).filter((t) => e === null || t.tenantId === e),
2628
+ listByTenant: async (e) => (await t(e === null ? void 0 : u("tenantId", e))).map(Ri).filter((t) => e === null || t.tenantId === e),
2629
2629
  patch: async (t, r) => {
2630
- await e.update(Oi, t, n(r));
2630
+ await e.update(Ai, t, n(r));
2631
2631
  }
2632
2632
  };
2633
- }, Ri = (e, t = {}) => yt({
2633
+ }, Bi = (e, t = {}) => bt({
2634
2634
  id: "voltro-apikey",
2635
2635
  ...t.prefix ? { prefix: t.prefix } : {},
2636
2636
  resolveKey: (t) => e.resolveByHash(t)
2637
- }), zi = (e) => {
2637
+ }), Vi = (e) => {
2638
2638
  let t = e.subject;
2639
2639
  return {
2640
2640
  id: t.id ?? null,
2641
2641
  tenantId: t.tenantId ?? null
2642
2642
  };
2643
- }, Bi = (e, t = "/v1/api-keys") => {
2643
+ }, Hi = (e, t = "/v1/api-keys") => {
2644
2644
  let n = L.Struct({
2645
2645
  id: L.String,
2646
2646
  name: L.String,
@@ -2653,11 +2653,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2653
2653
  createdAt: L.Number
2654
2654
  });
2655
2655
  return [
2656
- st({
2656
+ ct({
2657
2657
  method: "POST",
2658
2658
  path: `${t}/issue`,
2659
2659
  summary: "Issue an API key (the token is returned ONCE).",
2660
- guards: [lt(_e)],
2660
+ guards: [ut(ye)],
2661
2661
  input: L.Struct({ body: L.Struct({
2662
2662
  name: L.String,
2663
2663
  scopes: L.optional(L.Array(L.String)),
@@ -2669,7 +2669,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2669
2669
  keyPrefix: L.String
2670
2670
  }),
2671
2671
  handler: async (t, n) => {
2672
- let r = t.body, i = zi(n), a = await e.issue({
2672
+ let r = t.body, i = Vi(n), a = await e.issue({
2673
2673
  tenantId: i.tenantId,
2674
2674
  name: r.name,
2675
2675
  ...r.scopes ? { scopes: r.scopes } : {},
@@ -2683,68 +2683,72 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2683
2683
  };
2684
2684
  }
2685
2685
  }),
2686
- st({
2686
+ ct({
2687
2687
  method: "GET",
2688
2688
  path: t,
2689
2689
  summary: "List the caller tenant's API keys (no secrets).",
2690
- guards: [lt(_e)],
2690
+ guards: [ut(ye)],
2691
2691
  input: L.Struct({}),
2692
2692
  output: L.Struct({ keys: L.Array(n) }),
2693
- handler: async (t, n) => ({ keys: [...await e.list(zi(n).tenantId)] })
2693
+ handler: async (t, n) => ({ keys: [...await e.list(Vi(n).tenantId)] })
2694
2694
  }),
2695
- st({
2695
+ ct({
2696
2696
  method: "POST",
2697
2697
  path: `${t}/revoke`,
2698
2698
  summary: "Revoke an API key by id.",
2699
- guards: [lt(_e)],
2699
+ guards: [ut(ye)],
2700
2700
  input: L.Struct({ body: L.Struct({ id: L.String }) }),
2701
2701
  output: L.Struct({ ok: L.Boolean }),
2702
2702
  handler: async (t, n) => ({ ok: await e.revoke(t.body.id) })
2703
2703
  })
2704
2704
  ];
2705
- }, Vi = class extends L.TaggedError()("TenantScopeViolation", {
2705
+ }, Ui = {
2706
+ type: "anonymous",
2707
+ id: null,
2708
+ tenantId: null
2709
+ }, Wi = class extends L.TaggedError()("TenantScopeViolation", {
2706
2710
  table: L.String,
2707
2711
  reason: L.String
2708
- }) {}, Hi = class extends L.TaggedError()("StoreOperationFailed", {
2712
+ }) {}, Gi = class extends L.TaggedError()("StoreOperationFailed", {
2709
2713
  operation: L.String,
2710
2714
  table: L.String,
2711
2715
  cause: L.String
2712
- }) {}, Ui = class extends L.TaggedError()("TableValidationFailed", {
2716
+ }) {}, Ki = class extends L.TaggedError()("TableValidationFailed", {
2713
2717
  table: L.String,
2714
2718
  summary: L.String,
2715
2719
  issues: L.Array(L.Struct({
2716
2720
  path: L.String,
2717
2721
  message: L.String
2718
2722
  }))
2719
- }) {}, Wi = class extends Re.Tag("@voltro/EffectStore")() {}, Gi = (e, t) => (n) => n instanceof Vi ? n : new Hi({
2723
+ }) {}, qi = class extends Be.Tag("@voltro/EffectStore")() {}, Ji = (e, t) => (n) => n instanceof Wi ? n : new Gi({
2720
2724
  operation: e,
2721
2725
  table: t,
2722
2726
  cause: String(n)
2723
- }), Ki = (e, t, n) => M.tryPromise({
2727
+ }), Yi = (e, t, n) => M.tryPromise({
2724
2728
  try: n,
2725
- catch: Gi(e, t)
2726
- }), qi = (e) => N.succeed(Wi, {
2727
- query: ((t) => Ki("query", t.table, () => e.query(t))),
2728
- insert: (t, n) => Ki("insert", t, () => e.insert(t, n)),
2729
- update: (t, n, r) => Ki("update", t, () => e.update(t, n, r)),
2730
- delete: (t, n) => Ki("delete", t, () => e.delete(t, n)),
2731
- hardDelete: (t, n) => Ki("hardDelete", t, () => e.hardDelete(t, n))
2732
- }), Ji = (e) => it.make(e.name, {
2729
+ catch: Ji(e, t)
2730
+ }), Xi = (e) => N.succeed(qi, {
2731
+ query: ((t) => Yi("query", t.table, () => e.query(t))),
2732
+ insert: (t, n) => Yi("insert", t, () => e.insert(t, n)),
2733
+ update: (t, n, r) => Yi("update", t, () => e.update(t, n, r)),
2734
+ delete: (t, n) => Yi("delete", t, () => e.delete(t, n)),
2735
+ hardDelete: (t, n) => Yi("hardDelete", t, () => e.hardDelete(t, n))
2736
+ }), Zi = (e) => at.make(e.name, {
2733
2737
  payload: e.payloadSchema,
2734
- success: Ee,
2738
+ success: Oe,
2735
2739
  error: e.errorSchema
2736
- }), Yi = (e, t) => ({
2740
+ }), Qi = (e, t) => ({
2737
2741
  id: t,
2738
2742
  workflowName: e,
2739
2743
  executionId: t,
2740
2744
  status: "running"
2741
- }), Xi = Yi, Zi = (e) => {
2742
- let t = j.failureOption(e), n = t._tag === "Some" ? t.value : j.squash(e);
2745
+ }), $i = Qi, ea = (e) => {
2746
+ let t = A.failureOption(e), n = t._tag === "Some" ? t.value : A.squash(e);
2743
2747
  return {
2744
2748
  tag: n && typeof n == "object" && "_tag" in n ? String(n._tag) : null,
2745
2749
  message: n?.message ?? String(n)
2746
2750
  };
2747
- }, Qi = (e, t, n) => {
2751
+ }, ta = (e, t, n) => {
2748
2752
  if (n === void 0) return {
2749
2753
  id: t,
2750
2754
  workflowName: e,
@@ -2759,7 +2763,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2759
2763
  };
2760
2764
  if (typeof n == "object" && n && n._tag === "Complete") {
2761
2765
  let r = n.exit;
2762
- return Ue.isSuccess(r) ? {
2766
+ return We.isSuccess(r) ? {
2763
2767
  id: t,
2764
2768
  workflowName: e,
2765
2769
  executionId: t,
@@ -2770,7 +2774,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2770
2774
  workflowName: e,
2771
2775
  executionId: t,
2772
2776
  status: "failed",
2773
- error: Zi(r.cause)
2777
+ error: ea(r.cause)
2774
2778
  };
2775
2779
  }
2776
2780
  return {
@@ -2779,17 +2783,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2779
2783
  executionId: t,
2780
2784
  status: "running"
2781
2785
  };
2782
- }, $i = (e) => new Promise((t) => setTimeout(t, e)), ea = (e) => {
2786
+ }, na = (e) => new Promise((t) => setTimeout(t, e)), ra = (e) => {
2783
2787
  let t = new Map(e.workflows.map((e) => [e.definition.name, e.definition])), n = (e) => {
2784
2788
  let n = t.get(e);
2785
2789
  if (!n) throw Error(`Unknown workflow: ${e}`);
2786
2790
  return n;
2787
2791
  }, r = async (t, r) => {
2788
2792
  let i = n(t);
2789
- return Qi(t, r, await e.runEffect(i.poll(r)));
2790
- }, i = async () => e.runEffect(bt()), a = async (t, r, i) => {
2793
+ return ta(t, r, await e.runEffect(i.poll(r)));
2794
+ }, i = async () => e.runEffect(xt()), a = async (t, r, i) => {
2791
2795
  let a = n(t), o;
2792
- return i?.callerContext !== void 0 && (o = await e.runEffect(a.executionId(r)), await e.rememberStartContext?.(t, o, i.callerContext)), i?.wait ? (await e.runEffect(a.execute(r)), Yi(t, o ?? await e.runEffect(a.executionId(r)))) : Yi(t, await e.runEffect(a.execute(r, { discard: !0 })));
2796
+ return i?.callerContext !== void 0 && (o = await e.runEffect(a.executionId(r)), await e.rememberStartContext?.(t, o, i.callerContext)), i?.wait ? (await e.runEffect(a.execute(r)), Qi(t, o ?? await e.runEffect(a.executionId(r)))) : Qi(t, await e.runEffect(a.execute(r, { discard: !0 })));
2793
2797
  };
2794
2798
  return {
2795
2799
  start: a,
@@ -2827,7 +2831,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2827
2831
  let e = await r(i, a);
2828
2832
  if (e.status === "succeeded" || e.status === "failed" || e.status === "cancelled") return e;
2829
2833
  if (o?.timeoutMs !== void 0 && Date.now() - s >= o.timeoutMs) throw Error(`Timed out waiting for workflow '${i}' run '${a}'`);
2830
- await $i(c);
2834
+ await na(c);
2831
2835
  }
2832
2836
  }),
2833
2837
  cancel: async (t, r) => {
@@ -2865,22 +2869,22 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2865
2869
  return e.retry(t, n);
2866
2870
  }
2867
2871
  };
2868
- }, ta = (e, t) => ({
2872
+ }, ia = (e, t) => ({
2869
2873
  ...e,
2870
2874
  start: async (n, r, i) => {
2871
2875
  if (i?.wait) throw Error("ctx.workflows.start(..., { wait: true }) is not allowed inside a mutation transaction; start the workflow and wait after commit.");
2872
2876
  let a = await e.executionId(n, r);
2873
- return t(() => e.start(n, r)), Yi(n, a);
2877
+ return t(() => e.start(n, r)), Qi(n, a);
2874
2878
  },
2875
2879
  child: async (n, r, i) => {
2876
2880
  if (i?.wait) throw Error("ctx.workflows.child(..., { wait: true }) is not allowed inside a mutation transaction; start the child workflow and wait after commit.");
2877
2881
  let a = await e.executionId(n, r);
2878
- return t(() => e.child(n, r, i)), Yi(n, a);
2882
+ return t(() => e.child(n, r, i)), Qi(n, a);
2879
2883
  },
2880
2884
  run: async () => {
2881
2885
  throw Error("ctx.workflows.run(...) is not allowed inside a mutation transaction; use ctx.workflows.start(...) so the workflow starts after commit.");
2882
2886
  }
2883
- }), na = (e, t) => ({
2887
+ }), aa = (e, t) => ({
2884
2888
  ...e,
2885
2889
  start: (n, r, i) => e.start(n, r, {
2886
2890
  ...i,
@@ -2894,7 +2898,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2894
2898
  ...i,
2895
2899
  callerContext: t
2896
2900
  })
2897
- }), ra = (e) => {
2901
+ }), oa = (e) => {
2898
2902
  let t = () => {
2899
2903
  let t = e();
2900
2904
  if (!t) throw Error("Workflow runtime is not ready yet");
@@ -2915,55 +2919,59 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
2915
2919
  listRuns: ((e) => t().listRuns(e)),
2916
2920
  retry: (e, n) => t().retry(e, n)
2917
2921
  };
2918
- }, ia = (e, t) => {
2922
+ }, sa = (e, t) => {
2919
2923
  let n = {};
2920
- for (let r of e) n[r.definition.name] = (e) => (t ? M.promise(() => t.start(r.definition.name, e)) : r.definition.execute(e, { discard: !0 }).pipe(M.map((e) => Yi(r.definition.name, e)))).pipe(M.withSpan(`workflow.${r.definition.name}`, { attributes: { "framework.kind": "workflow" } }));
2924
+ for (let r of e) n[r.definition.name] = (e) => (t ? M.promise(() => t.start(r.definition.name, e)) : r.definition.execute(e, { discard: !0 }).pipe(M.map((e) => Qi(r.definition.name, e)))).pipe(M.withSpan(`workflow.${r.definition.name}`, { attributes: { "framework.kind": "workflow" } }));
2921
2925
  return n;
2922
- }, aa = (e, t, n) => e.map((e) => e.definition.toLayer(((r, i) => {
2926
+ }, ca = (e, t, n) => e.map((e) => e.definition.toLayer(((r, i) => {
2923
2927
  let a = t.resolveStartContext?.(e.definition.name, i);
2924
2928
  return (a === void 0 ? M.succeed(void 0) : M.promise(() => Promise.resolve(a))).pipe(M.flatMap((a) => {
2925
- let o = t.buildContext(a, {
2929
+ let o = {
2930
+ ...a,
2931
+ subject: a?.subject ?? Ui,
2932
+ traceId: a?.traceId ?? "workflow-bootstrap"
2933
+ }, s = t.buildContext(o, {
2926
2934
  workflowName: e.definition.name,
2927
2935
  executionId: i,
2928
2936
  parentExecutionId: a?.parentExecutionId ?? null,
2929
2937
  parentClosePolicy: a?.parentClosePolicy ?? null
2930
- }), s = e.buildExecute(o), c = (n?.(e, s, a) ?? s)(r, i), l = o?.store;
2931
- return l === void 0 ? c : M.provide(c, qi(l));
2938
+ }), c = e.buildExecute(s), l = (n?.(e, c, o) ?? c)(r, i), u = s?.store;
2939
+ return u === void 0 ? l : M.provide(l, Xi(u));
2932
2940
  }));
2933
- }))), oa = (e) => ({
2941
+ }))), la = (e) => ({
2934
2942
  _tag: "workflowEventTrigger",
2935
2943
  ...e
2936
- }), sa = oa, ca = (e) => typeof e == "object" && !!e && e._tag === "workflowEventTrigger", la = () => {
2944
+ }), ua = la, da = (e) => typeof e == "object" && !!e && e._tag === "workflowEventTrigger", fa = () => {
2937
2945
  let e = globalThis.crypto;
2938
2946
  return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`;
2939
- }, ua = (e) => `${e}_${la()}`, da = (e) => e.id ?? `${e.event}->${e.workflow}`, fa = E("_voltro_workflow_events", {
2947
+ }, pa = (e) => `${e}_${fa()}`, ma = (e) => e.id ?? `${e.event}->${e.workflow}`, ha = T("_voltro_workflow_events", {
2940
2948
  id: v({ prefix: "wfe" }),
2941
- name: D(),
2949
+ name: E(),
2942
2950
  payload: C(),
2943
- source: D(),
2951
+ source: E(),
2944
2952
  subject: C().nullable(),
2945
- traceId: D().nullable(),
2946
- occurredAt: O().default("now")
2947
- }).index(["name"]).index(["source"]).index(["occurredAt"]).reactive(), pa = E("_voltro_workflow_event_deliveries", {
2953
+ traceId: E().nullable(),
2954
+ occurredAt: D().default("now")
2955
+ }).index(["name"]).index(["source"]).index(["occurredAt"]).reactive(), ga = T("_voltro_workflow_event_deliveries", {
2948
2956
  id: v({ prefix: "wfed" }),
2949
- eventId: D(),
2950
- eventName: D(),
2951
- triggerId: D(),
2952
- workflowName: D(),
2953
- executionId: D().nullable(),
2954
- status: D().oneOf([
2957
+ eventId: E(),
2958
+ eventName: E(),
2959
+ triggerId: E(),
2960
+ workflowName: E(),
2961
+ executionId: E().nullable(),
2962
+ status: E().oneOf([
2955
2963
  "starting",
2956
2964
  "started",
2957
2965
  "skipped",
2958
2966
  "failed"
2959
2967
  ]).default("starting"),
2960
- idempotencyKey: D().unique(),
2968
+ idempotencyKey: E().unique(),
2961
2969
  skipped: r().default(!1),
2962
- errorMessage: D().nullable(),
2963
- createdAt: O().default("now"),
2964
- completedAt: O().nullable()
2965
- }).index(["eventId"]).index(["eventName"]).index(["triggerId"]).index(["workflowName"]).index(["status"]).reactive(), ma = (e) => {
2966
- let t = e.makeId ?? ua, n = /* @__PURE__ */ new Map();
2970
+ errorMessage: E().nullable(),
2971
+ createdAt: D().default("now"),
2972
+ completedAt: D().nullable()
2973
+ }).index(["eventId"]).index(["eventName"]).index(["triggerId"]).index(["workflowName"]).index(["status"]).reactive(), _a = (e) => {
2974
+ let t = e.makeId ?? pa, n = /* @__PURE__ */ new Map();
2967
2975
  for (let t of e.triggers) {
2968
2976
  let e = n.get(t.event);
2969
2977
  e ? e.push(t) : n.set(t.event, [t]);
@@ -3004,7 +3012,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3004
3012
  });
3005
3013
  let p = o(n), m = [];
3006
3014
  for (let o of p) {
3007
- let s = da(o), l = o.workflow, d;
3015
+ let s = ma(o), l = o.workflow, d;
3008
3016
  try {
3009
3017
  let p = o.idempotencyKey?.(f) ?? `${c}:${s}`;
3010
3018
  if (o.filter && !await o.filter(f)) {
@@ -3107,56 +3115,56 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3107
3115
  triggered: m
3108
3116
  };
3109
3117
  } };
3110
- }, ha = A({ scope: "voltro:outbox" }), Y = "_voltro_outbox", ga = {
3118
+ }, va = k({ scope: "voltro:outbox" }), Y = "_voltro_outbox", ya = {
3111
3119
  kind: "typeid",
3112
3120
  prefix: "obx"
3113
- }, _a = E(Y, {
3121
+ }, ba = T(Y, {
3114
3122
  id: v({ prefix: "obx" }),
3115
- effect: D(),
3123
+ effect: E(),
3116
3124
  payload: C(),
3117
- status: D(),
3125
+ status: E(),
3118
3126
  attempts: b(),
3119
3127
  maxAttempts: b(),
3120
- nextAttemptAt: O(),
3121
- idempotencyKey: D().nullable(),
3122
- lastError: D().nullable(),
3123
- subjectId: D().nullable(),
3124
- tenantId: D().nullable(),
3125
- traceId: D().nullable(),
3126
- createdAt: O(),
3127
- deliveredAt: O().nullable(),
3128
- resendRequestedBy: D().nullable(),
3129
- resendReason: D().nullable(),
3128
+ nextAttemptAt: D(),
3129
+ idempotencyKey: E().nullable(),
3130
+ lastError: E().nullable(),
3131
+ subjectId: E().nullable(),
3132
+ tenantId: E().nullable(),
3133
+ traceId: E().nullable(),
3134
+ createdAt: D(),
3135
+ deliveredAt: D().nullable(),
3136
+ resendRequestedBy: E().nullable(),
3137
+ resendReason: E().nullable(),
3130
3138
  resendCount: b()
3131
- }), va = "_voltro_outbox_attempts", ya = {
3139
+ }), xa = "_voltro_outbox_attempts", Sa = {
3132
3140
  kind: "typeid",
3133
3141
  prefix: "obxa"
3134
- }, ba = E(va, {
3142
+ }, Ca = T(xa, {
3135
3143
  id: v({ prefix: "obxa" }),
3136
- outboxId: D(),
3137
- effect: D(),
3144
+ outboxId: E(),
3145
+ effect: E(),
3138
3146
  attempt: b(),
3139
- trigger: D().oneOf(["automatic", "manual"]),
3140
- triggeredBy: D().nullable(),
3141
- reason: D().nullable(),
3142
- outcome: D().oneOf([
3147
+ trigger: E().oneOf(["automatic", "manual"]),
3148
+ triggeredBy: E().nullable(),
3149
+ reason: E().nullable(),
3150
+ outcome: E().oneOf([
3143
3151
  "delivered",
3144
3152
  "failed",
3145
3153
  "dead"
3146
3154
  ]),
3147
- startedAt: O(),
3148
- finishedAt: O(),
3155
+ startedAt: D(),
3156
+ finishedAt: D(),
3149
3157
  durationMs: b(),
3150
- error: D().nullable(),
3158
+ error: E().nullable(),
3151
3159
  response: C().nullable(),
3152
- subjectId: D().nullable(),
3153
- tenantId: D().nullable(),
3154
- traceId: D().nullable()
3155
- }).index(["outboxId", "attempt"]).index(["startedAt"]).index(["outcome"]), xa = (e) => {
3160
+ subjectId: E().nullable(),
3161
+ tenantId: E().nullable(),
3162
+ traceId: E().nullable()
3163
+ }).index(["outboxId", "attempt"]).index(["startedAt"]).index(["outcome"]), wa = (e) => {
3156
3164
  if (e.effect.trim() === "") throw Error("defineOutboxHandler: `effect` must be a non-empty name");
3157
3165
  if (e.maxAttempts !== void 0 && e.maxAttempts < 1) throw Error(`defineOutboxHandler("${e.effect}"): maxAttempts must be >= 1`);
3158
3166
  return e;
3159
- }, Sa = 8, Ca = (e) => ({
3167
+ }, Ta = 8, Ea = (e) => ({
3160
3168
  enqueue: async (n, r, i) => {
3161
3169
  let a = (e.now ?? (() => /* @__PURE__ */ new Date()))(), o = i?.idempotencyKey;
3162
3170
  if (o !== void 0) {
@@ -3171,12 +3179,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3171
3179
  if (n !== void 0) return n.id;
3172
3180
  }
3173
3181
  let s = {
3174
- id: f(ga, Y),
3182
+ id: f(ya, Y),
3175
3183
  effect: n,
3176
3184
  payload: r,
3177
3185
  status: "pending",
3178
3186
  attempts: 0,
3179
- maxAttempts: i?.maxAttempts ?? Sa,
3187
+ maxAttempts: i?.maxAttempts ?? Ta,
3180
3188
  nextAttemptAt: new Date(a.getTime() + (i?.delayMs ?? 0)),
3181
3189
  idempotencyKey: o ?? null,
3182
3190
  lastError: null,
@@ -3223,7 +3231,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3223
3231
  });
3224
3232
  } else e.nudge?.();
3225
3233
  }
3226
- }), wa = (e) => Math.min(1e3 * 2 ** Math.max(0, e - 1), 5 * 6e4), Ta = 50, Ea = (e, t) => e.length <= t ? e : `${e.slice(0, t)}… [clipped]`, Da = (e) => {
3234
+ }), Da = (e) => Math.min(1e3 * 2 ** Math.max(0, e - 1), 5 * 6e4), Oa = 50, ka = (e, t) => e.length <= t ? e : `${e.slice(0, t)}… [clipped]`, Aa = (e) => {
3227
3235
  if (e == null) return null;
3228
3236
  let t = typeof e == "object" && !Array.isArray(e) ? e : { value: e }, n;
3229
3237
  try {
@@ -3233,13 +3241,13 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3233
3241
  }
3234
3242
  return n.length > 8192 ? {
3235
3243
  truncated: !0,
3236
- preview: Ea(n, 8192)
3244
+ preview: ka(n, 8192)
3237
3245
  } : t;
3238
- }, Oa = async (e, t, n) => {
3246
+ }, ja = async (e, t, n) => {
3239
3247
  let r = t.outboxRow, i = r.id, a = r.resendRequestedBy ?? null;
3240
3248
  try {
3241
- await e.insert(va, {
3242
- id: f(ya, va),
3249
+ await e.insert(xa, {
3250
+ id: f(Sa, xa),
3243
3251
  outboxId: i,
3244
3252
  effect: r.effect,
3245
3253
  attempt: t.attempt,
@@ -3250,14 +3258,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3250
3258
  startedAt: t.startedAt,
3251
3259
  finishedAt: t.finishedAt,
3252
3260
  durationMs: Math.max(0, t.finishedAt.getTime() - t.startedAt.getTime()),
3253
- error: t.error === null ? null : Ea(t.error, 4e3),
3254
- response: Da(t.response),
3261
+ error: t.error === null ? null : ka(t.error, 4e3),
3262
+ response: Aa(t.response),
3255
3263
  subjectId: r.subjectId ?? null,
3256
3264
  tenantId: r.tenantId ?? null,
3257
3265
  traceId: r.traceId ?? null
3258
3266
  });
3259
3267
  } catch (e) {
3260
- ha.warn("outbox: could not record delivery attempt (delivery itself is unaffected)", {
3268
+ va.warn("outbox: could not record delivery attempt (delivery itself is unaffected)", {
3261
3269
  outboxId: i,
3262
3270
  attempt: t.attempt
3263
3271
  }, e);
@@ -3265,7 +3273,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3265
3273
  }
3266
3274
  if (!(t.attempt <= n)) try {
3267
3275
  let t = await e.query({
3268
- table: va,
3276
+ table: xa,
3269
3277
  predicate: u("outboxId", i),
3270
3278
  order: [{
3271
3279
  column: "attempt",
@@ -3275,14 +3283,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3275
3283
  skip: void 0,
3276
3284
  projection: ["id"]
3277
3285
  });
3278
- for (let r of t.slice(0, Math.max(0, t.length - n))) await e.delete(va, r.id);
3286
+ for (let r of t.slice(0, Math.max(0, t.length - n))) await e.delete(xa, r.id);
3279
3287
  } catch (e) {
3280
- ha.warn("outbox: attempt-log trim failed; the log may exceed its cap", { outboxId: i }, e);
3288
+ va.warn("outbox: attempt-log trim failed; the log may exceed its cap", { outboxId: i }, e);
3281
3289
  }
3282
- }, ka = async (e) => {
3290
+ }, Ma = async (e) => {
3283
3291
  let n = (e.now ?? (() => /* @__PURE__ */ new Date()))(), r = await e.store.query({
3284
3292
  table: Y,
3285
- predicate: t(u("status", "pending"), te("nextAttemptAt", n)),
3293
+ predicate: t(u("status", "pending"), ne("nextAttemptAt", n)),
3286
3294
  order: [{
3287
3295
  column: "nextAttemptAt",
3288
3296
  direction: "asc"
@@ -3297,7 +3305,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3297
3305
  s++;
3298
3306
  continue;
3299
3307
  }
3300
- let u = t.attempts + 1, d = t.maxAttempts ?? Sa, f = /* @__PURE__ */ new Date(), p = e.attemptLogCap ?? 50;
3308
+ let u = t.attempts + 1, d = t.maxAttempts ?? Ta, f = /* @__PURE__ */ new Date(), p = e.attemptLogCap ?? 50;
3301
3309
  try {
3302
3310
  let n = await l.handler({
3303
3311
  payload: t.payload ?? {},
@@ -3306,7 +3314,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3306
3314
  tenantId: t.tenantId ?? null,
3307
3315
  traceId: t.traceId ?? null
3308
3316
  });
3309
- await Oa(e.store, {
3317
+ await ja(e.store, {
3310
3318
  outboxRow: t,
3311
3319
  attempt: u,
3312
3320
  outcome: "delivered",
@@ -3324,7 +3332,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3324
3332
  }), i++;
3325
3333
  } catch (i) {
3326
3334
  let s = i instanceof Error ? i.message : String(i), l = u >= d;
3327
- await Oa(e.store, {
3335
+ await ja(e.store, {
3328
3336
  outboxRow: t,
3329
3337
  attempt: u,
3330
3338
  outcome: l ? "dead" : "failed",
@@ -3336,20 +3344,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3336
3344
  status: l ? "dead" : "pending",
3337
3345
  attempts: u,
3338
3346
  lastError: s,
3339
- nextAttemptAt: new Date(n.getTime() + wa(u)),
3347
+ nextAttemptAt: new Date(n.getTime() + Da(u)),
3340
3348
  resendRequestedBy: null,
3341
3349
  resendReason: null
3342
- }), l ? (o++, ha.error("outbox effect dead-lettered after exhausting attempts", {
3350
+ }), l ? (o++, va.error("outbox effect dead-lettered after exhausting attempts", {
3343
3351
  id: r,
3344
3352
  effect: c,
3345
3353
  attempts: u,
3346
3354
  maxAttempts: d
3347
- }, i)) : (a++, ha.warn("outbox delivery failed; will retry", {
3355
+ }, i)) : (a++, va.warn("outbox delivery failed; will retry", {
3348
3356
  id: r,
3349
3357
  effect: c,
3350
3358
  attempt: u,
3351
3359
  maxAttempts: d,
3352
- retryInMs: wa(u)
3360
+ retryInMs: Da(u)
3353
3361
  }));
3354
3362
  }
3355
3363
  }
@@ -3359,47 +3367,47 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3359
3367
  dead: o,
3360
3368
  skipped: s
3361
3369
  };
3362
- }, Aa = A({ scope: "voltro:connections" }), X = "_voltro_connections", ja = {
3370
+ }, Na = k({ scope: "voltro:connections" }), X = "_voltro_connections", Pa = {
3363
3371
  kind: "typeid",
3364
3372
  prefix: "conn"
3365
- }, Ma = E(X, {
3373
+ }, Fa = T(X, {
3366
3374
  id: v({ prefix: "conn" }),
3367
- connectionId: D(),
3368
- subjectId: D(),
3369
- tenantId: D().nullable(),
3370
- kind: D().oneOf(["oauth2", "pat"]),
3371
- status: D().oneOf([
3375
+ connectionId: E(),
3376
+ subjectId: E(),
3377
+ tenantId: E().nullable(),
3378
+ kind: E().oneOf(["oauth2", "pat"]),
3379
+ status: E().oneOf([
3372
3380
  "connected",
3373
3381
  "expired",
3374
3382
  "revoked",
3375
3383
  "error"
3376
3384
  ]),
3377
- accessToken: D(),
3378
- refreshToken: D().nullable(),
3379
- expiresAt: O().nullable(),
3380
- scopes: D().nullable(),
3381
- accountId: D().nullable(),
3382
- accountLabel: D().nullable(),
3383
- lastError: D().nullable(),
3384
- refreshLockedUntil: O(),
3385
+ accessToken: E(),
3386
+ refreshToken: E().nullable(),
3387
+ expiresAt: D().nullable(),
3388
+ scopes: E().nullable(),
3389
+ accountId: E().nullable(),
3390
+ accountLabel: E().nullable(),
3391
+ lastError: E().nullable(),
3392
+ refreshLockedUntil: D(),
3385
3393
  metadata: C().nullable(),
3386
- connectedAt: O(),
3387
- updatedAt: O()
3388
- }).unique("bySubject", ["connectionId", "subjectId"]).index(["subjectId"]).reactive(), Na = "_voltro_connection_grants", Pa = {
3394
+ connectedAt: D(),
3395
+ updatedAt: D()
3396
+ }).unique("bySubject", ["connectionId", "subjectId"]).index(["subjectId"]).reactive(), Ia = "_voltro_connection_grants", La = {
3389
3397
  kind: "typeid",
3390
3398
  prefix: "cgrant"
3391
- }, Fa = E(Na, {
3399
+ }, Ra = T(Ia, {
3392
3400
  id: v({ prefix: "cgrant" }),
3393
- state: D().unique(),
3394
- connectionId: D(),
3395
- subjectId: D(),
3396
- tenantId: D().nullable(),
3397
- codeVerifier: D().nullable(),
3398
- redirectTo: D(),
3399
- createdAt: O(),
3400
- expiresAt: O()
3401
- }).index(["expiresAt"]), Ia = /^[a-z][a-z0-9-]*$/, La = (e) => {
3402
- if (!Ia.test(e.id)) throw Error(`defineConnection: id "${e.id}" must be lowercase kebab-case (it becomes a URL path segment).`);
3401
+ state: E().unique(),
3402
+ connectionId: E(),
3403
+ subjectId: E(),
3404
+ tenantId: E().nullable(),
3405
+ codeVerifier: E().nullable(),
3406
+ redirectTo: E(),
3407
+ createdAt: D(),
3408
+ expiresAt: D()
3409
+ }).index(["expiresAt"]), za = /^[a-z][a-z0-9-]*$/, Ba = (e) => {
3410
+ if (!za.test(e.id)) throw Error(`defineConnection: id "${e.id}" must be lowercase kebab-case (it becomes a URL path segment).`);
3403
3411
  if (e.kind === "oauth2") {
3404
3412
  for (let t of [
3405
3413
  "authorizeUrl",
@@ -3409,9 +3417,9 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3409
3417
  ]) if (typeof e[t] != "string" || e[t].length === 0) throw Error(`defineConnection("${e.id}"): \`${t}\` is required for kind 'oauth2'.`);
3410
3418
  }
3411
3419
  return e;
3412
- }, Ra = (e) => e.label ?? e.id, za = (e) => {
3413
- if (e.length !== 0 && pi() === void 0) throw Error(`connections: ${e.length} connection(s) declared (${e.map((e) => e.id).join(", ")}) but no field cipher is registered. Connection tokens are stored encrypted and there is no plaintext fallback. Enable \`@voltro/plugin-governance\` with \`governancePlugin({ fieldEncryption: { key: env.FIELD_ENCRYPTION_KEY } })\` (or call setFieldCipher at boot).`);
3414
- }, Ba = (e) => {
3420
+ }, Va = (e) => e.label ?? e.id, Ha = (e) => {
3421
+ if (e.length !== 0 && hi() === void 0) throw Error(`connections: ${e.length} connection(s) declared (${e.map((e) => e.id).join(", ")}) but no field cipher is registered. Connection tokens are stored encrypted and there is no plaintext fallback. Enable \`@voltro/plugin-governance\` with \`governancePlugin({ fieldEncryption: { key: env.FIELD_ENCRYPTION_KEY } })\` (or call setFieldCipher at boot).`);
3422
+ }, Ua = (e) => {
3415
3423
  let t = /* @__PURE__ */ new Map();
3416
3424
  for (let n of e) {
3417
3425
  if (t.has(n.id)) throw Error(`connections: duplicate connection id "${n.id}" — each *.connection.ts must declare a distinct id.`);
@@ -3421,14 +3429,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3421
3429
  get: (e) => t.get(e),
3422
3430
  list: () => [...t.values()]
3423
3431
  };
3424
- }, Va = (e) => {
3432
+ }, Wa = (e) => {
3425
3433
  if (e == null) return null;
3426
3434
  let t = e instanceof Date ? e : new Date(String(e));
3427
3435
  return Number.isNaN(t.getTime()) ? null : t;
3428
- }, Ha = (e) => Va(e)?.toISOString() ?? null, Ua = (e) => String(e ?? "").split(" ").filter((e) => e.length > 0), Wa = (e, t) => t === void 0 ? {
3436
+ }, Ga = (e) => Wa(e)?.toISOString() ?? null, Ka = (e) => String(e ?? "").split(" ").filter((e) => e.length > 0), qa = (e, t) => t === void 0 ? {
3429
3437
  connectionId: e.id,
3430
3438
  kind: e.kind,
3431
- label: Ra(e),
3439
+ label: Va(e),
3432
3440
  status: "disconnected",
3433
3441
  accountId: null,
3434
3442
  accountLabel: null,
@@ -3439,24 +3447,24 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3439
3447
  } : {
3440
3448
  connectionId: e.id,
3441
3449
  kind: e.kind,
3442
- label: Ra(e),
3450
+ label: Va(e),
3443
3451
  status: String(t.status ?? "connected"),
3444
3452
  accountId: t.accountId ?? null,
3445
3453
  accountLabel: t.accountLabel ?? null,
3446
- scopes: Ua(t.scopes),
3447
- expiresAt: Ha(t.expiresAt),
3454
+ scopes: Ka(t.scopes),
3455
+ expiresAt: Ga(t.expiresAt),
3448
3456
  lastError: t.lastError ?? null,
3449
- connectedAt: Ha(t.connectedAt)
3450
- }, Ga = async (e, n, r) => (await e.query({
3457
+ connectedAt: Ga(t.connectedAt)
3458
+ }, Ja = async (e, n, r) => (await e.query({
3451
3459
  table: X,
3452
3460
  predicate: t(u("connectionId", n), u("subjectId", r)),
3453
3461
  order: [],
3454
3462
  take: 1,
3455
3463
  skip: void 0,
3456
3464
  projection: void 0
3457
- }))[0], Ka = async (e) => {
3465
+ }))[0], Ya = async (e) => {
3458
3466
  let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), n = e.tokens.expiresAt === void 0 ? null : new Date(e.tokens.expiresAt), r = {
3459
- id: f(ja, X),
3467
+ id: f(Pa, X),
3460
3468
  connectionId: e.definition.id,
3461
3469
  subjectId: e.subjectId,
3462
3470
  tenantId: e.tenantId,
@@ -3474,8 +3482,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3474
3482
  connectedAt: t,
3475
3483
  updatedAt: t
3476
3484
  };
3477
- return qa(e.store, r);
3478
- }, qa = (e, t) => e.upsert(X, t, {
3485
+ return Xa(e.store, r);
3486
+ }, Xa = (e, t) => e.upsert(X, t, {
3479
3487
  conflictColumns: ["connectionId", "subjectId"],
3480
3488
  update: [
3481
3489
  "kind",
@@ -3491,10 +3499,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3491
3499
  "metadata",
3492
3500
  "updatedAt"
3493
3501
  ]
3494
- }), Ja = async (e, t, n) => {
3495
- let r = await Ga(e, t, n);
3502
+ }), Za = async (e, t, n) => {
3503
+ let r = await Ja(e, t, n);
3496
3504
  return r !== void 0 && e.delete(X, r.id);
3497
- }, Ya = async (e, t, n) => {
3505
+ }, Qa = async (e, t, n) => {
3498
3506
  let r = await e.query({
3499
3507
  table: X,
3500
3508
  predicate: u("subjectId", n),
@@ -3503,9 +3511,9 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3503
3511
  skip: void 0,
3504
3512
  projection: void 0
3505
3513
  }), i = new Map(r.map((e) => [String(e.connectionId), e]));
3506
- return t.list().map((e) => Wa(e, i.get(e.id)));
3507
- }, Xa = (e, t) => globalThis.fetch(e, t), Za = async (e, t, n) => {
3508
- let r = e.fetchImpl ?? Xa, i, a;
3514
+ return t.list().map((e) => qa(e, i.get(e.id)));
3515
+ }, $a = (e, t) => globalThis.fetch(e, t), eo = async (e, t, n) => {
3516
+ let r = e.fetchImpl ?? $a, i, a;
3509
3517
  try {
3510
3518
  let n = await r(e.tokenUrl, {
3511
3519
  method: "POST",
@@ -3517,7 +3525,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3517
3525
  });
3518
3526
  i = n.status, a = await n.text();
3519
3527
  } catch (t) {
3520
- throw new k({
3528
+ throw new O({
3521
3529
  connectionId: e.id,
3522
3530
  reason: `token endpoint unreachable: ${String(t)}`,
3523
3531
  transient: !0
@@ -3529,12 +3537,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3529
3537
  } catch {
3530
3538
  o = {};
3531
3539
  }
3532
- if (i < 200 || i >= 300) throw new k({
3540
+ if (i < 200 || i >= 300) throw new O({
3533
3541
  connectionId: e.id,
3534
3542
  reason: `token endpoint ${i}: ${o.error ?? ""} ${o.error_description ?? a.slice(0, 200)}`.trim(),
3535
3543
  transient: i >= 500
3536
3544
  });
3537
- if (typeof o.access_token != "string" || o.access_token.length === 0) throw new k({
3545
+ if (typeof o.access_token != "string" || o.access_token.length === 0) throw new O({
3538
3546
  connectionId: e.id,
3539
3547
  reason: "token response carried no access_token",
3540
3548
  transient: !1
@@ -3545,64 +3553,64 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3545
3553
  ...Number.isFinite(o.expires_in) ? { expiresAt: n() + o.expires_in * 1e3 } : {},
3546
3554
  scopes: (o.scope ?? e.scopes?.join(" ") ?? "").split(" ").filter(Boolean)
3547
3555
  };
3548
- }, Qa = (e, t, n = Date.now) => Za(e, {
3556
+ }, to = (e, t, n = Date.now) => eo(e, {
3549
3557
  grant_type: "authorization_code",
3550
3558
  client_id: e.clientId,
3551
3559
  client_secret: e.clientSecret,
3552
3560
  code: t.code,
3553
3561
  redirect_uri: t.redirectUri,
3554
3562
  ...t.codeVerifier ? { code_verifier: t.codeVerifier } : {}
3555
- }, n), $a = (e, t, n = Date.now) => Za(e, {
3563
+ }, n), no = (e, t, n = Date.now) => eo(e, {
3556
3564
  grant_type: "refresh_token",
3557
3565
  client_id: e.clientId,
3558
3566
  client_secret: e.clientSecret,
3559
3567
  refresh_token: t
3560
- }, n), eo = 6e4, to = 3e4, no = class extends Error {
3568
+ }, n), ro = 6e4, io = 3e4, ao = class extends Error {
3561
3569
  connectionId;
3562
3570
  subjectId;
3563
3571
  _tag = "ConnectionNotConnected";
3564
3572
  constructor(e, t) {
3565
3573
  super(`connection "${e}" is not connected for this subject`), this.connectionId = e, this.subjectId = t, this.name = "ConnectionNotConnected";
3566
3574
  }
3567
- }, ro = (e) => new Promise((t) => {
3575
+ }, oo = (e) => new Promise((t) => {
3568
3576
  setTimeout(t, e);
3569
- }), io = /* @__PURE__ */ new Map(), ao = (e, t) => `${e}${t}`, oo = () => {
3570
- io.clear();
3571
- }, so = (e, t) => ({
3577
+ }), so = /* @__PURE__ */ new Map(), co = (e, t) => `${e}${t}`, lo = () => {
3578
+ so.clear();
3579
+ }, uo = (e, t) => ({
3572
3580
  connectionId: e.id,
3573
3581
  kind: e.kind,
3574
- accessToken: hi(String(t.accessToken)),
3575
- expiresAt: Va(t.expiresAt),
3576
- scopes: Ua(t.scopes),
3582
+ accessToken: _i(String(t.accessToken)),
3583
+ expiresAt: Wa(t.expiresAt),
3584
+ scopes: Ka(t.scopes),
3577
3585
  accountId: t.accountId ?? null,
3578
3586
  accountLabel: t.accountLabel ?? null
3579
- }), co = (e, t, n) => {
3580
- let r = Va(e.expiresAt);
3587
+ }), fo = (e, t, n) => {
3588
+ let r = Wa(e.expiresAt);
3581
3589
  return r !== null && r.getTime() - n < t;
3582
- }, lo = async (e) => {
3583
- let t = e.now ?? Date.now, { store: n, definition: r, subjectId: i } = e, a = await Ga(n, r.id, i);
3584
- if (a === void 0) throw new no(r.id, i);
3585
- if (r.kind === "pat" || !co(a, r.refreshSkewMs ?? 6e4, t())) return so(r, a);
3586
- let o = ao(r.id, i), s = io.get(o);
3590
+ }, po = async (e) => {
3591
+ let t = e.now ?? Date.now, { store: n, definition: r, subjectId: i } = e, a = await Ja(n, r.id, i);
3592
+ if (a === void 0) throw new ao(r.id, i);
3593
+ if (r.kind === "pat" || !fo(a, r.refreshSkewMs ?? 6e4, t())) return uo(r, a);
3594
+ let o = co(r.id, i), s = so.get(o);
3587
3595
  if (s !== void 0) return s;
3588
- let c = uo({
3596
+ let c = mo({
3589
3597
  ...e,
3590
3598
  now: t,
3591
3599
  row: a
3592
3600
  }).finally(() => {
3593
- io.delete(o);
3601
+ so.delete(o);
3594
3602
  });
3595
- return io.set(o, c), c;
3596
- }, uo = async (e) => {
3597
- let { store: n, subjectId: r, now: i } = e, a = e.definition, o = e.sleep ?? ro, s = a.refreshSkewMs ?? 6e4, c = e.row.id;
3598
- if (await n.updateMany("_voltro_connections", { refreshLockedUntil: new Date(i() + 3e4) }, { where: t(u("id", c), te("refreshLockedUntil", new Date(i()))) }) === 0) {
3603
+ return so.set(o, c), c;
3604
+ }, mo = async (e) => {
3605
+ let { store: n, subjectId: r, now: i } = e, a = e.definition, o = e.sleep ?? oo, s = a.refreshSkewMs ?? 6e4, c = e.row.id;
3606
+ if (await n.updateMany("_voltro_connections", { refreshLockedUntil: new Date(i() + 3e4) }, { where: t(u("id", c), ne("refreshLockedUntil", new Date(i()))) }) === 0) {
3599
3607
  for (let e = 0; e < 10; e++) {
3600
3608
  await o(200);
3601
- let e = await Ga(n, a.id, r);
3602
- if (e === void 0) throw new no(a.id, r);
3603
- if (!co(e, s, i())) return so(a, e);
3609
+ let e = await Ja(n, a.id, r);
3610
+ if (e === void 0) throw new ao(a.id, r);
3611
+ if (!fo(e, s, i())) return uo(a, e);
3604
3612
  }
3605
- throw new k({
3613
+ throw new O({
3606
3614
  connectionId: a.id,
3607
3615
  reason: "another replica held the refresh lease and did not publish a fresh token in time",
3608
3616
  transient: !0
@@ -3614,16 +3622,16 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3614
3622
  lastError: "access token expired and no refresh token is on file — reconnect required",
3615
3623
  refreshLockedUntil: /* @__PURE__ */ new Date(0),
3616
3624
  updatedAt: new Date(i())
3617
- }), new k({
3625
+ }), new O({
3618
3626
  connectionId: a.id,
3619
3627
  reason: "access token expired and no refresh token is on file — reconnect required",
3620
3628
  transient: !1
3621
3629
  });
3622
3630
  let d;
3623
3631
  try {
3624
- d = await $a(a, hi(String(l)), i);
3632
+ d = await no(a, _i(String(l)), i);
3625
3633
  } catch (e) {
3626
- let t = e instanceof k ? e : new k({
3634
+ let t = e instanceof O ? e : new O({
3627
3635
  connectionId: a.id,
3628
3636
  reason: String(e),
3629
3637
  transient: !0
@@ -3638,7 +3646,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3638
3646
  refreshToken: null,
3639
3647
  expiresAt: null
3640
3648
  }
3641
- }), Aa.warn("connection refresh failed", {
3649
+ }), Na.warn("connection refresh failed", {
3642
3650
  connectionId: a.id,
3643
3651
  transient: t.transient,
3644
3652
  reason: t.reason
@@ -3654,32 +3662,32 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3654
3662
  refreshLockedUntil: /* @__PURE__ */ new Date(0),
3655
3663
  updatedAt: new Date(i())
3656
3664
  };
3657
- return so(a, await n.update(X, c, f) ?? {
3665
+ return uo(a, await n.update(X, c, f) ?? {
3658
3666
  ...e.row,
3659
3667
  ...f
3660
3668
  });
3661
- }, fo = (e = 32) => {
3669
+ }, ho = (e = 32) => {
3662
3670
  let t = new Uint8Array(e);
3663
3671
  return globalThis.crypto.getRandomValues(t), Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
3664
- }, po = (e) => {
3672
+ }, go = (e) => {
3665
3673
  let t = "";
3666
3674
  for (let n of e) t += String.fromCharCode(n);
3667
3675
  return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
3668
- }, mo = async (e) => {
3676
+ }, _o = async (e) => {
3669
3677
  let t = await globalThis.crypto.subtle.digest("SHA-256", new TextEncoder().encode(e));
3670
- return po(new Uint8Array(t));
3671
- }, ho = 10 * 6e4, go = (e) => `/_voltro/connections/${e}/callback`, _o = (e) => e === void 0 || e.length === 0 || !e.startsWith("/") || e.startsWith("//") || e.startsWith("/\\") ? "/" : e, vo = (e, t) => e.redirectUri ?? `${t.replace(/\/+$/, "")}${go(e.id)}`, yo = async (e) => {
3672
- let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), { definition: n } = e, r = fo(), i = n.pkce === !1 ? null : fo(48), a = vo(n, e.publicUrl);
3673
- await e.store.insert(Na, {
3674
- id: f(Pa, Na),
3678
+ return go(new Uint8Array(t));
3679
+ }, vo = 10 * 6e4, yo = (e) => `/_voltro/connections/${e}/callback`, bo = (e) => e === void 0 || e.length === 0 || !e.startsWith("/") || e.startsWith("//") || e.startsWith("/\\") ? "/" : e, xo = (e, t) => e.redirectUri ?? `${t.replace(/\/+$/, "")}${yo(e.id)}`, So = async (e) => {
3680
+ let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), { definition: n } = e, r = ho(), i = n.pkce === !1 ? null : ho(48), a = xo(n, e.publicUrl);
3681
+ await e.store.insert(Ia, {
3682
+ id: f(La, Ia),
3675
3683
  state: r,
3676
3684
  connectionId: n.id,
3677
3685
  subjectId: e.subjectId,
3678
3686
  tenantId: e.tenantId,
3679
3687
  codeVerifier: i === null ? null : q(i),
3680
- redirectTo: _o(e.redirectTo),
3688
+ redirectTo: bo(e.redirectTo),
3681
3689
  createdAt: t,
3682
- expiresAt: new Date(t.getTime() + ho)
3690
+ expiresAt: new Date(t.getTime() + vo)
3683
3691
  });
3684
3692
  let o = new URLSearchParams({
3685
3693
  response_type: "code",
@@ -3689,50 +3697,50 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3689
3697
  ...n.scopes && n.scopes.length > 0 ? { scope: n.scopes.join(" ") } : {},
3690
3698
  ...n.authorizeParams ?? {}
3691
3699
  });
3692
- i !== null && (o.set("code_challenge", await mo(i)), o.set("code_challenge_method", "S256"));
3700
+ i !== null && (o.set("code_challenge", await _o(i)), o.set("code_challenge_method", "S256"));
3693
3701
  let s = n.authorizeUrl.includes("?") ? "&" : "?";
3694
3702
  return {
3695
3703
  authorizeUrl: `${n.authorizeUrl}${s}${o.toString()}`,
3696
3704
  state: r
3697
3705
  };
3698
- }, bo = async (e) => {
3706
+ }, Co = async (e) => {
3699
3707
  let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), n = (await e.store.query({
3700
- table: Na,
3708
+ table: Ia,
3701
3709
  predicate: u("state", e.state),
3702
3710
  order: [],
3703
3711
  take: 1,
3704
3712
  skip: void 0,
3705
3713
  projection: void 0
3706
3714
  }))[0];
3707
- if (n === void 0) throw new k({
3715
+ if (n === void 0) throw new O({
3708
3716
  connectionId: "unknown",
3709
3717
  reason: "unknown or already-used handshake state",
3710
3718
  transient: !1
3711
3719
  });
3712
- await e.store.delete(Na, n.id);
3713
- let r = String(n.connectionId), i = Va(n.expiresAt);
3714
- if (i !== null && i.getTime() < t.getTime()) throw new k({
3720
+ await e.store.delete(Ia, n.id);
3721
+ let r = String(n.connectionId), i = Wa(n.expiresAt);
3722
+ if (i !== null && i.getTime() < t.getTime()) throw new O({
3715
3723
  connectionId: r,
3716
3724
  reason: "handshake expired — start again",
3717
3725
  transient: !1
3718
3726
  });
3719
3727
  let a = e.registry.get(r);
3720
- if (a === void 0 || a.kind !== "oauth2") throw new k({
3728
+ if (a === void 0 || a.kind !== "oauth2") throw new O({
3721
3729
  connectionId: r,
3722
3730
  reason: "no oauth2 connection is declared under that id",
3723
3731
  transient: !1
3724
3732
  });
3725
- let o = n.codeVerifier === null || n.codeVerifier === void 0 ? null : hi(String(n.codeVerifier)), s = await Qa(a, {
3733
+ let o = n.codeVerifier === null || n.codeVerifier === void 0 ? null : _i(String(n.codeVerifier)), s = await to(a, {
3726
3734
  code: e.code,
3727
- redirectUri: vo(a, e.publicUrl),
3735
+ redirectUri: xo(a, e.publicUrl),
3728
3736
  codeVerifier: o
3729
3737
  }, () => t.getTime()), c = a.identify === void 0 ? void 0 : await a.identify(s).catch((e) => {
3730
- Aa.warn("connection identify failed; storing without account details", {
3738
+ Na.warn("connection identify failed; storing without account details", {
3731
3739
  connectionId: r,
3732
3740
  reason: String(e)
3733
3741
  });
3734
3742
  });
3735
- return await Ka({
3743
+ return await Ya({
3736
3744
  store: e.store,
3737
3745
  definition: a,
3738
3746
  subjectId: String(n.subjectId),
@@ -3742,12 +3750,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3742
3750
  now: () => t
3743
3751
  }), {
3744
3752
  connectionId: r,
3745
- redirectTo: _o(String(n.redirectTo ?? "/"))
3753
+ redirectTo: bo(String(n.redirectTo ?? "/"))
3746
3754
  };
3747
- }, xo = async (e, t = /* @__PURE__ */ new Date()) => {
3755
+ }, wo = async (e, t = /* @__PURE__ */ new Date()) => {
3748
3756
  let n = await e.query({
3749
- table: Na,
3750
- predicate: te("expiresAt", t),
3757
+ table: Ia,
3758
+ predicate: ne("expiresAt", t),
3751
3759
  order: [],
3752
3760
  take: void 0,
3753
3761
  skip: void 0,
@@ -3755,27 +3763,27 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3755
3763
  }), r = 0;
3756
3764
  for (let t of n) await e.delete("_voltro_connection_grants", t.id) && r++;
3757
3765
  return r;
3758
- }, So, Co = (e) => {
3759
- So = e;
3760
- }, wo = () => So, To = (e, t) => {
3761
- let n = So;
3766
+ }, To, Eo = (e) => {
3767
+ To = e;
3768
+ }, Do = () => To, Oo = (e, t) => {
3769
+ let n = To;
3762
3770
  return n === void 0 ? Promise.reject(/* @__PURE__ */ Error(`resolveConnectionForSubject("${t}"): no connection vault is registered — the app declares no \`*.connection.ts\`, or this call ran before boot completed.`)) : n(e, t);
3763
- }, Eo = (e) => async (t, n) => {
3771
+ }, ko = (e) => async (t, n) => {
3764
3772
  let r = e.registry.get(n);
3765
3773
  if (r === void 0) throw Error(`connection "${n}" is not declared. Declared: ${e.registry.list().map((e) => e.id).join(", ") || "(none)"}.`);
3766
3774
  let i = t.id ?? null;
3767
- if (i === null || i === "") throw new no(n, "<anonymous>");
3768
- return lo({
3775
+ if (i === null || i === "") throw new ao(n, "<anonymous>");
3776
+ return po({
3769
3777
  store: e.store,
3770
3778
  definition: r,
3771
3779
  subjectId: i
3772
3780
  });
3773
- }, Do = (e) => {
3781
+ }, Ao = (e) => {
3774
3782
  let t = e.subject.id ?? null, n = async (n) => {
3775
3783
  let r = e.registry.get(n);
3776
3784
  if (r === void 0) throw Error(`ctx.connections.get("${n}"): no such connection is declared. Declared: ${e.registry.list().map((e) => e.id).join(", ") || "(none)"}.`);
3777
- if (t === null || t === "") throw new no(n, "<anonymous>");
3778
- return lo({
3785
+ if (t === null || t === "") throw new ao(n, "<anonymous>");
3786
+ return po({
3779
3787
  store: e.store,
3780
3788
  definition: r,
3781
3789
  subjectId: t
@@ -3787,7 +3795,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3787
3795
  try {
3788
3796
  return await n(e);
3789
3797
  } catch (e) {
3790
- if (e instanceof no) return null;
3798
+ if (e instanceof ao) return null;
3791
3799
  throw e;
3792
3800
  }
3793
3801
  },
@@ -3802,17 +3810,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3802
3810
  expiresAt: null,
3803
3811
  lastError: null,
3804
3812
  connectedAt: null
3805
- })) : Ya(e.store, e.registry, t)
3813
+ })) : Qa(e.store, e.registry, t)
3806
3814
  };
3807
- }, Oo = (e, t) => {
3815
+ }, jo = (e, t) => {
3808
3816
  let n = e.request?.subject?.id ?? null;
3809
- if (n === null || n === "") throw new xe({ connectionId: t });
3817
+ if (n === null || n === "") throw new Ce({ connectionId: t });
3810
3818
  return n;
3811
- }, ko = (e, t) => {
3819
+ }, Mo = (e, t) => {
3812
3820
  let n = e.registry.get(t);
3813
- if (n === void 0) throw new be({ connectionId: t });
3821
+ if (n === void 0) throw new Se({ connectionId: t });
3814
3822
  return n;
3815
- }, Ao = (e) => async (t, n) => {
3823
+ }, No = (e) => async (t, n) => {
3816
3824
  let r = n.request?.subject?.id ?? null;
3817
3825
  return r === null || r === "" ? e.registry.list().map((e) => ({
3818
3826
  connectionId: e.id,
@@ -3825,15 +3833,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3825
3833
  expiresAt: null,
3826
3834
  lastError: null,
3827
3835
  connectedAt: null
3828
- })) : Ya(n.store, e.registry, r);
3829
- }, jo = (e) => async (t, n) => {
3830
- let r = ko(e, t.connectionId), i = Oo(n, t.connectionId);
3831
- if (r.kind !== "oauth2") throw new ye({
3836
+ })) : Qa(n.store, e.registry, r);
3837
+ }, Po = (e) => async (t, n) => {
3838
+ let r = Mo(e, t.connectionId), i = jo(n, t.connectionId);
3839
+ if (r.kind !== "oauth2") throw new xe({
3832
3840
  connectionId: t.connectionId,
3833
3841
  expected: "oauth2",
3834
3842
  actual: r.kind
3835
3843
  });
3836
- return yo({
3844
+ return So({
3837
3845
  store: n.store,
3838
3846
  definition: r,
3839
3847
  subjectId: i,
@@ -3841,15 +3849,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3841
3849
  publicUrl: e.publicUrl,
3842
3850
  ...t.redirectTo === void 0 ? {} : { redirectTo: t.redirectTo }
3843
3851
  });
3844
- }, Mo = (e) => async (t, n) => {
3845
- let r = ko(e, t.connectionId), i = Oo(n, t.connectionId);
3846
- if (r.kind !== "pat") throw new ye({
3852
+ }, Fo = (e) => async (t, n) => {
3853
+ let r = Mo(e, t.connectionId), i = jo(n, t.connectionId);
3854
+ if (r.kind !== "pat") throw new xe({
3847
3855
  connectionId: t.connectionId,
3848
3856
  expected: "pat",
3849
3857
  actual: r.kind
3850
3858
  });
3851
3859
  let a = t.token.trim();
3852
- if (a.length === 0) throw new k({
3860
+ if (a.length === 0) throw new O({
3853
3861
  connectionId: t.connectionId,
3854
3862
  reason: "token is empty",
3855
3863
  transient: !1
@@ -3858,13 +3866,13 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3858
3866
  if (r.validate !== void 0) try {
3859
3867
  o = await r.validate(a);
3860
3868
  } catch (e) {
3861
- throw new k({
3869
+ throw new O({
3862
3870
  connectionId: t.connectionId,
3863
3871
  reason: `the provider rejected that token: ${e instanceof Error ? e.message : String(e)}`,
3864
3872
  transient: !1
3865
3873
  });
3866
3874
  }
3867
- return await Ka({
3875
+ return await Ya({
3868
3876
  store: n.store,
3869
3877
  definition: r,
3870
3878
  subjectId: i,
@@ -3875,20 +3883,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3875
3883
  },
3876
3884
  ...o === void 0 ? {} : { account: o }
3877
3885
  }), { ok: !0 };
3878
- }, No = (e) => async (t, n) => {
3879
- ko(e, t.connectionId);
3880
- let r = Oo(n, t.connectionId);
3881
- return { ok: await Ja(n.store, t.connectionId, r) };
3882
- }, Po = "admin:full", Fo = class extends L.TaggedError()("AccessDenied", {
3886
+ }, Io = (e) => async (t, n) => {
3887
+ Mo(e, t.connectionId);
3888
+ let r = jo(n, t.connectionId);
3889
+ return { ok: await Za(n.store, t.connectionId, r) };
3890
+ }, Lo = "admin:full", Ro = class extends L.TaggedError()("AccessDenied", {
3883
3891
  action: L.String,
3884
3892
  resourceType: L.String,
3885
3893
  resourceId: L.String
3886
- }) {}, Io = /* @__PURE__ */ new Map(), Lo = (e) => {
3894
+ }) {}, zo = /* @__PURE__ */ new Map(), Bo = (e) => {
3887
3895
  if (typeof e.resourceType != "string" || e.resourceType.length === 0) throw Error("defineResourcePolicy: a non-empty `resourceType` is required");
3888
3896
  if (e.actions === void 0 || Object.keys(e.actions).length === 0) throw Error(`resource policy '${e.resourceType}': at least one action is required`);
3889
- if (Io.has(e.resourceType)) throw Error(`resource policy '${e.resourceType}' is already registered — types must be unique`);
3890
- return Io.set(e.resourceType, e), e;
3891
- }, Ro = (e) => Io.get(e), zo = () => [...Io.values()], Bo = () => Io.clear(), Vo = () => zo().map((e) => {
3897
+ if (zo.has(e.resourceType)) throw Error(`resource policy '${e.resourceType}' is already registered — types must be unique`);
3898
+ return zo.set(e.resourceType, e), e;
3899
+ }, Vo = (e) => zo.get(e), Ho = () => [...zo.values()], Uo = () => zo.clear(), Wo = () => Ho().map((e) => {
3892
3900
  let t = /* @__PURE__ */ new Set();
3893
3901
  for (let n of Object.values(e.actions)) for (let e of n) t.add(e);
3894
3902
  for (let [n, r] of Object.entries(e.implies ?? {})) {
@@ -3901,7 +3909,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3901
3909
  relations: [...t],
3902
3910
  implies: e.implies ?? {}
3903
3911
  };
3904
- }), Ho = (e, t) => {
3912
+ }), Go = (e, t) => {
3905
3913
  let n = new Set(e);
3906
3914
  if (t === void 0) return n;
3907
3915
  let r = [...e];
@@ -3910,37 +3918,37 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3910
3918
  for (let i of t[e] ?? []) n.has(i) || (n.add(i), r.push(i));
3911
3919
  }
3912
3920
  return n;
3913
- }, Uo = (e, t, n, r) => e.id === null ? /* @__PURE__ */ new Set() : Ho(n.filter((n) => n.subjectId === e.id && n.resourceType === t.type && n.resourceId === t.id).map((e) => e.relation), r.implies), Wo = (e, t, n, r) => {
3921
+ }, Ko = (e, t, n, r) => e.id === null ? /* @__PURE__ */ new Set() : Go(n.filter((n) => n.subjectId === e.id && n.resourceType === t.type && n.resourceId === t.id).map((e) => e.relation), r.implies), qo = (e, t, n, r) => {
3914
3922
  if (e.scopes?.includes("admin:full")) return !0;
3915
3923
  if (e.id === null || n.tenantId != null && e.tenantId !== n.tenantId) return !1;
3916
3924
  let i = r.policy.actions[t];
3917
3925
  if (i === void 0 || i.length === 0) return !1;
3918
- let a = Uo(e, n, r.tuples, r.policy);
3926
+ let a = Ko(e, n, r.tuples, r.policy);
3919
3927
  return i.some((e) => a.has(e));
3920
- }, Go = (e, t, n, r) => {
3921
- if (!Wo(e, t, n, r)) throw new Fo({
3928
+ }, Jo = (e, t, n, r) => {
3929
+ if (!qo(e, t, n, r)) throw new Ro({
3922
3930
  action: t,
3923
3931
  resourceType: n.type,
3924
3932
  resourceId: n.id
3925
3933
  });
3926
- }, Ko = (e, t, n, r, i) => r.filter((r) => Wo(e, t, {
3934
+ }, Yo = (e, t, n, r, i) => r.filter((r) => qo(e, t, {
3927
3935
  type: n,
3928
3936
  id: r.id,
3929
3937
  ...r.tenantId === void 0 ? {} : { tenantId: r.tenantId }
3930
- }, i)), qo = (e, t) => {
3938
+ }, i)), Xo = (e, t) => {
3931
3939
  let n = new Set(t.map((e) => e.id));
3932
3940
  return e.filter((e) => !n.has(e.id)).map((e) => e.id);
3933
- }, Jo = A({ scope: "voltro:policy" }), Yo, Xo = (e) => {
3934
- Yo = e;
3935
- }, Zo = () => Yo, Qo = () => {
3936
- Pe((e) => M.gen(function* () {
3937
- let t = Ro(e.resourceType);
3938
- if (t === void 0) return Jo.warn("policy guard denied — no resource policy registered for this type", {
3941
+ }, Zo = k({ scope: "voltro:policy" }), Qo, $o = (e) => {
3942
+ Qo = e;
3943
+ }, es = () => Qo, ts = () => {
3944
+ Ie((e) => M.gen(function* () {
3945
+ let t = Vo(e.resourceType);
3946
+ if (t === void 0) return Zo.warn("policy guard denied — no resource policy registered for this type", {
3939
3947
  resourceType: e.resourceType,
3940
3948
  action: e.action
3941
3949
  }), !1;
3942
- let n = Yo;
3943
- if (n === void 0) return Jo.warn("policy guard denied — no tuple source registered (call setTupleSource at boot)", {
3950
+ let n = Qo;
3951
+ if (n === void 0) return Zo.warn("policy guard denied — no tuple source registered (call setTupleSource at boot)", {
3944
3952
  resourceType: e.resourceType,
3945
3953
  action: e.action
3946
3954
  }), !1;
@@ -3951,11 +3959,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3951
3959
  resourceId: e.resourceId
3952
3960
  }),
3953
3961
  catch: (e) => e
3954
- }).pipe(M.catchAll((t) => (Jo.error("policy guard denied — tuple source failed", {
3962
+ }).pipe(M.catchAll((t) => (Zo.error("policy guard denied — tuple source failed", {
3955
3963
  resourceType: e.resourceType,
3956
3964
  resourceId: e.resourceId
3957
3965
  }, t), M.succeed([])))), i = e.subject;
3958
- return Wo({
3966
+ return qo({
3959
3967
  id: e.subject.id,
3960
3968
  tenantId: i.tenantId ?? null,
3961
3969
  ...i.scopes === void 0 ? {} : { scopes: i.scopes }
@@ -3968,10 +3976,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
3968
3976
  tuples: r
3969
3977
  });
3970
3978
  }));
3971
- }, $o = (e) => {
3979
+ }, ns = (e) => {
3972
3980
  Promise.resolve().then(e);
3973
- }, es = (e) => {
3974
- let t = e.schedule ?? $o, n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = (e, t) => `${e}${t}`, a = async (t) => {
3981
+ }, rs = (e) => {
3982
+ let t = e.schedule ?? ns, n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = (e, t) => `${e}${t}`, a = async (t) => {
3975
3983
  let a = r.get(t);
3976
3984
  if (a === void 0) return;
3977
3985
  r.delete(t);
@@ -4017,11 +4025,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4017
4025
  load: async (e, t) => (await o(e, [t]))[0] ?? null,
4018
4026
  loadMany: (e, t) => o(e, t)
4019
4027
  };
4020
- }, ts = N.effect(Ze.HttpClient, M.map(Ze.HttpClient, (e) => e.pipe(Ze.mapRequestEffect((e) => M.currentSpan.pipe(M.map((t) => e.headers.traceparent === void 0 ? Qe.setHeader(e, "traceparent", rr({
4028
+ }, is = N.effect(Qe.HttpClient, M.map(Qe.HttpClient, (e) => e.pipe(Qe.mapRequestEffect((e) => M.currentSpan.pipe(M.map((t) => e.headers.traceparent === void 0 ? $e.setHeader(e, "traceparent", ar({
4021
4029
  traceId: t.traceId,
4022
4030
  spanId: t.spanId,
4023
4031
  sampled: t.sampled
4024
- })) : e), M.catchAll(() => M.succeed(e))))))), ns = "voltro/audit", rs = "voltro/softDelete", is = "voltro/tenant", as = (e) => {
4032
+ })) : e), M.catchAll(() => M.succeed(e))))))), as = "voltro/audit", os = "voltro/softDelete", ss = "voltro/tenant", cs = (e) => {
4025
4033
  let t = /* @__PURE__ */ new Map();
4026
4034
  for (let n of e) {
4027
4035
  let e = /* @__PURE__ */ new Set();
@@ -4064,49 +4072,49 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4064
4072
  return !1;
4065
4073
  },
4066
4074
  idScheme: (e) => t.get(e)?.idScheme,
4067
- defaultFactories: (e) => t.get(e)?.defaultFactories ?? os,
4068
- computedFields: (e) => t.get(e)?.computedFields ?? ss,
4075
+ defaultFactories: (e) => t.get(e)?.defaultFactories ?? ls,
4076
+ computedFields: (e) => t.get(e)?.computedFields ?? us,
4069
4077
  insertSchema: (e) => t.get(e)?.insertSchema,
4070
4078
  validatePatchSchema: (e) => t.get(e)?.validatePatchSchema
4071
4079
  };
4072
- }, os = /* @__PURE__ */ new Map(), ss = /* @__PURE__ */ new Map(), cs = as([]), ls = class extends L.TaggedError()("NoRowFound", {
4080
+ }, ls = /* @__PURE__ */ new Map(), us = /* @__PURE__ */ new Map(), ds = cs([]), fs = class extends L.TaggedError()("NoRowFound", {
4073
4081
  table: L.String,
4074
4082
  found: L.Number
4075
4083
  }) {
4076
4084
  get message() {
4077
4085
  return this.found === 0 ? `expected exactly one row in '${this.table}', found none` : `expected exactly one row in '${this.table}', found more than one`;
4078
4086
  }
4079
- }, us = class extends L.TaggedError()("OptimisticLockError", {
4087
+ }, ps = class extends L.TaggedError()("OptimisticLockError", {
4080
4088
  table: L.String,
4081
4089
  expected: L.Number
4082
4090
  }) {
4083
4091
  get message() {
4084
4092
  return `optimistic lock failed on '${this.table}': expected version ${this.expected}`;
4085
4093
  }
4086
- }, ds = (e) => typeof e == "object" && !!e && ("and" in e || "or" in e || "not" in e || "op" in e || "subquery" in e), fs = (e) => {
4087
- if (e.length === 1 && ds(e[0])) return e[0];
4094
+ }, ms = (e) => typeof e == "object" && !!e && ("and" in e || "or" in e || "not" in e || "op" in e || "subquery" in e), hs = (e) => {
4095
+ if (e.length === 1 && ms(e[0])) return e[0];
4088
4096
  let t = e[0];
4089
4097
  if (e.length === 2) return u(t, e[1]);
4090
4098
  let n = e[1], r = e[2];
4091
4099
  switch (n) {
4092
4100
  case "=": return u(t, r);
4093
4101
  case "!=":
4094
- case "<>": return T(t, r);
4102
+ case "<>": return w(t, r);
4095
4103
  case ">": return h(t, r);
4096
4104
  case ">=": return g(t, r);
4097
- case "<": return w(t, r);
4098
- case "<=": return te(t, r);
4105
+ case "<": return te(t, r);
4106
+ case "<=": return ne(t, r);
4099
4107
  case "in": return y(t, r);
4100
4108
  case "like":
4101
4109
  case "contains":
4102
4110
  case "fts": return o(t, r);
4103
4111
  default: return u(t, r);
4104
4112
  }
4105
- }, ps = (e) => {
4113
+ }, gs = (e) => {
4106
4114
  let t = m(e);
4107
4115
  if (t === void 0) throw Error(`unknown table '${e}' — is it declared with table()?`);
4108
- return re(t);
4109
- }, ms = class e {
4116
+ return ie(t);
4117
+ }, _s = class e {
4110
4118
  backend;
4111
4119
  scope;
4112
4120
  table;
@@ -4120,7 +4128,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4120
4128
  return new e(this.backend, this.scope, this.table, t, this.skipTenant, this.skipSoftDelete);
4121
4129
  }
4122
4130
  where(...e) {
4123
- return this.clone(this.query.where(fs(e)));
4131
+ return this.clone(this.query.where(hs(e)));
4124
4132
  }
4125
4133
  orderBy(e, t = "asc") {
4126
4134
  return this.clone(this.query.orderBy(e, t));
@@ -4155,7 +4163,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4155
4163
  scopedQuery() {
4156
4164
  let e = this.query, { subject: t, schemaRegistry: n } = this.scope;
4157
4165
  !this.skipTenant && n.hasTenant(this.table) && t.tenantId != null && (e = e.where(u("tenantId", t.tenantId))), !this.skipSoftDelete && n.hasSoftDelete(this.table) && (e = e.where(S("deletedAt")));
4158
- let r = (this.scope.rowFilter ?? Mn)(this.table);
4166
+ let r = (this.scope.rowFilter ?? Nn)(this.table);
4159
4167
  return r !== void 0 && (e = e.where(r)), e;
4160
4168
  }
4161
4169
  async all() {
@@ -4169,11 +4177,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4169
4177
  }
4170
4178
  async one() {
4171
4179
  let e = await this.backend.query(this.scopedQuery().limit(2).descriptor), t = e[0];
4172
- if (t === void 0) throw new ls({
4180
+ if (t === void 0) throw new fs({
4173
4181
  table: this.table,
4174
4182
  found: 0
4175
4183
  });
4176
- if (e.length > 1) throw new ls({
4184
+ if (e.length > 1) throw new fs({
4177
4185
  table: this.table,
4178
4186
  found: e.length
4179
4187
  });
@@ -4189,7 +4197,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4189
4197
  get descriptor() {
4190
4198
  return this.scopedQuery().descriptor;
4191
4199
  }
4192
- }, hs = class {
4200
+ }, vs = class {
4193
4201
  backend;
4194
4202
  scope;
4195
4203
  table;
@@ -4200,7 +4208,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4200
4208
  this.backend = e, this.scope = t, this.table = n;
4201
4209
  }
4202
4210
  where(...e) {
4203
- let n = fs(e);
4211
+ let n = hs(e);
4204
4212
  return this.predicate = this.predicate ? t(this.predicate, n) : n, this;
4205
4213
  }
4206
4214
  unscoped() {
@@ -4224,7 +4232,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4224
4232
  }
4225
4233
  async set(e) {
4226
4234
  let t = await this.backend.updateMany(this.table, e, { where: this.scopedWhere() });
4227
- if (this.expectedVersion !== void 0 && t === 0) throw new us({
4235
+ if (this.expectedVersion !== void 0 && t === 0) throw new ps({
4228
4236
  table: this.table,
4229
4237
  expected: this.expectedVersion
4230
4238
  });
@@ -4233,7 +4241,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4233
4241
  async restore() {
4234
4242
  return this.backend.updateMany(this.table, { deletedAt: null }, { where: this.scopedWhere() });
4235
4243
  }
4236
- }, gs = class {
4244
+ }, ys = class {
4237
4245
  backend;
4238
4246
  scope;
4239
4247
  table;
@@ -4243,7 +4251,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4243
4251
  this.backend = e, this.scope = t, this.table = n;
4244
4252
  }
4245
4253
  where(...e) {
4246
- let n = fs(e);
4254
+ let n = hs(e);
4247
4255
  return this.predicate = this.predicate ? t(this.predicate, n) : n, this;
4248
4256
  }
4249
4257
  unscoped() {
@@ -4264,32 +4272,32 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4264
4272
  async hard() {
4265
4273
  return this.backend.deleteMany(this.table, { where: this.scopedWhere() });
4266
4274
  }
4267
- }, _s = (e, t) => ({
4268
- select: (n) => new ms(e, t, n, ps(n)),
4269
- updateWhere: (n) => new hs(e, t, n),
4270
- deleteWhere: (n) => new gs(e, t, n)
4271
- }), vs = "id", ys = (e) => "descriptor" in e ? e.descriptor : e, bs = (e, t) => {
4275
+ }, bs = (e, t) => ({
4276
+ select: (n) => new _s(e, t, n, gs(n)),
4277
+ updateWhere: (n) => new vs(e, t, n),
4278
+ deleteWhere: (n) => new ys(e, t, n)
4279
+ }), xs = "id", Ss = (e) => "descriptor" in e ? e.descriptor : e, Cs = (e, t) => {
4272
4280
  let n = {};
4273
4281
  for (let r of t) e[r] !== void 0 && (n[r] = e[r]);
4274
4282
  return n;
4275
- }, xs = "cannot insert into tenant-scoped table without an authenticated tenant — subject.tenantId is null. Either authenticate first or pass tenantId explicitly in the row (admin tooling).", Ss = (e) => {
4276
- throw new Vi({
4283
+ }, ws = "cannot insert into tenant-scoped table without an authenticated tenant — subject.tenantId is null. Either authenticate first or pass tenantId explicitly in the row (admin tooling).", Ts = (e) => {
4284
+ throw new Wi({
4277
4285
  table: e,
4278
- reason: xs
4286
+ reason: ws
4279
4287
  });
4280
- }, Cs = (e, n) => {
4281
- let r = n.subject.id, i = n.subject.tenantId, a = n.rowFilter ?? Mn, o = (e, t) => {
4288
+ }, Es = (e, n) => {
4289
+ let r = n.subject.id, i = n.subject.tenantId, a = n.rowFilter ?? Nn, o = (e, t) => {
4282
4290
  let a = { ...t }, o = n.schemaRegistry, s = o.idScheme(e);
4283
- if (s !== void 0 && a[vs] == null) if (s.kind === "numeric") delete a[vs];
4291
+ if (s !== void 0 && a[xs] == null) if (s.kind === "numeric") delete a[xs];
4284
4292
  else {
4285
4293
  let t = f(s, e);
4286
- t !== null && (a[vs] = t);
4294
+ t !== null && (a[xs] = t);
4287
4295
  }
4288
4296
  if (o.hasAudit(e)) {
4289
4297
  let e = /* @__PURE__ */ new Date();
4290
4298
  "createdAt" in a || (a.createdAt = e), "updatedAt" in a || (a.updatedAt = e), r !== null && ("createdBy" in a || (a.createdBy = r), "updatedBy" in a || (a.updatedBy = r));
4291
4299
  }
4292
- o.hasTenant(e) && ("tenantId" in a || (i === null && Ss(e), a.tenantId = i));
4300
+ o.hasTenant(e) && ("tenantId" in a || (i === null && Ts(e), a.tenantId = i));
4293
4301
  let c = o.defaultFactories(e);
4294
4302
  if (c.size > 0) for (let [e, t] of c) (!(e in a) || a[e] === void 0) && (a[e] = t());
4295
4303
  let l = o.computedFields(e);
@@ -4304,10 +4312,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4304
4312
  try {
4305
4313
  return await r();
4306
4314
  } catch (n) {
4307
- let r = Gt(n);
4308
- if (Kt(r)) {
4315
+ let r = Kt(n);
4316
+ if (qt(r)) {
4309
4317
  let n = t.tenantId, i = `${r.dbConstraint ?? ""} ${r.dbColumn ?? ""} ${r.dbMessage ?? ""} ${r.dbCauseChain ?? ""}`.toLowerCase();
4310
- if (i.includes("tenantid") || /\btenants\b/.test(i) || n != null && i.includes(String(n).toLowerCase())) throw new Vi({
4318
+ if (i.includes("tenantid") || /\btenants\b/.test(i) || n != null && i.includes(String(n).toLowerCase())) throw new Wi({
4311
4319
  table: e,
4312
4320
  reason: n == null ? "write references a tenant that does not exist" : `tenant '${String(n)}' does not exist — seed the row in \`tenants\`, or fix how the request resolved this tenant (subject.tenantId / the x-tenant header / the dev TENANT fallback)`
4313
4321
  });
@@ -4328,11 +4336,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4328
4336
  if (r === void 0) return t;
4329
4337
  let i = L.decodeUnknownEither(r)(t);
4330
4338
  if (i._tag === "Right") return t;
4331
- let a = St.formatErrorSync(i.left).map((e) => ({
4339
+ let a = Ct.formatErrorSync(i.left).map((e) => ({
4332
4340
  path: e.path.length === 0 ? "<root>" : e.path.join("."),
4333
4341
  message: e.message
4334
4342
  })), o = a[0];
4335
- throw new Ui({
4343
+ throw new Ki({
4336
4344
  table: e,
4337
4345
  summary: o === void 0 ? "patch validation failed" : `${o.path}: ${o.message}`,
4338
4346
  issues: a
@@ -4345,20 +4353,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4345
4353
  if (r === void 0) return t;
4346
4354
  let i = L.decodeUnknownEither(r)(t);
4347
4355
  if (i._tag === "Right") return t;
4348
- let a = St.formatErrorSync(i.left).map((e) => ({
4356
+ let a = Ct.formatErrorSync(i.left).map((e) => ({
4349
4357
  path: e.path.length === 0 ? "<root>" : e.path.join("."),
4350
4358
  message: e.message
4351
4359
  })), o = a[0];
4352
- throw new Ui({
4360
+ throw new Ki({
4353
4361
  table: e,
4354
4362
  summary: o === void 0 ? "row validation failed" : `${o.path}: ${o.message}`,
4355
4363
  issues: a
4356
4364
  });
4357
4365
  }, y = n.dialect, b = (e, t) => {
4358
4366
  let n = m(e);
4359
- return l(y ? se(t, n, y) : t, n, pi());
4367
+ return l(y ? le(t, n, y) : t, n, hi());
4360
4368
  }, x = (e, t) => {
4361
- let n = m(e), r = s(t, n, pi());
4369
+ let n = m(e), r = s(t, n, hi());
4362
4370
  return y ? c(r, n, y) : r;
4363
4371
  }, C = (e) => {
4364
4372
  let r = e.table, o = e.predicate;
@@ -4370,20 +4378,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4370
4378
  let e = S("deletedAt");
4371
4379
  o = o ? t(o, e) : e;
4372
4380
  }
4373
- return o = In(a, r, o), o === e.predicate ? e : {
4381
+ return o = Ln(a, r, o), o === e.predicate ? e : {
4374
4382
  ...e,
4375
4383
  predicate: o
4376
4384
  };
4377
4385
  }, ee = async (t) => {
4378
4386
  let n = await e.query(t);
4379
4387
  return x(t.table, n);
4380
- }, w = async (e) => ee(C(e)), te = async (t, r, i) => {
4388
+ }, te = async (e) => ee(C(e)), ne = async (t, r, i) => {
4381
4389
  let a = d(t, i);
4382
4390
  if (n.schemaRegistry.computedFields(t).size > 0) {
4383
4391
  let n = (await e.query({
4384
4392
  table: t,
4385
4393
  predicate: {
4386
- column: vs,
4394
+ column: xs,
4387
4395
  op: "eq",
4388
4396
  value: r
4389
4397
  },
@@ -4398,16 +4406,16 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4398
4406
  a = g(t, a);
4399
4407
  let o = await e.update(t, r, b(t, a));
4400
4408
  return o === null ? null : x(t, [o])[0];
4401
- }, T = async (t, r) => n.schemaRegistry.hasSoftDelete(t) ? await e.update(t, r, _()) !== null : e.delete(t, r), ne = async (t, n, r) => e.updateMany(t, b(t, d(t, n)), r), re = async (t, n) => e.deleteMany(t, n), ie = (e, r) => i != null && n.schemaRegistry.hasTenant(e) ? t(r, u("tenantId", i)) : r, ae = async (e, t, n) => ne(e, t, {
4409
+ }, w = async (t, r) => n.schemaRegistry.hasSoftDelete(t) ? await e.update(t, r, _()) !== null : e.delete(t, r), re = async (t, n, r) => e.updateMany(t, b(t, d(t, n)), r), ie = async (t, n) => e.deleteMany(t, n), ae = (e, r) => i != null && n.schemaRegistry.hasTenant(e) ? t(r, u("tenantId", i)) : r, oe = async (e, t, n) => re(e, t, {
4402
4410
  ...n,
4403
- where: ie(e, n.where)
4404
- }), oe = async (e, t) => re(e, {
4411
+ where: ae(e, n.where)
4412
+ }), se = async (e, t) => ie(e, {
4405
4413
  ...t,
4406
- where: ie(e, t.where)
4407
- }), ce = _s({
4414
+ where: ae(e, t.where)
4415
+ }), ce = bs({
4408
4416
  query: ee,
4409
- updateMany: ne,
4410
- deleteMany: re,
4417
+ updateMany: re,
4418
+ deleteMany: ie,
4411
4419
  delete: (t, n) => e.delete(t, n)
4412
4420
  }, {
4413
4421
  subject: n.subject,
@@ -4415,28 +4423,28 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4415
4423
  rowFilter: a
4416
4424
  });
4417
4425
  return {
4418
- query: w,
4426
+ query: te,
4419
4427
  one: (async (e) => {
4420
- let t = ys(e), n = await w({
4428
+ let t = Ss(e), n = await te({
4421
4429
  ...t,
4422
4430
  take: 2
4423
4431
  }), r = n[0];
4424
- if (r === void 0) throw new ls({
4432
+ if (r === void 0) throw new fs({
4425
4433
  table: t.table,
4426
4434
  found: 0
4427
4435
  });
4428
- if (n.length > 1) throw new ls({
4436
+ if (n.length > 1) throw new fs({
4429
4437
  table: t.table,
4430
4438
  found: n.length
4431
4439
  });
4432
4440
  return r;
4433
4441
  }),
4434
- first: (async (e) => (await w({
4435
- ...ys(e),
4442
+ first: (async (e) => (await te({
4443
+ ...Ss(e),
4436
4444
  take: 1
4437
4445
  }))[0] ?? null),
4438
- maybeOne: (async (e) => (await w({
4439
- ...ys(e),
4446
+ maybeOne: (async (e) => (await te({
4447
+ ...Ss(e),
4440
4448
  take: 1
4441
4449
  }))[0] ?? null),
4442
4450
  insert: async (t, n) => {
@@ -4452,12 +4460,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4452
4460
  return a === null ? null : x(t, [a])[0];
4453
4461
  },
4454
4462
  select: ce.select,
4455
- update: ((e, t, n) => t === void 0 ? ce.updateWhere(e) : te(e, t, n)),
4456
- delete: ((e, t) => t === void 0 ? ce.deleteWhere(e) : T(e, t)),
4457
- applyDefined: bs,
4463
+ update: ((e, t, n) => t === void 0 ? ce.updateWhere(e) : ne(e, t, n)),
4464
+ delete: ((e, t) => t === void 0 ? ce.deleteWhere(e) : w(e, t)),
4465
+ applyDefined: Cs,
4458
4466
  hardDelete: async (t, n) => e.delete(t, n),
4459
- updateMany: ae,
4460
- deleteMany: oe,
4467
+ updateMany: oe,
4468
+ deleteMany: se,
4461
4469
  upsert: async (t, n, r) => {
4462
4470
  let i = o(t, n), a = await p(t, i, () => e.upsert(t, b(t, v(t, i)), r));
4463
4471
  return x(t, [a])[0];
@@ -4466,34 +4474,34 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4466
4474
  let i = o(t, n), a = await p(t, i, () => e.insertIgnore(t, b(t, v(t, i)), r));
4467
4475
  return x(t, [a])[0];
4468
4476
  },
4469
- transactional: (t) => e.transactional(async (e) => t(Cs(e, n))),
4477
+ transactional: (t) => e.transactional(async (e) => t(Es(e, n))),
4470
4478
  ...e.raw ? { raw: e.raw.bind(e) } : {},
4471
4479
  onChange: (t) => e.onChange(t),
4472
4480
  injectExternalChange: (t) => e.injectExternalChange(t),
4473
4481
  ...e.changeScope === void 0 ? {} : { changeScope: e.changeScope }
4474
4482
  };
4475
- }, ws = class extends L.TaggedError()("CircuitOpen", {
4483
+ }, Ds = class extends L.TaggedError()("CircuitOpen", {
4476
4484
  name: L.String,
4477
4485
  retryAfterMs: L.Number
4478
- }) {}, Ts = {
4486
+ }) {}, Os = {
4479
4487
  tag: "closed",
4480
4488
  failureCount: 0,
4481
4489
  halfOpenSuccesses: 0,
4482
4490
  openedAt: 0
4483
- }, Es = { make: (e) => M.gen(function* () {
4484
- let t = e.name ?? "circuit", n = Ve.toMillis(Ve.decode(e.resetTimeout)), r = e.halfOpenSuccessThreshold ?? 1, i = e.isFailure ?? (() => !0), a = yield* I.make(Ts), o = M.gen(function* () {
4491
+ }, ks = { make: (e) => M.gen(function* () {
4492
+ let t = e.name ?? "circuit", n = He.toMillis(He.decode(e.resetTimeout)), r = e.halfOpenSuccessThreshold ?? 1, i = e.isFailure ?? (() => !0), a = yield* I.make(Os), o = M.gen(function* () {
4485
4493
  let e = yield* I.get(a);
4486
4494
  if (e.tag === "half-open") {
4487
4495
  let t = e.halfOpenSuccesses + 1;
4488
- yield* I.set(a, t >= r ? Ts : {
4496
+ yield* I.set(a, t >= r ? Os : {
4489
4497
  ...e,
4490
4498
  halfOpenSuccesses: t
4491
4499
  });
4492
4500
  return;
4493
4501
  }
4494
- e.failureCount !== 0 && (yield* I.set(a, Ts));
4502
+ e.failureCount !== 0 && (yield* I.set(a, Os));
4495
4503
  }), s = M.gen(function* () {
4496
- let t = yield* Le.currentTimeMillis, n = yield* I.get(a);
4504
+ let t = yield* ze.currentTimeMillis, n = yield* I.get(a);
4497
4505
  if (n.tag === "half-open" || n.tag === "open") {
4498
4506
  yield* I.set(a, {
4499
4507
  tag: "open",
@@ -4516,7 +4524,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4516
4524
  }), c = M.gen(function* () {
4517
4525
  let e = yield* I.get(a);
4518
4526
  if (e.tag !== "open") return null;
4519
- let t = (yield* Le.currentTimeMillis) - e.openedAt;
4527
+ let t = (yield* ze.currentTimeMillis) - e.openedAt;
4520
4528
  return t >= n ? (yield* I.set(a, {
4521
4529
  tag: "half-open",
4522
4530
  failureCount: 0,
@@ -4526,10 +4534,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4526
4534
  }), l = (e) => M.gen(function* () {
4527
4535
  let n = yield* c;
4528
4536
  return n === null ? yield* e.pipe(M.tap(() => o), M.tapErrorCause((e) => {
4529
- if (j.isInterruptedOnly(e)) return M.void;
4530
- let t = j.failureOption(e), n = t._tag === "Some" ? t.value : void 0;
4537
+ if (A.isInterruptedOnly(e)) return M.void;
4538
+ let t = A.failureOption(e), n = t._tag === "Some" ? t.value : void 0;
4531
4539
  return i(n) ? s : M.void;
4532
- })) : yield* M.fail(new ws({
4540
+ })) : yield* M.fail(new Ds({
4533
4541
  name: t,
4534
4542
  retryAfterMs: n
4535
4543
  }));
@@ -4538,25 +4546,25 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4538
4546
  value: I.get(a).pipe(M.map((e) => e.tag)),
4539
4547
  enumerable: !0
4540
4548
  }), Object.defineProperty(u, "reset", {
4541
- value: I.set(a, Ts),
4549
+ value: I.set(a, Os),
4542
4550
  enumerable: !0
4543
4551
  }), u;
4544
- }) }, Ds, Os = (e) => {
4545
- Ds = e;
4546
- }, ks = () => {
4547
- Ds = void 0;
4548
- }, As = () => Ds, js = async (e, t = {}) => {
4549
- let n = t.scopes === void 0 ? Fe(t.id ?? "system") : Fe(t.id ?? "system", t.scopes), r = t.store ?? Ds?.dataStore, i = t.schemaRegistry ?? Ds?.schemaRegistry, a = t.dialect ?? Ds?.dialect;
4552
+ }) }, As, js = (e) => {
4553
+ As = e;
4554
+ }, Ms = () => {
4555
+ As = void 0;
4556
+ }, Ns = () => As, Ps = async (e, t = {}) => {
4557
+ let n = t.scopes === void 0 ? Le(t.id ?? "system") : Le(t.id ?? "system", t.scopes), r = t.store ?? As?.dataStore, i = t.schemaRegistry ?? As?.schemaRegistry, a = t.dialect ?? As?.dialect;
4550
4558
  if (r === void 0 || i === void 0) throw Error("runAsSystem: no data store available — register one at boot via setSystemStoreHandle({ dataStore, schemaRegistry }) or pass { store, schemaRegistry } in the options.");
4551
4559
  return e({
4552
4560
  subject: n,
4553
- store: Cs(r, {
4561
+ store: Es(r, {
4554
4562
  subject: n,
4555
4563
  schemaRegistry: i,
4556
4564
  ...a === void 0 ? {} : { dialect: a }
4557
4565
  })
4558
4566
  });
4559
- }, Ms = (e) => {
4567
+ }, Fs = (e) => {
4560
4568
  let { currentRegion: t, replicaRegions: n, inner: r } = e, i = (e) => {
4561
4569
  if (t === void 0) return {
4562
4570
  sameRegion: [],
@@ -4584,7 +4592,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4584
4592
  return r.loadSnapshot();
4585
4593
  }
4586
4594
  };
4587
- }, Ns = (e = process.env) => {
4595
+ }, Is = (e = process.env) => {
4588
4596
  for (let t of [
4589
4597
  "VOLTRO_REGION",
4590
4598
  "AWS_REGION",
@@ -4596,7 +4604,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4596
4604
  let n = e[t];
4597
4605
  if (typeof n == "string" && n.length > 0) return n;
4598
4606
  }
4599
- }, Ps = () => {
4607
+ }, Ls = () => {
4600
4608
  let e = {
4601
4609
  primary: 0,
4602
4610
  lagByReplica: /* @__PURE__ */ new Map()
@@ -4621,27 +4629,27 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4621
4629
  e.lagByReplica.set(t, n);
4622
4630
  }
4623
4631
  };
4624
- }, Fs = Symbol.for("@voltro/ScheduleDefinition"), Is = (e) => typeof e == "object" && !!e && Fs in e, Ls = 30 * 6e4, Rs = (e) => {
4625
- let t = ze.parse(e.cron, e.timezone);
4626
- if (He.isLeft(t)) throw Error(`defineSchedule("${e.name}"): invalid cron expression "${e.cron}" (tz="${e.timezone}") — ${String(t.left)}`);
4632
+ }, Rs = Symbol.for("@voltro/ScheduleDefinition"), zs = (e) => typeof e == "object" && !!e && Rs in e, Bs = 30 * 6e4, Vs = (e) => {
4633
+ let t = j.parse(e.cron, e.timezone);
4634
+ if (Ue.isLeft(t)) throw Error(`defineSchedule("${e.name}"): invalid cron expression "${e.cron}" (tz="${e.timezone}") — ${String(t.left)}`);
4627
4635
  if (!e.timezone || e.timezone.trim() === "") throw Error(`defineSchedule("${e.name}"): timezone is required (e.g. "UTC", "Europe/Berlin")`);
4628
4636
  if (e.handler === void 0 && e.workflow === void 0) throw Error(`defineSchedule("${e.name}"): define either handler or workflow`);
4629
4637
  return {
4630
4638
  ...e,
4631
4639
  onOverlap: e.onOverlap ?? "skip",
4632
4640
  backfill: e.backfill ?? "skip",
4633
- maxRuntimeMs: e.maxRuntimeMs ?? Ls,
4634
- [Fs]: !0
4641
+ maxRuntimeMs: e.maxRuntimeMs ?? Bs,
4642
+ [Rs]: !0
4635
4643
  };
4636
- }, zs = (e) => ze.unsafeParse(e.cron, e.timezone), Bs = (e, t = /* @__PURE__ */ new Date()) => ze.next(zs(e), t), Z = "_voltro_wakeups", Vs = (e) => `${e.tenantId}:${e.kind}:${e.refId}`, Hs = (e) => ({
4644
+ }, Hs = (e) => j.unsafeParse(e.cron, e.timezone), Us = (e, t = /* @__PURE__ */ new Date()) => j.next(Hs(e), t), Z = "_voltro_wakeups", Ws = (e) => `${e.tenantId}:${e.kind}:${e.refId}`, Gs = (e) => ({
4637
4645
  tenantId: String(e.tenantId),
4638
4646
  kind: String(e.kind),
4639
4647
  refId: String(e.refId),
4640
4648
  wakeAt: e.wakeAt instanceof Date ? e.wakeAt : new Date(String(e.wakeAt)),
4641
4649
  status: e.status === "fired" ? "fired" : "pending"
4642
- }), Us = async (e, t) => {
4650
+ }), Ks = async (e, t) => {
4643
4651
  await e.upsert(Z, {
4644
- id: Vs(t),
4652
+ id: Ws(t),
4645
4653
  tenantId: t.tenantId,
4646
4654
  kind: t.kind,
4647
4655
  refId: t.refId,
@@ -4651,7 +4659,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4651
4659
  conflictColumns: ["id"],
4652
4660
  update: ["wakeAt", "status"]
4653
4661
  });
4654
- }, Ws = async (e, t) => e.delete(Z, Vs(t)), Gs = async (e, t) => await e.update(Z, Vs(t), { status: "fired" }) !== null, Ks = (e, t) => ({ and: [{
4662
+ }, qs = async (e, t) => e.delete(Z, Ws(t)), Js = async (e, t) => await e.update(Z, Ws(t), { status: "fired" }) !== null, Ys = (e, t) => ({ and: [{
4655
4663
  column: "id",
4656
4664
  op: "eq",
4657
4665
  value: e
@@ -4659,16 +4667,16 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4659
4667
  column: "status",
4660
4668
  op: "eq",
4661
4669
  value: t
4662
- }] }), qs = async (e, t) => await e.updateMany(Z, { status: "fired" }, { where: Ks(Vs(t), "pending") }) > 0, Js = async (e, t) => {
4663
- await e.updateMany(Z, { status: "pending" }, { where: Ks(Vs(t), "fired") });
4664
- }, Ys = {
4670
+ }] }), Xs = async (e, t) => await e.updateMany(Z, { status: "fired" }, { where: Ys(Ws(t), "pending") }) > 0, Zs = async (e, t) => {
4671
+ await e.updateMany(Z, { status: "pending" }, { where: Ys(Ws(t), "fired") });
4672
+ }, Qs = {
4665
4673
  column: "status",
4666
4674
  op: "eq",
4667
4675
  value: "pending"
4668
- }, Xs = async (e, t) => {
4676
+ }, $s = async (e, t) => {
4669
4677
  let n = {
4670
4678
  table: Z,
4671
- predicate: Ys,
4679
+ predicate: Qs,
4672
4680
  order: [{
4673
4681
  column: "wakeAt",
4674
4682
  direction: "asc"
@@ -4677,18 +4685,18 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4677
4685
  skip: void 0,
4678
4686
  projection: void 0
4679
4687
  };
4680
- return (await e.query(n)).map(Hs);
4681
- }, Zs = async (e, t, n = 500) => {
4682
- let r = await Xs(e, n), i = t.getTime();
4688
+ return (await e.query(n)).map(Gs);
4689
+ }, ec = async (e, t, n = 500) => {
4690
+ let r = await $s(e, n), i = t.getTime();
4683
4691
  return r.filter((e) => e.wakeAt.getTime() <= i);
4684
- }, Qs = async (e) => (await Xs(e, 1))[0] ?? null, $s = {
4692
+ }, tc = async (e) => (await $s(e, 1))[0] ?? null, nc = {
4685
4693
  column: "status",
4686
4694
  op: "eq",
4687
4695
  value: "fired"
4688
- }, ec = async (e, t = {}) => {
4696
+ }, rc = async (e, t = {}) => {
4689
4697
  let n = {
4690
4698
  table: Z,
4691
- predicate: $s,
4699
+ predicate: nc,
4692
4700
  order: [{
4693
4701
  column: "wakeAt",
4694
4702
  direction: "asc"
@@ -4699,12 +4707,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4699
4707
  }, r = await e.query(n), i = t.firedOlderThan?.getTime(), a = 0;
4700
4708
  for (let t of r) i !== void 0 && (t.wakeAt instanceof Date ? t.wakeAt : new Date(String(t.wakeAt))).getTime() >= i || await e.delete(Z, String(t.id)) && a++;
4701
4709
  return a;
4702
- }, tc = {
4710
+ }, ic = Ui, ac = "default", oc = {
4703
4711
  kind: "single",
4704
4712
  tryClaim: async () => !0
4705
- }, nc = "_voltro_schedule_claims", rc = (e, t, n) => {
4713
+ }, sc = "_voltro_schedule_claims", cc = (e, t, n) => {
4706
4714
  let r = async (t) => (await e.query({
4707
- table: nc,
4715
+ table: sc,
4708
4716
  order: [],
4709
4717
  predicate: void 0,
4710
4718
  projection: ["id"],
@@ -4719,7 +4727,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4719
4727
  if (await r(s)) return !1;
4720
4728
  } catch {}
4721
4729
  try {
4722
- return await e.insert(nc, {
4730
+ return await e.insert(sc, {
4723
4731
  id: s,
4724
4732
  scheduleName: i,
4725
4733
  bucket: o,
@@ -4737,12 +4745,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4737
4745
  }
4738
4746
  }
4739
4747
  };
4740
- }, ic = "_voltro_schedule_runs", ac = async (e, t) => {
4748
+ }, lc = "_voltro_schedule_runs", uc = async (e, t) => {
4741
4749
  let { store: n, coordinator: r, buildContext: i, replicaId: a, log: o, onRunEvent: s, interceptFire: c } = t, l = t.dormancy === "sleep", u = t.dormancyTenantId ?? "default", d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map(), m = !1, h = new Map(e.map((e) => [e.name, e])), g = (e, t) => {
4742
- s?.(e, sc(t));
4750
+ s?.(e, fc(t));
4743
4751
  }, _ = async (e, t, r, i, s, c) => {
4744
4752
  try {
4745
- let o = `sr_${me()}`, l = await n.insert(ic, {
4753
+ let o = `sr_${ge()}`, l = await n.insert(lc, {
4746
4754
  id: o,
4747
4755
  name: e.name,
4748
4756
  status: i,
@@ -4767,7 +4775,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4767
4775
  }
4768
4776
  }, v = async (e, t) => {
4769
4777
  try {
4770
- let r = await n.update(ic, e, t);
4778
+ let r = await n.update(lc, e, t);
4771
4779
  r && g("update", r);
4772
4780
  } catch (t) {
4773
4781
  o.warn("schedule: failed to record run finish", {
@@ -4778,7 +4786,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4778
4786
  }, y = async (e) => {
4779
4787
  try {
4780
4788
  let t = await n.query({
4781
- table: ic,
4789
+ table: lc,
4782
4790
  predicate: {
4783
4791
  _tag: "leaf",
4784
4792
  column: "status",
@@ -4812,7 +4820,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4812
4820
  traceId: `schedule-${e.name}-${a.getTime()}`,
4813
4821
  scheduleName: e.name,
4814
4822
  trigger: n,
4815
- runId: s
4823
+ runId: s,
4824
+ subject: ic
4816
4825
  })
4817
4826
  };
4818
4827
  try {
@@ -4843,7 +4852,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4843
4852
  let n = Q(t).includes("exceeded maxRuntimeMs");
4844
4853
  s && await v(s, {
4845
4854
  status: "failed",
4846
- errorTag: n ? "timeout" : oc(t),
4855
+ errorTag: n ? "timeout" : dc(t),
4847
4856
  errorMessage: Q(t),
4848
4857
  completedAt: /* @__PURE__ */ new Date(),
4849
4858
  durationMs: Date.now() - l
@@ -4851,7 +4860,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4851
4860
  name: e.name,
4852
4861
  reason: Q(t),
4853
4862
  timeout: n
4854
- }), Me({
4863
+ }), Pe({
4855
4864
  error: t,
4856
4865
  source: "schedule",
4857
4866
  name: e.name,
@@ -4900,8 +4909,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4900
4909
  }
4901
4910
  }, C = async (e) => {
4902
4911
  try {
4903
- let t = ze.next(zs(e), /* @__PURE__ */ new Date());
4904
- await Us(n, {
4912
+ let t = j.next(Hs(e), /* @__PURE__ */ new Date());
4913
+ await Ks(n, {
4905
4914
  tenantId: u,
4906
4915
  kind: "schedule",
4907
4916
  refId: e.name,
@@ -4913,9 +4922,9 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4913
4922
  reason: Q(t)
4914
4923
  });
4915
4924
  }
4916
- }, ee = 2147483647, w = (e) => {
4925
+ }, ee = 2147483647, te = (e) => {
4917
4926
  if (m) return;
4918
- let n = zs(e), r = ze.next(n, /* @__PURE__ */ new Date()), i = () => {
4927
+ let n = Hs(e), r = j.next(n, /* @__PURE__ */ new Date()), i = () => {
4919
4928
  if (m) return;
4920
4929
  let n = r.getTime() - Date.now();
4921
4930
  if (n > ee) {
@@ -4927,17 +4936,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4927
4936
  x(e, r, e.trigger ?? t.defaultTrigger).catch((t) => o.warn("schedule: fire rejected", {
4928
4937
  name: e.name,
4929
4938
  reason: Q(t)
4930
- })).finally(() => w(e));
4939
+ })).finally(() => te(e));
4931
4940
  }, Math.max(0, n));
4932
4941
  d.set(e.name, a);
4933
4942
  };
4934
4943
  i();
4935
- }, te = async (e) => {
4944
+ }, ne = async (e) => {
4936
4945
  if (e.backfill === "skip") return;
4937
4946
  let r;
4938
4947
  try {
4939
4948
  let t = (await n.query({
4940
- table: ic,
4949
+ table: lc,
4941
4950
  order: [{
4942
4951
  column: "scheduledAt",
4943
4952
  direction: "desc"
@@ -4956,8 +4965,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4956
4965
  return;
4957
4966
  }
4958
4967
  if (!r) return;
4959
- let i = zs(e), a = [], s = ze.next(i, r), c = Date.now();
4960
- for (; s.getTime() < c && a.length < 1e3;) a.push(s), s = ze.next(i, s);
4968
+ let i = Hs(e), a = [], s = j.next(i, r), c = Date.now();
4969
+ for (; s.getTime() < c && a.length < 1e3;) a.push(s), s = j.next(i, s);
4961
4970
  if (a.length !== 0) if (o.info("schedule: backfill", {
4962
4971
  name: e.name,
4963
4972
  missed: a.length,
@@ -4967,20 +4976,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
4967
4976
  let n = a[a.length - 1];
4968
4977
  await x(e, n, e.trigger ?? t.defaultTrigger);
4969
4978
  } else for (let n of a) await x(e, n, e.trigger ?? t.defaultTrigger);
4970
- }, T = e.filter((e) => (e.trigger ?? t.defaultTrigger) === "self");
4979
+ }, w = e.filter((e) => (e.trigger ?? t.defaultTrigger) === "self");
4971
4980
  o.info("scheduler: starting", {
4972
4981
  total: e.length,
4973
- self: T.length,
4974
- external: e.length - T.length,
4982
+ self: w.length,
4983
+ external: e.length - w.length,
4975
4984
  coordinator: r.kind
4976
4985
  });
4977
- let ne = (t.armSelf ?? !0) && !l;
4986
+ let re = (t.armSelf ?? !0) && !l;
4978
4987
  if (l) {
4979
- o.info("scheduler: sleep mode — registering wakeups, not arming timers", { count: T.length });
4980
- for (let e of T) await C(e);
4981
- } else if (ne) {
4982
- for (let e of T) await te(e);
4983
- for (let e of T) w(e);
4988
+ o.info("scheduler: sleep mode — registering wakeups, not arming timers", { count: w.length });
4989
+ for (let e of w) await C(e);
4990
+ } else if (re) {
4991
+ for (let e of w) await ne(e);
4992
+ for (let e of w) te(e);
4984
4993
  }
4985
4994
  return {
4986
4995
  fireNow: async (e, t) => {
@@ -5001,11 +5010,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5001
5010
  d.clear(), o.info("scheduler: stopped");
5002
5011
  }
5003
5012
  };
5004
- }, Q = (e) => e?.message ?? String(e), oc = (e) => e && typeof e == "object" && "_tag" in e ? String(e._tag) : null, sc = (e) => {
5013
+ }, Q = (e) => e?.message ?? String(e), dc = (e) => e && typeof e == "object" && "_tag" in e ? String(e._tag) : null, fc = (e) => {
5005
5014
  let t = {};
5006
5015
  for (let [n, r] of Object.entries(e)) t[n] = r instanceof Date ? r.toISOString() : r;
5007
5016
  return t;
5008
- }, cc = (e, t, n, r) => {
5017
+ }, pc = (e, t, n, r) => {
5009
5018
  let i = !1, a, o = async () => {
5010
5019
  if (i) return;
5011
5020
  let a = new Date(Math.floor(Date.now() / t) * t), o = !1;
@@ -5035,96 +5044,96 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5035
5044
  i || (i = !0, a && clearInterval(a), a = void 0);
5036
5045
  }
5037
5046
  };
5038
- }, lc = (e) => (t, n, r) => cc(t, n, r, e), uc = E("_voltro_schedule_runs", {
5047
+ }, mc = (e) => (t, n, r) => pc(t, n, r, e), hc = T("_voltro_schedule_runs", {
5039
5048
  id: v({ prefix: "schrun" }),
5040
- name: D(),
5041
- status: D().oneOf([
5049
+ name: E(),
5050
+ status: E().oneOf([
5042
5051
  "running",
5043
5052
  "succeeded",
5044
5053
  "failed",
5045
5054
  "skipped",
5046
5055
  "missed"
5047
5056
  ]).default("running"),
5048
- trigger: D().oneOf([
5057
+ trigger: E().oneOf([
5049
5058
  "self",
5050
5059
  "external",
5051
5060
  "manual"
5052
5061
  ]).default("self"),
5053
- scheduledAt: O(),
5054
- firedAt: O().nullable(),
5055
- completedAt: O().nullable(),
5062
+ scheduledAt: D(),
5063
+ firedAt: D().nullable(),
5064
+ completedAt: D().nullable(),
5056
5065
  durationMs: b().nullable(),
5057
- errorTag: D().nullable(),
5058
- errorMessage: D().nullable(),
5059
- coordinationOutcome: D().oneOf([
5066
+ errorTag: E().nullable(),
5067
+ errorMessage: E().nullable(),
5068
+ coordinationOutcome: E().oneOf([
5060
5069
  "single",
5061
5070
  "wonLock",
5062
5071
  "lostLock",
5063
5072
  "external",
5064
5073
  "cluster"
5065
5074
  ]).nullable(),
5066
- replicaId: D().nullable(),
5075
+ replicaId: E().nullable(),
5067
5076
  result: C().nullable()
5068
- }).index(["name", "scheduledAt"]).index(["status"]), dc = E("_voltro_schedule_claims", {
5077
+ }).index(["name", "scheduledAt"]).index(["status"]), gc = T("_voltro_schedule_claims", {
5069
5078
  id: v({ prefix: "schclaim" }),
5070
- scheduleName: D(),
5071
- bucket: D(),
5072
- claimedBy: D(),
5073
- claimedAt: O()
5074
- }).index(["scheduleName", "bucket"]).index(["claimedAt"]), fc = E("_voltro_traces", {
5079
+ scheduleName: E(),
5080
+ bucket: E(),
5081
+ claimedBy: E(),
5082
+ claimedAt: D()
5083
+ }).index(["scheduleName", "bucket"]).index(["claimedAt"]), _c = T("_voltro_traces", {
5075
5084
  id: v({ prefix: "span" }),
5076
- traceId: D(),
5077
- spanId: D(),
5078
- parentSpanId: D().nullable(),
5079
- name: D(),
5080
- kind: D().oneOf([
5085
+ traceId: E(),
5086
+ spanId: E(),
5087
+ parentSpanId: E().nullable(),
5088
+ name: E(),
5089
+ kind: E().oneOf([
5081
5090
  "internal",
5082
5091
  "server",
5083
5092
  "client",
5084
5093
  "producer",
5085
5094
  "consumer"
5086
5095
  ]).default("internal"),
5087
- status: D().oneOf([
5096
+ status: E().oneOf([
5088
5097
  "ok",
5089
5098
  "error",
5090
5099
  "unset"
5091
5100
  ]).default("unset"),
5092
- statusMessage: D().nullable(),
5093
- startedAt: O(),
5094
- endedAt: O(),
5101
+ statusMessage: E().nullable(),
5102
+ startedAt: D(),
5103
+ endedAt: D(),
5095
5104
  durationMs: b(),
5096
5105
  attributes: C().nullable(),
5097
5106
  events: C().nullable()
5098
- }).index(["traceId", "startedAt"]).index(["startedAt"]).index(["status"]), pc = E("_voltro_undo_log", {
5107
+ }).index(["traceId", "startedAt"]).index(["startedAt"]).index(["status"]), vc = T("_voltro_undo_log", {
5099
5108
  id: v({ prefix: "undo" }),
5100
- tag: D(),
5101
- label: D().nullable(),
5102
- subjectId: D().nullable(),
5103
- tenantId: D().nullable(),
5104
- traceId: D().nullable(),
5105
- changes: D(),
5109
+ tag: E(),
5110
+ label: E().nullable(),
5111
+ subjectId: E().nullable(),
5112
+ tenantId: E().nullable(),
5113
+ traceId: E().nullable(),
5114
+ changes: E(),
5106
5115
  crossesAction: r().default(!1),
5107
5116
  undone: r().default(!1),
5108
- createdAt: O().default("now")
5109
- }).index(["subjectId", "createdAt"]).reactive(), mc = (e = process.env) => {
5117
+ createdAt: D().default("now")
5118
+ }).index(["subjectId", "createdAt"]).reactive(), yc = (e = process.env) => {
5110
5119
  let t = (e.VOLTRO_UNDO ?? "").toLowerCase();
5111
5120
  return t === "on" || t === "1" || t === "true" ? !0 : t === "off" || t === "0" || t === "false" ? !1 : e.NODE_ENV !== "production";
5112
- }, hc = (e) => e.startsWith("_voltro"), gc = async (e, t, n) => (await e.query({
5121
+ }, bc = (e) => e.startsWith("_voltro"), xc = async (e, t, n) => (await e.query({
5113
5122
  table: t,
5114
5123
  predicate: u("id", n),
5115
5124
  order: []
5116
- }))[0] ?? null, _c = (e, t) => new Proxy(e, { get(e, n, r) {
5125
+ }))[0] ?? null, Sc = (e, t) => new Proxy(e, { get(e, n, r) {
5117
5126
  if (n === "insert") return async (n, r) => {
5118
5127
  let i = await e.insert(n, r);
5119
- return hc(n) || t({
5128
+ return bc(n) || t({
5120
5129
  table: n,
5121
5130
  op: "insert",
5122
5131
  next: i
5123
5132
  }), i;
5124
5133
  };
5125
5134
  if (n === "update") return async (n, r, i) => {
5126
- let a = hc(n) ? null : await gc(e, n, r), o = await e.update(n, r, i);
5127
- return hc(n) || t({
5135
+ let a = bc(n) ? null : await xc(e, n, r), o = await e.update(n, r, i);
5136
+ return bc(n) || t({
5128
5137
  table: n,
5129
5138
  op: "update",
5130
5139
  id: r,
@@ -5133,8 +5142,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5133
5142
  }), o;
5134
5143
  };
5135
5144
  if (n === "delete") return async (n, r) => {
5136
- let i = hc(n) ? null : await gc(e, n, r), a = await e.delete(n, r);
5137
- return !hc(n) && a && t({
5145
+ let i = bc(n) ? null : await xc(e, n, r), a = await e.delete(n, r);
5146
+ return !bc(n) && a && t({
5138
5147
  table: n,
5139
5148
  op: "delete",
5140
5149
  id: r,
@@ -5143,10 +5152,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5143
5152
  };
5144
5153
  let i = Reflect.get(e, n, r);
5145
5154
  return typeof i == "function" ? i.bind(e) : i;
5146
- } }), vc = (e) => {
5155
+ } }), Cc = (e) => {
5147
5156
  let t = [];
5148
5157
  return {
5149
- tx: _c(e, (e) => t.push(e)),
5158
+ tx: Sc(e, (e) => t.push(e)),
5150
5159
  persist: async (e, n) => {
5151
5160
  if (t.length === 0 || n.tag.startsWith("__voltro")) return;
5152
5161
  let r = n.subject;
@@ -5162,14 +5171,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5162
5171
  });
5163
5172
  }
5164
5173
  };
5165
- }, yc = (e) => {
5174
+ }, wc = (e) => {
5166
5175
  if (e.id !== void 0) return e.id;
5167
5176
  let t = e.next?.id;
5168
5177
  if (typeof t == "string") return t;
5169
5178
  let n = e.prev?.id;
5170
5179
  return typeof n == "string" ? n : void 0;
5171
- }, bc = (e) => {
5172
- let t = yc(e);
5180
+ }, Tc = (e) => {
5181
+ let t = wc(e);
5173
5182
  switch (e.op) {
5174
5183
  case "insert": return t === void 0 ? null : {
5175
5184
  table: e.table,
@@ -5193,28 +5202,28 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5193
5202
  row: e.prev
5194
5203
  };
5195
5204
  }
5196
- }, xc = (e) => {
5197
- if (e.crossesAction) throw new Sc(e.invocationId, "action");
5205
+ }, Ec = (e) => {
5206
+ if (e.crossesAction) throw new Dc(e.invocationId, "action");
5198
5207
  let t = [];
5199
5208
  for (let n = e.changes.length - 1; n >= 0; --n) {
5200
- let r = bc(e.changes[n]);
5209
+ let r = Tc(e.changes[n]);
5201
5210
  r !== null && t.push(r);
5202
5211
  }
5203
5212
  return t;
5204
- }, Sc = class extends Error {
5213
+ }, Dc = class extends Error {
5205
5214
  invocationId;
5206
5215
  boundary;
5207
5216
  _tag = "UndoBoundaryError";
5208
5217
  constructor(e, t) {
5209
5218
  super(t === "action" ? `cannot undo invocation ${e}: it crossed an action (external side effect)` : `cannot undo invocation ${e}: the row changed since (conflict)`), this.invocationId = e, this.boundary = t, this.name = "UndoBoundaryError";
5210
5219
  }
5211
- }, Cc = (e, t, n = ["updatedAt", "updatedBy"]) => {
5220
+ }, Oc = (e, t, n = ["updatedAt", "updatedBy"]) => {
5212
5221
  if (t == null) return e == null;
5213
5222
  if (e == null) return !1;
5214
5223
  let r = new Set(n);
5215
5224
  for (let [n, i] of Object.entries(t)) if (!r.has(n) && !Object.is(e[n], i) && JSON.stringify(e[n]) !== JSON.stringify(i)) return !1;
5216
5225
  return !0;
5217
- }, wc = class {
5226
+ }, kc = class {
5218
5227
  capacity;
5219
5228
  done = [];
5220
5229
  undone = [];
@@ -5250,7 +5259,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5250
5259
  redo: [...this.undone]
5251
5260
  };
5252
5261
  }
5253
- }, Tc = (e, t = /* @__PURE__ */ new Set()) => e.op === "insert" ? {
5262
+ }, Ac = (e, t = /* @__PURE__ */ new Set()) => e.op === "insert" ? {
5254
5263
  table: e.table,
5255
5264
  op: "insert",
5256
5265
  next: e.new ?? null
@@ -5267,7 +5276,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5267
5276
  table: e.table,
5268
5277
  op: "delete",
5269
5278
  prev: e.old ?? null
5270
- }, Ec = async (e, t) => {
5279
+ }, jc = async (e, t) => {
5271
5280
  switch (t.op) {
5272
5281
  case "delete":
5273
5282
  await e.delete(t.table, t.id);
@@ -5285,21 +5294,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5285
5294
  await e.insert(t.table, t.row);
5286
5295
  return;
5287
5296
  }
5288
- }, Dc = async (e, t) => {
5289
- for (let n of t) await Ec(e, n);
5290
- }, Oc = (e) => e.request?.subject?.id ?? null, kc = (e) => e === !0 || e === 1, Ac = async (e, t, n) => (await e.query({
5297
+ }, Mc = async (e, t) => {
5298
+ for (let n of t) await jc(e, n);
5299
+ }, Nc = (e) => e.request?.subject?.id ?? null, Pc = (e) => e === !0 || e === 1, Fc = async (e, t, n) => (await e.query({
5291
5300
  table: t,
5292
5301
  predicate: u("id", n),
5293
5302
  order: []
5294
- }))[0] ?? null, jc = (e) => {
5303
+ }))[0] ?? null, Ic = (e) => {
5295
5304
  try {
5296
5305
  let t = JSON.parse(String(e ?? "[]"));
5297
5306
  return Array.isArray(t) ? t : [];
5298
5307
  } catch {
5299
5308
  return [];
5300
5309
  }
5301
- }, Mc = (e) => e.id ?? e.next?.id ?? e.prev?.id, Nc = async (e, t) => {
5302
- let n = Oc(t);
5310
+ }, Lc = (e) => e.id ?? e.next?.id ?? e.prev?.id, Rc = async (e, t) => {
5311
+ let n = Nc(t);
5303
5312
  return [...await t.store.query({
5304
5313
  table: "_voltro_undo_log",
5305
5314
  predicate: u("subjectId", n),
@@ -5308,68 +5317,68 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5308
5317
  id: String(e.id),
5309
5318
  tag: String(e.tag ?? ""),
5310
5319
  label: e.label ?? null,
5311
- undone: kc(e.undone),
5312
- crossesAction: kc(e.crossesAction),
5320
+ undone: Pc(e.undone),
5321
+ crossesAction: Pc(e.crossesAction),
5313
5322
  createdAt: String(e.createdAt ?? "")
5314
5323
  }));
5315
- }, Pc = async (e, t) => {
5316
- let n = await Ac(t.store, "_voltro_undo_log", e.invocationId);
5317
- if (!n) throw new Te({ invocationId: e.invocationId });
5318
- if ((n.subjectId ?? null) !== Oc(t)) throw new we({ invocationId: e.invocationId });
5324
+ }, zc = async (e, t) => {
5325
+ let n = await Fc(t.store, "_voltro_undo_log", e.invocationId);
5326
+ if (!n) throw new De({ invocationId: e.invocationId });
5327
+ if ((n.subjectId ?? null) !== Nc(t)) throw new Ee({ invocationId: e.invocationId });
5319
5328
  return n;
5320
- }, Fc = async (e, t) => {
5321
- let n = await Pc(e, t);
5322
- if (kc(n.undone)) return { ok: !0 };
5323
- if (kc(n.crossesAction)) throw new Ce({
5329
+ }, Bc = async (e, t) => {
5330
+ let n = await zc(e, t);
5331
+ if (Pc(n.undone)) return { ok: !0 };
5332
+ if (Pc(n.crossesAction)) throw new Te({
5324
5333
  invocationId: e.invocationId,
5325
5334
  reason: "action"
5326
5335
  });
5327
- let r = jc(n.changes);
5336
+ let r = Ic(n.changes);
5328
5337
  for (let n of r) {
5329
- let r = Mc(n);
5330
- if (r !== void 0 && !Cc(await Ac(t.store, n.table, r), n.next ?? null)) throw new Ce({
5338
+ let r = Lc(n);
5339
+ if (r !== void 0 && !Oc(await Fc(t.store, n.table, r), n.next ?? null)) throw new Te({
5331
5340
  invocationId: e.invocationId,
5332
5341
  reason: "conflict"
5333
5342
  });
5334
5343
  }
5335
5344
  let i = {
5336
5345
  invocationId: e.invocationId,
5337
- subject: Oc(t),
5346
+ subject: Nc(t),
5338
5347
  changes: r,
5339
5348
  crossesAction: !1
5340
5349
  };
5341
- return await Dc(t.store, xc(i)), await t.store.update("_voltro_undo_log", e.invocationId, { undone: !0 }), { ok: !0 };
5342
- }, Ic = async (e, t) => {
5343
- let n = await Pc(e, t);
5344
- if (!kc(n.undone)) return { ok: !0 };
5345
- for (let e of jc(n.changes)) {
5346
- let n = Mc(e);
5350
+ return await Mc(t.store, Ec(i)), await t.store.update("_voltro_undo_log", e.invocationId, { undone: !0 }), { ok: !0 };
5351
+ }, Vc = async (e, t) => {
5352
+ let n = await zc(e, t);
5353
+ if (!Pc(n.undone)) return { ok: !0 };
5354
+ for (let e of Ic(n.changes)) {
5355
+ let n = Lc(e);
5347
5356
  e.op === "insert" && e.next ? await t.store.insert(e.table, e.next) : e.op === "update" && n !== void 0 && e.next ? await t.store.update(e.table, n, e.next) : e.op === "delete" && n !== void 0 && await t.store.delete(e.table, n);
5348
5357
  }
5349
5358
  return await t.store.update("_voltro_undo_log", e.invocationId, { undone: !1 }), { ok: !0 };
5350
- }, Lc = (e = process.env) => {
5359
+ }, Hc = (e = process.env) => {
5351
5360
  let t = (e.VOLTRO_TIMELINE ?? "").toLowerCase();
5352
5361
  return t === "off" || t === "0" || t === "false" ? "off" : t === "all" ? "all" : t === "interesting" || t === "on" || t === "1" || t === "true" ? "interesting" : e.NODE_ENV === "production" ? "off" : "interesting";
5353
- }, Rc = /pass(word)?|secret|token|api[_-]?key|authorization|cookie|ssn|credit[_-]?card|card[_-]?number|cvv|encrypted/i, zc = "«redacted»", Bc = (e) => {
5362
+ }, Uc = /pass(word)?|secret|token|api[_-]?key|authorization|cookie|ssn|credit[_-]?card|card[_-]?number|cvv|encrypted/i, Wc = "«redacted»", Gc = (e) => {
5354
5363
  if (e == null) return null;
5355
5364
  let t = {};
5356
- for (let [n, r] of Object.entries(e)) t[n] = Rc.test(n) ? zc : r;
5365
+ for (let [n, r] of Object.entries(e)) t[n] = Uc.test(n) ? Wc : r;
5357
5366
  return t;
5358
- }, Vc = (e) => {
5367
+ }, Kc = (e) => {
5359
5368
  let t = e?.id;
5360
5369
  return typeof t == "string" ? t : void 0;
5361
- }, Hc = (e, t) => {
5370
+ }, qc = (e, t) => {
5362
5371
  if (t.op === "insert") {
5363
- let n = Vc(t.new);
5372
+ let n = Kc(t.new);
5364
5373
  return n === void 0 ? e : e.filter((e) => e.id !== n);
5365
5374
  }
5366
5375
  if (t.op === "update") {
5367
5376
  if (t.old == null) return e;
5368
- let n = Vc(t.new) ?? Vc(t.old);
5377
+ let n = Kc(t.new) ?? Kc(t.old);
5369
5378
  return e.map((e) => e.id === n ? t.old : e);
5370
5379
  }
5371
5380
  return t.old == null ? e : [...e, t.old];
5372
- }, Uc = class {
5381
+ }, Jc = class {
5373
5382
  mode;
5374
5383
  capacity;
5375
5384
  now;
@@ -5389,8 +5398,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5389
5398
  ts: this.now(),
5390
5399
  table: e.table,
5391
5400
  op: e.op,
5392
- old: Bc(e.old),
5393
- new: Bc(e.new),
5401
+ old: Gc(e.old),
5402
+ new: Gc(e.new),
5394
5403
  tenantId: n
5395
5404
  }), this.ring.length > this.capacity && this.ring.shift(), t;
5396
5405
  }
@@ -5403,23 +5412,23 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5403
5412
  }
5404
5413
  replay(e, t, n) {
5405
5414
  let r = this.ring.filter((n) => n.table === e && n.seq > t).sort((e, t) => t.seq - e.seq), i = n;
5406
- for (let e of r) i = Hc(i, e);
5415
+ for (let e of r) i = qc(i, e);
5407
5416
  return i;
5408
5417
  }
5409
- }, Wc, Gc = () => (Wc === void 0 && (Wc = new Uc(Lc())), Wc), Kc = (e) => {
5410
- Wc = e;
5411
- }, qc = (e) => {
5412
- let t = Gc();
5418
+ }, Yc, Xc = () => (Yc === void 0 && (Yc = new Jc(Hc())), Yc), Zc = (e) => {
5419
+ Yc = e;
5420
+ }, Qc = (e) => {
5421
+ let t = Xc();
5413
5422
  if (t.enabled) try {
5414
5423
  t.record(e);
5415
5424
  } catch {}
5416
- }, Jc = /* @__PURE__ */ new Set([
5425
+ }, $c = /* @__PURE__ */ new Set([
5417
5426
  "count",
5418
5427
  "sum",
5419
5428
  "avg",
5420
5429
  "min",
5421
5430
  "max"
5422
- ]), Yc = (e) => {
5431
+ ]), el = (e) => {
5423
5432
  if (e.joins !== void 0 && e.joins.length > 0) return {
5424
5433
  maintainable: !1,
5425
5434
  reason: "joins are not maintainable in v1"
@@ -5441,7 +5450,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5441
5450
  reason: "v1 maintains exactly one aggregation"
5442
5451
  };
5443
5452
  let t = e.aggregations[0];
5444
- return Jc.has(t.op) ? t.op !== "count" && (t.column === void 0 || t.column.length === 0) ? {
5453
+ return $c.has(t.op) ? t.op !== "count" && (t.column === void 0 || t.column.length === 0) ? {
5445
5454
  maintainable: !1,
5446
5455
  reason: `op '${t.op}' requires a column`
5447
5456
  } : {
@@ -5455,7 +5464,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5455
5464
  maintainable: !1,
5456
5465
  reason: `op '${t.op}' is not maintainable`
5457
5466
  };
5458
- }, Xc = "\0", $ = (e, t) => t === void 0 || t.length === 0 ? "" : t.map((t) => JSON.stringify(e[t] ?? null)).join(Xc), Zc = (e, t) => t === void 0 ? 0 : Number(e[t] ?? 0), Qc = (e, t) => {
5467
+ }, tl = "\0", $ = (e, t) => t === void 0 || t.length === 0 ? "" : t.map((t) => JSON.stringify(e[t] ?? null)).join(tl), nl = (e, t) => t === void 0 ? 0 : Number(e[t] ?? 0), rl = (e, t) => {
5459
5468
  switch (e.op) {
5460
5469
  case "count": return t.count;
5461
5470
  case "sum": return t.sum ?? 0;
@@ -5463,10 +5472,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5463
5472
  case "min":
5464
5473
  case "max": return t.count > 0 ? t.extreme ?? null : null;
5465
5474
  }
5466
- }, $c = (e, t) => {
5475
+ }, il = (e, t) => {
5467
5476
  let n = /* @__PURE__ */ new Map();
5468
5477
  for (let r of t) {
5469
- let t = $(r, e.groupBy), i = n.get(t), a = Zc(r, e.column);
5478
+ let t = $(r, e.groupBy), i = n.get(t), a = nl(r, e.column);
5470
5479
  if (i === void 0) n.set(t, {
5471
5480
  count: 1,
5472
5481
  ...e.op === "sum" || e.op === "avg" ? { sum: a } : {},
@@ -5482,10 +5491,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5482
5491
  }
5483
5492
  }
5484
5493
  return n;
5485
- }, el = (e, t) => [...t.entries()].map(([t, n]) => ({
5494
+ }, al = (e, t) => [...t.entries()].map(([t, n]) => ({
5486
5495
  groupKey: t,
5487
- value: Qc(e, n)
5488
- })), tl = (e, t, n) => {
5496
+ value: rl(e, n)
5497
+ })), ol = (e, t, n) => {
5489
5498
  let r = new Map(t), i = /* @__PURE__ */ new Set(), a = (t) => {
5490
5499
  let n = $(t, e.groupBy), a = r.get(n);
5491
5500
  if (a === void 0) return;
@@ -5494,7 +5503,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5494
5503
  r.delete(n);
5495
5504
  return;
5496
5505
  }
5497
- let s = Zc(t, e.column);
5506
+ let s = nl(t, e.column);
5498
5507
  e.op === "min" || e.op === "max" ? (a.extreme !== void 0 && s === a.extreme && i.add(n), r.set(n, {
5499
5508
  count: o,
5500
5509
  ...a.extreme === void 0 ? {} : { extreme: a.extreme }
@@ -5503,7 +5512,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5503
5512
  ...e.op === "sum" || e.op === "avg" ? { sum: (a.sum ?? 0) - s } : {}
5504
5513
  });
5505
5514
  }, o = (t) => {
5506
- let n = $(t, e.groupBy), i = r.get(n), a = Zc(t, e.column);
5515
+ let n = $(t, e.groupBy), i = r.get(n), a = nl(t, e.column);
5507
5516
  if (i === void 0) {
5508
5517
  r.set(n, {
5509
5518
  count: 1,
@@ -5523,15 +5532,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5523
5532
  state: r,
5524
5533
  rescanGroups: [...i]
5525
5534
  };
5526
- }, nl = (e, t, n, r) => {
5535
+ }, sl = (e, t, n, r) => {
5527
5536
  if (n.length === 0) return t;
5528
- let i = new Set(n), a = $c(e, r.filter((t) => i.has($(t, e.groupBy)))), o = new Map(t);
5537
+ let i = new Set(n), a = il(e, r.filter((t) => i.has($(t, e.groupBy)))), o = new Map(t);
5529
5538
  for (let e of i) {
5530
5539
  let t = a.get(e);
5531
5540
  t === void 0 ? o.delete(e) : o.set(e, t);
5532
5541
  }
5533
5542
  return o;
5534
- }, rl = class {
5543
+ }, cl = class {
5535
5544
  shape;
5536
5545
  state = /* @__PURE__ */ new Map();
5537
5546
  groups = /* @__PURE__ */ new Map();
@@ -5539,7 +5548,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5539
5548
  this.shape = e;
5540
5549
  }
5541
5550
  seed(e) {
5542
- this.state = $c(this.shape, e), this.groups.clear();
5551
+ this.state = il(this.shape, e), this.groups.clear();
5543
5552
  for (let t of e) {
5544
5553
  let e = $(t, this.shape.groupBy);
5545
5554
  this.groups.has(e) || this.groups.set(e, this.groupValues(t));
@@ -5551,14 +5560,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5551
5560
  let e = $(t, this.shape.groupBy);
5552
5561
  this.groups.has(e) || this.groups.set(e, this.groupValues(t));
5553
5562
  }
5554
- let n = tl(this.shape, this.state, e);
5563
+ let n = ol(this.shape, this.state, e);
5555
5564
  this.state = n.state;
5556
5565
  for (let e of this.groups.keys()) this.state.has(e) || this.groups.delete(e);
5557
5566
  return n.rescanGroups;
5558
5567
  }
5559
5568
  resolveRescan(e, t) {
5560
5569
  if (e.length === 0) return;
5561
- this.state = nl(this.shape, this.state, e, t);
5570
+ this.state = sl(this.shape, this.state, e, t);
5562
5571
  let n = new Set(e);
5563
5572
  for (let e of t) {
5564
5573
  let t = $(e, this.shape.groupBy);
@@ -5567,7 +5576,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5567
5576
  for (let e of n) this.state.has(e) || this.groups.delete(e);
5568
5577
  }
5569
5578
  materialize() {
5570
- return el(this.shape, this.state).map((e) => ({
5579
+ return al(this.shape, this.state).map((e) => ({
5571
5580
  groupKey: e.groupKey,
5572
5581
  group: this.groups.get(e.groupKey) ?? {},
5573
5582
  value: e.value
@@ -5580,19 +5589,19 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5580
5589
  for (let r of t) n[r] = e[r];
5581
5590
  return n;
5582
5591
  }
5583
- }, il = E("_voltro_rebac_tuples", {
5592
+ }, ll = T("_voltro_rebac_tuples", {
5584
5593
  id: v({ prefix: "rbct" }),
5585
- subjectId: D(),
5586
- relation: D(),
5587
- resourceType: D(),
5588
- resourceId: D(),
5589
- tenantId: D().nullable(),
5590
- createdAt: O().default("now")
5594
+ subjectId: E(),
5595
+ relation: E(),
5596
+ resourceType: E(),
5597
+ resourceId: E(),
5598
+ tenantId: E().nullable(),
5599
+ createdAt: D().default("now")
5591
5600
  }).index([
5592
5601
  "subjectId",
5593
5602
  "resourceType",
5594
5603
  "resourceId"
5595
- ]).reactive(), al = async (e, n, r, i) => n === null ? [] : (await e.query({
5604
+ ]).reactive(), ul = async (e, n, r, i) => n === null ? [] : (await e.query({
5596
5605
  table: "_voltro_rebac_tuples",
5597
5606
  predicate: t(u("subjectId", n), u("resourceType", r), u("resourceId", i)),
5598
5607
  order: [],
@@ -5604,16 +5613,16 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5604
5613
  relation: e.relation,
5605
5614
  resourceType: e.resourceType,
5606
5615
  resourceId: e.resourceId
5607
- })), ol = (e) => ({
5616
+ })), dl = (e) => ({
5608
5617
  id: e.id,
5609
5618
  tenantId: e.tenantId,
5610
5619
  ...e.scopes === void 0 ? {} : { scopes: e.scopes }
5611
- }), sl = (e, t) => {
5612
- let n = t.getPolicy ?? Ro;
5620
+ }), fl = (e, t) => {
5621
+ let n = t.getPolicy ?? Vo;
5613
5622
  return (r, i) => {
5614
5623
  let a = e[i.tag];
5615
5624
  if (a === void 0) return r;
5616
- let o = n(a.resourceType), s = (e) => M.fail(new Fo({
5625
+ let o = n(a.resourceType), s = (e) => M.fail(new Ro({
5617
5626
  action: a.action,
5618
5627
  resourceType: a.resourceType,
5619
5628
  resourceId: e
@@ -5621,17 +5630,17 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5621
5630
  if (o === void 0) return s("");
5622
5631
  let c = a.resourceId(i.input);
5623
5632
  if (c === null || c === "") return s("");
5624
- let l = ol(i.subject), u = {
5633
+ let l = dl(i.subject), u = {
5625
5634
  type: a.resourceType,
5626
5635
  id: c,
5627
5636
  tenantId: i.subject.tenantId
5628
5637
  };
5629
- return M.flatMap(M.promise(async () => t.loadTuples(l.id, a.resourceType, c)), (e) => Wo(l, a.action, u, {
5638
+ return M.flatMap(M.promise(async () => t.loadTuples(l.id, a.resourceType, c)), (e) => qo(l, a.action, u, {
5630
5639
  policy: o,
5631
5640
  tuples: e
5632
5641
  }) ? r : s(c));
5633
5642
  };
5634
- }, cl = async (e, n, r) => n === null ? [] : (await e.query({
5643
+ }, pl = async (e, n, r) => n === null ? [] : (await e.query({
5635
5644
  table: "_voltro_rebac_tuples",
5636
5645
  predicate: t(u("subjectId", n), u("resourceType", r)),
5637
5646
  order: [],
@@ -5643,18 +5652,18 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5643
5652
  relation: e.relation,
5644
5653
  resourceType: e.resourceType,
5645
5654
  resourceId: e.resourceId
5646
- })), ll = (e) => {
5647
- let t = e.getPolicy ?? Ro;
5655
+ })), ml = (e) => {
5656
+ let t = e.getPolicy ?? Vo;
5648
5657
  return async (n, r, i, a) => {
5649
5658
  let o = t(r);
5650
5659
  if (o === void 0) return [];
5651
- let s = ol(n);
5652
- return Ko(s, i, r, a, {
5660
+ let s = dl(n);
5661
+ return Yo(s, i, r, a, {
5653
5662
  policy: o,
5654
5663
  tuples: await e.loadSubjectTuples(s.id, r)
5655
5664
  });
5656
5665
  };
5657
- }, ul = (e) => {
5666
+ }, hl = (e) => {
5658
5667
  if (typeof e.name != "string" || e.name.length === 0) throw Error("defineReaction: a non-empty `name` is required");
5659
5668
  if (e.watch === void 0 || typeof e.watch.table != "string" || e.watch.table.length === 0) throw Error(`reaction '${e.name}': watch.table is required`);
5660
5669
  if (e.act === void 0 || e.act.kind !== "agent" && e.act.kind !== "workflow") throw Error(`reaction '${e.name}': act must be { kind: 'agent' | 'workflow', … }`);
@@ -5662,14 +5671,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5662
5671
  if (e.guards.rateLimit !== void 0 && (e.guards.rateLimit.limit <= 0 || e.guards.rateLimit.windowMs <= 0)) throw Error(`reaction '${e.name}': guards.rateLimit needs positive limit + windowMs`);
5663
5672
  if (e.guards.costBudgetUsd !== void 0 && e.guards.costBudgetUsd < 0) throw Error(`reaction '${e.name}': guards.costBudgetUsd must be >= 0`);
5664
5673
  return e;
5665
- }, dl = (e, t) => e === void 0 ? !0 : Array.isArray(e) ? e.includes(t) : e === t, fl = (e) => e.new?.tenantId ?? e.old?.tenantId ?? null, pl = class {
5674
+ }, gl = (e, t) => e === void 0 ? !0 : Array.isArray(e) ? e.includes(t) : e === t, _l = (e) => e.new?.tenantId ?? e.old?.tenantId ?? null, vl = class {
5666
5675
  hits = /* @__PURE__ */ new Map();
5667
5676
  allow(e, t, n, r) {
5668
5677
  let i = r - n, a = (this.hits.get(e) ?? []).filter((e) => e > i);
5669
5678
  return a.length >= t ? (this.hits.set(e, a), !1) : (a.push(r), this.hits.set(e, a), !0);
5670
5679
  }
5671
- }, ml = async (e, t, n) => {
5672
- if (t.table !== e.watch.table || !dl(e.watch.on, t.op)) return "skipped-op";
5680
+ }, yl = async (e, t, n) => {
5681
+ if (t.table !== e.watch.table || !gl(e.watch.on, t.op)) return "skipped-op";
5673
5682
  if (e.when !== void 0 && !e.when(t)) return "skipped-when";
5674
5683
  let r = `${e.name}:${e.guards.dedupeKey(t)}`;
5675
5684
  if (await n.dedupe.has(r)) return "skipped-dedupe";
@@ -5678,26 +5687,26 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5678
5687
  let t = n.now?.() ?? Date.now();
5679
5688
  if (!n.rateLimiter.allow(e.name, i.limit, i.windowMs, t)) return "skipped-ratelimit";
5680
5689
  }
5681
- let a = fl(t);
5690
+ let a = _l(t);
5682
5691
  return e.guards.costBudgetUsd !== void 0 && n.checkBudget !== void 0 && !await n.checkBudget(a, e.guards.costBudgetUsd) ? "skipped-budget" : (await n.runAct(e.act, t, {
5683
5692
  id: a,
5684
5693
  via: "agent"
5685
5694
  }), await n.dedupe.add(r), "acted");
5686
- }, hl = E("_voltro_wakeups", {
5695
+ }, bl = T("_voltro_wakeups", {
5687
5696
  id: v({ prefix: "wakeup" }),
5688
- tenantId: D(),
5689
- kind: D(),
5690
- refId: D(),
5691
- wakeAt: O(),
5692
- status: D()
5693
- }).index(["status", "wakeAt"]).index(["tenantId"]), gl = async (e) => {
5694
- let t = e.now?.() ?? /* @__PURE__ */ new Date(), n = await Zs(e.store, t, e.batchLimit ?? 100);
5697
+ tenantId: E(),
5698
+ kind: E(),
5699
+ refId: E(),
5700
+ wakeAt: D(),
5701
+ status: E()
5702
+ }).index(["status", "wakeAt"]).index(["tenantId"]), xl = async (e) => {
5703
+ let t = e.now?.() ?? /* @__PURE__ */ new Date(), n = await ec(e.store, t, e.batchLimit ?? 100);
5695
5704
  if (n.length === 0) return 0;
5696
5705
  let r = 0;
5697
- for (let t of n) if (await qs(e.store, t)) try {
5706
+ for (let t of n) if (await Xs(e.store, t)) try {
5698
5707
  await e.adapter.wake(t), r++;
5699
5708
  } catch (n) {
5700
- await Js(e.store, t), e.log?.warn("wake: adapter failed — released for retry", {
5709
+ await Zs(e.store, t), e.log?.warn("wake: adapter failed — released for retry", {
5701
5710
  tenantId: t.tenantId,
5702
5711
  kind: t.kind,
5703
5712
  refId: t.refId,
@@ -5705,11 +5714,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5705
5714
  });
5706
5715
  }
5707
5716
  return r > 0 && e.log?.info("wake: woke due deployments", { count: r }), r;
5708
- }, _l = (e, t = 1e3) => {
5717
+ }, Sl = (e, t = 1e3) => {
5709
5718
  let n = !1, r, i = async () => {
5710
5719
  if (!n) {
5711
5720
  try {
5712
- await gl(e);
5721
+ await xl(e);
5713
5722
  } catch (t) {
5714
5723
  e.log?.warn("wake: tick failed", { reason: t instanceof Error ? t.message : String(t) });
5715
5724
  }
@@ -5719,10 +5728,10 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5719
5728
  return i(), { stop: () => {
5720
5729
  n = !0, r !== void 0 && clearTimeout(r);
5721
5730
  } };
5722
- }, vl = (e) => ({ wake: async () => {
5731
+ }, Cl = (e) => ({ wake: async () => {
5723
5732
  await e.start();
5724
- } }), yl = (e) => new Promise((t) => setTimeout(t, e)), bl = (e) => {
5725
- let t = e.fetchImpl ?? fetch, n = e.now ?? Date.now, r = e.sleep ?? yl, i = e.spawnImpl ?? Ct, a = e.startTimeoutMs ?? 3e4, o = e.healthPollMs ?? 200, s = e.stopSignal ?? "SIGTERM", c = e.stopGraceMs ?? 1e4, l, u, d = e.healthCheck ?? ((e) => e.ok), f = async () => {
5733
+ } }), wl = (e) => new Promise((t) => setTimeout(t, e)), Tl = (e) => {
5734
+ let t = e.fetchImpl ?? fetch, n = e.now ?? Date.now, r = e.sleep ?? wl, i = e.spawnImpl ?? wt, a = e.startTimeoutMs ?? 3e4, o = e.healthPollMs ?? 200, s = e.stopSignal ?? "SIGTERM", c = e.stopGraceMs ?? 1e4, l, u, d = e.healthCheck ?? ((e) => e.ok), f = async () => {
5726
5735
  try {
5727
5736
  let n = await t(e.healthUrl);
5728
5737
  return d(n);
@@ -5776,11 +5785,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5776
5785
  },
5777
5786
  stop: m
5778
5787
  };
5779
- }, xl = async (e) => {
5788
+ }, El = async (e) => {
5780
5789
  if (e.signals.connectedClients() > 0 || e.signals.inFlightRequests() > 0 || e.signals.activeWorkflowExecutions() > 0) return !1;
5781
- let t = (e.now?.() ?? /* @__PURE__ */ new Date()).getTime() + (e.wakeLookaheadMs ?? 3e4), n = await Qs(e.store);
5790
+ let t = (e.now?.() ?? /* @__PURE__ */ new Date()).getTime() + (e.wakeLookaheadMs ?? 3e4), n = await tc(e.store);
5782
5791
  return !(n !== null && n.wakeAt.getTime() <= t);
5783
- }, Sl = (e, t = Date.now) => {
5792
+ }, Dl = (e, t = Date.now) => {
5784
5793
  let n;
5785
5794
  return {
5786
5795
  update: (r) => {
@@ -5792,7 +5801,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5792
5801
  n = void 0;
5793
5802
  }
5794
5803
  };
5795
- }, Cl = () => {
5804
+ }, Ol = () => {
5796
5805
  let e = 0, t = 0;
5797
5806
  return {
5798
5807
  onRequestStart: () => {
@@ -5810,8 +5819,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5810
5819
  inFlightRequests: () => e,
5811
5820
  openConnections: () => t
5812
5821
  };
5813
- }, wl = (e) => ({ run: async (t) => (e.onActivity?.(), await e.ensureAwake(), t()) }), Tl = (e, t, n, r) => new Promise((i, a) => {
5814
- let o = Ye.request({
5822
+ }, kl = (e) => ({ run: async (t) => (e.onActivity?.(), await e.ensureAwake(), t()) }), Al = (e, t, n, r) => new Promise((i, a) => {
5823
+ let o = Xe.request({
5815
5824
  host: n,
5816
5825
  port: r,
5817
5826
  method: e.method,
@@ -5821,8 +5830,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5821
5830
  t.writeHead(e.statusCode ?? 502, e.headers), e.pipe(t), e.on("end", i), e.on("error", a);
5822
5831
  });
5823
5832
  o.on("error", a), e.pipe(o);
5824
- }), El = (e, t, n, r, i) => new Promise((a, o) => {
5825
- let s = Ye.request({
5833
+ }), jl = (e, t, n, r, i) => new Promise((a, o) => {
5834
+ let s = Xe.request({
5826
5835
  host: r,
5827
5836
  port: i,
5828
5837
  method: e.method,
@@ -5836,21 +5845,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5836
5845
  };
5837
5846
  t.on("close", s), r.on("close", s), r.on("error", o);
5838
5847
  }), s.on("error", o), s.end();
5839
- }), Dl = (e) => {
5840
- let t = wl({
5848
+ }), Ml = (e) => {
5849
+ let t = kl({
5841
5850
  ensureAwake: () => e.supervisor.start(),
5842
5851
  ...e.onActivity === void 0 ? {} : { onActivity: e.onActivity }
5843
- }), n = e.activity, r = Ye.createServer((r, i) => {
5844
- n?.onRequestStart(), i.on("close", () => n?.onRequestEnd()), t.run(() => Tl(r, i, e.targetHost, e.targetPort)).catch((t) => {
5852
+ }), n = e.activity, r = Xe.createServer((r, i) => {
5853
+ n?.onRequestStart(), i.on("close", () => n?.onRequestEnd()), t.run(() => Al(r, i, e.targetHost, e.targetPort)).catch((t) => {
5845
5854
  e.log?.warn("wake-router: proxy failed", { reason: t instanceof Error ? t.message : String(t) }), i.headersSent || i.writeHead(502), i.end("wake/proxy failed");
5846
5855
  });
5847
5856
  });
5848
5857
  return r.on("upgrade", (r, i, a) => {
5849
- n?.onConnect(), i.on("close", () => n?.onDisconnect()), t.run(() => El(r, i, a, e.targetHost, e.targetPort)).catch((t) => {
5858
+ n?.onConnect(), i.on("close", () => n?.onDisconnect()), t.run(() => jl(r, i, a, e.targetHost, e.targetPort)).catch((t) => {
5850
5859
  e.log?.warn("wake-router: upgrade proxy failed", { reason: t instanceof Error ? t.message : String(t) }), i.destroy();
5851
5860
  });
5852
5861
  }), r;
5853
- }, Ol = async (e) => {
5862
+ }, Nl = async (e) => {
5854
5863
  try {
5855
5864
  return (await e.query({
5856
5865
  table: "_voltro_workflow_runs",
@@ -5867,15 +5876,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5867
5876
  } catch {
5868
5877
  return 0;
5869
5878
  }
5870
- }, kl = async (e) => {
5871
- let t = vl(e.supervisor), n = await gl({
5879
+ }, Pl = async (e) => {
5880
+ let t = Cl(e.supervisor), n = await xl({
5872
5881
  store: e.store,
5873
5882
  adapter: t,
5874
5883
  ...e.now === void 0 ? {} : { now: e.now },
5875
5884
  ...e.log === void 0 ? {} : { log: e.log }
5876
5885
  });
5877
5886
  n > 0 && e.idleGate.reset();
5878
- let r = await xl({
5887
+ let r = await El({
5879
5888
  store: e.store,
5880
5889
  signals: e.signals,
5881
5890
  ...e.wakeLookaheadMs === void 0 ? {} : { wakeLookaheadMs: e.wakeLookaheadMs },
@@ -5885,12 +5894,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5885
5894
  woke: n,
5886
5895
  stopped: i
5887
5896
  };
5888
- }, Al = async (e) => {
5889
- let t = Sl(e.idleGraceMs ?? 6e4), n = e.tickMs ?? 1e3, r = Cl(), i = 0, a = e.signals === void 0, o = e.signals ?? {
5897
+ }, Fl = async (e) => {
5898
+ let t = Dl(e.idleGraceMs ?? 6e4), n = e.tickMs ?? 1e3, r = Ol(), i = 0, a = e.signals === void 0, o = e.signals ?? {
5890
5899
  connectedClients: () => r.openConnections(),
5891
5900
  inFlightRequests: () => r.inFlightRequests(),
5892
5901
  activeWorkflowExecutions: () => i
5893
- }, s = Dl({
5902
+ }, s = Ml({
5894
5903
  supervisor: e.supervisor,
5895
5904
  targetHost: e.targetHost,
5896
5905
  targetPort: e.targetPort,
@@ -5909,7 +5918,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5909
5918
  let l = !1, u, d = e.firedRetentionMs ?? 10 * 6e4, f = 0, p = async () => {
5910
5919
  if (!l) {
5911
5920
  try {
5912
- if (a && (i = await Ol(e.store)), await kl({
5921
+ if (a && (i = await Nl(e.store)), await Pl({
5913
5922
  store: e.store,
5914
5923
  supervisor: e.supervisor,
5915
5924
  signals: o,
@@ -5917,7 +5926,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5917
5926
  ...e.wakeLookaheadMs === void 0 ? {} : { wakeLookaheadMs: e.wakeLookaheadMs },
5918
5927
  ...e.log === void 0 ? {} : { log: e.log }
5919
5928
  }), f++ % 60 == 0) {
5920
- let t = await ec(e.store, { firedOlderThan: new Date(Date.now() - d) });
5929
+ let t = await rc(e.store, { firedOlderThan: new Date(Date.now() - d) });
5921
5930
  t > 0 && e.log?.info("orchestrator: pruned fired wakeups", { count: t });
5922
5931
  }
5923
5932
  } catch (t) {
@@ -5932,14 +5941,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5932
5941
  l = !0, u !== void 0 && clearTimeout(u), await new Promise((e) => s.close(() => e()));
5933
5942
  }
5934
5943
  };
5935
- }, jl = (e) => e, Ml = class extends L.TaggedError()("AnalyticsError", {
5944
+ }, Il = (e) => e, Ll = class extends L.TaggedError()("AnalyticsError", {
5936
5945
  provider: L.String,
5937
5946
  operation: L.String,
5938
5947
  cause: L.String
5939
- }) {}, Nl = class extends L.TaggedError()("AnalyticsCapabilityNotSupported", {
5948
+ }) {}, Rl = class extends L.TaggedError()("AnalyticsCapabilityNotSupported", {
5940
5949
  provider: L.String,
5941
5950
  capability: L.String
5942
- }) {}, Pl = class extends Re.Tag("@voltro/AnalyticsSink")() {}, Fl = (e, t) => ({
5951
+ }) {}, zl = class extends Be.Tag("@voltro/AnalyticsSink")() {}, Bl = (e, t) => ({
5943
5952
  info: e.info,
5944
5953
  track: (n) => e.track(n.tenantId === void 0 ? {
5945
5954
  ...n,
@@ -5958,20 +5967,20 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5958
5967
  tenantId: t
5959
5968
  } : n),
5960
5969
  ...e.mirror === void 0 ? {} : { mirror: e.mirror }
5961
- }), Il = () => M.gen(function* () {
5962
- let e = yield* Pl, t = yield* M.serviceOption(Se), n = F.match(t, {
5970
+ }), Vl = () => M.gen(function* () {
5971
+ let e = yield* zl, t = yield* M.serviceOption(we), n = F.match(t, {
5963
5972
  onNone: () => null,
5964
5973
  onSome: (e) => e.tenantId ?? null
5965
5974
  });
5966
- return n === null ? e : Fl(e, n);
5967
- }), Ll = "noop", Rl = () => {
5968
- let e = (e) => M.fail(new Nl({
5969
- provider: Ll,
5975
+ return n === null ? e : Bl(e, n);
5976
+ }), Hl = "noop", Ul = () => {
5977
+ let e = (e) => M.fail(new Rl({
5978
+ provider: Hl,
5970
5979
  capability: e
5971
5980
  }));
5972
5981
  return {
5973
5982
  info: {
5974
- provider: Ll,
5983
+ provider: Hl,
5975
5984
  capabilities: {
5976
5985
  track: !0,
5977
5986
  aggregate: !1,
@@ -5985,8 +5994,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
5985
5994
  timeseries: () => e("timeseries"),
5986
5995
  topN: () => e("topN")
5987
5996
  };
5988
- }, zl = (e) => {
5989
- if (e.length === 0) return Rl();
5997
+ }, Wl = (e) => {
5998
+ if (e.length === 0) return Ul();
5990
5999
  if (e.length === 1) return e[0];
5991
6000
  let t = {
5992
6001
  provider: "compose",
@@ -6003,7 +6012,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6003
6012
  discard: !0
6004
6013
  }), r = (t, n) => {
6005
6014
  let r = e.find((e) => e.info.capabilities[t]);
6006
- return r === void 0 ? M.fail(new Nl({
6015
+ return r === void 0 ? M.fail(new Rl({
6007
6016
  provider: "compose",
6008
6017
  capability: t
6009
6018
  })) : n(r);
@@ -6026,11 +6035,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6026
6035
  topN: (e) => r("topN", (t) => t.topN(e)),
6027
6036
  ...a === void 0 ? {} : { mirror: a }
6028
6037
  };
6029
- }, Bl = (e) => {
6038
+ }, Gl = (e) => {
6030
6039
  let t = e.filter((e) => e.dispose !== void 0);
6031
6040
  return {
6032
6041
  kind: "compose",
6033
- build: (t) => zl(e.map((e) => e.build(t))),
6042
+ build: (t) => Wl(e.map((e) => e.build(t))),
6034
6043
  tables: e.flatMap((e) => e.tables ?? []),
6035
6044
  initialize: (t) => M.forEach(e, (e) => e.initialize ? e.initialize(t) : M.void, {
6036
6045
  concurrency: 1,
@@ -6041,15 +6050,15 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6041
6050
  discard: !0
6042
6051
  }) } : {}
6043
6052
  };
6044
- }, Vl = {
6053
+ }, Kl = {
6045
6054
  kind: "noop",
6046
- build: () => Rl()
6047
- }, Hl = {
6055
+ build: () => Ul()
6056
+ }, ql = {
6048
6057
  tables: [],
6049
6058
  detach: () => {}
6050
- }, Ul = (e) => {
6059
+ }, Jl = (e) => {
6051
6060
  let { store: t, sink: n, log: r } = e, i = n.mirror;
6052
- if (i === void 0 || i.tables.length === 0) return Hl;
6061
+ if (i === void 0 || i.tables.length === 0) return ql;
6053
6062
  let a = e.run ?? ((e) => M.runPromise(e)), o = i.primaryKey ?? "id", s = new Set(i.tables), c = (e) => {
6054
6063
  if (e.op === "delete") {
6055
6064
  let t = e.old;
@@ -6073,11 +6082,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6073
6082
  tables: i.tables,
6074
6083
  detach: l
6075
6084
  };
6076
- }, Wl = (e) => {
6085
+ }, Yl = (e) => {
6077
6086
  let t = typeof e.refresh == "string" ? { interval: e.refresh } : e.refresh, n = e.strategy ?? "replace";
6078
6087
  if (n === "merge" && (e.mergeKey === void 0 || e.mergeKey.length === 0)) throw Error(`defineAggregate("${e.name}"): strategy: 'merge' requires mergeKey — the property on each row to upsert by`);
6079
6088
  if (e.incremental !== void 0) {
6080
- let t = Yc({
6089
+ let t = el({
6081
6090
  aggregations: [{
6082
6091
  op: e.incremental.op,
6083
6092
  ...e.incremental.column === void 0 ? {} : { column: e.incremental.column }
@@ -6099,47 +6108,47 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6099
6108
  build: e.build,
6100
6109
  ...e.incremental === void 0 ? {} : { incremental: e.incremental }
6101
6110
  };
6102
- }, Gl = (e) => typeof e == "object" && !!e && e._voltroAggregate === !0, Kl = class extends L.TaggedError()("AggregateStale", {
6111
+ }, Xl = (e) => typeof e == "object" && !!e && e._voltroAggregate === !0, Zl = class extends L.TaggedError()("AggregateStale", {
6103
6112
  name: L.String,
6104
6113
  ageMs: L.Number,
6105
6114
  maxAgeMs: L.Number
6106
- }) {}, ql = class extends L.TaggedError()("AggregateNotFound", { name: L.String }) {}, Jl = class extends L.TaggedError()("AggregateError", {
6115
+ }) {}, Ql = class extends L.TaggedError()("AggregateNotFound", { name: L.String }) {}, $l = class extends L.TaggedError()("AggregateError", {
6107
6116
  name: L.String,
6108
6117
  operation: L.String,
6109
6118
  cause: L.String
6110
- }) {}, Yl = class extends Re.Tag("@voltro/AggregateRegistry")() {}, Xl = (e) => M.gen(function* () {
6111
- return (yield* Yl).getHandle(e);
6112
- }), Zl = (e, n, r) => {
6119
+ }) {}, eu = class extends Be.Tag("@voltro/AggregateRegistry")() {}, tu = (e) => M.gen(function* () {
6120
+ return (yield* eu).getHandle(e);
6121
+ }), nu = (e, n, r) => {
6113
6122
  if (e.crossTenant || !n.has(e.table) || r == null) return e;
6114
6123
  let i = u("tenantId", r);
6115
6124
  return {
6116
6125
  ...e,
6117
6126
  predicate: e.predicate ? t(e.predicate, i) : i
6118
6127
  };
6119
- }, Ql = (e, n) => {
6128
+ }, ru = (e, n) => {
6120
6129
  if (e.includeDeleted || !n.has(e.table)) return e;
6121
6130
  let r = S("deletedAt");
6122
6131
  return {
6123
6132
  ...e,
6124
6133
  predicate: e.predicate ? t(e.predicate, r) : r
6125
6134
  };
6126
- }, $l = (e) => M.runPromiseExit(e).then((e) => {
6127
- if (Ue.isSuccess(e)) return e.value;
6128
- let t = j.failureOption(e.cause);
6129
- throw F.isSome(t) ? t.value : j.squash(e.cause);
6130
- }), eu = (e, t) => e.pipe(M.provideService(Se, t)), tu = async (e, t, n) => {
6131
- let r = await M.runPromise(De(t, e.guards, n));
6135
+ }, iu = (e) => M.runPromiseExit(e).then((e) => {
6136
+ if (We.isSuccess(e)) return e.value;
6137
+ let t = A.failureOption(e.cause);
6138
+ throw F.isSome(t) ? t.value : A.squash(e.cause);
6139
+ }), au = (e, t) => e.pipe(M.provideService(we, t)), ou = async (e, t, n) => {
6140
+ let r = await M.runPromise(ke(t, e.guards, n));
6132
6141
  if (r) throw r;
6133
- }, nu = async (e) => {
6134
- if (jn() === void 0) return e;
6135
- let t = await $l(Nn(e.subject, (e) => {
6142
+ }, su = async (e) => {
6143
+ if (Mn() === void 0) return e;
6144
+ let t = await iu(Pn(e.subject, (e) => {
6136
6145
  console.error("[voltro] row filter failed to load", e);
6137
6146
  }));
6138
6147
  return {
6139
6148
  ...e,
6140
6149
  rowFilter: t
6141
6150
  };
6142
- }, ru = async (e) => {
6151
+ }, cu = async (e) => {
6143
6152
  let t = `${e.kind}.${e.name}`, n = Date.now(), r = "ok";
6144
6153
  try {
6145
6154
  if (e.interceptor) {
@@ -6154,8 +6163,8 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6154
6163
  traceId: e.requestContext.traceId,
6155
6164
  ...e.requestContext.spanId === void 0 ? {} : { spanId: e.requestContext.spanId }
6156
6165
  }), r = await M.runPromiseExit(n);
6157
- if (Ue.isSuccess(r)) return r.value;
6158
- throw j.squash(r.cause);
6166
+ if (We.isSuccess(r)) return r.value;
6167
+ throw A.squash(r.cause);
6159
6168
  }
6160
6169
  return await e.runExecutor();
6161
6170
  } catch (e) {
@@ -6168,28 +6177,28 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6168
6177
  status: r
6169
6178
  });
6170
6179
  }
6171
- }, iu = /* @__PURE__ */ new Set([1213, 1205]), au = /* @__PURE__ */ new Set([
6180
+ }, lu = /* @__PURE__ */ new Set([1213, 1205]), uu = /* @__PURE__ */ new Set([
6172
6181
  "ER_LOCK_DEADLOCK",
6173
6182
  "ER_LOCK_WAIT_TIMEOUT",
6174
6183
  "40001",
6175
6184
  "40P01"
6176
- ]), ou = (e) => {
6185
+ ]), du = (e) => {
6177
6186
  let t = e;
6178
6187
  for (let e = 0; e < 6 && typeof t == "object" && t; e++) {
6179
6188
  let e = t;
6180
- if (typeof e.errno == "number" && iu.has(e.errno) || typeof e.code == "string" && au.has(e.code) || typeof e.sqlState == "string" && au.has(e.sqlState)) return !0;
6189
+ if (typeof e.errno == "number" && lu.has(e.errno) || typeof e.code == "string" && uu.has(e.code) || typeof e.sqlState == "string" && uu.has(e.sqlState)) return !0;
6181
6190
  t = e.cause;
6182
6191
  }
6183
6192
  return !1;
6184
- }, su = 3, cu = (e) => new Promise((t) => setTimeout(t, e)), lu = async (e, t) => {
6185
- let n = t?.delay ?? ((e) => cu(e * 20 + Math.floor(Math.random() * 30)));
6193
+ }, fu = 3, pu = (e) => new Promise((t) => setTimeout(t, e)), mu = async (e, t) => {
6194
+ let n = t?.delay ?? ((e) => pu(e * 20 + Math.floor(Math.random() * 30)));
6186
6195
  for (let t = 1;; t++) try {
6187
6196
  return await e();
6188
6197
  } catch (e) {
6189
- if (t >= su || !ou(e)) throw e;
6198
+ if (t >= fu || !du(e)) throw e;
6190
6199
  await n(t);
6191
6200
  }
6192
- }, uu = (e) => (t, n, r) => ru({
6201
+ }, hu = (e) => (t, n, r) => cu({
6193
6202
  name: t.descriptor.name,
6194
6203
  kind: "mutation",
6195
6204
  input: n,
@@ -6197,11 +6206,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6197
6206
  ...e.interceptor ? { interceptor: e.interceptor } : {},
6198
6207
  ...e.recordMetric ? { recordMetric: e.recordMetric } : {},
6199
6208
  runExecutor: async () => {
6200
- await tu(t.descriptor, r.subject, n);
6201
- let i = await nu(r), a = [], o = await lu(async () => (a.length = 0, e.store.transactional(async (o) => {
6209
+ await ou(t.descriptor, r.subject, n);
6210
+ let i = await su(r), a = [], o = await mu(async () => (a.length = 0, e.store.transactional(async (o) => {
6202
6211
  let s = e.undoCapture?.(o), c = s ? s.tx : o, l = e.buildContext(i, c, { afterCommit: (e) => {
6203
6212
  a.push(e);
6204
- } }), u = t.executor(n, l), d = M.isEffect(u) ? await e.runEffect(eu(u, r.subject), l.store) : await u;
6213
+ } }), u = t.executor(n, l), d = M.isEffect(u) ? await e.runEffect(au(u, r.subject), l.store) : await u;
6205
6214
  return s && await s.persist(l.store, {
6206
6215
  tag: t.descriptor.name,
6207
6216
  subject: r.subject,
@@ -6211,33 +6220,33 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6211
6220
  for (let e of a) await e();
6212
6221
  return o;
6213
6222
  }
6214
- }), du = (e) => e && typeof e == "object" && "descriptor" in e ? e.descriptor : e, fu = (e) => typeof e == "object" && !!e && !Array.isArray(e) && "table" in e && "order" in e, pu = (e) => {
6223
+ }), gu = (e) => e && typeof e == "object" && "descriptor" in e ? e.descriptor : e, _u = (e) => typeof e == "object" && !!e && !Array.isArray(e) && "table" in e && "order" in e, vu = (e) => {
6215
6224
  let t = e.descriptor.source;
6216
6225
  return t == null ? [] : typeof t == "string" ? [t] : [...t];
6217
- }, mu = (e, t) => (n) => () => {
6226
+ }, yu = (e, t) => (n) => () => {
6218
6227
  let r = e.descriptor.guards;
6219
- return !r || r.length === 0 ? Promise.resolve(null) : M.runPromise(De(n, r, t));
6220
- }, hu = (e) => (t, n) => (r) => {
6221
- let i = e.buildContext(r), a = mu(t, n)(r.subject), o = async () => {
6228
+ return !r || r.length === 0 ? Promise.resolve(null) : M.runPromise(ke(n, r, t));
6229
+ }, bu = (e) => (t, n) => (r) => {
6230
+ let i = e.buildContext(r), a = yu(t, n)(r.subject), o = async () => {
6222
6231
  let i = await a();
6223
6232
  if (i) throw i;
6224
- let o = e.buildContext(await nu(r)), s = t.executor(n, o);
6225
- return M.isEffect(s) ? M.runPromise(e.provideEffect(eu(s, r.subject), o.store)) : du(await Promise.resolve(s));
6233
+ let o = e.buildContext(await su(r)), s = t.executor(n, o);
6234
+ return M.isEffect(s) ? M.runPromise(e.provideEffect(au(s, r.subject), o.store)) : gu(await Promise.resolve(s));
6226
6235
  }, s = (n) => {
6227
- let i = du(n);
6228
- return fu(i) ? e.finalize(i, r) : {
6236
+ let i = gu(n);
6237
+ return _u(i) ? e.finalize(i, r) : {
6229
6238
  __voltroComputed: !0,
6230
6239
  value: i,
6231
- dependentTables: pu(t),
6240
+ dependentTables: vu(t),
6232
6241
  tenantId: r.subject?.tenantId ?? null,
6233
6242
  recompute: o
6234
6243
  };
6235
6244
  }, c = () => {
6236
6245
  let a = t.executor(n, i);
6237
- return M.isEffect(a) ? e.provideEffect(eu(a, r.subject), i.store).pipe(M.map(s)) : a instanceof Promise ? M.promise(() => a).pipe(M.map(s)) : s(a);
6246
+ return M.isEffect(a) ? e.provideEffect(au(a, r.subject), i.store).pipe(M.map(s)) : a instanceof Promise ? M.promise(() => a).pipe(M.map(s)) : s(a);
6238
6247
  }, l = () => {
6239
6248
  let e = t.descriptor.guards;
6240
- return !e || e.length === 0 ? c() : De(r.subject, e, n).pipe(M.flatMap((e) => {
6249
+ return !e || e.length === 0 ? c() : ke(r.subject, e, n).pipe(M.flatMap((e) => {
6241
6250
  if (e) return M.fail(e);
6242
6251
  let t = c();
6243
6252
  return M.isEffect(t) ? t : M.succeed(t);
@@ -6256,7 +6265,7 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6256
6265
  traceId: r.traceId,
6257
6266
  ...r.spanId === void 0 ? {} : { spanId: r.spanId }
6258
6267
  });
6259
- }, gu = (e) => (t, n, r) => ru({
6268
+ }, xu = (e) => (t, n, r) => cu({
6260
6269
  name: t.descriptor.name,
6261
6270
  kind: "action",
6262
6271
  input: n,
@@ -6264,16 +6273,16 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6264
6273
  ...e.interceptor ? { interceptor: e.interceptor } : {},
6265
6274
  ...e.recordMetric ? { recordMetric: e.recordMetric } : {},
6266
6275
  runExecutor: async () => {
6267
- await tu(t.descriptor, r.subject, n);
6268
- let i = e.buildContext(await nu(r)), a = t.executor(n, i);
6269
- return M.isEffect(a) ? e.runEffect(eu(a, r.subject), i.store) : a;
6276
+ await ou(t.descriptor, r.subject, n);
6277
+ let i = e.buildContext(await su(r)), a = t.executor(n, i);
6278
+ return M.isEffect(a) ? e.runEffect(au(a, r.subject), i.store) : a;
6270
6279
  }
6271
- }), _u = (e) => e instanceof Date ? e.toISOString() : typeof e == "string" && e.length > 0 ? e : null, vu = (e) => typeof e == "string" && e.length > 0 ? e : null, yu = [
6280
+ }), Su = (e) => e instanceof Date ? e.toISOString() : typeof e == "string" && e.length > 0 ? e : null, Cu = (e) => typeof e == "string" && e.length > 0 ? e : null, wu = [
6272
6281
  "updatedAt",
6273
6282
  "createdAt",
6274
6283
  "updatedBy",
6275
6284
  "createdBy"
6276
- ], bu = (e) => yu.some((t) => t in e), xu = (e, t, n) => {
6285
+ ], Tu = (e) => wu.some((t) => t in e), Eu = (e, t, n) => {
6277
6286
  let r = {
6278
6287
  table: t.table,
6279
6288
  id: t.id,
@@ -6288,14 +6297,14 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6288
6297
  found: !1
6289
6298
  };
6290
6299
  let i = t.column === void 0 ? void 0 : e[t.column];
6291
- if (!bu(e)) return {
6300
+ if (!Tu(e)) return {
6292
6301
  ...r,
6293
6302
  value: i,
6294
6303
  lastWrite: null,
6295
6304
  attribution: "none",
6296
6305
  found: !0
6297
6306
  };
6298
- let a = vu(e.updatedBy) ?? vu(e.createdBy), o = _u(e.updatedAt) ?? _u(e.createdAt);
6307
+ let a = Cu(e.updatedBy) ?? Cu(e.createdBy), o = Su(e.updatedAt) ?? Su(e.createdAt);
6299
6308
  return {
6300
6309
  ...r,
6301
6310
  value: i,
@@ -6307,12 +6316,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6307
6316
  attribution: "audit",
6308
6317
  found: !0
6309
6318
  };
6310
- }, Su = (e, t) => {
6319
+ }, Du = (e, t) => {
6311
6320
  let n = e.map((e) => {
6312
6321
  let n = e.newValue ?? e.value, r = t.column !== void 0 && n && typeof n == "object" ? n[t.column] : e.newValue ?? e.value;
6313
6322
  return {
6314
- actor: { id: vu(e.actor) ?? vu(e.changedBy) },
6315
- at: _u(e.at) ?? _u(e.changedAt),
6323
+ actor: { id: Cu(e.actor) ?? Cu(e.changedBy) },
6324
+ at: Su(e.at) ?? Su(e.changedAt),
6316
6325
  ...e.traceId === void 0 ? {} : { traceId: e.traceId },
6317
6326
  value: r
6318
6327
  };
@@ -6327,12 +6336,12 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6327
6336
  history: n,
6328
6337
  found: n.length > 0
6329
6338
  };
6330
- }, Cu = (e) => {
6339
+ }, Ou = (e) => {
6331
6340
  let t = e.new?.id;
6332
6341
  if (typeof t == "string") return t;
6333
6342
  let n = e.old?.id;
6334
6343
  return typeof n == "string" ? n : void 0;
6335
- }, wu = (e) => {
6344
+ }, ku = (e) => {
6336
6345
  let t = {};
6337
6346
  if (e.op === "insert") for (let [n, r] of Object.entries(e.new ?? {})) t[n] = {
6338
6347
  from: void 0,
@@ -6352,11 +6361,11 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6352
6361
  return {
6353
6362
  table: e.table,
6354
6363
  op: e.op,
6355
- id: Cu(e),
6364
+ id: Ou(e),
6356
6365
  fields: t
6357
6366
  };
6358
- }, Tu = (e) => {
6359
- let t = e.map(wu);
6367
+ }, Au = (e) => {
6368
+ let t = e.map(ku);
6360
6369
  return {
6361
6370
  rows: t,
6362
6371
  summary: {
@@ -6365,21 +6374,21 @@ var K = /* @__PURE__ */ new Map(), Zn = (e, t) => {
6365
6374
  deletes: t.filter((e) => e.op === "delete").length
6366
6375
  }
6367
6376
  };
6368
- }, Eu = class extends Error {
6377
+ }, ju = class extends Error {
6369
6378
  constructor() {
6370
6379
  super("voltro:preview-rollback"), this.name = "PreviewRollback";
6371
6380
  }
6372
- }, Du = async (e, t) => {
6381
+ }, Mu = async (e, t) => {
6373
6382
  let n, r = !1;
6374
6383
  try {
6375
6384
  await e.transactional(async (e) => {
6376
- throw n = await t(e), r = !0, new Eu();
6385
+ throw n = await t(e), r = !0, new ju();
6377
6386
  });
6378
6387
  } catch (e) {
6379
- if (!(e instanceof Eu)) throw e;
6388
+ if (!(e instanceof ju)) throw e;
6380
6389
  }
6381
6390
  if (!r) throw Error("preview: handler did not complete");
6382
6391
  return n;
6383
- }, Ou = "framework-runtime";
6392
+ }, Nu = "framework-runtime";
6384
6393
  //#endregion
6385
- export { Oi as API_KEYS_TABLE, Fo as AccessDenied, Jl as AggregateError, rl as AggregateMaintainer, ql as AggregateNotFound, Yl as AggregateRegistry, Kl as AggregateStale, Nl as AnalyticsCapabilityNotSupported, Ml as AnalyticsError, Pl as AnalyticsSink, X as CONNECTIONS_TABLE, Na as CONNECTION_GRANTS_TABLE, Es as CircuitBreaker, ws as CircuitOpen, no as ConnectionNotConnected, Lr as DEFAULT_MAX_RPC_BODY_BYTES, eo as DEFAULT_REFRESH_SKEW_MS, On as DEFAULT_ROW_FILTER_RETRY, gs as DeleteBuilder, zn as Dispatcher, Wi as EffectStore, ho as GRANT_TTL_MS, Ut as InMemoryDataStore, jt as IndexedMatcher, wt as LinearScanMatcher, Ge as MetricBoundaries, Ll as NOOP_ANALYTICS_PROVIDER, Mn as NO_ROW_FILTER, ls as NoRowFound, va as OUTBOX_ATTEMPTS_TABLE, Ta as OUTBOX_ATTEMPT_LOG_CAP, Y as OUTBOX_TABLE, us as OptimisticLockError, Po as REBAC_ADMIN_SCOPE, to as REFRESH_LEASE_MS, Ou as RUNTIME_NAME, pl as ReactionRateLimiter, vr as ReplicatedDataStore, Dn as RowFilterUnavailable, ms as SelectBuilder, Hi as StoreOperationFailed, Pt as SubscriptionRegistry, Ui as TableValidationFailed, Vi as TenantScopeViolation, Uc as TimelineRecorder, Sc as UndoBoundaryError, wc as UndoStack, hs as UpdateBuilder, ns as VOLTRO_AUDIT_MIXIN_ID, rs as VOLTRO_SOFT_DELETE_MIXIN_ID, is as VOLTRO_TENANT_MIXIN_ID, $n as _connectionStreamCount, er as _resetConnectionSubjectsForTest, Fa as _voltroConnectionGrantsTable, Ma as _voltroConnectionsTable, il as _voltroRebacTuplesTable, dc as _voltroScheduleClaimsTable, uc as _voltroScheduleRunsTable, fc as _voltroTracesTable, pc as _voltroUndoLogTable, hl as _voltroWakeupsTable, pa as _voltroWorkflowEventDeliveriesTable, fa as _voltroWorkflowEventsTable, Bi as apiKeyManagementRoutes, bs as applyDefined, tl as applyDelta, Ec as applyInverse, Dc as applyInverses, In as applyRowFilter, Ln as applyRowFilterToDescriptor, Ql as applySoftDeleteScope, Zl as applyTenantScope, Fc as applyUndoInvocation, Go as assertCan, za as assertConnectionCipherConfigured, Ul as attachAnalyticsMirror, zr as awaitServerListening, wa as backoffMs, yo as beginOAuthConnect, Kn as bindConnectionSubject, Ir as bindMutation, Or as bindStream, Dr as bindSubscription, Tr as bindSubscriptionUntyped, $c as buildIvmState, Tu as buildPreview, sl as buildRebacInterceptor, ll as buildRebacReadFilter, fr as buildSubjectKey, Wr as buildTracingLayer, ai as cachedBackend, Wo as can, Ws as cancelWakeup, Yc as classifyShape, oo as clearConnectionRefreshFlights, Bo as clearResourcePolicies, i as clearRetentions, ks as clearSystemStoreHandle, zs as compileCron, bo as completeOAuthConnect, Bl as composeAnalytics, zl as composeAnalyticsSinks, go as connectionCallbackPath, Ra as connectionLabel, tr as connectionSubjectsSnapshot, Ol as countRunningWorkflows, xn as counter, _r as currentRoutingContext, cr as currentTraceContext, Li as dataStoreApiKeyStore, bi as dataStoreIdempotencyStore, Ti as dataStoreKvStore, hi as decryptField, Wl as defineAggregate, La as defineConnection, sa as defineEventTrigger, xa as defineOutboxHandler, ul as defineReaction, Lo as defineResourcePolicy, Rs as defineSchedule, jl as defineSubscriber, ci as deriveKey, wu as diffChange, ka as drainOutbox, Zs as dueWakeups, Uo as effectiveRelations, cs as emptySchemaRegistry, q as encryptField, $r as envSecretsBackend, Qa as exchangeAuthorizationCode, ar as externalSpanFromTraceparent, Gt as extractDbCause, Nt as fingerprintFor, Ja as forgetCredential, rr as formatTraceparent, Tc as forwardChangeFromCdc, Ri as frameworkApiKeyStrategy, Sn as gauge, Ai as generateApiKeyToken, wo as getConnectionResolver, qn as getConnectionSubject, pi as getFieldCipher, Ro as getResourcePolicy, jn as getRowFilter, As as getSystemStoreHandle, Gc as getTimelineRecorder, Zo as getTupleSource, $ as groupKeyOf, Cn as histogramMetric, Su as historyProvenance, oi as httpSecretsBackend, xt as inspectWorkflow, Qo as installPolicyGuardResolver, Qn as interruptConnectionStreams, bc as invertChange, Gl as isAggregateDefinition, Kt as isForeignKeyViolation, xl as isIdleNow, Nr as isInfraError, Cc as isSafeToApply, Is as isScheduleDefinition, ca as isWorkflowEventTriggerDefinition, Qc as ivmValue, xu as lastWriteProvenance, Ya as listConnectionStates, zo as listResourcePolicies, ee as listRetentions, al as loadResourceTuples, cl as loadSubjectTuples, Ms as localityAwareSelector, gu as makeActionRunner, rc as makeAdvisoryLockCoordinator, li as makeAesCipher, Ni as makeApiKeyService, qt as makeAppAccess, Ei as makeAsyncKv, Qr as makeBufferingSpanProcessor, Ba as makeConnectionRegistry, Eo as makeConnectionResolver, Do as makeConnectionsFacade, lc as makeCoordinatedScheduler, es as makeDataLoader, No as makeDisconnectConnectionExecutor, qi as makeEffectStoreLayer, ma as makeEventsFacade, ui as makeFieldCipher, _s as makeFluentStore, Sl as makeIdleGate, ra as makeLazyWorkflowFacade, Ao as makeListConnectionsExecutor, uu as makeMutationRunner, Ca as makeOutboxFacade, ta as makePostCommitWorkflowFacade, vl as makeProcessAdapter, hu as makeQueryDescriptorProducer, mu as makeQueryReauthorizer, Cl as makeRouterActivity, as as makeSchemaRegistry, jo as makeStartConnectionExecutor, Mo as makeSubmitTokenExecutor, vc as makeUndoCapture, wl as makeWakeGate, Dl as makeWakeProxyServer, ea as makeWorkflowFacade, na as makeWorkflowFacadeWithCallerContext, ia as makeWorkflowHandlers, aa as makeWorkflowLayers, Xi as makeWorkflowRunHandle, Gs as markWakeupFired, el as materializeIvm, Pi as memoryApiKeyStore, Ps as memoryReplicationAdapter, dr as memoryRywPositionStore, Bs as nextFiring, Qs as nextWakeup, bl as nodeProcessSupervisor, Rl as noopAnalytics, Vl as noopAnalyticsSpec, Di as noopKv, Yn as onBindConnectionSubject, ba as outboxAttemptsTable, _a as outboxTable, ir as parseTraceparent, lr as powerOfTwoSelector, Du as previewInRollback, Wa as projectConnectionState, ec as pruneWakeups, Vo as rebacPolicyGraph, _n as recordSample, U as recordSubscriptionActive, yn as recordSubscriptionDelivery, qc as recordTimelineEvent, Bc as redactRow, pr as redisRywPositionStore, Ic as redoUndoInvocation, $a as refreshAccessToken, Zn as registerConnectionStream, ie as registerRetention, Us as registerWakeup, Js as releaseWakeup, ur as replicaHealth, ni as resetSecretsBackend, lo as resolveConnection, To as resolveConnectionForSubject, Ns as resolveCurrentRegion, Jt as resolveDependentTables, vo as resolveRedirectUri, nl as resolveRescan, Nn as resolveRowFilterScope, Pn as resolveRowFilterScopeFor, ri as resolveSecret, ii as resolveSecretSync, si as resolveSecretsBackend, Lc as resolveTimelineMode, oe as retentionTtlMsFromEnv, Hc as reverseEventOverRows, qo as revokedIds, js as runAsSystem, kl as runOrchestratorTick, $l as runProvidedEffect, ml as runReaction, Al as runSingleNodeOrchestrator, _l as runWakeLoop, lu as runWithDeadlockRetry, gr as runWithRoutingContext, sr as runWithTraceContext, _o as sanitizeRedirectTo, cc as scheduleCoordinated, Co as setConnectionResolver, fi as setFieldCipher, An as setRowFilter, ti as setSecretsBackend, Os as setSystemStoreHandle, Kc as setTimelineRecorderForTest, Xo as setTupleSource, ki as sha256Hex, tc as singleCoordinator, Tn as snapshotMetrics, En as snapshotMetricsSync, Rr as startRpcServer, ac as startScheduler, Ka as storeCredential, xo as sweepExpiredGrants, ce as sweepRetention, xc as synthesizeInverse, ts as tracingHttpClientLayer, oa as triggerWorkflow, qs as tryClaimWakeup, Jn as unbindConnectionSubject, mc as undoCaptureEnabled, Nc as undoLogExecutor, Xl as useAggregate, Il as useAnalytics, Ko as visibleRows, gl as wakeDueOnce, nu as withRowFilter, Ji as workflowToRpc, _c as wrapCaptureStore, Cs as wrapStoreWithMixinBehaviour };
6394
+ export { Ai as API_KEYS_TABLE, Ro as AccessDenied, $l as AggregateError, cl as AggregateMaintainer, Ql as AggregateNotFound, eu as AggregateRegistry, Zl as AggregateStale, Rl as AnalyticsCapabilityNotSupported, Ll as AnalyticsError, zl as AnalyticsSink, X as CONNECTIONS_TABLE, Ia as CONNECTION_GRANTS_TABLE, ks as CircuitBreaker, Ds as CircuitOpen, ao as ConnectionNotConnected, zr as DEFAULT_MAX_RPC_BODY_BYTES, ro as DEFAULT_REFRESH_SKEW_MS, kn as DEFAULT_ROW_FILTER_RETRY, ac as DORMANCY_WAKEUP_TENANT, ys as DeleteBuilder, Vn as Dispatcher, qi as EffectStore, vo as GRANT_TTL_MS, Wt as InMemoryDataStore, Mt as IndexedMatcher, Tt as LinearScanMatcher, Ke as MetricBoundaries, Hl as NOOP_ANALYTICS_PROVIDER, Nn as NO_ROW_FILTER, fs as NoRowFound, xa as OUTBOX_ATTEMPTS_TABLE, Oa as OUTBOX_ATTEMPT_LOG_CAP, Y as OUTBOX_TABLE, ps as OptimisticLockError, Lo as REBAC_ADMIN_SCOPE, io as REFRESH_LEASE_MS, Nu as RUNTIME_NAME, vl as ReactionRateLimiter, br as ReplicatedDataStore, On as RowFilterUnavailable, ic as SCHEDULE_SUBJECT, Ui as SYSTEM_SUBJECT, _s as SelectBuilder, Gi as StoreOperationFailed, Ft as SubscriptionRegistry, Ki as TableValidationFailed, Wi as TenantScopeViolation, Jc as TimelineRecorder, Dc as UndoBoundaryError, kc as UndoStack, vs as UpdateBuilder, as as VOLTRO_AUDIT_MIXIN_ID, os as VOLTRO_SOFT_DELETE_MIXIN_ID, ss as VOLTRO_TENANT_MIXIN_ID, tr as _connectionStreamCount, nr as _resetConnectionSubjectsForTest, Ra as _voltroConnectionGrantsTable, Fa as _voltroConnectionsTable, ll as _voltroRebacTuplesTable, gc as _voltroScheduleClaimsTable, hc as _voltroScheduleRunsTable, _c as _voltroTracesTable, vc as _voltroUndoLogTable, bl as _voltroWakeupsTable, ga as _voltroWorkflowEventDeliveriesTable, ha as _voltroWorkflowEventsTable, Hi as apiKeyManagementRoutes, Cs as applyDefined, ol as applyDelta, jc as applyInverse, Mc as applyInverses, Ln as applyRowFilter, Rn as applyRowFilterToDescriptor, ru as applySoftDeleteScope, nu as applyTenantScope, Bc as applyUndoInvocation, Jo as assertCan, Ha as assertConnectionCipherConfigured, Jl as attachAnalyticsMirror, Vr as awaitServerListening, Da as backoffMs, So as beginOAuthConnect, Jn as bindConnectionSubject, Rr as bindMutation, Ar as bindStream, kr as bindSubscription, Dr as bindSubscriptionUntyped, il as buildIvmState, Au as buildPreview, fl as buildRebacInterceptor, ml as buildRebacReadFilter, mr as buildSubjectKey, Kr as buildTracingLayer, si as cachedBackend, qo as can, qs as cancelWakeup, el as classifyShape, lo as clearConnectionRefreshFlights, Uo as clearResourcePolicies, i as clearRetentions, Ms as clearSystemStoreHandle, Hs as compileCron, Co as completeOAuthConnect, Gl as composeAnalytics, Wl as composeAnalyticsSinks, yo as connectionCallbackPath, Va as connectionLabel, rr as connectionSubjectsSnapshot, Nl as countRunningWorkflows, Sn as counter, yr as currentRoutingContext, ur as currentTraceContext, zi as dataStoreApiKeyStore, Si as dataStoreIdempotencyStore, Di as dataStoreKvStore, _i as decryptField, Yl as defineAggregate, Ba as defineConnection, ua as defineEventTrigger, wa as defineOutboxHandler, hl as defineReaction, Bo as defineResourcePolicy, Vs as defineSchedule, Il as defineSubscriber, zn as deliveredRowCount, ui as deriveKey, ku as diffChange, Ma as drainOutbox, ec as dueWakeups, Ko as effectiveRelations, ds as emptySchemaRegistry, q as encryptField, ti as envSecretsBackend, to as exchangeAuthorizationCode, sr as externalSpanFromTraceparent, Kt as extractDbCause, Pt as fingerprintFor, Za as forgetCredential, ar as formatTraceparent, Ac as forwardChangeFromCdc, Bi as frameworkApiKeyStrategy, Cn as gauge, Mi as generateApiKeyToken, Do as getConnectionResolver, Yn as getConnectionSubject, hi as getFieldCipher, Vo as getResourcePolicy, Mn as getRowFilter, Ns as getSystemStoreHandle, Xc as getTimelineRecorder, es as getTupleSource, $ as groupKeyOf, wn as histogramMetric, Du as historyProvenance, ci as httpSecretsBackend, St as inspectWorkflow, ts as installPolicyGuardResolver, er as interruptConnectionStreams, Tc as invertChange, Xl as isAggregateDefinition, qt as isForeignKeyViolation, El as isIdleNow, Fr as isInfraError, Oc as isSafeToApply, zs as isScheduleDefinition, da as isWorkflowEventTriggerDefinition, rl as ivmValue, Eu as lastWriteProvenance, Qa as listConnectionStates, Ho as listResourcePolicies, ee as listRetentions, ul as loadResourceTuples, pl as loadSubjectTuples, Fs as localityAwareSelector, xu as makeActionRunner, cc as makeAdvisoryLockCoordinator, di as makeAesCipher, Fi as makeApiKeyService, Jt as makeAppAccess, Oi as makeAsyncKv, ei as makeBufferingSpanProcessor, Ua as makeConnectionRegistry, ko as makeConnectionResolver, Ao as makeConnectionsFacade, mc as makeCoordinatedScheduler, rs as makeDataLoader, Io as makeDisconnectConnectionExecutor, Xi as makeEffectStoreLayer, _a as makeEventsFacade, fi as makeFieldCipher, bs as makeFluentStore, Dl as makeIdleGate, oa as makeLazyWorkflowFacade, No as makeListConnectionsExecutor, hu as makeMutationRunner, Ea as makeOutboxFacade, ia as makePostCommitWorkflowFacade, Cl as makeProcessAdapter, bu as makeQueryDescriptorProducer, yu as makeQueryReauthorizer, Ol as makeRouterActivity, cs as makeSchemaRegistry, Po as makeStartConnectionExecutor, Fo as makeSubmitTokenExecutor, Cc as makeUndoCapture, kl as makeWakeGate, Ml as makeWakeProxyServer, ra as makeWorkflowFacade, aa as makeWorkflowFacadeWithCallerContext, sa as makeWorkflowHandlers, ca as makeWorkflowLayers, $i as makeWorkflowRunHandle, Js as markWakeupFired, al as materializeIvm, Ii as memoryApiKeyStore, Ls as memoryReplicationAdapter, pr as memoryRywPositionStore, Us as nextFiring, tc as nextWakeup, Tl as nodeProcessSupervisor, Ul as noopAnalytics, Kl as noopAnalyticsSpec, ki as noopKv, Zn as onBindConnectionSubject, Ca as outboxAttemptsTable, ba as outboxTable, or as parseTraceparent, dr as powerOfTwoSelector, Mu as previewInRollback, qa as projectConnectionState, rc as pruneWakeups, Wo as rebacPolicyGraph, vn as recordSample, U as recordSubscriptionActive, bn as recordSubscriptionDelivery, Qc as recordTimelineEvent, Gc as redactRow, hr as redisRywPositionStore, Vc as redoUndoInvocation, no as refreshAccessToken, $n as registerConnectionStream, oe as registerRetention, Ks as registerWakeup, Zs as releaseWakeup, fr as replicaHealth, ii as resetSecretsBackend, po as resolveConnection, Oo as resolveConnectionForSubject, Is as resolveCurrentRegion, Yt as resolveDependentTables, xo as resolveRedirectUri, sl as resolveRescan, Pn as resolveRowFilterScope, Fn as resolveRowFilterScopeFor, ai as resolveSecret, oi as resolveSecretSync, li as resolveSecretsBackend, Hc as resolveTimelineMode, ce as retentionTtlMsFromEnv, qc as reverseEventOverRows, Xo as revokedIds, Ps as runAsSystem, Pl as runOrchestratorTick, iu as runProvidedEffect, yl as runReaction, Fl as runSingleNodeOrchestrator, Sl as runWakeLoop, mu as runWithDeadlockRetry, vr as runWithRoutingContext, lr as runWithTraceContext, bo as sanitizeRedirectTo, pc as scheduleCoordinated, Eo as setConnectionResolver, mi as setFieldCipher, jn as setRowFilter, ri as setSecretsBackend, js as setSystemStoreHandle, Zc as setTimelineRecorderForTest, $o as setTupleSource, ji as sha256Hex, oc as singleCoordinator, En as snapshotMetrics, Dn as snapshotMetricsSync, Br as startRpcServer, uc as startScheduler, Ya as storeCredential, wo as sweepExpiredGrants, ue as sweepRetention, Ec as synthesizeInverse, is as tracingHttpClientLayer, la as triggerWorkflow, Xs as tryClaimWakeup, Xn as unbindConnectionSubject, yc as undoCaptureEnabled, Rc as undoLogExecutor, tu as useAggregate, Vl as useAnalytics, Yo as visibleRows, xl as wakeDueOnce, su as withRowFilter, Zi as workflowToRpc, Sc as wrapCaptureStore, Es as wrapStoreWithMixinBehaviour };