@voltro/workflow 0.34.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -101,6 +101,15 @@ export declare interface AdmissionDrainDeps {
101
101
  readonly executionId: string;
102
102
  readonly startedAt: number;
103
103
  }>>;
104
+ /**
105
+ * EVERY registered workflow name — not just the controlled ones in
106
+ * `controls`. A `mode: 'delayed'` row is legitimate for a workflow with NO
107
+ * flow control, so "missing from `controls`" cannot mean "orphan" for it the
108
+ * way it does for a debounce row. Absent → a delayed row is assumed
109
+ * registered, and an unknown name surfaces as a per-row failure (attempts +
110
+ * lastError climb on the row) instead of a silent abandon.
111
+ */
112
+ readonly registeredWorkflows?: ReadonlySet<string>;
104
113
  readonly log?: DrainLogger;
105
114
  readonly now?: () => number;
106
115
  }
@@ -831,6 +840,17 @@ export declare const DEFAULT_STALL_EVENT_LOOKBACK = 20;
831
840
  * tick instead of re-reading the same page. */
832
841
  export declare const DEFAULT_STALL_RUN_PAGE = 200;
833
842
 
843
+ /**
844
+ * Default threshold: a wait DECLARED longer than this suggests the suspending
845
+ * variant. Five minutes — well above any interactive approval, well below the
846
+ * hours-long HITL waits the suspending variant is for; the poll's own backoff
847
+ * (≤ 5 s) makes the polling cost of a shorter wait negligible.
848
+ */
849
+ export declare const DEFAULT_SUSPEND_HINT_MS: number;
850
+
851
+ /** 24 h — see {@link WorkflowScheduleDeclaration.maxRuntime}. */
852
+ export declare const DEFAULT_WORKFLOW_SCHEDULE_MAX_RUNTIME_MS: number;
853
+
834
854
  export declare type DeferMode = DeferringControl | 'paused';
835
855
 
836
856
  /**
@@ -1005,6 +1025,9 @@ export declare const getCurrentWorkflowRunId: () => Effect.Effect<string | undef
1005
1025
  * the path it took before this feature existed. */
1006
1026
  export declare const getWorkflowFlowControl: (value: unknown) => ResolvedFlowControl | undefined;
1007
1027
 
1028
+ /** The resolved schedule attached to a workflow definition, or undefined. */
1029
+ export declare const getWorkflowSchedule: (value: unknown) => ResolvedWorkflowSchedule | undefined;
1030
+
1008
1031
  export declare const getWorkflowVersionMetadata: (value: unknown) => WorkflowVersionMetadata;
1009
1032
 
