agreed. the long-running tasks i handle with immediate-background and continually edit message with updates, along with fork-and-reconcile semantics so you don't have to queue messages. also having a supergroup with separate topics for different sessions works really well.
the separate topics approach along with allowing other processes to enqueue messages into the session stream solves state pretty tidily, see "the session as decision-maker" in the linked report