mirror of
https://github.com/vercel/workflow.git
synced 2026-09-14 19:59:43 +08:00
f39f9be2da
With sequential replays on, a run's continuations share one `maxConcurrency: 1` topic. An inline step body holds the invocation's queue message — and therefore the run's only slot — until it finishes, so a wait continuation, hook resume or `wakeUpRun` for that run cannot be delivered: a timer can never preempt a step, and `Promise.race(step, sleep())` always observes the step winning. Worlds now declare `capabilities.serializedRunContinuations`; when a run continuation suspends with a wait or hook armed (or one still open in the log), the runtime passes `allowInlineSteps: false` so every step gets its eager `step_created` and is queued instead. Pure step chains, turbo's hot path, and per-step-topic deliveries keep inline execution. Also point @workflow/nitro at `getWorkflowQueueTrigger()` so its flow trigger carries the matching `maxConcurrency`. Signed-off-by: Peter Wielander <peter.wielander@vercel.com>