Skip to main content

codetether_agent/tui/app/autochat/
handler.rs

1//! Event loop handler for autochat UI events.
2
3use crate::tui::app::state::AppState;
4use crate::tui::chat::message::{ChatMessage, MessageType};
5
6use super::events::AutochatUiEvent;
7
8/// Process a single autochat UI event, updating app state.
9pub fn handle_autochat_event(app: &mut AppState, event: AutochatUiEvent) {
10    match event {
11        AutochatUiEvent::Progress(msg) => {
12            app.status = msg;
13        }
14        AutochatUiEvent::SystemMessage(msg) => {
15            app.messages
16                .push(ChatMessage::new(MessageType::System, msg));
17            app.scroll_to_bottom();
18        }
19        AutochatUiEvent::AgentEvent {
20            agent_name,
21            event: _,
22        } => {
23            app.status = format!("🔄 {agent_name} processing…");
24        }
25        AutochatUiEvent::Completed {
26            summary,
27            okr_id,
28            okr_run_id,
29            relay_id,
30        } => {
31            app.autochat.running = false;
32            let mut msg = format!("âś… Autochat relay completed: {summary}");
33            if let Some(oid) = okr_id {
34                msg.push_str(&format!("\nOKR: {oid}"));
35            }
36            if let Some(rid) = relay_id {
37                msg.push_str(&format!("\nRelay: {rid}"));
38            }
39            let _ = okr_run_id;
40            app.messages
41                .push(ChatMessage::new(MessageType::System, msg));
42            app.scroll_to_bottom();
43        }
44    }
45}