1010
1033
  /** `true` when this workflow declares at least one `cancelOn` entry — i.e. when
@@ -1145,6 +1168,13 @@ export declare const makeWorkflowRunRecorder: (options: WorkflowRunRecorderOptio
1145
1168
 
1146
1169
  export declare const makeWorkflowUpdateId: () => string;
1147
1170
 
1171
+ /**
1172
+ * Emit the steering hint when a polling `awaitSignal` declares a wait longer
1173
+ * than the threshold. Returns `true` when it hinted — the testable fact; the
1174
+ * once-per-name set is module state on purpose (one process, one hint).
1175
+ */
1176
+ export declare const maybeHintSuspendingSignal: (input: SuspendHintInput) => boolean;
1177
+
1148
1178
  /** The newest event instant in a batch, or `undefined` for an empty one.
1149
1179
  * The watermark advances to THIS, never to `now`: advancing to wall-clock
1150
1180
  * would skip anything written with an older `occurredAt` by a transaction
@@ -1207,6 +1237,37 @@ export declare const normaliseWorkflowPatches: (value: unknown) => ReadonlyArray
1207
1237
 
1208
1238
  export declare const noteIntentAttempt: (store: AdmissionDataStore, intent: PendingIntent, error: string, now: number) => Promise<void>;
1209
1239
 
1240
+ /**
1241
+ * Park a `start(name, payload, { at })` as a DURABLE pending row.
1242
+ *
1243
+ * A delayed start that only exists in a `setTimeout` dies with the process, so
1244
+ * it is a row in `_voltro_workflow_pending` (`mode: 'delayed'`) that the
1245
+ * coordinated drainer fires when `dueAt` arrives. Each call is its OWN row —
1246
+ * two delayed starts never collapse, because unlike debounce nothing about
1247
+ * `{ at }` says the second supersedes the first.
1248
+ *
1249
+ * What happens at `dueAt` is an ARRIVAL, not a bypass: the drainer hands the
1250
+ * row to the same `admitStart` a live `ctx.workflows.start` goes through, so a
1251
+ * workflow's declared debounce/singleton/rateLimit judge the start as of the
1252
+ * moment it comes due. `{ at }` delays the arrival; it never outranks a control.
1253
+ */
1254
+ export declare const parkDelayedStart: (input: ParkDelayedStartInput) => Promise<{
1255
+ readonly intentId: string;
1256
+ readonly dueAt: number;
1257
+ }>;
1258
+
1259
+ export declare interface ParkDelayedStartInput {
1260
+ readonly store: AdmissionDataStore;
1261
+ readonly workflowName: string;
1262
+ readonly payload: unknown;
1263
+ readonly callerContext: unknown;
1264
+ readonly tenantId: string | null;
1265
+ /** Epoch ms the start becomes an ARRIVAL. Must be in the future — the facade
1266
+ * starts a past-`at` immediately and never calls in here. */
1267
+ readonly at: number;
1268
+ readonly now: number;
1269
+ }
1270
+
1210
1271
  /**
1211
1272
  * Is a named change marker in effect for the run currently executing?
1212
1273
  *
@@ -1288,7 +1349,7 @@ export declare interface PendingIntent {
1288
1349
  readonly tenantId: string | null;
1289
1350
  readonly workflowName: string;
1290
1351
  readonly controlKey: string;
1291
- readonly mode: 'debounce' | 'batch' | 'throttle' | 'concurrency' | 'paused';
1352
+ readonly mode: 'debounce' | 'batch' | 'throttle' | 'concurrency' | 'paused' | 'delayed';
1292
1353
  readonly payload: unknown;
1293
1354
  readonly callerContext: unknown;
1294
1355
  readonly priority: number;
@@ -1578,6 +1639,9 @@ export declare interface ReplayShapeTracker {
1578
1639
  */
1579
1640
  export declare const reportNondeterminism: (findings: ReadonlyArray<NondeterminismFinding>) => Effect.Effect<void>;
1580
1641
 
1642
+ /** Test seam: forget which (workflow, signal) pairs have been hinted. */
1643
+ export declare const resetSuspendHintsForTest: () => void;
1644
+
1581
1645
  /** Resolve every declared key against one payload. Pure; throws only
1582
1646
  * {@link FlowControlKeyError}. */
1583
1647
  export declare const resolveAdmissionKeys: (control: ResolvedFlowControl, payload: unknown) => AdmissionKeys;
@@ -1650,6 +1714,18 @@ export declare interface ResolvedFlowControl {
1650
1714
  readonly cancelOn?: ReadonlyArray<ResolvedCancelOn>;
1651
1715
  }
1652
1716
 
