メインコンテンツへ移動

Run.timeTravelStream()

.timeTravelStream() メソッドは、任意のステップから Workflow を再実行し、イベントをストリーミングします。各ステップの進捗を完全に把握しながら、タイムトラベル実行中の更新をリアルタイムで受け取れます。

使用例
使用例への直接リンク

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

パラメーター
パラメーターへの直接リンク

すべてのパラメーターは Run.timeTravel() と同じです。パラメーターの詳細については、timeTravel リファレンスを参照してください。

戻り値
戻り値への直接リンク

output:

WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>
ストリームと結果の Promise の両方を含むオブジェクト

output.fullStream:

ReadableStream<WorkflowStreamEvent>
実行の進行に合わせて Workflow イベントを発行する読み取り可能なストリーム

output.result:

Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>
Workflow 実行の最終結果に解決される Promise

output.traceId?:

string
Tracing が有効な場合に、この実行に関連付けられる Trace ID

ストリームイベント
ストリームイベントへの直接リンク

ストリームは、実行中に Workflow イベントを発行します。

  • workflow-step-start: ステップの実行開始時に発行されます
  • workflow-step-finish: ステップが正常に完了したときに発行されます
  • workflow-step-error: ステップでエラーが発生したときに発行されます
  • workflow-step-suspended: ステップが中断したときに発行されます
  • ステップの種類(Agent、Tool など)に応じた追加イベント

詳細な使用例
詳細な使用例への直接リンク

タイムトラベル中のイベント処理
タイムトラベル中のイベント処理への直接リンク

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)

コンテキストを使用するタイムトラベルストリーム
コンテキストを使用するタイムトラベルストリームへの直接リンク

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

ネストされた Workflow を使用するタイムトラベルストリーム
ネストされた Workflow を使用するタイムトラベルストリームへの直接リンク

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

注意事項
注意事項への直接リンク

  • タイムトラベル実行が完了するかエラーが発生すると、ストリームは自動的に閉じられます
  • Workflow の実行中でも、ストリームのイベントを処理できます
  • result Promise は、すべてのステップが完了した後にのみ解決されます
  • ストリームイベントは、通常の Workflow ストリーミングと同じ形式です
  • タイムトラベルストリーミングは永続化された Workflow スナップショットを使用するため、storage を設定する必要があります