@voltro/runtime 0.19.0 → 0.20.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 +87 -0
  2. package/dist/index.js +644 -639
  3. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -2431,17 +2431,22 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2431
2431
  }, Si = (e, t) => {
2432
2432
  let n = xi(e);
2433
2433
  return n === void 0 ? t() : Br(n, t);
2434
- }, Ci = (e, t, n) => ({
2434
+ }, Ci = (e, t) => F.async((n) => {
2435
+ let r = ue(t, () => F.runFork(e));
2436
+ return r.addObserver((e) => {
2437
+ n(e);
2438
+ }), F.asVoid(et.interrupt(r));
2439
+ }), wi = (e, t, n) => ({
2435
2440
  subject: e,
2436
2441
  traceId: t?.traceId ?? xe(),
2437
2442
  ...t?.spanId === void 0 ? {} : { spanId: t.spanId },
2438
2443
  ...n === void 0 ? {} : { clientId: n }
2439
- }), wi = F.currentSpan.pipe(F.catchAll(() => F.succeed(void 0))), Ti = (e) => ({
2444
+ }), Ti = F.currentSpan.pipe(F.catchAll(() => F.succeed(void 0))), Ei = (e) => ({
2440
2445
  traceId: e.traceId,
2441
2446
  ...e.spanId === void 0 ? {} : { spanId: e.spanId }
2442
- }), Ei = (e, t, n) => {
2447
+ }), Di = (e, t, n) => {
2443
2448
  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));
