async fn handle_frame(
msg: Message,
write: &mut SplitSink<WebSocketStream<MaybeTlsStream<TcpStream>>, Message>,
channel_id: &str,
target_agent: &Option<String>,
health: &Arc<Mutex<BridgeHealth>>,
) -> Result<FrameOutcome, String>Expand description
Handles one WS frame: ACKs events_api/slash_commands envelopes
immediately (before any parsing/routing — spec §2.2’s hard 3-second
requirement), then routes events_api payloads to the reactive bus.