7ef3f1407b
A slash command runs against the session `resolveTargetSessionId` picks, which is routinely not the session on screen — a tile, a route rebind, or a session created by the call itself. Both prompt pipelines gated on `busyRef`, the FOREGROUND view's busy flag, so one session's send was gated on another session's turn: a stale foreground `true` (a warm resume of a still-running chat leaves one behind) parked an idle session's command on the composer queue and reported "session busy" about a session doing nothing. The converse also leaked — a background send could fire mid-turn while the foreground happened to be idle. Read the published per-session state instead, falling back to the foreground flag only when the target has no state yet (a just-minted session whose first publish hasn't landed). One shared resolver so submit and slash cannot drift apart again.