2444
- }, Di = (e) => {
2449
+ }, Oi = (e) => {
2445
2450
  if (Gn() !== void 0) return async () => {
2446
2451
  let t = await F.runPromise(F.either(qn(e, (e) => {
2447
2452
  console.error("[voltro] row filter failed to load — subscription", e);
@@ -2449,13 +2454,13 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2449
2454
  if (t._tag === "Left") throw t.left;
2450
2455
  return t.right;
2451
2456
  };
2452
- }, Oi = (e, t, n, r, i, a, o, s) => B.asyncScoped((c) => F.gen(function* () {
2457
+ }, ki = (e, t, n, r, i, a, o, s) => B.asyncScoped((c) => F.gen(function* () {
2453
2458
  let l = yield* F.tryPromise(() => t.subscribe(e, (e) => {
2454
2459
  c.single(e);
2455
2460
  }, n, r, i, a, o, s)).pipe(F.matchCause({
2456
- onFailure: (e) => (Li(`subscription.${i}`, n.traceId, e), {
2461
+ onFailure: (e) => (Ri(`subscription.${i}`, n.traceId, e), {
2457
2462
  ok: !1,
2458
- error: Vi(e)
2463
+ error: Hi(e)
2459
2464
  }),
2460
2465
  onSuccess: (e) => ({
2461
2466
  ok: !0,
@@ -2476,20 +2481,20 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2476
2481
  });
2477
2482
  yield* F.addFinalizer(() => F.sync(() => e()));
2478
2483
  }
2479
- })), ki = /* @__PURE__ */ new Set(), Ai = () => {
2480
- ki.clear();
2481
- }, ji = (e) => {
2482
- ki.has(e) || (ki.add(e), process.stderr.write(`[voltro] ${e}: \`cache:\` is declared but NOT applied — this query's handler returns a computed value, and the snapshot cache only wraps a store read. Every subscriber re-runs the handler. Either return a query descriptor (so the read can be cached), or drop \`cache:\` so the declaration matches what happens.\n`));
2483
- }, Mi = (e, t, n, r) => B.asyncScoped((i) => F.gen(function* () {
2484
+ })), Ai = /* @__PURE__ */ new Set(), ji = () => {
2485
+ Ai.clear();
2486
+ }, Mi = (e) => {
2487
+ Ai.has(e) || (Ai.add(e), process.stderr.write(`[voltro] ${e}: \`cache:\` is declared but NOT applied — this query's handler returns a computed value, and the snapshot cache only wraps a store read. Every subscriber re-runs the handler. Either return a query descriptor (so the read can be cached), or drop \`cache:\` so the declaration matches what happens.\n`));
2488
+ }, Ni = (e, t, n, r) => B.asyncScoped((i) => F.gen(function* () {
2484
2489
  let a = yield* F.tryPromise(() => t.subscribeComputed(e, (e) => {
2485
2490
  i.single(e._tag === "snapshot" ? {
2486
2491
  ...e,
2487
2492
  computed: !0
2488
2493
  } : e);
2489
2494
  }, n, r)).pipe(F.matchCause({
2490
- onFailure: (e) => (Li(`subscription.${r}`, n.traceId, e), {
2495
+ onFailure: (e) => (Ri(`subscription.${r}`, n.traceId, e), {
2491
2496
  ok: !1,
2492
- error: Vi(e)
2497
+ error: Hi(e)
2493
2498
  }),
2494
2499
  onSuccess: (e) => ({
2495
2500
  ok: !0,
@@ -2510,16 +2515,16 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2510
2515
  });
2511
2516
  yield* F.addFinalizer(() => F.sync(() => e()));
2512
2517
  }
2513
- })), Ni = (e, t, n = "rpc.subscription", r, i, a, o) => B.unwrap(F.gen(function* () {
2514
- let s = yield* Ne, c = yield* Oe, l = yield* wi;
2515
- Ei(l, n, s);
2516
- let u = Ci(s, l, c.clientId), d = pi(s.id, c.clientId), f = _i({ subjectKey: d }, () => Cr({
2518
+ })), Pi = (e, t, n = "rpc.subscription", r, i, a, o) => B.unwrap(F.gen(function* () {
2519
+ let s = yield* Ne, c = yield* Oe, l = yield* Ti;
2520
+ Di(l, n, s);
2521
+ let u = wi(s, l, c.clientId), d = pi(s.id, c.clientId), f = _i({ subjectKey: d }, () => Cr({
2517
2522
  traceId: u.traceId,
2518
2523
  ...u.spanId === void 0 ? {} : { spanId: u.spanId }
2519
2524
  }, () => Si(n, () => e(u)))), p = F.isEffect(f) ? yield* f.pipe(F.matchCause({
2520
- onFailure: (e) => (Li(`subscription.${n}`, u.traceId, e), {
2525
+ onFailure: (e) => (Ri(`subscription.${n}`, u.traceId, e), {
2521
2526
  ok: !1,
2522
- error: Vi(e)
2527
+ error: Hi(e)
2523
2528
  }),
2524
2529
  onSuccess: (e) => ({
2525
2530
  ok: !0,
@@ -2534,17 +2539,17 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2534
2539
  error: p.error
2535
2540
  });
2536
2541
  let m = p.value;
2537
- if (rr(m)) return i !== void 0 && ji(n), Mi(m, t, u, n);
2542
+ if (rr(m)) return i !== void 0 && Mi(n), Ni(m, t, u, n);
2538
2543
  let h = m, g = r?.(h);
2539
- return Oi(h, t, u, g, n, i === void 0 ? void 0 : {
2544
+ return ki(h, t, u, g, n, i === void 0 ? void 0 : {
2540
2545
  key: i.scope === "subject" ? `${i.baseKey}:s:${d}` : `${i.baseKey}:global`,
2541
2546
  ttlMs: i.ttlMs,
2542
2547
  swrMs: i.swrMs
2543
- }, a?.(s), o?.(s) ?? Di(s));
2544
- }).pipe(F.withSpan(n, { attributes: { "framework.kind": "subscription" } }))), Pi = (e, t = "rpc.stream") => B.unwrap(F.gen(function* () {
2545
- let n = yield* Ne, r = yield* Oe, i = yield* wi;
2546
- Ei(i, t, n);
2547
- let a = Ci(n, i, r.clientId), o = Si(t, () => e(a)), s = F.isEffect(o) ? yield* o.pipe(F.orDie) : o;
2548
+ }, a?.(s), o?.(s) ?? Oi(s));
2549
+ }).pipe(F.withSpan(n, { attributes: { "framework.kind": "subscription" } }))), Fi = (e, t = "rpc.stream") => B.unwrap(F.gen(function* () {
2550
+ let n = yield* Ne, r = yield* Oe, i = yield* Ti;
2551
+ Di(i, t, n);
2552
+ let a = wi(n, i, r.clientId), o = Si(t, () => e(a)), s = F.isEffect(o) ? yield* o.pipe(F.orDie) : o;
2548
2553
  if (a.clientId === void 0) return s;
2549
2554
  let c = a.clientId;
2550
2555
  return B.unwrapScoped(F.gen(function* () {
@@ -2553,25 +2558,25 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2553
2558
  });
2554
2559
  return yield* F.addFinalizer(() => F.sync(() => t())), s.pipe(B.interruptWhen(Xe.await(e)));
2555
2560
  }));
2556
- }).pipe(F.withSpan(t, { attributes: { "framework.kind": "stream" } }))), Fi = M({ scope: "voltro:rpc" }), Ii = M({ scope: "voltro:http" }), Li = (e, t, n) => {
2561
+ }).pipe(F.withSpan(t, { attributes: { "framework.kind": "stream" } }))), Ii = M({ scope: "voltro:rpc" }), Li = M({ scope: "voltro:http" }), Ri = (e, t, n) => {
2557
2562
  if (N.isInterruptedOnly(n)) return;
2558
2563
  let r = N.squash(n), i = r?._tag, a = r instanceof Error ? r.message : r?.message ?? String(r), o = N.dieOption(n)._tag === "Some", s = an(r), c = {
2559
2564
  traceId: t,
2560
2565
  ...i === void 0 ? {} : { errorTag: i },
2561
2566
  ...s
2562
2567
  }, l = a === "Failed to execute statement" && typeof s.dbMessage == "string" ? s.dbMessage : a;
2563
- o ? Fi.error(`${e} failed: ${l}`, c) : Fi.warn(`${e} failed: ${l}`, c);
2564
- }, Ri = /* @__PURE__ */ new Set([
2568
+ o ? Ii.error(`${e} failed: ${l}`, c) : Ii.warn(`${e} failed: ${l}`, c);
2569
+ }, zi = /* @__PURE__ */ new Set([
2565
2570
  "SqlError",
2566
2571
  "ResultLengthMismatch",
2567
2572
  "FieldDecryptionError"
2568
- ]), zi = (e) => typeof e == "object" && !!e && typeof e._tag == "string" && Ri.has(e._tag), Bi = (e) => ({
2573
+ ]), Bi = (e) => typeof e == "object" && !!e && typeof e._tag == "string" && zi.has(e._tag), Vi = (e) => ({
2569
2574
  _tag: "InternalError",
2570
2575
  message: "internal server error",
2571
2576
  traceId: e
2572
- }), Vi = (e) => {
2577
+ }), Hi = (e) => {
2573
2578
  let t = N.squash(e);
2574
- if (t && typeof t == "object" && t._tag === "UnknownException" && (t = t.error ?? t.cause ?? t), zi(t)) return {
2579
+ if (t && typeof t == "object" && t._tag === "UnknownException" && (t = t.error ?? t.cause ?? t), Bi(t)) return {
2575
2580
  _tag: "InternalError",
2576
2581
  message: "internal server error"
2577
2582
  };
@@ -2583,21 +2588,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2583
2588
  ...typeof i == "string" ? { _tag: i } : {},
2584
2589
  message: typeof a == "string" ? a : String(t)
2585
2590
  };
2586
- }, Hi = (e, t, n = "rpc.mutation") => F.gen(function* () {
2587
- let r = yield* Ne, i = yield* Oe, a = yield* wi;
2588
- Ei(a, n, r);
2589
- let o = Ci(r, a, i.clientId), s = _i({ subjectKey: pi(r.id, i.clientId) }, () => Cr({
2590
- traceId: o.traceId,
2591
- ...o.spanId === void 0 ? {} : { spanId: o.spanId }
2592
- }, () => ue({
2591
+ }, Ui = (e, t, n = "rpc.mutation") => F.gen(function* () {
2592
+ let r = yield* Ne, i = yield* Oe, a = yield* Ti;
2593
+ Di(a, n, r);
2594
+ let o = wi(r, a, i.clientId), s = pi(r.id, i.clientId), c = {
2593
2595
  traceId: o.traceId,
2594
2596
  subjectId: ci(r)
2595
- }, () => Si(n, () => e(t, o)))));
2596
- return yield* (F.isEffect(s) ? s : F.tryPromise({
2597
- try: () => Promise.resolve(s),
2597
+ }, l = _i({ subjectKey: s }, () => Cr({
2598
+ traceId: o.traceId,
2599
+ ...o.spanId === void 0 ? {} : { spanId: o.spanId }
2600
+ }, () => ue(c, () => Si(n, () => e(t, o)))));
2601
+ return yield* (F.isEffect(l) ? Ci(l, c) : F.tryPromise({
2602
+ try: () => Promise.resolve(l),
2598
2603
  catch: (e) => e
2599
- })).pipe(F.tapErrorCause((e) => F.sync(() => Li(n, o.traceId, e))), F.catchIf(zi, () => F.die(Bi(o.traceId))), F.annotateLogs(Ti(o)));
2600
- }).pipe(F.withSpan(n, { attributes: { "framework.kind": "mutation" } })), Ui = 8 * 1024 * 1024, Wi = (e) => {
2604
+ })).pipe(F.tapErrorCause((e) => F.sync(() => Ri(n, o.traceId, e))), F.catchIf(Bi, () => F.die(Vi(o.traceId))), F.annotateLogs(Ei(o)));
2605
+ }).pipe(F.withSpan(n, { attributes: { "framework.kind": "mutation" } })), Wi = 8 * 1024 * 1024, Gi = (e) => {
2601
2606
  let t = e.port ?? 4e3, n = e.path ?? "/ws", r = ct(), i = (t) => ft.HttpServerRequest.pipe(F.flatMap((t) => F.gen(function* () {
2602
2607
  if (!e.inspectRoute) return H.text("inspect route not configured", { status: 404 });
2603
2608
  let n = {};
@@ -2706,7 +2711,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2706
2711
  rawBody: s,
2707
2712
  ...c === void 0 ? {} : { store: c }
2708
2713
  }, u = yield* F.promise(() => yt(t, l));
2709
- u.status >= 500 && Ii.warn(`${n.method} ${a} → ${u.status}`, {
2714
+ u.status >= 500 && Li.warn(`${n.method} ${a} → ${u.status}`, {
2710
2715
  method: n.method,
2711
2716
  path: a,
2712
2717
  status: u.status,
@@ -2741,7 +2746,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2741
2746
  });
2742
2747
  }
2743
2748
  return u.body instanceof Uint8Array ? H.uint8Array(u.body, f) : H.text(u.body ?? "", f);
2744
- })), F.tapErrorCause((e) => N.isInterruptedOnly(e) ? F.void : F.sync(() => Ii.error(`${t.map((e) => e.method).join("|")} ${t[0].path} threw`, { path: t[0].path }, N.squash(e))))), n = /* @__PURE__ */ new Map();
2749
+ })), F.tapErrorCause((e) => N.isInterruptedOnly(e) ? F.void : F.sync(() => Li.error(`${t.map((e) => e.method).join("|")} ${t[0].path} threw`, { path: t[0].path }, N.squash(e))))), n = /* @__PURE__ */ new Map();
2745
2750
  for (let t of e.httpRoutes) {
2746
2751
  let e = n.get(t.path);
2747
2752
  e ? e.push(t) : n.set(t.path, [t]);
@@ -2804,21 +2809,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2804
2809
  let C = M({ scope: "voltro:rpc" }), w = I.launch(S).pipe(F.catchAllCause((e) => F.sync(() => {
2805
2810
  C.error("rpc server crashed", {}, N.squash(e)), process.exit(1);
2806
2811
  }))), T = F.runFork(w);
2807
- return Gi.add(T), qi(), {
2812
+ return Ki.add(T), Ji(), {
2808
2813
  server: r,
2809
2814
  shutdown: async () => {
2810
- Gi.delete(T), await F.runPromise(et.interrupt(T)).then(() => void 0, () => void 0);
2815
+ Ki.delete(T), await F.runPromise(et.interrupt(T)).then(() => void 0, () => void 0);
2811
2816
  }
2812
2817
  };
2813
- }, Gi = /* @__PURE__ */ new Set(), Ki = !1, qi = () => {
2814
- if (Ki) return;
2815
- Ki = !0;
2818
+ }, Ki = /* @__PURE__ */ new Set(), qi = !1, Ji = () => {
2819
+ if (qi) return;
2820
+ qi = !0;
2816
2821
  let e = () => {
2817
- let e = [...Gi];
2818
- Gi.clear(), Promise.all(e.map((e) => F.runPromise(et.interrupt(e)).then(() => void 0, () => void 0))).then(() => process.exit(0), () => process.exit(0));
2822
+ let e = [...Ki];
2823
+ Ki.clear(), Promise.all(e.map((e) => F.runPromise(et.interrupt(e)).then(() => void 0, () => void 0))).then(() => process.exit(0), () => process.exit(0));
2819
2824
  };
2820
2825
  process.once("SIGINT", e), process.once("SIGTERM", e);
2821
- }, Ji = (e, t = 1e4) => new Promise((n, r) => {
2826
+ }, Yi = (e, t = 1e4) => new Promise((n, r) => {
2822
2827
  if (e.listening) {
2823
2828
  n();
2824
2829
  return;
@@ -2834,13 +2839,13 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2834
2839
  o(e);
2835
2840
  }
2836
2841
  a = setTimeout(() => o(/* @__PURE__ */ Error(`rpc server did not bind within ${t}ms`)), t), e.on("listening", s), e.on("error", c);
2837
- }), Yi = () => {
2842
+ }), Xi = () => {
2838
2843
  let e = process.env.FRAMEWORK_TRACING?.toLowerCase();
2839
2844
  return e === "console" || e === "otlp" || e === "off" ? e : process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ? "otlp" : "off";
2840
- }, Xi = () => {
2845
+ }, Zi = () => {
2841
2846
  let e = process.env.FRAMEWORK_METRICS?.toLowerCase();
2842
2847
  return e === "console" || e === "otlp" || e === "off" ? e : process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT ? "otlp" : "off";
2843
- }, Zi = async () => {
2848
+ }, Qi = async () => {
2844
2849
  let [e, t, n, r, i] = await Promise.all([
2845
2850
  import("@opentelemetry/sdk-trace-base"),
2846
2851
  import("@opentelemetry/sdk-metrics"),
@@ -2855,7 +2860,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2855
2860
  otlpMetrics: r,
2856
2861
  nodeSdk: i
2857
2862
  };
2858
- }, Qi = (e, t, n) => {
2863
+ }, $i = (e, t, n) => {
2859
2864
  let { PeriodicExportingMetricReader: r, ConsoleMetricExporter: i, InMemoryMetricExporter: a, AggregationTemporality: o } = e.sdkMetrics;
2860
2865
  if (t === "off") return {
2861
2866
  reader: void 0,
@@ -2878,8 +2883,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2878
2883
  }),
2879
2884
  inMemory: void 0
2880
2885
  };
2881
- }, $i = async (e = {}) => {
2882
- let t = e.mode ?? Yi(), n = e.metricsMode ?? Xi(), r = e.extraSpanProcessors ?? [], i = e.extraMetricReaders ?? [];
2886
+ }, ea = async (e = {}) => {
2887
+ let t = e.mode ?? Xi(), n = e.metricsMode ?? Zi(), r = e.extraSpanProcessors ?? [], i = e.extraMetricReaders ?? [];
2883
2888
  if (t === "off" && e.traceSink === void 0 && n === "off" && r.length === 0 && i.length === 0) return {
2884
2889
  layer: I.empty,
2885
2890
  mode: t,
@@ -2888,13 +2893,13 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2888
2893
  metricsMode: n,
2889
2894
  inMemoryMetricExporter: void 0
2890
2895
  };
2891
- let a = await Zi(), { 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;
2896
+ let a = await Qi(), { 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;
2892
2897
  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());
2893
2898
  let m = [
2894
2899
  ...e.traceSink ? [e.traceSink] : [],
2895
2900
  ...p ? [p] : [],
2896
2901
  ...r
2897
- ], h = m.length === 1 ? m[0] : m, { reader: g, inMemory: _ } = Qi(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 = {
2902
+ ], h = m.length === 1 ? m[0] : m, { reader: g, inMemory: _ } = $i(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 = {
2898
2903
  serviceName: d,
2899
2904
  ...e.serviceVersion ? { serviceVersion: e.serviceVersion } : {},
2900
2905
  ...e.resourceAttributes ? { attributes: e.resourceAttributes } : {}
@@ -2912,18 +2917,18 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2912
2917
  metricsMode: n,
2913
2918
  inMemoryMetricExporter: _
2914
2919
  };
2915
- }, ea = {
2920
+ }, ta = {
2916
2921
  [Tt.INTERNAL]: "internal",
2917
2922
  [Tt.SERVER]: "server",
2918
2923
  [Tt.CLIENT]: "client",
2919
2924
  [Tt.PRODUCER]: "producer",
2920
2925
  [Tt.CONSUMER]: "consumer"
2921
- }, ta = (e) => e[0] * 1e3 + e[1] / 1e6, na = 512, ra = 48, ia = (e) => {
2926
+ }, na = (e) => e[0] * 1e3 + e[1] / 1e6, ra = 512, ia = 48, aa = (e) => {
2922
2927
  let t = {}, n = 0;
2923
2928
  for (let r in e) {
2924
- if (n >= ra) break;
2929
+ if (n >= ia) break;
2925
2930
  let i = e[r];
2926
- if (typeof i == "string") t[r] = i.length > na ? `${i.slice(0, na)}…` : i;
2931
+ if (typeof i == "string") t[r] = i.length > ra ? `${i.slice(0, ra)}…` : i;
2927
2932
  else if (typeof i == "number" || typeof i == "boolean" || i == null) t[r] = i;
2928
2933
  else {
2929
2934
  let e;
@@ -2932,49 +2937,49 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2932
2937
  } catch {
2933
2938
  e = String(i);
2934
2939
  }
2935
- t[r] = e.length > na ? `${e.slice(0, na)}…` : e;
2940
+ t[r] = e.length > ra ? `${e.slice(0, ra)}…` : e;
2936
2941
  }
2937
2942
  n++;
2938
2943
  }
2939
2944
  return t;
2940
- }, aa = {
2945
+ }, oa = {
2941
2946
  [Et.UNSET]: "unset",
2942
2947
  [Et.OK]: "ok",
2943
2948
  [Et.ERROR]: "error"
2944
- }, oa = (e) => {
2949
+ }, sa = (e) => {
2945
2950
  let t = e.spanContext(), n = e.events.length > 0 ? e.events.slice(0, 16).map((e) => ({
2946
2951
  name: e.name,
2947
- tsMs: ta(e.time),
2948
- ...e.attributes ? { attributes: ia(e.attributes) } : {}
2952
+ tsMs: na(e.time),
2953
+ ...e.attributes ? { attributes: aa(e.attributes) } : {}
2949
2954
  })) : void 0;
2950
2955
  return {
2951
2956
  traceId: t.traceId,
2952
2957
  spanId: t.spanId,
2953
2958
  parentSpanId: e.parentSpanContext?.spanId ?? null,
2954
2959
  name: e.name,
2955
- kind: ea[e.kind] ?? "internal",
2956
- attributes: ia(e.attributes),
2957
- startMs: ta(e.startTime),
2958
- endMs: ta(e.endTime),
2959
- durationMs: ta(e.duration),
2960
- status: aa[e.status.code] ?? "unset",
2960
+ kind: ta[e.kind] ?? "internal",
2961
+ attributes: aa(e.attributes),
2962
+ startMs: na(e.startTime),
2963
+ endMs: na(e.endTime),
2964
+ durationMs: na(e.duration),
2965
+ status: oa[e.status.code] ?? "unset",
2961
2966
  ...e.status.message ? { statusMessage: e.status.message } : {},
2962
2967
  ...n ? { events: n } : {}
2963
2968
  };
2964
- }, sa = (e) => ({
2969
+ }, ca = (e) => ({
2965
2970
  onStart: () => {},
2966
2971
  onEnd: (t) => {
2967
2972
  try {
2968
- e(oa(t));
2973
+ e(sa(t));
2969
2974
  } catch {}
2970
2975
  },
2971
2976
  forceFlush: () => Promise.resolve(),
2972
2977
  shutdown: () => Promise.resolve()
2973
- }), ca = { get: (e) => Promise.resolve(process.env[e]) }, la = ca, ua = (e) => {
2974
- la = e;
2975
- }, da = () => {
2976
- la = ca;
2977
- }, fa = async (e) => await la.get(e) ?? process.env[e], pa = (e) => process.env[e], ma = (e, t = 6e4, n = () => Date.now()) => {
2978
+ }), la = { get: (e) => Promise.resolve(process.env[e]) }, ua = la, da = (e) => {
2979
+ ua = e;
2980
+ }, fa = () => {
2981
+ ua = la;
2982
+ }, pa = async (e) => await ua.get(e) ?? process.env[e], ma = (e) => process.env[e], ha = (e, t = 6e4, n = () => Date.now()) => {
2978
2983
  let r = /* @__PURE__ */ new Map();
2979
2984
  return { get: async (i) => {
2980
2985
  let a = r.get(i);
@@ -2985,12 +2990,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
2985
2990
  at: n()
2986
2991
  }), o;
2987
2992
  } };
2988
- }, ha = (e) => {
2993
+ }, ga = (e) => {
2989
2994
  let t = {
2990
2995
  accept: "application/json",
2991
2996
  ...e.headers ?? {}
2992
2997
  };
2993
- if (e.perKey) return ma({ get: async (n) => {
2998
+ if (e.perKey) return ha({ get: async (n) => {
2994
2999
  let r = await fetch(`${e.url.replace(/\/$/, "")}/${encodeURIComponent(n)}`, { headers: t });
2995
3000
  if (!r.ok) return;
2996
3001
  let i = await r.json();
@@ -3001,34 +3006,34 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3001
3006
  let t = (await a())[e];
3002
3007
  return typeof t == "string" ? t : void 0;
3003
3008
  } };
3004
- }, ga = (e) => e === void 0 || e === "env" || typeof e == "object" && e.kind === "env" ? ca : e.kind === "custom" ? e.backend : e.kind === "http" ? ha(e) : ca, _a = "_voltro_idempotency", va = (e) => {
3009
+ }, _a = (e) => e === void 0 || e === "env" || typeof e == "object" && e.kind === "env" ? la : e.kind === "custom" ? e.backend : e.kind === "http" ? ga(e) : la, va = "_voltro_idempotency", ya = (e) => {
3005
3010
  if (e == null) return null;
3006
3011
  let t = typeof e == "string" ? JSON.parse(e) : e;
3007
3012
  return t && typeof t == "object" && "status" in t ? t : null;
3008
- }, ya = (e) => ({
3013
+ }, ba = (e) => ({
3009
3014
  scope: e.scope,
3010
3015
  key: e.key,
3011
3016
  status: e.status === "completed" ? "completed" : "in_flight",
3012
- response: va(e.response),
3017
+ response: ya(e.response),
3013
3018
  createdAt: qe(e.createdAt)
3014
- }), ba = async (e, n, r) => (await e.query({
3015
- table: _a,
3019
+ }), xa = async (e, n, r) => (await e.query({
3020
+ table: va,
3016
3021
  predicate: t(d("scope", n), d("key", r)),
3017
3022
  order: [],
3018
3023
  take: 1,
3019
3024
  skip: void 0,
3020
3025
  projection: void 0
3021
- }))[0] ?? null, xa = (e) => ({
3026
+ }))[0] ?? null, Sa = (e) => ({
3022
3027
  get: async (t, n) => {
3023
- let r = await ba(e, t, n);
3024
- return r ? ya(r) : null;
3028
+ let r = await xa(e, t, n);
3029
+ return r ? ba(r) : null;
3025
3030
  },
3026
3031
  claim: async (t, n, r, i) => {
3027
3032
  for (let a = 0; a < 2; a++) {
3028
3033
  let a = p({
3029
3034
  kind: "typeid",
3030
3035
  prefix: "idem"
3031
- }, _a), o = await e.insertIgnore(_a, {
3036
+ }, va), o = await e.insertIgnore(va, {
3032
3037
  id: a,
3033
3038
  scope: t,
3034
3039
  key: n,
@@ -3037,11 +3042,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3037
3042
  createdAt: new Date(r)
3038
3043
  }, { conflictColumns: ["scope", "key"] });
3039
3044
  if (o.id === a) return "claimed";
3040
- if (r - qe(o.createdAt) < i) return ya(o);
3041
- await e.delete(_a, o.id);
3045
+ if (r - qe(o.createdAt) < i) return ba(o);
3046
+ await e.delete(va, o.id);
3042
3047
  }
3043
- let a = await ba(e, t, n);
3044
- return a ? ya(a) : {
3048
+ let a = await xa(e, t, n);
3049
+ return a ? ba(a) : {
3045
3050
  scope: t,
3046
3051
  key: n,
3047
3052
  status: "in_flight",
@@ -3050,33 +3055,33 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3050
3055
  };
3051
3056
  },
3052
3057
  complete: async (t, n, r, i) => {
3053
- let a = await ba(e, t, n);
3054
- a && await e.update(_a, a.id, {
3058
+ let a = await xa(e, t, n);
3059
+ a && await e.update(va, a.id, {
3055
3060
  status: "completed",
3056
3061
  response: r
3057
3062
  });
3058
3063
  },
3059
3064
  release: async (t, n) => {
3060
- let r = await ba(e, t, n);
3061
- r && await e.delete(_a, r.id);
3065
+ let r = await xa(e, t, n);
3066
+ r && await e.delete(va, r.id);
3062
3067
  }
3063
- }), J = "_voltro_kv", Sa = (e) => {
3068
+ }), J = "_voltro_kv", Ca = (e) => {
3064
3069
  if (e == null) return null;
3065
3070
  if (e instanceof Date) return e.getTime();
3066
3071
  if (typeof e == "number") return e;
3067
3072
  let t = Date.parse(String(e));
3068
3073
  return Number.isNaN(t) ? null : t;
3069
- }, Ca = (e, t) => {
3070
- let n = Sa(e.expiresAt);
3074
+ }, wa = (e, t) => {
3075
+ let n = Ca(e.expiresAt);
3071
3076
  return n !== null && n <= t;
3072
- }, wa = (e) => e === null ? null : JSON.parse(e), Ta = async (e, t) => (await e.query({
3077
+ }, Ta = (e) => e === null ? null : JSON.parse(e), Ea = async (e, t) => (await e.query({
3073
3078
  table: J,
3074
3079
  predicate: d("key", t),
3075
3080
  order: [],
3076
3081
  take: 1,
3077
3082
  skip: void 0,
3078
3083
  projection: void 0
3079
- }))[0] ?? null, Ea = (e) => {
3084
+ }))[0] ?? null, Da = (e) => {
3080
3085
  let n = (e, t, n) => F.tryPromise({
3081
3086
  try: n,
3082
3087
  catch: (n) => new Ot({
@@ -3087,8 +3092,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3087
3092
  });
3088
3093
  return {
3089
3094
  get: (t) => n("get", t, async () => {
3090
- let n = await Ta(e, t);
3091
- return n === null ? it.none() : Ca(n, Date.now()) ? (await e.delete(J, n.id), it.none()) : it.some(wa(n.value));
3095
+ let n = await Ea(e, t);
3096
+ return n === null ? it.none() : wa(n, Date.now()) ? (await e.delete(J, n.id), it.none()) : it.some(Ta(n.value));
3092
3097
  }),
3093
3098
  set: (t, r, i) => n("set", t, async () => {
3094
3099
  let n = Date.now(), a = i?.ttlMs !== void 0 && i.ttlMs > 0 ? new Date(n + i.ttlMs) : null, o = p({
@@ -3111,14 +3116,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3111
3116
  });
3112
3117
  }),
3113
3118
  delete: (t) => n("delete", t, async () => {
3114
- let n = await Ta(e, t);
3119
+ let n = await Ea(e, t);
3115
3120
  if (n === null) return !1;
3116
- let r = !Ca(n, Date.now());
3121
+ let r = !wa(n, Date.now());
3117
3122
  return await e.delete(J, n.id), r;
3118
3123
  }),
3119
3124
  has: (t) => n("has", t, async () => {
3120
- let n = await Ta(e, t);
3121
- return n === null ? !1 : Ca(n, Date.now()) ? (await e.delete(J, n.id), !1) : !0;
3125
+ let n = await Ea(e, t);
3126
+ return n === null ? !1 : wa(n, Date.now()) ? (await e.delete(J, n.id), !1) : !0;
3122
3127
  }),
3123
3128
  list: (r) => n("list", "", async () => {
3124
3129
  let n = Date.now(), i = ie(C("expiresAt"), g("expiresAt", new Date(n))), a = r === "" ? i : t(s("key", r), i), o = await e.query({
@@ -3129,7 +3134,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3129
3134
  skip: void 0,
3130
3135
  projection: void 0
3131
3136
  }), c = [];
3132
- for (let e of o) Ca(e, n) || (r === "" || e.key.startsWith(r)) && c.push(e.key);
3137
+ for (let e of o) wa(e, n) || (r === "" || e.key.startsWith(r)) && c.push(e.key);
3133
3138
  return c;
3134
3139
  }),
3135
3140
  clear: () => n("clear", "", async () => {
@@ -3139,8 +3144,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3139
3144
  } });
3140
3145
  })
3141
3146
  };
3142
- }, Da = async ({ store: e, env: t = process.env }) => {
3143
- let n = (t.KV_BACKEND ?? "database").toLowerCase(), r = n === "redis" ? "redis" : n === "memory" ? "memory" : "database", i = r === "redis" ? Mt(t.KV_KEY_PREFIX ? { keyPrefix: t.KV_KEY_PREFIX } : {}).pipe(I.provide(At)) : r === "memory" ? jt() : I.succeed(kt, kt.of(Ea(e))), a = tt.make(Dt.Default.pipe(I.provide(i))), o = await a.runPromise(Dt);
3147
+ }, Oa = async ({ store: e, env: t = process.env }) => {
3148
+ let n = (t.KV_BACKEND ?? "database").toLowerCase(), r = n === "redis" ? "redis" : n === "memory" ? "memory" : "database", i = r === "redis" ? Mt(t.KV_KEY_PREFIX ? { keyPrefix: t.KV_KEY_PREFIX } : {}).pipe(I.provide(At)) : r === "memory" ? jt() : I.succeed(kt, kt.of(Da(e))), a = tt.make(Dt.Default.pipe(I.provide(i))), o = await a.runPromise(Dt);
3144
3149
  return {
3145
3150
  kv: {
3146
3151
  get: (e) => a.runPromise(o.get(e)).then((e) => it.getOrUndefined(e)),
@@ -3155,7 +3160,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3155
3160
  backend: r,
3156
3161
  dispose: () => a.dispose()
3157
3162
  };
3158
- }, Oa = {
3163
+ }, ka = {
3159
3164
  get: () => Promise.resolve(void 0),
3160
3165
  getOrElse: (e, t) => Promise.resolve(t()),
3161
3166
  set: () => Promise.resolve(),
@@ -3163,7 +3168,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3163
3168
  has: () => Promise.resolve(!1),
3164
3169
  list: () => Promise.resolve([]),
3165
3170
  clear: () => Promise.resolve()
3166
- }, ka = "_voltro_api_keys", Aa = (e) => ye("sha256").update(e, "utf8").digest("hex"), ja = (e = "voltro_") => `${e}${be(30).toString("base64url")}`, Ma = (e) => ({
3171
+ }, Aa = "_voltro_api_keys", ja = (e) => ye("sha256").update(e, "utf8").digest("hex"), Ma = (e = "voltro_") => `${e}${be(30).toString("base64url")}`, Na = (e) => ({
3167
3172
  id: e.id,
3168
3173
  name: e.name,
3169
3174
  keyPrefix: e.keyPrefix,
@@ -3176,18 +3181,18 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3176
3181
  createdBy: e.createdBy ?? null,
3177
3182
  onBehalfOf: e.onBehalfOf ?? null,
3178
3183
  ...e.metadata == null ? {} : { metadata: e.metadata }
3179
- }), Na = (e, t) => e.revokedAt === null && (e.expiresAt === null || e.expiresAt > t), Pa = (e, t = {}) => {
3184
+ }), Pa = (e, t) => e.revokedAt === null && (e.expiresAt === null || e.expiresAt > t), Fa = (e, t = {}) => {
3180
3185
  let n = t.prefix ?? "voltro_", r = t.usage, i = async (t) => {
3181
- let r = ja(n), i = p({
3186
+ let r = Ma(n), i = p({
3182
3187
  kind: "typeid",
3183
3188
  prefix: "apikey"
3184
- }, ka), a = t.scopes ?? [], o = t.expiresAt == null ? null : t.expiresAt instanceof Date ? t.expiresAt.getTime() : t.expiresAt;
3189
+ }, Aa), a = t.scopes ?? [], o = t.expiresAt == null ? null : t.expiresAt instanceof Date ? t.expiresAt.getTime() : t.expiresAt;
3185
3190
  return await e.insert({
3186
3191
  id: i,
3187
3192
  tenantId: t.tenantId ?? null,
3188
3193
  name: t.name,
3189
3194
  onBehalfOf: t.onBehalfOf ?? null,
3190
- hashedKey: Aa(r),
3195
+ hashedKey: ja(r),
3191
3196
  keyPrefix: r.slice(0, n.length + 6),
3192
3197
  scopes: a,
3193
3198
  lastUsedAt: null,
@@ -3206,7 +3211,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3206
3211
  };
3207
3212
  }, a = async (t, n = Date.now()) => {
3208
3213
  let i = await e.findByHash(t);
3209
- return !i || !Na(i, n) ? null : (r === void 0 ? await e.patch(i.id, { lastUsedAt: n }) : r.touch(i.id, n), {
3214
+ return !i || !Pa(i, n) ? null : (r === void 0 ? await e.patch(i.id, { lastUsedAt: n }) : r.touch(i.id, n), {
3210
3215
  id: i.id,
3211
3216
  tenantId: i.tenantId ?? "",
3212
3217
  createdBy: i.createdBy ?? null,
@@ -3218,7 +3223,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3218
3223
  return {
3219
3224
  issue: i,
3220
3225
  resolveByHash: a,
3221
- verify: (e, t) => a(Aa(e), t),
3226
+ verify: (e, t) => a(ja(e), t),
3222
3227
  revoke: async (t, n, r = Date.now()) => {
3223
3228
  let i = await e.findById(t);
3224
3229
  return !i || (i.tenantId ?? null) !== n ? !1 : (await e.patch(t, { revokedAt: r }), !0);
@@ -3234,9 +3239,9 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3234
3239
  ...a.metadata == null ? {} : { metadata: a.metadata }
3235
3240
  }));
3236
3241
  },
3237
- list: async (t) => (await e.listByTenant(t)).map(Ma)
3242
+ list: async (t) => (await e.listByTenant(t)).map(Na)
3238
3243
  };
3239
- }, Fa = () => {
3244
+ }, Ia = () => {
3240
3245
  let e = /* @__PURE__ */ new Map();
3241
3246
  return {
3242
3247
  insert: async (t) => {
@@ -3253,21 +3258,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3253
3258
  });
3254
3259
  }
3255
3260
  };
3256
- }, Ia = (e) => e == null ? null : e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : null, La = (e) => ({
3261
+ }, La = (e) => e == null ? null : e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : null, Ra = (e) => ({
3257
3262
  id: String(e.id),
3258
3263
  tenantId: e.tenantId ?? null,
3259
3264
  name: String(e.name),
3260
3265
  hashedKey: String(e.hashedKey),
3261
3266
  keyPrefix: String(e.keyPrefix),
3262
3267
  scopes: e.scopes ?? null,
3263
- lastUsedAt: Ia(e.lastUsedAt),
3264
- expiresAt: Ia(e.expiresAt),
3265
- revokedAt: Ia(e.revokedAt),
3268
+ lastUsedAt: La(e.lastUsedAt),
3269
+ expiresAt: La(e.expiresAt),
3270
+ revokedAt: La(e.revokedAt),
3266
3271
  createdBy: e.createdBy ?? null,
3267
3272
  onBehalfOf: e.onBehalfOf ?? null,
3268
- createdAt: Ia(e.createdAt) ?? 0,
3273
+ createdAt: La(e.createdAt) ?? 0,
3269
3274
  ...e.metadata == null ? {} : { metadata: e.metadata }
3270
- }), Ra = (e) => async (t, n) => {
3275
+ }), za = (e) => async (t, n) => {
3271
3276
  let r = await e.findById(t);
3272
3277
  if (r === null) return;
3273
3278
  let i = r.requestCount ?? 0, a = r.lastUsedAt ?? 0;
@@ -3275,9 +3280,9 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3275
3280
  requestCount: i + n.requests,
3276
3281
  lastUsedAt: Math.max(a, n.lastUsedAt)
3277
3282
  });
3278
- }, za = (e) => {
3283
+ }, Ba = (e) => {
3279
3284
  let t = async (t) => await e.query({
3280
- table: ka,
3285
+ table: Aa,
3281
3286
  predicate: t,
3282
3287
  order: [],
3283
3288
  take: void 0,
@@ -3295,33 +3300,33 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3295
3300
  };
3296
3301
  return {
3297
3302
  insert: async (t) => {
3298
- await e.insert(ka, n(t));
3303
+ await e.insert(Aa, n(t));
3299
3304
  },
3300
3305
  findByHash: async (e) => {
3301
3306
  let n = await t(d("hashedKey", e));
3302
- return n[0] ? La(n[0]) : null;
3307
+ return n[0] ? Ra(n[0]) : null;
3303
3308
  },
3304
3309
  findById: async (e) => {
3305
3310
  let n = await t(d("id", e));
3306
- return n[0] ? La(n[0]) : null;
3311
+ return n[0] ? Ra(n[0]) : null;
3307
3312
  },
3308
- listByTenant: async (e) => (await t(e === null ? void 0 : d("tenantId", e))).map(La).filter((t) => e === null || t.tenantId === e),
3313
+ listByTenant: async (e) => (await t(e === null ? void 0 : d("tenantId", e))).map(Ra).filter((t) => e === null || t.tenantId === e),
3309
3314
  patch: async (t, r) => {
3310
- await e.update(ka, t, n(r));
3315
+ await e.update(Aa, t, n(r));
3311
3316
  }
3312
3317
  };
3313
- }, Ba = (e, t = {}) => Nt({
3318
+ }, Va = (e, t = {}) => Nt({
3314
3319
  id: "voltro-apikey",
3315
3320
  ...t.prefix ? { prefix: t.prefix } : {},
3316
3321
  resolveKey: (t) => e.resolveByHash(t)
3317
- }), Va = (e) => {
3322
+ }), Ha = (e) => {
3318
3323
  let t = e.subject;
3319
3324
  return {
3320
3325
  id: t.id ?? null,
3321
3326
  tenantId: t.tenantId ?? null,
3322
3327
  scopes: t.scopes ?? []
3323
3328
  };
3324
- }, Ha = (e, t = "/v1/api-keys") => {
3329
+ }, Ua = (e, t = "/v1/api-keys") => {
3325
3330
  let n = z.Struct({
3326
3331
  id: z.String,
3327
3332
  name: z.String,
@@ -3362,7 +3367,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3362
3367
  keyPrefix: z.String
3363
3368
  }),
3364
3369
  handler: async (t, n) => {
3365
- let r = t.body, i = Va(n), a = new Set(i.scopes), o = (e) => a.has(we) || a.has(e), s = r.onBehalfOf === void 0 ? i.id : r.onBehalfOf;
3370
+ let r = t.body, i = Ha(n), a = new Set(i.scopes), o = (e) => a.has(we) || a.has(e), s = r.onBehalfOf === void 0 ? i.id : r.onBehalfOf;
3366
3371
  if (s === null) {
3367
3372
  if (!o(Te)) throw new Me({
3368
3373
  required: Te,
@@ -3407,7 +3412,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3407
3412
  guards: [xt(we)],
3408
3413
  input: z.Struct({}),
3409
3414
  output: z.Struct({ keys: z.Array(n) }),
3410
- handler: async (t, n) => ({ keys: [...await e.list(Va(n).tenantId)] })
3415
+ handler: async (t, n) => ({ keys: [...await e.list(Ha(n).tenantId)] })
3411
3416
  }),
3412
3417
  vt({
3413
3418
  method: "POST",
@@ -3416,42 +3421,42 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3416
3421
  guards: [xt(we)],
3417
3422
  input: z.Struct({ body: z.Struct({ id: z.String }) }),
3418
3423
  output: z.Struct({ ok: z.Boolean }),
3419
- handler: async (t, n) => ({ ok: await e.revoke(t.body.id, Va(n).tenantId) })
3424
+ handler: async (t, n) => ({ ok: await e.revoke(t.body.id, Ha(n).tenantId) })
3420
3425
  })
3421
3426
  ];
3422
- }, Ua = {
3427
+ }, Wa = {
3423
3428
  type: "anonymous",
3424
3429
  id: null,
3425
3430
  tenantId: null
3426
- }, Wa = class extends Ye.Tag("@voltro/EffectStore")() {}, Ga = (e, t) => (n) => n instanceof ei ? n : new ti({
3431
+ }, Ga = class extends Ye.Tag("@voltro/EffectStore")() {}, Ka = (e, t) => (n) => n instanceof ei ? n : new ti({
3427
3432
  operation: e,
3428
3433
  table: t,
3429
3434
  cause: String(n)
3430
- }), Ka = (e, t, n) => F.tryPromise({
3435
+ }), qa = (e, t, n) => F.tryPromise({
3431
3436
  try: n,
3432
- catch: Ga(e, t)
3433
- }), qa = (e) => I.succeed(Wa, {
3434
- query: ((t) => Ka("query", t.table, () => e.query(t))),
3435
- insert: (t, n) => Ka("insert", t, () => e.insert(t, n)),
3436
- update: (t, n, r) => Ka("update", t, () => e.update(t, n, r)),
3437
- delete: (t, n) => Ka("delete", t, () => e.delete(t, n)),
3438
- hardDelete: (t, n) => Ka("hardDelete", t, () => e.hardDelete(t, n))
3439
- }), Ja = (e) => ht.make(e.name, {
3437
+ catch: Ka(e, t)
3438
+ }), Ja = (e) => I.succeed(Ga, {
3439
+ query: ((t) => qa("query", t.table, () => e.query(t))),
3440
+ insert: (t, n) => qa("insert", t, () => e.insert(t, n)),
3441
+ update: (t, n, r) => qa("update", t, () => e.update(t, n, r)),
3442
+ delete: (t, n) => qa("delete", t, () => e.delete(t, n)),
3443
+ hardDelete: (t, n) => qa("hardDelete", t, () => e.hardDelete(t, n))
3444
+ }), Ya = (e) => ht.make(e.name, {
3440
3445
  payload: e.payloadSchema,
3441
3446
  success: Le,
3442
3447
  error: e.errorSchema
3443
- }), Ya = (e, t) => ({
3448
+ }), Xa = (e, t) => ({
3444
3449
  id: t,
3445
3450
  workflowName: e,
3446
3451
  executionId: t,
3447
3452
  status: "running"
3448
- }), Xa = Ya, Za = (e) => {
3453
+ }), Za = Xa, Qa = (e) => {
3449
3454
  let t = N.failureOption(e), n = t._tag === "Some" ? t.value : N.squash(e);
3450
3455
  return {
3451
3456
  tag: n && typeof n == "object" && "_tag" in n ? String(n._tag) : null,
3452
3457
  message: n?.message ?? String(n)
3453
3458
  };
3454
- }, Qa = (e, t, n) => {
3459
+ }, $a = (e, t, n) => {
3455
3460
  if (n === void 0) return {
3456
3461
  id: t,
3457
3462
  workflowName: e,
@@ -3477,7 +3482,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3477
3482
  workflowName: e,
3478
3483
  executionId: t,
3479
3484
  status: "failed",
3480
- error: Za(r.cause)
3485
+ error: Qa(r.cause)
3481
3486
  };
3482
3487
  }
3483
3488
  return {
@@ -3486,7 +3491,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3486
3491
  executionId: t,
3487
3492
  status: "running"
3488
3493
  };
3489
- }, $a = (e) => new Promise((t) => setTimeout(t, e)), eo = class extends Error {
3494
+ }, eo = (e) => new Promise((t) => setTimeout(t, e)), to = class extends Error {
3490
3495
  workflowName;
3491
3496
  missingFields;
3492
3497
  detail;
@@ -3495,7 +3500,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3495
3500
  let r = t.length > 0 ? ` missing required field(s): ${t.join(", ")}.` : "";
3496
3501
  super(`Workflow "${e}" was started with an invalid payload.${r} ${n}`), this.workflowName = e, this.missingFields = t, this.detail = n, this.name = "WorkflowPayloadError";
3497
3502
  }
3498
- }, to = (e) => {
3503
+ }, no = (e) => {
3499
3504
  let t = e.ast;
3500
3505
  if (!Array.isArray(t.propertySignatures)) return {
3501
3506
  required: [],
@@ -3506,10 +3511,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3506
3511
  required: n.filter((e) => !e.isOptional).map((e) => String(e.name)),
3507
3512
  optional: n.filter((e) => e.isOptional).map((e) => String(e.name))
3508
3513
  };
3509
- }, no = (e) => {
3514
+ }, ro = (e) => {
3510
3515
  let t = e.ast;
3511
3516
  return Array.isArray(t.propertySignatures) ? t.propertySignatures.filter((e) => !e.isOptional && typeof e.name == "string").map((e) => String(e.name)) : [];
3512
- }, ro = (e) => {
3517
+ }, io = (e) => {
3513
3518
  let t = new Map(e.workflows.map((e) => [e.definition.name, e.definition])), n = (e) => {
3514
3519
  let n = t.get(e);
3515
3520
  if (!n) {
@@ -3520,17 +3525,17 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3520
3525
  }, r = (e, t) => {
3521
3526
  let n = z.validateEither(e.payloadSchema)(t);
3522
3527
  if (n._tag === "Right") return;
3523
- let r = typeof t == "object" && t ? Object.keys(t) : [], i = no(e.payloadSchema).filter((e) => !r.includes(e));
3524
- throw new eo(e.name, i, wt.formatErrorSync(n.left));
3528
+ let r = typeof t == "object" && t ? Object.keys(t) : [], i = ro(e.payloadSchema).filter((e) => !r.includes(e));
3529
+ throw new to(e.name, i, wt.formatErrorSync(n.left));
3525
3530
  }, i = (e, t) => {
3526
3531
  let i = n(e);
3527
3532
  return r(i, t), i;
3528
3533
  }, a = async (t, r) => {
3529
3534
  let i = n(t);
3530
- return Qa(t, r, await e.runEffect(i.poll(r)));
3535
+ return $a(t, r, await e.runEffect(i.poll(r)));
3531
3536
  }, o = async () => e.runEffect(Pt()), s = async (t, n, r) => {
3532
3537
  let a = i(t, n), o;
3533
- return r?.callerContext !== void 0 && (o = await e.runEffect(a.executionId(n)), await e.rememberStartContext?.(t, o, r.callerContext)), r?.wait ? (await e.runEffect(a.execute(n)), Ya(t, o ?? await e.runEffect(a.executionId(n)))) : Ya(t, await e.runEffect(a.execute(n, { discard: !0 })));
3538
+ return r?.callerContext !== void 0 && (o = await e.runEffect(a.executionId(n)), await e.rememberStartContext?.(t, o, r.callerContext)), r?.wait ? (await e.runEffect(a.execute(n)), Xa(t, o ?? await e.runEffect(a.executionId(n)))) : Xa(t, await e.runEffect(a.execute(n, { discard: !0 })));
3534
3539
  };
3535
3540
  return {
3536
3541
  start: s,
@@ -3568,7 +3573,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3568
3573
  let e = await a(r, i);
3569
3574
  if (e.status === "succeeded" || e.status === "failed" || e.status === "cancelled") return e;
3570
3575
  if (o?.timeoutMs !== void 0 && Date.now() - s >= o.timeoutMs) throw Error(`Timed out waiting for workflow '${r}' run '${i}'`);
3571
- await $a(c);
3576
+ await eo(c);
3572
3577
  }
3573
3578
  }),
3574
3579
  cancel: async (t, r) => {
@@ -3606,22 +3611,22 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3606
3611
  return e.retry(t, n);
3607
3612
  }
3608
3613
  };
3609
- }, io = (e, t) => ({
3614
+ }, ao = (e, t) => ({
3610
3615
  ...e,
3611
3616
  start: async (n, r, i) => {
3612
3617
  if (i?.wait) throw Error("ctx.workflows.start(..., { wait: true }) is not allowed inside a mutation transaction; start the workflow and wait after commit.");
3613
3618
  let a = await e.executionId(n, r);
3614
- return t(() => e.start(n, r)), Ya(n, a);
3619
+ return t(() => e.start(n, r)), Xa(n, a);
3615
3620
  },
3616
3621
  child: async (n, r, i) => {
3617
3622
  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.");
3618
3623
  let a = await e.executionId(n, r);
3619
- return t(() => e.child(n, r, i)), Ya(n, a);
3624
+ return t(() => e.child(n, r, i)), Xa(n, a);
3620
3625
  },
3621
3626
  run: async () => {
3622
3627
  throw Error("ctx.workflows.run(...) is not allowed inside a mutation transaction; use ctx.workflows.start(...) so the workflow starts after commit.");
3623
3628
  }
3624
- }), ao = (e, t) => ({
3629
+ }), oo = (e, t) => ({
3625
3630
  ...e,
3626
3631
  start: (n, r, i) => e.start(n, r, {
3627
3632
  ...i,
@@ -3635,7 +3640,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3635
3640
  ...i,
3636
3641
  callerContext: t
3637
3642
  })
3638
- }), oo = (e) => {
3643
+ }), so = (e) => {
3639
3644
  let t = () => {
3640
3645
  let t = e();
3641
3646
  if (!t) throw Error("Workflow runtime is not ready yet");
@@ -3656,32 +3661,32 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3656
3661
  listRuns: ((e) => t().listRuns(e)),
3657
3662
  retry: (e, n) => t().retry(e, n)
3658
3663
  };
3659
- }, so = (e, t) => {
3664
+ }, co = (e, t) => {
3660
3665
  let n = {};
3661
- for (let r of e) n[r.definition.name] = (e) => (t ? F.promise(() => t.start(r.definition.name, e)) : r.definition.execute(e, { discard: !0 }).pipe(F.map((e) => Ya(r.definition.name, e)))).pipe(F.withSpan(`workflow.${r.definition.name}`, { attributes: { "framework.kind": "workflow" } }));
3666
+ for (let r of e) n[r.definition.name] = (e) => (t ? F.promise(() => t.start(r.definition.name, e)) : r.definition.execute(e, { discard: !0 }).pipe(F.map((e) => Xa(r.definition.name, e)))).pipe(F.withSpan(`workflow.${r.definition.name}`, { attributes: { "framework.kind": "workflow" } }));
3662
3667
  return n;
3663
- }, co = (e, t, n) => e.map((e) => e.definition.toLayer(((r, i) => {
3668
+ }, lo = (e, t, n) => e.map((e) => e.definition.toLayer(((r, i) => {
3664
3669
  let a = t.resolveStartContext?.(e.definition.name, i);
3665
3670
  return (a === void 0 ? F.succeed(void 0) : F.promise(() => Promise.resolve(a))).pipe(F.flatMap((a) => {
3666
3671
  let o = {
3667
3672
  ...a,
3668
- subject: a?.subject ?? Ua,
3673
+ subject: a?.subject ?? Wa,
3669
3674
  traceId: a?.traceId ?? "workflow-bootstrap"
3670
3675
  }, s = t.buildContext(o, {
3671
3676
  workflowName: e.definition.name,
3672
3677
  executionId: i,
3673
3678
  parentExecutionId: a?.parentExecutionId ?? null,
3674
3679
  parentClosePolicy: a?.parentClosePolicy ?? null
3675
- }), c = e.buildExecute(s), l = (n?.(e, c, o) ?? c)(r, i), u = I.succeed(Ne, o.subject), d = s?.store, f = d === void 0 ? l : F.provide(l, qa(d));
3680
+ }), c = e.buildExecute(s), l = (n?.(e, c, o) ?? c)(r, i), u = I.succeed(Ne, o.subject), d = s?.store, f = d === void 0 ? l : F.provide(l, Ja(d));
3676
3681
  return F.provide(f, u);
3677
3682
  }));
3678
- }))), lo = (e) => ({
3683
+ }))), uo = (e) => ({
3679
3684
  _tag: "workflowEventTrigger",
3680
3685
  ...e
3681
- }), uo = lo, fo = (e) => typeof e == "object" && !!e && e._tag === "workflowEventTrigger", po = () => {
3686
+ }), fo = uo, po = (e) => typeof e == "object" && !!e && e._tag === "workflowEventTrigger", mo = () => {
3682
3687
  let e = globalThis.crypto;
3683
3688
  return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`;
3684
- }, mo = (e) => `${e}_${po()}`, ho = (e) => e.id ?? `${e.event}->${e.workflow}`, go = O("_voltro_workflow_events", {
3689
+ }, ho = (e) => `${e}_${mo()}`, go = (e) => e.id ?? `${e.event}->${e.workflow}`, _o = O("_voltro_workflow_events", {
3685
3690
  id: y({ prefix: "wfe" }),
3686
3691
  name: k(),
3687
3692
  payload: T(),
@@ -3689,7 +3694,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3689
3694
  subject: T().nullable(),
3690
3695
  traceId: k().nullable(),
3691
3696
  occurredAt: A().default("now")
3692
- }).index(["name"]).index(["source"]).index(["occurredAt"]), _o = O("_voltro_workflow_event_deliveries", {
3697
+ }).index(["name"]).index(["source"]).index(["occurredAt"]), vo = O("_voltro_workflow_event_deliveries", {
3693
3698
  id: y({ prefix: "wfed" }),
3694
3699
  eventId: k(),
3695
3700
  eventName: k(),
@@ -3707,8 +3712,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3707
3712
  errorMessage: k().nullable(),
3708
3713
  createdAt: A().default("now"),
3709
3714
  completedAt: A().nullable()
3710
- }).index(["eventId"]).index(["eventName"]).index(["triggerId"]).index(["workflowName"]).index(["status"]), vo = (e) => {
3711
- let t = e.makeId ?? mo, n = /* @__PURE__ */ new Map();
3715
+ }).index(["eventId"]).index(["eventName"]).index(["triggerId"]).index(["workflowName"]).index(["status"]), yo = (e) => {
3716
+ let t = e.makeId ?? ho, n = /* @__PURE__ */ new Map();
3712
3717
  for (let t of e.triggers) {
3713
3718
  let e = n.get(t.event);
3714
3719
  e ? e.push(t) : n.set(t.event, [t]);
@@ -3749,7 +3754,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3749
3754
  });
3750
3755
  let p = o(n), m = [];
3751
3756
  for (let o of p) {
3752
- let s = ho(o), l = o.workflow, u;
3757
+ let s = go(o), l = o.workflow, u;
3753
3758
  try {
3754
3759
  let p = o.idempotencyKey?.(f) ?? `${c}:${s}`;
3755
3760
  if (o.filter && !await o.filter(f)) {
@@ -3852,10 +3857,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3852
3857
  triggered: m
3853
3858
  };
3854
3859
  } };
3855
- }, yo = M({ scope: "voltro:outbox" }), Y = "_voltro_outbox", bo = {
3860
+ }, bo = M({ scope: "voltro:outbox" }), Y = "_voltro_outbox", xo = {
3856
3861
  kind: "typeid",
3857
3862
  prefix: "obx"
3858
- }, xo = O(Y, {
3863
+ }, So = O(Y, {
3859
3864
  id: y({ prefix: "obx" }),
3860
3865
  effect: k(),
3861
3866
  payload: T(),
@@ -3873,10 +3878,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3873
3878
  resendRequestedBy: k().nullable(),
3874
3879
  resendReason: k().nullable(),
3875
3880
  resendCount: x()
3876
- }), So = "_voltro_outbox_attempts", Co = {
3881
+ }), Co = "_voltro_outbox_attempts", wo = {
3877
3882
  kind: "typeid",
3878
3883
  prefix: "obxa"
3879
- }, wo = O(So, {
3884
+ }, To = O(Co, {
3880
3885
  id: y({ prefix: "obxa" }),
3881
3886
  outboxId: k(),
3882
3887
  effect: k(),
@@ -3897,11 +3902,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3897
3902
  subjectId: k().nullable(),
3898
3903
  tenantId: k().nullable(),
3899
3904
  traceId: k().nullable()
3900
- }).index(["outboxId", "attempt"]).index(["startedAt"]).index(["outcome"]), To = (e) => {
3905
+ }).index(["outboxId", "attempt"]).index(["startedAt"]).index(["outcome"]), Eo = (e) => {
3901
3906
  if (e.effect.trim() === "") throw Error("defineOutboxHandler: `effect` must be a non-empty name");
3902
3907
  if (e.maxAttempts !== void 0 && e.maxAttempts < 1) throw Error(`defineOutboxHandler("${e.effect}"): maxAttempts must be >= 1`);
3903
3908
  return e;
3904
- }, Eo = 8, Do = (e) => ({
3909
+ }, Do = 8, Oo = (e) => ({
3905
3910
  enqueue: async (n, r, i) => {
3906
3911
  let a = (e.now ?? (() => /* @__PURE__ */ new Date()))(), o = i?.idempotencyKey;
3907
3912
  if (o !== void 0) {
@@ -3916,12 +3921,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3916
3921
  if (n !== void 0) return n.id;
3917
3922
  }
3918
3923
  let s = {
3919
- id: p(bo, Y),
3924
+ id: p(xo, Y),
3920
3925
  effect: n,
3921
3926
  payload: r,
3922
3927
  status: "pending",
3923
3928
  attempts: 0,
3924
- maxAttempts: i?.maxAttempts ?? Eo,
3929
+ maxAttempts: i?.maxAttempts ?? Do,
3925
3930
  nextAttemptAt: new Date(a.getTime() + (i?.delayMs ?? 0)),
3926
3931
  idempotencyKey: o ?? null,
3927
3932
  lastError: null,
@@ -3968,7 +3973,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3968
3973
  });
3969
3974
  } else e.nudge?.();
3970
3975
  }
3971
- }), Oo = (e) => Math.min(1e3 * 2 ** Math.max(0, e - 1), 5 * 6e4), ko = 50, Ao = (e, t) => e.length <= t ? e : `${e.slice(0, t)}… [clipped]`, jo = (e) => {
3976
+ }), ko = (e) => Math.min(1e3 * 2 ** Math.max(0, e - 1), 5 * 6e4), Ao = 50, jo = (e, t) => e.length <= t ? e : `${e.slice(0, t)}… [clipped]`, Mo = (e) => {
3972
3977
  if (e == null) return null;
3973
3978
  let t = typeof e == "object" && !Array.isArray(e) ? e : { value: e }, n;
3974
3979
  try {
@@ -3978,13 +3983,13 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3978
3983
  }
3979
3984
  return n.length > 8192 ? {
3980
3985
  truncated: !0,
3981
- preview: Ao(n, 8192)
3986
+ preview: jo(n, 8192)
3982
3987
  } : t;
3983
- }, Mo = async (e, t, n) => {
3988
+ }, No = async (e, t, n) => {
3984
3989
  let r = t.outboxRow, i = r.id, a = r.resendRequestedBy ?? null;
3985
3990
  try {
3986
- await e.insert(So, {
3987
- id: p(Co, So),
3991
+ await e.insert(Co, {
3992
+ id: p(wo, Co),
3988
3993
  outboxId: i,
3989
3994
  effect: r.effect,
3990
3995
  attempt: t.attempt,
@@ -3995,14 +4000,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
3995
4000
  startedAt: t.startedAt,
3996
4001
  finishedAt: t.finishedAt,
3997
4002
  durationMs: Math.max(0, t.finishedAt.getTime() - t.startedAt.getTime()),
3998
- error: t.error === null ? null : Ao(t.error, 4e3),
3999
- response: jo(t.response),
4003
+ error: t.error === null ? null : jo(t.error, 4e3),
4004
+ response: Mo(t.response),
4000
4005
  subjectId: r.subjectId ?? null,
4001
4006
  tenantId: r.tenantId ?? null,
4002
4007
  traceId: r.traceId ?? null
4003
4008
  });
4004
4009
  } catch (e) {
4005
- yo.warn("outbox: could not record delivery attempt (delivery itself is unaffected)", {
4010
+ bo.warn("outbox: could not record delivery attempt (delivery itself is unaffected)", {
4006
4011
  outboxId: i,
4007
4012
  attempt: t.attempt
4008
4013
  }, e);
@@ -4010,7 +4015,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4010
4015
  }
4011
4016
  if (!(t.attempt <= n)) try {
4012
4017
  let t = await e.query({
4013
- table: So,
4018
+ table: Co,
4014
4019
  predicate: d("outboxId", i),
4015
4020
  order: [{
4016
4021
  column: "attempt",
@@ -4020,11 +4025,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4020
4025
  skip: void 0,
4021
4026
  projection: ["id"]
4022
4027
  });
4023
- for (let r of t.slice(0, Math.max(0, t.length - n))) await e.delete(So, r.id);
4028
+ for (let r of t.slice(0, Math.max(0, t.length - n))) await e.delete(Co, r.id);
4024
4029
  } catch (e) {
4025
- yo.warn("outbox: attempt-log trim failed; the log may exceed its cap", { outboxId: i }, e);
4030
+ bo.warn("outbox: attempt-log trim failed; the log may exceed its cap", { outboxId: i }, e);
4026
4031
  }
4027
- }, No = async (e) => {
4032
+ }, Po = async (e) => {
4028
4033
  let n = (e.now ?? (() => /* @__PURE__ */ new Date()))(), r = await e.store.query({
4029
4034
  table: Y,
4030
4035
  predicate: t(d("status", "pending"), te("nextAttemptAt", n)),
@@ -4042,7 +4047,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4042
4047
  s++;
4043
4048
  continue;
4044
4049
  }
4045
- let u = t.attempts + 1, d = t.maxAttempts ?? Eo, f = /* @__PURE__ */ new Date(), p = e.attemptLogCap ?? 50;
4050
+ let u = t.attempts + 1, d = t.maxAttempts ?? Do, f = /* @__PURE__ */ new Date(), p = e.attemptLogCap ?? 50;
4046
4051
  try {
4047
4052
  let n = await l.handler({
4048
4053
  payload: t.payload ?? {},
@@ -4051,7 +4056,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4051
4056
  tenantId: t.tenantId ?? null,
4052
4057
  traceId: t.traceId ?? null
4053
4058
  });
4054
- await Mo(e.store, {
4059
+ await No(e.store, {
4055
4060
  outboxRow: t,
4056
4061
  attempt: u,
4057
4062
  outcome: "delivered",
@@ -4069,7 +4074,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4069
4074
  }), i++;
4070
4075
  } catch (i) {
4071
4076
  let s = i instanceof Error ? i.message : String(i), l = u >= d;
4072
- await Mo(e.store, {
4077
+ await No(e.store, {
4073
4078
  outboxRow: t,
4074
4079
  attempt: u,
4075
4080
  outcome: l ? "dead" : "failed",
@@ -4081,20 +4086,20 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4081
4086
  status: l ? "dead" : "pending",
4082
4087
  attempts: u,
4083
4088
  lastError: s,
4084
- nextAttemptAt: new Date(n.getTime() + Oo(u)),
4089
+ nextAttemptAt: new Date(n.getTime() + ko(u)),
4085
4090
  resendRequestedBy: null,
4086
4091
  resendReason: null
4087
- }), l ? (o++, yo.error("outbox effect dead-lettered after exhausting attempts", {
4092
+ }), l ? (o++, bo.error("outbox effect dead-lettered after exhausting attempts", {
4088
4093
  id: r,
4089
4094
  effect: c,
4090
4095
  attempts: u,
4091
4096
  maxAttempts: d
4092
- }, i)) : (a++, yo.warn("outbox delivery failed; will retry", {
4097
+ }, i)) : (a++, bo.warn("outbox delivery failed; will retry", {
4093
4098
  id: r,
4094
4099
  effect: c,
4095
4100
  attempt: u,
4096
4101
  maxAttempts: d,
4097
- retryInMs: Oo(u)
4102
+ retryInMs: ko(u)
4098
4103
  }));
4099
4104
  }
4100
4105
  }
@@ -4104,10 +4109,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4104
4109
  dead: o,
4105
4110
  skipped: s
4106
4111
  };
4107
- }, Po = M({ scope: "voltro:connections" }), X = "_voltro_connections", Fo = {
4112
+ }, Fo = M({ scope: "voltro:connections" }), X = "_voltro_connections", Io = {
4108
4113
  kind: "typeid",
4109
4114
  prefix: "conn"
4110
- }, Io = O(X, {
4115
+ }, Lo = O(X, {
4111
4116
  id: y({ prefix: "conn" }),
4112
4117
  connectionId: k(),
4113
4118
  subjectId: k(),
@@ -4130,10 +4135,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4130
4135
  metadata: T().nullable(),
4131
4136
  connectedAt: A(),
4132
4137
  updatedAt: A()
4133
- }).unique("bySubject", ["connectionId", "subjectId"]).index(["subjectId"]), Lo = "_voltro_connection_grants", Ro = {
4138
+ }).unique("bySubject", ["connectionId", "subjectId"]).index(["subjectId"]), Ro = "_voltro_connection_grants", zo = {
4134
4139
  kind: "typeid",
4135
4140
  prefix: "cgrant"
4136
- }, zo = O(Lo, {
4141
+ }, Bo = O(Ro, {
4137
4142
  id: y({ prefix: "cgrant" }),
4138
4143
  state: k().unique(),
4139
4144
  connectionId: k(),
@@ -4143,8 +4148,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4143
4148
  redirectTo: k(),
4144
4149
  createdAt: A(),
4145
4150
  expiresAt: A()
4146
- }).index(["expiresAt"]), Bo = /^[a-z][a-z0-9-]*$/, Vo = (e) => {
4147
- if (!Bo.test(e.id)) throw Error(`defineConnection: id "${e.id}" must be lowercase kebab-case (it becomes a URL path segment).`);
4151
+ }).index(["expiresAt"]), Vo = /^[a-z][a-z0-9-]*$/, Ho = (e) => {
4152
+ if (!Vo.test(e.id)) throw Error(`defineConnection: id "${e.id}" must be lowercase kebab-case (it becomes a URL path segment).`);
4148
4153
  if (e.kind === "oauth2") {
4149
4154
  for (let t of [
4150
4155
  "authorizeUrl",
@@ -4154,9 +4159,9 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4154
4159
  ]) if (typeof e[t] != "string" || e[t].length === 0) throw Error(`defineConnection("${e.id}"): \`${t}\` is required for kind 'oauth2'.`);
4155
4160
  }
4156
4161
  return e;
4157
- }, Ho = (e) => e.label ?? e.id, Uo = (e) => {
4162
+ }, Uo = (e) => e.label ?? e.id, Wo = (e) => {
4158
4163
  if (e.length !== 0 && q() === 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).`);
4159
- }, Wo = (e) => {
4164
+ }, Go = (e) => {
4160
4165
  let t = /* @__PURE__ */ new Map();
4161
4166
  for (let n of e) {
4162
4167
  if (t.has(n.id)) throw Error(`connections: duplicate connection id "${n.id}" — each *.connection.ts must declare a distinct id.`);
@@ -4166,14 +4171,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4166
4171
  get: (e) => t.get(e),
4167
4172
  list: () => [...t.values()]
4168
4173
  };
4169
- }, Go = (e) => {
4174
+ }, Ko = (e) => {
4170
4175
  if (e == null) return null;
4171
4176
  let t = e instanceof Date ? e : new Date(String(e));
4172
4177
  return Number.isNaN(t.getTime()) ? null : t;
4173
- }, Ko = (e) => Go(e)?.toISOString() ?? null, qo = (e) => String(e ?? "").split(" ").filter((e) => e.length > 0), Jo = (e, t) => t === void 0 ? {
4178
+ }, qo = (e) => Ko(e)?.toISOString() ?? null, Jo = (e) => String(e ?? "").split(" ").filter((e) => e.length > 0), Yo = (e, t) => t === void 0 ? {
4174
4179
  connectionId: e.id,
4175
4180
  kind: e.kind,
4176
- label: Ho(e),
4181
+ label: Uo(e),
4177
4182
  status: "disconnected",
4178
4183
  accountId: null,
4179
4184
  accountLabel: null,
@@ -4184,24 +4189,24 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4184
4189
  } : {
4185
4190
  connectionId: e.id,
4186
4191
  kind: e.kind,
4187
- label: Ho(e),
4192
+ label: Uo(e),
4188
4193
  status: String(t.status ?? "connected"),
4189
4194
  accountId: t.accountId ?? null,
4190
4195
  accountLabel: t.accountLabel ?? null,
4191
- scopes: qo(t.scopes),
4192
- expiresAt: Ko(t.expiresAt),
4196
+ scopes: Jo(t.scopes),
4197
+ expiresAt: qo(t.expiresAt),
4193
4198
  lastError: t.lastError ?? null,
4194
- connectedAt: Ko(t.connectedAt)
4195
- }, Yo = async (e, n, r) => (await e.query({
4199
+ connectedAt: qo(t.connectedAt)
4200
+ }, Xo = async (e, n, r) => (await e.query({
4196
4201
  table: X,
4197
4202
  predicate: t(d("connectionId", n), d("subjectId", r)),
4198
4203
  order: [],
4199
4204
  take: 1,
4200
4205
  skip: void 0,
4201
4206
  projection: void 0
4202
- }))[0], Xo = async (e) => {
4207
+ }))[0], Zo = async (e) => {
4203
4208
  let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), n = e.tokens.expiresAt === void 0 ? null : new Date(e.tokens.expiresAt), r = {
4204
- id: p(Fo, X),
4209
+ id: p(Io, X),
4205
4210
  connectionId: e.definition.id,
4206
4211
  subjectId: e.subjectId,
4207
4212
  tenantId: e.tenantId,
@@ -4219,8 +4224,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4219
4224
  connectedAt: t,
4220
4225
  updatedAt: t
4221
4226
  };
4222
- return Zo(e.store, r);
4223
- }, Zo = (e, t) => e.upsert(X, t, {
4227
+ return Qo(e.store, r);
4228
+ }, Qo = (e, t) => e.upsert(X, t, {
4224
4229
  conflictColumns: ["connectionId", "subjectId"],
4225
4230
  update: [
4226
4231
  "kind",
@@ -4236,10 +4241,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4236
4241
  "metadata",
4237
4242
  "updatedAt"
4238
4243
  ]
4239
- }), Qo = async (e, t, n) => {
4240
- let r = await Yo(e, t, n);
4244
+ }), $o = async (e, t, n) => {
4245
+ let r = await Xo(e, t, n);
4241
4246
  return r !== void 0 && e.delete(X, r.id);
4242
- }, $o = async (e, t, n) => {
4247
+ }, es = async (e, t, n) => {
4243
4248
  let r = await e.query({
4244
4249
  table: X,
4245
4250
  predicate: d("subjectId", n),
@@ -4248,9 +4253,9 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4248
4253
  skip: void 0,
4249
4254
  projection: void 0
4250
4255
  }), i = new Map(r.map((e) => [String(e.connectionId), e]));
4251
- return t.list().map((e) => Jo(e, i.get(e.id)));
4252
- }, es = (e, t) => globalThis.fetch(e, t), ts = async (e, t, n) => {
4253
- let r = e.fetchImpl ?? es, i, a;
4256
+ return t.list().map((e) => Yo(e, i.get(e.id)));
4257
+ }, ts = (e, t) => globalThis.fetch(e, t), ns = async (e, t, n) => {
4258
+ let r = e.fetchImpl ?? ts, i, a;
4254
4259
  try {
4255
4260
  let n = await r(e.tokenUrl, {
4256
4261
  method: "POST",
@@ -4290,62 +4295,62 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4290
4295
  ...Number.isFinite(o.expires_in) ? { expiresAt: n() + o.expires_in * 1e3 } : {},
4291
4296
  scopes: (o.scope ?? e.scopes?.join(" ") ?? "").split(" ").filter(Boolean)
4292
4297
  };
4293
- }, ns = (e, t, n = Date.now) => ts(e, {
4298
+ }, rs = (e, t, n = Date.now) => ns(e, {
4294
4299
  grant_type: "authorization_code",
4295
4300
  client_id: e.clientId,
4296
4301
  client_secret: e.clientSecret,
4297
4302
  code: t.code,
4298
4303
  redirect_uri: t.redirectUri,
4299
4304
  ...t.codeVerifier ? { code_verifier: t.codeVerifier } : {}
4300
- }, n), rs = (e, t, n = Date.now) => ts(e, {
4305
+ }, n), is = (e, t, n = Date.now) => ns(e, {
4301
4306
  grant_type: "refresh_token",
4302
4307
  client_id: e.clientId,
4303
4308
  client_secret: e.clientSecret,
4304
4309
  refresh_token: t
4305
- }, n), is = 6e4, as = 3e4, os = class extends Error {
4310
+ }, n), as = 6e4, os = 3e4, ss = class extends Error {
4306
4311
  connectionId;
4307
4312
  subjectId;
4308
4313
  _tag = "ConnectionNotConnected";
4309
4314
  constructor(e, t) {
4310
4315
  super(`connection "${e}" is not connected for this subject`), this.connectionId = e, this.subjectId = t, this.name = "ConnectionNotConnected";
4311
4316
  }
4312
- }, ss = (e) => new Promise((t) => {
4317
+ }, cs = (e) => new Promise((t) => {
4313
4318
  setTimeout(t, e);
4314
- }), cs = /* @__PURE__ */ new Map(), ls = (e, t) => `${e}${t}`, us = () => {
4315
- cs.clear();
4316
- }, ds = (e, t) => ({
4319
+ }), ls = /* @__PURE__ */ new Map(), us = (e, t) => `${e}${t}`, ds = () => {
4320
+ ls.clear();
4321
+ }, fs = (e, t) => ({
4317
4322
  connectionId: e.id,
4318
4323
  kind: e.kind,
4319
4324
  accessToken: Mr(String(t.accessToken)),
4320
- expiresAt: Go(t.expiresAt),
4321
- scopes: qo(t.scopes),
4325
+ expiresAt: Ko(t.expiresAt),
4326
+ scopes: Jo(t.scopes),
4322
4327
  accountId: t.accountId ?? null,
4323
4328
  accountLabel: t.accountLabel ?? null
4324
- }), fs = (e, t, n) => {
4325
- let r = Go(e.expiresAt);
4329
+ }), ps = (e, t, n) => {
4330
+ let r = Ko(e.expiresAt);
4326
4331
  return r !== null && r.getTime() - n < t;
4327
- }, ps = async (e) => {
4328
- let t = e.now ?? Date.now, { store: n, definition: r, subjectId: i } = e, a = await Yo(n, r.id, i);
4329
- if (a === void 0) throw new os(r.id, i);
4330
- if (r.kind === "pat" || !fs(a, r.refreshSkewMs ?? 6e4, t())) return ds(r, a);
4331
- let o = ls(r.id, i), s = cs.get(o);
4332
+ }, ms = async (e) => {
4333
+ let t = e.now ?? Date.now, { store: n, definition: r, subjectId: i } = e, a = await Xo(n, r.id, i);
4334
+ if (a === void 0) throw new ss(r.id, i);
4335
+ if (r.kind === "pat" || !ps(a, r.refreshSkewMs ?? 6e4, t())) return fs(r, a);
4336
+ let o = us(r.id, i), s = ls.get(o);
4332
4337
  if (s !== void 0) return s;
4333
- let c = ms({
4338
+ let c = hs({
4334
4339
  ...e,
4335
4340
  now: t,
4336
4341
  row: a
4337
4342
  }).finally(() => {
4338
- cs.delete(o);
4343
+ ls.delete(o);
4339
4344
  });
4340
- return cs.set(o, c), c;
4341
- }, ms = async (e) => {
4342
- let { store: n, subjectId: r, now: i } = e, a = e.definition, o = e.sleep ?? ss, s = a.refreshSkewMs ?? 6e4, c = e.row.id;
4345
+ return ls.set(o, c), c;
4346
+ }, hs = async (e) => {
4347
+ let { store: n, subjectId: r, now: i } = e, a = e.definition, o = e.sleep ?? cs, s = a.refreshSkewMs ?? 6e4, c = e.row.id;
4343
4348
  if (await n.updateMany("_voltro_connections", { refreshLockedUntil: new Date(i() + 3e4) }, { where: t(d("id", c), te("refreshLockedUntil", new Date(i()))) }) === 0) {
4344
4349
  for (let e = 0; e < 10; e++) {
4345
4350
  await o(200);
4346
- let e = await Yo(n, a.id, r);
4347
- if (e === void 0) throw new os(a.id, r);
4348
- if (!fs(e, s, i())) return ds(a, e);
4351
+ let e = await Xo(n, a.id, r);
4352
+ if (e === void 0) throw new ss(a.id, r);
4353
+ if (!ps(e, s, i())) return fs(a, e);
4349
4354
  }
4350
4355
  throw new j({
4351
4356
  connectionId: a.id,
@@ -4366,7 +4371,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4366
4371
  });
4367
4372
  let u;
4368
4373
  try {
4369
- u = await rs(a, Mr(String(l)), i);
4374
+ u = await is(a, Mr(String(l)), i);
4370
4375
  } catch (e) {
4371
4376
  let t = e instanceof j ? e : new j({
4372
4377
  connectionId: a.id,
@@ -4383,7 +4388,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4383
4388
  refreshToken: null,
4384
4389
  expiresAt: null
4385
4390
  }
4386
- }), Po.warn("connection refresh failed", {
4391
+ }), Fo.warn("connection refresh failed", {
4387
4392
  connectionId: a.id,
4388
4393
  transient: t.transient,
4389
4394
  reason: t.reason
@@ -4399,32 +4404,32 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4399
4404
  refreshLockedUntil: /* @__PURE__ */ new Date(0),
4400
4405
  updatedAt: new Date(i())
4401
4406
  };
4402
- return ds(a, await n.update(X, c, f) ?? {
4407
+ return fs(a, await n.update(X, c, f) ?? {
4403
4408
  ...e.row,
4404
4409
  ...f
4405
4410
  });
4406
- }, hs = (e = 32) => {
4411
+ }, gs = (e = 32) => {
4407
4412
  let t = new Uint8Array(e);
4408
4413
  return globalThis.crypto.getRandomValues(t), Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
4409
- }, gs = (e) => {
4414
+ }, _s = (e) => {
4410
4415
  let t = "";
4411
4416
  for (let n of e) t += String.fromCharCode(n);
4412
4417
  return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
4413
- }, _s = async (e) => {
4418
+ }, vs = async (e) => {
4414
4419
  let t = await globalThis.crypto.subtle.digest("SHA-256", new TextEncoder().encode(e));
4415
- return gs(new Uint8Array(t));
4416
- }, vs = 10 * 6e4, ys = (e) => `/_voltro/connections/${e}/callback`, bs = (e) => e === void 0 || e.length === 0 || !e.startsWith("/") || e.startsWith("//") || e.startsWith("/\\") ? "/" : e, xs = (e, t) => e.redirectUri ?? `${t.replace(/\/+$/, "")}${ys(e.id)}`, Ss = async (e) => {
4417
- let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), { definition: n } = e, r = hs(), i = n.pkce === !1 ? null : hs(48), a = xs(n, e.publicUrl);
4418
- await e.store.insert(Lo, {
4419
- id: p(Ro, Lo),
4420
+ return _s(new Uint8Array(t));
4421
+ }, ys = 10 * 6e4, bs = (e) => `/_voltro/connections/${e}/callback`, xs = (e) => e === void 0 || e.length === 0 || !e.startsWith("/") || e.startsWith("//") || e.startsWith("/\\") ? "/" : e, Ss = (e, t) => e.redirectUri ?? `${t.replace(/\/+$/, "")}${bs(e.id)}`, Cs = async (e) => {
4422
+ let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), { definition: n } = e, r = gs(), i = n.pkce === !1 ? null : gs(48), a = Ss(n, e.publicUrl);
4423
+ await e.store.insert(Ro, {
4424
+ id: p(zo, Ro),
4420
4425
  state: r,
4421
4426
  connectionId: n.id,
4422
4427
  subjectId: e.subjectId,
4423
4428
  tenantId: e.tenantId,
4424
4429
  codeVerifier: i === null ? null : jr(i),
4425
- redirectTo: bs(e.redirectTo),
4430
+ redirectTo: xs(e.redirectTo),
4426
4431
  createdAt: t,
4427
- expiresAt: new Date(t.getTime() + vs)
4432
+ expiresAt: new Date(t.getTime() + ys)
4428
4433
  });
4429
4434
  let o = new URLSearchParams({
4430
4435
  response_type: "code",
@@ -4434,15 +4439,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4434
4439
  ...n.scopes && n.scopes.length > 0 ? { scope: n.scopes.join(" ") } : {},
4435
4440
  ...n.authorizeParams ?? {}
4436
4441
  });
4437
- i !== null && (o.set("code_challenge", await _s(i)), o.set("code_challenge_method", "S256"));
4442
+ i !== null && (o.set("code_challenge", await vs(i)), o.set("code_challenge_method", "S256"));
4438
4443
  let s = n.authorizeUrl.includes("?") ? "&" : "?";
4439
4444
  return {
4440
4445
  authorizeUrl: `${n.authorizeUrl}${s}${o.toString()}`,
4441
4446
  state: r
4442
4447
  };
4443
- }, Cs = async (e) => {
4448
+ }, ws = async (e) => {
4444
4449
  let t = (e.now ?? (() => /* @__PURE__ */ new Date()))(), n = (await e.store.query({
4445
- table: Lo,
4450
+ table: Ro,
4446
4451
  predicate: d("state", e.state),
4447
4452
  order: [],
4448
4453
  take: 1,
@@ -4454,8 +4459,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4454
4459
  reason: "unknown or already-used handshake state",
4455
4460
  transient: !1
4456
4461
  });
4457
- await e.store.delete(Lo, n.id);
4458
- let r = String(n.connectionId), i = Go(n.expiresAt);
4462
+ await e.store.delete(Ro, n.id);
4463
+ let r = String(n.connectionId), i = Ko(n.expiresAt);
4459
4464
  if (i !== null && i.getTime() < t.getTime()) throw new j({
4460
4465
  connectionId: r,
4461
4466
  reason: "handshake expired — start again",
@@ -4467,17 +4472,17 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4467
4472
  reason: "no oauth2 connection is declared under that id",
4468
4473
  transient: !1
4469
4474
  });
4470
- let o = n.codeVerifier === null || n.codeVerifier === void 0 ? null : Mr(String(n.codeVerifier)), s = await ns(a, {
4475
+ let o = n.codeVerifier === null || n.codeVerifier === void 0 ? null : Mr(String(n.codeVerifier)), s = await rs(a, {
4471
4476
  code: e.code,
4472
- redirectUri: xs(a, e.publicUrl),
4477
+ redirectUri: Ss(a, e.publicUrl),
4473
4478
  codeVerifier: o
4474
4479
  }, () => t.getTime()), c = a.identify === void 0 ? void 0 : await a.identify(s).catch((e) => {
4475
- Po.warn("connection identify failed; storing without account details", {
4480
+ Fo.warn("connection identify failed; storing without account details", {
4476
4481
  connectionId: r,
4477
4482
  reason: String(e)
4478
4483
  });
4479
4484
  });
4480
- return await Xo({
4485
+ return await Zo({
4481
4486
  store: e.store,
4482
4487
  definition: a,
4483
4488
  subjectId: String(n.subjectId),
@@ -4487,11 +4492,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4487
4492
  now: () => t
4488
4493
  }), {
4489
4494
  connectionId: r,
4490
- redirectTo: bs(String(n.redirectTo ?? "/"))
4495
+ redirectTo: xs(String(n.redirectTo ?? "/"))
4491
4496
  };
4492
- }, ws = async (e, t = /* @__PURE__ */ new Date()) => {
4497
+ }, Ts = async (e, t = /* @__PURE__ */ new Date()) => {
4493
4498
  let n = await e.query({
4494
- table: Lo,
4499
+ table: Ro,
4495
4500
  predicate: te("expiresAt", t),
4496
4501
  order: [],
4497
4502
  take: void 0,
@@ -4500,27 +4505,27 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4500
4505
  }), r = 0;
4501
4506
  for (let t of n) await e.delete("_voltro_connection_grants", t.id) && r++;
4502
4507
  return r;
4503
- }, Ts, Es = (e) => {
4504
- Ts = e;
4505
- }, Ds = () => Ts, Os = (e, t) => {
4506
- let n = Ts;
4508
+ }, Es, Ds = (e) => {
4509
+ Es = e;
4510
+ }, Os = () => Es, ks = (e, t) => {
4511
+ let n = Es;
4507
4512
  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);
4508
- }, ks = (e) => async (t, n) => {
4513
+ }, As = (e) => async (t, n) => {
4509
4514
  let r = e.registry.get(n);
4510
4515
  if (r === void 0) throw Error(`connection "${n}" is not declared. Declared: ${e.registry.list().map((e) => e.id).join(", ") || "(none)"}.`);
4511
4516
  let i = t.id ?? null;
4512
- if (i === null || i === "") throw new os(n, "<anonymous>");
4513
- return ps({
4517
+ if (i === null || i === "") throw new ss(n, "<anonymous>");
4518
+ return ms({
4514
4519
  store: e.store,
4515
4520
  definition: r,
4516
4521
  subjectId: i
4517
4522
  });
4518
- }, As = (e) => {
4523
+ }, js = (e) => {
4519
4524
  let t = e.subject.id ?? null, n = async (n) => {
4520
4525
  let r = e.registry.get(n);
4521
4526
  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)"}.`);
4522
- if (t === null || t === "") throw new os(n, "<anonymous>");
4523
- return ps({
4527
+ if (t === null || t === "") throw new ss(n, "<anonymous>");
4528
+ return ms({
4524
4529
  store: e.store,
4525
4530
  definition: r,
4526
4531
  subjectId: t
@@ -4532,7 +4537,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4532
4537
  try {
4533
4538
  return await n(e);
4534
4539
  } catch (e) {
4535
- if (e instanceof os) return null;
4540
+ if (e instanceof ss) return null;
4536
4541
  throw e;
4537
4542
  }
4538
4543
  },
@@ -4547,17 +4552,17 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4547
4552
  expiresAt: null,
4548
4553
  lastError: null,
4549
4554
  connectedAt: null
4550
- })) : $o(e.store, e.registry, t)
4555
+ })) : es(e.store, e.registry, t)
4551
4556
  };
4552
- }, js = (e, t) => {
4557
+ }, Ms = (e, t) => {
4553
4558
  let n = e.request?.subject?.id ?? null;
4554
4559
  if (n === null || n === "") throw new je({ connectionId: t });
4555
4560
  return n;
4556
- }, Ms = (e, t) => {
4561
+ }, Ns = (e, t) => {
4557
4562
  let n = e.registry.get(t);
4558
4563
  if (n === void 0) throw new Ae({ connectionId: t });
4559
4564
  return n;
4560
- }, Ns = (e) => async (t, n) => {
4565
+ }, Ps = (e) => async (t, n) => {
4561
4566
  let r = n.request?.subject?.id ?? null;
4562
4567
  return r === null || r === "" ? e.registry.list().map((e) => ({
4563
4568
  connectionId: e.id,
@@ -4570,15 +4575,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4570
4575
  expiresAt: null,
4571
4576
  lastError: null,
4572
4577
  connectedAt: null
4573
- })) : $o(n.store, e.registry, r);
4574
- }, Ps = (e) => async (t, n) => {
4575
- let r = Ms(e, t.connectionId), i = js(n, t.connectionId);
4578
+ })) : es(n.store, e.registry, r);
4579
+ }, Fs = (e) => async (t, n) => {
4580
+ let r = Ns(e, t.connectionId), i = Ms(n, t.connectionId);
4576
4581
  if (r.kind !== "oauth2") throw new ke({
4577
4582
  connectionId: t.connectionId,
4578
4583
  expected: "oauth2",
4579
4584
  actual: r.kind
4580
4585
  });
4581
- return Ss({
4586
+ return Cs({
4582
4587
  store: n.store,
4583
4588
  definition: r,
4584
4589
  subjectId: i,
@@ -4586,8 +4591,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4586
4591
  publicUrl: e.publicUrl,
4587
4592
  ...t.redirectTo === void 0 ? {} : { redirectTo: t.redirectTo }
4588
4593
  });
4589
- }, Fs = (e) => async (t, n) => {
4590
- let r = Ms(e, t.connectionId), i = js(n, t.connectionId);
4594
+ }, Is = (e) => async (t, n) => {
4595
+ let r = Ns(e, t.connectionId), i = Ms(n, t.connectionId);
4591
4596
  if (r.kind !== "pat") throw new ke({
4592
4597
  connectionId: t.connectionId,
4593
4598
  expected: "pat",
@@ -4609,7 +4614,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4609
4614
  transient: !1
4610
4615
  });
4611
4616
  }
4612
- return await Xo({
4617
+ return await Zo({
4613
4618
  store: n.store,
4614
4619
  definition: r,
4615
4620
  subjectId: i,
@@ -4620,20 +4625,20 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4620
4625
  },
4621
4626
  ...o === void 0 ? {} : { account: o }
4622
4627
  }), { ok: !0 };
4623
- }, Is = (e) => async (t, n) => {
4624
- Ms(e, t.connectionId);
4625
- let r = js(n, t.connectionId);
4626
- return { ok: await Qo(n.store, t.connectionId, r) };
4627
- }, Ls = "admin:full", Rs = class extends z.TaggedError()("AccessDenied", {
4628
+ }, Ls = (e) => async (t, n) => {
4629
+ Ns(e, t.connectionId);
4630
+ let r = Ms(n, t.connectionId);
4631
+ return { ok: await $o(n.store, t.connectionId, r) };
4632
+ }, Rs = "admin:full", zs = class extends z.TaggedError()("AccessDenied", {
4628
4633
  action: z.String,
4629
4634
  resourceType: z.String,
4630
4635
  resourceId: z.String
4631
- }) {}, zs = /* @__PURE__ */ new Map(), Bs = (e) => {
4636
+ }) {}, Bs = /* @__PURE__ */ new Map(), Vs = (e) => {
4632
4637
  if (typeof e.resourceType != "string" || e.resourceType.length === 0) throw Error("defineResourcePolicy: a non-empty `resourceType` is required");
4633
4638
  if (e.actions === void 0 || Object.keys(e.actions).length === 0) throw Error(`resource policy '${e.resourceType}': at least one action is required`);
4634
- if (zs.has(e.resourceType)) throw Error(`resource policy '${e.resourceType}' is already registered — types must be unique`);
4635
- return zs.set(e.resourceType, e), e;
4636
- }, Vs = (e) => zs.get(e), Hs = () => [...zs.values()], Us = () => zs.clear(), Ws = () => Hs().map((e) => {
4639
+ if (Bs.has(e.resourceType)) throw Error(`resource policy '${e.resourceType}' is already registered — types must be unique`);
4640
+ return Bs.set(e.resourceType, e), e;
4641
+ }, Hs = (e) => Bs.get(e), Us = () => [...Bs.values()], Ws = () => Bs.clear(), Gs = () => Us().map((e) => {
4637
4642
  let t = /* @__PURE__ */ new Set();
4638
4643
  for (let n of Object.values(e.actions)) for (let e of n) t.add(e);
4639
4644
  for (let [n, r] of Object.entries(e.implies ?? {})) {
@@ -4646,7 +4651,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4646
4651
  relations: [...t],
4647
4652
  implies: e.implies ?? {}
4648
4653
  };
4649
- }), Gs = (e, t) => {
4654
+ }), Ks = (e, t) => {
4650
4655
  let n = new Set(e);
4651
4656
  if (t === void 0) return n;
4652
4657
  let r = [...e];
@@ -4655,37 +4660,37 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4655
4660
  for (let i of t[e] ?? []) n.has(i) || (n.add(i), r.push(i));
4656
4661
  }
4657
4662
  return n;
4658
- }, Ks = (e, t, n, r) => e.id === null ? /* @__PURE__ */ new Set() : Gs(n.filter((n) => n.subjectId === e.id && n.resourceType === t.type && n.resourceId === t.id).map((e) => e.relation), r.implies), qs = (e, t, n, r) => {
4663
+ }, qs = (e, t, n, r) => e.id === null ? /* @__PURE__ */ new Set() : Ks(n.filter((n) => n.subjectId === e.id && n.resourceType === t.type && n.resourceId === t.id).map((e) => e.relation), r.implies), Js = (e, t, n, r) => {
4659
4664
  if (e.scopes?.includes("admin:full")) return !0;
4660
4665
  if (e.id === null || n.tenantId != null && e.tenantId !== n.tenantId) return !1;
4661
4666
  let i = r.policy.actions[t];
4662
4667
  if (i === void 0 || i.length === 0) return !1;
4663
- let a = Ks(e, n, r.tuples, r.policy);
4668
+ let a = qs(e, n, r.tuples, r.policy);
4664
4669
  return i.some((e) => a.has(e));
4665
- }, Js = (e, t, n, r) => {
4666
- if (!qs(e, t, n, r)) throw new Rs({
4670
+ }, Ys = (e, t, n, r) => {
4671
+ if (!Js(e, t, n, r)) throw new zs({
4667
4672
  action: t,
4668
4673
  resourceType: n.type,
4669
4674
  resourceId: n.id
4670
4675
  });
4671
- }, Ys = (e, t, n, r, i) => r.filter((r) => qs(e, t, {
4676
+ }, Xs = (e, t, n, r, i) => r.filter((r) => Js(e, t, {
4672
4677
  type: n,
4673
4678
  id: r.id,
4674
4679
  ...r.tenantId === void 0 ? {} : { tenantId: r.tenantId }
4675
- }, i)), Xs = (e, t) => {
4680
+ }, i)), Zs = (e, t) => {
4676
4681
  let n = new Set(t.map((e) => e.id));
4677
4682
  return e.filter((e) => !n.has(e.id)).map((e) => e.id);
4678
- }, Zs = M({ scope: "voltro:policy" }), Qs, $s = (e) => {
4679
- Qs = e;
4680
- }, ec = () => Qs, tc = () => {
4683
+ }, Qs = M({ scope: "voltro:policy" }), $s, ec = (e) => {
4684
+ $s = e;
4685
+ }, tc = () => $s, nc = () => {
4681
4686
  Ge((e) => F.gen(function* () {
4682
- let t = Vs(e.resourceType);
4683
- if (t === void 0) return Zs.warn("policy guard denied — no resource policy registered for this type", {
4687
+ let t = Hs(e.resourceType);
4688
+ if (t === void 0) return Qs.warn("policy guard denied — no resource policy registered for this type", {
4684
4689
  resourceType: e.resourceType,
4685
4690
  action: e.action
4686
4691
  }), !1;
4687
- let n = Qs;
4688
- if (n === void 0) return Zs.warn("policy guard denied — no tuple source registered (call setTupleSource at boot)", {
4692
+ let n = $s;
4693
+ if (n === void 0) return Qs.warn("policy guard denied — no tuple source registered (call setTupleSource at boot)", {
4689
4694
  resourceType: e.resourceType,
4690
4695
  action: e.action
4691
4696
  }), !1;
@@ -4696,11 +4701,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4696
4701
  resourceId: e.resourceId
4697
4702
  }),
4698
4703
  catch: (e) => e
4699
- }).pipe(F.catchAll((t) => (Zs.error("policy guard denied — tuple source failed", {
4704
+ }).pipe(F.catchAll((t) => (Qs.error("policy guard denied — tuple source failed", {
4700
4705
  resourceType: e.resourceType,
4701
4706
  resourceId: e.resourceId
4702
4707
  }, t), F.succeed([])))), i = e.subject;
4703
- return qs({
4708
+ return Js({
4704
4709
  id: e.subject.id,
4705
4710
  tenantId: i.tenantId ?? null,
4706
4711
  ...i.scopes === void 0 ? {} : { scopes: i.scopes }
@@ -4713,10 +4718,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4713
4718
  tuples: r
4714
4719
  });
4715
4720
  }));
4716
- }, nc = (e) => {
4717
- Promise.resolve().then(e);
4718
4721
  }, rc = (e) => {
4719
- let t = e.schedule ?? nc, n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = (e, t) => `${e}${t}`, a = async (t) => {
4722
+ Promise.resolve().then(e);
4723
+ }, ic = (e) => {
4724
+ let t = e.schedule ?? rc, n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = (e, t) => `${e}${t}`, a = async (t) => {
4720
4725
  let a = r.get(t);
4721
4726
  if (a === void 0) return;
4722
4727
  r.delete(t);
@@ -4762,23 +4767,23 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4762
4767
  load: async (e, t) => (await o(e, [t]))[0] ?? null,
4763
4768
  loadMany: (e, t) => o(e, t)
4764
4769
  };
4765
- }, ic = I.effect(lt.HttpClient, F.map(lt.HttpClient, (e) => e.pipe(lt.mapRequestEffect((e) => F.currentSpan.pipe(F.map((t) => e.headers.traceparent === void 0 ? ut.setHeader(e, "traceparent", yr({
4770
+ }, ac = I.effect(lt.HttpClient, F.map(lt.HttpClient, (e) => e.pipe(lt.mapRequestEffect((e) => F.currentSpan.pipe(F.map((t) => e.headers.traceparent === void 0 ? ut.setHeader(e, "traceparent", yr({
4766
4771
  traceId: t.traceId,
4767
4772
  spanId: t.spanId,
4768
4773
  sampled: t.sampled
4769
- })) : e), F.catchAll(() => F.succeed(e))))))), ac = class extends Error {
4774
+ })) : e), F.catchAll(() => F.succeed(e))))))), oc = class extends Error {
4770
4775
  url;
4771
4776
  reason;
4772
4777
  _tag = "SsrfBlockedError";
4773
4778
  constructor(e, t) {
4774
4779
  super(`SSRF: blocked outbound request to ${e} — ${t}. If this target is intentional, add its host to \`http.allowHosts\` in app.config.ts.`), this.url = e, this.reason = t, this.name = "SsrfBlockedError";
4775
4780
  }
4776
- }, oc = (e, t) => e === 0 || e === 10 || e === 127 || e === 100 && t >= 64 && t <= 127 || e === 169 && t === 254 || e === 172 && t >= 16 && t <= 31 || e === 192 && t === 168 || e === 198 && (t === 18 || t === 19) || e >= 224, sc = (e) => e === "::" || e === "::1" || e.startsWith("fc") || e.startsWith("fd") || e.startsWith("fe80") || e.startsWith("::ffff:"), cc = (e, t, n) => n.some((n) => {
4781
+ }, sc = (e, t) => e === 0 || e === 10 || e === 127 || e === 100 && t >= 64 && t <= 127 || e === 169 && t === 254 || e === 172 && t >= 16 && t <= 31 || e === 192 && t === 168 || e === 198 && (t === 18 || t === 19) || e >= 224, cc = (e) => e === "::" || e === "::1" || e.startsWith("fc") || e.startsWith("fd") || e.startsWith("fe80") || e.startsWith("::ffff:"), lc = (e, t, n) => n.some((n) => {
4777
4782
  let r = n.trim().toLowerCase();
4778
4783
  if (r === "") return !1;
4779
4784
  let i = t === "" ? e : `${e}:${t}`;
4780
4785
  return r === e || r === i ? !0 : r.startsWith("*.") ? e.endsWith(r.slice(1)) : !1;
4781
- }), lc = (e, t = {}) => {
4786
+ }), uc = (e, t = {}) => {
4782
4787
  let n;
4783
4788
  try {
4784
4789
  n = new URL(e);
@@ -4787,25 +4792,25 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4787
4792
  }
4788
4793
  if (n.protocol !== "http:" && n.protocol !== "https:") return `blocked scheme "${n.protocol}"`;
4789
4794
  let r = n.hostname.replace(/^\[|\]$/g, "").toLowerCase();
4790
- if (cc(r, n.port, t.allowHosts ?? [])) return null;
4795
+ if (lc(r, n.port, t.allowHosts ?? [])) return null;
4791
4796
  if (r === "localhost" || r.endsWith(".localhost") || r.endsWith(".internal") || r.endsWith(".local")) return `blocked host "${r}"`;
4792
4797
  let i = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(r);
4793
4798
  if (i) {
4794
4799
  let e = Number(i[1]), t = Number(i[2]);
4795
- return e > 255 || t > 255 || Number(i[3]) > 255 || Number(i[4]) > 255 ? "malformed ipv4 literal" : oc(e, t) ? `blocked private/reserved address ${r}` : null;
4800
+ return e > 255 || t > 255 || Number(i[3]) > 255 || Number(i[4]) > 255 ? "malformed ipv4 literal" : sc(e, t) ? `blocked private/reserved address ${r}` : null;
4796
4801
  }
4797
4802
  if (r.includes(":")) {
4798
4803
  let e = /^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.exec(r);
4799
- return e ? lc(`${n.protocol}//${e[1]}`, t) : sc(r) ? `blocked private/reserved address ${r}` : null;
4804
+ return e ? uc(`${n.protocol}//${e[1]}`, t) : cc(r) ? `blocked private/reserved address ${r}` : null;
4800
4805
  }
4801
4806
  return null;
4802
- }, uc = (e = {}) => I.effect(lt.HttpClient, F.map(lt.HttpClient, (t) => {
4807
+ }, dc = (e = {}) => I.effect(lt.HttpClient, F.map(lt.HttpClient, (t) => {
4803
4808
  let n = lt.transform(t, (t, n) => F.suspend(() => {
4804
- let r = lc(n.url, e);
4805
- return r === null ? t : F.die(new ac(n.url, r));
4809
+ let r = uc(n.url, e);
4810
+ return r === null ? t : F.die(new oc(n.url, r));
4806
4811
  }));
4807
4812
  return lt.followRedirects(n, e.maxRedirects ?? 5);
4808
- })), dc = (e) => {
4813
+ })), fc = (e) => {
4809
4814
  let t = e.now ?? Date.now, n = e.intervalMs ?? 3e4, r = e.maxPending ?? 500, i = /* @__PURE__ */ new Map(), a = !1, o = async () => {
4810
4815
  if (i.size === 0) return;
4811
4816
  let t = i;
@@ -4834,7 +4839,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4834
4839
  },
4835
4840
  pending: () => i.size
4836
4841
  };
4837
- }, fc = "voltro/audit", pc = "voltro/softDelete", mc = "voltro/tenant", hc = (e) => {
4842
+ }, pc = "voltro/audit", mc = "voltro/softDelete", hc = "voltro/tenant", gc = (e) => {
4838
4843
  let t = /* @__PURE__ */ new Map();
4839
4844
  for (let n of e) {
4840
4845
  let e = /* @__PURE__ */ new Set();
@@ -4878,16 +4883,16 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4878
4883
  return !1;
4879
4884
  },
4880
4885
  idScheme: (e) => t.get(e)?.idScheme,
4881
- defaultFactories: (e) => t.get(e)?.defaultFactories ?? gc,
4882
- computedFields: (e) => t.get(e)?.computedFields ?? _c,
4883
- generatedColumns: (e) => t.get(e)?.generatedColumns ?? vc,
4886
+ defaultFactories: (e) => t.get(e)?.defaultFactories ?? _c,
4887
+ computedFields: (e) => t.get(e)?.computedFields ?? vc,
4888
+ generatedColumns: (e) => t.get(e)?.generatedColumns ?? yc,
4884
4889
  insertSchema: (e) => t.get(e)?.insertSchema,
4885
4890
  validatePatchSchema: (e) => t.get(e)?.validatePatchSchema
4886
4891
  };
4887
- }, gc = /* @__PURE__ */ new Map(), _c = /* @__PURE__ */ new Map(), vc = /* @__PURE__ */ new Set(), yc = hc([]), bc = M({ scope: "store.fieldEncryption" }), xc = (e, t) => {
4892
+ }, _c = /* @__PURE__ */ new Map(), vc = /* @__PURE__ */ new Map(), yc = /* @__PURE__ */ new Set(), bc = gc([]), xc = M({ scope: "store.fieldEncryption" }), Sc = (e, t) => {
4888
4893
  let n = t, r = process.env.VOLTRO_FIELD_DECRYPT_ON_ERROR === "null" ? "null" : "throw", i = /* @__PURE__ */ new Set(), a = (e) => {
4889
4894
  let t = `${e.table}.${e.column}`;
4890
- i.has(t) || (i.add(t), bc.warn("encrypted column degraded to null — could not decrypt with the active key", {
4895
+ i.has(t) || (i.add(t), xc.warn("encrypted column degraded to null — could not decrypt with the active key", {
4891
4896
  table: e.table,
4892
4897
  column: e.column,
4893
4898
  reason: e.reason,
@@ -4911,7 +4916,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4911
4916
  e.injectExternalChange(t);
4912
4917
  },
4913
4918
  ...e.changeScope === void 0 ? {} : { changeScope: e.changeScope },
4914
- ...e.withNamespace === void 0 ? {} : { withNamespace: (n) => xc(e.withNamespace(n), t) },
4919
+ ...e.withNamespace === void 0 ? {} : { withNamespace: (n) => Sc(e.withNamespace(n), t) },
4915
4920
  ...e.raw === void 0 ? {} : { raw: ((...t) => e.raw(...t)) },
4916
4921
  ...e.close === void 0 ? {} : { close: (t) => e.close(t) },
4917
4922
  ...e.ping === void 0 ? {} : { ping: () => e.ping() },
@@ -4923,24 +4928,24 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4923
4928
  upsert: async (t, n, r) => d(t, await e.upsert(t, o(t, n), r)),
4924
4929
  insertIgnore: async (t, n, r) => d(t, await e.insertIgnore(t, o(t, n), r)),
4925
4930
  patchJson: async (t, n, r, i) => d(t, await e.patchJson(t, n, r, i)),
4926
- transactional: (n) => e.transactional((e) => n(xc(e, t)))
4931
+ transactional: (n) => e.transactional((e) => n(Sc(e, t)))
4927
4932
  };
4928
- }, Sc = (e, t) => {
4933
+ }, Cc = (e, t) => {
4929
4934
  if (t === void 0 || t.length === 0) return e;
4930
4935
  let n = { ...e };
4931
4936
  for (let e of t) delete n[e];
4932
4937
  return n;
4933
- }, Cc = (e, t) => {
4938
+ }, wc = (e, t) => {
4934
4939
  let n = h(e), r = n === void 0 ? [] : fe(n);
4935
4940
  return r.length === 0 ? t ?? [] : t === void 0 ? r : [...t, ...r];
4936
- }, wc = (e, t) => t.length === 0 ? e : e.map((e) => Sc(e, t)), Tc = (e, t, n, r, i) => {
4941
+ }, Tc = (e, t) => t.length === 0 ? e : e.map((e) => Cc(e, t)), Ec = (e, t, n, r, i) => {
4937
4942
  let a = {
4938
4943
  ...t?.(r) ?? {},
4939
4944
  ...n?.(i) ?? {}
4940
4945
  }, o = e;
4941
4946
  for (let [e, t] of Object.entries(a)) t !== void 0 && (o = o.where(e, t));
4942
4947
  return o;
4943
- }, Ec = 1e3, Dc = (e, t = Ec) => {
4948
+ }, Dc = 1e3, Oc = (e, t = Dc) => {
4944
4949
  let n = (e) => typeof e == "number" && Number.isFinite(e) ? e : void 0, r = (e) => Math.max(1, Math.min(Math.floor(e), t)), i = n(e.page);
4945
4950
  if (i !== void 0) {
4946
4951
  let t = r(n(e.pageSize) ?? 100);
@@ -4953,35 +4958,35 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
4953
4958
  limit: r(n(e.limit) ?? 100),
4954
4959
  offset: Math.max(0, Math.floor(n(e.offset) ?? 0))
4955
4960
  };
4956
- }, Oc = {
4961
+ }, kc = {
4957
4962
  list: (e, t = {}) => async (n, r) => {
4958
4963
  let i = n ?? {}, a = r.store.select(e);
4959
4964
  if (t.columns !== void 0 && t.columns.length > 0) {
4960
- let n = new Set(Cc(e, void 0)), r = t.columns.filter((e) => !n.has(e));
4965
+ let n = new Set(wc(e, void 0)), r = t.columns.filter((e) => !n.has(e));
4961
4966
  r.length > 0 && (a = a.select(...r));
4962
4967
  }
4963
- t.include !== void 0 && (a = a.with(t.include)), a = Tc(a, t.filter, t.scope, i, r);
4968
+ t.include !== void 0 && (a = a.with(t.include)), a = Ec(a, t.filter, t.scope, i, r);
4964
4969
  for (let e of t.sort ?? []) a = a.orderBy(e.column, e.direction ?? "asc");
4965
4970
  if (t.paginate === !0) {
4966
- let { limit: e, offset: n } = Dc(i, t.maxPageSize);
4971
+ let { limit: e, offset: n } = Oc(i, t.maxPageSize);
4967
4972
  a = a.limit(e).offset(n);
4968
4973
  }
4969
- return wc(await a.all(), Cc(e, t.redact));
4974
+ return Tc(await a.all(), wc(e, t.redact));
4970
4975
  },
4971
4976
  getById: (e, t = {}) => async (n, r) => {
4972
4977
  let i = r.store.select(e).where("id", n.id);
4973
4978
  t.include !== void 0 && (i = i.with(t.include));
4974
4979
  let a = await i.first();
4975
- return a === null ? null : Sc(a, Cc(e, t.redact));
4980
+ return a === null ? null : Cc(a, wc(e, t.redact));
4976
4981
  },
4977
- create: (e, t = {}) => async (n, r) => Sc(await r.store.insert(e, n), Cc(e, t.redact)),
4982
+ create: (e, t = {}) => async (n, r) => Cc(await r.store.insert(e, n), wc(e, t.redact)),
4978
4983
  update: (e, t = {}) => async (n, r) => {
4979
4984
  let { id: i, ...a } = n, o = await r.store.update(e, i, a);
4980
- return o === null ? null : Sc(o, Cc(e, t.redact));
4985
+ return o === null ? null : Cc(o, wc(e, t.redact));
4981
4986
  },
4982
- count: (e, t = {}) => async (n, r) => Tc(r.store.select(e), t.filter, t.scope, n ?? {}, r).count(),
4987
+ count: (e, t = {}) => async (n, r) => Ec(r.store.select(e), t.filter, t.scope, n ?? {}, r).count(),
4983
4988
  remove: (e) => async (t, n) => ({ deleted: await n.store.delete(e, t.id) })
4984
- }, kc = (e) => {
4989
+ }, Ac = (e) => {
4985
4990
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = (e) => {
4986
4991
  if (!n.has(e)) switch (n.add(e), e._tag) {
4987
4992
  case "TypeLiteral":
@@ -5008,7 +5013,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5008
5013
  }
5009
5014
  };
5010
5015
  return r(e.ast), t;
5011
- }, Ac = (e) => {
5016
+ }, jc = (e) => {
5012
5017
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = (e) => {
5013
5018
  switch (e._tag) {
5014
5019
  case "Literal": return e.literal === null;
@@ -5043,38 +5048,38 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5043
5048
  }
5044
5049
  };
5045
5050
  return i(e.ast), t;
5046
- }, jc = (e, t) => {
5051
+ }, Mc = (e, t) => {
5047
5052
  let n = e.source === void 0 ? [] : Array.isArray(e.source) ? e.source : [e.source];
5048
5053
  if (n.length === 0) return [];
5049
- let r = kc(e.output), i = Ac(e.output), a = [];
5054
+ let r = Ac(e.output), i = jc(e.output), a = [];
5050
5055
  for (let o of n) for (let n of t.get(o) ?? []) r.has(n) && !i.has(n) && a.push({
5051
5056
  query: e.name,
5052
5057
  table: o,
5053
5058
  column: n
5054
5059
  });
5055
5060
  return a;
5056
- }, Mc = (e) => {
5061
+ }, Nc = (e) => {
5057
5062
  if (e.length !== 0) return `A wire-reachable query exposes a server-only column:\n${e.map((e) => ` • query '${e.query}' output declares '${e.column}' — a .serverOnly() column of '${e.table}'`).join("\n")}\nThree ways out, in order of preference:\n 1. Omit the column from the query's output schema. The crud.* read helpers strip these automatically.\n 2. Keep the KEY but type it \`Schema.Null\` — for a view that must stay wire-compatible (an importer that breaks if the key vanishes) while never sending a value. The audit accepts that, because the schema then PROVES no value can flow instead of promising it. Pair it with a \`hasX\` boolean.\n 3. Drop the .serverOnly() marker, if the column may in fact reach a client.\nNote the audit reads the DECLARED shape, not what your handler emits: a field typed \`string\` that you always set to null still fails, and should — the next edit to that handler is one line away from sending it.`;
5058
- }, Nc = class extends z.TaggedError()("CircuitOpen", {
5063
+ }, Pc = class extends z.TaggedError()("CircuitOpen", {
5059
5064
  name: z.String,
5060
5065
  retryAfterMs: z.Number
5061
- }) {}, Pc = {
5066
+ }) {}, Fc = {
5062
5067
  tag: "closed",
5063
5068
  failureCount: 0,
5064
5069
  halfOpenSuccesses: 0,
5065
5070
  openedAt: 0
5066
- }, Fc = { make: (e) => F.gen(function* () {
5067
- let t = e.name ?? "circuit", n = Ze.toMillis(Ze.decode(e.resetTimeout)), r = e.halfOpenSuccessThreshold ?? 1, i = e.isFailure ?? (() => !0), a = yield* R.make(Pc), o = F.gen(function* () {
5071
+ }, Ic = { make: (e) => F.gen(function* () {
5072
+ let t = e.name ?? "circuit", n = Ze.toMillis(Ze.decode(e.resetTimeout)), r = e.halfOpenSuccessThreshold ?? 1, i = e.isFailure ?? (() => !0), a = yield* R.make(Fc), o = F.gen(function* () {
5068
5073
  let e = yield* R.get(a);
5069
5074
  if (e.tag === "half-open") {
5070
5075
  let t = e.halfOpenSuccesses + 1;
5071
- yield* R.set(a, t >= r ? Pc : {
5076
+ yield* R.set(a, t >= r ? Fc : {
5072
5077
  ...e,
5073
5078
  halfOpenSuccesses: t
5074
5079
  });
5075
5080
  return;
5076
5081
  }
5077
- e.failureCount !== 0 && (yield* R.set(a, Pc));
5082
+ e.failureCount !== 0 && (yield* R.set(a, Fc));
5078
5083
  }), s = F.gen(function* () {
5079
5084
  let t = yield* Je.currentTimeMillis, n = yield* R.get(a);
5080
5085
  if (n.tag === "half-open" || n.tag === "open") {
@@ -5112,7 +5117,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5112
5117
  if (N.isInterruptedOnly(e)) return F.void;
5113
5118
  let t = N.failureOption(e), n = t._tag === "Some" ? t.value : void 0;
5114
5119
  return i(n) ? s : F.void;
5115
- })) : yield* F.fail(new Nc({
5120
+ })) : yield* F.fail(new Pc({
5116
5121
  name: t,
5117
5122
  retryAfterMs: n
5118
5123
  }));
@@ -5121,15 +5126,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5121
5126
  value: R.get(a).pipe(F.map((e) => e.tag)),
5122
5127
  enumerable: !0
5123
5128
  }), Object.defineProperty(u, "reset", {
5124
- value: R.set(a, Pc),
5129
+ value: R.set(a, Fc),
5125
5130
  enumerable: !0
5126
5131
  }), u;
5127
- }) }, Ic, Lc = (e) => {
5128
- Ic = e;
5129
- }, Rc = () => {
5130
- Ic = void 0;
5131
- }, zc = () => Ic, Bc = async (e, t = {}) => {
5132
- let n = t.scopes === void 0 ? Ke(t.id ?? "system") : Ke(t.id ?? "system", t.scopes), r = t.store ?? Ic?.dataStore, i = t.schemaRegistry ?? Ic?.schemaRegistry, a = t.dialect ?? Ic?.dialect;
5132
+ }) }, Lc, Rc = (e) => {
5133
+ Lc = e;
5134
+ }, zc = () => {
5135
+ Lc = void 0;
5136
+ }, Bc = () => Lc, Vc = async (e, t = {}) => {
5137
+ let n = t.scopes === void 0 ? Ke(t.id ?? "system") : Ke(t.id ?? "system", t.scopes), r = t.store ?? Lc?.dataStore, i = t.schemaRegistry ?? Lc?.schemaRegistry, a = t.dialect ?? Lc?.dialect;
5133
5138
  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.");
5134
5139
  return e({
5135
5140
  subject: n,
@@ -5139,7 +5144,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5139
5144
  ...a === void 0 ? {} : { dialect: a }
5140
5145
  })
5141
5146
  });
5142
- }, Vc = (e) => {
5147
+ }, Hc = (e) => {
5143
5148
  let { currentRegion: t, replicaRegions: n, inner: r } = e, i = (e) => {
5144
5149
  if (t === void 0) return {
5145
5150
  sameRegion: [],
@@ -5167,7 +5172,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5167
5172
  return r.loadSnapshot();
5168
5173
  }
5169
5174
  };
5170
- }, Hc = (e = process.env) => {
5175
+ }, Uc = (e = process.env) => {
5171
5176
  for (let t of [
5172
5177
  "VOLTRO_REGION",
5173
5178
  "AWS_REGION",
@@ -5179,7 +5184,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5179
5184
  let n = e[t];
5180
5185
  if (typeof n == "string" && n.length > 0) return n;
5181
5186
  }
5182
- }, Uc = () => {
5187
+ }, Wc = () => {
5183
5188
  let e = {
5184
5189
  primary: 0,
5185
5190
  lagByReplica: /* @__PURE__ */ new Map()
@@ -5204,7 +5209,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5204
5209
  e.lagByReplica.set(t, n);
5205
5210
  }
5206
5211
  };
5207
- }, Wc = Symbol.for("@voltro/ScheduleDefinition"), Gc = (e) => typeof e == "object" && !!e && Wc in e, Kc = 30 * 6e4, qc = (e) => {
5212
+ }, Gc = Symbol.for("@voltro/ScheduleDefinition"), Kc = (e) => typeof e == "object" && !!e && Gc in e, qc = 30 * 6e4, Jc = (e) => {
5208
5213
  let t = P.parse(e.cron, e.timezone);
5209
5214
  if (Qe.isLeft(t)) throw Error(`defineSchedule("${e.name}"): invalid cron expression "${e.cron}" (tz="${e.timezone}") — ${String(t.left)}`);
5210
5215
  if (!e.timezone || e.timezone.trim() === "") throw Error(`defineSchedule("${e.name}"): timezone is required (e.g. "UTC", "Europe/Berlin")`);
@@ -5213,18 +5218,18 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5213
5218
  ...e,
5214
5219
  onOverlap: e.onOverlap ?? "skip",
5215
5220
  backfill: e.backfill ?? "skip",
5216
- maxRuntimeMs: e.maxRuntimeMs ?? Kc,
5217
- [Wc]: !0
5221
+ maxRuntimeMs: e.maxRuntimeMs ?? qc,
5222
+ [Gc]: !0
5218
5223
  };
5219
- }, Jc = (e) => P.unsafeParse(e.cron, e.timezone), Yc = (e, t = /* @__PURE__ */ new Date()) => P.next(Jc(e), t), Z = "_voltro_wakeups", Xc = (e) => `${e.tenantId}:${e.kind}:${e.refId}`, Zc = (e) => ({
5224
+ }, Yc = (e) => P.unsafeParse(e.cron, e.timezone), Xc = (e, t = /* @__PURE__ */ new Date()) => P.next(Yc(e), t), Z = "_voltro_wakeups", Zc = (e) => `${e.tenantId}:${e.kind}:${e.refId}`, Qc = (e) => ({
5220
5225
  tenantId: String(e.tenantId),
5221
5226
  kind: String(e.kind),
5222
5227
  refId: String(e.refId),
5223
5228
  wakeAt: e.wakeAt instanceof Date ? e.wakeAt : new Date(String(e.wakeAt)),
5224
5229
  status: e.status === "fired" ? "fired" : "pending"
5225
- }), Qc = async (e, t) => {
5230
+ }), $c = async (e, t) => {
5226
5231
  await e.upsert(Z, {
5227
- id: Xc(t),
5232
+ id: Zc(t),
5228
5233
  tenantId: t.tenantId,
5229
5234
  kind: t.kind,
5230
5235
  refId: t.refId,
@@ -5234,7 +5239,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5234
5239
  conflictColumns: ["id"],
5235
5240
  update: ["wakeAt", "status"]
5236
5241
  });
5237
- }, $c = async (e, t) => e.delete(Z, Xc(t)), el = async (e, t) => await e.update(Z, Xc(t), { status: "fired" }) !== null, tl = (e, t) => ({ and: [{
5242
+ }, el = async (e, t) => e.delete(Z, Zc(t)), tl = async (e, t) => await e.update(Z, Zc(t), { status: "fired" }) !== null, nl = (e, t) => ({ and: [{
5238
5243
  column: "id",
5239
5244
  op: "eq",
5240
5245
  value: e
@@ -5242,16 +5247,16 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5242
5247
  column: "status",
5243
5248
  op: "eq",
5244
5249
  value: t
5245
- }] }), nl = async (e, t) => await e.updateMany(Z, { status: "fired" }, { where: tl(Xc(t), "pending") }) > 0, rl = async (e, t) => {
5246
- await e.updateMany(Z, { status: "pending" }, { where: tl(Xc(t), "fired") });
5247
- }, il = {
5250
+ }] }), rl = async (e, t) => await e.updateMany(Z, { status: "fired" }, { where: nl(Zc(t), "pending") }) > 0, il = async (e, t) => {
5251
+ await e.updateMany(Z, { status: "pending" }, { where: nl(Zc(t), "fired") });
5252
+ }, al = {
5248
5253
  column: "status",
5249
5254
  op: "eq",
5250
5255
  value: "pending"
5251
- }, al = async (e, t) => {
5256
+ }, ol = async (e, t) => {
5252
5257
  let n = {
5253
5258
  table: Z,
5254
- predicate: il,
5259
+ predicate: al,
5255
5260
  order: [{
5256
5261
  column: "wakeAt",
5257
5262
  direction: "asc"
@@ -5260,18 +5265,18 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5260
5265
  skip: void 0,
5261
5266
  projection: void 0
5262
5267
  };
5263
- return (await e.query(n)).map(Zc);
5264
- }, ol = async (e, t, n = 500) => {
5265
- let r = await al(e, n), i = t.getTime();
5268
+ return (await e.query(n)).map(Qc);
5269
+ }, sl = async (e, t, n = 500) => {
5270
+ let r = await ol(e, n), i = t.getTime();
5266
5271
  return r.filter((e) => e.wakeAt.getTime() <= i);
5267
- }, sl = async (e) => (await al(e, 1))[0] ?? null, cl = {
5272
+ }, cl = async (e) => (await ol(e, 1))[0] ?? null, ll = {
5268
5273
  column: "status",
5269
5274
  op: "eq",
5270
5275
  value: "fired"
5271
- }, ll = async (e, t = {}) => {
5276
+ }, ul = async (e, t = {}) => {
5272
5277
  let n = {
5273
5278
  table: Z,
5274
- predicate: cl,
5279
+ predicate: ll,
5275
5280
  order: [{
5276
5281
  column: "wakeAt",
5277
5282
  direction: "asc"
@@ -5282,12 +5287,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5282
5287
  }, r = await e.query(n), i = t.firedOlderThan?.getTime(), a = 0;
5283
5288
  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++;
5284
5289
  return a;
5285
- }, ul = Ua, dl = "default", fl = {
5290
+ }, dl = Wa, fl = "default", pl = {
5286
5291
  kind: "single",
5287
5292
  tryClaim: async () => !0
5288
- }, pl = "_voltro_schedule_claims", ml = (e, t, n) => {
5293
+ }, ml = "_voltro_schedule_claims", hl = (e, t, n) => {
5289
5294
  let r = async (t) => (await e.query({
5290
- table: pl,
5295
+ table: ml,
5291
5296
  order: [],
5292
5297
  predicate: void 0,
5293
5298
  projection: ["id"],
@@ -5302,7 +5307,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5302
5307
  if (await r(s)) return !1;
5303
5308
  } catch {}
5304
5309
  try {
5305
- return await e.insert(pl, {
5310
+ return await e.insert(ml, {
5306
5311
  id: s,
5307
5312
  scheduleName: i,
5308
5313
  bucket: o,
@@ -5320,12 +5325,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5320
5325
  }
5321
5326
  }
5322
5327
  };
5323
- }, hl = "_voltro_schedule_runs", gl = async (e, t) => {
5328
+ }, gl = "_voltro_schedule_runs", _l = async (e, t) => {
5324
5329
  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) => {
5325
- s?.(e, vl(t));
5330
+ s?.(e, yl(t));
5326
5331
  }, _ = async (e, t, r, i, s, c) => {
5327
5332
  try {
5328
- let o = `sr_${xe()}`, l = await n.insert(hl, {
5333
+ let o = `sr_${xe()}`, l = await n.insert(gl, {
5329
5334
  id: o,
5330
5335
  name: e.name,
5331
5336
  status: i,
@@ -5350,7 +5355,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5350
5355
  }
5351
5356
  }, v = async (e, t) => {
5352
5357
  try {
5353
- let r = await n.update(hl, e, t);
5358
+ let r = await n.update(gl, e, t);
5354
5359
  r && g("update", r);
5355
5360
  } catch (t) {
5356
5361
  o.warn("schedule: failed to record run finish", {
@@ -5361,7 +5366,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5361
5366
  }, y = async (e) => {
5362
5367
  try {
5363
5368
  let t = await n.query({
5364
- table: hl,
5369
+ table: gl,
5365
5370
  predicate: {
5366
5371
  _tag: "leaf",
5367
5372
  column: "status",
@@ -5396,7 +5401,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5396
5401
  scheduleName: e.name,
5397
5402
  trigger: n,
5398
5403
  runId: s,
5399
- subject: ul
5404
+ subject: dl
5400
5405
  })
5401
5406
  };
5402
5407
  try {
@@ -5427,7 +5432,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5427
5432
  let n = Q(t).includes("exceeded maxRuntimeMs"), r = an(t).dbMessage, i = typeof r == "string" && r !== "" ? `${Q(t)} — ${r}` : Q(t);
5428
5433
  s && await v(s, {
5429
5434
  status: "failed",
5430
- errorTag: n ? "timeout" : _l(t),
5435
+ errorTag: n ? "timeout" : vl(t),
5431
5436
  errorMessage: i,
5432
5437
  completedAt: /* @__PURE__ */ new Date(),
5433
5438
  durationMs: Date.now() - l
@@ -5487,8 +5492,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5487
5492
  }
5488
5493
  }, C = async (e) => {
5489
5494
  try {
5490
- let t = P.next(Jc(e), /* @__PURE__ */ new Date());
5491
- await Qc(n, {
5495
+ let t = P.next(Yc(e), /* @__PURE__ */ new Date());
5496
+ await $c(n, {
5492
5497
  tenantId: u,
5493
5498
  kind: "schedule",
5494
5499
  refId: e.name,
@@ -5502,7 +5507,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5502
5507
  }
5503
5508
  }, w = 2147483647, T = (e) => {
5504
5509
  if (m) return;
5505
- let n = Jc(e), r = P.next(n, /* @__PURE__ */ new Date()), i = () => {
5510
+ let n = Yc(e), r = P.next(n, /* @__PURE__ */ new Date()), i = () => {
5506
5511
  if (m) return;
5507
5512
  let n = r.getTime() - Date.now();
5508
5513
  if (n > w) {
@@ -5524,7 +5529,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5524
5529
  let r;
5525
5530
  try {
5526
5531
  let t = (await n.query({
5527
- table: hl,
5532
+ table: gl,
5528
5533
  order: [{
5529
5534
  column: "scheduledAt",
5530
5535
  direction: "desc"
@@ -5543,7 +5548,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5543
5548
  return;
5544
5549
  }
5545
5550
  if (!r) return;
5546
- let i = Jc(e), a = [], s = P.next(i, r), c = Date.now();
5551
+ let i = Yc(e), a = [], s = P.next(i, r), c = Date.now();
5547
5552
  for (; s.getTime() < c && a.length < 1e3;) a.push(s), s = P.next(i, s);
5548
5553
  if (a.length !== 0) if (o.info("schedule: backfill", {
5549
5554
  name: e.name,
@@ -5588,11 +5593,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5588
5593
  d.clear(), o.info("scheduler: stopped");
5589
5594
  }
5590
5595
  };
5591
- }, Q = (e) => e?.message ?? String(e), _l = (e) => e && typeof e == "object" && "_tag" in e ? String(e._tag) : null, vl = (e) => {
5596
+ }, Q = (e) => e?.message ?? String(e), vl = (e) => e && typeof e == "object" && "_tag" in e ? String(e._tag) : null, yl = (e) => {
5592
5597
  let t = {};
5593
5598
  for (let [n, r] of Object.entries(e)) t[n] = r instanceof Date ? r.toISOString() : r;
5594
5599
  return t;
5595
- }, yl = (e, t, n, r) => {
5600
+ }, bl = (e, t, n, r) => {
5596
5601
  let i = !1, a, o = async () => {
5597
5602
  if (i) return;
5598
5603
  let a = new Date(Math.floor(Date.now() / t) * t), o = !1;
@@ -5622,7 +5627,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5622
5627
  i || (i = !0, a && clearInterval(a), a = void 0);
5623
5628
  }
5624
5629
  };
5625
- }, bl = (e) => (t, n, r) => yl(t, n, r, e), xl = O("_voltro_schedule_runs", {
5630
+ }, xl = (e) => (t, n, r) => bl(t, n, r, e), Sl = O("_voltro_schedule_runs", {
5626
5631
  id: y({ prefix: "schrun" }),
5627
5632
  name: k(),
5628
5633
  status: k().oneOf([
@@ -5652,13 +5657,13 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5652
5657
  ]).nullable(),
5653
5658
  replicaId: k().nullable(),
5654
5659
  result: T().nullable()
5655
- }).index(["name", "scheduledAt"]).index(["status"]), Sl = O("_voltro_schedule_claims", {
5660
+ }).index(["name", "scheduledAt"]).index(["status"]), Cl = O("_voltro_schedule_claims", {
5656
5661
  id: y({ prefix: "schclaim" }),
5657
5662
  scheduleName: k(),
5658
5663
  bucket: k(),
5659
5664
  claimedBy: k(),
5660
5665
  claimedAt: A()
5661
- }).index(["scheduleName", "bucket"]).index(["claimedAt"]), Cl = O("_voltro_traces", {
5666
+ }).index(["scheduleName", "bucket"]).index(["claimedAt"]), wl = O("_voltro_traces", {
5662
5667
  id: y({ prefix: "span" }),
5663
5668
  traceId: k(),
5664
5669
  spanId: k(),
@@ -5682,7 +5687,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5682
5687
  durationMs: x(),
5683
5688
  attributes: T().nullable(),
5684
5689
  events: T().nullable()
5685
- }).index(["traceId", "startedAt"]).index(["startedAt"]).index(["status"]), wl = O("_voltro_undo_log", {
5690
+ }).index(["traceId", "startedAt"]).index(["startedAt"]).index(["status"]), Tl = O("_voltro_undo_log", {
5686
5691
  id: y({ prefix: "undo" }),
5687
5692
  tag: k(),
5688
5693
  label: k().nullable(),
@@ -5693,25 +5698,25 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5693
5698
  crossesAction: i().default(!1),
5694
5699
  undone: i().default(!1),
5695
5700
  createdAt: A().default("now")
5696
- }).index(["subjectId", "createdAt"]), Tl = (e = process.env) => {
5701
+ }).index(["subjectId", "createdAt"]), El = (e = process.env) => {
5697
5702
  let t = (e.VOLTRO_UNDO ?? "").toLowerCase();
5698
5703
  return t === "on" || t === "1" || t === "true" ? !0 : t === "off" || t === "0" || t === "false" ? !1 : e.NODE_ENV !== "production";
5699
- }, El = (e) => e.startsWith("_voltro"), Dl = async (e, t, n) => (await e.query({
5704
+ }, Dl = (e) => e.startsWith("_voltro"), Ol = async (e, t, n) => (await e.query({
5700
5705
  table: t,
5701
5706
  predicate: d("id", n),
5702
5707
  order: []
5703
- }))[0] ?? null, Ol = (e, t) => new Proxy(e, { get(e, n, r) {
5708
+ }))[0] ?? null, kl = (e, t) => new Proxy(e, { get(e, n, r) {
5704
5709
  if (n === "insert") return async (n, r) => {
5705
5710
  let i = await e.insert(n, r);
5706
- return El(n) || t({
5711
+ return Dl(n) || t({
5707
5712
  table: n,
5708
5713
  op: "insert",
5709
5714
  next: i
5710
5715
  }), i;
5711
5716
  };
5712
5717
  if (n === "update") return async (n, r, i) => {
5713
- let a = El(n) ? null : await Dl(e, n, r), o = await e.update(n, r, i);
5714
- return El(n) || t({
5718
+ let a = Dl(n) ? null : await Ol(e, n, r), o = await e.update(n, r, i);
5719
+ return Dl(n) || t({
5715
5720
  table: n,
5716
5721
  op: "update",
5717
5722
  id: r,
@@ -5720,8 +5725,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5720
5725
  }), o;
5721
5726
  };
5722
5727
  if (n === "delete") return async (n, r) => {
5723
- let i = El(n) ? null : await Dl(e, n, r), a = await e.delete(n, r);
5724
- return !El(n) && a && t({
5728
+ let i = Dl(n) ? null : await Ol(e, n, r), a = await e.delete(n, r);
5729
+ return !Dl(n) && a && t({
5725
5730
  table: n,
5726
5731
  op: "delete",
5727
5732
  id: r,
@@ -5730,10 +5735,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5730
5735
  };
5731
5736
  let i = Reflect.get(e, n, r);
5732
5737
  return typeof i == "function" ? i.bind(e) : i;
5733
- } }), kl = (e) => {
5738
+ } }), Al = (e) => {
5734
5739
  let t = [];
5735
5740
  return {
5736
- tx: Ol(e, (e) => t.push(e)),
5741
+ tx: kl(e, (e) => t.push(e)),
5737
5742
  persist: async (e, n) => {
5738
5743
  if (t.length === 0 || n.tag.startsWith("__voltro")) return;
5739
5744
  let r = n.subject;
@@ -5749,14 +5754,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5749
5754
  });
5750
5755
  }
5751
5756
  };
5752
- }, Al = (e) => {
5757
+ }, jl = (e) => {
5753
5758
  if (e.id !== void 0) return e.id;
5754
5759
  let t = e.next?.id;
5755
5760
  if (typeof t == "string") return t;
5756
5761
  let n = e.prev?.id;
5757
5762
  return typeof n == "string" ? n : void 0;
5758
- }, jl = (e) => {
5759
- let t = Al(e);
5763
+ }, Ml = (e) => {
5764
+ let t = jl(e);
5760
5765
  switch (e.op) {
5761
5766
  case "insert": return t === void 0 ? null : {
5762
5767
  table: e.table,
@@ -5780,28 +5785,28 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5780
5785
  row: e.prev
5781
5786
  };
5782
5787
  }
5783
- }, Ml = (e) => {
5784
- if (e.crossesAction) throw new Nl(e.invocationId, "action");
5788
+ }, Nl = (e) => {
5789
+ if (e.crossesAction) throw new Pl(e.invocationId, "action");
5785
5790
  let t = [];
5786
5791
  for (let n = e.changes.length - 1; n >= 0; --n) {
5787
- let r = jl(e.changes[n]);
5792
+ let r = Ml(e.changes[n]);
5788
5793
  r !== null && t.push(r);
5789
5794
  }
5790
5795
  return t;
5791
- }, Nl = class extends Error {
5796
+ }, Pl = class extends Error {
5792
5797
  invocationId;
5793
5798
  boundary;
5794
5799
  _tag = "UndoBoundaryError";
5795
5800
  constructor(e, t) {
5796
5801
  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";
5797
5802
  }
5798
- }, Pl = (e, t, n = ["updatedAt", "updatedBy"]) => {
5803
+ }, Fl = (e, t, n = ["updatedAt", "updatedBy"]) => {
5799
5804
  if (t == null) return e == null;
5800
5805
  if (e == null) return !1;
5801
5806
  let r = new Set(n);
5802
5807
  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;
5803
5808
  return !0;
5804
- }, Fl = class {
5809
+ }, Il = class {
5805
5810
  capacity;
5806
5811
  done = [];
5807
5812
  undone = [];
@@ -5837,7 +5842,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5837
5842
  redo: [...this.undone]
5838
5843
  };
5839
5844
  }
5840
- }, Il = (e, t = /* @__PURE__ */ new Set()) => e.op === "insert" ? {
5845
+ }, Ll = (e, t = /* @__PURE__ */ new Set()) => e.op === "insert" ? {
5841
5846
  table: e.table,
5842
5847
  op: "insert",
5843
5848
  next: e.new ?? null
@@ -5854,7 +5859,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5854
5859
  table: e.table,
5855
5860
  op: "delete",
5856
5861
  prev: e.old ?? null
5857
- }, Ll = async (e, t) => {
5862
+ }, Rl = async (e, t) => {
5858
5863
  switch (t.op) {
5859
5864
  case "delete":
5860
5865
  await e.delete(t.table, t.id);
@@ -5872,21 +5877,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5872
5877
  await e.insert(t.table, t.row);
5873
5878
  return;
5874
5879
  }
5875
- }, Rl = async (e, t) => {
5876
- for (let n of t) await Ll(e, n);
5877
- }, zl = (e) => e.request?.subject?.id ?? null, Bl = (e) => e === !0 || e === 1, Vl = async (e, t, n) => (await e.query({
5880
+ }, zl = async (e, t) => {
5881
+ for (let n of t) await Rl(e, n);
5882
+ }, Bl = (e) => e.request?.subject?.id ?? null, Vl = (e) => e === !0 || e === 1, Hl = async (e, t, n) => (await e.query({
5878
5883
  table: t,
5879
5884
  predicate: d("id", n),
5880
5885
  order: []
5881
- }))[0] ?? null, Hl = (e) => {
5886
+ }))[0] ?? null, Ul = (e) => {
5882
5887
  try {
5883
5888
  let t = JSON.parse(String(e ?? "[]"));
5884
5889
  return Array.isArray(t) ? t : [];
5885
5890
  } catch {
5886
5891
  return [];
5887
5892
  }
5888
- }, Ul = (e) => e.id ?? e.next?.id ?? e.prev?.id, Wl = async (e, t) => {
5889
- let n = zl(t);
5893
+ }, Wl = (e) => e.id ?? e.next?.id ?? e.prev?.id, Gl = async (e, t) => {
5894
+ let n = Bl(t);
5890
5895
  return [...await t.store.query({
5891
5896
  table: "_voltro_undo_log",
5892
5897
  predicate: d("subjectId", n),
@@ -5895,68 +5900,68 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5895
5900
  id: String(e.id),
5896
5901
  tag: String(e.tag ?? ""),
5897
5902
  label: e.label ?? null,
5898
- undone: Bl(e.undone),
5899
- crossesAction: Bl(e.crossesAction),
5903
+ undone: Vl(e.undone),
5904
+ crossesAction: Vl(e.crossesAction),
5900
5905
  createdAt: String(e.createdAt ?? "")
5901
5906
  }));
5902
- }, Gl = async (e, t) => {
5903
- let n = await Vl(t.store, "_voltro_undo_log", e.invocationId);
5907
+ }, Kl = async (e, t) => {
5908
+ let n = await Hl(t.store, "_voltro_undo_log", e.invocationId);
5904
5909
  if (!n) throw new Ie({ invocationId: e.invocationId });
5905
- if ((n.subjectId ?? null) !== zl(t)) throw new Fe({ invocationId: e.invocationId });
5910
+ if ((n.subjectId ?? null) !== Bl(t)) throw new Fe({ invocationId: e.invocationId });
5906
5911
  return n;
5907
- }, Kl = async (e, t) => {
5908
- let n = await Gl(e, t);
5909
- if (Bl(n.undone)) return { ok: !0 };
5910
- if (Bl(n.crossesAction)) throw new Pe({
5912
+ }, ql = async (e, t) => {
5913
+ let n = await Kl(e, t);
5914
+ if (Vl(n.undone)) return { ok: !0 };
5915
+ if (Vl(n.crossesAction)) throw new Pe({
5911
5916
  invocationId: e.invocationId,
5912
5917
  reason: "action"
5913
5918
  });
5914
- let r = Hl(n.changes);
5919
+ let r = Ul(n.changes);
5915
5920
  for (let n of r) {
5916
- let r = Ul(n);
5917
- if (r !== void 0 && !Pl(await Vl(t.store, n.table, r), n.next ?? null)) throw new Pe({
5921
+ let r = Wl(n);
5922
+ if (r !== void 0 && !Fl(await Hl(t.store, n.table, r), n.next ?? null)) throw new Pe({
5918
5923
  invocationId: e.invocationId,
5919
5924
  reason: "conflict"
5920
5925
  });
5921
5926
  }
5922
5927
  let i = {
5923
5928
  invocationId: e.invocationId,
5924
- subject: zl(t),
5929
+ subject: Bl(t),
5925
5930
  changes: r,
5926
5931
  crossesAction: !1
5927
5932
  };
5928
- return await Rl(t.store, Ml(i)), await t.store.update("_voltro_undo_log", e.invocationId, { undone: !0 }), { ok: !0 };
5929
- }, ql = async (e, t) => {
5930
- let n = await Gl(e, t);
5931
- if (!Bl(n.undone)) return { ok: !0 };
5932
- for (let e of Hl(n.changes)) {
5933
- let n = Ul(e);
5933
+ return await zl(t.store, Nl(i)), await t.store.update("_voltro_undo_log", e.invocationId, { undone: !0 }), { ok: !0 };
5934
+ }, Jl = async (e, t) => {
5935
+ let n = await Kl(e, t);
5936
+ if (!Vl(n.undone)) return { ok: !0 };
5937
+ for (let e of Ul(n.changes)) {
5938
+ let n = Wl(e);
5934
5939
  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);
5935
5940
  }
5936
5941
  return await t.store.update("_voltro_undo_log", e.invocationId, { undone: !1 }), { ok: !0 };
5937
- }, Jl = (e = process.env) => {
5942
+ }, Yl = (e = process.env) => {
5938
5943
  let t = (e.VOLTRO_TIMELINE ?? "").toLowerCase();
5939
5944
  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";
5940
- }, Yl = /pass(word)?|secret|token|api[_-]?key|authorization|cookie|ssn|credit[_-]?card|card[_-]?number|cvv|encrypted/i, Xl = "«redacted»", Zl = (e) => {
5945
+ }, Xl = /pass(word)?|secret|token|api[_-]?key|authorization|cookie|ssn|credit[_-]?card|card[_-]?number|cvv|encrypted/i, Zl = "«redacted»", Ql = (e) => {
5941
5946
  if (e == null) return null;
5942
5947
  let t = {};
5943
- for (let [n, r] of Object.entries(e)) t[n] = Yl.test(n) ? Xl : r;
5948
+ for (let [n, r] of Object.entries(e)) t[n] = Xl.test(n) ? Zl : r;
5944
5949
  return t;
5945
- }, Ql = (e) => {
5950
+ }, $l = (e) => {
5946
5951
  let t = e?.id;
5947
5952
  return typeof t == "string" ? t : void 0;
5948
- }, $l = (e, t) => {
5953
+ }, eu = (e, t) => {
5949
5954
  if (t.op === "insert") {
5950
- let n = Ql(t.new);
5955
+ let n = $l(t.new);
5951
5956
  return n === void 0 ? e : e.filter((e) => e.id !== n);
5952
5957
  }
5953
5958
  if (t.op === "update") {
5954
5959
  if (t.old == null) return e;
5955
- let n = Ql(t.new) ?? Ql(t.old);
5960
+ let n = $l(t.new) ?? $l(t.old);
5956
5961
  return e.map((e) => e.id === n ? t.old : e);
5957
5962
  }
5958
5963
  return t.old == null ? e : [...e, t.old];
5959
- }, eu = class {
5964
+ }, tu = class {
5960
5965
  mode;
5961
5966
  capacity;
5962
5967
  now;
@@ -5976,8 +5981,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5976
5981
  ts: this.now(),
5977
5982
  table: e.table,
5978
5983
  op: e.op,
5979
- old: Zl(e.old),
5980
- new: Zl(e.new),
5984
+ old: Ql(e.old),
5985
+ new: Ql(e.new),
5981
5986
  tenantId: n
5982
5987
  }), this.ring.length > this.capacity && this.ring.shift(), t;
5983
5988
  }
@@ -5990,23 +5995,23 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
5990
5995
  }
5991
5996
  replay(e, t, n) {
5992
5997
  let r = this.ring.filter((n) => n.table === e && n.seq > t).sort((e, t) => t.seq - e.seq), i = n;
5993
- for (let e of r) i = $l(i, e);
5998
+ for (let e of r) i = eu(i, e);
5994
5999
  return i;
5995
6000
  }
5996
- }, tu, nu = () => (tu === void 0 && (tu = new eu(Jl())), tu), ru = (e) => {
5997
- tu = e;
5998
- }, iu = (e) => {
5999
- let t = nu();
6001
+ }, nu, ru = () => (nu === void 0 && (nu = new tu(Yl())), nu), iu = (e) => {
6002
+ nu = e;
6003
+ }, au = (e) => {
6004
+ let t = ru();
6000
6005
  if (t.enabled) try {
6001
6006
  t.record(e);
6002
6007
  } catch {}
6003
- }, au = /* @__PURE__ */ new Set([
6008
+ }, ou = /* @__PURE__ */ new Set([
6004
6009
  "count",
6005
6010
  "sum",
6006
6011
  "avg",
6007
6012
  "min",
6008
6013
  "max"
6009
- ]), ou = (e) => {
6014
+ ]), su = (e) => {
6010
6015
  if (e.joins !== void 0 && e.joins.length > 0) return {
6011
6016
  maintainable: !1,
6012
6017
  reason: "joins are not maintainable in v1"
@@ -6028,7 +6033,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6028
6033
  reason: "v1 maintains exactly one aggregation"
6029
6034
  };
6030
6035
  let t = e.aggregations[0];
6031
- return au.has(t.op) ? t.op !== "count" && (t.column === void 0 || t.column.length === 0) ? {
6036
+ return ou.has(t.op) ? t.op !== "count" && (t.column === void 0 || t.column.length === 0) ? {
6032
6037
  maintainable: !1,
6033
6038
  reason: `op '${t.op}' requires a column`
6034
6039
  } : {
@@ -6042,7 +6047,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6042
6047
  maintainable: !1,
6043
6048
  reason: `op '${t.op}' is not maintainable`
6044
6049
  };
6045
- }, su = "\0", $ = (e, t) => t === void 0 || t.length === 0 ? "" : t.map((t) => JSON.stringify(e[t] ?? null)).join(su), cu = (e, t) => t === void 0 ? 0 : Number(e[t] ?? 0), lu = (e, t) => {
6050
+ }, cu = "\0", $ = (e, t) => t === void 0 || t.length === 0 ? "" : t.map((t) => JSON.stringify(e[t] ?? null)).join(cu), lu = (e, t) => t === void 0 ? 0 : Number(e[t] ?? 0), uu = (e, t) => {
6046
6051
  switch (e.op) {
6047
6052
  case "count": return t.count;
6048
6053
  case "sum": return t.sum ?? 0;
@@ -6050,10 +6055,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6050
6055
  case "min":
6051
6056
  case "max": return t.count > 0 ? t.extreme ?? null : null;
6052
6057
  }
6053
- }, uu = (e, t) => {
6058
+ }, du = (e, t) => {
6054
6059
  let n = /* @__PURE__ */ new Map();
6055
6060
  for (let r of t) {
6056
- let t = $(r, e.groupBy), i = n.get(t), a = cu(r, e.column);
6061
+ let t = $(r, e.groupBy), i = n.get(t), a = lu(r, e.column);
6057
6062
  if (i === void 0) n.set(t, {
6058
6063
  count: 1,
6059
6064
  ...e.op === "sum" || e.op === "avg" ? { sum: a } : {},
@@ -6069,10 +6074,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6069
6074
  }
6070
6075
  }
6071
6076
  return n;
6072
- }, du = (e, t) => [...t.entries()].map(([t, n]) => ({
6077
+ }, fu = (e, t) => [...t.entries()].map(([t, n]) => ({
6073
6078
  groupKey: t,
6074
- value: lu(e, n)
6075
- })), fu = (e, t, n) => {
6079
+ value: uu(e, n)
6080
+ })), pu = (e, t, n) => {
6076
6081
  let r = new Map(t), i = /* @__PURE__ */ new Set(), a = (t) => {
6077
6082
  let n = $(t, e.groupBy), a = r.get(n);
6078
6083
  if (a === void 0) return;
@@ -6081,7 +6086,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6081
6086
  r.delete(n);
6082
6087
  return;
6083
6088
  }
6084
- let s = cu(t, e.column);
6089
+ let s = lu(t, e.column);
6085
6090
  e.op === "min" || e.op === "max" ? (a.extreme !== void 0 && s === a.extreme && i.add(n), r.set(n, {
6086
6091
  count: o,
6087
6092
  ...a.extreme === void 0 ? {} : { extreme: a.extreme }
@@ -6090,7 +6095,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6090
6095
  ...e.op === "sum" || e.op === "avg" ? { sum: (a.sum ?? 0) - s } : {}
6091
6096
  });
6092
6097
  }, o = (t) => {
6093
- let n = $(t, e.groupBy), i = r.get(n), a = cu(t, e.column);
6098
+ let n = $(t, e.groupBy), i = r.get(n), a = lu(t, e.column);
6094
6099
  if (i === void 0) {
6095
6100
  r.set(n, {
6096
6101
  count: 1,
@@ -6110,15 +6115,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6110
6115
  state: r,
6111
6116
  rescanGroups: [...i]
6112
6117
  };
6113
- }, pu = (e, t, n, r) => {
6118
+ }, mu = (e, t, n, r) => {
6114
6119
  if (n.length === 0) return t;
6115
- let i = new Set(n), a = uu(e, r.filter((t) => i.has($(t, e.groupBy)))), o = new Map(t);
6120
+ let i = new Set(n), a = du(e, r.filter((t) => i.has($(t, e.groupBy)))), o = new Map(t);
6116
6121
  for (let e of i) {
6117
6122
  let t = a.get(e);
6118
6123
  t === void 0 ? o.delete(e) : o.set(e, t);
6119
6124
  }
6120
6125
  return o;
6121
- }, mu = class {
6126
+ }, hu = class {
6122
6127
  shape;
6123
6128
  state = /* @__PURE__ */ new Map();
6124
6129
  groups = /* @__PURE__ */ new Map();
@@ -6126,7 +6131,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6126
6131
  this.shape = e;
6127
6132
  }
6128
6133
  seed(e) {
6129
- this.state = uu(this.shape, e), this.groups.clear();
6134
+ this.state = du(this.shape, e), this.groups.clear();
6130
6135
  for (let t of e) {
6131
6136
  let e = $(t, this.shape.groupBy);
6132
6137
  this.groups.has(e) || this.groups.set(e, this.groupValues(t));
@@ -6138,14 +6143,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6138
6143
  let e = $(t, this.shape.groupBy);
6139
6144
  this.groups.has(e) || this.groups.set(e, this.groupValues(t));
6140
6145
  }
6141
- let n = fu(this.shape, this.state, e);
6146
+ let n = pu(this.shape, this.state, e);
6142
6147
  this.state = n.state;
6143
6148
  for (let e of this.groups.keys()) this.state.has(e) || this.groups.delete(e);
6144
6149
  return n.rescanGroups;
6145
6150
  }
6146
6151
  resolveRescan(e, t) {
6147
6152
  if (e.length === 0) return;
6148
- this.state = pu(this.shape, this.state, e, t);
6153
+ this.state = mu(this.shape, this.state, e, t);
6149
6154
  let n = new Set(e);
6150
6155
  for (let e of t) {
6151
6156
  let t = $(e, this.shape.groupBy);
@@ -6154,7 +6159,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6154
6159
  for (let e of n) this.state.has(e) || this.groups.delete(e);
6155
6160
  }
6156
6161
  materialize() {
6157
- return du(this.shape, this.state).map((e) => ({
6162
+ return fu(this.shape, this.state).map((e) => ({
6158
6163
  groupKey: e.groupKey,
6159
6164
  group: this.groups.get(e.groupKey) ?? {},
6160
6165
  value: e.value
@@ -6167,7 +6172,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6167
6172
  for (let r of t) n[r] = e[r];
6168
6173
  return n;
6169
6174
  }
6170
- }, hu = O("_voltro_rebac_tuples", {
6175
+ }, gu = O("_voltro_rebac_tuples", {
6171
6176
  id: y({ prefix: "rbct" }),
6172
6177
  subjectId: k(),
6173
6178
  relation: k(),
@@ -6179,7 +6184,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6179
6184
  "subjectId",
6180
6185
  "resourceType",
6181
6186
  "resourceId"
6182
- ]), gu = async (e, n, r, i) => n === null ? [] : (await e.query({
6187
+ ]), _u = async (e, n, r, i) => n === null ? [] : (await e.query({
6183
6188
  table: "_voltro_rebac_tuples",
6184
6189
  predicate: t(d("subjectId", n), d("resourceType", r), d("resourceId", i)),
6185
6190
  order: [],
@@ -6191,16 +6196,16 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6191
6196
  relation: e.relation,
6192
6197
  resourceType: e.resourceType,
6193
6198
  resourceId: e.resourceId
6194
- })), _u = (e) => ({
6199
+ })), vu = (e) => ({
6195
6200
  id: e.id,
6196
6201
  tenantId: e.tenantId,
6197
6202
  ...e.scopes === void 0 ? {} : { scopes: e.scopes }
6198
- }), vu = (e, t) => {
6199
- let n = t.getPolicy ?? Vs;
6203
+ }), yu = (e, t) => {
6204
+ let n = t.getPolicy ?? Hs;
6200
6205
  return (r, i) => {
6201
6206
  let a = e[i.tag];
6202
6207
  if (a === void 0) return r;
6203
- let o = n(a.resourceType), s = (e) => F.fail(new Rs({
6208
+ let o = n(a.resourceType), s = (e) => F.fail(new zs({
6204
6209
  action: a.action,
6205
6210
  resourceType: a.resourceType,
6206
6211
  resourceId: e
@@ -6208,17 +6213,17 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6208
6213
  if (o === void 0) return s("");
6209
6214
  let c = a.resourceId(i.input);
6210
6215
  if (c === null || c === "") return s("");
6211
- let l = _u(i.subject), u = {
6216
+ let l = vu(i.subject), u = {
6212
6217
  type: a.resourceType,
6213
6218
  id: c,
6214
6219
  tenantId: i.subject.tenantId
6215
6220
  };
6216
- return F.flatMap(F.promise(async () => t.loadTuples(l.id, a.resourceType, c)), (e) => qs(l, a.action, u, {
6221
+ return F.flatMap(F.promise(async () => t.loadTuples(l.id, a.resourceType, c)), (e) => Js(l, a.action, u, {
6217
6222
  policy: o,
6218
6223
  tuples: e
6219
6224
  }) ? r : s(c));
6220
6225
  };
6221
- }, yu = async (e, n, r) => n === null ? [] : (await e.query({
6226
+ }, bu = async (e, n, r) => n === null ? [] : (await e.query({
6222
6227
  table: "_voltro_rebac_tuples",
6223
6228
  predicate: t(d("subjectId", n), d("resourceType", r)),
6224
6229
  order: [],
@@ -6230,18 +6235,18 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6230
6235
  relation: e.relation,
6231
6236
  resourceType: e.resourceType,
6232
6237
  resourceId: e.resourceId
6233
- })), bu = (e) => {
6234
- let t = e.getPolicy ?? Vs;
6238
+ })), xu = (e) => {
6239
+ let t = e.getPolicy ?? Hs;
6235
6240
  return async (n, r, i, a) => {
6236
6241
  let o = t(r);
6237
6242
  if (o === void 0) return [];
6238
- let s = _u(n);
6239
- return Ys(s, i, r, a, {
6243
+ let s = vu(n);
6244
+ return Xs(s, i, r, a, {
6240
6245
  policy: o,
6241
6246
  tuples: await e.loadSubjectTuples(s.id, r)
6242
6247
  });
6243
6248
  };
6244
- }, xu = (e) => {
6249
+ }, Su = (e) => {
6245
6250
  if (typeof e.name != "string" || e.name.length === 0) throw Error("defineReaction: a non-empty `name` is required");
6246
6251
  if (e.watch === void 0 || typeof e.watch.table != "string" || e.watch.table.length === 0) throw Error(`reaction '${e.name}': watch.table is required`);
6247
6252
  if (e.act === void 0 || e.act.kind !== "agent" && e.act.kind !== "workflow") throw Error(`reaction '${e.name}': act must be { kind: 'agent' | 'workflow', … }`);
@@ -6249,14 +6254,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6249
6254
  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`);
6250
6255
  if (e.guards.costBudgetUsd !== void 0 && e.guards.costBudgetUsd < 0) throw Error(`reaction '${e.name}': guards.costBudgetUsd must be >= 0`);
6251
6256
  return e;
6252
- }, Su = (e, t) => e === void 0 ? !0 : Array.isArray(e) ? e.includes(t) : e === t, Cu = (e) => e.new?.tenantId ?? e.old?.tenantId ?? null, wu = class {
6257
+ }, Cu = (e, t) => e === void 0 ? !0 : Array.isArray(e) ? e.includes(t) : e === t, wu = (e) => e.new?.tenantId ?? e.old?.tenantId ?? null, Tu = class {
6253
6258
  hits = /* @__PURE__ */ new Map();
6254
6259
  allow(e, t, n, r) {
6255
6260
  let i = r - n, a = (this.hits.get(e) ?? []).filter((e) => e > i);
6256
6261
  return a.length >= t ? (this.hits.set(e, a), !1) : (a.push(r), this.hits.set(e, a), !0);
6257
6262
  }
6258
- }, Tu = async (e, t, n) => {
6259
- if (t.table !== e.watch.table || !Su(e.watch.on, t.op)) return "skipped-op";
6263
+ }, Eu = async (e, t, n) => {
6264
+ if (t.table !== e.watch.table || !Cu(e.watch.on, t.op)) return "skipped-op";
6260
6265
  if (e.when !== void 0 && !e.when(t)) return "skipped-when";
6261
6266
  let r = `${e.name}:${e.guards.dedupeKey(t)}`;
6262
6267
  if (await n.dedupe.has(r)) return "skipped-dedupe";
@@ -6265,26 +6270,26 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6265
6270
  let t = n.now?.() ?? Date.now();
6266
6271
  if (!n.rateLimiter.allow(e.name, i.limit, i.windowMs, t)) return "skipped-ratelimit";
6267
6272
  }
6268
- let a = Cu(t);
6273
+ let a = wu(t);
6269
6274
  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, {
6270
6275
  id: a,
6271
6276
  via: "agent"
6272
6277
  }), await n.dedupe.add(r), "acted");
6273
- }, Eu = O("_voltro_wakeups", {
6278
+ }, Du = O("_voltro_wakeups", {
6274
6279
  id: y({ prefix: "wakeup" }),
6275
6280
  tenantId: k(),
6276
6281
  kind: k(),
6277
6282
  refId: k(),
6278
6283
  wakeAt: A(),
6279
6284
  status: k()
6280
- }).index(["status", "wakeAt"]).index(["tenantId"]), Du = async (e) => {
6281
- let t = e.now?.() ?? /* @__PURE__ */ new Date(), n = await ol(e.store, t, e.batchLimit ?? 100);
6285
+ }).index(["status", "wakeAt"]).index(["tenantId"]), Ou = async (e) => {
6286
+ let t = e.now?.() ?? /* @__PURE__ */ new Date(), n = await sl(e.store, t, e.batchLimit ?? 100);
6282
6287
  if (n.length === 0) return 0;
6283
6288
  let r = 0;
6284
- for (let t of n) if (await nl(e.store, t)) try {
6289
+ for (let t of n) if (await rl(e.store, t)) try {
6285
6290
  await e.adapter.wake(t), r++;
6286
6291
  } catch (n) {
6287
- await rl(e.store, t), e.log?.warn("wake: adapter failed — released for retry", {
6292
+ await il(e.store, t), e.log?.warn("wake: adapter failed — released for retry", {
6288
6293
  tenantId: t.tenantId,
6289
6294
  kind: t.kind,
6290
6295
  refId: t.refId,
@@ -6292,11 +6297,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6292
6297
  });
6293
6298
  }
6294
6299
  return r > 0 && e.log?.info("wake: woke due deployments", { count: r }), r;
6295
- }, Ou = (e, t = 1e3) => {
6300
+ }, ku = (e, t = 1e3) => {
6296
6301
  let n = !1, r, i = async () => {
6297
6302
  if (!n) {
6298
6303
  try {
6299
- await Du(e);
6304
+ await Ou(e);
6300
6305
  } catch (t) {
6301
6306
  e.log?.warn("wake: tick failed", { reason: t instanceof Error ? t.message : String(t) });
6302
6307
  }
@@ -6306,10 +6311,10 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6306
6311
  return i(), { stop: () => {
6307
6312
  n = !0, r !== void 0 && clearTimeout(r);
6308
6313
  } };
6309
- }, ku = (e) => ({ wake: async () => {
6314
+ }, Au = (e) => ({ wake: async () => {
6310
6315
  await e.start();
6311
- } }), Au = (e) => new Promise((t) => setTimeout(t, e)), ju = (e) => {
6312
- let t = e.fetchImpl ?? fetch, n = e.now ?? Date.now, r = e.sleep ?? Au, i = e.spawnImpl ?? It, 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 () => {
6316
+ } }), ju = (e) => new Promise((t) => setTimeout(t, e)), Mu = (e) => {
6317
+ let t = e.fetchImpl ?? fetch, n = e.now ?? Date.now, r = e.sleep ?? ju, i = e.spawnImpl ?? It, 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 () => {
6313
6318
  try {
6314
6319
  let n = await t(e.healthUrl);
6315
6320
  return d(n);
@@ -6363,11 +6368,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6363
6368
  },
6364
6369
  stop: m
6365
6370
  };
6366
- }, Mu = async (e) => {
6371
+ }, Nu = async (e) => {
6367
6372
  if (e.signals.connectedClients() > 0 || e.signals.inFlightRequests() > 0 || e.signals.activeWorkflowExecutions() > 0) return !1;
6368
- let t = (e.now?.() ?? /* @__PURE__ */ new Date()).getTime() + (e.wakeLookaheadMs ?? 3e4), n = await sl(e.store);
6373
+ let t = (e.now?.() ?? /* @__PURE__ */ new Date()).getTime() + (e.wakeLookaheadMs ?? 3e4), n = await cl(e.store);
6369
6374
  return !(n !== null && n.wakeAt.getTime() <= t);
6370
- }, Nu = (e, t = Date.now) => {
6375
+ }, Pu = (e, t = Date.now) => {
6371
6376
  let n;
6372
6377
  return {
6373
6378
  update: (r) => {
@@ -6379,7 +6384,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6379
6384
  n = void 0;
6380
6385
  }
6381
6386
  };
6382
- }, Pu = () => {
6387
+ }, Fu = () => {
6383
6388
  let e = 0, t = 0;
6384
6389
  return {
6385
6390
  onRequestStart: () => {
@@ -6397,7 +6402,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6397
6402
  inFlightRequests: () => e,
6398
6403
  openConnections: () => t
6399
6404
  };
6400
- }, Fu = (e) => ({ run: async (t) => (e.onActivity?.(), await e.ensureAwake(), t()) }), Iu = (e, t, n, r) => new Promise((i, a) => {
6405
+ }, Iu = (e) => ({ run: async (t) => (e.onActivity?.(), await e.ensureAwake(), t()) }), Lu = (e, t, n, r) => new Promise((i, a) => {
6401
6406
  let o = st.request({
6402
6407
  host: n,
6403
6408
  port: r,
@@ -6408,7 +6413,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6408
6413
  t.writeHead(e.statusCode ?? 502, e.headers), e.pipe(t), e.on("end", i), e.on("error", a);
6409
6414
  });
6410
6415
  o.on("error", a), e.pipe(o);
6411
- }), Lu = (e, t, n, r, i) => new Promise((a, o) => {
6416
+ }), Ru = (e, t, n, r, i) => new Promise((a, o) => {
6412
6417
  let s = st.request({
6413
6418
  host: r,
6414
6419
  port: i,
@@ -6423,21 +6428,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6423
6428
  };
6424
6429
  t.on("close", s), r.on("close", s), r.on("error", o);
6425
6430
  }), s.on("error", o), s.end();
6426
- }), Ru = (e) => {
6427
- let t = Fu({
6431
+ }), zu = (e) => {
6432
+ let t = Iu({
6428
6433
  ensureAwake: () => e.supervisor.start(),
6429
6434
  ...e.onActivity === void 0 ? {} : { onActivity: e.onActivity }
6430
6435
  }), n = e.activity, r = st.createServer((r, i) => {
6431
- n?.onRequestStart(), i.on("close", () => n?.onRequestEnd()), t.run(() => Iu(r, i, e.targetHost, e.targetPort)).catch((t) => {
6436
+ n?.onRequestStart(), i.on("close", () => n?.onRequestEnd()), t.run(() => Lu(r, i, e.targetHost, e.targetPort)).catch((t) => {
6432
6437
  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");
6433
6438
  });
6434
6439
  });
6435
6440
  return r.on("upgrade", (r, i, a) => {
6436
- n?.onConnect(), i.on("close", () => n?.onDisconnect()), t.run(() => Lu(r, i, a, e.targetHost, e.targetPort)).catch((t) => {
6441
+ n?.onConnect(), i.on("close", () => n?.onDisconnect()), t.run(() => Ru(r, i, a, e.targetHost, e.targetPort)).catch((t) => {
6437
6442
  e.log?.warn("wake-router: upgrade proxy failed", { reason: t instanceof Error ? t.message : String(t) }), i.destroy();
6438
6443
  });
6439
6444
  }), r;
6440
- }, zu = async (e) => {
6445
+ }, Bu = async (e) => {
6441
6446
  try {
6442
6447
  return (await e.query({
6443
6448
  table: "_voltro_workflow_runs",
@@ -6454,15 +6459,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6454
6459
  } catch {
6455
6460
  return 0;
6456
6461
  }
6457
- }, Bu = async (e) => {
6458
- let t = ku(e.supervisor), n = await Du({
6462
+ }, Vu = async (e) => {
6463
+ let t = Au(e.supervisor), n = await Ou({
6459
6464
  store: e.store,
6460
6465
  adapter: t,
6461
6466
  ...e.now === void 0 ? {} : { now: e.now },
6462
6467
  ...e.log === void 0 ? {} : { log: e.log }
6463
6468
  });
6464
6469
  n > 0 && e.idleGate.reset();
6465
- let r = await Mu({
6470
+ let r = await Nu({
6466
6471
  store: e.store,
6467
6472
  signals: e.signals,
6468
6473
  ...e.wakeLookaheadMs === void 0 ? {} : { wakeLookaheadMs: e.wakeLookaheadMs },
@@ -6472,12 +6477,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6472
6477
  woke: n,
6473
6478
  stopped: i
6474
6479
  };
6475
- }, Vu = async (e) => {
6476
- let t = Nu(e.idleGraceMs ?? 6e4), n = e.tickMs ?? 1e3, r = Pu(), i = 0, a = e.signals === void 0, o = e.signals ?? {
6480
+ }, Hu = async (e) => {
6481
+ let t = Pu(e.idleGraceMs ?? 6e4), n = e.tickMs ?? 1e3, r = Fu(), i = 0, a = e.signals === void 0, o = e.signals ?? {
6477
6482
  connectedClients: () => r.openConnections(),
6478
6483
  inFlightRequests: () => r.inFlightRequests(),
6479
6484
  activeWorkflowExecutions: () => i
6480
- }, s = Ru({
6485
+ }, s = zu({
6481
6486
  supervisor: e.supervisor,
6482
6487
  targetHost: e.targetHost,
6483
6488
  targetPort: e.targetPort,
@@ -6496,7 +6501,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6496
6501
  let l = !1, u, d = e.firedRetentionMs ?? 10 * 6e4, f = 0, p = async () => {
6497
6502
  if (!l) {
6498
6503
  try {
6499
- if (a && (i = await zu(e.store)), await Bu({
6504
+ if (a && (i = await Bu(e.store)), await Vu({
6500
6505
  store: e.store,
6501
6506
  supervisor: e.supervisor,
6502
6507
  signals: o,
@@ -6504,7 +6509,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6504
6509
  ...e.wakeLookaheadMs === void 0 ? {} : { wakeLookaheadMs: e.wakeLookaheadMs },
6505
6510
  ...e.log === void 0 ? {} : { log: e.log }
6506
6511
  }), f++ % 60 == 0) {
6507
- let t = await ll(e.store, { firedOlderThan: new Date(Date.now() - d) });
6512
+ let t = await ul(e.store, { firedOlderThan: new Date(Date.now() - d) });
6508
6513
  t > 0 && e.log?.info("orchestrator: pruned fired wakeups", { count: t });
6509
6514
  }
6510
6515
  } catch (t) {
@@ -6519,14 +6524,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6519
6524
  l = !0, u !== void 0 && clearTimeout(u), await new Promise((e) => s.close(() => e()));
6520
6525
  }
6521
6526
  };
6522
- }, Hu = (e) => e, Uu = class extends z.TaggedError()("AnalyticsError", {
6527
+ }, Uu = (e) => e, Wu = class extends z.TaggedError()("AnalyticsError", {
6523
6528
  provider: z.String,
6524
6529
  operation: z.String,
6525
6530
  cause: z.String
6526
- }) {}, Wu = class extends z.TaggedError()("AnalyticsCapabilityNotSupported", {
6531
+ }) {}, Gu = class extends z.TaggedError()("AnalyticsCapabilityNotSupported", {
6527
6532
  provider: z.String,
6528
6533
  capability: z.String
6529
- }) {}, Gu = class extends Ye.Tag("@voltro/AnalyticsSink")() {}, Ku = (e, t) => ({
6534
+ }) {}, Ku = class extends Ye.Tag("@voltro/AnalyticsSink")() {}, qu = (e, t) => ({
6530
6535
  info: e.info,
6531
6536
  track: (n) => e.track(n.tenantId === void 0 ? {
6532
6537
  ...n,
@@ -6545,20 +6550,20 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6545
6550
  tenantId: t
6546
6551
  } : n),
6547
6552
  ...e.mirror === void 0 ? {} : { mirror: e.mirror }
6548
- }), qu = () => F.gen(function* () {
6549
- let e = yield* Gu, t = yield* F.serviceOption(Ne), n = it.match(t, {
6553
+ }), Ju = () => F.gen(function* () {
6554
+ let e = yield* Ku, t = yield* F.serviceOption(Ne), n = it.match(t, {
6550
6555
  onNone: () => null,
6551
6556
  onSome: (e) => e.tenantId ?? null
6552
6557
  });
6553
- return n === null ? e : Ku(e, n);
6554
- }), Ju = "noop", Yu = () => {
6555
- let e = (e) => F.fail(new Wu({
6556
- provider: Ju,
6558
+ return n === null ? e : qu(e, n);
6559
+ }), Yu = "noop", Xu = () => {
6560
+ let e = (e) => F.fail(new Gu({
6561
+ provider: Yu,
6557
6562
  capability: e
6558
6563
  }));
6559
6564
  return {
6560
6565
  info: {
6561
- provider: Ju,
6566
+ provider: Yu,
6562
6567
  capabilities: {
6563
6568
  track: !0,
6564
6569
  aggregate: !1,
@@ -6572,8 +6577,8 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6572
6577
  timeseries: () => e("timeseries"),
6573
6578
  topN: () => e("topN")
6574
6579
  };
6575
- }, Xu = (e) => {
6576
- if (e.length === 0) return Yu();
6580
+ }, Zu = (e) => {
6581
+ if (e.length === 0) return Xu();
6577
6582
  if (e.length === 1) return e[0];
6578
6583
  let t = {
6579
6584
  provider: "compose",
@@ -6590,7 +6595,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6590
6595
  discard: !0
6591
6596
  }), r = (t, n) => {
6592
6597
  let r = e.find((e) => e.info.capabilities[t]);
6593
- return r === void 0 ? F.fail(new Wu({
6598
+ return r === void 0 ? F.fail(new Gu({
6594
6599
  provider: "compose",
6595
6600
  capability: t
6596
6601
  })) : n(r);
@@ -6613,11 +6618,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6613
6618
  topN: (e) => r("topN", (t) => t.topN(e)),
6614
6619
  ...a === void 0 ? {} : { mirror: a }
6615
6620
  };
6616
- }, Zu = (e) => {
6621
+ }, Qu = (e) => {
6617
6622
  let t = e.filter((e) => e.dispose !== void 0);
6618
6623
  return {
6619
6624
  kind: "compose",
6620
- build: (t) => Xu(e.map((e) => e.build(t))),
6625
+ build: (t) => Zu(e.map((e) => e.build(t))),
6621
6626
  tables: e.flatMap((e) => e.tables ?? []),
6622
6627
  initialize: (t) => F.forEach(e, (e) => e.initialize ? e.initialize(t) : F.void, {
6623
6628
  concurrency: 1,
@@ -6628,15 +6633,15 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6628
6633
  discard: !0
6629
6634
  }) } : {}
6630
6635
  };
6631
- }, Qu = {
6632
- kind: "noop",
6633
- build: () => Yu()
6634
6636
  }, $u = {
6637
+ kind: "noop",
6638
+ build: () => Xu()
6639
+ }, ed = {
6635
6640
  tables: [],
6636
6641
  detach: () => {}
6637
- }, ed = (e) => {
6642
+ }, td = (e) => {
6638
6643
  let { store: t, sink: n, log: r } = e, i = n.mirror;
6639
- if (i === void 0 || i.tables.length === 0) return $u;
6644
+ if (i === void 0 || i.tables.length === 0) return ed;
6640
6645
  let a = e.run ?? ((e) => F.runPromise(e)), o = i.primaryKey ?? "id", s = new Set(i.tables), c = (e) => {
6641
6646
  if (e.op === "delete") {
6642
6647
  let t = e.old;
@@ -6660,11 +6665,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6660
6665
  tables: i.tables,
6661
6666
  detach: l
6662
6667
  };
6663
- }, td = (e) => {
6668
+ }, nd = (e) => {
6664
6669
  let t = typeof e.refresh == "string" ? { interval: e.refresh } : e.refresh, n = e.strategy ?? "replace";
6665
6670
  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`);
6666
6671
  if (e.incremental !== void 0) {
6667
- let t = ou({
6672
+ let t = su({
6668
6673
  aggregations: [{
6669
6674
  op: e.incremental.op,
6670
6675
  ...e.incremental.column === void 0 ? {} : { column: e.incremental.column }
@@ -6686,47 +6691,47 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6686
6691
  build: e.build,
6687
6692
  ...e.incremental === void 0 ? {} : { incremental: e.incremental }
6688
6693
  };
6689
- }, nd = (e) => typeof e == "object" && !!e && e._voltroAggregate === !0, rd = class extends z.TaggedError()("AggregateStale", {
6694
+ }, rd = (e) => typeof e == "object" && !!e && e._voltroAggregate === !0, id = class extends z.TaggedError()("AggregateStale", {
6690
6695
  name: z.String,
6691
6696
  ageMs: z.Number,
6692
6697
  maxAgeMs: z.Number
6693
- }) {}, id = class extends z.TaggedError()("AggregateNotFound", { name: z.String }) {}, ad = class extends z.TaggedError()("AggregateError", {
6698
+ }) {}, ad = class extends z.TaggedError()("AggregateNotFound", { name: z.String }) {}, od = class extends z.TaggedError()("AggregateError", {
6694
6699
  name: z.String,
6695
6700
  operation: z.String,
6696
6701
  cause: z.String
6697
- }) {}, od = class extends Ye.Tag("@voltro/AggregateRegistry")() {}, sd = (e) => F.gen(function* () {
6698
- return (yield* od).getHandle(e);
6699
- }), cd = (e, n, r) => {
6702
+ }) {}, sd = class extends Ye.Tag("@voltro/AggregateRegistry")() {}, cd = (e) => F.gen(function* () {
6703
+ return (yield* sd).getHandle(e);
6704
+ }), ld = (e, n, r) => {
6700
6705
  if (e.crossTenant || !n.has(e.table) || r == null) return e;
6701
6706
  let i = d("tenantId", r);
6702
6707
  return {
6703
6708
  ...e,
6704
6709
  predicate: e.predicate ? t(e.predicate, i) : i
6705
6710
  };
6706
- }, ld = (e, t, n) => n === "" && !e.crossTenant && t.has(e.table), ud = (e) => e?.type === "user" && e.tenantId === "", dd = (e, n) => {
6711
+ }, ud = (e, t, n) => n === "" && !e.crossTenant && t.has(e.table), dd = (e) => e?.type === "user" && e.tenantId === "", fd = (e, n) => {
6707
6712
  if (e.includeDeleted || !n.has(e.table)) return e;
6708
6713
  let r = C("deletedAt");
6709
6714
  return {
6710
6715
  ...e,
6711
6716
  predicate: e.predicate ? t(e.predicate, r) : r
6712
6717
  };
6713
- }, fd = (e, t) => t, pd = (e) => F.runPromiseExit(e).then((e) => {
6718
+ }, pd = (e, t) => t, md = (e) => F.runPromiseExit(e).then((e) => {
6714
6719
  if ($e.isSuccess(e)) return e.value;
6715
6720
  let t = N.failureOption(e.cause);
6716
6721
  throw it.isSome(t) ? t.value : N.squash(e.cause);
6717
- }), md = (e, t) => e.pipe(F.provideService(Ne, t)), hd = async (e, t, n) => {
6722
+ }), hd = (e, t) => e.pipe(F.provideService(Ne, t)), gd = async (e, t, n) => {
6718
6723
  let r = await F.runPromise(Re(t, e.guards, n));
6719
6724
  if (r) throw r;
6720
- }, gd = async (e) => {
6725
+ }, _d = async (e) => {
6721
6726
  if (Gn() === void 0) return e;
6722
- let t = await pd(qn(e.subject, (e) => {
6727
+ let t = await md(qn(e.subject, (e) => {
6723
6728
  console.error("[voltro] row filter failed to load", e);
6724
6729
  }));
6725
6730
  return {
6726
6731
  ...e,
6727
6732
  rowFilter: t
6728
6733
  };
6729
- }, _d = async (e) => {
6734
+ }, vd = async (e) => {
6730
6735
  let t = `${e.kind}.${e.name}`, n = Date.now(), r = "ok";
6731
6736
  try {
6732
6737
  if (e.interceptor) {
@@ -6755,28 +6760,28 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6755
6760
  status: r
6756
6761
  });
6757
6762
  }
6758
- }, vd = /* @__PURE__ */ new Set([1213, 1205]), yd = /* @__PURE__ */ new Set([
6763
+ }, yd = /* @__PURE__ */ new Set([1213, 1205]), bd = /* @__PURE__ */ new Set([
6759
6764
  "ER_LOCK_DEADLOCK",
6760
6765
  "ER_LOCK_WAIT_TIMEOUT",
6761
6766
  "40001",
6762
6767
  "40P01"
6763
- ]), bd = (e) => {
6768
+ ]), xd = (e) => {
6764
6769
  let t = e;
6765
6770
  for (let e = 0; e < 6 && typeof t == "object" && t; e++) {
6766
6771
  let e = t;
6767
- if (typeof e.errno == "number" && vd.has(e.errno) || typeof e.code == "string" && yd.has(e.code) || typeof e.sqlState == "string" && yd.has(e.sqlState)) return !0;
6772
+ if (typeof e.errno == "number" && yd.has(e.errno) || typeof e.code == "string" && bd.has(e.code) || typeof e.sqlState == "string" && bd.has(e.sqlState)) return !0;
6768
6773
  t = e.cause;
6769
6774
  }
6770
6775
  return !1;
6771
- }, xd = 3, Sd = (e) => new Promise((t) => setTimeout(t, e)), Cd = async (e, t) => {
6772
- let n = t?.delay ?? ((e) => Sd(e * 20 + Math.floor(Math.random() * 30)));
6776
+ }, Sd = 3, Cd = (e) => new Promise((t) => setTimeout(t, e)), wd = async (e, t) => {
6777
+ let n = t?.delay ?? ((e) => Cd(e * 20 + Math.floor(Math.random() * 30)));
6773
6778
  for (let t = 1;; t++) try {
6774
6779
  return await e();
6775
6780
  } catch (e) {
6776
- if (t >= xd || !bd(e)) throw e;
6781
+ if (t >= Sd || !xd(e)) throw e;
6777
6782
  await n(t);
6778
6783
  }
6779
- }, wd = (e) => (t, n, r) => _d({
6784
+ }, Td = (e) => (t, n, r) => vd({
6780
6785
  name: t.descriptor.name,
6781
6786
  kind: "mutation",
6782
6787
  input: n,
@@ -6784,11 +6789,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6784
6789
  ...e.interceptor ? { interceptor: e.interceptor } : {},
6785
6790
  ...e.recordMetric ? { recordMetric: e.recordMetric } : {},
6786
6791
  runExecutor: async () => {
6787
- await hd(t.descriptor, r.subject, n);
6788
- let i = await gd(r), a = [], o = await Cd(async () => (a.length = 0, e.store.transactional(async (o) => {
6792
+ await gd(t.descriptor, r.subject, n);
6793
+ let i = await _d(r), a = [], o = await wd(async () => (a.length = 0, e.store.transactional(async (o) => {
6789
6794
  let s = e.undoCapture?.(o), c = s ? s.tx : o, l = e.buildContext(i, c, { afterCommit: (e) => {
6790
6795
  a.push(e);
6791
- } }), u = t.executor(n, l), d = F.isEffect(u) ? await e.runEffect(md(u, r.subject), l.store) : await u;
6796
+ } }), u = t.executor(n, l), d = F.isEffect(u) ? await e.runEffect(hd(u, r.subject), l.store) : await u;
6792
6797
  return s && await s.persist(l.store, {
6793
6798
  tag: t.descriptor.name,
6794
6799
  subject: r.subject,
@@ -6798,30 +6803,30 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6798
6803
  for (let e of a) await e();
6799
6804
  return o;
6800
6805
  }
6801
- }), Td = (e) => e && typeof e == "object" && "descriptor" in e ? e.descriptor : e, Ed = (e) => typeof e == "object" && !!e && !Array.isArray(e) && "table" in e && "order" in e, Dd = (e) => {
6806
+ }), Ed = (e) => e && typeof e == "object" && "descriptor" in e ? e.descriptor : e, Dd = (e) => typeof e == "object" && !!e && !Array.isArray(e) && "table" in e && "order" in e, Od = (e) => {
6802
6807
  let t = e.descriptor.source;
6803
6808
  return t == null ? [] : typeof t == "string" ? [t] : [...t];
6804
- }, Od = (e, t) => (n) => () => {
6809
+ }, kd = (e, t) => (n) => () => {
6805
6810
  let r = e.descriptor.guards;
6806
6811
  return !r || r.length === 0 ? Promise.resolve(null) : F.runPromise(Re(n, r, t));
6807
- }, kd = (e) => (t, n) => (r) => {
6808
- let i = e.buildContext(r), a = Od(t, n)(r.subject), o = async () => {
6812
+ }, Ad = (e) => (t, n) => (r) => {
6813
+ let i = e.buildContext(r), a = kd(t, n)(r.subject), o = async () => {
6809
6814
  let i = await a();
6810
6815
  if (i) throw i;
6811
- let o = e.buildContext(await gd(r)), s = t.executor(n, o);
6812
- return F.isEffect(s) ? F.runPromise(e.provideEffect(md(s, r.subject), o.store)) : Td(await Promise.resolve(s));
6816
+ let o = e.buildContext(await _d(r)), s = t.executor(n, o);
6817
+ return F.isEffect(s) ? F.runPromise(e.provideEffect(hd(s, r.subject), o.store)) : Ed(await Promise.resolve(s));
6813
6818
  }, s = (n) => {
6814
- let i = Td(n);
6815
- return Ed(i) ? e.finalize(i, r) : {
6819
+ let i = Ed(n);
6820
+ return Dd(i) ? e.finalize(i, r) : {
6816
6821
  __voltroComputed: !0,
6817
6822
  value: i,
6818
- dependentTables: Dd(t),
6823
+ dependentTables: Od(t),
6819
6824
  tenantId: r.subject?.tenantId ?? null,
6820
6825
  recompute: o
6821
6826
  };
6822
6827
  }, c = () => {
6823
6828
  let a = t.executor(n, i);
6824
- return F.isEffect(a) ? e.provideEffect(md(a, r.subject), i.store).pipe(F.map(s)) : a instanceof Promise ? F.promise(() => a).pipe(F.map(s)) : s(a);
6829
+ return F.isEffect(a) ? e.provideEffect(hd(a, r.subject), i.store).pipe(F.map(s)) : a instanceof Promise ? F.promise(() => a).pipe(F.map(s)) : s(a);
6825
6830
  }, l = () => {
6826
6831
  let e = t.descriptor.guards;
6827
6832
  return !e || e.length === 0 ? c() : Re(r.subject, e, n).pipe(F.flatMap((e) => {
@@ -6843,14 +6848,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6843
6848
  traceId: r.traceId,
6844
6849
  ...r.spanId === void 0 ? {} : { spanId: r.spanId }
6845
6850
  });
6846
- }, Ad = (e) => async (t, n, r) => {
6847
- let i = await gd(r), a = kd(e)(t, n)(i), o = F.isEffect(a) ? await pd(a) : a;
6851
+ }, jd = (e) => async (t, n, r) => {
6852
+ let i = await _d(r), a = Ad(e)(t, n)(i), o = F.isEffect(a) ? await md(a) : a;
6848
6853
  return rr(o) ? o.value : e.queryRows(o);
6849
- }, jd = (e) => (t, n, r, i) => {
6854
+ }, Md = (e) => (t, n, r, i) => {
6850
6855
  let a = !1, o;
6851
6856
  return (async () => {
6852
6857
  try {
6853
- let s = await gd(r), c = kd(e)(t, n)(s), l = F.isEffect(c) ? await pd(c) : c, u = (e) => i(e), d = rr(l) ? await e.subscribeComputed(l, u, s) : await e.subscribeDescriptor(l, u, s);
6858
+ let s = await _d(r), c = Ad(e)(t, n)(s), l = F.isEffect(c) ? await md(c) : c, u = (e) => i(e), d = rr(l) ? await e.subscribeComputed(l, u, s) : await e.subscribeDescriptor(l, u, s);
6854
6859
  a ? d() : o = d;
6855
6860
  } catch (e) {
6856
6861
  i({
@@ -6861,7 +6866,7 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6861
6866
  })(), () => {
6862
6867
  a = !0, o?.();
6863
6868
  };
6864
- }, Md = (e) => (t, n, r) => _d({
6869
+ }, Nd = (e) => (t, n, r) => vd({
6865
6870
  name: t.descriptor.name,
6866
6871
  kind: "action",
6867
6872
  input: n,
@@ -6869,16 +6874,16 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6869
6874
  ...e.interceptor ? { interceptor: e.interceptor } : {},
6870
6875
  ...e.recordMetric ? { recordMetric: e.recordMetric } : {},
6871
6876
  runExecutor: async () => {
6872
- await hd(t.descriptor, r.subject, n);
6873
- let i = e.buildContext(await gd(r)), a = t.executor(n, i);
6874
- return F.isEffect(a) ? e.runEffect(md(a, r.subject), i.store) : a;
6877
+ await gd(t.descriptor, r.subject, n);
6878
+ let i = e.buildContext(await _d(r)), a = t.executor(n, i);
6879
+ return F.isEffect(a) ? e.runEffect(hd(a, r.subject), i.store) : a;
6875
6880
  }
6876
- }), Nd = (e) => e instanceof Date ? e.toISOString() : typeof e == "string" && e.length > 0 ? e : null, Pd = (e) => typeof e == "string" && e.length > 0 ? e : null, Fd = [
6881
+ }), Pd = (e) => e instanceof Date ? e.toISOString() : typeof e == "string" && e.length > 0 ? e : null, Fd = (e) => typeof e == "string" && e.length > 0 ? e : null, Id = [
6877
6882
  "updatedAt",
6878
6883
  "createdAt",
6879
6884
  "updatedBy",
6880
6885
  "createdBy"
6881
- ], Id = (e) => Fd.some((t) => t in e), Ld = (e, t, n) => {
6886
+ ], Ld = (e) => Id.some((t) => t in e), Rd = (e, t, n) => {
6882
6887
  let r = {
6883
6888
  table: t.table,
6884
6889
  id: t.id,
@@ -6893,14 +6898,14 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6893
6898
  found: !1
6894
6899
  };
6895
6900
  let i = t.column === void 0 ? void 0 : e[t.column];
6896
- if (!Id(e)) return {
6901
+ if (!Ld(e)) return {
6897
6902
  ...r,
6898
6903
  value: i,
6899
6904
  lastWrite: null,
6900
6905
  attribution: "none",
6901
6906
  found: !0
6902
6907
  };
6903
- let a = Pd(e.updatedBy) ?? Pd(e.createdBy), o = Nd(e.updatedAt) ?? Nd(e.createdAt);
6908
+ let a = Fd(e.updatedBy) ?? Fd(e.createdBy), o = Pd(e.updatedAt) ?? Pd(e.createdAt);
6904
6909
  return {
6905
6910
  ...r,
6906
6911
  value: i,
@@ -6912,12 +6917,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6912
6917
  attribution: "audit",
6913
6918
  found: !0
6914
6919
  };
6915
- }, Rd = (e, t) => {
6920
+ }, zd = (e, t) => {
6916
6921
  let n = e.map((e) => {
6917
6922
  let n = e.newValue ?? e.value, r = t.column !== void 0 && n && typeof n == "object" ? n[t.column] : e.newValue ?? e.value;
6918
6923
  return {
6919
- actor: { id: Pd(e.actor) ?? Pd(e.changedBy) },
6920
- at: Nd(e.at) ?? Nd(e.changedAt),
6924
+ actor: { id: Fd(e.actor) ?? Fd(e.changedBy) },
6925
+ at: Pd(e.at) ?? Pd(e.changedAt),
6921
6926
  ...e.traceId === void 0 ? {} : { traceId: e.traceId },
6922
6927
  value: r
6923
6928
  };
@@ -6932,12 +6937,12 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6932
6937
  history: n,
6933
6938
  found: n.length > 0
6934
6939
  };
6935
- }, zd = (e) => {
6940
+ }, Bd = (e) => {
6936
6941
  let t = e.new?.id;
6937
6942
  if (typeof t == "string") return t;
6938
6943
  let n = e.old?.id;
6939
6944
  return typeof n == "string" ? n : void 0;
6940
- }, Bd = (e) => {
6945
+ }, Vd = (e) => {
6941
6946
  let t = {};
6942
6947
  if (e.op === "insert") for (let [n, r] of Object.entries(e.new ?? {})) t[n] = {
6943
6948
  from: void 0,
@@ -6957,11 +6962,11 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6957
6962
  return {
6958
6963
  table: e.table,
6959
6964
  op: e.op,
6960
- id: zd(e),
6965
+ id: Bd(e),
6961
6966
  fields: t
6962
6967
  };
6963
- }, Vd = (e) => {
6964
- let t = e.map(Bd);
6968
+ }, Hd = (e) => {
6969
+ let t = e.map(Vd);
6965
6970
  return {
6966
6971
  rows: t,
6967
6972
  summary: {
@@ -6970,21 +6975,21 @@ var K = /* @__PURE__ */ new Map(), pr = (e, t) => {
6970
6975
  deletes: t.filter((e) => e.op === "delete").length
6971
6976
  }
6972
6977
  };
6973
- }, Hd = class extends Error {
6978
+ }, Ud = class extends Error {
6974
6979
  constructor() {
6975
6980
  super("voltro:preview-rollback"), this.name = "PreviewRollback";
6976
6981
  }
6977
- }, Ud = async (e, t) => {
6982
+ }, Wd = async (e, t) => {
6978
6983
  let n, r = !1;
6979
6984
  try {
6980
6985
  await e.transactional(async (e) => {
6981
- throw n = await t(e), r = !0, new Hd();
6986
+ throw n = await t(e), r = !0, new Ud();
6982
6987
  });
6983
6988
  } catch (e) {
6984
- if (!(e instanceof Hd)) throw e;
6989
+ if (!(e instanceof Ud)) throw e;
6985
6990
  }
6986
6991
  if (!r) throw Error("preview: handler did not complete");
6987
6992
  return n;
6988
- }, Wd = "framework-runtime";
6993
+ }, Gd = "framework-runtime";
6989
6994
  //#endregion
6990
- export { ka as API_KEYS_TABLE, Rs as AccessDenied, ad as AggregateError, mu as AggregateMaintainer, id as AggregateNotFound, od as AggregateRegistry, rd as AggregateStale, Wu as AnalyticsCapabilityNotSupported, Uu as AnalyticsError, Gu as AnalyticsSink, X as CONNECTIONS_TABLE, Lo as CONNECTION_GRANTS_TABLE, Fc as CircuitBreaker, Nc as CircuitOpen, os as ConnectionNotConnected, Ui as DEFAULT_MAX_RPC_BODY_BYTES, is as DEFAULT_REFRESH_SKEW_MS, Hn as DEFAULT_ROW_FILTER_RETRY, dl as DORMANCY_WAKEUP_TENANT, Qr as DeleteBuilder, er as Dispatcher, Wa as EffectStore, vs as GRANT_TTL_MS, nn as InMemoryDataStore, Wt as IndexedMatcher, Lt as LinearScanMatcher, nt as MetricBoundaries, Ju as NOOP_ANALYTICS_PROVIDER, Kn as NO_ROW_FILTER, Gr as NoRowFound, So as OUTBOX_ATTEMPTS_TABLE, ko as OUTBOX_ATTEMPT_LOG_CAP, Y as OUTBOX_TABLE, Kr as OptimisticLockError, Ls as REBAC_ADMIN_SCOPE, as as REFRESH_LEASE_MS, Wd as RUNTIME_NAME, wu as ReactionRateLimiter, yi as ReplicatedDataStore, Vn as RowFilterUnavailable, ul as SCHEDULE_SUBJECT, Ua as SYSTEM_SUBJECT, Xr as SelectBuilder, ac as SsrfBlockedError, ti as StoreOperationFailed, qt as SubscriptionRegistry, ni as TableValidationFailed, ei as TenantScopeViolation, eu as TimelineRecorder, Nl as UndoBoundaryError, Fl as UndoStack, Zr as UpdateBuilder, fc as VOLTRO_AUDIT_MIXIN_ID, pc as VOLTRO_SOFT_DELETE_MIXIN_ID, mc as VOLTRO_TENANT_MIXIN_ID, eo as WorkflowPayloadError, hr as _connectionStreamCount, gr as _resetConnectionSubjectsForTest, zo as _voltroConnectionGrantsTable, Io as _voltroConnectionsTable, hu as _voltroRebacTuplesTable, Sl as _voltroScheduleClaimsTable, xl as _voltroScheduleRunsTable, Cl as _voltroTracesTable, wl as _voltroUndoLogTable, Eu as _voltroWakeupsTable, _o as _voltroWorkflowEventDeliveriesTable, go as _voltroWorkflowEventsTable, ci as actingUserId, Ha as apiKeyManagementRoutes, ai as applyDefined, fu as applyDelta, Ll as applyInverse, Rl as applyInverses, Xn as applyRowFilter, Zn as applyRowFilterToDescriptor, dd as applySoftDeleteScope, cd as applyTenantScope, Kl as applyUndoInvocation, Js as assertCan, Uo as assertConnectionCipherConfigured, ed as attachAnalyticsMirror, Ji as awaitServerListening, Oo as backoffMs, Ss as beginOAuthConnect, cr as bindConnectionSubject, Hi as bindMutation, Pi as bindStream, Ni as bindSubscription, Oi as bindSubscriptionUntyped, uu as buildIvmState, Vd as buildPreview, vu as buildRebacInterceptor, bu as buildRebacReadFilter, pi as buildSubjectKey, $i as buildTracingLayer, ma as cachedBackend, qs as can, $c as cancelWakeup, ou as classifyShape, us as clearConnectionRefreshFlights, Us as clearResourcePolicies, a as clearRetentions, Rc as clearSystemStoreHandle, Jc as compileCron, Cs as completeOAuthConnect, Zu as composeAnalytics, Xu as composeAnalyticsSinks, ys as connectionCallbackPath, Ho as connectionLabel, _r as connectionSubjectsSnapshot, zu as countRunningWorkflows, Fn as counter, Oc as crud, vi as currentRoutingContext, wr as currentTraceContext, za as dataStoreApiKeyStore, xa as dataStoreIdempotencyStore, Ea as dataStoreKvStore, Mr as decryptField, td as defineAggregate, Vo as defineConnection, uo as defineEventTrigger, fd as defineExecutor, To as defineOutboxHandler, xu as defineReaction, Bs as defineResourcePolicy, qc as defineSchedule, Hu as defineSubscriber, Qn as deliveredRowCount, Tr as deriveKey, Bd as diffChange, No as drainOutbox, ol as dueWakeups, Ks as effectiveRelations, yc as emptySchemaRegistry, Rr as enableGraphObservation, jr as encryptField, ca as envSecretsBackend, ns as exchangeAuthorizationCode, xr as externalSpanFromTraceparent, an as extractDbCause, Kt as fingerprintFor, Qo as forgetCredential, Mc as formatServerOnlyLeaks, yr as formatTraceparent, Il as forwardChangeFromCdc, Ba as frameworkApiKeyStrategy, In as gauge, ja as generateApiKeyToken, Ds as getConnectionResolver, lr as getConnectionSubject, q as getFieldCipher, Vs as getResourcePolicy, Gn as getRowFilter, zc as getSystemStoreHandle, nu as getTimelineRecorder, ec as getTupleSource, $ as groupKeyOf, Ln as histogramMetric, Rd as historyProvenance, ha as httpSecretsBackend, Ft as inspectWorkflow, tc as installPolicyGuardResolver, mr as interruptConnectionStreams, jl as invertChange, nd as isAggregateDefinition, ld as isEmptyTenantScopedRead, on as isForeignKeyViolation, Mu as isIdleNow, zi as isInfraError, zr as isObservingGraph, ud as isOrglessUserSubject, Pl as isSafeToApply, Gc as isScheduleDefinition, fo as isWorkflowEventTriggerDefinition, lu as ivmValue, Ld as lastWriteProvenance, $o as listConnectionStates, Hs as listResourcePolicies, ee as listRetentions, gu as loadResourceTuples, yu as loadSubjectTuples, Vc as localityAwareSelector, Md as makeActionRunner, ml as makeAdvisoryLockCoordinator, Er as makeAesCipher, Pa as makeApiKeyService, dc as makeApiKeyUsageBuffer, Ra as makeApiKeyUsageFlusher, sn as makeAppAccess, Da as makeAsyncKv, sa as makeBufferingSpanProcessor, Wo as makeConnectionRegistry, ks as makeConnectionResolver, As as makeConnectionsFacade, bl as makeCoordinatedScheduler, rc as makeDataLoader, Is as makeDisconnectConnectionExecutor, qa as makeEffectStoreLayer, vo as makeEventsFacade, Dr as makeFieldCipher, $r as makeFluentStore, Nu as makeIdleGate, oo as makeLazyWorkflowFacade, Ns as makeListConnectionsExecutor, wd as makeMutationRunner, Ad as makeOneShotQueryRunner, Do as makeOutboxFacade, io as makePostCommitWorkflowFacade, ku as makeProcessAdapter, kd as makeQueryDescriptorProducer, Od as makeQueryReauthorizer, jd as makeQuerySubscriber, Pu as makeRouterActivity, hc as makeSchemaRegistry, Ps as makeStartConnectionExecutor, Fs as makeSubmitTokenExecutor, kl as makeUndoCapture, Fu as makeWakeGate, Ru as makeWakeProxyServer, ro as makeWorkflowFacade, ao as makeWorkflowFacadeWithCallerContext, so as makeWorkflowHandlers, co as makeWorkflowLayers, Xa as makeWorkflowRunHandle, el as markWakeupFired, du as materializeIvm, Fa as memoryApiKeyStore, Uc as memoryReplicationAdapter, fi as memoryRywPositionStore, Yc as nextFiring, sl as nextWakeup, ju as nodeProcessSupervisor, Yu as noopAnalytics, Qu as noopAnalyticsSpec, Oa as noopKv, Wr as observeStore, Hr as observedGraph, dr as onBindConnectionSubject, wo as outboxAttemptsTable, xo as outboxTable, br as parseTraceparent, to as payloadPropertyNames, ui as powerOfTwoSelector, Ud as previewInRollback, Jo as projectConnectionState, ll as pruneWakeups, Ws as rebacPolicyGraph, An as recordSample, Pn as recordSubscriptionActive, Mn as recordSubscriptionDelivery, Vr as recordTableAccess, iu as recordTimelineEvent, wc as redactColumns, Zl as redactRow, mi as redisRywPositionStore, ql as redoUndoInvocation, rs as refreshAccessToken, pr as registerConnectionStream, se as registerRetention, Qc as registerWakeup, rl as releaseWakeup, di as replicaHealth, Ai as resetComputedQueryCacheWarnings, Ur as resetObservedGraph, da as resetSecretsBackend, ps as resolveConnection, Os as resolveConnectionForSubject, Hc as resolveCurrentRegion, cn as resolveDependentTables, xs as resolveRedirectUri, pu as resolveRescan, qn as resolveRowFilterScope, Jn as resolveRowFilterScopeFor, fa as resolveSecret, pa as resolveSecretSync, ga as resolveSecretsBackend, Jl as resolveTimelineMode, le as retentionTtlMsFromEnv, $l as reverseEventOverRows, Xs as revokedIds, Bc as runAsSystem, Bu as runOrchestratorTick, pd as runProvidedEffect, Tu as runReaction, Vu as runSingleNodeOrchestrator, Ou as runWakeLoop, Cd as runWithDeadlockRetry, Br as runWithObservedProcedure, _i as runWithRoutingContext, Cr as runWithTraceContext, bs as sanitizeRedirectTo, yl as scheduleCoordinated, kc as schemaPropertyNames, jc as serverOnlyLeaks, Es as setConnectionResolver, kr as setFieldCipher, Wn as setRowFilter, ua as setSecretsBackend, Lc as setSystemStoreHandle, ru as setTimelineRecorderForTest, $s as setTupleSource, Aa as sha256Hex, fl as singleCoordinator, zn as snapshotMetrics, Bn as snapshotMetricsSync, uc as ssrfGuardHttpClientLayer, lc as ssrfReason, Wi as startRpcServer, gl as startScheduler, Xo as storeCredential, ws as sweepExpiredGrants, he as sweepRetention, Ml as synthesizeInverse, ic as tracingHttpClientLayer, lo as triggerWorkflow, nl as tryClaimWakeup, ur as unbindConnectionSubject, Tl as undoCaptureEnabled, Wl as undoLogExecutor, sd as useAggregate, qu as useAnalytics, Ys as visibleRows, Du as wakeDueOnce, gd as withRowFilter, Ja as workflowToRpc, Ol as wrapCaptureStore, xc as wrapStoreWithBootCodec, li as wrapStoreWithMixinBehaviour };
6995
+ export { Aa as API_KEYS_TABLE, zs as AccessDenied, od as AggregateError, hu as AggregateMaintainer, ad as AggregateNotFound, sd as AggregateRegistry, id as AggregateStale, Gu as AnalyticsCapabilityNotSupported, Wu as AnalyticsError, Ku as AnalyticsSink, X as CONNECTIONS_TABLE, Ro as CONNECTION_GRANTS_TABLE, Ic as CircuitBreaker, Pc as CircuitOpen, ss as ConnectionNotConnected, Wi as DEFAULT_MAX_RPC_BODY_BYTES, as as DEFAULT_REFRESH_SKEW_MS, Hn as DEFAULT_ROW_FILTER_RETRY, fl as DORMANCY_WAKEUP_TENANT, Qr as DeleteBuilder, er as Dispatcher, Ga as EffectStore, ys as GRANT_TTL_MS, nn as InMemoryDataStore, Wt as IndexedMatcher, Lt as LinearScanMatcher, nt as MetricBoundaries, Yu as NOOP_ANALYTICS_PROVIDER, Kn as NO_ROW_FILTER, Gr as NoRowFound, Co as OUTBOX_ATTEMPTS_TABLE, Ao as OUTBOX_ATTEMPT_LOG_CAP, Y as OUTBOX_TABLE, Kr as OptimisticLockError, Rs as REBAC_ADMIN_SCOPE, os as REFRESH_LEASE_MS, Gd as RUNTIME_NAME, Tu as ReactionRateLimiter, yi as ReplicatedDataStore, Vn as RowFilterUnavailable, dl as SCHEDULE_SUBJECT, Wa as SYSTEM_SUBJECT, Xr as SelectBuilder, oc as SsrfBlockedError, ti as StoreOperationFailed, qt as SubscriptionRegistry, ni as TableValidationFailed, ei as TenantScopeViolation, tu as TimelineRecorder, Pl as UndoBoundaryError, Il as UndoStack, Zr as UpdateBuilder, pc as VOLTRO_AUDIT_MIXIN_ID, mc as VOLTRO_SOFT_DELETE_MIXIN_ID, hc as VOLTRO_TENANT_MIXIN_ID, to as WorkflowPayloadError, hr as _connectionStreamCount, gr as _resetConnectionSubjectsForTest, Bo as _voltroConnectionGrantsTable, Lo as _voltroConnectionsTable, gu as _voltroRebacTuplesTable, Cl as _voltroScheduleClaimsTable, Sl as _voltroScheduleRunsTable, wl as _voltroTracesTable, Tl as _voltroUndoLogTable, Du as _voltroWakeupsTable, vo as _voltroWorkflowEventDeliveriesTable, _o as _voltroWorkflowEventsTable, ci as actingUserId, Ua as apiKeyManagementRoutes, ai as applyDefined, pu as applyDelta, Rl as applyInverse, zl as applyInverses, Xn as applyRowFilter, Zn as applyRowFilterToDescriptor, fd as applySoftDeleteScope, ld as applyTenantScope, ql as applyUndoInvocation, Ys as assertCan, Wo as assertConnectionCipherConfigured, td as attachAnalyticsMirror, Yi as awaitServerListening, ko as backoffMs, Cs as beginOAuthConnect, cr as bindConnectionSubject, Ui as bindMutation, Fi as bindStream, Pi as bindSubscription, ki as bindSubscriptionUntyped, du as buildIvmState, Hd as buildPreview, yu as buildRebacInterceptor, xu as buildRebacReadFilter, pi as buildSubjectKey, ea as buildTracingLayer, ha as cachedBackend, Js as can, el as cancelWakeup, su as classifyShape, ds as clearConnectionRefreshFlights, Ws as clearResourcePolicies, a as clearRetentions, zc as clearSystemStoreHandle, Yc as compileCron, ws as completeOAuthConnect, Qu as composeAnalytics, Zu as composeAnalyticsSinks, bs as connectionCallbackPath, Uo as connectionLabel, _r as connectionSubjectsSnapshot, Bu as countRunningWorkflows, Fn as counter, kc as crud, vi as currentRoutingContext, wr as currentTraceContext, Ba as dataStoreApiKeyStore, Sa as dataStoreIdempotencyStore, Da as dataStoreKvStore, Mr as decryptField, nd as defineAggregate, Ho as defineConnection, fo as defineEventTrigger, pd as defineExecutor, Eo as defineOutboxHandler, Su as defineReaction, Vs as defineResourcePolicy, Jc as defineSchedule, Uu as defineSubscriber, Qn as deliveredRowCount, Tr as deriveKey, Vd as diffChange, Po as drainOutbox, sl as dueWakeups, qs as effectiveRelations, bc as emptySchemaRegistry, Rr as enableGraphObservation, jr as encryptField, la as envSecretsBackend, rs as exchangeAuthorizationCode, xr as externalSpanFromTraceparent, an as extractDbCause, Kt as fingerprintFor, $o as forgetCredential, Nc as formatServerOnlyLeaks, yr as formatTraceparent, Ll as forwardChangeFromCdc, Va as frameworkApiKeyStrategy, In as gauge, Ma as generateApiKeyToken, Os as getConnectionResolver, lr as getConnectionSubject, q as getFieldCipher, Hs as getResourcePolicy, Gn as getRowFilter, Bc as getSystemStoreHandle, ru as getTimelineRecorder, tc as getTupleSource, $ as groupKeyOf, Ln as histogramMetric, zd as historyProvenance, ga as httpSecretsBackend, Ft as inspectWorkflow, nc as installPolicyGuardResolver, mr as interruptConnectionStreams, Ml as invertChange, rd as isAggregateDefinition, ud as isEmptyTenantScopedRead, on as isForeignKeyViolation, Nu as isIdleNow, Bi as isInfraError, zr as isObservingGraph, dd as isOrglessUserSubject, Fl as isSafeToApply, Kc as isScheduleDefinition, po as isWorkflowEventTriggerDefinition, uu as ivmValue, Rd as lastWriteProvenance, es as listConnectionStates, Us as listResourcePolicies, ee as listRetentions, _u as loadResourceTuples, bu as loadSubjectTuples, Hc as localityAwareSelector, Nd as makeActionRunner, hl as makeAdvisoryLockCoordinator, Er as makeAesCipher, Fa as makeApiKeyService, fc as makeApiKeyUsageBuffer, za as makeApiKeyUsageFlusher, sn as makeAppAccess, Oa as makeAsyncKv, ca as makeBufferingSpanProcessor, Go as makeConnectionRegistry, As as makeConnectionResolver, js as makeConnectionsFacade, xl as makeCoordinatedScheduler, ic as makeDataLoader, Ls as makeDisconnectConnectionExecutor, Ja as makeEffectStoreLayer, yo as makeEventsFacade, Dr as makeFieldCipher, $r as makeFluentStore, Pu as makeIdleGate, so as makeLazyWorkflowFacade, Ps as makeListConnectionsExecutor, Td as makeMutationRunner, jd as makeOneShotQueryRunner, Oo as makeOutboxFacade, ao as makePostCommitWorkflowFacade, Au as makeProcessAdapter, Ad as makeQueryDescriptorProducer, kd as makeQueryReauthorizer, Md as makeQuerySubscriber, Fu as makeRouterActivity, gc as makeSchemaRegistry, Fs as makeStartConnectionExecutor, Is as makeSubmitTokenExecutor, Al as makeUndoCapture, Iu as makeWakeGate, zu as makeWakeProxyServer, io as makeWorkflowFacade, oo as makeWorkflowFacadeWithCallerContext, co as makeWorkflowHandlers, lo as makeWorkflowLayers, Za as makeWorkflowRunHandle, tl as markWakeupFired, fu as materializeIvm, Ia as memoryApiKeyStore, Wc as memoryReplicationAdapter, fi as memoryRywPositionStore, Xc as nextFiring, cl as nextWakeup, Mu as nodeProcessSupervisor, Xu as noopAnalytics, $u as noopAnalyticsSpec, ka as noopKv, Wr as observeStore, Hr as observedGraph, dr as onBindConnectionSubject, To as outboxAttemptsTable, So as outboxTable, br as parseTraceparent, no as payloadPropertyNames, ui as powerOfTwoSelector, Wd as previewInRollback, Yo as projectConnectionState, ul as pruneWakeups, Gs as rebacPolicyGraph, An as recordSample, Pn as recordSubscriptionActive, Mn as recordSubscriptionDelivery, Vr as recordTableAccess, au as recordTimelineEvent, Tc as redactColumns, Ql as redactRow, mi as redisRywPositionStore, Jl as redoUndoInvocation, is as refreshAccessToken, pr as registerConnectionStream, se as registerRetention, $c as registerWakeup, il as releaseWakeup, di as replicaHealth, ji as resetComputedQueryCacheWarnings, Ur as resetObservedGraph, fa as resetSecretsBackend, ms as resolveConnection, ks as resolveConnectionForSubject, Uc as resolveCurrentRegion, cn as resolveDependentTables, Ss as resolveRedirectUri, mu as resolveRescan, qn as resolveRowFilterScope, Jn as resolveRowFilterScopeFor, pa as resolveSecret, ma as resolveSecretSync, _a as resolveSecretsBackend, Yl as resolveTimelineMode, le as retentionTtlMsFromEnv, eu as reverseEventOverRows, Zs as revokedIds, Vc as runAsSystem, Vu as runOrchestratorTick, md as runProvidedEffect, Eu as runReaction, Hu as runSingleNodeOrchestrator, ku as runWakeLoop, wd as runWithDeadlockRetry, Br as runWithObservedProcedure, _i as runWithRoutingContext, Cr as runWithTraceContext, xs as sanitizeRedirectTo, bl as scheduleCoordinated, Ac as schemaPropertyNames, Mc as serverOnlyLeaks, Ds as setConnectionResolver, kr as setFieldCipher, Wn as setRowFilter, da as setSecretsBackend, Rc as setSystemStoreHandle, iu as setTimelineRecorderForTest, ec as setTupleSource, ja as sha256Hex, pl as singleCoordinator, zn as snapshotMetrics, Bn as snapshotMetricsSync, dc as ssrfGuardHttpClientLayer, uc as ssrfReason, Gi as startRpcServer, _l as startScheduler, Zo as storeCredential, Ts as sweepExpiredGrants, he as sweepRetention, Nl as synthesizeInverse, ac as tracingHttpClientLayer, uo as triggerWorkflow, rl as tryClaimWakeup, ur as unbindConnectionSubject, El as undoCaptureEnabled, Gl as undoLogExecutor, cd as useAggregate, Ju as useAnalytics, Xs as visibleRows, Ou as wakeDueOnce, _d as withRowFilter, Ya as workflowToRpc, kl as wrapCaptureStore, Sc as wrapStoreWithBootCodec, li as wrapStoreWithMixinBehaviour };