Skip to Content

run.watch()

The .watch() function subscribes to state changes on a mastra run, allowing you to monitor execution progress and react to state updates.

Usage Example

import { LegacyWorkflow } from "@mastra/core/workflows/legacy"; const workflow = new LegacyWorkflow({ name: "document-processor", }); const run = workflow.createRun(); // Subscribe to state changes const unsubscribe = run.watch(({ results, activePaths }) => { console.log("Results:", results); console.log("Active paths:", activePaths); }); // Run the workflow await run.start({ input: { text: "Process this document" }, }); // Stop watching unsubscribe();

Parameters

callback:

(state: LegacyWorkflowState) => void
Function called whenever the workflow state changes

LegacyWorkflowState Properties

results:

Record<string, any>
Outputs from completed workflow steps

activePaths:

Map<string, { status: string; suspendPayload?: any; stepPath: string[] }>
Current status of each step

runId:

string
ID of the workflow run

timestamp:

number
Timestamp of the workflow run

Returns

unsubscribe:

() => void
Function to stop watching workflow state changes

Additional Examples

Monitor specific step completion:

run.watch(({ results, activePaths }) => { if (activePaths.get("processDocument")?.status === "completed") { console.log( "Document processing output:", results["processDocument"].output, ); } });

Error handling:

run.watch(({ results, activePaths }) => { if (activePaths.get("processDocument")?.status === "failed") { console.error( "Document processing failed:", results["processDocument"].error, ); // Implement error recovery logic } });