pub mod agents;
pub mod common;
pub mod job_detail;
pub mod main_menu;
pub mod orchestrators;
pub mod policies;
pub mod settings;
pub mod settings_menu;
use ratatui::Frame;
use ratatui::layout::Rect;
use super::app::ViewId;
use super::event::AppEvent;
#[derive(Debug, Clone, PartialEq)]
pub enum ViewAction {
Push(ViewId),
Pop,
Quit,
Fetch(FetchRequest),
LaunchJob {
orchestrator: String,
task: String,
room: Option<String>,
policy: Option<String>,
effort_override: Option<f32>,
},
WriteConfig(ConfigMutation),
InjectMessage {
orchestrator: String,
job_id: String,
message: String,
},
SetStatus(String, StatusLevel),
}
#[derive(Debug, Clone, PartialEq)]
pub enum FetchRequest {
Policies {
orchestrator: String,
tag: Option<String>,
},
Agents {
orchestrator: String,
},
Health {
orchestrator: String,
},
StartSseStream {
orchestrator: String,
job_id: String,
},
}
#[derive(Debug, Clone, PartialEq)]
pub enum ConfigMutation {
AddRoom {
name: String,
policy: String,
orchestrator: String,
},
EditRoom {
name: String,
policy: Option<String>,
orchestrator: Option<String>,
},
SetDefaultRoom(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StatusLevel {
Info,
Success,
Error,
}
pub trait View {
fn update(&mut self, event: &AppEvent) -> Option<ViewAction>;
fn draw(&mut self, frame: &mut Frame, area: Rect);
fn on_enter(&mut self) -> Vec<ViewAction> {
Vec::new()
}
}