@voltro/runtime 0.10.0 → 0.11.0

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