Workflow state reader
Workflow state reader helpers inspect the public WorkflowState returned by workflow.getWorkflowRunById(). Use them to recover suspended runs, inspect resume labels, and read step payloads or outputs without parsing raw workflow snapshots.
Usage exampleDirect link to Usage example
import { createWorkflowStateReader } from '@mastra/core/workflows'
const state = await workflow.getWorkflowRunById('run-123')
if (state) {
const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()
const labels = reader.getResumeLabels()
console.log(reader.getStatus())
console.log(reader.getStepOutput('extract-data'))
console.log(suspendedStep?.path)
console.log(labels.approve)
}
FunctionsDirect link to Functions
createWorkflowStateReader(state)Direct link to createworkflowstatereaderstate
Creates a reader object with methods bound to one WorkflowState.
const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()
getWorkflowStepOutput(state, stepId)Direct link to getworkflowstepoutputstate-stepid
Returns the output for a step ID, including nested workflow dot paths such as parent.child. For foreach steps, returns one entry per iteration; suspended iterations can have undefined output entries.
const output = getWorkflowStepOutput(state, 'extract-data')
getWorkflowStepPayload(state, stepId)Direct link to getworkflowsteppayloadstate-stepid
Returns the payload that was passed to a step. For foreach steps, returns one entry per iteration.
const payload = getWorkflowStepPayload(state, 'extract-data')
getWorkflowSuspendedStep(state)Direct link to getworkflowsuspendedstepstate
Returns the first suspended step from the workflow state. When multiple steps are suspended, ordering follows the order stored in suspendedPaths.
const suspendedStep = getWorkflowSuspendedStep(state)
getWorkflowSuspendedSteps(state)Direct link to getworkflowsuspendedstepsstate
Returns all suspended steps from the workflow state. Each result includes the top-level step ID, resume path, execution path, suspend payload, suspend output, and matching resume labels.
const suspendedSteps = getWorkflowSuspendedSteps(state)
getWorkflowResumeLabel(state, label)Direct link to getworkflowresumelabelstate-label
Returns a resume label by name.
const label = getWorkflowResumeLabel(state, 'approve')
getWorkflowResumeLabels(state)Direct link to getworkflowresumelabelsstate
Returns all resume labels from the workflow state.
const labels = getWorkflowResumeLabels(state)
Reader methodsDirect link to Reader methods
createWorkflowStateReader(state) returns the following methods:
getStatus:
getResult:
getError:
getStepOutput:
getStepPayload:
getSuspendedStep:
getSuspendedSteps:
getResumeLabel:
getResumeLabels:
NotesDirect link to Notes
requestContext and tracingContext are only returned by workflow.getWorkflowRunById() when explicitly requested with fields.