1717
+ /** The declaration with defaults filled in — what the CLI lowering reads. */
1718
+ export declare interface ResolvedWorkflowSchedule {
1719
+ readonly cron: string;
1720
+ readonly timezone: string;
1721
+ readonly payload?: unknown | ((fire: {
1722
+ readonly scheduledAt: Date;
1723
+ }) => unknown | Promise<unknown>);
1724
+ readonly onOverlap: WorkflowScheduleOverlap;
1725
+ readonly backfill: 'skip' | 'latest' | 'all';
1726
+ readonly maxRuntimeMs: number;
1727
+ }
1728
+
1653
1729
  /**
1654
1730
  * Read the run-guard knobs from the environment, for the boot paths to spread
1655
1731
  * into {@link wrapWorkflowExecuteWithRunRecording}. Mirrors
@@ -1664,6 +1740,9 @@ export declare const resolveRunGuardTuning: () => {
1664
1740
  replayShapeLimit?: number;
1665
1741
  };
1666
1742
 
1743
+ /** Env (operator, no rebuild) → config (project) → default. */
1744
+ export declare const resolveSuspendHintMs: () => number;
1745
+
1667
1746
  export declare const resolveWorkflowMessageRun: (store: WorkflowMessageStore, target: WorkflowMessageTarget) => Promise<WorkflowResolvedRun>;
1668
1747
 
1669
1748
  export declare const resumeWorkflow: (store: AdmissionDataStore, workflowName: string) => Promise<boolean>;
@@ -1689,6 +1768,15 @@ export declare const sendWorkflowUpdate: (input: {
1689
1768
 
1690
1769
  export declare const serialiseWorkflowRowForWire: (row: Record<string, unknown>) => Record<string, unknown>;
1691
1770
 
1771
+ /**
1772
+ * Set the threshold from `app.config.ts` (`workflows.suspendSignalHintMs`).
1773
+ * Called by the framework boot (both paths, through `wireFlowControl`); the
1774
+ * env override below still wins, per the standing tunables rule.
1775
+ * Non-positive/non-finite values are ignored; `0` cannot silence the hint —
1776
+ * pass a very large threshold to effectively disable it.
1777
+ */
1778
+ export declare const setSuspendSignalHintMs: (ms: number | undefined) => void;
1779
+
1692
1780
  /**
1693
1781
  * Durable sleep — wake time journaled in the cluster. Wrapper around
1694
1782
  * `DurableClock.sleep` that emits `timer-set` / `timer-fired` events
@@ -1963,6 +2051,16 @@ export declare interface SuspendForBudgetOptions {
1963
2051
  readonly hasHeadroom: Effect.Effect<boolean>;
1964
2052
  }
1965
2053
 
2054
+ export declare interface SuspendHintInput {
2055
+ /** Undefined outside an engine context — the hint then keys on the signal
2056
+ * name alone, which still fires once rather than never. */
2057
+ readonly workflowName: string | undefined;
2058
+ readonly signalName: string;
2059
+ /** The wait's DECLARED timeout, ms. */
2060
+ readonly timeoutMs: number;
2061
+ readonly warn?: (message: string) => void;
2062
+ }
2063
+
1966
2064
  /**
1967
2065
  * The stable `DurableDeferred` name for a suspending signal wait. It is a pure
1968
2066
  * function of the workflow name + the signal name, so the awaiting body and an
@@ -2010,6 +2108,14 @@ export declare interface ValidateFlowControlInput {
2010
2108
  readonly control: (WorkflowFlowControl<never> & WorkflowCancelOnDeclared) | undefined;
2011
2109
  }
2012
2110
 
2111
+ /**
2112
+ * Validate at DEFINITION time — module load, i.e. boot — with a message naming
2113
+ * the workflow and the field. Same posture as `validateFlowControl` and
2114
+ * `defineSchedule`: a cron typo that surfaces as "never fired" three days in
2115
+ * is the failure class this repo keeps paying for.
2116
+ */
2117
+ export declare const validateWorkflowSchedule: (workflowName: string, declaration: WorkflowScheduleDeclaration<never> | undefined) => ResolvedWorkflowSchedule | undefined;
2118
+
2013
2119
  /**
2014
2120
  * One parked run, waiting on budget headroom.
2015
2121
  *
@@ -2519,6 +2625,12 @@ declare type WorkflowFn = <const Name extends string, Payload extends WorkflowPa
2519
2625
  * type comes from its OWN `schema` — see {@link WorkflowCancelOnList} for
2520
2626
  * why that needs a tuple type parameter rather than a plain array. */
2521
2627
  readonly cancelOn?: WorkflowCancelOnList<Cancels, DecodedPayload<Payload>>;
2628
+ /** Run this workflow on a cron — the workflow-side spelling of a
2629
+ * `defineSchedule({ workflow })` target, with Temporal's overlap
2630
+ * vocabulary (`skip` / `buffer` / `cancelOther`). Lowered by the CLI into
2631
+ * a real schedule named `workflow:<name>`; see
2632
+ * {@link WorkflowScheduleDeclaration}. */
2633
+ readonly schedule?: WorkflowScheduleDeclaration<DecodedPayload<Payload>>;
2522
2634
  } & Omit<WorkflowBaseOptions, 'name' | 'payload' | 'idempotencyKey' | 'success' | 'error'> & WorkflowVersionOptions & {
2523
2635
  readonly messages?: Messages;
2524
2636
  } & WorkflowFlowControl<DecodedPayload<Payload>>) => workflowModule.Workflow<Name, PayloadSchemaOf<Payload>, Success, Error> & WorkflowMessagesCarrier<NormaliseWorkflowMessages<Messages>>;
