use crate::task_tree::TaskStatus;
use crossterm::event::Event as CrosstermEvent;
#[derive(Debug)]
pub enum AppEvent {
Terminal(CrosstermEvent),
StreamChunk(String),
StreamComplete,
AgentUpdate(AgentStateUpdate),
CoreEvent(perspt_core::AgentEvent),
Tick,
Quit,
Error(String),
}
#[derive(Debug, Clone)]
pub enum AgentStateUpdate {
Status { node_id: String, status: TaskStatus },
Energy { node_id: String, energy: f32 },
Log(String),
NodeCompleted(String),
Complete,
}
pub type AppEventSender = tokio::sync::mpsc::UnboundedSender<AppEvent>;
pub type AppEventReceiver = tokio::sync::mpsc::UnboundedReceiver<AppEvent>;
pub fn create_app_event_channel() -> (AppEventSender, AppEventReceiver) {
tokio::sync::mpsc::unbounded_channel()
}