@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
142 lines (108 loc) • 4.31 kB
Markdown
# Run.timeTravelStream()
The `.timeTravelStream()` method re-executes a workflow starting from any specific step with streaming events. This allows you to receive real-time updates during time travel execution while maintaining full visibility into each step's progress.
## Usage example
```typescript
const run = await workflow.createRun()
const output = run.timeTravelStream({
step: 'step2',
inputData: { value: 10 },
})
// Process events as they arrive
for await (const event of output.fullStream) {
console.log(event.type, event.payload)
}
// Get the final result
const result = await output.result
```
## Parameters
All parameters are the same as [`Run.timeTravel()`](https://mastra.ai/reference/workflows/run-methods/timeTravel). See the [timeTravel reference](https://mastra.ai/reference/workflows/run-methods/timeTravel) for detailed parameter documentation.
## Returns
**output** (`WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>`): An object containing both the stream and result promise
**output.fullStream** (`ReadableStream<WorkflowStreamEvent>`): A readable stream that emits workflow events as execution progresses
**output.result** (`Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>`): A promise that resolves to the final workflow execution result
**output.traceId** (`string`): The trace ID associated with this execution when Tracing is enabled
## Stream events
The stream emits various workflow events during execution:
- `workflow-step-start`: Emitted when a step begins execution
- `workflow-step-finish`: Emitted when a step completes successfully
- `workflow-step-error`: Emitted when a step encounters an error
- `workflow-step-suspended`: Emitted when a step suspends
- Additional events depending on step types (agents, tools, etc.)
## Extended usage examples
### Processing events during time travel
```typescript
const run = await workflow.createRun()
const output = run.timeTravelStream({
step: 'step2',
inputData: { value: 10 },
})
for await (const event of output.fullStream) {
switch (event.type) {
case 'workflow-step-start':
console.log(`Starting step: ${event.payload.stepName}`)
break
case 'workflow-step-finish':
console.log(`Completed step: ${event.payload.stepName}`)
break
case 'workflow-step-error':
console.error(`Error in step: ${event.payload.stepName}`, event.payload.error)
break
}
}
const result = await output.result
console.log('Time travel completed:', result)
```
### Time travel stream with context
```typescript
const output = run.timeTravelStream({
step: 'step2',
context: {
step1: {
status: 'success',
payload: { value: 0 },
output: { step1Result: 2 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
})
for await (const event of output.fullStream) {
// Handle events
console.log(event)
}
const result = await output.result
```
### Time travel stream with nested workflows
```typescript
const output = run.timeTravelStream({
step: ['nestedWorkflow', 'step3'],
inputData: { value: 10 },
nestedStepsContext: {
nestedWorkflow: {
step2: {
status: 'success',
payload: { step1Result: 2 },
output: { step2Result: 3 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
},
})
for await (const event of output.fullStream) {
console.log(event.type, event.payload)
}
const result = await output.result
```
## Notes
- The stream closes automatically when time travel execution completes or encounters an error
- You can process events from the stream while the workflow is still executing
- The `result` promise resolves only after all steps have completed
- Stream events follow the same format as regular workflow streaming
- Time travel streaming requires storage to be configured since it relies on persisted workflow snapshots
## Related
- [Run.timeTravel()](https://mastra.ai/reference/workflows/run-methods/timeTravel)
- [Time Travel](https://mastra.ai/docs/workflows/time-travel)
- [Workflow Streaming](https://mastra.ai/docs/streaming/workflow-streaming)
- [Run.stream()](https://mastra.ai/reference/streaming/workflows/stream)
- [Run.resumeStream()](https://mastra.ai/reference/streaming/workflows/resumeStream)