vtcode_tui/core_tui/session/
driver.rs1use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};
2
3use crate::core_tui::log::LogEntry;
4use crate::core_tui::runner::TuiSessionDriver;
5use crate::core_tui::types::{InlineCommand, InlineEvent};
6
7use super::Session;
8
9impl TuiSessionDriver for Session {
10 type Command = InlineCommand;
11 type Event = InlineEvent;
12
13 fn handle_command(&mut self, command: Self::Command) {
14 self.handle_command(command);
15 }
16
17 fn handle_event(
18 &mut self,
19 event: crossterm::event::Event,
20 events: &UnboundedSender<Self::Event>,
21 callback: Option<&(dyn Fn(&Self::Event) + Send + Sync + 'static)>,
22 ) {
23 self.handle_event(event, events, callback);
24 }
25
26 fn handle_tick(&mut self) {
27 self.handle_tick();
28 }
29
30 fn render(&mut self, frame: &mut ratatui::Frame<'_>) {
31 self.render(frame);
32 }
33
34 fn take_redraw(&mut self) -> bool {
35 self.take_redraw()
36 }
37
38 fn use_steady_cursor(&self) -> bool {
39 self.use_steady_cursor()
40 }
41
42 fn should_exit(&self) -> bool {
43 self.should_exit()
44 }
45
46 fn request_exit(&mut self) {
47 self.request_exit();
48 }
49
50 fn mark_dirty(&mut self) {
51 self.mark_dirty();
52 }
53
54 fn update_terminal_title(&mut self) {
55 self.update_terminal_title();
56 }
57
58 fn clear_terminal_title(&mut self) {
59 self.clear_terminal_title();
60 }
61
62 fn is_running_activity(&self) -> bool {
63 self.is_running_activity()
64 }
65
66 fn has_status_spinner(&self) -> bool {
67 self.has_status_spinner()
68 }
69
70 fn thinking_spinner_active(&self) -> bool {
71 self.thinking_spinner.is_active
72 }
73
74 fn has_active_navigation_ui(&self) -> bool {
75 self.has_active_overlay()
76 }
77
78 fn apply_coalesced_scroll(&mut self, line_delta: i32, page_delta: i32) {
79 self.apply_coalesced_scroll(line_delta, page_delta);
80 }
81
82 fn set_show_logs(&mut self, show: bool) {
83 self.show_logs = show;
84 }
85
86 fn set_active_pty_sessions(
87 &mut self,
88 sessions: Option<std::sync::Arc<std::sync::atomic::AtomicUsize>>,
89 ) {
90 self.active_pty_sessions = sessions;
91 }
92
93 fn set_workspace_root(&mut self, root: Option<std::path::PathBuf>) {
94 self.set_workspace_root(root);
95 }
96
97 fn set_log_receiver(&mut self, receiver: UnboundedReceiver<LogEntry>) {
98 self.set_log_receiver(receiver);
99 }
100}