Workflows の step.do() に追加コンテキストと ReadableStream サポートが追加
Key Points
- step.do() に追加コンテキスト
- ReadableStream を直接返せる
- config に retries/timeout を含む
Summary
Workflows の step.do() コールバックが受け取る context に追加プロパティ(step.name、step.count、config)が追加され、ReadableStream を直接返せるようになりました。非ストリーム出力は 1 MiB 制限ですが、ストリームはより大きなペイロードを扱えます(ただし Workflow インスタンスのストレージ上限には含まれます)。TypeScript の型定義も提供されています。
Key Points
- コールバックの
contextに以下が追加されます:step.name—step.do()に渡したステップ名step.count— インスタンス内で同名ステップが何度呼ばれたか(1始まり)config— 解決済みのステップ設定(retriesとtimeoutがデフォルト適用済み)attempt— 現在の試行回数
- TypeScript 型(例):
type WorkflowStepContext = { step: { name: string; count: number }; attempt: number; config: ResolvedStepConfig }。 ReadableStreamを直接返すことで大きな出力を扱える。- 例:
return object.body(object.bodyがReadableStreamの場合) - 注意: 非ストリームは 1 MiB 制限、ストリームはより大きいがインスタンスのストレージ上限に含む。
- 例:
- 実用ポイント:ループで同じステップ名を使うときは
step.countで回数を判別し、config.retries.limitやconfig.timeoutを参照してリトライ/タイムアウト挙動を制御する。
Migration / Usage tips
- 既存の
step.do()コールバックはそのまま動作します。追加情報が必要な場合はコールバックの引数からcontextを分割代入して利用してください。- 例:
async (context) => { const { step, attempt, config } = context; /* ... */ }
- 例:
- 大きなファイルやストリーミング応答は
ReadableStreamを返すように変更してメモリ使用を抑制してください。