Skip to main content

phi_agent/render/
null.rs

1use agent_base::{AgentResult, RuntimeEvent};
2
3use crate::render::EventRenderer;
4
5/// Null renderer: produces no output, only writes tracing logs.
6/// Suitable for scenarios like web backends that don't need stdout.
7pub struct NullRenderer;
8
9impl EventRenderer for NullRenderer {
10    fn render(&mut self, _event: RuntimeEvent) -> AgentResult<()> {
11        Ok(())
12    }
13
14    fn finish_turn(&mut self) -> AgentResult<()> {
15        Ok(())
16    }
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22    use agent_base::SessionId;
23
24    #[test]
25    fn test_null_renderer_always_ok() {
26        let mut r = NullRenderer;
27        assert!(r.render(RuntimeEvent::RunFinished { session_id: SessionId { id: 1, external_id: None } }).is_ok());
28        assert!(r.render(RuntimeEvent::RunCancelled { session_id: SessionId { id: 1, external_id: None } }).is_ok());
29        assert!(r.finish_turn().is_ok());
30        assert!(r.finish_session().is_ok());
31    }
32}