@voltro/workflow 0.79.0 → 0.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +134 -0
- package/dist/{cluster-Doetj9Bb.js → cluster-DJittOqj.js} +50 -50
- package/dist/cluster.js +1 -1
- package/dist/clusterTestSuite.js +2 -2
- package/dist/index.d.ts +8 -0
- package/dist/index.js +3 -3
- package/dist/{src-Bq0LY2Gf.js → src-C8oxXvy6.js} +131 -131
- package/package.json +4 -4
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
|
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
|
|
3458
|
+
r.expired += await Fr(e, [t], i);
|
|
3459
3459
|
return;
|
|
3460
3460
|
}
|
|
3461
3461
|
if (Je(a, t, i)) {
|
|
3462
|
-
r.expired += await
|
|
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
|
|
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
|
-
},
|
|
3483
|
+
}, zr = async (e, t, n, r, i) => {
|
|
3484
3484
|
if (e.registeredWorkflows !== void 0 && !e.registeredWorkflows.has(t.workflowName)) {
|
|
3485
|
-
r.expired += await
|
|
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
|
|
3560
|
+
await Ur(e, s.submission, a, r, i, a.batch !== void 0, s.keys);
|
|
3561
3561
|
}
|
|
3562
|
-
},
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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
|
|
3701
|
+
await Ur(e, d.submission, n, o, s, c !== void 0, a);
|
|
3702
3702
|
}
|
|
3703
|
-
},
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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,33 +3812,33 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3812
3812
|
cancelled: n,
|
|
3813
3813
|
...r === void 0 ? {} : { nextDeadlineAt: r }
|
|
3814
3814
|
};
|
|
3815
|
-
},
|
|
3816
|
-
|
|
3817
|
-
},
|
|
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
|
|
3824
|
-
},
|
|
3825
|
-
|
|
3826
|
-
},
|
|
3827
|
-
let t =
|
|
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 (
|
|
3831
|
-
|
|
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
|
-
},
|
|
3834
|
+
}, Qr = async (e, t) => {
|
|
3835
3835
|
if (e) try {
|
|
3836
3836
|
await e.recordEvent(t);
|
|
3837
3837
|
} catch {}
|
|
3838
|
-
},
|
|
3838
|
+
}, $r = (e, n) => {
|
|
3839
3839
|
let i = S.gen(function* () {
|
|
3840
3840
|
let i = n.pollIntervalMs ?? 200, a = n.maxPollIntervalMs ?? 5e3, o = n.timeoutMs ?? 864e5, s = yield* S.serviceOption(Se), c;
|
|
3841
|
-
|
|
3841
|
+
Zr({
|
|
3842
3842
|
workflowName: s._tag === "Some" ? s.value.workflow.name : void 0,
|
|
3843
3843
|
signalName: n.name,
|
|
3844
3844
|
timeoutMs: o,
|
|
@@ -3849,7 +3849,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3849
3849
|
let l = yield* t, u = yield* S.serviceOption(r), 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(() =>
|
|
3852
|
+
yield* S.promise(() => Qr(d, {
|
|
3853
3853
|
runId: f,
|
|
3854
3854
|
eventType: "signal-awaited",
|
|
3855
3855
|
payload: { signalName: n.name }
|
|
@@ -3874,7 +3874,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3874
3874
|
})).find((e) => e.payload?.signalName === n.name);
|
|
3875
3875
|
if (i !== void 0) {
|
|
3876
3876
|
let e = yield* w.decodeUnknown(n.schema)(i.payload?.value);
|
|
3877
|
-
return yield* S.promise(() =>
|
|
3877
|
+
return yield* S.promise(() => Qr(d, {
|
|
3878
3878
|
runId: f,
|
|
3879
3879
|
eventType: "signal-received",
|
|
3880
3880
|
payload: {
|
|
@@ -3891,16 +3891,16 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3891
3891
|
success: n.schema,
|
|
3892
3892
|
execute: i
|
|
3893
3893
|
});
|
|
3894
|
-
},
|
|
3894
|
+
}, ei = async (e, t) => {
|
|
3895
3895
|
if (e !== void 0) try {
|
|
3896
3896
|
await e.recordEvent(t);
|
|
3897
3897
|
} catch {}
|
|
3898
|
-
},
|
|
3898
|
+
}, ti = (e, n) => {
|
|
3899
3899
|
let i = S.gen(function* () {
|
|
3900
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;
|
|
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" ?
|
|
3903
|
-
yield* S.promise(() =>
|
|
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: {
|
|
@@ -3930,7 +3930,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3930
3930
|
h = i.length;
|
|
3931
3931
|
for (let e of i) {
|
|
3932
3932
|
let t = yield* w.decodeUnknown(n.schema)(e.payload);
|
|
3933
|
-
if (n.match(t)) return yield* S.promise(() =>
|
|
3933
|
+
if (n.match(t)) return yield* S.promise(() => ei(u, {
|
|
3934
3934
|
runId: d,
|
|
3935
3935
|
eventType: "event-received",
|
|
3936
3936
|
payload: {
|
|
@@ -3947,7 +3947,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
3947
3947
|
success: n.schema,
|
|
3948
3948
|
execute: i
|
|
3949
3949
|
});
|
|
3950
|
-
},
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
4002
|
-
let t = await
|
|
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
|
|
4010
|
+
if (n.recorded === !1) throw new si(t.id, "signal-sent", n.id);
|
|
4011
4011
|
return { eventId: n.id };
|
|
4012
|
-
},
|
|
4013
|
-
let t = await
|
|
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
|
|
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,15 +4049,15 @@ 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
|
|
4052
|
+
await ri(o);
|
|
4053
4053
|
}
|
|
4054
|
-
},
|
|
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
|
-
},
|
|
4059
|
-
let e = n.timeoutMs ??
|
|
4060
|
-
o !== void 0 && (yield* S.promise(() =>
|
|
4058
|
+
}, hi = (e, n) => S.gen(function* () {
|
|
4059
|
+
let e = n.timeoutMs ?? ui, i = yield* re.WorkflowInstance, a = pi(fi(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(() => mi(c, {
|
|
4061
4061
|
runId: o,
|
|
4062
4062
|
eventType: "signal-awaited",
|
|
4063
4063
|
payload: { signalName: n.name }
|
|
@@ -4066,7 +4066,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4066
4066
|
name: `await-signal-timeout/${n.name}`,
|
|
4067
4067
|
duration: `${e} millis`
|
|
4068
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(() =>
|
|
4069
|
+
return o !== void 0 && (yield* S.promise(() => mi(c, {
|
|
4070
4070
|
runId: o,
|
|
4071
4071
|
eventType: "signal-received",
|
|
4072
4072
|
payload: {
|
|
@@ -4074,19 +4074,19 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4074
4074
|
value: d
|
|
4075
4075
|
}
|
|
4076
4076
|
}))), d;
|
|
4077
|
-
}),
|
|
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: () =>
|
|
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 =
|
|
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",
|
|
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,
|
|
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"]),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
4130
|
-
|
|
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(() =>
|
|
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(() =>
|
|
4142
|
-
let l =
|
|
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*
|
|
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
|
-
}),
|
|
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))),
|
|
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
|
-
},
|
|
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*
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
4218
|
-
let t = await
|
|
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,17 +4224,17 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4224
4224
|
});
|
|
4225
4225
|
}
|
|
4226
4226
|
return [...n.values()];
|
|
4227
|
-
},
|
|
4227
|
+
}, Mi = async (e, t) => {
|
|
4228
4228
|
if (e) try {
|
|
4229
4229
|
await e.recordEvent(t);
|
|
4230
4230
|
} catch {}
|
|
4231
|
-
},
|
|
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
|
-
},
|
|
4237
|
+
}, Pi = (e, n) => {
|
|
4238
4238
|
let i = S.gen(function* () {
|
|
4239
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;
|
|
4240
4240
|
if (s === void 0) return yield* S.die(/* @__PURE__ */ Error("awaitUpdate: no active workflow run id in scope"));
|
|
@@ -4258,7 +4258,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4258
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));
|
|
4259
4259
|
if (c !== void 0) {
|
|
4260
4260
|
let e = c.payload.updateId;
|
|
4261
|
-
yield* S.promise(() =>
|
|
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(() =>
|
|
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
|
-
...
|
|
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(() =>
|
|
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
|
-
...
|
|
4283
|
+
...Ni(t)
|
|
4284
4284
|
}
|
|
4285
4285
|
}))));
|
|
4286
|
-
return yield* S.promise(() =>
|
|
4286
|
+
return yield* S.promise(() => Mi(l, {
|
|
4287
4287
|
runId: u,
|
|
4288
4288
|
eventType: "update-completed",
|
|
4289
4289
|
payload: {
|
|
@@ -4301,7 +4301,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4301
4301
|
success: n.success ?? n.schema,
|
|
4302
4302
|
execute: i
|
|
4303
4303
|
});
|
|
4304
|
-
},
|
|
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
|
-
},
|
|
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) => (
|
|
4321
|
-
let t = r[r.length - 1], i =
|
|
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:
|
|
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:
|
|
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 (
|
|
4338
|
+
return (Fi(r?.startedAt)?.getTime() ?? 0) - (Fi(i?.startedAt)?.getTime() ?? 0);
|
|
4339
4339
|
}), n;
|
|
4340
|
-
},
|
|
4340
|
+
}, zi = (e) => {
|
|
4341
4341
|
if (e == null) return null;
|
|
4342
4342
|
if (typeof e == "string") try {
|
|
4343
4343
|
return JSON.parse(e);
|
|
@@ -4345,27 +4345,27 @@ 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
|
-
},
|
|
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:
|
|
4355
|
-
name:
|
|
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:
|
|
4360
|
-
source:
|
|
4361
|
-
steps:
|
|
4362
|
-
startedAt:
|
|
4363
|
-
finishedAt:
|
|
4364
|
-
traceId:
|
|
4365
|
-
parentExecutionId:
|
|
4366
|
-
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
|
-
},
|
|
4368
|
+
}, Vi = () => {
|
|
4369
4369
|
let e = [], t = [], n = 0, i = 0;
|
|
4370
4370
|
return {
|
|
4371
4371
|
layer: se.succeed(r, {
|
|
@@ -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
|
-
},
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
4463
|
-
let t = e.truncateBytes ??
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
4600
|
-
let u = s.truncateBytes ??
|
|
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)
|
|
@@ -4651,7 +4651,7 @@ var yn = "_voltro_workflow_runs", bn = w.NullOr(w.Struct({
|
|
|
4651
4651
|
executionId: y,
|
|
4652
4652
|
reason: n?.message ?? String(n)
|
|
4653
4653
|
});
|
|
4654
|
-
}))), D = `wfrg_${
|
|
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 =
|
|
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*
|
|
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,
|
|
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, 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:
|
|
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 {
|
|
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 };
|