vtcode_core/core/interfaces/
ui.rs1use async_trait::async_trait;
2
3use crate::ui::tui::{InlineEvent, InlineHandle, InlineSession};
4
5#[async_trait]
7pub trait UiSession {
8 fn inline_handle(&self) -> &InlineHandle;
9
10 fn clone_inline_handle(&self) -> InlineHandle {
11 self.inline_handle().clone()
12 }
13
14 async fn next_event(&mut self) -> Option<InlineEvent>;
15
16 fn request_redraw(&self) {
17 self.inline_handle().force_redraw();
18 }
19
20 fn shutdown(&self) {
21 self.inline_handle().shutdown();
22 }
23}
24
25#[async_trait]
26impl UiSession for InlineSession {
27 fn inline_handle(&self) -> &InlineHandle {
28 &self.handle
29 }
30
31 async fn next_event(&mut self) -> Option<InlineEvent> {
32 self.events.recv().await
33 }
34}