1use serde::{Deserialize, Serialize};
2
3use crate::types::{CursorShape, Rgb, ScreenRegion, SessionId};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct EventEnvelope {
9 pub subscription_id: String,
10 pub event: String,
11 pub session_id: SessionId,
12 pub timestamp: u64,
13 pub data: serde_json::Value,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct ScreenUpdated {
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub dirty_region: Option<ScreenRegion>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct SessionExited {
28 pub exit_code: Option<i32>,
29 pub signal: Option<String>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct SessionOutput {
34 pub data: String, }
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct TerminalBell {}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct TerminalTitleChanged {
43 pub title: String,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub icon_name: Option<String>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct TerminalCwdChanged {
51 pub cwd: String,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub uri: Option<String>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct TerminalAlternateScreen {
59 pub active: bool,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct TerminalCursorChanged {
65 pub visible: bool,
66 pub shape: CursorShape,
67 pub blinking: bool,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct ShellPromptStart {}
74
75#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct ShellCommandStart {}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79#[serde(rename_all = "camelCase")]
80pub struct ShellOutputStart {
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub command: Option<String>,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(rename_all = "camelCase")]
87pub struct ShellCommandFinished {
88 pub exit_code: i32,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
94#[serde(rename_all = "camelCase")]
95pub struct TerminalNotification {
96 pub title: String,
97 #[serde(skip_serializing_if = "Option::is_none")]
98 pub body: Option<String>,
99 pub urgency: String,
100 pub source: String,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(rename_all = "camelCase")]
105pub struct TerminalClipboardSet {
106 pub selection: String,
107 pub text: String,
108 pub base64: String,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
112#[serde(rename_all = "camelCase")]
113pub struct TerminalProgressChanged {
114 pub state: String,
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub percent: Option<u8>,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
120#[serde(rename_all = "camelCase")]
121pub struct TerminalModeChanged {
122 pub mode: String,
123 pub enabled: bool,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct TerminalFocusChanged {
130 pub focused: bool,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
134#[serde(rename_all = "camelCase")]
135pub struct TerminalColorPaletteChanged {
136 pub changes: std::collections::HashMap<String, Rgb>,
137 pub source: String,
138}