Skip to main content

vtcode_config/root/
modes.rs

1use serde::{Deserialize, Serialize};
2
3#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
5#[serde(rename_all = "snake_case")]
6#[derive(Default)]
7pub enum ToolOutputMode {
8    #[default]
9    Compact,
10    Full,
11    /// Catch-all for unknown modes added by future versions.
12    #[serde(other)]
13    Unknown,
14}
15
16/// Controls how adjacent successful tool transition summaries are rendered.
17#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
18#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
19#[serde(rename_all = "snake_case")]
20#[derive(Default)]
21pub enum ToolDisplayMode {
22    /// Render each tool transition summary independently.
23    Expanded,
24    /// Group adjacent command summaries and render a bounded live view.
25    #[default]
26    Compact,
27    /// Catch-all for unknown modes added by future versions.
28    #[serde(other)]
29    Unknown,
30}
31
32#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
33#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
34#[serde(rename_all = "snake_case")]
35#[derive(Default)]
36pub enum ReasoningDisplayMode {
37    Always,
38    #[default]
39    Toggle,
40    Hidden,
41    /// Catch-all for unknown modes added by future versions.
42    #[serde(other)]
43    Unknown,
44}
45
46/// Layout mode override for responsive UI
47#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
48#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default)]
49#[serde(rename_all = "snake_case")]
50pub enum LayoutModeOverride {
51    /// Auto-detect based on terminal size
52    #[default]
53    Auto,
54    /// Force compact mode (no borders)
55    Compact,
56    /// Force standard mode (borders, no sidebar/footer)
57    Standard,
58    /// Force wide mode (sidebar + footer)
59    Wide,
60    /// Catch-all for unknown layouts added by future versions.
61    #[serde(other)]
62    Unknown,
63}
64
65/// UI display mode variants for quick presets
66#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
67#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default)]
68#[serde(rename_all = "snake_case")]
69pub enum UiDisplayMode {
70    /// Full UI with all features (sidebar, footer)
71    Full,
72    /// Minimal UI - no sidebar, no footer
73    #[default]
74    Minimal,
75    /// Focused mode - transcript only, maximum content space
76    Focused,
77    /// Catch-all for unknown modes added by future versions.
78    #[serde(other)]
79    Unknown,
80}
81
82/// Notification delivery mode for terminal attention events.
83#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
84#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default)]
85#[serde(rename_all = "snake_case")]
86pub enum NotificationDeliveryMode {
87    /// Terminal-native alerts only (bell/OSC).
88    Terminal,
89    /// Terminal alerts with desktop notifications when supported.
90    Hybrid,
91    /// Desktop notifications only unless the terminal backend is selected explicitly.
92    #[default]
93    Desktop,
94    /// Catch-all for unknown modes added by future versions.
95    #[serde(other)]
96    Unknown,
97}
98
99/// Preferred notification backend for desktop delivery.
100#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
101#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default)]
102#[serde(rename_all = "snake_case")]
103pub enum NotificationBackend {
104    /// Choose the best available backend for the current platform.
105    #[default]
106    Auto,
107    /// Use macOS `osascript` notifications directly.
108    Osascript,
109    /// Use the `notify-rust` desktop notification backend.
110    NotifyRust,
111    /// Skip desktop notifications and use terminal attention only.
112    Terminal,
113    /// Catch-all for unknown backends added by future versions.
114    #[serde(other)]
115    Unknown,
116}