Defined in: packages/workflow-core/src/types.ts:572
Pluggable backing store for workflow runs.
Two surfaces:
State (getRunState / setRunState / deleteRun) — low-frequency metadata writes (status, output, pause info). State the user mutates inside the handler is NOT persisted here; it's reconstructed from log replay.
Event log (appendEvent / getEvents) — append-only with optimistic CAS on expectedNextIndex. Each entry is a WorkflowEvent. Used for both replay (engine reads checkpoint events back) and transport (UI subscribers tail the log).
Stores that support push-based subscription (in-memory, Redis pub/sub, Postgres LISTEN/NOTIFY, Durable Streams) should implement subscribe so callers can tail a run live without polling.
appendEvent: (runId, expectedNextIndex, event) => Promise<void>;appendEvent: (runId, expectedNextIndex, event) => Promise<void>;Defined in: packages/workflow-core/src/types.ts:582
Append event at expectedNextIndex. Throws LogConflictError if another writer has already committed at that index. Must be atomic.
string
number
Promise<void>
deleteRun: (runId, reason) => Promise<void>;deleteRun: (runId, reason) => Promise<void>;Defined in: packages/workflow-core/src/types.ts:576
string
Promise<void>
getEvents: (runId) => Promise<readonly WorkflowEvent[]>;getEvents: (runId) => Promise<readonly WorkflowEvent[]>;Defined in: packages/workflow-core/src/types.ts:588
Read every event for runId, ordered by append position.
string
Promise<readonly WorkflowEvent[]>
getRunState: (runId) => Promise<RunState<unknown, unknown> | undefined>;getRunState: (runId) => Promise<RunState<unknown, unknown> | undefined>;Defined in: packages/workflow-core/src/types.ts:574
string
Promise<RunState<unknown, unknown> | undefined>
setRunState: (runId, state) => Promise<void>;setRunState: (runId, state) => Promise<void>;Defined in: packages/workflow-core/src/types.ts:575
string
Promise<void>
optional subscribe: (runId, fromIndex, onEvent) => () => void;optional subscribe: (runId, fromIndex, onEvent) => () => void;Defined in: packages/workflow-core/src/types.ts:594
Subscribe to new events for runId. Returns an unsubscribe function. Stores without push support omit this and callers fall back to polling getEvents.
string
number
(event, index) => void
(): void;(): void;void