1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7use crate::types::{RequestId, SessionId};
8
9#[derive(Debug, Clone, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
11pub enum SessionEventType {
12 #[serde(rename = "session.start")]
13 SessionStart,
14 #[serde(rename = "session.resume")]
15 SessionResume,
16 #[serde(rename = "session.remote_steerable_changed")]
17 SessionRemoteSteerableChanged,
18 #[serde(rename = "session.error")]
19 SessionError,
20 #[serde(rename = "session.idle")]
21 SessionIdle,
22 #[serde(rename = "session.title_changed")]
23 SessionTitleChanged,
24 #[serde(rename = "session.schedule_created")]
25 SessionScheduleCreated,
26 #[serde(rename = "session.schedule_cancelled")]
27 SessionScheduleCancelled,
28 #[serde(rename = "session.autopilot_objective_changed")]
29 SessionAutopilotObjectiveChanged,
30 #[serde(rename = "session.info")]
31 SessionInfo,
32 #[serde(rename = "session.warning")]
33 SessionWarning,
34 #[serde(rename = "session.model_change")]
35 SessionModelChange,
36 #[serde(rename = "session.mode_changed")]
37 SessionModeChanged,
38 #[serde(rename = "session.permissions_changed")]
39 SessionPermissionsChanged,
40 #[serde(rename = "session.plan_changed")]
41 SessionPlanChanged,
42 #[serde(rename = "session.todos_changed")]
43 SessionTodosChanged,
44 #[serde(rename = "session.workspace_file_changed")]
45 SessionWorkspaceFileChanged,
46 #[serde(rename = "session.handoff")]
47 SessionHandoff,
48 #[serde(rename = "session.truncation")]
49 SessionTruncation,
50 #[serde(rename = "session.snapshot_rewind")]
51 SessionSnapshotRewind,
52 #[serde(rename = "session.shutdown")]
53 SessionShutdown,
54 #[serde(rename = "session.context_changed")]
55 SessionContextChanged,
56 #[serde(rename = "session.usage_info")]
57 SessionUsageInfo,
58 #[serde(rename = "session.compaction_start")]
59 SessionCompactionStart,
60 #[serde(rename = "session.compaction_complete")]
61 SessionCompactionComplete,
62 #[serde(rename = "session.task_complete")]
63 SessionTaskComplete,
64 #[serde(rename = "user.message")]
65 UserMessage,
66 #[serde(rename = "pending_messages.modified")]
67 PendingMessagesModified,
68 #[serde(rename = "assistant.turn_start")]
69 AssistantTurnStart,
70 #[serde(rename = "assistant.intent")]
71 AssistantIntent,
72 #[serde(rename = "assistant.reasoning")]
73 AssistantReasoning,
74 #[serde(rename = "assistant.reasoning_delta")]
75 AssistantReasoningDelta,
76 #[serde(rename = "assistant.streaming_delta")]
77 AssistantStreamingDelta,
78 #[serde(rename = "assistant.message")]
79 AssistantMessage,
80 #[serde(rename = "assistant.message_start")]
81 AssistantMessageStart,
82 #[serde(rename = "assistant.message_delta")]
83 AssistantMessageDelta,
84 #[serde(rename = "assistant.turn_end")]
85 AssistantTurnEnd,
86 #[serde(rename = "assistant.usage")]
87 AssistantUsage,
88 #[serde(rename = "model.call_failure")]
89 ModelCallFailure,
90 #[serde(rename = "abort")]
91 Abort,
92 #[serde(rename = "tool.user_requested")]
93 ToolUserRequested,
94 #[serde(rename = "tool.execution_start")]
95 ToolExecutionStart,
96 #[serde(rename = "tool.execution_partial_result")]
97 ToolExecutionPartialResult,
98 #[serde(rename = "tool.execution_progress")]
99 ToolExecutionProgress,
100 #[serde(rename = "tool.execution_complete")]
101 ToolExecutionComplete,
102 #[serde(rename = "skill.invoked")]
103 SkillInvoked,
104 #[serde(rename = "subagent.started")]
105 SubagentStarted,
106 #[serde(rename = "subagent.completed")]
107 SubagentCompleted,
108 #[serde(rename = "subagent.failed")]
109 SubagentFailed,
110 #[serde(rename = "subagent.selected")]
111 SubagentSelected,
112 #[serde(rename = "subagent.deselected")]
113 SubagentDeselected,
114 #[serde(rename = "hook.start")]
115 HookStart,
116 #[serde(rename = "hook.end")]
117 HookEnd,
118 #[serde(rename = "hook.progress")]
119 HookProgress,
120 #[serde(rename = "session.binary_asset")]
128 SessionBinaryAsset,
129 #[serde(rename = "system.message")]
130 SystemMessage,
131 #[serde(rename = "system.notification")]
132 SystemNotification,
133 #[serde(rename = "permission.requested")]
134 PermissionRequested,
135 #[serde(rename = "permission.completed")]
136 PermissionCompleted,
137 #[serde(rename = "user_input.requested")]
138 UserInputRequested,
139 #[serde(rename = "user_input.completed")]
140 UserInputCompleted,
141 #[serde(rename = "elicitation.requested")]
142 ElicitationRequested,
143 #[serde(rename = "elicitation.completed")]
144 ElicitationCompleted,
145 #[serde(rename = "sampling.requested")]
146 SamplingRequested,
147 #[serde(rename = "sampling.completed")]
148 SamplingCompleted,
149 #[serde(rename = "mcp.oauth_required")]
150 McpOauthRequired,
151 #[serde(rename = "mcp.oauth_completed")]
152 McpOauthCompleted,
153 #[serde(rename = "session.custom_notification")]
154 SessionCustomNotification,
155 #[serde(rename = "external_tool.requested")]
156 ExternalToolRequested,
157 #[serde(rename = "external_tool.completed")]
158 ExternalToolCompleted,
159 #[serde(rename = "command.queued")]
160 CommandQueued,
161 #[serde(rename = "command.execute")]
162 CommandExecute,
163 #[serde(rename = "command.completed")]
164 CommandCompleted,
165 #[serde(rename = "auto_mode_switch.requested")]
166 AutoModeSwitchRequested,
167 #[serde(rename = "auto_mode_switch.completed")]
168 AutoModeSwitchCompleted,
169 #[serde(rename = "commands.changed")]
170 CommandsChanged,
171 #[serde(rename = "capabilities.changed")]
172 CapabilitiesChanged,
173 #[serde(rename = "exit_plan_mode.requested")]
174 ExitPlanModeRequested,
175 #[serde(rename = "exit_plan_mode.completed")]
176 ExitPlanModeCompleted,
177 #[serde(rename = "session.tools_updated")]
178 SessionToolsUpdated,
179 #[serde(rename = "session.background_tasks_changed")]
180 SessionBackgroundTasksChanged,
181 #[serde(rename = "session.skills_loaded")]
182 SessionSkillsLoaded,
183 #[serde(rename = "session.custom_agents_updated")]
184 SessionCustomAgentsUpdated,
185 #[serde(rename = "session.mcp_servers_loaded")]
186 SessionMcpServersLoaded,
187 #[serde(rename = "session.mcp_server_status_changed")]
188 SessionMcpServerStatusChanged,
189 #[serde(rename = "session.extensions_loaded")]
190 SessionExtensionsLoaded,
191 #[serde(rename = "session.canvas.opened")]
192 SessionCanvasOpened,
193 #[serde(rename = "session.canvas.registry_changed")]
194 SessionCanvasRegistryChanged,
195 #[serde(rename = "session.canvas.closed")]
196 SessionCanvasClosed,
197 #[serde(rename = "session.extensions.attachments_pushed")]
198 SessionExtensionsAttachmentsPushed,
199 #[serde(rename = "mcp_app.tool_call_complete")]
200 McpAppToolCallComplete,
201 #[default]
203 #[serde(other)]
204 Unknown,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
211#[serde(tag = "type", content = "data")]
212pub enum SessionEventData {
213 #[serde(rename = "session.start")]
214 SessionStart(SessionStartData),
215 #[serde(rename = "session.resume")]
216 SessionResume(SessionResumeData),
217 #[serde(rename = "session.remote_steerable_changed")]
218 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
219 #[serde(rename = "session.error")]
220 SessionError(SessionErrorData),
221 #[serde(rename = "session.idle")]
222 SessionIdle(SessionIdleData),
223 #[serde(rename = "session.title_changed")]
224 SessionTitleChanged(SessionTitleChangedData),
225 #[serde(rename = "session.schedule_created")]
226 SessionScheduleCreated(SessionScheduleCreatedData),
227 #[serde(rename = "session.schedule_cancelled")]
228 SessionScheduleCancelled(SessionScheduleCancelledData),
229 #[serde(rename = "session.autopilot_objective_changed")]
230 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
231 #[serde(rename = "session.info")]
232 SessionInfo(SessionInfoData),
233 #[serde(rename = "session.warning")]
234 SessionWarning(SessionWarningData),
235 #[serde(rename = "session.model_change")]
236 SessionModelChange(SessionModelChangeData),
237 #[serde(rename = "session.mode_changed")]
238 SessionModeChanged(SessionModeChangedData),
239 #[serde(rename = "session.permissions_changed")]
240 SessionPermissionsChanged(SessionPermissionsChangedData),
241 #[serde(rename = "session.plan_changed")]
242 SessionPlanChanged(SessionPlanChangedData),
243 #[serde(rename = "session.todos_changed")]
244 SessionTodosChanged(SessionTodosChangedData),
245 #[serde(rename = "session.workspace_file_changed")]
246 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
247 #[serde(rename = "session.handoff")]
248 SessionHandoff(SessionHandoffData),
249 #[serde(rename = "session.truncation")]
250 SessionTruncation(SessionTruncationData),
251 #[serde(rename = "session.snapshot_rewind")]
252 SessionSnapshotRewind(SessionSnapshotRewindData),
253 #[serde(rename = "session.shutdown")]
254 SessionShutdown(SessionShutdownData),
255 #[serde(rename = "session.context_changed")]
256 SessionContextChanged(SessionContextChangedData),
257 #[serde(rename = "session.usage_info")]
258 SessionUsageInfo(SessionUsageInfoData),
259 #[serde(rename = "session.compaction_start")]
260 SessionCompactionStart(SessionCompactionStartData),
261 #[serde(rename = "session.compaction_complete")]
262 SessionCompactionComplete(SessionCompactionCompleteData),
263 #[serde(rename = "session.task_complete")]
264 SessionTaskComplete(SessionTaskCompleteData),
265 #[serde(rename = "user.message")]
266 UserMessage(UserMessageData),
267 #[serde(rename = "pending_messages.modified")]
268 PendingMessagesModified(PendingMessagesModifiedData),
269 #[serde(rename = "assistant.turn_start")]
270 AssistantTurnStart(AssistantTurnStartData),
271 #[serde(rename = "assistant.intent")]
272 AssistantIntent(AssistantIntentData),
273 #[serde(rename = "assistant.reasoning")]
274 AssistantReasoning(AssistantReasoningData),
275 #[serde(rename = "assistant.reasoning_delta")]
276 AssistantReasoningDelta(AssistantReasoningDeltaData),
277 #[serde(rename = "assistant.streaming_delta")]
278 AssistantStreamingDelta(AssistantStreamingDeltaData),
279 #[serde(rename = "assistant.message")]
280 AssistantMessage(AssistantMessageData),
281 #[serde(rename = "assistant.message_start")]
282 AssistantMessageStart(AssistantMessageStartData),
283 #[serde(rename = "assistant.message_delta")]
284 AssistantMessageDelta(AssistantMessageDeltaData),
285 #[serde(rename = "assistant.turn_end")]
286 AssistantTurnEnd(AssistantTurnEndData),
287 #[serde(rename = "assistant.usage")]
288 AssistantUsage(AssistantUsageData),
289 #[serde(rename = "model.call_failure")]
290 ModelCallFailure(ModelCallFailureData),
291 #[serde(rename = "abort")]
292 Abort(AbortData),
293 #[serde(rename = "tool.user_requested")]
294 ToolUserRequested(ToolUserRequestedData),
295 #[serde(rename = "tool.execution_start")]
296 ToolExecutionStart(ToolExecutionStartData),
297 #[serde(rename = "tool.execution_partial_result")]
298 ToolExecutionPartialResult(ToolExecutionPartialResultData),
299 #[serde(rename = "tool.execution_progress")]
300 ToolExecutionProgress(ToolExecutionProgressData),
301 #[serde(rename = "tool.execution_complete")]
302 ToolExecutionComplete(ToolExecutionCompleteData),
303 #[serde(rename = "skill.invoked")]
304 SkillInvoked(SkillInvokedData),
305 #[serde(rename = "subagent.started")]
306 SubagentStarted(SubagentStartedData),
307 #[serde(rename = "subagent.completed")]
308 SubagentCompleted(SubagentCompletedData),
309 #[serde(rename = "subagent.failed")]
310 SubagentFailed(SubagentFailedData),
311 #[serde(rename = "subagent.selected")]
312 SubagentSelected(SubagentSelectedData),
313 #[serde(rename = "subagent.deselected")]
314 SubagentDeselected(SubagentDeselectedData),
315 #[serde(rename = "hook.start")]
316 HookStart(HookStartData),
317 #[serde(rename = "hook.end")]
318 HookEnd(HookEndData),
319 #[serde(rename = "hook.progress")]
320 HookProgress(HookProgressData),
321 #[serde(rename = "session.binary_asset")]
322 SessionBinaryAsset(SessionBinaryAssetData),
323 #[serde(rename = "system.message")]
324 SystemMessage(SystemMessageData),
325 #[serde(rename = "system.notification")]
326 SystemNotification(SystemNotificationData),
327 #[serde(rename = "permission.requested")]
328 PermissionRequested(PermissionRequestedData),
329 #[serde(rename = "permission.completed")]
330 PermissionCompleted(PermissionCompletedData),
331 #[serde(rename = "user_input.requested")]
332 UserInputRequested(UserInputRequestedData),
333 #[serde(rename = "user_input.completed")]
334 UserInputCompleted(UserInputCompletedData),
335 #[serde(rename = "elicitation.requested")]
336 ElicitationRequested(ElicitationRequestedData),
337 #[serde(rename = "elicitation.completed")]
338 ElicitationCompleted(ElicitationCompletedData),
339 #[serde(rename = "sampling.requested")]
340 SamplingRequested(SamplingRequestedData),
341 #[serde(rename = "sampling.completed")]
342 SamplingCompleted(SamplingCompletedData),
343 #[serde(rename = "mcp.oauth_required")]
344 McpOauthRequired(McpOauthRequiredData),
345 #[serde(rename = "mcp.oauth_completed")]
346 McpOauthCompleted(McpOauthCompletedData),
347 #[serde(rename = "session.custom_notification")]
348 SessionCustomNotification(SessionCustomNotificationData),
349 #[serde(rename = "external_tool.requested")]
350 ExternalToolRequested(ExternalToolRequestedData),
351 #[serde(rename = "external_tool.completed")]
352 ExternalToolCompleted(ExternalToolCompletedData),
353 #[serde(rename = "command.queued")]
354 CommandQueued(CommandQueuedData),
355 #[serde(rename = "command.execute")]
356 CommandExecute(CommandExecuteData),
357 #[serde(rename = "command.completed")]
358 CommandCompleted(CommandCompletedData),
359 #[serde(rename = "auto_mode_switch.requested")]
360 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
361 #[serde(rename = "auto_mode_switch.completed")]
362 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
363 #[serde(rename = "commands.changed")]
364 CommandsChanged(CommandsChangedData),
365 #[serde(rename = "capabilities.changed")]
366 CapabilitiesChanged(CapabilitiesChangedData),
367 #[serde(rename = "exit_plan_mode.requested")]
368 ExitPlanModeRequested(ExitPlanModeRequestedData),
369 #[serde(rename = "exit_plan_mode.completed")]
370 ExitPlanModeCompleted(ExitPlanModeCompletedData),
371 #[serde(rename = "session.tools_updated")]
372 SessionToolsUpdated(SessionToolsUpdatedData),
373 #[serde(rename = "session.background_tasks_changed")]
374 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
375 #[serde(rename = "session.skills_loaded")]
376 SessionSkillsLoaded(SessionSkillsLoadedData),
377 #[serde(rename = "session.custom_agents_updated")]
378 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
379 #[serde(rename = "session.mcp_servers_loaded")]
380 SessionMcpServersLoaded(SessionMcpServersLoadedData),
381 #[serde(rename = "session.mcp_server_status_changed")]
382 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
383 #[serde(rename = "session.extensions_loaded")]
384 SessionExtensionsLoaded(SessionExtensionsLoadedData),
385 #[serde(rename = "session.canvas.opened")]
386 SessionCanvasOpened(SessionCanvasOpenedData),
387 #[serde(rename = "session.canvas.registry_changed")]
388 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
389 #[serde(rename = "session.canvas.closed")]
390 SessionCanvasClosed(SessionCanvasClosedData),
391 #[serde(rename = "session.extensions.attachments_pushed")]
392 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
393 #[serde(rename = "mcp_app.tool_call_complete")]
394 McpAppToolCallComplete(McpAppToolCallCompleteData),
395}
396
397#[derive(Debug, Clone, Serialize, Deserialize)]
403#[serde(rename_all = "camelCase")]
404pub struct TypedSessionEvent {
405 pub id: String,
407 pub timestamp: String,
409 #[serde(skip_serializing_if = "Option::is_none")]
411 pub parent_id: Option<String>,
412 #[serde(skip_serializing_if = "Option::is_none")]
414 pub ephemeral: Option<bool>,
415 #[serde(skip_serializing_if = "Option::is_none")]
418 pub agent_id: Option<String>,
419 #[serde(flatten)]
421 pub payload: SessionEventData,
422}
423
424#[derive(Debug, Clone, Default, Serialize, Deserialize)]
426#[serde(rename_all = "camelCase")]
427pub struct WorkingDirectoryContext {
428 #[serde(skip_serializing_if = "Option::is_none")]
430 pub base_commit: Option<String>,
431 #[serde(skip_serializing_if = "Option::is_none")]
433 pub branch: Option<String>,
434 pub cwd: String,
436 #[serde(skip_serializing_if = "Option::is_none")]
438 pub git_root: Option<String>,
439 #[serde(skip_serializing_if = "Option::is_none")]
441 pub head_commit: Option<String>,
442 #[serde(skip_serializing_if = "Option::is_none")]
444 pub host_type: Option<WorkingDirectoryContextHostType>,
445 #[serde(skip_serializing_if = "Option::is_none")]
447 pub repository: Option<String>,
448 #[serde(skip_serializing_if = "Option::is_none")]
450 pub repository_host: Option<String>,
451}
452
453#[derive(Debug, Clone, Default, Serialize, Deserialize)]
455#[serde(rename_all = "camelCase")]
456pub struct SessionStartData {
457 #[serde(skip_serializing_if = "Option::is_none")]
459 pub already_in_use: Option<bool>,
460 #[serde(skip_serializing_if = "Option::is_none")]
462 pub context: Option<WorkingDirectoryContext>,
463 #[serde(skip_serializing_if = "Option::is_none")]
465 pub context_tier: Option<ContextTier>,
466 pub copilot_version: String,
468 #[serde(skip_serializing_if = "Option::is_none")]
470 pub detached_from_spawning_parent_session_id: Option<String>,
471 pub producer: String,
473 #[serde(skip_serializing_if = "Option::is_none")]
475 pub reasoning_effort: Option<String>,
476 #[serde(skip_serializing_if = "Option::is_none")]
478 pub reasoning_summary: Option<ReasoningSummary>,
479 #[serde(skip_serializing_if = "Option::is_none")]
481 pub remote_steerable: Option<bool>,
482 #[serde(skip_serializing_if = "Option::is_none")]
484 pub selected_model: Option<String>,
485 pub session_id: SessionId,
487 pub start_time: String,
489 pub version: i64,
491}
492
493#[derive(Debug, Clone, Default, Serialize, Deserialize)]
495#[serde(rename_all = "camelCase")]
496pub struct SessionResumeData {
497 #[serde(skip_serializing_if = "Option::is_none")]
499 pub already_in_use: Option<bool>,
500 #[serde(skip_serializing_if = "Option::is_none")]
502 pub context: Option<WorkingDirectoryContext>,
503 #[serde(skip_serializing_if = "Option::is_none")]
505 pub context_tier: Option<ContextTier>,
506 #[serde(skip_serializing_if = "Option::is_none")]
508 pub continue_pending_work: Option<bool>,
509 pub event_count: i64,
511 #[serde(skip_serializing_if = "Option::is_none")]
513 pub events_file_size_bytes: Option<i64>,
514 #[serde(skip_serializing_if = "Option::is_none")]
516 pub reasoning_effort: Option<String>,
517 #[serde(skip_serializing_if = "Option::is_none")]
519 pub reasoning_summary: Option<ReasoningSummary>,
520 #[serde(skip_serializing_if = "Option::is_none")]
522 pub remote_steerable: Option<bool>,
523 pub resume_time: String,
525 #[serde(skip_serializing_if = "Option::is_none")]
527 pub selected_model: Option<String>,
528 #[serde(skip_serializing_if = "Option::is_none")]
530 pub session_was_active: Option<bool>,
531}
532
533#[derive(Debug, Clone, Default, Serialize, Deserialize)]
535#[serde(rename_all = "camelCase")]
536pub struct SessionRemoteSteerableChangedData {
537 pub remote_steerable: bool,
539}
540
541#[derive(Debug, Clone, Default, Serialize, Deserialize)]
543#[serde(rename_all = "camelCase")]
544pub struct SessionErrorData {
545 #[serde(skip_serializing_if = "Option::is_none")]
547 pub eligible_for_auto_switch: Option<bool>,
548 #[serde(skip_serializing_if = "Option::is_none")]
550 pub error_code: Option<String>,
551 pub error_type: String,
553 pub message: String,
555 #[serde(skip_serializing_if = "Option::is_none")]
557 pub provider_call_id: Option<String>,
558 #[serde(skip_serializing_if = "Option::is_none")]
560 pub service_request_id: Option<String>,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub stack: Option<String>,
564 #[serde(skip_serializing_if = "Option::is_none")]
566 pub status_code: Option<i32>,
567 #[serde(skip_serializing_if = "Option::is_none")]
569 pub url: Option<String>,
570}
571
572#[derive(Debug, Clone, Default, Serialize, Deserialize)]
574#[serde(rename_all = "camelCase")]
575pub struct SessionIdleData {
576 #[serde(skip_serializing_if = "Option::is_none")]
578 pub aborted: Option<bool>,
579}
580
581#[derive(Debug, Clone, Default, Serialize, Deserialize)]
583#[serde(rename_all = "camelCase")]
584pub struct SessionTitleChangedData {
585 pub title: String,
587}
588
589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
591#[serde(rename_all = "camelCase")]
592pub struct SessionScheduleCreatedData {
593 #[serde(skip_serializing_if = "Option::is_none")]
595 pub at: Option<i64>,
596 #[serde(skip_serializing_if = "Option::is_none")]
598 pub cron: Option<String>,
599 #[serde(skip_serializing_if = "Option::is_none")]
601 pub display_prompt: Option<String>,
602 pub id: i64,
604 #[serde(skip_serializing_if = "Option::is_none")]
606 pub interval_ms: Option<i64>,
607 pub prompt: String,
609 #[serde(skip_serializing_if = "Option::is_none")]
611 pub recurring: Option<bool>,
612 #[serde(skip_serializing_if = "Option::is_none")]
614 pub tz: Option<String>,
615}
616
617#[derive(Debug, Clone, Default, Serialize, Deserialize)]
619#[serde(rename_all = "camelCase")]
620pub struct SessionScheduleCancelledData {
621 pub id: i64,
623}
624
625#[derive(Debug, Clone, Default, Serialize, Deserialize)]
627#[serde(rename_all = "camelCase")]
628pub struct SessionAutopilotObjectiveChangedData {
629 #[serde(skip_serializing_if = "Option::is_none")]
631 pub id: Option<i64>,
632 pub operation: AutopilotObjectiveChangedOperation,
634 #[serde(skip_serializing_if = "Option::is_none")]
636 pub status: Option<AutopilotObjectiveChangedStatus>,
637}
638
639#[derive(Debug, Clone, Default, Serialize, Deserialize)]
641#[serde(rename_all = "camelCase")]
642pub struct SessionInfoData {
643 pub info_type: String,
645 pub message: String,
647 #[serde(skip_serializing_if = "Option::is_none")]
649 pub tip: Option<String>,
650 #[serde(skip_serializing_if = "Option::is_none")]
652 pub url: Option<String>,
653}
654
655#[derive(Debug, Clone, Default, Serialize, Deserialize)]
657#[serde(rename_all = "camelCase")]
658pub struct SessionWarningData {
659 pub message: String,
661 #[serde(skip_serializing_if = "Option::is_none")]
663 pub url: Option<String>,
664 pub warning_type: String,
666}
667
668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
670#[serde(rename_all = "camelCase")]
671pub struct SessionModelChangeData {
672 #[serde(skip_serializing_if = "Option::is_none")]
674 pub cause: Option<String>,
675 #[serde(skip_serializing_if = "Option::is_none")]
677 pub context_tier: Option<ContextTier>,
678 pub new_model: String,
680 #[serde(skip_serializing_if = "Option::is_none")]
682 pub previous_model: Option<String>,
683 #[serde(skip_serializing_if = "Option::is_none")]
685 pub previous_reasoning_effort: Option<String>,
686 #[serde(skip_serializing_if = "Option::is_none")]
688 pub previous_reasoning_summary: Option<ReasoningSummary>,
689 #[serde(skip_serializing_if = "Option::is_none")]
691 pub reasoning_effort: Option<String>,
692 #[serde(skip_serializing_if = "Option::is_none")]
694 pub reasoning_summary: Option<ReasoningSummary>,
695}
696
697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
699#[serde(rename_all = "camelCase")]
700pub struct SessionModeChangedData {
701 pub new_mode: SessionMode,
703 pub previous_mode: SessionMode,
705}
706
707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
709#[serde(rename_all = "camelCase")]
710pub struct SessionPermissionsChangedData {
711 pub allow_all_permissions: bool,
713 pub previous_allow_all_permissions: bool,
715}
716
717#[derive(Debug, Clone, Default, Serialize, Deserialize)]
719#[serde(rename_all = "camelCase")]
720pub struct SessionPlanChangedData {
721 pub operation: PlanChangedOperation,
723}
724
725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
727#[serde(rename_all = "camelCase")]
728pub struct SessionTodosChangedData {}
729
730#[derive(Debug, Clone, Default, Serialize, Deserialize)]
732#[serde(rename_all = "camelCase")]
733pub struct SessionWorkspaceFileChangedData {
734 pub operation: WorkspaceFileChangedOperation,
736 pub path: String,
738}
739
740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
742#[serde(rename_all = "camelCase")]
743pub struct HandoffRepository {
744 #[serde(skip_serializing_if = "Option::is_none")]
746 pub branch: Option<String>,
747 pub name: String,
749 pub owner: String,
751}
752
753#[derive(Debug, Clone, Default, Serialize, Deserialize)]
755#[serde(rename_all = "camelCase")]
756pub struct SessionHandoffData {
757 #[serde(skip_serializing_if = "Option::is_none")]
759 pub context: Option<String>,
760 pub handoff_time: String,
762 #[serde(skip_serializing_if = "Option::is_none")]
764 pub host: Option<String>,
765 #[serde(skip_serializing_if = "Option::is_none")]
767 pub remote_session_id: Option<SessionId>,
768 #[serde(skip_serializing_if = "Option::is_none")]
770 pub repository: Option<HandoffRepository>,
771 pub source_type: HandoffSourceType,
773 #[serde(skip_serializing_if = "Option::is_none")]
775 pub summary: Option<String>,
776}
777
778#[derive(Debug, Clone, Default, Serialize, Deserialize)]
780#[serde(rename_all = "camelCase")]
781pub struct SessionTruncationData {
782 pub messages_removed_during_truncation: i64,
784 pub performed_by: String,
786 pub post_truncation_messages_length: i64,
788 pub post_truncation_tokens_in_messages: i64,
790 pub pre_truncation_messages_length: i64,
792 pub pre_truncation_tokens_in_messages: i64,
794 pub token_limit: i64,
796 pub tokens_removed_during_truncation: i64,
798}
799
800#[derive(Debug, Clone, Default, Serialize, Deserialize)]
802#[serde(rename_all = "camelCase")]
803pub struct SessionSnapshotRewindData {
804 pub events_removed: i64,
806 pub up_to_event_id: String,
808}
809
810#[derive(Debug, Clone, Default, Serialize, Deserialize)]
812#[serde(rename_all = "camelCase")]
813pub struct ShutdownCodeChanges {
814 pub files_modified: Vec<String>,
816 pub lines_added: i64,
818 pub lines_removed: i64,
820}
821
822#[derive(Debug, Clone, Default, Serialize, Deserialize)]
824#[serde(rename_all = "camelCase")]
825pub struct ShutdownModelMetricRequests {
826 #[serde(skip_serializing_if = "Option::is_none")]
835 pub cost: Option<f64>,
836 #[serde(skip_serializing_if = "Option::is_none")]
845 pub count: Option<i64>,
846}
847
848#[derive(Debug, Clone, Default, Serialize, Deserialize)]
850#[serde(rename_all = "camelCase")]
851pub struct ShutdownModelMetricTokenDetail {
852 pub token_count: i64,
854}
855
856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
858#[serde(rename_all = "camelCase")]
859pub struct ShutdownModelMetricUsage {
860 pub cache_read_tokens: i64,
862 pub cache_write_tokens: i64,
864 pub input_tokens: i64,
866 pub output_tokens: i64,
868 #[serde(skip_serializing_if = "Option::is_none")]
870 pub reasoning_tokens: Option<i64>,
871}
872
873#[derive(Debug, Clone, Default, Serialize, Deserialize)]
875#[serde(rename_all = "camelCase")]
876pub struct ShutdownModelMetric {
877 pub requests: ShutdownModelMetricRequests,
879 #[serde(skip_serializing_if = "Option::is_none")]
881 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
882 #[serde(skip_serializing_if = "Option::is_none")]
891 pub total_nano_aiu: Option<f64>,
892 pub usage: ShutdownModelMetricUsage,
894}
895
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898#[serde(rename_all = "camelCase")]
899pub struct ShutdownTokenDetail {
900 pub token_count: i64,
902}
903
904#[derive(Debug, Clone, Default, Serialize, Deserialize)]
906#[serde(rename_all = "camelCase")]
907pub struct SessionShutdownData {
908 pub code_changes: ShutdownCodeChanges,
910 #[serde(skip_serializing_if = "Option::is_none")]
912 pub conversation_tokens: Option<i64>,
913 #[serde(skip_serializing_if = "Option::is_none")]
915 pub current_model: Option<String>,
916 #[serde(skip_serializing_if = "Option::is_none")]
918 pub current_tokens: Option<i64>,
919 #[serde(skip_serializing_if = "Option::is_none")]
921 pub error_reason: Option<String>,
922 #[serde(skip_serializing_if = "Option::is_none")]
924 pub events_file_size_bytes: Option<i64>,
925 pub model_metrics: HashMap<String, ShutdownModelMetric>,
927 pub session_start_time: i64,
929 pub shutdown_type: ShutdownType,
931 #[serde(skip_serializing_if = "Option::is_none")]
933 pub system_tokens: Option<i64>,
934 #[serde(skip_serializing_if = "Option::is_none")]
936 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
937 #[serde(skip_serializing_if = "Option::is_none")]
939 pub tool_definitions_tokens: Option<i64>,
940 pub total_api_duration_ms: i64,
942 #[serde(skip_serializing_if = "Option::is_none")]
951 pub total_nano_aiu: Option<f64>,
952 #[doc(hidden)]
954 #[serde(skip_serializing_if = "Option::is_none")]
955 pub(crate) total_premium_requests: Option<f64>,
956}
957
958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
960#[serde(rename_all = "camelCase")]
961pub struct SessionContextChangedData {
962 #[serde(skip_serializing_if = "Option::is_none")]
964 pub base_commit: Option<String>,
965 #[serde(skip_serializing_if = "Option::is_none")]
967 pub branch: Option<String>,
968 pub cwd: String,
970 #[serde(skip_serializing_if = "Option::is_none")]
972 pub git_root: Option<String>,
973 #[serde(skip_serializing_if = "Option::is_none")]
975 pub head_commit: Option<String>,
976 #[serde(skip_serializing_if = "Option::is_none")]
978 pub host_type: Option<WorkingDirectoryContextHostType>,
979 #[serde(skip_serializing_if = "Option::is_none")]
981 pub repository: Option<String>,
982 #[serde(skip_serializing_if = "Option::is_none")]
984 pub repository_host: Option<String>,
985}
986
987#[derive(Debug, Clone, Default, Serialize, Deserialize)]
989#[serde(rename_all = "camelCase")]
990pub struct SessionUsageInfoData {
991 #[serde(skip_serializing_if = "Option::is_none")]
993 pub conversation_tokens: Option<i64>,
994 pub current_tokens: i64,
996 #[serde(skip_serializing_if = "Option::is_none")]
998 pub is_initial: Option<bool>,
999 pub messages_length: i64,
1001 #[serde(skip_serializing_if = "Option::is_none")]
1003 pub system_tokens: Option<i64>,
1004 pub token_limit: i64,
1006 #[serde(skip_serializing_if = "Option::is_none")]
1008 pub tool_definitions_tokens: Option<i64>,
1009}
1010
1011#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1013#[serde(rename_all = "camelCase")]
1014pub struct SessionCompactionStartData {
1015 #[serde(skip_serializing_if = "Option::is_none")]
1017 pub conversation_tokens: Option<i64>,
1018 #[serde(skip_serializing_if = "Option::is_none")]
1020 pub system_tokens: Option<i64>,
1021 #[serde(skip_serializing_if = "Option::is_none")]
1023 pub tool_definitions_tokens: Option<i64>,
1024}
1025
1026#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1028#[serde(rename_all = "camelCase")]
1029pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1030 pub batch_size: i64,
1032 pub cost_per_batch: i64,
1034 pub token_count: i64,
1036 pub token_type: String,
1038}
1039
1040#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1042#[serde(rename_all = "camelCase")]
1043pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1044 #[doc(hidden)]
1046 #[serde(skip_serializing_if = "Option::is_none")]
1047 pub(crate) token_details:
1048 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1049 pub total_nano_aiu: f64,
1051}
1052
1053#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1055#[serde(rename_all = "camelCase")]
1056pub struct CompactionCompleteCompactionTokensUsed {
1057 #[serde(skip_serializing_if = "Option::is_none")]
1059 pub cache_read_tokens: Option<i64>,
1060 #[serde(skip_serializing_if = "Option::is_none")]
1062 pub cache_write_tokens: Option<i64>,
1063 #[doc(hidden)]
1065 #[serde(skip_serializing_if = "Option::is_none")]
1066 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1067 #[serde(skip_serializing_if = "Option::is_none")]
1069 pub duration: Option<i64>,
1070 #[serde(skip_serializing_if = "Option::is_none")]
1072 pub input_tokens: Option<i64>,
1073 #[serde(skip_serializing_if = "Option::is_none")]
1075 pub model: Option<String>,
1076 #[serde(skip_serializing_if = "Option::is_none")]
1078 pub output_tokens: Option<i64>,
1079}
1080
1081#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1083#[serde(rename_all = "camelCase")]
1084pub struct SessionCompactionCompleteData {
1085 #[serde(skip_serializing_if = "Option::is_none")]
1087 pub checkpoint_number: Option<i64>,
1088 #[serde(skip_serializing_if = "Option::is_none")]
1090 pub checkpoint_path: Option<String>,
1091 #[serde(skip_serializing_if = "Option::is_none")]
1093 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1094 #[serde(skip_serializing_if = "Option::is_none")]
1096 pub conversation_tokens: Option<i64>,
1097 #[serde(skip_serializing_if = "Option::is_none")]
1099 pub custom_instructions: Option<String>,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub error: Option<String>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub messages_removed: Option<i64>,
1106 #[serde(skip_serializing_if = "Option::is_none")]
1108 pub post_compaction_tokens: Option<i64>,
1109 #[serde(skip_serializing_if = "Option::is_none")]
1111 pub pre_compaction_messages_length: Option<i64>,
1112 #[serde(skip_serializing_if = "Option::is_none")]
1114 pub pre_compaction_tokens: Option<i64>,
1115 #[serde(skip_serializing_if = "Option::is_none")]
1117 pub request_id: Option<RequestId>,
1118 #[serde(skip_serializing_if = "Option::is_none")]
1120 pub service_request_id: Option<String>,
1121 pub success: bool,
1123 #[serde(skip_serializing_if = "Option::is_none")]
1125 pub summary_content: Option<String>,
1126 #[serde(skip_serializing_if = "Option::is_none")]
1128 pub system_tokens: Option<i64>,
1129 #[serde(skip_serializing_if = "Option::is_none")]
1131 pub tokens_removed: Option<i64>,
1132 #[serde(skip_serializing_if = "Option::is_none")]
1134 pub tool_definitions_tokens: Option<i64>,
1135}
1136
1137#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1139#[serde(rename_all = "camelCase")]
1140pub struct SessionTaskCompleteData {
1141 #[serde(skip_serializing_if = "Option::is_none")]
1143 pub success: Option<bool>,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub summary: Option<String>,
1147}
1148
1149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1151#[serde(rename_all = "camelCase")]
1152pub struct UserMessageData {
1153 #[serde(skip_serializing_if = "Option::is_none")]
1155 pub agent_mode: Option<UserMessageAgentMode>,
1156 #[serde(skip_serializing_if = "Option::is_none")]
1158 pub attachments: Option<Vec<serde_json::Value>>,
1159 pub content: String,
1161 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub interaction_id: Option<String>,
1164 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub is_autopilot_continuation: Option<bool>,
1167 #[serde(skip_serializing_if = "Option::is_none")]
1169 pub native_document_path_fallback_paths: Option<Vec<String>>,
1170 #[serde(skip_serializing_if = "Option::is_none")]
1172 pub parent_agent_task_id: Option<String>,
1173 #[serde(skip_serializing_if = "Option::is_none")]
1175 pub source: Option<String>,
1176 #[serde(skip_serializing_if = "Option::is_none")]
1178 pub supported_native_document_mime_types: Option<Vec<String>>,
1179 #[serde(skip_serializing_if = "Option::is_none")]
1181 pub transformed_content: Option<String>,
1182}
1183
1184#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1186#[serde(rename_all = "camelCase")]
1187pub struct PendingMessagesModifiedData {}
1188
1189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1191#[serde(rename_all = "camelCase")]
1192pub struct AssistantTurnStartData {
1193 #[serde(skip_serializing_if = "Option::is_none")]
1195 pub interaction_id: Option<String>,
1196 pub turn_id: String,
1198}
1199
1200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1202#[serde(rename_all = "camelCase")]
1203pub struct AssistantIntentData {
1204 pub intent: String,
1206}
1207
1208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1210#[serde(rename_all = "camelCase")]
1211pub struct AssistantReasoningData {
1212 pub content: String,
1214 pub reasoning_id: String,
1216}
1217
1218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1220#[serde(rename_all = "camelCase")]
1221pub struct AssistantReasoningDeltaData {
1222 pub delta_content: String,
1224 pub reasoning_id: String,
1226}
1227
1228#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1230#[serde(rename_all = "camelCase")]
1231pub struct AssistantStreamingDeltaData {
1232 pub total_response_size_bytes: i64,
1234}
1235
1236#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245#[serde(rename_all = "camelCase")]
1246pub struct AssistantMessageServerTools {
1247 #[serde(skip_serializing_if = "Option::is_none")]
1248 pub advisor_model: Option<String>,
1249 #[serde(skip_serializing_if = "Option::is_none")]
1250 pub function_call_namespaces: Option<HashMap<String, String>>,
1251 #[serde(skip_serializing_if = "Option::is_none")]
1252 pub items: Option<Vec<serde_json::Value>>,
1253 pub provider: String,
1254 #[serde(skip_serializing_if = "Option::is_none")]
1255 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1256}
1257
1258#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1260#[serde(rename_all = "camelCase")]
1261pub struct AssistantMessageToolRequest {
1262 #[serde(skip_serializing_if = "Option::is_none")]
1264 pub arguments: Option<serde_json::Value>,
1265 #[serde(skip_serializing_if = "Option::is_none")]
1267 pub intention_summary: Option<String>,
1268 #[serde(skip_serializing_if = "Option::is_none")]
1270 pub mcp_server_name: Option<String>,
1271 #[serde(skip_serializing_if = "Option::is_none")]
1273 pub mcp_tool_name: Option<String>,
1274 pub name: String,
1276 pub tool_call_id: String,
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub tool_title: Option<String>,
1281 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub r#type: Option<AssistantMessageToolRequestType>,
1284}
1285
1286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1288#[serde(rename_all = "camelCase")]
1289pub struct AssistantMessageData {
1290 #[serde(skip_serializing_if = "Option::is_none")]
1292 pub api_call_id: Option<String>,
1293 pub content: String,
1295 #[serde(skip_serializing_if = "Option::is_none")]
1297 pub encrypted_content: Option<String>,
1298 #[serde(skip_serializing_if = "Option::is_none")]
1300 pub interaction_id: Option<String>,
1301 pub message_id: String,
1303 #[serde(skip_serializing_if = "Option::is_none")]
1305 pub model: Option<String>,
1306 #[serde(skip_serializing_if = "Option::is_none")]
1308 pub output_tokens: Option<i64>,
1309 #[doc(hidden)]
1311 #[deprecated]
1312 #[serde(skip_serializing_if = "Option::is_none")]
1313 pub parent_tool_call_id: Option<String>,
1314 #[serde(skip_serializing_if = "Option::is_none")]
1316 pub phase: Option<String>,
1317 #[serde(skip_serializing_if = "Option::is_none")]
1319 pub reasoning_opaque: Option<String>,
1320 #[serde(skip_serializing_if = "Option::is_none")]
1322 pub reasoning_text: Option<String>,
1323 #[serde(skip_serializing_if = "Option::is_none")]
1325 pub request_id: Option<RequestId>,
1326 #[serde(skip_serializing_if = "Option::is_none")]
1328 pub server_tools: Option<AssistantMessageServerTools>,
1329 #[serde(skip_serializing_if = "Option::is_none")]
1331 pub service_request_id: Option<String>,
1332 #[serde(skip_serializing_if = "Option::is_none")]
1334 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1335 #[serde(skip_serializing_if = "Option::is_none")]
1337 pub turn_id: Option<String>,
1338}
1339
1340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1342#[serde(rename_all = "camelCase")]
1343pub struct AssistantMessageStartData {
1344 pub message_id: String,
1346 #[serde(skip_serializing_if = "Option::is_none")]
1348 pub phase: Option<String>,
1349}
1350
1351#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1353#[serde(rename_all = "camelCase")]
1354pub struct AssistantMessageDeltaData {
1355 pub delta_content: String,
1357 pub message_id: String,
1359 #[doc(hidden)]
1361 #[deprecated]
1362 #[serde(skip_serializing_if = "Option::is_none")]
1363 pub parent_tool_call_id: Option<String>,
1364}
1365
1366#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1368#[serde(rename_all = "camelCase")]
1369pub struct AssistantTurnEndData {
1370 pub turn_id: String,
1372}
1373
1374#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1376#[serde(rename_all = "camelCase")]
1377pub struct AssistantUsageCopilotUsageTokenDetail {
1378 pub batch_size: i64,
1380 pub cost_per_batch: i64,
1382 pub token_count: i64,
1384 pub token_type: String,
1386}
1387
1388#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1390#[serde(rename_all = "camelCase")]
1391pub struct AssistantUsageCopilotUsage {
1392 #[doc(hidden)]
1394 #[serde(skip_serializing_if = "Option::is_none")]
1395 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1396 pub total_nano_aiu: f64,
1398}
1399
1400#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1402#[serde(rename_all = "camelCase")]
1403pub(crate) struct AssistantUsageQuotaSnapshot {
1404 #[doc(hidden)]
1406 pub(crate) entitlement_requests: i64,
1407 #[doc(hidden)]
1409 pub(crate) is_unlimited_entitlement: bool,
1410 #[doc(hidden)]
1412 pub(crate) overage: f64,
1413 #[doc(hidden)]
1415 pub(crate) overage_allowed_with_exhausted_quota: bool,
1416 #[doc(hidden)]
1418 pub(crate) remaining_percentage: f64,
1419 #[doc(hidden)]
1421 #[serde(skip_serializing_if = "Option::is_none")]
1422 pub(crate) reset_date: Option<String>,
1423 #[doc(hidden)]
1425 pub(crate) usage_allowed_with_exhausted_quota: bool,
1426 #[doc(hidden)]
1428 pub(crate) used_requests: i64,
1429}
1430
1431#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1433#[serde(rename_all = "camelCase")]
1434pub struct AssistantUsageData {
1435 #[serde(skip_serializing_if = "Option::is_none")]
1437 pub api_call_id: Option<String>,
1438 #[serde(skip_serializing_if = "Option::is_none")]
1440 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1441 #[serde(skip_serializing_if = "Option::is_none")]
1443 pub cache_read_tokens: Option<i64>,
1444 #[serde(skip_serializing_if = "Option::is_none")]
1446 pub cache_write_tokens: Option<i64>,
1447 #[serde(skip_serializing_if = "Option::is_none")]
1449 pub content_filter_triggered: Option<bool>,
1450 #[serde(skip_serializing_if = "Option::is_none")]
1452 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1453 #[serde(skip_serializing_if = "Option::is_none")]
1462 pub cost: Option<f64>,
1463 #[serde(skip_serializing_if = "Option::is_none")]
1465 pub duration: Option<i64>,
1466 #[serde(skip_serializing_if = "Option::is_none")]
1468 pub finish_reason: Option<String>,
1469 #[serde(skip_serializing_if = "Option::is_none")]
1471 pub initiator: Option<String>,
1472 #[serde(skip_serializing_if = "Option::is_none")]
1474 pub input_tokens: Option<i64>,
1475 #[serde(skip_serializing_if = "Option::is_none")]
1477 pub inter_token_latency_ms: Option<f64>,
1478 pub model: String,
1480 #[serde(skip_serializing_if = "Option::is_none")]
1482 pub output_tokens: Option<i64>,
1483 #[doc(hidden)]
1485 #[deprecated]
1486 #[serde(skip_serializing_if = "Option::is_none")]
1487 pub parent_tool_call_id: Option<String>,
1488 #[serde(skip_serializing_if = "Option::is_none")]
1490 pub provider_call_id: Option<String>,
1491 #[doc(hidden)]
1493 #[serde(skip_serializing_if = "Option::is_none")]
1494 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1495 #[serde(skip_serializing_if = "Option::is_none")]
1497 pub reasoning_effort: Option<String>,
1498 #[serde(skip_serializing_if = "Option::is_none")]
1500 pub reasoning_tokens: Option<i64>,
1501 #[serde(skip_serializing_if = "Option::is_none")]
1503 pub service_request_id: Option<String>,
1504 #[serde(skip_serializing_if = "Option::is_none")]
1506 pub time_to_first_token_ms: Option<i64>,
1507}
1508
1509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1511#[serde(rename_all = "camelCase")]
1512pub struct ModelCallFailureData {
1513 #[serde(skip_serializing_if = "Option::is_none")]
1515 pub api_call_id: Option<String>,
1516 #[serde(skip_serializing_if = "Option::is_none")]
1518 pub duration_ms: Option<i64>,
1519 #[serde(skip_serializing_if = "Option::is_none")]
1521 pub error_message: Option<String>,
1522 #[serde(skip_serializing_if = "Option::is_none")]
1524 pub initiator: Option<String>,
1525 #[serde(skip_serializing_if = "Option::is_none")]
1527 pub model: Option<String>,
1528 #[serde(skip_serializing_if = "Option::is_none")]
1530 pub provider_call_id: Option<String>,
1531 #[serde(skip_serializing_if = "Option::is_none")]
1533 pub service_request_id: Option<String>,
1534 pub source: ModelCallFailureSource,
1536 #[serde(skip_serializing_if = "Option::is_none")]
1538 pub status_code: Option<i32>,
1539}
1540
1541#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1543#[serde(rename_all = "camelCase")]
1544pub struct AbortData {
1545 pub reason: AbortReason,
1547}
1548
1549#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1551#[serde(rename_all = "camelCase")]
1552pub struct ToolUserRequestedData {
1553 #[serde(skip_serializing_if = "Option::is_none")]
1555 pub arguments: Option<serde_json::Value>,
1556 pub tool_call_id: String,
1558 pub tool_name: String,
1560}
1561
1562#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1564#[serde(rename_all = "camelCase")]
1565pub struct ToolExecutionStartToolDescriptionMetaUI {
1566 #[serde(skip_serializing_if = "Option::is_none")]
1568 pub resource_uri: Option<String>,
1569 #[serde(skip_serializing_if = "Option::is_none")]
1571 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
1572}
1573
1574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1576#[serde(rename_all = "camelCase")]
1577pub struct ToolExecutionStartToolDescriptionMeta {
1578 #[serde(skip_serializing_if = "Option::is_none")]
1580 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
1581}
1582
1583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1585#[serde(rename_all = "camelCase")]
1586pub struct ToolExecutionStartToolDescription {
1587 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1589 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
1590 #[serde(skip_serializing_if = "Option::is_none")]
1592 pub description: Option<String>,
1593 pub name: String,
1595}
1596
1597#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1599#[serde(rename_all = "camelCase")]
1600pub struct ToolExecutionStartData {
1601 #[serde(skip_serializing_if = "Option::is_none")]
1603 pub arguments: Option<serde_json::Value>,
1604 #[serde(skip_serializing_if = "Option::is_none")]
1606 pub display_verbatim: Option<bool>,
1607 #[serde(skip_serializing_if = "Option::is_none")]
1609 pub mcp_server_name: Option<String>,
1610 #[serde(skip_serializing_if = "Option::is_none")]
1612 pub mcp_tool_name: Option<String>,
1613 #[serde(skip_serializing_if = "Option::is_none")]
1615 pub model: Option<String>,
1616 #[doc(hidden)]
1618 #[deprecated]
1619 #[serde(skip_serializing_if = "Option::is_none")]
1620 pub parent_tool_call_id: Option<String>,
1621 pub tool_call_id: String,
1623 #[serde(skip_serializing_if = "Option::is_none")]
1625 pub tool_description: Option<ToolExecutionStartToolDescription>,
1626 pub tool_name: String,
1628 #[serde(skip_serializing_if = "Option::is_none")]
1630 pub turn_id: Option<String>,
1631}
1632
1633#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1635#[serde(rename_all = "camelCase")]
1636pub struct ToolExecutionPartialResultData {
1637 pub partial_output: String,
1639 pub tool_call_id: String,
1641}
1642
1643#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1645#[serde(rename_all = "camelCase")]
1646pub struct ToolExecutionProgressData {
1647 pub progress_message: String,
1649 pub tool_call_id: String,
1651}
1652
1653#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1655#[serde(rename_all = "camelCase")]
1656pub struct ToolExecutionCompleteError {
1657 #[serde(skip_serializing_if = "Option::is_none")]
1659 pub code: Option<String>,
1660 pub message: String,
1662}
1663
1664#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1666#[serde(rename_all = "camelCase")]
1667pub struct ToolExecutionCompleteContentText {
1668 pub text: String,
1670 pub r#type: ToolExecutionCompleteContentTextType,
1672}
1673
1674#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1676#[serde(rename_all = "camelCase")]
1677pub struct ToolExecutionCompleteContentTerminal {
1678 #[serde(skip_serializing_if = "Option::is_none")]
1680 pub cwd: Option<String>,
1681 #[serde(skip_serializing_if = "Option::is_none")]
1683 pub exit_code: Option<i64>,
1684 pub text: String,
1686 pub r#type: ToolExecutionCompleteContentTerminalType,
1688}
1689
1690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1692#[serde(rename_all = "camelCase")]
1693pub struct ToolExecutionCompleteContentImage {
1694 pub data: String,
1696 pub mime_type: String,
1698 pub r#type: ToolExecutionCompleteContentImageType,
1700}
1701
1702#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1704#[serde(rename_all = "camelCase")]
1705pub struct ToolExecutionCompleteContentAudio {
1706 pub data: String,
1708 pub mime_type: String,
1710 pub r#type: ToolExecutionCompleteContentAudioType,
1712}
1713
1714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1716#[serde(rename_all = "camelCase")]
1717pub struct ToolExecutionCompleteContentResourceLinkIcon {
1718 #[serde(skip_serializing_if = "Option::is_none")]
1720 pub mime_type: Option<String>,
1721 #[serde(skip_serializing_if = "Option::is_none")]
1723 pub sizes: Option<Vec<String>>,
1724 pub src: String,
1726 #[serde(skip_serializing_if = "Option::is_none")]
1728 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
1729}
1730
1731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1733#[serde(rename_all = "camelCase")]
1734pub struct ToolExecutionCompleteContentResourceLink {
1735 #[serde(skip_serializing_if = "Option::is_none")]
1737 pub description: Option<String>,
1738 #[serde(skip_serializing_if = "Option::is_none")]
1740 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
1741 #[serde(skip_serializing_if = "Option::is_none")]
1743 pub mime_type: Option<String>,
1744 pub name: String,
1746 #[serde(skip_serializing_if = "Option::is_none")]
1748 pub size: Option<i64>,
1749 #[serde(skip_serializing_if = "Option::is_none")]
1751 pub title: Option<String>,
1752 pub r#type: ToolExecutionCompleteContentResourceLinkType,
1754 pub uri: String,
1756}
1757
1758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1760#[serde(rename_all = "camelCase")]
1761pub struct EmbeddedTextResourceContents {
1762 #[serde(skip_serializing_if = "Option::is_none")]
1764 pub mime_type: Option<String>,
1765 pub text: String,
1767 pub uri: String,
1769}
1770
1771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1773#[serde(rename_all = "camelCase")]
1774pub struct EmbeddedBlobResourceContents {
1775 pub blob: String,
1777 #[serde(skip_serializing_if = "Option::is_none")]
1779 pub mime_type: Option<String>,
1780 pub uri: String,
1782}
1783
1784#[derive(Debug, Clone, Serialize, Deserialize)]
1786#[serde(rename_all = "camelCase")]
1787pub struct ToolExecutionCompleteContentResource {
1788 pub resource: ToolExecutionCompleteContentResourceDetails,
1790 pub r#type: ToolExecutionCompleteContentResourceType,
1792}
1793
1794#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1796#[serde(rename_all = "camelCase")]
1797pub struct ToolExecutionCompleteUIResourceMetaUICsp {
1798 #[serde(skip_serializing_if = "Option::is_none")]
1799 pub base_uri_domains: Option<Vec<String>>,
1800 #[serde(skip_serializing_if = "Option::is_none")]
1801 pub connect_domains: Option<Vec<String>>,
1802 #[serde(skip_serializing_if = "Option::is_none")]
1803 pub frame_domains: Option<Vec<String>>,
1804 #[serde(skip_serializing_if = "Option::is_none")]
1805 pub resource_domains: Option<Vec<String>>,
1806}
1807
1808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1810#[serde(rename_all = "camelCase")]
1811pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
1812
1813#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1815#[serde(rename_all = "camelCase")]
1816pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
1817
1818#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1820#[serde(rename_all = "camelCase")]
1821pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
1822
1823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1825#[serde(rename_all = "camelCase")]
1826pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
1827
1828#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1830#[serde(rename_all = "camelCase")]
1831pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
1832 #[serde(skip_serializing_if = "Option::is_none")]
1834 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
1835 #[serde(skip_serializing_if = "Option::is_none")]
1837 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
1838 #[serde(skip_serializing_if = "Option::is_none")]
1840 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
1841 #[serde(skip_serializing_if = "Option::is_none")]
1843 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
1844}
1845
1846#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1848#[serde(rename_all = "camelCase")]
1849pub struct ToolExecutionCompleteUIResourceMetaUI {
1850 #[serde(skip_serializing_if = "Option::is_none")]
1852 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
1853 #[serde(skip_serializing_if = "Option::is_none")]
1854 pub domain: Option<String>,
1855 #[serde(skip_serializing_if = "Option::is_none")]
1857 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
1858 #[serde(skip_serializing_if = "Option::is_none")]
1859 pub prefers_border: Option<bool>,
1860}
1861
1862#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1864#[serde(rename_all = "camelCase")]
1865pub struct ToolExecutionCompleteUIResourceMeta {
1866 #[serde(skip_serializing_if = "Option::is_none")]
1868 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
1869}
1870
1871#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1873#[serde(rename_all = "camelCase")]
1874pub struct ToolExecutionCompleteUIResource {
1875 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1877 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
1878 #[serde(skip_serializing_if = "Option::is_none")]
1880 pub blob: Option<String>,
1881 pub mime_type: String,
1883 #[serde(skip_serializing_if = "Option::is_none")]
1885 pub text: Option<String>,
1886 pub uri: String,
1888}
1889
1890#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1892#[serde(rename_all = "camelCase")]
1893pub struct ToolExecutionCompleteResult {
1894 #[serde(skip_serializing_if = "Option::is_none")]
1903 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
1904 pub content: String,
1906 #[serde(skip_serializing_if = "Option::is_none")]
1908 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
1909 #[serde(skip_serializing_if = "Option::is_none")]
1911 pub detailed_content: Option<String>,
1912 #[serde(skip_serializing_if = "Option::is_none")]
1914 pub structured_content: Option<serde_json::Value>,
1915 #[serde(skip_serializing_if = "Option::is_none")]
1917 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
1918}
1919
1920#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1922#[serde(rename_all = "camelCase")]
1923pub struct ToolExecutionCompleteToolDescriptionMetaUI {
1924 #[serde(skip_serializing_if = "Option::is_none")]
1926 pub resource_uri: Option<String>,
1927 #[serde(skip_serializing_if = "Option::is_none")]
1929 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
1930}
1931
1932#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1934#[serde(rename_all = "camelCase")]
1935pub struct ToolExecutionCompleteToolDescriptionMeta {
1936 #[serde(skip_serializing_if = "Option::is_none")]
1938 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
1939}
1940
1941#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1943#[serde(rename_all = "camelCase")]
1944pub struct ToolExecutionCompleteToolDescription {
1945 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1947 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
1948 #[serde(skip_serializing_if = "Option::is_none")]
1950 pub description: Option<String>,
1951 pub name: String,
1953}
1954
1955#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1957#[serde(rename_all = "camelCase")]
1958pub struct ToolExecutionCompleteData {
1959 #[serde(skip_serializing_if = "Option::is_none")]
1961 pub error: Option<ToolExecutionCompleteError>,
1962 #[serde(skip_serializing_if = "Option::is_none")]
1964 pub interaction_id: Option<String>,
1965 #[serde(skip_serializing_if = "Option::is_none")]
1967 pub is_user_requested: Option<bool>,
1968 #[serde(skip_serializing_if = "Option::is_none")]
1970 pub model: Option<String>,
1971 #[doc(hidden)]
1973 #[deprecated]
1974 #[serde(skip_serializing_if = "Option::is_none")]
1975 pub parent_tool_call_id: Option<String>,
1976 #[serde(skip_serializing_if = "Option::is_none")]
1978 pub result: Option<ToolExecutionCompleteResult>,
1979 #[serde(skip_serializing_if = "Option::is_none")]
1981 pub sandboxed: Option<bool>,
1982 pub success: bool,
1984 pub tool_call_id: String,
1986 #[serde(skip_serializing_if = "Option::is_none")]
1988 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
1989 #[serde(skip_serializing_if = "Option::is_none")]
1991 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
1992 #[serde(skip_serializing_if = "Option::is_none")]
1994 pub turn_id: Option<String>,
1995}
1996
1997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1999#[serde(rename_all = "camelCase")]
2000pub struct SkillInvokedData {
2001 #[serde(skip_serializing_if = "Option::is_none")]
2003 pub allowed_tools: Option<Vec<String>>,
2004 pub content: String,
2006 #[serde(skip_serializing_if = "Option::is_none")]
2008 pub description: Option<String>,
2009 pub name: String,
2011 pub path: String,
2013 #[serde(skip_serializing_if = "Option::is_none")]
2015 pub plugin_name: Option<String>,
2016 #[serde(skip_serializing_if = "Option::is_none")]
2018 pub plugin_version: Option<String>,
2019 #[serde(skip_serializing_if = "Option::is_none")]
2021 pub source: Option<String>,
2022 #[serde(skip_serializing_if = "Option::is_none")]
2024 pub trigger: Option<SkillInvokedTrigger>,
2025}
2026
2027#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2029#[serde(rename_all = "camelCase")]
2030pub struct SubagentStartedData {
2031 pub agent_description: String,
2033 pub agent_display_name: String,
2035 pub agent_name: String,
2037 #[serde(skip_serializing_if = "Option::is_none")]
2039 pub model: Option<String>,
2040 pub tool_call_id: String,
2042}
2043
2044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2046#[serde(rename_all = "camelCase")]
2047pub struct SubagentCompletedData {
2048 pub agent_display_name: String,
2050 pub agent_name: String,
2052 #[serde(skip_serializing_if = "Option::is_none")]
2054 pub duration_ms: Option<i64>,
2055 #[serde(skip_serializing_if = "Option::is_none")]
2057 pub model: Option<String>,
2058 pub tool_call_id: String,
2060 #[serde(skip_serializing_if = "Option::is_none")]
2062 pub total_tokens: Option<i64>,
2063 #[serde(skip_serializing_if = "Option::is_none")]
2065 pub total_tool_calls: Option<i64>,
2066}
2067
2068#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2070#[serde(rename_all = "camelCase")]
2071pub struct SubagentFailedData {
2072 pub agent_display_name: String,
2074 pub agent_name: String,
2076 #[serde(skip_serializing_if = "Option::is_none")]
2078 pub duration_ms: Option<i64>,
2079 pub error: String,
2081 #[serde(skip_serializing_if = "Option::is_none")]
2083 pub model: Option<String>,
2084 pub tool_call_id: String,
2086 #[serde(skip_serializing_if = "Option::is_none")]
2088 pub total_tokens: Option<i64>,
2089 #[serde(skip_serializing_if = "Option::is_none")]
2091 pub total_tool_calls: Option<i64>,
2092}
2093
2094#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2096#[serde(rename_all = "camelCase")]
2097pub struct SubagentSelectedData {
2098 pub agent_display_name: String,
2100 pub agent_name: String,
2102 pub tools: Option<Vec<String>>,
2104}
2105
2106#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2108#[serde(rename_all = "camelCase")]
2109pub struct SubagentDeselectedData {}
2110
2111#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2113#[serde(rename_all = "camelCase")]
2114pub struct HookStartData {
2115 pub hook_invocation_id: String,
2117 pub hook_type: String,
2119 #[serde(skip_serializing_if = "Option::is_none")]
2121 pub input: Option<serde_json::Value>,
2122}
2123
2124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2126#[serde(rename_all = "camelCase")]
2127pub struct HookEndError {
2128 pub message: String,
2130 #[serde(skip_serializing_if = "Option::is_none")]
2132 pub source: Option<String>,
2133 #[serde(skip_serializing_if = "Option::is_none")]
2135 pub stack: Option<String>,
2136}
2137
2138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2140#[serde(rename_all = "camelCase")]
2141pub struct HookEndData {
2142 #[serde(skip_serializing_if = "Option::is_none")]
2144 pub error: Option<HookEndError>,
2145 pub hook_invocation_id: String,
2147 pub hook_type: String,
2149 #[serde(skip_serializing_if = "Option::is_none")]
2151 pub output: Option<serde_json::Value>,
2152 pub success: bool,
2154}
2155
2156#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2158#[serde(rename_all = "camelCase")]
2159pub struct HookProgressData {
2160 pub message: String,
2162 #[serde(skip_serializing_if = "Option::is_none")]
2164 pub temporary: Option<bool>,
2165}
2166
2167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2169#[serde(rename_all = "camelCase")]
2170pub struct SessionBinaryAssetData {
2171 pub asset_id: String,
2173 pub byte_length: i64,
2175 pub data: String,
2177 #[serde(skip_serializing_if = "Option::is_none")]
2179 pub description: Option<String>,
2180 #[serde(skip_serializing_if = "Option::is_none")]
2182 pub metadata: Option<HashMap<String, serde_json::Value>>,
2183 pub mime_type: String,
2185 pub r#type: BinaryAssetType,
2187}
2188
2189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2191#[serde(rename_all = "camelCase")]
2192pub struct SystemMessageMetadata {
2193 #[serde(skip_serializing_if = "Option::is_none")]
2195 pub prompt_version: Option<String>,
2196 #[serde(skip_serializing_if = "Option::is_none")]
2198 pub variables: Option<HashMap<String, serde_json::Value>>,
2199}
2200
2201#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2203#[serde(rename_all = "camelCase")]
2204pub struct SystemMessageData {
2205 pub content: String,
2207 #[serde(skip_serializing_if = "Option::is_none")]
2209 pub metadata: Option<SystemMessageMetadata>,
2210 #[serde(skip_serializing_if = "Option::is_none")]
2212 pub name: Option<String>,
2213 pub role: SystemMessageRole,
2215}
2216
2217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2219#[serde(rename_all = "camelCase")]
2220pub struct SystemNotificationData {
2221 pub content: String,
2223 pub kind: serde_json::Value,
2225}
2226
2227#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2229#[serde(rename_all = "camelCase")]
2230pub struct PermissionRequestShellCommand {
2231 pub identifier: String,
2233 pub read_only: bool,
2235}
2236
2237#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2239#[serde(rename_all = "camelCase")]
2240pub struct PermissionRequestShellPossibleUrl {
2241 pub url: String,
2243}
2244
2245#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2247#[serde(rename_all = "camelCase")]
2248pub struct PermissionRequestShell {
2249 pub can_offer_session_approval: bool,
2251 pub commands: Vec<PermissionRequestShellCommand>,
2253 pub full_command_text: String,
2255 pub has_write_file_redirection: bool,
2257 pub intention: String,
2259 pub kind: PermissionRequestShellKind,
2261 pub possible_paths: Vec<String>,
2263 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2265 #[serde(skip_serializing_if = "Option::is_none")]
2267 pub tool_call_id: Option<String>,
2268 #[serde(skip_serializing_if = "Option::is_none")]
2270 pub warning: Option<String>,
2271}
2272
2273#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2275#[serde(rename_all = "camelCase")]
2276pub struct PermissionRequestWrite {
2277 pub can_offer_session_approval: bool,
2279 pub diff: String,
2281 pub file_name: String,
2283 pub intention: String,
2285 pub kind: PermissionRequestWriteKind,
2287 #[serde(skip_serializing_if = "Option::is_none")]
2289 pub new_file_contents: Option<String>,
2290 #[serde(skip_serializing_if = "Option::is_none")]
2292 pub tool_call_id: Option<String>,
2293}
2294
2295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2297#[serde(rename_all = "camelCase")]
2298pub struct PermissionRequestRead {
2299 pub intention: String,
2301 pub kind: PermissionRequestReadKind,
2303 pub path: String,
2305 #[serde(skip_serializing_if = "Option::is_none")]
2307 pub tool_call_id: Option<String>,
2308}
2309
2310#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2312#[serde(rename_all = "camelCase")]
2313pub struct PermissionRequestMcp {
2314 #[serde(skip_serializing_if = "Option::is_none")]
2316 pub args: Option<serde_json::Value>,
2317 pub kind: PermissionRequestMcpKind,
2319 pub read_only: bool,
2321 pub server_name: String,
2323 #[serde(skip_serializing_if = "Option::is_none")]
2325 pub tool_call_id: Option<String>,
2326 pub tool_name: String,
2328 pub tool_title: String,
2330}
2331
2332#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2334#[serde(rename_all = "camelCase")]
2335pub struct PermissionRequestUrl {
2336 pub intention: String,
2338 pub kind: PermissionRequestUrlKind,
2340 #[serde(skip_serializing_if = "Option::is_none")]
2342 pub tool_call_id: Option<String>,
2343 pub url: String,
2345}
2346
2347#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2349#[serde(rename_all = "camelCase")]
2350pub struct PermissionRequestMemory {
2351 #[serde(skip_serializing_if = "Option::is_none")]
2353 pub action: Option<PermissionRequestMemoryAction>,
2354 #[serde(skip_serializing_if = "Option::is_none")]
2356 pub citations: Option<String>,
2357 #[serde(skip_serializing_if = "Option::is_none")]
2359 pub direction: Option<PermissionRequestMemoryDirection>,
2360 pub fact: String,
2362 pub kind: PermissionRequestMemoryKind,
2364 #[serde(skip_serializing_if = "Option::is_none")]
2366 pub reason: Option<String>,
2367 #[serde(skip_serializing_if = "Option::is_none")]
2369 pub subject: Option<String>,
2370 #[serde(skip_serializing_if = "Option::is_none")]
2372 pub tool_call_id: Option<String>,
2373}
2374
2375#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2377#[serde(rename_all = "camelCase")]
2378pub struct PermissionRequestCustomTool {
2379 #[serde(skip_serializing_if = "Option::is_none")]
2381 pub args: Option<serde_json::Value>,
2382 pub kind: PermissionRequestCustomToolKind,
2384 #[serde(skip_serializing_if = "Option::is_none")]
2386 pub tool_call_id: Option<String>,
2387 pub tool_description: String,
2389 pub tool_name: String,
2391}
2392
2393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2395#[serde(rename_all = "camelCase")]
2396pub struct PermissionRequestHook {
2397 #[serde(skip_serializing_if = "Option::is_none")]
2399 pub hook_message: Option<String>,
2400 pub kind: PermissionRequestHookKind,
2402 #[serde(skip_serializing_if = "Option::is_none")]
2404 pub tool_args: Option<serde_json::Value>,
2405 #[serde(skip_serializing_if = "Option::is_none")]
2407 pub tool_call_id: Option<String>,
2408 pub tool_name: String,
2410}
2411
2412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2414#[serde(rename_all = "camelCase")]
2415pub struct PermissionRequestExtensionManagement {
2416 #[serde(skip_serializing_if = "Option::is_none")]
2418 pub extension_name: Option<String>,
2419 pub kind: PermissionRequestExtensionManagementKind,
2421 pub operation: String,
2423 #[serde(skip_serializing_if = "Option::is_none")]
2425 pub tool_call_id: Option<String>,
2426}
2427
2428#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2430#[serde(rename_all = "camelCase")]
2431pub struct PermissionRequestExtensionPermissionAccess {
2432 pub capabilities: Vec<String>,
2434 pub extension_name: String,
2436 pub kind: PermissionRequestExtensionPermissionAccessKind,
2438 #[serde(skip_serializing_if = "Option::is_none")]
2440 pub tool_call_id: Option<String>,
2441}
2442
2443#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2445#[serde(rename_all = "camelCase")]
2446pub struct PermissionPromptRequestCommands {
2447 pub can_offer_session_approval: bool,
2449 pub command_identifiers: Vec<String>,
2451 pub full_command_text: String,
2453 pub intention: String,
2455 pub kind: PermissionPromptRequestCommandsKind,
2457 #[serde(skip_serializing_if = "Option::is_none")]
2459 pub tool_call_id: Option<String>,
2460 #[serde(skip_serializing_if = "Option::is_none")]
2462 pub warning: Option<String>,
2463}
2464
2465#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2467#[serde(rename_all = "camelCase")]
2468pub struct PermissionPromptRequestWrite {
2469 pub can_offer_session_approval: bool,
2471 pub diff: String,
2473 pub file_name: String,
2475 pub intention: String,
2477 pub kind: PermissionPromptRequestWriteKind,
2479 #[serde(skip_serializing_if = "Option::is_none")]
2481 pub new_file_contents: Option<String>,
2482 #[serde(skip_serializing_if = "Option::is_none")]
2484 pub tool_call_id: Option<String>,
2485}
2486
2487#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2489#[serde(rename_all = "camelCase")]
2490pub struct PermissionPromptRequestRead {
2491 pub intention: String,
2493 pub kind: PermissionPromptRequestReadKind,
2495 pub path: String,
2497 #[serde(skip_serializing_if = "Option::is_none")]
2499 pub tool_call_id: Option<String>,
2500}
2501
2502#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2504#[serde(rename_all = "camelCase")]
2505pub struct PermissionPromptRequestMcp {
2506 #[serde(skip_serializing_if = "Option::is_none")]
2508 pub args: Option<serde_json::Value>,
2509 pub kind: PermissionPromptRequestMcpKind,
2511 pub server_name: String,
2513 #[serde(skip_serializing_if = "Option::is_none")]
2515 pub tool_call_id: Option<String>,
2516 pub tool_name: String,
2518 pub tool_title: String,
2520}
2521
2522#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2524#[serde(rename_all = "camelCase")]
2525pub struct PermissionPromptRequestUrl {
2526 pub intention: String,
2528 pub kind: PermissionPromptRequestUrlKind,
2530 #[serde(skip_serializing_if = "Option::is_none")]
2532 pub tool_call_id: Option<String>,
2533 pub url: String,
2535}
2536
2537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2539#[serde(rename_all = "camelCase")]
2540pub struct PermissionPromptRequestMemory {
2541 #[serde(skip_serializing_if = "Option::is_none")]
2543 pub action: Option<PermissionRequestMemoryAction>,
2544 #[serde(skip_serializing_if = "Option::is_none")]
2546 pub citations: Option<String>,
2547 #[serde(skip_serializing_if = "Option::is_none")]
2549 pub direction: Option<PermissionRequestMemoryDirection>,
2550 pub fact: String,
2552 pub kind: PermissionPromptRequestMemoryKind,
2554 #[serde(skip_serializing_if = "Option::is_none")]
2556 pub reason: Option<String>,
2557 #[serde(skip_serializing_if = "Option::is_none")]
2559 pub subject: Option<String>,
2560 #[serde(skip_serializing_if = "Option::is_none")]
2562 pub tool_call_id: Option<String>,
2563}
2564
2565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2567#[serde(rename_all = "camelCase")]
2568pub struct PermissionPromptRequestCustomTool {
2569 #[serde(skip_serializing_if = "Option::is_none")]
2571 pub args: Option<serde_json::Value>,
2572 pub kind: PermissionPromptRequestCustomToolKind,
2574 #[serde(skip_serializing_if = "Option::is_none")]
2576 pub tool_call_id: Option<String>,
2577 pub tool_description: String,
2579 pub tool_name: String,
2581}
2582
2583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2585#[serde(rename_all = "camelCase")]
2586pub struct PermissionPromptRequestPath {
2587 pub access_kind: PermissionPromptRequestPathAccessKind,
2589 pub kind: PermissionPromptRequestPathKind,
2591 pub paths: Vec<String>,
2593 #[serde(skip_serializing_if = "Option::is_none")]
2595 pub tool_call_id: Option<String>,
2596}
2597
2598#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2600#[serde(rename_all = "camelCase")]
2601pub struct PermissionPromptRequestHook {
2602 #[serde(skip_serializing_if = "Option::is_none")]
2604 pub hook_message: Option<String>,
2605 pub kind: PermissionPromptRequestHookKind,
2607 #[serde(skip_serializing_if = "Option::is_none")]
2609 pub tool_args: Option<serde_json::Value>,
2610 #[serde(skip_serializing_if = "Option::is_none")]
2612 pub tool_call_id: Option<String>,
2613 pub tool_name: String,
2615}
2616
2617#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2619#[serde(rename_all = "camelCase")]
2620pub struct PermissionPromptRequestExtensionManagement {
2621 #[serde(skip_serializing_if = "Option::is_none")]
2623 pub extension_name: Option<String>,
2624 pub kind: PermissionPromptRequestExtensionManagementKind,
2626 pub operation: String,
2628 #[serde(skip_serializing_if = "Option::is_none")]
2630 pub tool_call_id: Option<String>,
2631}
2632
2633#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2635#[serde(rename_all = "camelCase")]
2636pub struct PermissionPromptRequestExtensionPermissionAccess {
2637 pub capabilities: Vec<String>,
2639 pub extension_name: String,
2641 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
2643 #[serde(skip_serializing_if = "Option::is_none")]
2645 pub tool_call_id: Option<String>,
2646}
2647
2648#[derive(Debug, Clone, Serialize, Deserialize)]
2650#[serde(rename_all = "camelCase")]
2651pub struct PermissionRequestedData {
2652 pub permission_request: PermissionRequest,
2654 #[serde(skip_serializing_if = "Option::is_none")]
2656 pub prompt_request: Option<PermissionPromptRequest>,
2657 pub request_id: RequestId,
2659 #[serde(skip_serializing_if = "Option::is_none")]
2661 pub resolved_by_hook: Option<bool>,
2662}
2663
2664#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2666#[serde(rename_all = "camelCase")]
2667pub struct PermissionApproved {
2668 pub kind: PermissionApprovedKind,
2670}
2671
2672#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2674#[serde(rename_all = "camelCase")]
2675pub struct UserToolSessionApprovalCommands {
2676 pub command_identifiers: Vec<String>,
2678 pub kind: UserToolSessionApprovalCommandsKind,
2680}
2681
2682#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2684#[serde(rename_all = "camelCase")]
2685pub struct UserToolSessionApprovalRead {
2686 pub kind: UserToolSessionApprovalReadKind,
2688}
2689
2690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2692#[serde(rename_all = "camelCase")]
2693pub struct UserToolSessionApprovalWrite {
2694 pub kind: UserToolSessionApprovalWriteKind,
2696}
2697
2698#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2700#[serde(rename_all = "camelCase")]
2701pub struct UserToolSessionApprovalMcp {
2702 pub kind: UserToolSessionApprovalMcpKind,
2704 pub server_name: String,
2706 pub tool_name: Option<String>,
2708}
2709
2710#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2712#[serde(rename_all = "camelCase")]
2713pub struct UserToolSessionApprovalMemory {
2714 pub kind: UserToolSessionApprovalMemoryKind,
2716}
2717
2718#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2720#[serde(rename_all = "camelCase")]
2721pub struct UserToolSessionApprovalCustomTool {
2722 pub kind: UserToolSessionApprovalCustomToolKind,
2724 pub tool_name: String,
2726}
2727
2728#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2730#[serde(rename_all = "camelCase")]
2731pub struct UserToolSessionApprovalExtensionManagement {
2732 pub kind: UserToolSessionApprovalExtensionManagementKind,
2734 #[serde(skip_serializing_if = "Option::is_none")]
2736 pub operation: Option<String>,
2737}
2738
2739#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2741#[serde(rename_all = "camelCase")]
2742pub struct UserToolSessionApprovalExtensionPermissionAccess {
2743 pub extension_name: String,
2745 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
2747}
2748
2749#[derive(Debug, Clone, Serialize, Deserialize)]
2751#[serde(rename_all = "camelCase")]
2752pub struct PermissionApprovedForSession {
2753 pub approval: UserToolSessionApproval,
2755 pub kind: PermissionApprovedForSessionKind,
2757}
2758
2759#[derive(Debug, Clone, Serialize, Deserialize)]
2761#[serde(rename_all = "camelCase")]
2762pub struct PermissionApprovedForLocation {
2763 pub approval: UserToolSessionApproval,
2765 pub kind: PermissionApprovedForLocationKind,
2767 pub location_key: String,
2769}
2770
2771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2773#[serde(rename_all = "camelCase")]
2774pub struct PermissionCancelled {
2775 pub kind: PermissionCancelledKind,
2777 #[serde(skip_serializing_if = "Option::is_none")]
2779 pub reason: Option<String>,
2780}
2781
2782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2784#[serde(rename_all = "camelCase")]
2785pub struct PermissionRule {
2786 pub argument: Option<String>,
2788 pub kind: String,
2790}
2791
2792#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2794#[serde(rename_all = "camelCase")]
2795pub struct PermissionDeniedByRules {
2796 pub kind: PermissionDeniedByRulesKind,
2798 pub rules: Vec<PermissionRule>,
2800}
2801
2802#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2804#[serde(rename_all = "camelCase")]
2805pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
2806 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
2808}
2809
2810#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2812#[serde(rename_all = "camelCase")]
2813pub struct PermissionDeniedInteractivelyByUser {
2814 #[serde(skip_serializing_if = "Option::is_none")]
2816 pub feedback: Option<String>,
2817 #[serde(skip_serializing_if = "Option::is_none")]
2819 pub force_reject: Option<bool>,
2820 pub kind: PermissionDeniedInteractivelyByUserKind,
2822}
2823
2824#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2826#[serde(rename_all = "camelCase")]
2827pub struct PermissionDeniedByContentExclusionPolicy {
2828 pub kind: PermissionDeniedByContentExclusionPolicyKind,
2830 pub message: String,
2832 pub path: String,
2834}
2835
2836#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2838#[serde(rename_all = "camelCase")]
2839pub struct PermissionDeniedByPermissionRequestHook {
2840 #[serde(skip_serializing_if = "Option::is_none")]
2842 pub interrupt: Option<bool>,
2843 pub kind: PermissionDeniedByPermissionRequestHookKind,
2845 #[serde(skip_serializing_if = "Option::is_none")]
2847 pub message: Option<String>,
2848}
2849
2850#[derive(Debug, Clone, Serialize, Deserialize)]
2852#[serde(rename_all = "camelCase")]
2853pub struct PermissionCompletedData {
2854 pub request_id: RequestId,
2856 pub result: PermissionResult,
2858 #[serde(skip_serializing_if = "Option::is_none")]
2860 pub tool_call_id: Option<String>,
2861}
2862
2863#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2865#[serde(rename_all = "camelCase")]
2866pub struct UserInputRequestedData {
2867 #[serde(skip_serializing_if = "Option::is_none")]
2869 pub allow_freeform: Option<bool>,
2870 #[serde(skip_serializing_if = "Option::is_none")]
2872 pub choices: Option<Vec<String>>,
2873 pub question: String,
2875 pub request_id: RequestId,
2877 #[serde(skip_serializing_if = "Option::is_none")]
2879 pub tool_call_id: Option<String>,
2880}
2881
2882#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2884#[serde(rename_all = "camelCase")]
2885pub struct UserInputCompletedData {
2886 #[serde(skip_serializing_if = "Option::is_none")]
2888 pub answer: Option<String>,
2889 pub request_id: RequestId,
2891 #[serde(skip_serializing_if = "Option::is_none")]
2893 pub was_freeform: Option<bool>,
2894}
2895
2896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2898#[serde(rename_all = "camelCase")]
2899pub struct ElicitationRequestedSchema {
2900 pub properties: HashMap<String, serde_json::Value>,
2902 #[serde(skip_serializing_if = "Option::is_none")]
2904 pub required: Option<Vec<String>>,
2905 pub r#type: ElicitationRequestedSchemaType,
2907}
2908
2909#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2911#[serde(rename_all = "camelCase")]
2912pub struct ElicitationRequestedData {
2913 #[serde(skip_serializing_if = "Option::is_none")]
2915 pub elicitation_source: Option<String>,
2916 pub message: String,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2920 pub mode: Option<ElicitationRequestedMode>,
2921 #[serde(skip_serializing_if = "Option::is_none")]
2923 pub requested_schema: Option<ElicitationRequestedSchema>,
2924 pub request_id: RequestId,
2926 #[serde(skip_serializing_if = "Option::is_none")]
2928 pub tool_call_id: Option<String>,
2929 #[serde(skip_serializing_if = "Option::is_none")]
2931 pub url: Option<String>,
2932}
2933
2934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2936#[serde(rename_all = "camelCase")]
2937pub struct ElicitationCompletedData {
2938 #[serde(skip_serializing_if = "Option::is_none")]
2940 pub action: Option<ElicitationCompletedAction>,
2941 #[serde(skip_serializing_if = "Option::is_none")]
2943 pub content: Option<HashMap<String, serde_json::Value>>,
2944 pub request_id: RequestId,
2946}
2947
2948#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2950#[serde(rename_all = "camelCase")]
2951pub struct SamplingRequestedData {
2952 pub mcp_request_id: serde_json::Value,
2954 pub request_id: RequestId,
2956 pub server_name: String,
2958}
2959
2960#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2962#[serde(rename_all = "camelCase")]
2963pub struct SamplingCompletedData {
2964 pub request_id: RequestId,
2966}
2967
2968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2970#[serde(rename_all = "camelCase")]
2971pub struct McpOauthRequiredStaticClientConfig {
2972 pub client_id: String,
2974 #[serde(skip_serializing_if = "Option::is_none")]
2976 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
2977 #[serde(skip_serializing_if = "Option::is_none")]
2979 pub public_client: Option<bool>,
2980}
2981
2982#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2984#[serde(rename_all = "camelCase")]
2985pub struct McpOauthRequiredData {
2986 pub request_id: RequestId,
2988 pub server_name: String,
2990 pub server_url: String,
2992 #[serde(skip_serializing_if = "Option::is_none")]
2994 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
2995}
2996
2997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2999#[serde(rename_all = "camelCase")]
3000pub struct McpOauthCompletedData {
3001 pub request_id: RequestId,
3003}
3004
3005#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3007#[serde(rename_all = "camelCase")]
3008pub struct SessionCustomNotificationData {
3009 pub name: String,
3011 pub payload: serde_json::Value,
3013 pub source: String,
3015 #[serde(skip_serializing_if = "Option::is_none")]
3017 pub subject: Option<HashMap<String, String>>,
3018 #[serde(skip_serializing_if = "Option::is_none")]
3020 pub version: Option<i64>,
3021}
3022
3023#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3025#[serde(rename_all = "camelCase")]
3026pub struct ExternalToolRequestedData {
3027 #[serde(skip_serializing_if = "Option::is_none")]
3029 pub arguments: Option<serde_json::Value>,
3030 pub request_id: RequestId,
3032 pub session_id: SessionId,
3034 pub tool_call_id: String,
3036 pub tool_name: String,
3038 #[serde(skip_serializing_if = "Option::is_none")]
3040 pub traceparent: Option<String>,
3041 #[serde(skip_serializing_if = "Option::is_none")]
3043 pub tracestate: Option<String>,
3044 #[serde(skip_serializing_if = "Option::is_none")]
3046 pub working_directory: Option<String>,
3047}
3048
3049#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3051#[serde(rename_all = "camelCase")]
3052pub struct ExternalToolCompletedData {
3053 pub request_id: RequestId,
3055}
3056
3057#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3059#[serde(rename_all = "camelCase")]
3060pub struct CommandQueuedData {
3061 pub command: String,
3063 pub request_id: RequestId,
3065}
3066
3067#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3069#[serde(rename_all = "camelCase")]
3070pub struct CommandExecuteData {
3071 pub args: String,
3073 pub command: String,
3075 pub command_name: String,
3077 pub request_id: RequestId,
3079}
3080
3081#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3083#[serde(rename_all = "camelCase")]
3084pub struct CommandCompletedData {
3085 pub request_id: RequestId,
3087}
3088
3089#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3091#[serde(rename_all = "camelCase")]
3092pub struct AutoModeSwitchRequestedData {
3093 #[serde(skip_serializing_if = "Option::is_none")]
3095 pub error_code: Option<String>,
3096 pub request_id: RequestId,
3098 #[serde(skip_serializing_if = "Option::is_none")]
3100 pub retry_after_seconds: Option<i64>,
3101}
3102
3103#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3105#[serde(rename_all = "camelCase")]
3106pub struct AutoModeSwitchCompletedData {
3107 pub request_id: RequestId,
3109 pub response: AutoModeSwitchResponse,
3111}
3112
3113#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3115#[serde(rename_all = "camelCase")]
3116pub struct CommandsChangedCommand {
3117 #[serde(skip_serializing_if = "Option::is_none")]
3119 pub description: Option<String>,
3120 pub name: String,
3122}
3123
3124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3126#[serde(rename_all = "camelCase")]
3127pub struct CommandsChangedData {
3128 pub commands: Vec<CommandsChangedCommand>,
3130}
3131
3132#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3134#[serde(rename_all = "camelCase")]
3135pub struct CapabilitiesChangedUI {
3136 #[serde(skip_serializing_if = "Option::is_none")]
3138 pub canvases: Option<bool>,
3139 #[serde(skip_serializing_if = "Option::is_none")]
3141 pub elicitation: Option<bool>,
3142 #[serde(skip_serializing_if = "Option::is_none")]
3144 pub mcp_apps: Option<bool>,
3145}
3146
3147#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3149#[serde(rename_all = "camelCase")]
3150pub struct CapabilitiesChangedData {
3151 #[serde(skip_serializing_if = "Option::is_none")]
3153 pub ui: Option<CapabilitiesChangedUI>,
3154}
3155
3156#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3158#[serde(rename_all = "camelCase")]
3159pub struct ExitPlanModeRequestedData {
3160 pub actions: Vec<ExitPlanModeAction>,
3162 pub plan_content: String,
3164 pub recommended_action: ExitPlanModeAction,
3166 pub request_id: RequestId,
3168 pub summary: String,
3170}
3171
3172#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3174#[serde(rename_all = "camelCase")]
3175pub struct ExitPlanModeCompletedData {
3176 #[serde(skip_serializing_if = "Option::is_none")]
3178 pub approved: Option<bool>,
3179 #[serde(skip_serializing_if = "Option::is_none")]
3181 pub auto_approve_edits: Option<bool>,
3182 #[serde(skip_serializing_if = "Option::is_none")]
3184 pub feedback: Option<String>,
3185 pub request_id: RequestId,
3187 #[serde(skip_serializing_if = "Option::is_none")]
3189 pub selected_action: Option<ExitPlanModeAction>,
3190}
3191
3192#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3194#[serde(rename_all = "camelCase")]
3195pub struct SessionToolsUpdatedData {
3196 pub model: String,
3198}
3199
3200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3202#[serde(rename_all = "camelCase")]
3203pub struct SessionBackgroundTasksChangedData {}
3204
3205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3207#[serde(rename_all = "camelCase")]
3208pub struct SkillsLoadedSkill {
3209 pub description: String,
3211 pub enabled: bool,
3213 pub name: String,
3215 #[serde(skip_serializing_if = "Option::is_none")]
3217 pub path: Option<String>,
3218 pub source: SkillSource,
3220 pub user_invocable: bool,
3222}
3223
3224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3226#[serde(rename_all = "camelCase")]
3227pub struct SessionSkillsLoadedData {
3228 pub skills: Vec<SkillsLoadedSkill>,
3230}
3231
3232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3234#[serde(rename_all = "camelCase")]
3235pub struct CustomAgentsUpdatedAgent {
3236 pub description: String,
3238 pub display_name: String,
3240 pub id: String,
3242 #[serde(skip_serializing_if = "Option::is_none")]
3244 pub model: Option<String>,
3245 pub name: String,
3247 pub source: String,
3249 pub tools: Option<Vec<String>>,
3251 pub user_invocable: bool,
3253}
3254
3255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3257#[serde(rename_all = "camelCase")]
3258pub struct SessionCustomAgentsUpdatedData {
3259 pub agents: Vec<CustomAgentsUpdatedAgent>,
3261 pub errors: Vec<String>,
3263 pub warnings: Vec<String>,
3265}
3266
3267#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3269#[serde(rename_all = "camelCase")]
3270pub struct McpServersLoadedServer {
3271 #[serde(skip_serializing_if = "Option::is_none")]
3273 pub error: Option<String>,
3274 pub name: String,
3276 #[serde(skip_serializing_if = "Option::is_none")]
3278 pub plugin_name: Option<String>,
3279 #[serde(skip_serializing_if = "Option::is_none")]
3281 pub plugin_version: Option<String>,
3282 #[serde(skip_serializing_if = "Option::is_none")]
3284 pub source: Option<McpServerSource>,
3285 pub status: McpServerStatus,
3287 #[serde(skip_serializing_if = "Option::is_none")]
3289 pub transport: Option<McpServerTransport>,
3290}
3291
3292#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3294#[serde(rename_all = "camelCase")]
3295pub struct SessionMcpServersLoadedData {
3296 pub servers: Vec<McpServersLoadedServer>,
3298}
3299
3300#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3302#[serde(rename_all = "camelCase")]
3303pub struct SessionMcpServerStatusChangedData {
3304 #[serde(skip_serializing_if = "Option::is_none")]
3306 pub error: Option<String>,
3307 pub server_name: String,
3309 pub status: McpServerStatus,
3311}
3312
3313#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3315#[serde(rename_all = "camelCase")]
3316pub struct ExtensionsLoadedExtension {
3317 pub id: String,
3319 pub name: String,
3321 pub source: ExtensionsLoadedExtensionSource,
3323 pub status: ExtensionsLoadedExtensionStatus,
3325}
3326
3327#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3329#[serde(rename_all = "camelCase")]
3330pub struct SessionExtensionsLoadedData {
3331 pub extensions: Vec<ExtensionsLoadedExtension>,
3333}
3334
3335#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3337#[serde(rename_all = "camelCase")]
3338pub struct SessionCanvasOpenedData {
3339 pub availability: CanvasOpenedAvailability,
3341 pub canvas_id: String,
3343 pub extension_id: String,
3345 #[serde(skip_serializing_if = "Option::is_none")]
3347 pub extension_name: Option<String>,
3348 #[serde(skip_serializing_if = "Option::is_none")]
3350 pub input: Option<serde_json::Value>,
3351 pub instance_id: String,
3353 pub reopen: bool,
3355 #[serde(skip_serializing_if = "Option::is_none")]
3357 pub status: Option<String>,
3358 #[serde(skip_serializing_if = "Option::is_none")]
3360 pub title: Option<String>,
3361 #[serde(skip_serializing_if = "Option::is_none")]
3363 pub url: Option<String>,
3364}
3365
3366#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3368#[serde(rename_all = "camelCase")]
3369pub struct CanvasRegistryChangedCanvasAction {
3370 #[serde(skip_serializing_if = "Option::is_none")]
3372 pub description: Option<String>,
3373 #[serde(skip_serializing_if = "Option::is_none")]
3375 pub input_schema: Option<HashMap<String, serde_json::Value>>,
3376 pub name: String,
3378}
3379
3380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3382#[serde(rename_all = "camelCase")]
3383pub struct CanvasRegistryChangedCanvas {
3384 #[serde(skip_serializing_if = "Option::is_none")]
3386 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
3387 pub canvas_id: String,
3389 pub description: String,
3391 pub display_name: String,
3393 pub extension_id: String,
3395 #[serde(skip_serializing_if = "Option::is_none")]
3397 pub extension_name: Option<String>,
3398 #[serde(skip_serializing_if = "Option::is_none")]
3400 pub input_schema: Option<HashMap<String, serde_json::Value>>,
3401}
3402
3403#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3405#[serde(rename_all = "camelCase")]
3406pub struct SessionCanvasRegistryChangedData {
3407 pub canvases: Vec<CanvasRegistryChangedCanvas>,
3409}
3410
3411#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3413#[serde(rename_all = "camelCase")]
3414pub struct SessionCanvasClosedData {
3415 pub canvas_id: String,
3417 pub extension_id: String,
3419 pub instance_id: String,
3421}
3422
3423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3425#[serde(rename_all = "camelCase")]
3426pub struct SessionExtensionsAttachmentsPushedData {
3427 pub attachments: Vec<serde_json::Value>,
3429}
3430
3431#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3433#[serde(rename_all = "camelCase")]
3434pub struct McpAppToolCallCompleteError {
3435 pub message: String,
3437}
3438
3439#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3441#[serde(rename_all = "camelCase")]
3442pub struct McpAppToolCallCompleteToolMetaUI {
3443 #[serde(skip_serializing_if = "Option::is_none")]
3445 pub resource_uri: Option<String>,
3446 #[serde(skip_serializing_if = "Option::is_none")]
3448 pub visibility: Option<Vec<String>>,
3449}
3450
3451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3453#[serde(rename_all = "camelCase")]
3454pub struct McpAppToolCallCompleteToolMeta {
3455 #[serde(skip_serializing_if = "Option::is_none")]
3457 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
3458}
3459
3460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3462#[serde(rename_all = "camelCase")]
3463pub struct McpAppToolCallCompleteData {
3464 #[serde(skip_serializing_if = "Option::is_none")]
3466 pub arguments: Option<HashMap<String, serde_json::Value>>,
3467 pub duration_ms: f64,
3469 #[serde(skip_serializing_if = "Option::is_none")]
3471 pub error: Option<McpAppToolCallCompleteError>,
3472 #[serde(skip_serializing_if = "Option::is_none")]
3474 pub result: Option<HashMap<String, serde_json::Value>>,
3475 pub server_name: String,
3477 pub success: bool,
3479 #[serde(skip_serializing_if = "Option::is_none")]
3481 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
3482 pub tool_name: String,
3484}
3485
3486#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3488pub enum WorkingDirectoryContextHostType {
3489 #[serde(rename = "github")]
3491 GitHub,
3492 #[serde(rename = "ado")]
3494 Ado,
3495 #[default]
3497 #[serde(other)]
3498 Unknown,
3499}
3500
3501#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3503pub enum ContextTier {
3504 #[serde(rename = "default")]
3506 Default,
3507 #[serde(rename = "long_context")]
3509 LongContext,
3510 #[default]
3512 #[serde(other)]
3513 Unknown,
3514}
3515
3516#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3518pub enum ReasoningSummary {
3519 #[serde(rename = "none")]
3521 None,
3522 #[serde(rename = "concise")]
3524 Concise,
3525 #[serde(rename = "detailed")]
3527 Detailed,
3528 #[default]
3530 #[serde(other)]
3531 Unknown,
3532}
3533
3534#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3536pub enum AutopilotObjectiveChangedOperation {
3537 #[serde(rename = "create")]
3539 Create,
3540 #[serde(rename = "update")]
3542 Update,
3543 #[serde(rename = "delete")]
3545 Delete,
3546 #[default]
3548 #[serde(other)]
3549 Unknown,
3550}
3551
3552#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3554pub enum AutopilotObjectiveChangedStatus {
3555 #[serde(rename = "active")]
3557 Active,
3558 #[serde(rename = "paused")]
3560 Paused,
3561 #[serde(rename = "cap_reached")]
3563 CapReached,
3564 #[serde(rename = "completed")]
3566 Completed,
3567 #[default]
3569 #[serde(other)]
3570 Unknown,
3571}
3572
3573#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3575pub enum SessionMode {
3576 #[serde(rename = "interactive")]
3578 Interactive,
3579 #[serde(rename = "plan")]
3581 Plan,
3582 #[serde(rename = "autopilot")]
3584 Autopilot,
3585 #[default]
3587 #[serde(other)]
3588 Unknown,
3589}
3590
3591#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3593pub enum PlanChangedOperation {
3594 #[serde(rename = "create")]
3596 Create,
3597 #[serde(rename = "update")]
3599 Update,
3600 #[serde(rename = "delete")]
3602 Delete,
3603 #[default]
3605 #[serde(other)]
3606 Unknown,
3607}
3608
3609#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3611pub enum WorkspaceFileChangedOperation {
3612 #[serde(rename = "create")]
3614 Create,
3615 #[serde(rename = "update")]
3617 Update,
3618 #[default]
3620 #[serde(other)]
3621 Unknown,
3622}
3623
3624#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3626pub enum HandoffSourceType {
3627 #[serde(rename = "remote")]
3629 Remote,
3630 #[serde(rename = "local")]
3632 Local,
3633 #[default]
3635 #[serde(other)]
3636 Unknown,
3637}
3638
3639#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3641pub enum ShutdownType {
3642 #[serde(rename = "routine")]
3644 Routine,
3645 #[serde(rename = "error")]
3647 Error,
3648 #[default]
3650 #[serde(other)]
3651 Unknown,
3652}
3653
3654#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3656pub enum UserMessageAgentMode {
3657 #[serde(rename = "interactive")]
3659 Interactive,
3660 #[serde(rename = "plan")]
3662 Plan,
3663 #[serde(rename = "autopilot")]
3665 Autopilot,
3666 #[serde(rename = "shell")]
3668 Shell,
3669 #[default]
3671 #[serde(other)]
3672 Unknown,
3673}
3674
3675#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3677pub enum AssistantMessageToolRequestType {
3678 #[serde(rename = "function")]
3680 Function,
3681 #[serde(rename = "custom")]
3683 Custom,
3684 #[default]
3686 #[serde(other)]
3687 Unknown,
3688}
3689
3690#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3692pub enum AssistantUsageApiEndpoint {
3693 #[serde(rename = "/chat/completions")]
3695 ChatCompletions,
3696 #[serde(rename = "/v1/messages")]
3698 V1Messages,
3699 #[serde(rename = "/responses")]
3701 Responses,
3702 #[serde(rename = "ws:/responses")]
3704 WsResponses,
3705 #[default]
3707 #[serde(other)]
3708 Unknown,
3709}
3710
3711#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3713pub enum ModelCallFailureSource {
3714 #[serde(rename = "top_level")]
3716 TopLevel,
3717 #[serde(rename = "subagent")]
3719 Subagent,
3720 #[serde(rename = "mcp_sampling")]
3722 McpSampling,
3723 #[default]
3725 #[serde(other)]
3726 Unknown,
3727}
3728
3729#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3731pub enum AbortReason {
3732 #[serde(rename = "user_initiated")]
3734 UserInitiated,
3735 #[serde(rename = "remote_command")]
3737 RemoteCommand,
3738 #[serde(rename = "user_abort")]
3740 UserAbort,
3741 #[default]
3743 #[serde(other)]
3744 Unknown,
3745}
3746
3747#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3749pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
3750 #[serde(rename = "model")]
3752 Model,
3753 #[serde(rename = "app")]
3755 App,
3756 #[default]
3758 #[serde(other)]
3759 Unknown,
3760}
3761
3762#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3764pub enum ToolExecutionCompleteContentTextType {
3765 #[serde(rename = "text")]
3766 #[default]
3767 Text,
3768}
3769
3770#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3772pub enum ToolExecutionCompleteContentTerminalType {
3773 #[serde(rename = "terminal")]
3774 #[default]
3775 Terminal,
3776}
3777
3778#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3780pub enum ToolExecutionCompleteContentImageType {
3781 #[serde(rename = "image")]
3782 #[default]
3783 Image,
3784}
3785
3786#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3788pub enum ToolExecutionCompleteContentAudioType {
3789 #[serde(rename = "audio")]
3790 #[default]
3791 Audio,
3792}
3793
3794#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3796pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
3797 #[serde(rename = "light")]
3799 Light,
3800 #[serde(rename = "dark")]
3802 Dark,
3803 #[default]
3805 #[serde(other)]
3806 Unknown,
3807}
3808
3809#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3811pub enum ToolExecutionCompleteContentResourceLinkType {
3812 #[serde(rename = "resource_link")]
3813 #[default]
3814 ResourceLink,
3815}
3816
3817#[derive(Debug, Clone, Serialize, Deserialize)]
3819#[serde(untagged)]
3820pub enum ToolExecutionCompleteContentResourceDetails {
3821 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
3822 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
3823}
3824
3825#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3827pub enum ToolExecutionCompleteContentResourceType {
3828 #[serde(rename = "resource")]
3829 #[default]
3830 Resource,
3831}
3832
3833#[derive(Debug, Clone, Serialize, Deserialize)]
3835#[serde(untagged)]
3836pub enum ToolExecutionCompleteContent {
3837 Text(ToolExecutionCompleteContentText),
3838 Terminal(ToolExecutionCompleteContentTerminal),
3839 Image(ToolExecutionCompleteContentImage),
3840 Audio(ToolExecutionCompleteContentAudio),
3841 ResourceLink(ToolExecutionCompleteContentResourceLink),
3842 Resource(ToolExecutionCompleteContentResource),
3843}
3844
3845#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3847pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
3848 #[serde(rename = "model")]
3850 Model,
3851 #[serde(rename = "app")]
3853 App,
3854 #[default]
3856 #[serde(other)]
3857 Unknown,
3858}
3859
3860#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3862pub enum SkillInvokedTrigger {
3863 #[serde(rename = "user-invoked")]
3865 UserInvoked,
3866 #[serde(rename = "agent-invoked")]
3868 AgentInvoked,
3869 #[serde(rename = "context-load")]
3871 ContextLoad,
3872 #[default]
3874 #[serde(other)]
3875 Unknown,
3876}
3877
3878#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3880pub enum BinaryAssetType {
3881 #[serde(rename = "image")]
3883 Image,
3884 #[serde(rename = "resource")]
3886 Resource,
3887 #[default]
3889 #[serde(other)]
3890 Unknown,
3891}
3892
3893#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3895pub enum SystemMessageRole {
3896 #[serde(rename = "system")]
3898 System,
3899 #[serde(rename = "developer")]
3901 Developer,
3902 #[default]
3904 #[serde(other)]
3905 Unknown,
3906}
3907
3908#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3910pub enum PermissionRequestShellKind {
3911 #[serde(rename = "shell")]
3912 #[default]
3913 Shell,
3914}
3915
3916#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3918pub enum PermissionRequestWriteKind {
3919 #[serde(rename = "write")]
3920 #[default]
3921 Write,
3922}
3923
3924#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3926pub enum PermissionRequestReadKind {
3927 #[serde(rename = "read")]
3928 #[default]
3929 Read,
3930}
3931
3932#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3934pub enum PermissionRequestMcpKind {
3935 #[serde(rename = "mcp")]
3936 #[default]
3937 Mcp,
3938}
3939
3940#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3942pub enum PermissionRequestUrlKind {
3943 #[serde(rename = "url")]
3944 #[default]
3945 Url,
3946}
3947
3948#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3950pub enum PermissionRequestMemoryAction {
3951 #[serde(rename = "store")]
3953 Store,
3954 #[serde(rename = "vote")]
3956 Vote,
3957 #[default]
3959 #[serde(other)]
3960 Unknown,
3961}
3962
3963#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3965pub enum PermissionRequestMemoryDirection {
3966 #[serde(rename = "upvote")]
3968 Upvote,
3969 #[serde(rename = "downvote")]
3971 Downvote,
3972 #[default]
3974 #[serde(other)]
3975 Unknown,
3976}
3977
3978#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3980pub enum PermissionRequestMemoryKind {
3981 #[serde(rename = "memory")]
3982 #[default]
3983 Memory,
3984}
3985
3986#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3988pub enum PermissionRequestCustomToolKind {
3989 #[serde(rename = "custom-tool")]
3990 #[default]
3991 CustomTool,
3992}
3993
3994#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3996pub enum PermissionRequestHookKind {
3997 #[serde(rename = "hook")]
3998 #[default]
3999 Hook,
4000}
4001
4002#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4004pub enum PermissionRequestExtensionManagementKind {
4005 #[serde(rename = "extension-management")]
4006 #[default]
4007 ExtensionManagement,
4008}
4009
4010#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4012pub enum PermissionRequestExtensionPermissionAccessKind {
4013 #[serde(rename = "extension-permission-access")]
4014 #[default]
4015 ExtensionPermissionAccess,
4016}
4017
4018#[derive(Debug, Clone, Serialize, Deserialize)]
4020#[serde(untagged)]
4021pub enum PermissionRequest {
4022 Shell(PermissionRequestShell),
4023 Write(PermissionRequestWrite),
4024 Read(PermissionRequestRead),
4025 Mcp(PermissionRequestMcp),
4026 Url(PermissionRequestUrl),
4027 Memory(PermissionRequestMemory),
4028 CustomTool(PermissionRequestCustomTool),
4029 Hook(PermissionRequestHook),
4030 ExtensionManagement(PermissionRequestExtensionManagement),
4031 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
4032}
4033
4034#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4036pub enum PermissionPromptRequestCommandsKind {
4037 #[serde(rename = "commands")]
4038 #[default]
4039 Commands,
4040}
4041
4042#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4044pub enum PermissionPromptRequestWriteKind {
4045 #[serde(rename = "write")]
4046 #[default]
4047 Write,
4048}
4049
4050#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4052pub enum PermissionPromptRequestReadKind {
4053 #[serde(rename = "read")]
4054 #[default]
4055 Read,
4056}
4057
4058#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4060pub enum PermissionPromptRequestMcpKind {
4061 #[serde(rename = "mcp")]
4062 #[default]
4063 Mcp,
4064}
4065
4066#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4068pub enum PermissionPromptRequestUrlKind {
4069 #[serde(rename = "url")]
4070 #[default]
4071 Url,
4072}
4073
4074#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4076pub enum PermissionPromptRequestMemoryKind {
4077 #[serde(rename = "memory")]
4078 #[default]
4079 Memory,
4080}
4081
4082#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4084pub enum PermissionPromptRequestCustomToolKind {
4085 #[serde(rename = "custom-tool")]
4086 #[default]
4087 CustomTool,
4088}
4089
4090#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4092pub enum PermissionPromptRequestPathAccessKind {
4093 #[serde(rename = "read")]
4095 Read,
4096 #[serde(rename = "shell")]
4098 Shell,
4099 #[serde(rename = "write")]
4101 Write,
4102 #[default]
4104 #[serde(other)]
4105 Unknown,
4106}
4107
4108#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4110pub enum PermissionPromptRequestPathKind {
4111 #[serde(rename = "path")]
4112 #[default]
4113 Path,
4114}
4115
4116#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4118pub enum PermissionPromptRequestHookKind {
4119 #[serde(rename = "hook")]
4120 #[default]
4121 Hook,
4122}
4123
4124#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4126pub enum PermissionPromptRequestExtensionManagementKind {
4127 #[serde(rename = "extension-management")]
4128 #[default]
4129 ExtensionManagement,
4130}
4131
4132#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4134pub enum PermissionPromptRequestExtensionPermissionAccessKind {
4135 #[serde(rename = "extension-permission-access")]
4136 #[default]
4137 ExtensionPermissionAccess,
4138}
4139
4140#[derive(Debug, Clone, Serialize, Deserialize)]
4142#[serde(untagged)]
4143pub enum PermissionPromptRequest {
4144 Commands(PermissionPromptRequestCommands),
4145 Write(PermissionPromptRequestWrite),
4146 Read(PermissionPromptRequestRead),
4147 Mcp(PermissionPromptRequestMcp),
4148 Url(PermissionPromptRequestUrl),
4149 Memory(PermissionPromptRequestMemory),
4150 CustomTool(PermissionPromptRequestCustomTool),
4151 Path(PermissionPromptRequestPath),
4152 Hook(PermissionPromptRequestHook),
4153 ExtensionManagement(PermissionPromptRequestExtensionManagement),
4154 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
4155}
4156
4157#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4159pub enum PermissionApprovedKind {
4160 #[serde(rename = "approved")]
4161 #[default]
4162 Approved,
4163}
4164
4165#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4167pub enum UserToolSessionApprovalCommandsKind {
4168 #[serde(rename = "commands")]
4169 #[default]
4170 Commands,
4171}
4172
4173#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4175pub enum UserToolSessionApprovalReadKind {
4176 #[serde(rename = "read")]
4177 #[default]
4178 Read,
4179}
4180
4181#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4183pub enum UserToolSessionApprovalWriteKind {
4184 #[serde(rename = "write")]
4185 #[default]
4186 Write,
4187}
4188
4189#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4191pub enum UserToolSessionApprovalMcpKind {
4192 #[serde(rename = "mcp")]
4193 #[default]
4194 Mcp,
4195}
4196
4197#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4199pub enum UserToolSessionApprovalMemoryKind {
4200 #[serde(rename = "memory")]
4201 #[default]
4202 Memory,
4203}
4204
4205#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4207pub enum UserToolSessionApprovalCustomToolKind {
4208 #[serde(rename = "custom-tool")]
4209 #[default]
4210 CustomTool,
4211}
4212
4213#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4215pub enum UserToolSessionApprovalExtensionManagementKind {
4216 #[serde(rename = "extension-management")]
4217 #[default]
4218 ExtensionManagement,
4219}
4220
4221#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4223pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
4224 #[serde(rename = "extension-permission-access")]
4225 #[default]
4226 ExtensionPermissionAccess,
4227}
4228
4229#[derive(Debug, Clone, Serialize, Deserialize)]
4231#[serde(untagged)]
4232pub enum UserToolSessionApproval {
4233 Commands(UserToolSessionApprovalCommands),
4234 Read(UserToolSessionApprovalRead),
4235 Write(UserToolSessionApprovalWrite),
4236 Mcp(UserToolSessionApprovalMcp),
4237 Memory(UserToolSessionApprovalMemory),
4238 CustomTool(UserToolSessionApprovalCustomTool),
4239 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
4240 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
4241}
4242
4243#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4245pub enum PermissionApprovedForSessionKind {
4246 #[serde(rename = "approved-for-session")]
4247 #[default]
4248 ApprovedForSession,
4249}
4250
4251#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4253pub enum PermissionApprovedForLocationKind {
4254 #[serde(rename = "approved-for-location")]
4255 #[default]
4256 ApprovedForLocation,
4257}
4258
4259#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4261pub enum PermissionCancelledKind {
4262 #[serde(rename = "cancelled")]
4263 #[default]
4264 Cancelled,
4265}
4266
4267#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4269pub enum PermissionDeniedByRulesKind {
4270 #[serde(rename = "denied-by-rules")]
4271 #[default]
4272 DeniedByRules,
4273}
4274
4275#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4277pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
4278 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
4279 #[default]
4280 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
4281}
4282
4283#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4285pub enum PermissionDeniedInteractivelyByUserKind {
4286 #[serde(rename = "denied-interactively-by-user")]
4287 #[default]
4288 DeniedInteractivelyByUser,
4289}
4290
4291#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4293pub enum PermissionDeniedByContentExclusionPolicyKind {
4294 #[serde(rename = "denied-by-content-exclusion-policy")]
4295 #[default]
4296 DeniedByContentExclusionPolicy,
4297}
4298
4299#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4301pub enum PermissionDeniedByPermissionRequestHookKind {
4302 #[serde(rename = "denied-by-permission-request-hook")]
4303 #[default]
4304 DeniedByPermissionRequestHook,
4305}
4306
4307#[derive(Debug, Clone, Serialize, Deserialize)]
4309#[serde(untagged)]
4310pub enum PermissionResult {
4311 Approved(PermissionApproved),
4312 ApprovedForSession(PermissionApprovedForSession),
4313 ApprovedForLocation(PermissionApprovedForLocation),
4314 Cancelled(PermissionCancelled),
4315 DeniedByRules(PermissionDeniedByRules),
4316 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
4317 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
4318 ),
4319 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
4320 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
4321 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
4322}
4323
4324#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4326pub enum ElicitationRequestedMode {
4327 #[serde(rename = "form")]
4329 Form,
4330 #[serde(rename = "url")]
4332 Url,
4333 #[default]
4335 #[serde(other)]
4336 Unknown,
4337}
4338
4339#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4341pub enum ElicitationRequestedSchemaType {
4342 #[serde(rename = "object")]
4343 #[default]
4344 Object,
4345}
4346
4347#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4349pub enum ElicitationCompletedAction {
4350 #[serde(rename = "accept")]
4352 Accept,
4353 #[serde(rename = "decline")]
4355 Decline,
4356 #[serde(rename = "cancel")]
4358 Cancel,
4359 #[default]
4361 #[serde(other)]
4362 Unknown,
4363}
4364
4365#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4367pub enum McpOauthRequiredStaticClientConfigGrantType {
4368 #[serde(rename = "client_credentials")]
4369 #[default]
4370 ClientCredentials,
4371}
4372
4373#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4375pub enum AutoModeSwitchResponse {
4376 #[serde(rename = "yes")]
4378 Yes,
4379 #[serde(rename = "yes_always")]
4381 YesAlways,
4382 #[serde(rename = "no")]
4384 No,
4385 #[default]
4387 #[serde(other)]
4388 Unknown,
4389}
4390
4391#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4393pub enum ExitPlanModeAction {
4394 #[serde(rename = "exit_only")]
4396 ExitOnly,
4397 #[serde(rename = "interactive")]
4399 Interactive,
4400 #[serde(rename = "autopilot")]
4402 Autopilot,
4403 #[serde(rename = "autopilot_fleet")]
4405 AutopilotFleet,
4406 #[default]
4408 #[serde(other)]
4409 Unknown,
4410}
4411
4412#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4414pub enum SkillSource {
4415 #[serde(rename = "project")]
4417 Project,
4418 #[serde(rename = "inherited")]
4420 Inherited,
4421 #[serde(rename = "personal-copilot")]
4423 PersonalCopilot,
4424 #[serde(rename = "personal-agents")]
4426 PersonalAgents,
4427 #[serde(rename = "plugin")]
4429 Plugin,
4430 #[serde(rename = "custom")]
4432 Custom,
4433 #[serde(rename = "builtin")]
4435 Builtin,
4436 #[default]
4438 #[serde(other)]
4439 Unknown,
4440}
4441
4442#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4444pub enum McpServerSource {
4445 #[serde(rename = "user")]
4447 User,
4448 #[serde(rename = "workspace")]
4450 Workspace,
4451 #[serde(rename = "plugin")]
4453 Plugin,
4454 #[serde(rename = "builtin")]
4456 Builtin,
4457 #[default]
4459 #[serde(other)]
4460 Unknown,
4461}
4462
4463#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4465pub enum McpServerStatus {
4466 #[serde(rename = "connected")]
4468 Connected,
4469 #[serde(rename = "failed")]
4471 Failed,
4472 #[serde(rename = "needs-auth")]
4474 NeedsAuth,
4475 #[serde(rename = "pending")]
4477 Pending,
4478 #[serde(rename = "disabled")]
4480 Disabled,
4481 #[serde(rename = "not_configured")]
4483 NotConfigured,
4484 #[default]
4486 #[serde(other)]
4487 Unknown,
4488}
4489
4490#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4492pub enum McpServerTransport {
4493 #[serde(rename = "stdio")]
4495 Stdio,
4496 #[serde(rename = "http")]
4498 Http,
4499 #[serde(rename = "sse")]
4501 Sse,
4502 #[serde(rename = "memory")]
4504 Memory,
4505 #[default]
4507 #[serde(other)]
4508 Unknown,
4509}
4510
4511#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4513pub enum ExtensionsLoadedExtensionSource {
4514 #[serde(rename = "project")]
4516 Project,
4517 #[serde(rename = "user")]
4519 User,
4520 #[serde(rename = "plugin")]
4522 Plugin,
4523 #[serde(rename = "session")]
4525 Session,
4526 #[default]
4528 #[serde(other)]
4529 Unknown,
4530}
4531
4532#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4534pub enum ExtensionsLoadedExtensionStatus {
4535 #[serde(rename = "running")]
4537 Running,
4538 #[serde(rename = "disabled")]
4540 Disabled,
4541 #[serde(rename = "failed")]
4543 Failed,
4544 #[serde(rename = "starting")]
4546 Starting,
4547 #[default]
4549 #[serde(other)]
4550 Unknown,
4551}
4552
4553#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4555pub enum CanvasOpenedAvailability {
4556 #[serde(rename = "ready")]
4558 Ready,
4559 #[serde(rename = "stale")]
4561 Stale,
4562 #[default]
4564 #[serde(other)]
4565 Unknown,
4566}