Compile-time type safetyState IDs, action names, and payloads — all checked by the compiler. Typos never reach runtime.
Zod-validated at runtimeOne Zod schema per payload drives both the TypeScript type and the runtime check. No duplication.
Parallel branchesFork fans out to concurrent steps; join re-synchronises them with "all", "any", or a quorum threshold.
Deadlines & SLAsTime-triggered transitions escalate or auto-cancel a stalled step after a delay. The host owns the clock, so runs stay pure and replayable.
External wait statesPause until your service layer signals completion — a webhook, a job, a human elsewhere. No I/O in the engine.
Purely functional persistencegetSnapshot() is plain JSON; restoreInstance() rebuilds exact state. You own the database — the library owns nothing.
Built-in visualizationExport to Mermaid or a JSON graph for React Flow, D3, or Cytoscape — with live status overlays.