Awesome! Took a crack at rebuilding this on Temporal, without the DSL. The model writes plain JavaScript. It runs in a sandbox with five functions available to it, and the script is rerun from the top every time one of those calls finishes. Calls that already happened return their saved result; the first one that hasn't is where the run waits.
All of it is one workflow on
effect-temporal.com/. Sleep is a Temporal timer, approval waits on a signal, a tool call is an activity.
Still a prototype, but plain JS has something going for it.