use crate::app::{AgentViewTarget, Panel};
use crate::command::TuiCommand;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum ScrollDir {
Up,
Down,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum VertDir {
Up,
Down,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum HorizDir {
Left,
Right,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum PaletteEdit {
PushChar(char),
PopChar,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum ElicitationEdit {
PushChar(char),
PopChar,
NextField,
PrevField,
ToggleBool,
EnumNext,
EnumPrev,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum Action {
ScrollLines(i32),
ScrollPage(ScrollDir),
ScrollToTop,
ScrollToBottom,
ToggleToolExpanded,
CycleToolDensity,
ToggleSidePanels,
ToggleHelp,
SetHelp(bool),
CyclePanelFocus,
SetActivePanel(Panel),
TogglePanelCollapse(usize),
ToggleTaskPanel,
TogglePlanView,
SetViewTarget(AgentViewTarget),
ClearTranscript,
Quit,
CancelAgent,
RequestQuit,
EnterInsert,
EnterNormal,
InsertChar(char),
InsertNewline,
InsertText(String),
DeleteCharBackward,
DeleteCharForward,
DeleteWordBackward,
MoveCursor(CursorMove),
ClearInput,
SubmitInput,
HistoryPrev,
HistoryNext,
PrefillInput(String),
OpenCommandPalette,
CloseCommandPalette,
PaletteMove(VertDir),
PaletteInput(PaletteEdit),
PaletteAccept,
CloseMentionPicker,
MentionPickerMove(VertDir),
MentionPickerTabChange(HorizDir),
MentionPickerAccept,
SlashAutocompleteMove(VertDir),
SlashAutocompleteAccept,
SlashAutocompleteAcceptAndSubmit,
SlashAutocompletePopChar,
SlashAutocompletePushChar(char),
CloseSlashAutocomplete,
OpenReverseSearch,
ReverseSearchInput(PaletteEdit),
ReverseSearchNext,
ReverseSearchPrev,
ReverseSearchAccept,
CloseReverseSearch,
OpenTranscriptSearch,
TranscriptSearchInput(PaletteEdit),
TranscriptSearchNext,
TranscriptSearchPrev,
TranscriptSearchAccept,
CloseTranscriptSearch,
SettingsTabNext,
SettingsTabPrev,
SettingsSelectMove(VertDir),
ConfirmRespond(bool),
ElicitationField(ElicitationEdit),
ElicitationSubmit,
ElicitationCancel,
SetMouse(bool),
CopyLastAssistant,
CopyLastCodeBlock(usize),
Dispatch(TuiCommand),
}
impl Action {
#[must_use]
pub(crate) fn preserves_mention_span(&self) -> bool {
matches!(
self,
Self::ScrollLines(_)
| Self::ScrollPage(_)
| Self::ScrollToTop
| Self::ScrollToBottom
| Self::ToggleToolExpanded
| Self::CycleToolDensity
| Self::ToggleSidePanels
| Self::ToggleHelp
| Self::SetHelp(_)
| Self::CyclePanelFocus
| Self::SetActivePanel(_)
| Self::TogglePanelCollapse(_)
| Self::ToggleTaskPanel
| Self::TogglePlanView
| Self::SetViewTarget(_)
| Self::SettingsTabNext
| Self::SettingsTabPrev
| Self::SettingsSelectMove(_)
| Self::SetMouse(_)
| Self::CopyLastAssistant
| Self::CopyLastCodeBlock(_)
| Self::CloseMentionPicker
| Self::MentionPickerMove(_)
| Self::MentionPickerTabChange(_)
)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) enum CursorMove {
Left,
Right,
WordLeft,
WordRight,
Home,
End,
}