Skip to main content

phi_agent/render/
null.rs

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