c1a0c0ada7
The CLI routes user input typed while the agent is running into ``_interrupt_queue`` (separate from ``_pending_input``) so the explicit interrupt path can opt to deliver them as a single combined message. That path only drains the queue when ``busy_input_mode == "interrupt"`` AND a ``pending_message`` was acknowledged. If the agent's turn finishes naturally (no interrupt fires), any messages typed during the turn stay stuck in ``_interrupt_queue`` forever. Subsequent ``Enter`` presses route input to the same blocked queue and the CLI appears to hang. Original report: lunarnexus in The fix restores the post-turn drain that was originally part of drain off as "worth its own review" and never re-landed it; the user- visible regression is that any non-interrupt-mode user typing during a turn is silently dropped. Implementation: extract the drain to a small helper ``_drain_interrupt_queue_to_pending_input`` matching the existing ``_maybe_continue_goal_after_turn`` style. ``process_loop``'s ``finally`` block calls it once per turn after the status-line refresh and before goal continuation (so re-queued user input preempts an auto-continuation prompt). The helper swallows ``Exception`` so it can never break the main loop. Addresses #20271.