#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionSummary {
pub id: String,
pub status: String,
pub workdir: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct DecisionCounts {
pub allow: u64,
pub block: u64,
pub flag: u64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TmuxSessionSummary {
pub name: String,
pub managed: bool,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DiscoveredProjectSummary {
pub path: String,
pub session_count: usize,
pub last_session: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RecommendationSummary {
pub id: String,
pub message: String,
}
#[derive(Debug, Clone)]
pub enum CommandResult {
Sessions(Vec<SessionSummary>),
SessionDetail {
id: String,
status: String,
events: Vec<String>,
},
OverseerStatus {
enabled: bool,
handler: String,
decisions: DecisionCounts,
},
TmuxSessions(Vec<TmuxSessionSummary>),
DiscoveredProjects(Vec<DiscoveredProjectSummary>),
Adopted {
session: String,
},
Discovered {
count: usize,
},
ProjectRegistered {
path: String,
},
ConfigAnalysis {
project: String,
recommendations: Vec<RecommendationSummary>,
},
Snapshot {
session: String,
output: String,
},
Killed {
session_id: String,
},
CommandSent {
session: String,
output: String,
},
ChatReply {
reply: String,
},
Approved {
session_id: String,
},
Denied {
session_id: String,
},
PairCode {
code: String,
expires_in_seconds: u64,
},
PairSuccess {
chat_info: String,
},
PairState {
paired: bool,
},
AlertSubscriptions(Vec<String>),
Doctor(crate::core::doctor::DoctorReport),
SessionStarted {
session: String,
workdir: String,
deployed: bool,
},
Help(String),
Error(String),
}