3e09dde114
Issue #195: in coordinator mode, the React TUI and Textual app never injected `<task-notification>` envelopes after a worker finished. `run_print_mode` had `_drain_coordinator_async_agents` wired in, but `ReactBackendHost._process_line` and `TextualApp._process_line` only called `handle_line` and returned, leaving the contract documented in the coordinator system prompt (results arrive between turns) unmet. Extract the drain helpers into `openharness.ui.coordinator_drain` and invoke `drain_coordinator_async_agents` from both interactive hosts after `handle_line` when coordinator mode is active. The shared module also avoids a circular import between `ui.app` and `ui.backend_host`.