#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RewindAction {
RestoreBoth,
RestoreConversation,
RestoreCode,
SummarizeFromHere,
NeverMind,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum OpenAIServiceTierChoice {
ProjectDefault,
Flex,
Priority,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum InlineListSelection {
Model(usize),
DynamicModel(usize),
CustomProvider(usize),
RefreshDynamicModels,
Reasoning(String),
DisableReasoning,
OpenAIServiceTier(OpenAIServiceTierChoice),
CustomModel,
Theme(String),
Session(String),
SessionForkMode {
session_id: String,
summarize: bool,
},
ConfigAction(String),
SlashCommand(String),
ToolApproval(bool),
ToolApprovalDenyOnce,
ToolApprovalSession,
ToolApprovalPermanent,
FileConflictReload,
FileConflictViewDiff,
FileConflictAbort,
SessionLimitIncrease(usize),
RewindCheckpoint(usize),
RewindAction(RewindAction),
AskUserChoice {
tab_id: String,
choice_id: String,
text: Option<String>,
},
RequestUserInputAnswer {
question_id: String,
selected: Vec<String>,
other: Option<String>,
},
PlanApprovalExecute,
PlanApprovalEditPlan,
PlanApprovalAutoAccept,
}
#[derive(Clone, Debug)]
pub struct InlineListItem {
pub title: String,
pub subtitle: Option<String>,
pub badge: Option<String>,
pub indent: u8,
pub selection: Option<InlineListSelection>,
pub search_value: Option<String>,
}
#[derive(Clone, Debug)]
pub struct WizardStep {
pub title: String,
pub question: String,
pub items: Vec<InlineListItem>,
pub completed: bool,
pub answer: Option<InlineListSelection>,
pub allow_freeform: bool,
pub freeform_label: Option<String>,
pub freeform_placeholder: Option<String>,
pub freeform_default: Option<String>,
}