use crate::compaction::CompactionConfig;
use crate::models::{Message, SystemPrompt};
use crate::tui::app::AppMode;
use crate::tui::approval::ApprovalMode;
use std::path::PathBuf;
#[derive(Debug, Clone)]
pub enum Op {
SendMessage {
content: String,
mode: AppMode,
model: String,
goal_objective: Option<String>,
reasoning_effort: Option<String>,
reasoning_effort_auto: bool,
auto_model: bool,
allow_shell: bool,
trust_mode: bool,
auto_approve: bool,
approval_mode: ApprovalMode,
},
#[allow(dead_code)]
CancelRequest,
#[allow(dead_code)]
ApproveToolCall { id: String },
#[allow(dead_code)]
DenyToolCall { id: String },
#[allow(dead_code)]
SpawnSubAgent { prompt: String },
ListSubAgents,
#[allow(dead_code)]
ChangeMode { mode: AppMode },
#[allow(dead_code)]
SetModel { model: String },
SetCompaction { config: CompactionConfig },
SyncSession {
session_id: Option<String>,
messages: Vec<Message>,
system_prompt: Option<SystemPrompt>,
model: String,
workspace: PathBuf,
},
CompactContext,
Rlm {
content: String,
model: String,
child_model: String,
max_depth: u32,
},
#[allow(dead_code)]
EditLastTurn { new_message: String },
Shutdown,
}