#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RecordingState {
Idle,
Recording,
Transcribing,
Injecting,
ApprovalPending,
Error,
}
#[derive(Debug, Clone)]
pub enum InputEvent {
Toggle,
KeyDown,
KeyUp,
Quit,
}
#[derive(Debug)]
pub enum AppEvent {
Input(InputEvent),
SseConnected,
SseDisconnected(Option<String>),
PermissionAsked(crate::approval::types::PermissionRequest),
PermissionReplied {
session_id: String,
request_id: String,
reply: String,
},
QuestionAsked(crate::approval::types::QuestionRequest),
QuestionReplied {
session_id: String,
request_id: String,
answers: Vec<Vec<String>>,
},
QuestionRejected {
session_id: String,
request_id: String,
},
SessionStatus {
session_id: String,
busy: bool,
},
AudioChunk {
rms_energy: f32,
},
RecoverFromError,
Tick,
Shutdown,
}