codetether_agent/tui/app/state/
default_impl.rs1use std::collections::{HashMap, HashSet, VecDeque};
4use std::sync::Arc;
5
6use crate::tui::help::HelpScrollState;
7use crate::tui::models::{InputMode, ViewMode};
8use crate::tui::ralph_view::RalphViewState;
9use crate::tui::swarm_view::SwarmViewState;
10use crate::tui::symbol_search::SymbolSearchState;
11
12impl Default for super::AppState {
13 fn default() -> Self {
14 Self {
15 view_mode: ViewMode::Chat,
16 input_mode: InputMode::Normal,
17 messages: vec![],
18 input: String::new(),
19 input_cursor: 0,
20 input_scroll: 0,
21 chat_scroll: 0,
22 chat_last_max_scroll: 0,
23 chat_auto_follow: true,
24 tool_preview_scroll: 0,
25 tool_preview_last_max_scroll: 0,
26 protocol_selected: 0,
27 protocol_scroll: 0,
28 status: "Ready — type a message and press Enter. Ctrl+C/Ctrl+Q quits.".to_string(),
29 processing: false,
30 session_id: None,
31 sessions: vec![],
32 selected_session: 0,
33 session_filter: String::new(),
34 cwd_display: String::new(),
35 bus_log: crate::tui::bus_log::BusLogState::new(),
36 swarm: SwarmViewState::new(),
37 audit: crate::tui::audit_view::AuditViewState::default(),
38 git: super::git_state::GitViewState::default(),
39 ralph: RalphViewState::new(),
40 symbol_search: SymbolSearchState::new(),
41 slash_suggestions: vec![],
42 selected_slash_suggestion: 0,
43 command_history: Vec::new(),
44 history_index: None,
45 worker_id: None,
46 worker_name: None,
47 a2a_connected: false,
48 peer_endpoint_ready: false,
49 recent_tasks: Vec::new(),
50 worker_bridge_registered_agents: HashSet::new(),
51 worker_bridge_processing_state: None,
52 worker_task_queue: VecDeque::new(),
53 active_remote_task: None,
54 help_scroll: HelpScrollState::default(),
55 show_help: false,
56 available_models: Vec::new(),
57 selected_model_index: 0,
58 model_picker_active: false,
59 model_filter: String::new(),
60 model_refresh_in_flight: false,
61 model_refresh_rx: None,
62 model_picker_target_model: None,
63 streaming_text: String::new(),
64 processing_started_at: None,
65 current_request_first_token_ms: None,
66 current_request_last_token_ms: None,
67 last_request_first_token_ms: None,
68 last_request_last_token_ms: None,
69 last_completion_model: None,
70 last_completion_latency_ms: None,
71 last_completion_prompt_tokens: None,
72 last_completion_output_tokens: None,
73 context_used: None,
74 context_budget: None,
75 context_health: Default::default(),
76 last_tool_name: None,
77 last_tool_latency_ms: None,
78 last_tool_success: None,
79 pending_tool_name: None,
80 pending_tool_started_at: None,
81 chat_latency: Default::default(),
82 pending_images: Vec::new(),
83 pending_text_pastes: Vec::new(),
84 current_turn_cancel: None,
85 auto_apply_edits: false,
86 allow_network: false,
87 slash_autocomplete: true,
88 use_worktree: true,
89 selected_settings_index: 0,
90 mcp_registry: Arc::new(crate::tui::app::mcp::TuiMcpRegistry::new()),
91 spawned_agents: HashMap::new(),
92 active_spawned_agent: None,
93 streaming_agent_texts: HashMap::new(),
94 cached_message_lines: Vec::new(),
95 cached_messages_len: 0,
96 cached_max_width: 0,
97 cached_streaming_snapshot: None,
98 cached_processing: false,
99 cached_frozen_len: 0,
100 watchdog_notification: None,
101 main_watchdog_root_prompt: None,
102 main_last_event_at: None,
103 main_watchdog_restart_count: 0,
104 main_inflight_prompt: None,
105 okr_repository: None,
106 pending_okr_approval: None,
107 pending_smart_switch_retry: None,
108 smart_switch_retry_count: 0,
109 smart_switch_attempted_models: Vec::new(),
110 chat_sync_rx: None,
111 chat_sync_status: None,
112 chat_sync_last_success: None,
113 chat_sync_last_error: None,
114 chat_sync_uploaded_bytes: 0,
115 chat_sync_uploaded_batches: 0,
116 autochat: super::super::autochat::state::AutochatState::default(),
117 file_picker_dir: std::path::PathBuf::new(),
118 file_picker_entries: Vec::new(),
119 file_picker_selected: 0,
120 file_picker_filter: String::new(),
121 file_picker_active: false,
122 workspace: crate::tui::models::WorkspaceSnapshot::default(),
123 chat_layout_mode: crate::tui::ui::webview::layout_mode::ChatLayoutMode::default(),
124 last_key_at: None,
125 recording_stop_flag: None,
126 pending_voice_text: None,
127 saved_chat_scroll: 0,
128 saved_chat_auto_follow: true,
129 saved_tool_preview_scroll: 0,
130 streaming_start: None,
131 streaming_chars: 0,
132 }
133 }
134}