use codex_protocol::protocol::AgentStatus; use codex_protocol::protocol::EventMsg; /// Derive the next agent status from a single emitted event. /// Returns `None` when the event does not affect status tracking. pub(crate) fn agent_status_from_event(msg: &EventMsg) -> Option { match msg { EventMsg::TurnStarted(_) => Some(AgentStatus::Running), EventMsg::TurnComplete(ev) => Some(AgentStatus::Completed(ev.last_agent_message.clone())), EventMsg::TurnAborted(ev) => Some(AgentStatus::Errored(format!("{:?}", ev.reason))), EventMsg::Error(ev) => Some(AgentStatus::Errored(ev.message.clone())), EventMsg::ShutdownComplete => Some(AgentStatus::Shutdown), _ => None, } }