claude_codex/providers/cursor/
proto.rs1use prost::Message;
2
3#[derive(Clone, PartialEq, Message)]
8pub struct AgentClientMessage {
9 #[prost(message, optional, tag = "1")]
10 pub run_request: Option<RunRequest>,
11 #[prost(message, optional, tag = "2")]
12 pub client_heartbeat: Option<ClientHeartbeat>,
13}
14
15#[derive(Clone, PartialEq, Message)]
16pub struct RunRequest {
17 #[prost(message, optional, tag = "1")]
18 pub conversation_state: Option<ConversationState>,
19 #[prost(message, optional, tag = "2")]
20 pub action: Option<Action>,
21 #[prost(message, optional, tag = "6")]
22 pub mcp_tools: Option<McpTools>,
23 #[prost(string, tag = "7")]
24 pub conversation_id: String,
25 #[prost(message, optional, tag = "8")]
26 pub requested_model: Option<CursorModel>,
27 #[prost(bool, tag = "9")]
28 pub exclude_workspace_context: bool,
29 #[prost(message, repeated, tag = "10")]
30 pub selected_subagent_models: Vec<CursorModelRequest>,
31 #[prost(string, tag = "11")]
32 pub conversation_group_id: String,
33 #[prost(bool, tag = "12")]
34 pub client_supports_inline_images: bool,
35}
36
37#[derive(Clone, PartialEq, Message)]
38pub struct ConversationState {
39 #[prost(message, repeated, tag = "1")]
40 pub messages: Vec<ConversationMessage>,
41}
42
43#[derive(Clone, PartialEq, Message)]
44pub struct ConversationMessage {
45 #[prost(string, tag = "1")]
46 pub role: String,
47 #[prost(string, tag = "2")]
48 pub text: String,
49}
50
51#[derive(Clone, PartialEq, Message)]
52pub struct Action {
53 #[prost(message, optional, tag = "1")]
54 pub user_message_action: Option<UserMessageAction>,
55}
56
57#[derive(Clone, PartialEq, Message)]
58pub struct UserMessageAction {
59 #[prost(message, optional, tag = "1")]
60 pub user_message: Option<UserMessage>,
61}
62
63#[derive(Clone, PartialEq, Message)]
64pub struct UserMessage {
65 #[prost(string, tag = "1")]
66 pub text: String,
67 #[prost(string, tag = "2")]
68 pub message_id: String,
69 #[prost(message, optional, tag = "3")]
70 pub selected_context: Option<SelectedContext>,
71 #[prost(string, tag = "4")]
72 pub mode: String,
73}
74
75#[derive(Clone, PartialEq, Message)]
76pub struct SelectedContext {
77 #[prost(message, repeated, tag = "1")]
78 pub selected_images: Vec<SelectedImage>,
79}
80
81#[derive(Clone, PartialEq, Message)]
82pub struct McpTools {
83 #[prost(message, repeated, tag = "1")]
84 pub tools: Vec<McpTool>,
85}
86
87#[derive(Clone, PartialEq, Message)]
88pub struct McpTool {
89 #[prost(string, tag = "1")]
90 pub name: String,
91 #[prost(string, tag = "2")]
92 pub description: String,
93 #[prost(string, tag = "3")]
94 pub input_schema: String,
95}
96
97#[derive(Clone, PartialEq, Message)]
98pub struct ClientHeartbeat {}
99
100#[derive(Clone, PartialEq, Message)]
101pub struct CursorModel {
102 #[prost(string, tag = "1")]
103 pub model_id: String,
104 #[prost(message, repeated, tag = "2")]
105 pub parameters: Vec<ModelParameter>,
106}
107
108#[derive(Clone, PartialEq, Message)]
109pub struct CursorModelRequest {
110 #[prost(string, tag = "1")]
111 pub model_id: String,
112 #[prost(message, repeated, tag = "2")]
113 pub parameters: Vec<ModelParameter>,
114}
115
116#[derive(Clone, PartialEq, Message)]
117pub struct ModelParameter {
118 #[prost(string, tag = "1")]
119 pub id: String,
120 #[prost(string, tag = "2")]
121 pub value: String,
122}
123
124#[derive(Clone, PartialEq, Message)]
125pub struct SelectedImage {
126 #[prost(string, tag = "1")]
127 pub data: String,
128 #[prost(string, tag = "2")]
129 pub uuid: String,
130 #[prost(string, tag = "3")]
131 pub path: String,
132 #[prost(string, tag = "4")]
133 pub mime_type: String,
134}
135
136#[derive(Clone, PartialEq, Message)]
141pub struct AgentServerMessage {
142 #[prost(message, optional, tag = "1")]
143 pub interaction_update: Option<InteractionUpdate>,
144 #[prost(message, optional, tag = "3")]
145 pub exec_server_message: Option<ExecServerMessage>,
146}
147
148#[derive(Clone, PartialEq, Message)]
149pub struct InteractionUpdate {
150 #[prost(message, optional, tag = "1")]
151 pub thinking_delta: Option<ThinkingDelta>,
152 #[prost(message, optional, tag = "2")]
153 pub text_delta: Option<TextDelta>,
154 #[prost(message, optional, tag = "3")]
155 pub turn_ended: Option<TurnEnded>,
156}
157
158#[derive(Clone, PartialEq, Message)]
159pub struct ThinkingDelta {
160 #[prost(string, tag = "1")]
161 pub text: String,
162}
163
164#[derive(Clone, PartialEq, Message)]
165pub struct TextDelta {
166 #[prost(string, tag = "1")]
167 pub text: String,
168}
169
170#[derive(Clone, PartialEq, Message)]
171pub struct TurnEnded {
172 #[prost(uint64, tag = "1")]
173 pub input_tokens: u64,
174 #[prost(uint64, tag = "2")]
175 pub output_tokens: u64,
176 #[prost(uint64, tag = "3")]
177 pub cache_read_tokens: u64,
178 #[prost(uint64, tag = "4")]
179 pub cache_write_tokens: u64,
180}
181
182#[derive(Clone, PartialEq, Message)]
183pub struct ExecServerMessage {
184 #[prost(string, optional, tag = "1")]
185 pub notes_session_id: Option<String>,
186}