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>
Getting Started
The Workflow SDK lets you easily add durability, reliability, and observability to async JavaScript. Build apps and AI agents that can suspend, resume, and maintain state with ease.
Visit https://workflow-sdk.dev to view the full documentation.
Community
The Workflow SDK community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects with other people.
Contributing
Contributions to Workflow SDK are welcome and highly appreciated. Please use GitHub issues and discussions to collaborate with the team and wider community.
Security
If you believe you have found a security vulnerability in Workflow SDK, we encourage you to responsibly disclose this and not open a public issue.
To participate in our Open Source Software Bug Bounty program, please email responsible.disclosure@vercel.com. We will add you to the program and provide further instructions for submitting your report.