@@ -2769,6 +2881,23 @@ export declare interface WorkflowRunRecorderOptions {
2769
2881
  * rather than as garbage — see `inspectWorkflow`.
2770
2882
  */
2771
2883
  readonly encryptStepPayload?: (value: unknown) => unknown;
2884
+ /**
2885
+ * How much this recorder writes per STEP — `'full'` (default) or `'coarse'`.
2886
+ *
2887
+ * `'coarse'` makes `startStep` answer "not recording this step" (the
2888
+ * contract callers already handle) and `endStep*` no-ops, removing the two
2889
+ * fire-and-forget store writes every step otherwise costs. Run rows and
2890
+ * `recordEvent` (signals, timers, cancels, stall reports) are DELIBERATELY
2891
+ * unaffected: they are per-run, not per-step, and they are what the
2892
+ * dead-letter view and the cancel/staleness sweeps read. The engine's own
2893
+ * durable journal is not touched either way — this is the introspection
2894
+ * copy, never replay state.
2895
+ *
2896
+ * App-facing spelling: `workflows.recording` in `app.config.ts`, env
2897
+ * override `VOLTRO_WORKFLOW_RECORDING` (resolved by the CLI, threaded to
2898
+ * BOTH boot paths through one resolver).
2899
+ */
2900
+ readonly recording?: 'full' | 'coarse';
2772
2901
  }
2773
2902
 
