@voltro/workflow 0.79.1 → 0.81.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.
@@ -1,4 +1,4 @@
1
- import { E as e, F as t, I as n, L as r, M as i, N as a, P as o, T as s, w as c } from "./primitives-bv2JHUfk.js";
1
+ import { E as e, F as t, L as n, M as r, N as i, P as a, R as o, T as s, w as c } from "./primitives-BJBn8tiH.js";
2
2
  import { _ as l, c as u, d, f, g as p, h as m, i as h, m as g, p as _, s as v, v as ee } from "./clusterDiagnostics-Cwt-WFec.js";
3
3
  import { Activity as y, DurableClock as b, DurableDeferred as te, Workflow as ne, WorkflowEngine as re } from "@effect/workflow";
4
4
  import { Cause as x, Effect as S, Either as C, Exit as ie, Fiber as ae, FiberRef as oe, Layer as se, Schema as w } from "effect";
@@ -3123,7 +3123,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3123
3123
  constructor(e, t, n = !1) {
3124
3124
  super(n ? `Submission ${e} rejected; failure report retained` : `Submission ${e} remains unacknowledged`, { cause: t }), this.submissionId = e, this.rejected = n;
3125
3125
  }
3126
- }, Nr = async (e, t = {}) => {
3126
+ }, Nr = (e) => e instanceof Mr && !e.rejected, Pr = async (e, t = {}) => {
3127
3127
  let n = e.now ?? (() => Date.now()), r = e.log, i = t.batchSize ?? 200, a, o, s, c, l, u;
3128
3128
  try {
3129
3129
  c = await Cr(e, n(), i, e.deadLetterAfterAttempts ?? 50), l = await Tr(e, n(), i), u = await Or(e, n(), i), a = await (e.readPauses?.() ?? Ht(e.store));
@@ -3167,7 +3167,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3167
3167
  if (m !== !1 && t.attempts + 1 >= m) return `pending ${r} was dead-lettered after ${t.attempts + 1} failed attempts: ${String(n)}`;
3168
3168
  };
3169
3169
  for (let t of p) try {
3170
- await Lr(e, t, a, d, n());
3170
+ await Rr(e, t, a, d, n());
3171
3171
  } catch (i) {
3172
3172
  if (d.failed++, i instanceof Mr) {
3173
3173
  i.rejected && d.deadLettered++, r?.warn?.(i.message, {
@@ -3179,7 +3179,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3179
3179
  let a = h(t, i, "intent");
3180
3180
  if (a !== void 0) {
3181
3181
  let o = n(), s = String(i);
3182
- if (await Fr(e, [t], a, s, o, !1).catch((e) => (r?.warn?.("workflow flow control: intent could not be dead-lettered with its report", {
3182
+ if (await Ir(e, [t], a, s, o, !1).catch((e) => (r?.warn?.("workflow flow control: intent could not be dead-lettered with its report", {
3183
3183
  workflow: t.workflowName,
3184
3184
  intent: t.id,
3185
3185
  cause: String(e)
@@ -3199,7 +3199,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3199
3199
  }), await an(e.store, t, String(i), n()).catch(() => {});
3200
3200
  }
3201
3201
  for (let t of f.values()) try {
3202
- await zr(e, t, a, d, n());
3202
+ await Br(e, t, a, d, n());
3203
3203
  } catch (i) {
3204
3204
  if (d.failed++, i instanceof Mr) {
3205
3205
  i.rejected && d.deadLettered++, r?.warn?.(i.message, {
@@ -3211,7 +3211,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3211
3211
  let a = t[0], o = a === void 0 ? void 0 : h(a, i, "batch");
3212
3212
  if (a !== void 0 && o !== void 0) {
3213
3213
  let s = n(), c = String(i);
3214
- if (await Fr(e, t, o, c, s, !0).catch((e) => (r?.warn?.("workflow flow control: batch could not be dead-lettered with its report", {
3214
+ if (await Ir(e, t, o, c, s, !0).catch((e) => (r?.warn?.("workflow flow control: batch could not be dead-lettered with its report", {
3215
3215
  workflow: a.workflowName,
3216
3216
  intents: t.map((e) => e.id),
3217
3217
  size: t.length,
@@ -3262,13 +3262,13 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3262
3262
  cause: String(e)
3263
3263
  }));
3264
3264
  }
3265
- let g = await Ur(e, n()).catch(() => ({ cancelled: 0 }));
3265
+ let g = await Wr(e, n()).catch(() => ({ cancelled: 0 }));
3266
3266
  return d.timedOut = g.cancelled, g.nextDeadlineAt !== void 0 && (s === void 0 || g.nextDeadlineAt < s) && (s = g.nextDeadlineAt), {
3267
3267
  ...d,
3268
3268
  examined: t.skipPending !== !0 || c.examined || l.examined || u.examined,
3269
3269
  ...s === void 0 ? {} : { nextDueAt: s }
3270
3270
  };
3271
- }, Pr = async (e, t, n) => {
3271
+ }, Fr = async (e, t, n) => {
3272
3272
  let r = t.map((e) => ({
3273
3273
  intent: e,
3274
3274
  failureId: `wff_${R()}`
@@ -3322,7 +3322,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3322
3322
  }
3323
3323
  return t;
3324
3324
  });
3325
- }, Fr = async (e, t, n, r, i, a) => {
3325
+ }, Ir = async (e, t, n, r, i, a) => {
3326
3326
  let o = `wff_${R()}`;
3327
3327
  return e.transaction(async (s) => {
3328
3328
  let c = [];
@@ -3378,7 +3378,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3378
3378
  }), !await on(s, e, r, i)) throw Error("Dead-lettered queue row disappeared before marking");
3379
3379
  return await B(s, o, i), c.length;
3380
3380
  });
3381
- }, Ir = async (e, t, n, r, i) => {
3381
+ }, Lr = async (e, t, n, r, i) => {
3382
3382
  let a = `wff_${R()}`;
3383
3383
  return e.transaction(async (e) => {
3384
3384
  let o = [];
@@ -3448,18 +3448,18 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3448
3448
  }), !await e.delete("_voltro_workflow_pending", t.id)) throw Error("Expired queue row disappeared before deletion");
3449
3449
  return await B(e, a, r), o.length;
3450
3450
  });
3451
- }, Lr = async (e, t, n, r, i) => {
3451
+ }, Rr = async (e, t, n, r, i) => {
3452
3452
  if (t = {
3453
3453
  ...t,
3454
3454
  payload: G(e.store, t.workflowName, t.payload)
3455
- }, t.mode === "delayed") return Rr(e, t, n, r, i);
3455
+ }, t.mode === "delayed") return zr(e, t, n, r, i);
3456
3456
  let a = e.controls.get(t.workflowName);
3457
3457
  if (a === void 0) {
3458
- r.expired += await Pr(e, [t], i);
3458
+ r.expired += await Fr(e, [t], i);
3459
3459
  return;
3460
3460
  }
3461
3461
  if (Je(a, t, i)) {
3462
- r.expired += await Ir(e, [t], a, i, !1);
3462
+ r.expired += await Lr(e, [t], a, i, !1);
3463
3463
  return;
3464
3464
  }
3465
3465
  let o = Ue(a, t.payload), s = await cn({
@@ -3470,7 +3470,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3470
3470
  now: i,
3471
3471
  reconsidering: !0
3472
3472
  });
3473
- await Br(e, {
3473
+ await Vr(e, {
3474
3474
  control: a,
3475
3475
  intent: t,
3476
3476
  decision: s,
@@ -3480,9 +3480,9 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3480
3480
  paused: n,
3481
3481
  items: void 0
3482
3482
  });
3483
- }, Rr = async (e, t, n, r, i) => {
3483
+ }, zr = async (e, t, n, r, i) => {
3484
3484
  if (e.registeredWorkflows !== void 0 && !e.registeredWorkflows.has(t.workflowName)) {
3485
- r.expired += await Pr(e, [t], i);
3485
+ r.expired += await Fr(e, [t], i);
3486
3486
  return;
3487
3487
  }
3488
3488
  let a = e.controls.get(t.workflowName) ?? { workflowName: t.workflowName }, o = mt(), s = await e.transaction(async (e) => {
@@ -3557,9 +3557,9 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3557
3557
  r.skipped++;
3558
3558
  return;
3559
3559
  }
3560
- await Hr(e, s.submission, a, r, i, a.batch !== void 0, s.keys);
3560
+ await Ur(e, s.submission, a, r, i, a.batch !== void 0, s.keys);
3561
3561
  }
3562
- }, zr = async (e, t, n, r, i) => {
3562
+ }, Br = async (e, t, n, r, i) => {
3563
3563
  t = t.map((t) => ({
3564
3564
  ...t,
3565
3565
  payload: G(e.store, t.workflowName, t.payload)
@@ -3568,16 +3568,16 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3568
3568
  if (a === void 0) return;
3569
3569
  let o = e.controls.get(a.workflowName);
3570
3570
  if (o === void 0 || o.batch === void 0) {
3571
- r.expired += await Pr(e, t, i);
3571
+ r.expired += await Fr(e, t, i);
3572
3572
  return;
3573
3573
  }
3574
3574
  let s = [...t].sort((e, t) => e.firstSeenAt - t.firstSeenAt), c = s[0];
3575
3575
  if (Je(o, c, i)) {
3576
- r.expired += await Ir(e, s, o, i, !0);
3576
+ r.expired += await Lr(e, s, o, i, !0);
3577
3577
  return;
3578
3578
  }
3579
3579
  let l = Ue(o, c.payload);
3580
- await Br(e, {
3580
+ await Vr(e, {
3581
3581
  control: o,
3582
3582
  intent: c,
3583
3583
  decision: await cn({
@@ -3594,7 +3594,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3594
3594
  paused: n,
3595
3595
  items: s
3596
3596
  });
3597
- }, Br = async (e, t) => {
3597
+ }, Vr = async (e, t) => {
3598
3598
  let { control: n, intent: r, decision: i, keys: a, counters: o, now: s, items: c, paused: l } = t;
3599
3599
  if (i.kind === "defer") {
3600
3600
  await qt({
@@ -3698,16 +3698,16 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3698
3698
  o.deferred++;
3699
3699
  return;
3700
3700
  }
3701
- await Hr(e, d.submission, n, o, s, c !== void 0, a);
3701
+ await Ur(e, d.submission, n, o, s, c !== void 0, a);
3702
3702
  }
3703
- }, Vr = async (e, t, n, r, i) => {
3703
+ }, Hr = async (e, t, n, r, i) => {
3704
3704
  let a = await e.transaction((e) => V(e, t.id));
3705
3705
  if (a === void 0 || !a.receiptsBound || a.workflowName !== n.workflowName || a.workflowName !== t.workflowName || a.tenantId !== t.tenantId || a.ledgerId !== t.ledgerId) throw Error("Admission acceptance callback no longer has its resident submission owner");
3706
3706
  if (a.executionId !== null) {
3707
3707
  if (a.failureId !== null || a.executionId.length === 0 || a.executionId !== a.preparedExecutionId) throw Error("Admission acceptance has contradictory resident execution evidence");
3708
3708
  return a.executionId;
3709
3709
  }
3710
- await Hr(e, a, n, {
3710
+ await Ur(e, a, n, {
3711
3711
  admitted: 0,
3712
3712
  deferred: 0,
3713
3713
  dropped: 0,
@@ -3718,7 +3718,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3718
3718
  let o = await e.transaction((e) => V(e, t.id));
3719
3719
  if (o?.executionId == null || o.executionId !== o.preparedExecutionId) throw Error("Admission submission has no confirmed engine acceptance");
3720
3720
  return o.executionId;
3721
- }, Hr = async (e, t, n, r, i, a, o) => {
3721
+ }, Ur = async (e, t, n, r, i, a, o) => {
3722
3722
  let s = t.dispatchAttempts === 0 ? 0 : void 0;
3723
3723
  try {
3724
3724
  if (e.acquireSubmissionCapacity !== void 0 && !await e.acquireSubmissionCapacity(t)) {
@@ -3780,7 +3780,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3780
3780
  }
3781
3781
  throw new Mr(t.id, r, a);
3782
3782
  }
3783
- }, Ur = async (e, t) => {
3783
+ }, Wr = async (e, t) => {
3784
3784
  if (e.listRunningRuns === void 0) return { cancelled: 0 };
3785
3785
  let n = 0, r;
3786
3786
  for (let i of e.controls.values()) {
@@ -3812,52 +3812,52 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3812
3812
  cancelled: n,
3813
3813
  ...r === void 0 ? {} : { nextDeadlineAt: r }
3814
3814
  };
3815
- }, Wr = 3e5, Gr, Kr = (e) => {
3816
- Gr = e !== void 0 && Number.isFinite(e) && e > 0 ? e : void 0;
3817
- }, qr = () => {
3815
+ }, Gr = 3e5, Kr, qr = (e) => {
3816
+ Kr = e !== void 0 && Number.isFinite(e) && e > 0 ? e : void 0;
3817
+ }, Jr = () => {
3818
3818
  let e = process.env.VOLTRO_WORKFLOW_SUSPEND_HINT_MS;
3819
3819
  if (e !== void 0) {
3820
3820
  let t = Number(e);
3821
3821
  if (Number.isFinite(t) && t > 0) return t;
3822
3822
  }
3823
- return Gr ?? 3e5;
3824
- }, Jr = /* @__PURE__ */ new Set(), Yr = () => {
3825
- Jr.clear();
3826
- }, Xr = (e) => {
3827
- let t = qr();
3823
+ return Kr ?? 3e5;
3824
+ }, Yr = /* @__PURE__ */ new Set(), Xr = () => {
3825
+ Yr.clear();
3826
+ }, Zr = (e) => {
3827
+ let t = Jr();
3828
3828
  if (!(e.timeoutMs > t)) return !1;
3829
3829
  let n = `${e.workflowName ?? ""}\u0000${e.signalName}`;
3830
- if (Jr.has(n)) return !1;
3831
- Jr.add(n);
3830
+ if (Yr.has(n)) return !1;
3831
+ Yr.add(n);
3832
3832
  let r = e.workflowName === void 0 ? "" : ` in workflow '${e.workflowName}'`;
3833
3833
  return (e.warn ?? ((e) => console.warn(e)))(`awaitSignal('${e.signalName}')${r} declares a ${Math.round(e.timeoutMs / 1e3)}s timeout — a wait that long holds a worker fiber for its whole duration. For human-approval-length waits, awaitSignalSuspending (same call shape, from @voltro/workflow) SUSPENDS the run and frees the slot until the signal arrives. This is a hint, not a behaviour change; it is logged once per workflow. Threshold: workflows.suspendSignalHintMs in app.config.ts, or VOLTRO_WORKFLOW_SUSPEND_HINT_MS.`), !0;
3834
- }, Zr = async (e, t) => {
3834
+ }, Qr = async (e, t) => {
3835
3835
  if (e) try {
3836
3836
  await e.recordEvent(t);
3837
3837
  } catch {}
3838
- }, Qr = (e, n) => {
3839
- let i = S.gen(function* () {
3840
- let i = n.pollIntervalMs ?? 200, a = n.maxPollIntervalMs ?? 5e3, o = n.timeoutMs ?? 864e5, s = yield* S.serviceOption(Se), c;
3841
- Xr({
3838
+ }, $r = (e, n) => {
3839
+ let r = S.gen(function* () {
3840
+ let r = n.pollIntervalMs ?? 200, i = n.maxPollIntervalMs ?? 5e3, a = n.timeoutMs ?? 864e5, s = yield* S.serviceOption(Se), c;
3841
+ Zr({
3842
3842
  workflowName: s._tag === "Some" ? s.value.workflow.name : void 0,
3843
3843
  signalName: n.name,
3844
- timeoutMs: o,
3844
+ timeoutMs: a,
3845
3845
  warn: (e) => {
3846
3846
  c = e;
3847
3847
  }
3848
3848
  }), c !== void 0 && (yield* S.logWarning(c));
3849
- let l = yield* t, u = yield* S.serviceOption(r), d = u._tag === "Some" ? u.value : void 0;
3849
+ let l = yield* t, u = yield* S.serviceOption(o), d = u._tag === "Some" ? u.value : void 0;
3850
3850
  if (l === void 0) return yield* S.die(/* @__PURE__ */ Error("awaitSignal: no active workflow run id in scope"));
3851
3851
  let f = l;
3852
- yield* S.promise(() => Zr(d, {
3852
+ yield* S.promise(() => Qr(d, {
3853
3853
  runId: f,
3854
3854
  eventType: "signal-awaited",
3855
3855
  payload: { signalName: n.name }
3856
3856
  }));
3857
- let p = Date.now(), m = i;
3857
+ let p = Date.now(), m = r;
3858
3858
  for (;;) {
3859
3859
  let t = Date.now() - p;
3860
- if (t > o) return yield* S.die(/* @__PURE__ */ Error(`awaitSignal('${n.name}') timed out after ${t}ms`));
3860
+ if (t > a) return yield* S.die(/* @__PURE__ */ Error(`awaitSignal('${n.name}') timed out after ${t}ms`));
3861
3861
  let r = {
3862
3862
  table: "_voltro_workflow_run_events",
3863
3863
  order: [{
@@ -3868,39 +3868,39 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3868
3868
  projection: void 0,
3869
3869
  skip: void 0,
3870
3870
  take: 1e3
3871
- }, i = (yield* S.tryPromise({
3871
+ }, o = (yield* S.tryPromise({
3872
3872
  try: () => e.store.query(r),
3873
3873
  catch: (e) => e
3874
3874
  })).find((e) => e.payload?.signalName === n.name);
3875
- if (i !== void 0) {
3876
- let e = yield* w.decodeUnknown(n.schema)(i.payload?.value);
3877
- return yield* S.promise(() => Zr(d, {
3875
+ if (o !== void 0) {
3876
+ let e = yield* w.decodeUnknown(n.schema)(o.payload?.value);
3877
+ return yield* S.promise(() => Qr(d, {
3878
3878
  runId: f,
3879
3879
  eventType: "signal-received",
3880
3880
  payload: {
3881
3881
  signalName: n.name,
3882
- value: i.payload?.value
3882
+ value: o.payload?.value
3883
3883
  }
3884
3884
  })), e;
3885
3885
  }
3886
- yield* S.sleep(`${m} millis`), m = Math.min(m * 2, a);
3886
+ yield* S.sleep(`${m} millis`), m = Math.min(m * 2, i);
3887
3887
  }
3888
3888
  });
3889
3889
  return y.make({
3890
3890
  name: `await-signal:${n.name}`,
3891
3891
  success: n.schema,
3892
- execute: i
3892
+ execute: r
3893
3893
  });
3894
- }, $r = async (e, t) => {
3894
+ }, ei = async (e, t) => {
3895
3895
  if (e !== void 0) try {
3896
3896
  await e.recordEvent(t);
3897
3897
  } catch {}
3898
- }, ei = (e, n) => {
3899
- let i = S.gen(function* () {
3900
- let i = n.pollIntervalMs ?? 200, a = n.maxPollIntervalMs ?? 5e3, o = n.timeoutMs ?? 864e5, s = n.take ?? 500, c = yield* t, l = yield* S.serviceOption(r), u = l._tag === "Some" ? l.value : void 0;
3898
+ }, ti = (e, n) => {
3899
+ let r = S.gen(function* () {
3900
+ let r = n.pollIntervalMs ?? 200, i = n.maxPollIntervalMs ?? 5e3, a = n.timeoutMs ?? 864e5, s = n.take ?? 500, c = yield* t, l = yield* S.serviceOption(o), u = l._tag === "Some" ? l.value : void 0;
3901
3901
  if (c === void 0) return yield* S.die(/* @__PURE__ */ Error("awaitEvent: no active workflow run id in scope"));
3902
- let d = c, f = yield* n.since === "run-start" ? ti(e, d) : S.succeed(/* @__PURE__ */ new Date());
3903
- yield* S.promise(() => $r(u, {
3902
+ let d = c, f = yield* n.since === "run-start" ? ni(e, d) : S.succeed(/* @__PURE__ */ new Date());
3903
+ yield* S.promise(() => ei(u, {
3904
3904
  runId: d,
3905
3905
  eventType: "event-awaited",
3906
3906
  payload: {
@@ -3909,10 +3909,10 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3909
3909
  cutoff: f.toISOString()
3910
3910
  }
3911
3911
  }));
3912
- let p = Date.now(), m = i, h = 0;
3912
+ let p = Date.now(), m = r, h = 0;
3913
3913
  for (;;) {
3914
3914
  let t = Date.now() - p;
3915
- if (t > o) return yield* S.die(/* @__PURE__ */ Error(`awaitEvent('${n.event}') timed out after ${t}ms having examined ${h} candidate event(s). ${h === 0 ? "NONE were published under that name in the window — check the spelling against ctx.events.publish, and consider since: 'run-start' if the event may have arrived before this step began." : "The predicate rejected all of them — log one payload and compare it with what `match` expects."}`));
3915
+ if (t > a) return yield* S.die(/* @__PURE__ */ Error(`awaitEvent('${n.event}') timed out after ${t}ms having examined ${h} candidate event(s). ${h === 0 ? "NONE were published under that name in the window — check the spelling against ctx.events.publish, and consider since: 'run-start' if the event may have arrived before this step began." : "The predicate rejected all of them — log one payload and compare it with what `match` expects."}`));
3916
3916
  let r = {
3917
3917
  table: "_voltro_workflow_events",
3918
3918
  predicate: D(O("name", n.event), de("occurredAt", f)),
@@ -3923,14 +3923,14 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3923
3923
  take: s,
3924
3924
  skip: void 0,
3925
3925
  projection: void 0
3926
- }, i = yield* S.tryPromise({
3926
+ }, o = yield* S.tryPromise({
3927
3927
  try: () => e.store.query(r),
3928
3928
  catch: (e) => e
3929
3929
  });
3930
- h = i.length;
3931
- for (let e of i) {
3930
+ h = o.length;
3931
+ for (let e of o) {
3932
3932
  let t = yield* w.decodeUnknown(n.schema)(e.payload);
3933
- if (n.match(t)) return yield* S.promise(() => $r(u, {
3933
+ if (n.match(t)) return yield* S.promise(() => ei(u, {
3934
3934
  runId: d,
3935
3935
  eventType: "event-received",
3936
3936
  payload: {
@@ -3939,15 +3939,15 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3939
3939
  }
3940
3940
  })), t;
3941
3941
  }
3942
- yield* S.sleep(`${m} millis`), m = Math.min(m * 2, a);
3942
+ yield* S.sleep(`${m} millis`), m = Math.min(m * 2, i);
3943
3943
  }
3944
3944
  });
3945
3945
  return y.make({
3946
3946
  name: `awaitEvent:${n.event}`,
3947
3947
  success: n.schema,
3948
- execute: i
3948
+ execute: r
3949
3949
  });
3950
- }, ti = (e, t) => S.gen(function* () {
3950
+ }, ni = (e, t) => S.gen(function* () {
3951
3951
  let n = (yield* S.tryPromise({
3952
3952
  try: () => e.store.query({
3953
3953
  table: "_voltro_workflow_runs",
@@ -3965,10 +3965,10 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3965
3965
  if (!Number.isNaN(e.getTime())) return e;
3966
3966
  }
3967
3967
  return /* @__PURE__ */ new Date(0);
3968
- }), ni = (e) => new Promise((t) => setTimeout(t, e)), ri = () => {
3968
+ }), ri = (e) => new Promise((t) => setTimeout(t, e)), ii = () => {
3969
3969
  let e = globalThis.crypto;
3970
3970
  return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`;
3971
- }, ii = () => `wfu_${ri()}`, ai = async (e, t) => {
3971
+ }, ai = () => `wfu_${ii()}`, oi = async (e, t) => {
3972
3972
  let n = t.id ?? t.executionId;
3973
3973
  if (!n) throw Error("workflow message target requires target.id or target.executionId");
3974
3974
  let r = await e.query({
@@ -3990,7 +3990,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3990
3990
  }))[0];
3991
3991
  if (!i) throw Error(`workflow message target not found: ${n}`);
3992
3992
  return i;
3993
- }, oi = class extends Error {
3993
+ }, si = class extends Error {
3994
3994
  runId;
3995
3995
  eventType;
3996
3996
  eventId;
@@ -3998,8 +3998,8 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
3998
3998
  constructor(e, t, n) {
3999
3999
  super(`workflow ${t} for run ${e} was NOT recorded (event ${n}): the run will not see it — the store refused the row, see the recorder's warning`), this.runId = e, this.eventType = t, this.eventId = n, this.name = "WorkflowMessageNotRecorded";
4000
4000
  }
4001
- }, si = async (e) => {
4002
- let t = await ai(e.store, e.target), n = await e.recorder.recordEvent({
4001
+ }, ci = async (e) => {
4002
+ let t = await oi(e.store, e.target), n = await e.recorder.recordEvent({
4003
4003
  runId: t.id,
4004
4004
  eventType: "signal-sent",
4005
4005
  payload: {
@@ -4007,10 +4007,10 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4007
4007
  value: e.payload
4008
4008
  }
4009
4009
  });
4010
- if (n.recorded === !1) throw new oi(t.id, "signal-sent", n.id);
4010
+ if (n.recorded === !1) throw new si(t.id, "signal-sent", n.id);
4011
4011
  return { eventId: n.id };
4012
- }, ci = async (e) => {
4013
- let t = await ai(e.store, e.target), n = ii(), r = await e.recorder.recordEvent({
4012
+ }, li = async (e) => {
4013
+ let t = await oi(e.store, e.target), n = ai(), r = await e.recorder.recordEvent({
4014
4014
  runId: t.id,
4015
4015
  eventType: "update-requested",
4016
4016
  payload: {
@@ -4019,7 +4019,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4019
4019
  value: e.payload
4020
4020
  }
4021
4021
  });
4022
- if (r.recorded === !1) throw new oi(t.id, "update-requested", r.id);
4022
+ if (r.recorded === !1) throw new si(t.id, "update-requested", r.id);
4023
4023
  let i = Date.now(), a = e.options?.timeoutMs ?? 3e4, o = e.options?.pollIntervalMs ?? 100;
4024
4024
  for (;;) {
4025
4025
  let s = {
@@ -4049,44 +4049,44 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4049
4049
  }), t;
4050
4050
  }
4051
4051
  if (Date.now() - i >= a) throw Error(`Timed out waiting for workflow update '${e.updateName}' (${n})`);
4052
- await ni(o);
4052
+ await ri(o);
4053
4053
  }
4054
- }, li = 864e5, ui = "voltro/suspending-signal", di = (e, t) => `${ui}/${e}/${t}`, fi = (e) => te.make(e, { success: w.Unknown }), pi = async (e, t) => {
4054
+ }, ui = 864e5, di = "voltro/suspending-signal", fi = (e, t) => `${di}/${e}/${t}`, pi = (e) => te.make(e, { success: w.Unknown }), mi = async (e, t) => {
4055
4055
  if (e) try {
4056
4056
  await e.recordEvent(t);
4057
4057
  } catch {}
4058
- }, mi = (e, n) => S.gen(function* () {
4059
- let e = n.timeoutMs ?? li, i = yield* re.WorkflowInstance, a = fi(di(i.workflow.name, n.name)), o = yield* t, s = yield* S.serviceOption(r), c = s._tag === "Some" ? s.value : void 0;
4060
- o !== void 0 && (yield* S.promise(() => pi(c, {
4061
- runId: o,
4058
+ }, hi = (e, n) => S.gen(function* () {
4059
+ let e = n.timeoutMs ?? ui, r = yield* re.WorkflowInstance, i = pi(fi(r.workflow.name, n.name)), a = yield* t, s = yield* S.serviceOption(o), c = s._tag === "Some" ? s.value : void 0;
4060
+ a !== void 0 && (yield* S.promise(() => mi(c, {
4061
+ runId: a,
4062
4062
  eventType: "signal-awaited",
4063
4063
  payload: { signalName: n.name }
4064
4064
  })));
4065
- let l = te.await(a), u = Number.isFinite(e) ? yield* S.race(l, b.sleep({
4065
+ let l = te.await(i), u = Number.isFinite(e) ? yield* S.race(l, b.sleep({
4066
4066
  name: `await-signal-timeout/${n.name}`,
4067
4067
  duration: `${e} millis`
4068
- }).pipe(S.andThen(S.die(/* @__PURE__ */ Error(`awaitSignalSuspending('${n.name}') timed out after ${e}ms`))))).pipe(S.catchAllCause((e) => i.suspended ? x.isInterruptedOnly(e) ? ne.suspend(i) : S.failCause(x.filter(e, (e) => !x.isInterruptType(e))) : S.failCause(e))) : yield* l, d = yield* w.decodeUnknown(n.schema)(u);
4069
- return o !== void 0 && (yield* S.promise(() => pi(c, {
4070
- runId: o,
4068
+ }).pipe(S.andThen(S.die(/* @__PURE__ */ Error(`awaitSignalSuspending('${n.name}') timed out after ${e}ms`))))).pipe(S.catchAllCause((e) => r.suspended ? x.isInterruptedOnly(e) ? ne.suspend(r) : S.failCause(x.filter(e, (e) => !x.isInterruptType(e))) : S.failCause(e))) : yield* l, d = yield* w.decodeUnknown(n.schema)(u);
4069
+ return a !== void 0 && (yield* S.promise(() => mi(c, {
4070
+ runId: a,
4071
4071
  eventType: "signal-received",
4072
4072
  payload: {
4073
4073
  signalName: n.name,
4074
4074
  value: d
4075
4075
  }
4076
4076
  }))), d;
4077
- }), hi = (e) => S.gen(function* () {
4077
+ }), gi = (e) => S.gen(function* () {
4078
4078
  let t = e.target.executionId, n = e.target.workflowName;
4079
4079
  if (t === void 0 || n === void 0) {
4080
4080
  let r = e.store;
4081
4081
  if (r === void 0) return yield* S.die(/* @__PURE__ */ Error("completeSuspendingSignal: provide a store, or target.executionId AND target.workflowName"));
4082
4082
  let i = yield* S.tryPromise({
4083
- try: () => ai(r, e.target),
4083
+ try: () => oi(r, e.target),
4084
4084
  catch: (e) => e
4085
4085
  });
4086
4086
  t ??= i.executionId, n ??= i.tag;
4087
4087
  }
4088
4088
  if (t === void 0 || n === void 0) return { completed: !1 };
4089
- let r = di(n, e.signalName), i = fi(r), a = new te.TokenParsed({
4089
+ let r = fi(n, e.signalName), i = pi(r), a = new te.TokenParsed({
4090
4090
  workflowName: n,
4091
4091
  executionId: t,
4092
4092
  deferredName: r
@@ -4095,11 +4095,11 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4095
4095
  token: a,
4096
4096
  exit: ie.succeed(e.payload)
4097
4097
  }), { completed: !0 };
4098
- }), Q = "_voltro_budget_holds", gi = "budget-hold", _i = (e) => `${gi}:${e}`, vi = (e) => `${e.executionId}/${e.stepName}/${e.budget}#${e.generation}`, yi = async (e, t) => (await e.query({
4098
+ }), Q = "_voltro_budget_holds", _i = "budget-hold", vi = (e) => `${_i}:${e}`, yi = (e) => `${e.executionId}/${e.stepName}/${e.budget}#${e.generation}`, bi = async (e, t) => (await e.query({
4099
4099
  table: Q,
4100
4100
  predicate: D(O("executionId", t.executionId), O("stepName", t.stepName), O("budget", t.budget)),
4101
4101
  order: []
4102
- })).length, bi = F(Q, {
4102
+ })).length, xi = F(Q, {
4103
4103
  id: j({ prefix: "bhd" }),
4104
4104
  holdKey: I().maxLength(191),
4105
4105
  budget: I(),
@@ -4113,33 +4113,33 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4113
4113
  heldAt: L().default("now"),
4114
4114
  releasedAt: L().nullable(),
4115
4115
  outcome: I().nullable()
4116
- }).index(["budget", "releasedAt"]), xi = () => {
4116
+ }).index(["budget", "releasedAt"]), Si = () => {
4117
4117
  ve({
4118
4118
  source: "framework",
4119
4119
  table: Q,
4120
4120
  timeColumn: "releasedAt",
4121
4121
  ttlMs: ye(process.env.VOLTRO_BUDGET_HOLDS_TTL_HOURS, 720)
4122
4122
  });
4123
- }, Si = class extends Error {
4123
+ }, Ci = class extends Error {
4124
4124
  budget;
4125
4125
  holdKey;
4126
4126
  constructor(e, t, n) {
4127
4127
  super(`budget '${e}': the run was suspended waiting for headroom and gave up after ${n}ms (hold ${t}). Nothing was spent. Raise the budget, reset its window, or lift the hold, then re-drive the run.`), this.name = "BudgetHoldExpired", this.budget = e, this.holdKey = t;
4128
4128
  }
4129
- }, Ci = 6048e5, wi = (e) => S.gen(function* () {
4130
- xi();
4129
+ }, wi = 6048e5, Ti = (e) => S.gen(function* () {
4130
+ Si();
4131
4131
  let t = e.timeoutMs ?? 6048e5, n = e.recheckEveryMs ?? 9e5, r = {
4132
4132
  executionId: e.executionId,
4133
4133
  stepName: e.stepName,
4134
4134
  budget: e.budget
4135
4135
  };
4136
4136
  for (let i = 0;; i++) {
4137
- let a = yield* S.promise(() => Ei(e.store, r)), o = a.length === 0 ? Date.now() : Ti(a[0]?.heldAt), s = Number.isFinite(t) ? t - (Date.now() - o) : Infinity, c = vi({
4137
+ let a = yield* S.promise(() => Di(e.store, r)), o = a.length === 0 ? Date.now() : Ei(a[0]?.heldAt), s = Number.isFinite(t) ? t - (Date.now() - o) : Infinity, c = yi({
4138
4138
  ...r,
4139
4139
  generation: i
4140
4140
  });
4141
- if (s <= 0) return yield* S.promise(() => Di(e.store, r, "expired")), yield* S.fail(new Si(e.budget, c, t));
4142
- let l = _i(c);
4141
+ if (s <= 0) return yield* S.promise(() => Oi(e.store, r, "expired")), yield* S.fail(new Ci(e.budget, c, t));
4142
+ let l = vi(c);
4143
4143
  yield* S.promise(() => e.store.insertIgnore(Q, {
4144
4144
  id: k({
4145
4145
  kind: "typeid",
@@ -4159,7 +4159,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4159
4159
  outcome: null
4160
4160
  }, { conflictColumns: ["holdKey"] }));
4161
4161
  let u = Math.min(n, s);
4162
- if (yield* mi({ store: e.store }, {
4162
+ if (yield* hi({ store: e.store }, {
4163
4163
  name: l,
4164
4164
  schema: w.Unknown,
4165
4165
  timeoutMs: u
@@ -4168,16 +4168,16 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4168
4168
  outcome: "recheck"
4169
4169
  }, { where: D(O("holdKey", c), N("releasedAt")) })), yield* e.hasHeadroom) return;
4170
4170
  }
4171
- }), Ti = (e) => e instanceof Date ? e.getTime() : typeof e == "string" ? Date.parse(e) : Date.now(), Ei = async (e, t) => [...await e.query({
4171
+ }), Ei = (e) => e instanceof Date ? e.getTime() : typeof e == "string" ? Date.parse(e) : Date.now(), Di = async (e, t) => [...await e.query({
4172
4172
  table: Q,
4173
4173
  predicate: D(O("executionId", t.executionId), O("stepName", t.stepName), O("budget", t.budget)),
4174
4174
  order: []
4175
- })].sort((e, t) => String(e.id).localeCompare(String(t.id))), Di = async (e, t, n) => {
4175
+ })].sort((e, t) => String(e.id).localeCompare(String(t.id))), Oi = async (e, t, n) => {
4176
4176
  await e.updateMany(Q, {
4177
4177
  releasedAt: /* @__PURE__ */ new Date(),
4178
4178
  outcome: n
4179
4179
  }, { where: D(O("executionId", t.executionId), O("stepName", t.stepName), O("budget", t.budget), N("releasedAt")) });
4180
- }, Oi = (e) => S.gen(function* () {
4180
+ }, ki = (e) => S.gen(function* () {
4181
4181
  let t = e.tenantId === void 0 ? D(O("budget", e.budget), N("releasedAt")) : D(O("budget", e.budget), O("tenantId", e.tenantId), N("releasedAt")), n = yield* S.promise(() => e.store.query({
4182
4182
  table: Q,
4183
4183
  predicate: t,
@@ -4186,7 +4186,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4186
4186
  for (let t of n) (yield* S.promise(() => e.store.updateMany("_voltro_budget_holds", {
4187
4187
  releasedAt: /* @__PURE__ */ new Date(),
4188
4188
  outcome: e.outcome ?? "released"
4189
- }, { where: D(O("id", String(t.id)), N("releasedAt")) }))) === 1 && (yield* hi({
4189
+ }, { where: D(O("id", String(t.id)), N("releasedAt")) }))) === 1 && (yield* gi({
4190
4190
  target: {
4191
4191
  executionId: String(t.executionId),
4192
4192
  workflowName: String(t.workflowName)
@@ -4198,7 +4198,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4198
4198
  }
4199
4199
  }).pipe(S.catchAll(() => S.succeed({ completed: !1 }))), r += 1);
4200
4200
  return { released: r };
4201
- }), ki = async (e, t) => {
4201
+ }), Ai = async (e, t) => {
4202
4202
  let n = t?.budget === void 0 ? N("releasedAt") : D(O("budget", t.budget), N("releasedAt"));
4203
4203
  return (await e.query({
4204
4204
  table: Q,
@@ -4214,8 +4214,8 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4214
4214
  stepName: String(e.stepName),
4215
4215
  heldAt: e.heldAt instanceof Date ? e.heldAt.toISOString() : String(e.heldAt ?? "")
4216
4216
  }));
4217
- }, Ai = async (e) => {
4218
- let t = await ki(e), n = /* @__PURE__ */ new Map();
4217
+ }, ji = async (e) => {
4218
+ let t = await Ai(e), n = /* @__PURE__ */ new Map();
4219
4219
  for (let e of t) {
4220
4220
  let t = `${e.budget}\u0000${e.tenantId ?? ""}`;
4221
4221
  n.has(t) || n.set(t, {
@@ -4224,24 +4224,24 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4224
4224
  });
4225
4225
  }
4226
4226
  return [...n.values()];
4227
- }, ji = async (e, t) => {
4227
+ }, Mi = async (e, t) => {
4228
4228
  if (e) try {
4229
4229
  await e.recordEvent(t);
4230
4230
  } catch {}
4231
- }, Mi = (e) => {
4231
+ }, Ni = (e) => {
4232
4232
  let t = x.failureOption(e), n = Array.from(x.defects(e)), r = t._tag === "Some" ? t.value : n[0] ?? x.squash(e);
4233
4233
  return {
4234
4234
  errorTag: r && typeof r == "object" && "_tag" in r ? String(r._tag) : null,
4235
4235
  errorMessage: r?.message ?? String(r)
4236
4236
  };
4237
- }, Ni = (e, n) => {
4238
- let i = S.gen(function* () {
4239
- let i = n.pollIntervalMs ?? 200, a = n.maxPollIntervalMs ?? 5e3, o = n.timeoutMs ?? 3e4, s = yield* t, c = yield* S.serviceOption(r), l = c._tag === "Some" ? c.value : void 0;
4237
+ }, Pi = (e, n) => {
4238
+ let r = S.gen(function* () {
4239
+ let r = n.pollIntervalMs ?? 200, i = n.maxPollIntervalMs ?? 5e3, a = n.timeoutMs ?? 3e4, s = yield* t, c = yield* S.serviceOption(o), l = c._tag === "Some" ? c.value : void 0;
4240
4240
  if (s === void 0) return yield* S.die(/* @__PURE__ */ Error("awaitUpdate: no active workflow run id in scope"));
4241
- let u = s, d = Date.now(), f = i;
4241
+ let u = s, d = Date.now(), f = r;
4242
4242
  for (;;) {
4243
4243
  let t = Date.now() - d;
4244
- if (t > o) return yield* S.die(/* @__PURE__ */ Error(`awaitUpdate('${n.name}') timed out after ${t}ms`));
4244
+ if (t > a) return yield* S.die(/* @__PURE__ */ Error(`awaitUpdate('${n.name}') timed out after ${t}ms`));
4245
4245
  let r = {
4246
4246
  table: "_voltro_workflow_run_events",
4247
4247
  order: [{
@@ -4252,13 +4252,13 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4252
4252
  projection: void 0,
4253
4253
  skip: void 0,
4254
4254
  take: 1e3
4255
- }, i = yield* S.tryPromise({
4255
+ }, o = yield* S.tryPromise({
4256
4256
  try: () => e.store.query(r),
4257
4257
  catch: (e) => e
4258
- }), s = new Set(i.filter((e) => e.eventType === "update-completed" || e.eventType === "update-failed").map((e) => e.payload?.updateId).filter((e) => typeof e == "string" && e.length > 0)), c = i.find((e) => e.eventType === "update-requested" && e.payload?.updateName === n.name && typeof e.payload.updateId == "string" && !s.has(e.payload.updateId));
4258
+ }), s = new Set(o.filter((e) => e.eventType === "update-completed" || e.eventType === "update-failed").map((e) => e.payload?.updateId).filter((e) => typeof e == "string" && e.length > 0)), c = o.find((e) => e.eventType === "update-requested" && e.payload?.updateName === n.name && typeof e.payload.updateId == "string" && !s.has(e.payload.updateId));
4259
4259
  if (c !== void 0) {
4260
4260
  let e = c.payload.updateId;
4261
- yield* S.promise(() => ji(l, {
4261
+ yield* S.promise(() => Mi(l, {
4262
4262
  runId: u,
4263
4263
  eventType: "update-received",
4264
4264
  payload: {
@@ -4266,24 +4266,24 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4266
4266
  updateName: n.name
4267
4267
  }
4268
4268
  }));
4269
- let t = yield* w.decodeUnknown(n.schema)(c.payload?.value).pipe(S.tapErrorCause((t) => S.promise(() => ji(l, {
4269
+ let t = yield* w.decodeUnknown(n.schema)(c.payload?.value).pipe(S.tapErrorCause((t) => S.promise(() => Mi(l, {
4270
4270
  runId: u,
4271
4271
  eventType: "update-failed",
4272
4272
  payload: {
4273
4273
  updateId: e,
4274
4274
  updateName: n.name,
4275
- ...Mi(t)
4275
+ ...Ni(t)
4276
4276
  }
4277
- })))), r = yield* (n.handle ? n.handle(t) : S.succeed(t)).pipe(S.flatMap((e) => n.success ? w.decodeUnknown(n.success)(e) : S.succeed(e))).pipe(S.tapErrorCause((t) => S.promise(() => ji(l, {
4277
+ })))), r = yield* (n.handle ? n.handle(t) : S.succeed(t)).pipe(S.flatMap((e) => n.success ? w.decodeUnknown(n.success)(e) : S.succeed(e))).pipe(S.tapErrorCause((t) => S.promise(() => Mi(l, {
4278
4278
  runId: u,
4279
4279
  eventType: "update-failed",
4280
4280
  payload: {
4281
4281
  updateId: e,
4282
4282
  updateName: n.name,
4283
- ...Mi(t)
4283
+ ...Ni(t)
4284
4284
  }
4285
4285
  }))));
4286
- return yield* S.promise(() => ji(l, {
4286
+ return yield* S.promise(() => Mi(l, {
4287
4287
  runId: u,
4288
4288
  eventType: "update-completed",
4289
4289
  payload: {
@@ -4293,15 +4293,15 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4293
4293
  }
4294
4294
  })), r;
4295
4295
  }
4296
- yield* S.sleep(`${f} millis`), f = Math.min(f * 2, a);
4296
+ yield* S.sleep(`${f} millis`), f = Math.min(f * 2, i);
4297
4297
  }
4298
4298
  });
4299
4299
  return y.make({
4300
4300
  name: `await-update:${n.name}`,
4301
4301
  success: n.success ?? n.schema,
4302
- execute: i
4302
+ execute: r
4303
4303
  });
4304
- }, Pi = (e) => {
4304
+ }, Fi = (e) => {
4305
4305
  if (e == null) return null;
4306
4306
  if (e instanceof Date) return e;
4307
4307
  if (typeof e == "string" || typeof e == "number") {
@@ -4309,7 +4309,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4309
4309
  return Number.isNaN(t.getTime()) ? null : t;
4310
4310
  }
4311
4311
  return null;
4312
- }, Fi = (e) => typeof e == "number" ? e : e == null ? null : Number(e), Ii = (e) => e == null ? null : String(e), Li = (e) => {
4312
+ }, Ii = (e) => typeof e == "number" ? e : e == null ? null : Number(e), Li = (e) => e == null ? null : String(e), Ri = (e) => {
4313
4313
  let t = /* @__PURE__ */ new Map();
4314
4314
  for (let n of e) {
4315
4315
  let e = String(n.stepName), r = t.get(e);
@@ -4317,27 +4317,27 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4317
4317
  }
4318
4318
  let n = [];
4319
4319
  for (let [e, r] of t) {
4320
- r.sort((e, t) => (Fi(e.attempt) ?? 0) - (Fi(t.attempt) ?? 0));
4321
- let t = r[r.length - 1], i = Ii(t.errorTag), a = Ii(t.errorMessage), o = i !== null || a !== null ? {
4320
+ r.sort((e, t) => (Ii(e.attempt) ?? 0) - (Ii(t.attempt) ?? 0));
4321
+ let t = r[r.length - 1], i = Li(t.errorTag), a = Li(t.errorMessage), o = i !== null || a !== null ? {
4322
4322
  tag: i,
4323
4323
  message: a ?? ""
4324
4324
  } : null;
4325
4325
  n.push({
4326
4326
  name: e,
4327
- attempt: Fi(t.attempt) ?? r.length,
4327
+ attempt: Ii(t.attempt) ?? r.length,
4328
4328
  attempts: r.length,
4329
4329
  status: t.status ?? "running",
4330
4330
  input: t.input ?? null,
4331
4331
  output: t.output ?? null,
4332
4332
  error: o,
4333
- durationMs: Fi(t.durationMs)
4333
+ durationMs: Ii(t.durationMs)
4334
4334
  });
4335
4335
  }
4336
4336
  return n.sort((t, n) => {
4337
4337
  let r = e.find((e) => String(e.stepName) === t.name), i = e.find((e) => String(e.stepName) === n.name);
4338
- return (Pi(r?.startedAt)?.getTime() ?? 0) - (Pi(i?.startedAt)?.getTime() ?? 0);
4338
+ return (Fi(r?.startedAt)?.getTime() ?? 0) - (Fi(i?.startedAt)?.getTime() ?? 0);
4339
4339
  }), n;
4340
- }, Ri = (e) => {
4340
+ }, zi = (e) => {
4341
4341
  if (e == null) return null;
4342
4342
  if (typeof e == "string") try {
4343
4343
  return JSON.parse(e);
@@ -4345,30 +4345,30 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4345
4345
  return null;
4346
4346
  }
4347
4347
  return typeof e == "object" ? e : null;
4348
- }, zi = async (e, t) => {
4348
+ }, Bi = async (e, t) => {
4349
4349
  let n = ge(we), r = (await t.query(n.where(he(O("id", e), O("executionId", e))).limit(1).descriptor))[0];
4350
4350
  if (r === void 0) return null;
4351
4351
  let i = String(r.id), a = ge(Te), o = await t.query(a.where(O("runId", i)).descriptor);
4352
4352
  return {
4353
4353
  id: i,
4354
- executionId: Ii(r.executionId) ?? "",
4355
- name: Ii(r.tag) ?? "",
4354
+ executionId: Li(r.executionId) ?? "",
4355
+ name: Li(r.tag) ?? "",
4356
4356
  status: r.status ?? "running",
4357
4357
  input: r.payload ?? null,
4358
4358
  output: r.output ?? null,
4359
- subject: Ri(r.subject),
4360
- source: Ii(r.source),
4361
- steps: Li(o),
4362
- startedAt: Pi(r.startedAt) ?? /* @__PURE__ */ new Date(0),
4363
- finishedAt: Pi(r.completedAt),
4364
- traceId: Ii(r.traceId),
4365
- parentExecutionId: Ii(r.parentExecutionId),
4366
- parentClosePolicy: Ii(r.parentClosePolicy)
4359
+ subject: zi(r.subject),
4360
+ source: Li(r.source),
4361
+ steps: Ri(o),
4362
+ startedAt: Fi(r.startedAt) ?? /* @__PURE__ */ new Date(0),
4363
+ finishedAt: Fi(r.completedAt),
4364
+ traceId: Li(r.traceId),
4365
+ parentExecutionId: Li(r.parentExecutionId),
4366
+ parentClosePolicy: Li(r.parentClosePolicy)
4367
4367
  };
4368
- }, Bi = () => {
4369
- let e = [], t = [], n = 0, i = 0;
4368
+ }, Vi = () => {
4369
+ let e = [], t = [], n = 0, r = 0;
4370
4370
  return {
4371
- layer: se.succeed(r, {
4371
+ layer: se.succeed(o, {
4372
4372
  startStep: async ({ runId: t, stepName: r, attempt: i, stepInput: a, retryPolicy: o }) => {
4373
4373
  let s = `wfstep_mem_${++n}`;
4374
4374
  return e.push({
@@ -4396,13 +4396,13 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4396
4396
  let o = e.find((e) => e.id === t);
4397
4397
  o !== void 0 && (o.status = "failed", o.errorTag = n, o.errorMessage = r, o.errorCause = i ?? null, o.completedAt = /* @__PURE__ */ new Date(), o.durationMs = a);
4398
4398
  },
4399
- recordEvent: async ({ runId: e, eventType: n, payload: r, stepName: a, attempt: o }) => {
4400
- let s = `wfev_mem_${++i}`;
4399
+ recordEvent: async ({ runId: e, eventType: n, payload: i, stepName: a, attempt: o }) => {
4400
+ let s = `wfev_mem_${++r}`;
4401
4401
  return t.push({
4402
4402
  id: s,
4403
4403
  runId: e,
4404
4404
  eventType: n,
4405
- payload: r ?? null,
4405
+ payload: i ?? null,
4406
4406
  stepName: a ?? null,
4407
4407
  attempt: o ?? null,
4408
4408
  occurredAt: /* @__PURE__ */ new Date()
@@ -4415,13 +4415,13 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4415
4415
  readSteps: () => e,
4416
4416
  readEvents: () => t
4417
4417
  };
4418
- }, Vi = (e, t, n) => S.gen(function* () {
4418
+ }, Hi = (e, t, n) => S.gen(function* () {
4419
4419
  let r = yield* Se;
4420
4420
  for (;;) {
4421
4421
  if (yield* S.tryPromise(() => g(t, e)).pipe(S.catchAll(() => S.sync(() => (n(), !1))))) return r.interrupted = !0, yield* S.interrupt;
4422
4422
  yield* S.sleep(1e3);
4423
4423
  }
4424
- }), Hi = 8192, Ui = 3, Wi = 2e3, Gi = () => {
4424
+ }), Ui = 8192, Wi = 3, Gi = 2e3, Ki = () => {
4425
4425
  let e = (e) => {
4426
4426
  if (e === void 0) return;
4427
4427
  let t = Number(e);
@@ -4431,7 +4431,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4431
4431
  ...t === void 0 ? {} : { maxRunReclaims: t },
4432
4432
  ...n === void 0 ? {} : { replayShapeLimit: n }
4433
4433
  };
4434
- }, Ki = (e) => {
4434
+ }, qi = (e) => {
4435
4435
  let t = typeof e == "string" ? (() => {
4436
4436
  try {
4437
4437
  return JSON.parse(e);
@@ -4440,10 +4440,10 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4440
4440
  }
4441
4441
  })() : e;
4442
4442
  if (Array.isArray(t)) return t.filter((e) => typeof e == "string");
4443
- }, qi = () => {
4443
+ }, Ji = () => {
4444
4444
  let e = globalThis.crypto;
4445
4445
  return typeof e?.randomUUID == "function" ? e.randomUUID() : `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`;
4446
- }, Ji = (e) => `${e}_${qi()}`, Yi = (e, t = Hi) => {
4446
+ }, Yi = (e) => `${e}_${Ji()}`, Xi = (e, t = Ui) => {
4447
4447
  if (e == null) return e;
4448
4448
  try {
4449
4449
  let n = JSON.stringify(e);
@@ -4459,8 +4459,8 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4459
4459
  let t = {};
4460
4460
  for (let [n, r] of Object.entries(e)) t[n] = r instanceof Date ? r.toISOString() : r;
4461
4461
  return t;
4462
- }, Xi = (e) => {
4463
- let t = e.truncateBytes ?? Hi, n = e.makeId ?? Ji, r = (t, n) => e.log?.warn(t, n), i = e.encryptStepPayload ?? ((e) => e), a = e.emit, o = e.recording === "coarse";
4462
+ }, Zi = (e) => {
4463
+ let t = e.truncateBytes ?? Ui, n = e.makeId ?? Yi, r = (t, n) => e.log?.warn(t, n), i = e.encryptStepPayload ?? ((e) => e), a = e.emit, o = e.recording === "coarse";
4464
4464
  return {
4465
4465
  startStep: async ({ runId: s, stepName: c, attempt: l, stepInput: u, retryPolicy: d }) => {
4466
4466
  if (!o) try {
@@ -4470,7 +4470,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4470
4470
  stepName: c,
4471
4471
  attempt: l,
4472
4472
  status: "running",
4473
- input: u === void 0 ? null : i(Yi(u, t)),
4473
+ input: u === void 0 ? null : i(Xi(u, t)),
4474
4474
  retryPolicy: d ?? null,
4475
4475
  output: null,
4476
4476
  errorTag: null,
@@ -4497,7 +4497,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4497
4497
  if (!o) try {
4498
4498
  let r = await e.store.update("_voltro_workflow_run_steps", n, {
4499
4499
  status: "succeeded",
4500
- output: i(Yi(s, t)),
4500
+ output: i(Xi(s, t)),
4501
4501
  completedAt: /* @__PURE__ */ new Date(),
4502
4502
  durationMs: c
4503
4503
  });
@@ -4518,7 +4518,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4518
4518
  status: "failed",
4519
4519
  errorTag: s,
4520
4520
  errorMessage: c,
4521
- errorCause: l === void 0 ? null : i(Yi(l, t)),
4521
+ errorCause: l === void 0 ? null : i(Xi(l, t)),
4522
4522
  completedAt: /* @__PURE__ */ new Date(),
4523
4523
  durationMs: u
4524
4524
  });
@@ -4566,7 +4566,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4566
4566
  };
4567
4567
  }
4568
4568
  };
4569
- }, Zi = (e, t, n) => S.gen(function* () {
4569
+ }, Qi = (e, t, n) => S.gen(function* () {
4570
4570
  let r = e.store.query;
4571
4571
  if (r === void 0) return;
4572
4572
  let i = e.replayShapeLimit ?? 2e3, a = yield* S.promise(() => r.call(e.store, {
@@ -4596,8 +4596,8 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4596
4596
  return typeof t == "string" ? [{ stepName: t }] : [];
4597
4597
  });
4598
4598
  return o.length === 0 ? void 0 : s(o);
4599
- }), Qi = (s, l) => {
4600
- let u = s.truncateBytes ?? Hi, d = s.makeId ?? Ji, f = s.recorder ?? Xi(s), p = (e, t) => s.log?.warn(e, t), m = s.emit, g = (e) => S.gen(function* () {
4599
+ }), $i = (s, l) => {
4600
+ let u = s.truncateBytes ?? Ui, d = s.makeId ?? Yi, f = s.recorder ?? Zi(s), p = (e, t) => s.log?.warn(e, t), m = s.emit, g = (e) => S.gen(function* () {
4601
4601
  yield* S.sync(() => m?.("workflowEvents", {
4602
4602
  op: "insert",
4603
4603
  row: $(e)
@@ -4644,14 +4644,14 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4644
4644
  }
4645
4645
  });
4646
4646
  return (ee, y) => S.gen(function* () {
4647
- let b = Date.now(), te = yield* oe.get(i), re = yield* oe.get(a), C = s.parentExecutionId ?? te ?? null, se = s.parentGeneration ?? (s.parentExecutionId == null ? re : void 0) ?? null, w = s.parentClosePolicy ?? null, T, E = (e, t) => t.pipe(S.catchAllCause((t) => x.isInterrupted(t) ? S.failCause(t) : S.sync(() => {
4647
+ let b = Date.now(), te = yield* oe.get(r), re = yield* oe.get(i), C = s.parentExecutionId ?? te ?? null, se = s.parentGeneration ?? (s.parentExecutionId == null ? re : void 0) ?? null, w = s.parentClosePolicy ?? null, T, E = (e, t) => t.pipe(S.catchAllCause((t) => x.isInterrupted(t) ? S.failCause(t) : S.sync(() => {
4648
4648
  let n = x.squash(t);
4649
4649
  p(e, {
4650
4650
  tag: s.name,
4651
4651
  executionId: y,
4652
4652
  reason: n?.message ?? String(n)
4653
4653
  });
4654
- }))), D = `wfrg_${qi()}`, le = yield* S.serviceOption(h), ue = d("wr"), O = yield* S.sync(() => s.encodePayload === void 0 ? ee : s.encodePayload(ee)), k = yield* S.promise(() => s.transaction((e) => Sn(e, {
4654
+ }))), D = `wfrg_${Ji()}`, le = yield* S.serviceOption(h), ue = d("wr"), O = yield* S.sync(() => s.encodePayload === void 0 ? ee : s.encodePayload(ee)), k = yield* S.promise(() => s.transaction((e) => Sn(e, {
4655
4655
  workflowName: s.name,
4656
4656
  executionId: y,
4657
4657
  generation: D,
@@ -4731,7 +4731,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4731
4731
  }
4732
4732
  let j = s.workflowPatches ?? [], fe;
4733
4733
  if (A?.id !== void 0) {
4734
- T = A.id, j = Ki(A.workflowPatches) ?? j;
4734
+ T = A.id, j = qi(A.workflowPatches) ?? j;
4735
4735
  let e = k.row.reclaimCount;
4736
4736
  if (typeof e != "number" || !Number.isSafeInteger(e) || e < 0) return yield* S.die(/* @__PURE__ */ Error("Recorded workflow entry has an invalid reclaim counter"));
4737
4737
  let t = e > 0, n = s.maxRunReclaims ?? 3;
@@ -4769,7 +4769,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4769
4769
  let i = yield* Se;
4770
4770
  return yield* ne.suspend(i);
4771
4771
  }
4772
- fe = yield* Zi(s, T, p), yield* E("failed to record workflow re-entry", S.gen(function* () {
4772
+ fe = yield* Qi(s, T, p), yield* E("failed to record workflow re-entry", S.gen(function* () {
4773
4773
  m?.("workflowRuns", {
4774
4774
  op: "update",
4775
4775
  row: $(k.row)
@@ -4804,7 +4804,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4804
4804
  }));
4805
4805
  }
4806
4806
  }));
4807
- let M = s.subject?.tenantId, pe = S.suspend(() => l(ee, y, D)).pipe(S.locally(t, T), S.locally(i, y), S.locally(a, D), S.locally(n, typeof M == "string" ? M : void 0), S.locally(o, j), S.locally(c, fe), S.provideService(r, f)), N = s.pluginWorkflowStepLayer ? pe.pipe(S.provide(s.pluginWorkflowStepLayer)) : pe, P = yield* ne.intoResult(S.raceWith(N, Vi({
4807
+ let M = s.subject?.tenantId, pe = S.suspend(() => l(ee, y, D)).pipe(S.locally(t, T), S.locally(r, y), S.locally(i, D), S.locally(n, typeof M == "string" ? M : void 0), S.locally(a, j), S.locally(c, fe), S.provideService(o, f)), N = s.pluginWorkflowStepLayer ? pe.pipe(S.provide(s.pluginWorkflowStepLayer)) : pe, P = yield* ne.intoResult(S.raceWith(N, Hi({
4808
4808
  runId: T,
4809
4809
  workflowName: s.name,
4810
4810
  executionId: y,
@@ -4954,7 +4954,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4954
4954
  durationMs: ge - b,
4955
4955
  outcome: {
4956
4956
  status: "succeeded",
4957
- output: Yi(he, u)
4957
+ output: Xi(he, u)
4958
4958
  }
4959
4959
  })));
4960
4960
  return _e.kind === "committed" ? (T && (yield* E("failed to record workflow success", S.gen(function* () {
@@ -4971,4 +4971,4 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
4971
4971
  });
4972
4972
  };
4973
4973
  //#endregion
4974
- export { Zn as $, lt as $t, ei as A, ln as At, dr as B, Pt as Bt, mi as C, we as Cn, cn as Ct, ai as D, Bt as Dt, ii as E, Ut as Et, qr as F, Wt as Ft, nr as G, Et as Gt, fr as H, Ct as Ht, Kr as I, sn as It, $n as J, V as Jt, rr as K, vt as Kt, jr as L, It as Lt, Wr as M, Ht as Mt, Xr as N, Y as Nt, si as O, Qt as Ot, Yr as P, Xt as Pt, Qn as Q, B as Qt, Vr as R, Nt as Rt, wi as S, Te as Sn, Zt as St, di as T, Jt as Tt, br as U, Dt as Ut, pr as V, pt as Vt, tr as W, mt as Wt, ur as X, bt as Xt, or as Y, Ot as Yt, sr as Z, xt as Zt, vi as _, Pe as _n, $t as _t, Gi as a, Ye as an, Vn as at, ki as b, De as bn, tn as bt, Qi as c, He as cn, wn as ct, Ni as d, Oe as dn, gn as dt, z as en, Yn as et, Q as f, Fe as fn, hn as ft, yi as g, Ie as gn, U as gt, bi as h, ke as hn, Lt as ht, Ki as i, Ge as in, Wn as it, Qr as j, Gt as jt, ci as k, qt as kt, Bi as l, Ue as ln, Dn as lt, Ci as m, je as mn, zt as mt, Wi as n, Be as nn, Jn as nt, $ as o, Je as on, Hn as ot, Si as p, Ae as pn, W as pt, er as q, Tt as qt, Xi as r, Xe as rn, Un as rt, Yi as s, We as sn, On as st, Ui as t, $e as tn, Kn as tt, zi as u, ze as un, Sn as ut, _i as v, Ne as vn, on as vt, hi as w, Ce as wn, an as wt, Oi as x, Ee as xn, nn as xt, Ai as y, Me as yn, en as yt, Nr as z, Ft as zt };
4974
+ export { Qn as $, B as $t, ti as A, qt as At, Nr as B, Ft as Bt, hi as C, Te as Cn, Zt as Ct, oi as D, Ut as Dt, ai as E, Jt as Et, Jr as F, Xt as Ft, tr as G, mt as Gt, pr as H, pt as Ht, qr as I, Wt as It, er as J, Tt as Jt, nr as K, Et as Kt, jr as L, sn as Lt, Gr as M, Gt as Mt, Zr as N, Ht as Nt, ci as O, Bt as Ot, Xr as P, Y as Pt, sr as Q, xt as Qt, Hr as R, It as Rt, Ti as S, Ee as Sn, nn as St, fi as T, Ce as Tn, an as Tt, fr as U, Ct as Ut, dr as V, Pt as Vt, br as W, Dt as Wt, or as X, Ot as Xt, $n as Y, V as Yt, ur as Z, bt as Zt, yi as _, Ie as _n, U as _t, Ki as a, Ge as an, Wn as at, Ai as b, Me as bn, en as bt, $i as c, We as cn, On as ct, Pi as d, ze as dn, Sn as dt, lt as en, Zn as et, Q as f, Oe as fn, gn as ft, bi as g, ke as gn, Lt as gt, xi as h, je as hn, zt as ht, qi as i, Xe as in, Un as it, $r as j, ln as jt, li as k, Qt as kt, Vi as l, He as ln, wn as lt, wi as m, Ae as mn, W as mt, Gi as n, $e as nn, Kn as nt, $ as o, Ye as on, Vn as ot, Ci as p, Fe as pn, hn as pt, rr as q, vt as qt, Zi as r, Be as rn, Jn as rt, Xi as s, Je as sn, Hn as st, Wi as t, z as tn, Yn as tt, Bi as u, Ue as un, Dn as ut, vi as v, Pe as vn, $t as vt, gi as w, we as wn, cn as wt, ki as x, De as xn, tn as xt, ji as y, Ne as yn, on as yt, Pr as z, Nt as zt };