Export the raw workflow job as a structured DurableJobExport.
The result contains five sections (filterable via options.allow / options.block):
| Section | Contents |
|---|---|
data |
Workflow input arguments passed to workflow.start() |
state |
Current state: done, response, $error, timestamps |
status |
Semaphore value: 0 = idle, > 0 = pending, < 0 = error |
timeline |
Ordered idempotent markers: activities, children, sleeps, signals |
transitions |
Per-activity execution timestamps by dimension |
the workflow ID to export
controls which sections to include and whether to include values
the exported workflow data
Export a workflow execution as a structured event history (WorkflowExecution).
Returns a Temporal-style event list with typed events, chronological ordering,
back-references (e.g., scheduled_event_id on completed activities), and a
WorkflowExecutionSummary with counts by category.
Event types produced:
workflow_execution_started / completed / failed — lifecycle bookendsactivity_task_scheduled / completed / failed — proxy activity callschild_workflow_execution_started / completed / failed — child workflowstimer_started / timer_fired — workflow.sleep() callsworkflow_execution_signaled — workflow.condition() signals receivedModes:
sparse (default) — transforms the workflow's timeline markers into events.
No extra database queries beyond the initial job export.verbose — recursively fetches child workflow jobs and attaches their full
event histories as nested children (up to max_depth, default 5).Options:
exclude_system — omit internal/interceptor activities (names starting with lt)omit_results — strip result and input payloads from event attributesenrich_inputs — attach activity/child workflow input arguments to eventsallow_direct_query — fallback to raw DB queries for expired/pruned jobsthe workflow ID
the task queue topic (used as workflow_type)
controls mode, filtering, and enrichment
// Sparse export with system activities filtered out
const exec = await handle.exportExecution({ exclude_system: true });
console.log(exec.summary.activities.user); // user activity count
// Verbose export with full child workflow trees
const deep = await handle.exportExecution({ mode: 'verbose', max_depth: 3 });
console.log(deep.children); // nested WorkflowExecution[]
Inflate a raw Redis/Postgres job hash into a structured DurableJobExport.
HotMesh stores workflow state as a flat hash with 3-character symbolized keys
(e.g., aBC,0,0 → worker/output/data). This method decodes each entry and
sorts it into one of four buckets:
aBC,0,0 pattern) — activity start/stop timestamps by dimension_-prefixed keys) — workflow input arguments--prefixed keys) — idempotent operation markers (proxy, child, sleep, etc.)Use options.allow / options.block to limit which sections appear in the result.
the raw key-value hash from the store
filtering and value options
structured export with data, state, status, timeline, and transitions
idem list has a complicated sort order based on indexes and dimensions
Pure transformation: convert a raw DurableJobExport into a WorkflowExecution event history.
Exports durable workflow execution data in two formats:
Raw export (
export())Returns a DurableJobExport with five sections:
workflow.start())doneflag,response,$error, timestamps (jc/ju)0= complete,> 0= activities pending,< 0= failed)created/updatedtimestamps per dimensionUse
allow/blockoptions to limit which sections are returned (e.g., omittransitionsto reduce payload size). Usevalues: falseto strip result payloads from timeline entries.Execution history (
exportExecution())Returns a WorkflowExecution — a Temporal-style event history with typed events (
activity_task_scheduled,timer_fired,workflow_execution_signaled, etc.), chronological ordering, back-references between scheduled/completed pairs, and a summary with activity/child/timer/signal counts.Supports sparse mode (default, no extra I/O) and verbose mode (recursively fetches child workflow histories up to
max_depth). Useenrich_inputsto attach activity and child workflow input arguments to events.