2774
2903
  /** Per-step lifecycle hooks. Implementations should not throw —
@@ -2841,6 +2970,68 @@ export declare interface WorkflowRunRecorderService {
2841
2970
  }>;
2842
2971
  }
2843
2972
 
2973
+ export declare interface WorkflowScheduleDeclaration<Payload> {
2974
+ /** Standard cron expression — 5-field or 6-field (leading seconds). */
2975
+ readonly cron: string;
2976
+ /** IANA timezone the expression is interpreted in. REQUIRED, like
2977
+ * `defineSchedule` — server-local time in a container is a bug factory. */
2978
+ readonly timezone: string;
2979
+ /**
2980
+ * The payload each firing starts the workflow with. A value, or a function
2981
+ * of the firing (`({ scheduledAt }) => …`) for payloads that carry the slot
2982
+ * — a backfilled firing then computes against ITS instant, not "now".
2983
+ * Omitted ⇒ `{}`, which only typechecks for workflows whose payload has no
2984
+ * required fields; a mismatch fails the start with `WorkflowPayloadError`
2985
+ * naming the missing fields, same as any other start.
2986
+ */
2987
+ readonly payload?: Payload | ((fire: {
2988
+ readonly scheduledAt: Date;
2989
+ }) => Payload | Promise<Payload>);
2990
+ /** Default `'skip'` — Temporal's default too, and the only answer that is
2991
+ * safe for every job shape. */
2992
+ readonly onOverlap?: WorkflowScheduleOverlap;
2993
+ /** Boot catch-up policy for firings missed during downtime — the scheduler's
2994
+ * own vocabulary, unchanged. Default `'skip'`. For a RANGE older than boot
2995
+ * backfill reaches, use `voltro schedule backfill`. */
2996
+ readonly backfill?: 'skip' | 'latest' | 'all';
2997
+ /**
2998
+ * Watchdog on ONE firing — which, for a workflow schedule, INCLUDES the
2999
+ * awaited run (that await is what makes `onOverlap` bind on the run's
3000
+ * duration). Default 24 hours rather than `defineSchedule`'s 30 minutes,
3001
+ * because a durable run legitimately outlives a handler; set it above your
3002
+ * slowest expected run. Past it the FIRING records `failed`/timeout and
3003
+ * releases the overlap guard — the workflow run itself is NOT cancelled
3004
+ * (declare flow-control `timeouts.finish` to bound the run).
3005
+ */
3006
+ readonly maxRuntime?: FlowDuration;
3007
+ }
3008
+
3009
+ /**
3010
+ * What happens when a firing arrives while the RUN from the previous firing is
3011
+ * still going — Temporal Schedules' overlap vocabulary, applied to the
3012
+ * workflow run (not merely to the handler invocation):
3013
+ *
3014
+ * `'skip'` — the new firing stands down; recorded as `skipped`.
3015
+ * `'buffer'` — the new firing waits and runs after the previous one
3016
+ * finishes; firings serialize, none is lost.
3017
+ * `'cancelOther'` — the new firing CANCELS the still-running previous run
3018
+ * and starts fresh — for "recompute the latest state"
3019
+ * jobs where the old run's partial work is worthless.
3020
+ *
3021
+ * The first two lower into the scheduler's own `onOverlap: 'skip' | 'queue'`;
3022
+ * what makes them bind on the RUN's duration is that the synthesised handler
3023
+ * AWAITS the workflow run to completion, so the schedule-run row is `running`
3024
+ * for exactly as long as the workflow is.
3025
+ */
3026
+ export declare type WorkflowScheduleOverlap = 'skip' | 'buffer' | 'cancelOther';
3027
+
3028
+ /** Attached via `defineProperty` like the flow-control carrier — the value's
3029
+ * TYPE does not know about it, and the web bundle never reads it. A STRING
3030
+ * property rather than a symbol for the same reason as
3031
+ * `WorkflowFlowControlProperty`: the CLI's discovery reads it off a module
3032
+ * that crossed a bundler boundary, and symbols do not survive every one. */
3033
+ export declare const WorkflowScheduleProperty = "__voltroWorkflowSchedule";
3034
+
2844
3035
  /**
2845
3036
  * At most one run per key. The newcomer either stands down or evicts.
2846
3037
  *
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { A as e, B as t, C as n, D as r, E as i, F as a, I as o, L as s, M as c, N as l, O as u, P as d, R as f, S as p, T as m, V as h, _ as g, a as _, b as v, c as y, d as b, f as x, g as S, h as C, i as w, k as T, l as E, m as D, n as O, o as k, p as A, r as j, s as M, t as N, u as P, v as F, w as I, x as L, y as R, z } from "./primitives-oLKOTbvJ.js";
2
- import { $ as B, A as V, At as H, B as U, C as W, Ct as G, D as K, Dt as q, E as J, Et as Y, F as X, G as Z, H as Q, I as $, J as ee, K as te, L as ne, M as re, Mt as ie, N as ae, Nt as oe, O as se, Ot as ce, P as le, Q as ue, R as de, S as fe, St as pe, T as me, Tt as he, U as ge, V as _e, W as ve, X as ye, Y as be, Z as xe, _ as Se, _t as Ce, a as we, at as Te, b as Ee, bt as De, c as Oe, ct as ke, d as Ae, dt as je, et as Me, f as Ne, ft as Pe, g as Fe, gt as Ie, h as Le, ht as Re, i as ze, it as Be, j as Ve, jt as He, k as Ue, kt as We, l as Ge, lt as Ke, m as qe, mt as Je, n as Ye, nt as Xe, o as Ze, ot as Qe, p as $e, pt as et, q as tt, r as nt, rt, s as it, st as at, t as ot, tt as st, u as ct, ut as lt, v as ut, vt as dt, w as ft, wt as pt, x as mt, xt as ht, y as gt, yt as _t, z as vt } from "./src-BXObaqb-.js";
3
- export { ue as ADMISSIONS_TABLE, $e as BUDGET_HOLDS_TABLE, qe as BudgetHoldExpired, vt as CANCEL_ON_WATERMARK, u as CurrentWorkflowExecutionId, T as CurrentWorkflowPatches, I as CurrentWorkflowReplayShape, e as CurrentWorkflowRunId, Le as DEFAULT_BUDGET_HOLD_TIMEOUT_MS, U as DEFAULT_COLD_LOOKBACK_MS, ae as DEFAULT_DRAIN_BATCH, _e as DEFAULT_EVENT_BATCH, B as DEFAULT_LEASE_MS, ze as DEFAULT_MAX_RUN_RECLAIMS, we as DEFAULT_REPLAY_SHAPE_LIMIT, X as DEFAULT_STALL_AFTER_MS, $ as DEFAULT_STALL_EVENT_LOOKBACK, ne as DEFAULT_STALL_RUN_PAGE, o as DEFERRING_CONTROLS, Q as EVENTS_TABLE, dt as FlowControlKeyError, Me as PAUSES_TABLE, st as PENDING_TABLE, ge as WATERMARKS_TABLE, N as WorkflowFlowControlProperty, O as WorkflowMessagesProperty, c as WorkflowRunRecorder, l as WorkflowStepInterceptorTag, j as WorkflowVersionTypeId, w as WorkflowWorkerLayerTypeId, Fe as _voltroBudgetHoldsTable, Y as _voltroWorkflowAdmissionsTable, q as _voltroWorkflowPausesTable, ce as _voltroWorkflowPendingTable, H as _voltroWorkflowRunEventsTable, He as _voltroWorkflowRunStepsTable, ie as _voltroWorkflowRunsTable, We as _voltroWorkflowStartContextsTable, be as _voltroWorkflowWatermarksTable, ye as admitStart, Xe as allIntents, s as assertConsistentPools, Ve as awaitEvent, re as awaitSignal, ft as awaitSignalSuspending, Ne as awaitUpdate, Se as budgetHoldGeneration, ut as budgetHoldKey, gt as budgetHoldSignalName, nt as closeWorkflowChildrenForParent, _t as comparePendingOrder, me as completeSuspendingSignal, De as decideAdmission, f as deferringControlsOf, rt as deleteIntent, Be as discardIntent, le as drainTick, Te as dueIntents, _ as durableClock, k as durableQueue, M as durableQueueModule, y as durableRateLimiterModule, Qe as evaluateAdmission, d as getCurrentWorkflowExecutionId, a as getCurrentWorkflowRunId, E as getWorkflowFlowControl, P as getWorkflowVersionMetadata, z as hasCancelOn, t as hasFlowControl, Ee as heldBudgets, oe as inMemoryWorkflowEngineLayer, Ye as inspectWorkflow, ht as isFinishExpired, pe as isStartExpired, b as isWorkflowWorkerLayer, xe as linkExecution, ot as makeInMemoryRecorder, m as makeReplayShapeTracker, Ze as makeWorkflowRunRecorder, K as makeWorkflowUpdateId, tt as newestEventAt, G as nextSlotAt, i as nondeterminismEventPayload, it as normaliseWorkflowPatches, at as noteIntentAttempt, x as patch, ke as pauseWorkflow, mt as pendingBudgetHolds, Ke as pendingSlotId, lt as pendingWindow, je as persistDefer, ee as planCancellations, pt as pooledConcurrencyKey, A as processQueue, Pe as pruneAdmissions, D as queueWorker, C as rateLimit, et as readAdmissionState, Je as readPausedWorkflows, ve as readWatermark, Re as recordAdmission, fe as releaseBudgetHolds, Ie as releaseLease, r as reportNondeterminism, he as resolveAdmissionKeys, Oe as resolveRunGuardTuning, se as resolveWorkflowMessageRun, Ce as resumeWorkflow, Ue as sendWorkflowSignal, V as sendWorkflowUpdate, Ge as serialiseWorkflowRowForWire, S as sleep, g as sleepUntil, F as step, R as stepIdempotencyKey, v as stepModule, W as suspendForBudget, J as suspendingSignalDeferredName, Z as sweepCancelOn, de as sweepStalledRuns, ct as truncateWorkflowValue, h as validateFlowControl, L as withCompensation, p as workflow, n as workflowModule, Ae as wrapWorkflowExecuteWithRunRecording, te as writeWatermark };
1
+ import { A as e, B as t, C as n, D as r, E as i, G as a, H as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, U as g, V as _, W as v, _ as y, a as b, b as x, c as S, d as C, f as w, g as T, h as E, i as D, j as O, k, l as A, m as j, n as M, o as N, p as P, r as F, s as I, t as L, u as R, v as z, w as B, x as V, y as H, z as U } from "./primitives-CyQZeT1t.js";
2
+ import { $ as W, A as G, At as K, B as q, C as J, Ct as Y, D as X, Dt as Z, E as Q, Et as $, F as ee, Ft as te, G as ne, H as re, I as ie, It as ae, J as oe, K as se, L as ce, Lt as le, M as ue, Mt as de, N as fe, Nt as pe, O as me, Ot as he, P as ge, Pt as _e, Q as ve, R as ye, Rt as be, S as xe, St as Se, T as Ce, Tt as we, U as Te, V as Ee, W as De, X as Oe, Y as ke, Z as Ae, _ as je, _t as Me, a as Ne, at as Pe, b as Fe, bt as Ie, c as Le, ct as Re, d as ze, dt as Be, et as Ve, f as He, ft as Ue, g as We, gt as Ge, h as Ke, ht as qe, i as Je, it as Ye, j as Xe, jt as Ze, k as Qe, kt as $e, l as et, lt as tt, m as nt, mt as rt, n as it, nt as at, o as ot, ot as st, p as ct, pt as lt, q as ut, r as dt, rt as ft, s as pt, st as mt, t as ht, tt as gt, u as _t, ut as vt, v as yt, vt as bt, w as xt, wt as St, x as Ct, xt as wt, y as Tt, yt as Et, z as Dt, zt as Ot } from "./src-DPkbBZDD.js";
3
+ export { ft as ADMISSIONS_TABLE, ct as BUDGET_HOLDS_TABLE, nt as BudgetHoldExpired, De as CANCEL_ON_WATERMARK, l as CurrentWorkflowExecutionId, u as CurrentWorkflowPatches, B as CurrentWorkflowReplayShape, f as CurrentWorkflowRunId, Ke as DEFAULT_BUDGET_HOLD_TIMEOUT_MS, ne as DEFAULT_COLD_LOOKBACK_MS, ye as DEFAULT_DRAIN_BATCH, se as DEFAULT_EVENT_BATCH, Ye as DEFAULT_LEASE_MS, Je as DEFAULT_MAX_RUN_RECLAIMS, Ne as DEFAULT_REPLAY_SHAPE_LIMIT, q as DEFAULT_STALL_AFTER_MS, Ee as DEFAULT_STALL_EVENT_LOOKBACK, re as DEFAULT_STALL_RUN_PAGE, fe as DEFAULT_SUSPEND_HINT_MS, d as DEFAULT_WORKFLOW_SCHEDULE_MAX_RUNTIME_MS, t as DEFERRING_CONTROLS, ut as EVENTS_TABLE, St as FlowControlKeyError, Pe as PAUSES_TABLE, st as PENDING_TABLE, oe as WATERMARKS_TABLE, L as WorkflowFlowControlProperty, M as WorkflowMessagesProperty, s as WorkflowRunRecorder, k as WorkflowScheduleProperty, c as WorkflowStepInterceptorTag, F as WorkflowVersionTypeId, D as WorkflowWorkerLayerTypeId, We as _voltroBudgetHoldsTable, de as _voltroWorkflowAdmissionsTable, pe as _voltroWorkflowPausesTable, _e as _voltroWorkflowPendingTable, ae as _voltroWorkflowRunEventsTable, le as _voltroWorkflowRunStepsTable, be as _voltroWorkflowRunsTable, te as _voltroWorkflowStartContextsTable, Ve as _voltroWorkflowWatermarksTable, gt as admitStart, mt as allIntents, _ as assertConsistentPools, Xe as awaitEvent, ue as awaitSignal, xt as awaitSignalSuspending, He as awaitUpdate, je as budgetHoldGeneration, yt as budgetHoldKey, Tt as budgetHoldSignalName, dt as closeWorkflowChildrenForParent, we as comparePendingOrder, Ce as completeSuspendingSignal, $ as decideAdmission, o as deferringControlsOf, Re as deleteIntent, tt as discardIntent, Dt as drainTick, vt as dueIntents, b as durableClock, N as durableQueue, I as durableQueueModule, S as durableRateLimiterModule, Be as evaluateAdmission, p as getCurrentWorkflowExecutionId, U as getCurrentWorkflowRunId, A as getWorkflowFlowControl, e as getWorkflowSchedule, R as getWorkflowVersionMetadata, g as hasCancelOn, v as hasFlowControl, Fe as heldBudgets, Ot as inMemoryWorkflowEngineLayer, it as inspectWorkflow, Z as isFinishExpired, he as isStartExpired, C as isWorkflowWorkerLayer, at as linkExecution, ht as makeInMemoryRecorder, h as makeReplayShapeTracker, ot as makeWorkflowRunRecorder, X as makeWorkflowUpdateId, ge as maybeHintSuspendingSignal, ve as newestEventAt, $e as nextSlotAt, i as nondeterminismEventPayload, pt as normaliseWorkflowPatches, Ue as noteIntentAttempt, lt as parkDelayedStart, w as patch, rt as pauseWorkflow, Ct as pendingBudgetHolds, qe as pendingSlotId, Ge as pendingWindow, Me as persistDefer, W as planCancellations, K as pooledConcurrencyKey, P as processQueue, bt as pruneAdmissions, j as queueWorker, E as rateLimit, Et as readAdmissionState, Ie as readPausedWorkflows, ke as readWatermark, wt as recordAdmission, xe as releaseBudgetHolds, Se as releaseLease, r as reportNondeterminism, ee as resetSuspendHintsForTest, Ze as resolveAdmissionKeys, Le as resolveRunGuardTuning, ie as resolveSuspendHintMs, me as resolveWorkflowMessageRun, Y as resumeWorkflow, Qe as sendWorkflowSignal, G as sendWorkflowUpdate, et as serialiseWorkflowRowForWire, ce as setSuspendSignalHintMs, T as sleep, y as sleepUntil, z as step, H as stepIdempotencyKey, x as stepModule, J as suspendForBudget, Q as suspendingSignalDeferredName, Oe as sweepCancelOn, Te as sweepStalledRuns, _t as truncateWorkflowValue, a as validateFlowControl, O as validateWorkflowSchedule, V as withCompensation, m as workflow, n as workflowModule, ze as wrapWorkflowExecuteWithRunRecording, Ae as writeWatermark };