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.info")]
29 SessionInfo,
30 #[serde(rename = "session.warning")]
31 SessionWarning,
32 #[serde(rename = "session.model_change")]
33 SessionModelChange,
34 #[serde(rename = "session.mode_changed")]
35 SessionModeChanged,
36 #[serde(rename = "session.plan_changed")]
37 SessionPlanChanged,
38 #[serde(rename = "session.workspace_file_changed")]
39 SessionWorkspaceFileChanged,
40 #[serde(rename = "session.handoff")]
41 SessionHandoff,
42 #[serde(rename = "session.truncation")]
43 SessionTruncation,
44 #[serde(rename = "session.snapshot_rewind")]
45 SessionSnapshotRewind,
46 #[serde(rename = "session.shutdown")]
47 SessionShutdown,
48 #[serde(rename = "session.context_changed")]
49 SessionContextChanged,
50 #[serde(rename = "session.usage_info")]
51 SessionUsageInfo,
52 #[serde(rename = "session.compaction_start")]
53 SessionCompactionStart,
54 #[serde(rename = "session.compaction_complete")]
55 SessionCompactionComplete,
56 #[serde(rename = "session.task_complete")]
57 SessionTaskComplete,
58 #[serde(rename = "user.message")]
59 UserMessage,
60 #[serde(rename = "pending_messages.modified")]
61 PendingMessagesModified,
62 #[serde(rename = "assistant.turn_start")]
63 AssistantTurnStart,
64 #[serde(rename = "assistant.intent")]
65 AssistantIntent,
66 #[serde(rename = "assistant.reasoning")]
67 AssistantReasoning,
68 #[serde(rename = "assistant.reasoning_delta")]
69 AssistantReasoningDelta,
70 #[serde(rename = "assistant.streaming_delta")]
71 AssistantStreamingDelta,
72 #[serde(rename = "assistant.message")]
73 AssistantMessage,
74 #[serde(rename = "assistant.message_start")]
75 AssistantMessageStart,
76 #[serde(rename = "assistant.message_delta")]
77 AssistantMessageDelta,
78 #[serde(rename = "assistant.turn_end")]
79 AssistantTurnEnd,
80 #[serde(rename = "assistant.usage")]
81 AssistantUsage,
82 #[serde(rename = "model.call_failure")]
83 ModelCallFailure,
84 #[serde(rename = "abort")]
85 Abort,
86 #[serde(rename = "tool.user_requested")]
87 ToolUserRequested,
88 #[serde(rename = "tool.execution_start")]
89 ToolExecutionStart,
90 #[serde(rename = "tool.execution_partial_result")]
91 ToolExecutionPartialResult,
92 #[serde(rename = "tool.execution_progress")]
93 ToolExecutionProgress,
94 #[serde(rename = "tool.execution_complete")]
95 ToolExecutionComplete,
96 #[serde(rename = "skill.invoked")]
97 SkillInvoked,
98 #[serde(rename = "subagent.started")]
99 SubagentStarted,
100 #[serde(rename = "subagent.completed")]
101 SubagentCompleted,
102 #[serde(rename = "subagent.failed")]
103 SubagentFailed,
104 #[serde(rename = "subagent.selected")]
105 SubagentSelected,
106 #[serde(rename = "subagent.deselected")]
107 SubagentDeselected,
108 #[serde(rename = "hook.start")]
109 HookStart,
110 #[serde(rename = "hook.end")]
111 HookEnd,
112 #[serde(rename = "system.message")]
113 SystemMessage,
114 #[serde(rename = "system.notification")]
115 SystemNotification,
116 #[serde(rename = "permission.requested")]
117 PermissionRequested,
118 #[serde(rename = "permission.completed")]
119 PermissionCompleted,
120 #[serde(rename = "user_input.requested")]
121 UserInputRequested,
122 #[serde(rename = "user_input.completed")]
123 UserInputCompleted,
124 #[serde(rename = "elicitation.requested")]
125 ElicitationRequested,
126 #[serde(rename = "elicitation.completed")]
127 ElicitationCompleted,
128 #[serde(rename = "sampling.requested")]
129 SamplingRequested,
130 #[serde(rename = "sampling.completed")]
131 SamplingCompleted,
132 #[serde(rename = "mcp.oauth_required")]
133 McpOauthRequired,
134 #[serde(rename = "mcp.oauth_completed")]
135 McpOauthCompleted,
136 #[serde(rename = "session.custom_notification")]
137 SessionCustomNotification,
138 #[serde(rename = "external_tool.requested")]
139 ExternalToolRequested,
140 #[serde(rename = "external_tool.completed")]
141 ExternalToolCompleted,
142 #[serde(rename = "command.queued")]
143 CommandQueued,
144 #[serde(rename = "command.execute")]
145 CommandExecute,
146 #[serde(rename = "command.completed")]
147 CommandCompleted,
148 #[serde(rename = "auto_mode_switch.requested")]
149 AutoModeSwitchRequested,
150 #[serde(rename = "auto_mode_switch.completed")]
151 AutoModeSwitchCompleted,
152 #[serde(rename = "commands.changed")]
153 CommandsChanged,
154 #[serde(rename = "capabilities.changed")]
155 CapabilitiesChanged,
156 #[serde(rename = "exit_plan_mode.requested")]
157 ExitPlanModeRequested,
158 #[serde(rename = "exit_plan_mode.completed")]
159 ExitPlanModeCompleted,
160 #[serde(rename = "session.tools_updated")]
161 SessionToolsUpdated,
162 #[serde(rename = "session.background_tasks_changed")]
163 SessionBackgroundTasksChanged,
164 #[serde(rename = "session.skills_loaded")]
165 SessionSkillsLoaded,
166 #[serde(rename = "session.custom_agents_updated")]
167 SessionCustomAgentsUpdated,
168 #[serde(rename = "session.mcp_servers_loaded")]
169 SessionMcpServersLoaded,
170 #[serde(rename = "session.mcp_server_status_changed")]
171 SessionMcpServerStatusChanged,
172 #[serde(rename = "session.extensions_loaded")]
173 SessionExtensionsLoaded,
174 #[default]
176 #[serde(other)]
177 Unknown,
178}
179
180#[derive(Debug, Clone, Serialize, Deserialize)]
184#[serde(tag = "type", content = "data")]
185pub enum SessionEventData {
186 #[serde(rename = "session.start")]
187 SessionStart(SessionStartData),
188 #[serde(rename = "session.resume")]
189 SessionResume(SessionResumeData),
190 #[serde(rename = "session.remote_steerable_changed")]
191 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
192 #[serde(rename = "session.error")]
193 SessionError(SessionErrorData),
194 #[serde(rename = "session.idle")]
195 SessionIdle(SessionIdleData),
196 #[serde(rename = "session.title_changed")]
197 SessionTitleChanged(SessionTitleChangedData),
198 #[serde(rename = "session.schedule_created")]
199 SessionScheduleCreated(SessionScheduleCreatedData),
200 #[serde(rename = "session.schedule_cancelled")]
201 SessionScheduleCancelled(SessionScheduleCancelledData),
202 #[serde(rename = "session.info")]
203 SessionInfo(SessionInfoData),
204 #[serde(rename = "session.warning")]
205 SessionWarning(SessionWarningData),
206 #[serde(rename = "session.model_change")]
207 SessionModelChange(SessionModelChangeData),
208 #[serde(rename = "session.mode_changed")]
209 SessionModeChanged(SessionModeChangedData),
210 #[serde(rename = "session.plan_changed")]
211 SessionPlanChanged(SessionPlanChangedData),
212 #[serde(rename = "session.workspace_file_changed")]
213 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
214 #[serde(rename = "session.handoff")]
215 SessionHandoff(SessionHandoffData),
216 #[serde(rename = "session.truncation")]
217 SessionTruncation(SessionTruncationData),
218 #[serde(rename = "session.snapshot_rewind")]
219 SessionSnapshotRewind(SessionSnapshotRewindData),
220 #[serde(rename = "session.shutdown")]
221 SessionShutdown(SessionShutdownData),
222 #[serde(rename = "session.context_changed")]
223 SessionContextChanged(SessionContextChangedData),
224 #[serde(rename = "session.usage_info")]
225 SessionUsageInfo(SessionUsageInfoData),
226 #[serde(rename = "session.compaction_start")]
227 SessionCompactionStart(SessionCompactionStartData),
228 #[serde(rename = "session.compaction_complete")]
229 SessionCompactionComplete(SessionCompactionCompleteData),
230 #[serde(rename = "session.task_complete")]
231 SessionTaskComplete(SessionTaskCompleteData),
232 #[serde(rename = "user.message")]
233 UserMessage(UserMessageData),
234 #[serde(rename = "pending_messages.modified")]
235 PendingMessagesModified(PendingMessagesModifiedData),
236 #[serde(rename = "assistant.turn_start")]
237 AssistantTurnStart(AssistantTurnStartData),
238 #[serde(rename = "assistant.intent")]
239 AssistantIntent(AssistantIntentData),
240 #[serde(rename = "assistant.reasoning")]
241 AssistantReasoning(AssistantReasoningData),
242 #[serde(rename = "assistant.reasoning_delta")]
243 AssistantReasoningDelta(AssistantReasoningDeltaData),
244 #[serde(rename = "assistant.streaming_delta")]
245 AssistantStreamingDelta(AssistantStreamingDeltaData),
246 #[serde(rename = "assistant.message")]
247 AssistantMessage(AssistantMessageData),
248 #[serde(rename = "assistant.message_start")]
249 AssistantMessageStart(AssistantMessageStartData),
250 #[serde(rename = "assistant.message_delta")]
251 AssistantMessageDelta(AssistantMessageDeltaData),
252 #[serde(rename = "assistant.turn_end")]
253 AssistantTurnEnd(AssistantTurnEndData),
254 #[serde(rename = "assistant.usage")]
255 AssistantUsage(AssistantUsageData),
256 #[serde(rename = "model.call_failure")]
257 ModelCallFailure(ModelCallFailureData),
258 #[serde(rename = "abort")]
259 Abort(AbortData),
260 #[serde(rename = "tool.user_requested")]
261 ToolUserRequested(ToolUserRequestedData),
262 #[serde(rename = "tool.execution_start")]
263 ToolExecutionStart(ToolExecutionStartData),
264 #[serde(rename = "tool.execution_partial_result")]
265 ToolExecutionPartialResult(ToolExecutionPartialResultData),
266 #[serde(rename = "tool.execution_progress")]
267 ToolExecutionProgress(ToolExecutionProgressData),
268 #[serde(rename = "tool.execution_complete")]
269 ToolExecutionComplete(ToolExecutionCompleteData),
270 #[serde(rename = "skill.invoked")]
271 SkillInvoked(SkillInvokedData),
272 #[serde(rename = "subagent.started")]
273 SubagentStarted(SubagentStartedData),
274 #[serde(rename = "subagent.completed")]
275 SubagentCompleted(SubagentCompletedData),
276 #[serde(rename = "subagent.failed")]
277 SubagentFailed(SubagentFailedData),
278 #[serde(rename = "subagent.selected")]
279 SubagentSelected(SubagentSelectedData),
280 #[serde(rename = "subagent.deselected")]
281 SubagentDeselected(SubagentDeselectedData),
282 #[serde(rename = "hook.start")]
283 HookStart(HookStartData),
284 #[serde(rename = "hook.end")]
285 HookEnd(HookEndData),
286 #[serde(rename = "system.message")]
287 SystemMessage(SystemMessageData),
288 #[serde(rename = "system.notification")]
289 SystemNotification(SystemNotificationData),
290 #[serde(rename = "permission.requested")]
291 PermissionRequested(PermissionRequestedData),
292 #[serde(rename = "permission.completed")]
293 PermissionCompleted(PermissionCompletedData),
294 #[serde(rename = "user_input.requested")]
295 UserInputRequested(UserInputRequestedData),
296 #[serde(rename = "user_input.completed")]
297 UserInputCompleted(UserInputCompletedData),
298 #[serde(rename = "elicitation.requested")]
299 ElicitationRequested(ElicitationRequestedData),
300 #[serde(rename = "elicitation.completed")]
301 ElicitationCompleted(ElicitationCompletedData),
302 #[serde(rename = "sampling.requested")]
303 SamplingRequested(SamplingRequestedData),
304 #[serde(rename = "sampling.completed")]
305 SamplingCompleted(SamplingCompletedData),
306 #[serde(rename = "mcp.oauth_required")]
307 McpOauthRequired(McpOauthRequiredData),
308 #[serde(rename = "mcp.oauth_completed")]
309 McpOauthCompleted(McpOauthCompletedData),
310 #[serde(rename = "session.custom_notification")]
311 SessionCustomNotification(SessionCustomNotificationData),
312 #[serde(rename = "external_tool.requested")]
313 ExternalToolRequested(ExternalToolRequestedData),
314 #[serde(rename = "external_tool.completed")]
315 ExternalToolCompleted(ExternalToolCompletedData),
316 #[serde(rename = "command.queued")]
317 CommandQueued(CommandQueuedData),
318 #[serde(rename = "command.execute")]
319 CommandExecute(CommandExecuteData),
320 #[serde(rename = "command.completed")]
321 CommandCompleted(CommandCompletedData),
322 #[serde(rename = "auto_mode_switch.requested")]
323 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
324 #[serde(rename = "auto_mode_switch.completed")]
325 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
326 #[serde(rename = "commands.changed")]
327 CommandsChanged(CommandsChangedData),
328 #[serde(rename = "capabilities.changed")]
329 CapabilitiesChanged(CapabilitiesChangedData),
330 #[serde(rename = "exit_plan_mode.requested")]
331 ExitPlanModeRequested(ExitPlanModeRequestedData),
332 #[serde(rename = "exit_plan_mode.completed")]
333 ExitPlanModeCompleted(ExitPlanModeCompletedData),
334 #[serde(rename = "session.tools_updated")]
335 SessionToolsUpdated(SessionToolsUpdatedData),
336 #[serde(rename = "session.background_tasks_changed")]
337 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
338 #[serde(rename = "session.skills_loaded")]
339 SessionSkillsLoaded(SessionSkillsLoadedData),
340 #[serde(rename = "session.custom_agents_updated")]
341 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
342 #[serde(rename = "session.mcp_servers_loaded")]
343 SessionMcpServersLoaded(SessionMcpServersLoadedData),
344 #[serde(rename = "session.mcp_server_status_changed")]
345 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
346 #[serde(rename = "session.extensions_loaded")]
347 SessionExtensionsLoaded(SessionExtensionsLoadedData),
348}
349
350#[derive(Debug, Clone, Serialize, Deserialize)]
356#[serde(rename_all = "camelCase")]
357pub struct TypedSessionEvent {
358 pub id: String,
360 pub timestamp: String,
362 #[serde(skip_serializing_if = "Option::is_none")]
364 pub parent_id: Option<String>,
365 #[serde(skip_serializing_if = "Option::is_none")]
367 pub ephemeral: Option<bool>,
368 #[serde(skip_serializing_if = "Option::is_none")]
371 pub agent_id: Option<String>,
372 #[serde(flatten)]
374 pub payload: SessionEventData,
375}
376
377#[derive(Debug, Clone, Default, Serialize, Deserialize)]
379#[serde(rename_all = "camelCase")]
380pub struct WorkingDirectoryContext {
381 #[serde(skip_serializing_if = "Option::is_none")]
383 pub base_commit: Option<String>,
384 #[serde(skip_serializing_if = "Option::is_none")]
386 pub branch: Option<String>,
387 pub cwd: String,
389 #[serde(skip_serializing_if = "Option::is_none")]
391 pub git_root: Option<String>,
392 #[serde(skip_serializing_if = "Option::is_none")]
394 pub head_commit: Option<String>,
395 #[serde(skip_serializing_if = "Option::is_none")]
397 pub host_type: Option<WorkingDirectoryContextHostType>,
398 #[serde(skip_serializing_if = "Option::is_none")]
400 pub repository: Option<String>,
401 #[serde(skip_serializing_if = "Option::is_none")]
403 pub repository_host: Option<String>,
404}
405
406#[derive(Debug, Clone, Default, Serialize, Deserialize)]
408#[serde(rename_all = "camelCase")]
409pub struct SessionStartData {
410 #[serde(skip_serializing_if = "Option::is_none")]
412 pub already_in_use: Option<bool>,
413 #[serde(skip_serializing_if = "Option::is_none")]
415 pub context: Option<WorkingDirectoryContext>,
416 pub copilot_version: String,
418 #[serde(skip_serializing_if = "Option::is_none")]
420 pub detached_from_spawning_parent_session_id: Option<String>,
421 pub producer: String,
423 #[serde(skip_serializing_if = "Option::is_none")]
425 pub reasoning_effort: Option<String>,
426 #[serde(skip_serializing_if = "Option::is_none")]
428 pub reasoning_summary: Option<ReasoningSummary>,
429 #[serde(skip_serializing_if = "Option::is_none")]
431 pub remote_steerable: Option<bool>,
432 #[serde(skip_serializing_if = "Option::is_none")]
434 pub selected_model: Option<String>,
435 pub session_id: SessionId,
437 pub start_time: String,
439 pub version: i64,
441}
442
443#[derive(Debug, Clone, Default, Serialize, Deserialize)]
445#[serde(rename_all = "camelCase")]
446pub struct SessionResumeData {
447 #[serde(skip_serializing_if = "Option::is_none")]
449 pub already_in_use: Option<bool>,
450 #[serde(skip_serializing_if = "Option::is_none")]
452 pub context: Option<WorkingDirectoryContext>,
453 #[serde(skip_serializing_if = "Option::is_none")]
455 pub continue_pending_work: Option<bool>,
456 pub event_count: i64,
458 #[serde(skip_serializing_if = "Option::is_none")]
460 pub reasoning_effort: Option<String>,
461 #[serde(skip_serializing_if = "Option::is_none")]
463 pub reasoning_summary: Option<ReasoningSummary>,
464 #[serde(skip_serializing_if = "Option::is_none")]
466 pub remote_steerable: Option<bool>,
467 pub resume_time: String,
469 #[serde(skip_serializing_if = "Option::is_none")]
471 pub selected_model: Option<String>,
472 #[serde(skip_serializing_if = "Option::is_none")]
474 pub session_was_active: Option<bool>,
475}
476
477#[derive(Debug, Clone, Default, Serialize, Deserialize)]
479#[serde(rename_all = "camelCase")]
480pub struct SessionRemoteSteerableChangedData {
481 pub remote_steerable: bool,
483}
484
485#[derive(Debug, Clone, Default, Serialize, Deserialize)]
487#[serde(rename_all = "camelCase")]
488pub struct SessionErrorData {
489 #[serde(skip_serializing_if = "Option::is_none")]
491 pub eligible_for_auto_switch: Option<bool>,
492 #[serde(skip_serializing_if = "Option::is_none")]
494 pub error_code: Option<String>,
495 pub error_type: String,
497 pub message: String,
499 #[serde(skip_serializing_if = "Option::is_none")]
501 pub provider_call_id: Option<String>,
502 #[serde(skip_serializing_if = "Option::is_none")]
504 pub stack: Option<String>,
505 #[serde(skip_serializing_if = "Option::is_none")]
507 pub status_code: Option<i32>,
508 #[serde(skip_serializing_if = "Option::is_none")]
510 pub url: Option<String>,
511}
512
513#[derive(Debug, Clone, Default, Serialize, Deserialize)]
515#[serde(rename_all = "camelCase")]
516pub struct SessionIdleData {
517 #[serde(skip_serializing_if = "Option::is_none")]
519 pub aborted: Option<bool>,
520}
521
522#[derive(Debug, Clone, Default, Serialize, Deserialize)]
524#[serde(rename_all = "camelCase")]
525pub struct SessionTitleChangedData {
526 pub title: String,
528}
529
530#[derive(Debug, Clone, Default, Serialize, Deserialize)]
532#[serde(rename_all = "camelCase")]
533pub struct SessionScheduleCreatedData {
534 #[serde(skip_serializing_if = "Option::is_none")]
536 pub display_prompt: Option<String>,
537 pub id: i64,
539 pub interval_ms: i64,
541 pub prompt: String,
543 #[serde(skip_serializing_if = "Option::is_none")]
545 pub recurring: Option<bool>,
546}
547
548#[derive(Debug, Clone, Default, Serialize, Deserialize)]
550#[serde(rename_all = "camelCase")]
551pub struct SessionScheduleCancelledData {
552 pub id: i64,
554}
555
556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
558#[serde(rename_all = "camelCase")]
559pub struct SessionInfoData {
560 pub info_type: String,
562 pub message: String,
564 #[serde(skip_serializing_if = "Option::is_none")]
566 pub tip: Option<String>,
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 SessionWarningData {
576 pub message: String,
578 #[serde(skip_serializing_if = "Option::is_none")]
580 pub url: Option<String>,
581 pub warning_type: String,
583}
584
585#[derive(Debug, Clone, Default, Serialize, Deserialize)]
587#[serde(rename_all = "camelCase")]
588pub struct SessionModelChangeData {
589 #[serde(skip_serializing_if = "Option::is_none")]
591 pub cause: Option<String>,
592 pub new_model: String,
594 #[serde(skip_serializing_if = "Option::is_none")]
596 pub previous_model: Option<String>,
597 #[serde(skip_serializing_if = "Option::is_none")]
599 pub previous_reasoning_effort: Option<String>,
600 #[serde(skip_serializing_if = "Option::is_none")]
602 pub previous_reasoning_summary: Option<ReasoningSummary>,
603 #[serde(skip_serializing_if = "Option::is_none")]
605 pub reasoning_effort: Option<String>,
606 #[serde(skip_serializing_if = "Option::is_none")]
608 pub reasoning_summary: Option<ReasoningSummary>,
609}
610
611#[derive(Debug, Clone, Default, Serialize, Deserialize)]
613#[serde(rename_all = "camelCase")]
614pub struct SessionModeChangedData {
615 pub new_mode: SessionMode,
617 pub previous_mode: SessionMode,
619}
620
621#[derive(Debug, Clone, Default, Serialize, Deserialize)]
623#[serde(rename_all = "camelCase")]
624pub struct SessionPlanChangedData {
625 pub operation: PlanChangedOperation,
627}
628
629#[derive(Debug, Clone, Default, Serialize, Deserialize)]
631#[serde(rename_all = "camelCase")]
632pub struct SessionWorkspaceFileChangedData {
633 pub operation: WorkspaceFileChangedOperation,
635 pub path: String,
637}
638
639#[derive(Debug, Clone, Default, Serialize, Deserialize)]
641#[serde(rename_all = "camelCase")]
642pub struct HandoffRepository {
643 #[serde(skip_serializing_if = "Option::is_none")]
645 pub branch: Option<String>,
646 pub name: String,
648 pub owner: String,
650}
651
652#[derive(Debug, Clone, Default, Serialize, Deserialize)]
654#[serde(rename_all = "camelCase")]
655pub struct SessionHandoffData {
656 #[serde(skip_serializing_if = "Option::is_none")]
658 pub context: Option<String>,
659 pub handoff_time: String,
661 #[serde(skip_serializing_if = "Option::is_none")]
663 pub host: Option<String>,
664 #[serde(skip_serializing_if = "Option::is_none")]
666 pub remote_session_id: Option<SessionId>,
667 #[serde(skip_serializing_if = "Option::is_none")]
669 pub repository: Option<HandoffRepository>,
670 pub source_type: HandoffSourceType,
672 #[serde(skip_serializing_if = "Option::is_none")]
674 pub summary: Option<String>,
675}
676
677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
679#[serde(rename_all = "camelCase")]
680pub struct SessionTruncationData {
681 pub messages_removed_during_truncation: i64,
683 pub performed_by: String,
685 pub post_truncation_messages_length: i64,
687 pub post_truncation_tokens_in_messages: i64,
689 pub pre_truncation_messages_length: i64,
691 pub pre_truncation_tokens_in_messages: i64,
693 pub token_limit: i64,
695 pub tokens_removed_during_truncation: i64,
697}
698
699#[derive(Debug, Clone, Default, Serialize, Deserialize)]
701#[serde(rename_all = "camelCase")]
702pub struct SessionSnapshotRewindData {
703 pub events_removed: i64,
705 pub up_to_event_id: String,
707}
708
709#[derive(Debug, Clone, Default, Serialize, Deserialize)]
711#[serde(rename_all = "camelCase")]
712pub struct ShutdownCodeChanges {
713 pub files_modified: Vec<String>,
715 pub lines_added: i64,
717 pub lines_removed: i64,
719}
720
721#[derive(Debug, Clone, Default, Serialize, Deserialize)]
723#[serde(rename_all = "camelCase")]
724pub struct ShutdownModelMetricRequests {
725 pub cost: f64,
727 pub count: i64,
729}
730
731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
733#[serde(rename_all = "camelCase")]
734pub struct ShutdownModelMetricTokenDetail {
735 pub token_count: i64,
737}
738
739#[derive(Debug, Clone, Default, Serialize, Deserialize)]
741#[serde(rename_all = "camelCase")]
742pub struct ShutdownModelMetricUsage {
743 pub cache_read_tokens: i64,
745 pub cache_write_tokens: i64,
747 pub input_tokens: i64,
749 pub output_tokens: i64,
751 #[serde(skip_serializing_if = "Option::is_none")]
753 pub reasoning_tokens: Option<i64>,
754}
755
756#[derive(Debug, Clone, Default, Serialize, Deserialize)]
758#[serde(rename_all = "camelCase")]
759pub struct ShutdownModelMetric {
760 pub requests: ShutdownModelMetricRequests,
762 #[serde(default)]
764 pub token_details: HashMap<String, ShutdownModelMetricTokenDetail>,
765 #[serde(skip_serializing_if = "Option::is_none")]
767 pub total_nano_aiu: Option<f64>,
768 pub usage: ShutdownModelMetricUsage,
770}
771
772#[derive(Debug, Clone, Default, Serialize, Deserialize)]
774#[serde(rename_all = "camelCase")]
775pub struct ShutdownTokenDetail {
776 pub token_count: i64,
778}
779
780#[derive(Debug, Clone, Default, Serialize, Deserialize)]
782#[serde(rename_all = "camelCase")]
783pub struct SessionShutdownData {
784 pub code_changes: ShutdownCodeChanges,
786 #[serde(skip_serializing_if = "Option::is_none")]
788 pub conversation_tokens: Option<i64>,
789 #[serde(skip_serializing_if = "Option::is_none")]
791 pub current_model: Option<String>,
792 #[serde(skip_serializing_if = "Option::is_none")]
794 pub current_tokens: Option<i64>,
795 #[serde(skip_serializing_if = "Option::is_none")]
797 pub error_reason: Option<String>,
798 pub model_metrics: HashMap<String, ShutdownModelMetric>,
800 pub session_start_time: i64,
802 pub shutdown_type: ShutdownType,
804 #[serde(skip_serializing_if = "Option::is_none")]
806 pub system_tokens: Option<i64>,
807 #[serde(default)]
809 pub token_details: HashMap<String, ShutdownTokenDetail>,
810 #[serde(skip_serializing_if = "Option::is_none")]
812 pub tool_definitions_tokens: Option<i64>,
813 pub total_api_duration_ms: i64,
815 #[serde(skip_serializing_if = "Option::is_none")]
817 pub total_nano_aiu: Option<f64>,
818 pub total_premium_requests: f64,
820}
821
822#[derive(Debug, Clone, Default, Serialize, Deserialize)]
824#[serde(rename_all = "camelCase")]
825pub struct SessionContextChangedData {
826 #[serde(skip_serializing_if = "Option::is_none")]
828 pub base_commit: Option<String>,
829 #[serde(skip_serializing_if = "Option::is_none")]
831 pub branch: Option<String>,
832 pub cwd: String,
834 #[serde(skip_serializing_if = "Option::is_none")]
836 pub git_root: Option<String>,
837 #[serde(skip_serializing_if = "Option::is_none")]
839 pub head_commit: Option<String>,
840 #[serde(skip_serializing_if = "Option::is_none")]
842 pub host_type: Option<WorkingDirectoryContextHostType>,
843 #[serde(skip_serializing_if = "Option::is_none")]
845 pub repository: Option<String>,
846 #[serde(skip_serializing_if = "Option::is_none")]
848 pub repository_host: Option<String>,
849}
850
851#[derive(Debug, Clone, Default, Serialize, Deserialize)]
853#[serde(rename_all = "camelCase")]
854pub struct SessionUsageInfoData {
855 #[serde(skip_serializing_if = "Option::is_none")]
857 pub conversation_tokens: Option<i64>,
858 pub current_tokens: i64,
860 #[serde(skip_serializing_if = "Option::is_none")]
862 pub is_initial: Option<bool>,
863 pub messages_length: i64,
865 #[serde(skip_serializing_if = "Option::is_none")]
867 pub system_tokens: Option<i64>,
868 pub token_limit: i64,
870 #[serde(skip_serializing_if = "Option::is_none")]
872 pub tool_definitions_tokens: Option<i64>,
873}
874
875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
877#[serde(rename_all = "camelCase")]
878pub struct SessionCompactionStartData {
879 #[serde(skip_serializing_if = "Option::is_none")]
881 pub conversation_tokens: Option<i64>,
882 #[serde(skip_serializing_if = "Option::is_none")]
884 pub system_tokens: Option<i64>,
885 #[serde(skip_serializing_if = "Option::is_none")]
887 pub tool_definitions_tokens: Option<i64>,
888}
889
890#[derive(Debug, Clone, Default, Serialize, Deserialize)]
892#[serde(rename_all = "camelCase")]
893pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
894 pub batch_size: i64,
896 pub cost_per_batch: i64,
898 pub token_count: i64,
900 pub token_type: String,
902}
903
904#[derive(Debug, Clone, Default, Serialize, Deserialize)]
906#[serde(rename_all = "camelCase")]
907pub struct CompactionCompleteCompactionTokensUsedCopilotUsage {
908 pub token_details: Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>,
910 pub total_nano_aiu: f64,
912}
913
914#[derive(Debug, Clone, Default, Serialize, Deserialize)]
916#[serde(rename_all = "camelCase")]
917pub struct CompactionCompleteCompactionTokensUsed {
918 #[serde(skip_serializing_if = "Option::is_none")]
920 pub cache_read_tokens: Option<i64>,
921 #[serde(skip_serializing_if = "Option::is_none")]
923 pub cache_write_tokens: Option<i64>,
924 #[serde(skip_serializing_if = "Option::is_none")]
926 pub copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
927 #[serde(skip_serializing_if = "Option::is_none")]
929 pub duration: Option<i64>,
930 #[serde(skip_serializing_if = "Option::is_none")]
932 pub input_tokens: Option<i64>,
933 #[serde(skip_serializing_if = "Option::is_none")]
935 pub model: Option<String>,
936 #[serde(skip_serializing_if = "Option::is_none")]
938 pub output_tokens: Option<i64>,
939}
940
941#[derive(Debug, Clone, Default, Serialize, Deserialize)]
943#[serde(rename_all = "camelCase")]
944pub struct SessionCompactionCompleteData {
945 #[serde(skip_serializing_if = "Option::is_none")]
947 pub checkpoint_number: Option<i64>,
948 #[serde(skip_serializing_if = "Option::is_none")]
950 pub checkpoint_path: Option<String>,
951 #[serde(skip_serializing_if = "Option::is_none")]
953 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
954 #[serde(skip_serializing_if = "Option::is_none")]
956 pub conversation_tokens: Option<i64>,
957 #[serde(skip_serializing_if = "Option::is_none")]
959 pub error: Option<String>,
960 #[serde(skip_serializing_if = "Option::is_none")]
962 pub messages_removed: Option<i64>,
963 #[serde(skip_serializing_if = "Option::is_none")]
965 pub post_compaction_tokens: Option<i64>,
966 #[serde(skip_serializing_if = "Option::is_none")]
968 pub pre_compaction_messages_length: Option<i64>,
969 #[serde(skip_serializing_if = "Option::is_none")]
971 pub pre_compaction_tokens: Option<i64>,
972 #[serde(skip_serializing_if = "Option::is_none")]
974 pub request_id: Option<RequestId>,
975 pub success: bool,
977 #[serde(skip_serializing_if = "Option::is_none")]
979 pub summary_content: Option<String>,
980 #[serde(skip_serializing_if = "Option::is_none")]
982 pub system_tokens: Option<i64>,
983 #[serde(skip_serializing_if = "Option::is_none")]
985 pub tokens_removed: Option<i64>,
986 #[serde(skip_serializing_if = "Option::is_none")]
988 pub tool_definitions_tokens: Option<i64>,
989}
990
991#[derive(Debug, Clone, Default, Serialize, Deserialize)]
993#[serde(rename_all = "camelCase")]
994pub struct SessionTaskCompleteData {
995 #[serde(skip_serializing_if = "Option::is_none")]
997 pub success: Option<bool>,
998 #[serde(skip_serializing_if = "Option::is_none")]
1000 pub summary: Option<String>,
1001}
1002
1003#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1005#[serde(rename_all = "camelCase")]
1006pub struct UserMessageData {
1007 #[serde(skip_serializing_if = "Option::is_none")]
1009 pub agent_mode: Option<UserMessageAgentMode>,
1010 #[serde(default)]
1012 pub attachments: Vec<serde_json::Value>,
1013 pub content: String,
1015 #[serde(skip_serializing_if = "Option::is_none")]
1017 pub interaction_id: Option<String>,
1018 #[serde(skip_serializing_if = "Option::is_none")]
1020 pub is_autopilot_continuation: Option<bool>,
1021 #[serde(default)]
1023 pub native_document_path_fallback_paths: Vec<String>,
1024 #[serde(skip_serializing_if = "Option::is_none")]
1026 pub parent_agent_task_id: Option<String>,
1027 #[serde(skip_serializing_if = "Option::is_none")]
1029 pub source: Option<String>,
1030 #[serde(default)]
1032 pub supported_native_document_mime_types: Vec<String>,
1033 #[serde(skip_serializing_if = "Option::is_none")]
1035 pub transformed_content: Option<String>,
1036}
1037
1038#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1040#[serde(rename_all = "camelCase")]
1041pub struct PendingMessagesModifiedData {}
1042
1043#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1045#[serde(rename_all = "camelCase")]
1046pub struct AssistantTurnStartData {
1047 #[serde(skip_serializing_if = "Option::is_none")]
1049 pub interaction_id: Option<String>,
1050 pub turn_id: String,
1052}
1053
1054#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1056#[serde(rename_all = "camelCase")]
1057pub struct AssistantIntentData {
1058 pub intent: String,
1060}
1061
1062#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1064#[serde(rename_all = "camelCase")]
1065pub struct AssistantReasoningData {
1066 pub content: String,
1068 pub reasoning_id: String,
1070}
1071
1072#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1074#[serde(rename_all = "camelCase")]
1075pub struct AssistantReasoningDeltaData {
1076 pub delta_content: String,
1078 pub reasoning_id: String,
1080}
1081
1082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1084#[serde(rename_all = "camelCase")]
1085pub struct AssistantStreamingDeltaData {
1086 pub total_response_size_bytes: i64,
1088}
1089
1090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1092#[serde(rename_all = "camelCase")]
1093pub struct AssistantMessageToolRequest {
1094 #[serde(skip_serializing_if = "Option::is_none")]
1096 pub arguments: Option<serde_json::Value>,
1097 #[serde(skip_serializing_if = "Option::is_none")]
1099 pub intention_summary: Option<String>,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub mcp_server_name: Option<String>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub mcp_tool_name: Option<String>,
1106 pub name: String,
1108 pub tool_call_id: String,
1110 #[serde(skip_serializing_if = "Option::is_none")]
1112 pub tool_title: Option<String>,
1113 #[serde(skip_serializing_if = "Option::is_none")]
1115 pub r#type: Option<AssistantMessageToolRequestType>,
1116}
1117
1118#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1120#[serde(rename_all = "camelCase")]
1121pub struct AssistantMessageData {
1122 #[serde(default)]
1124 pub anthropic_advisor_blocks: Vec<serde_json::Value>,
1125 #[serde(skip_serializing_if = "Option::is_none")]
1127 pub anthropic_advisor_model: Option<String>,
1128 pub content: String,
1130 #[serde(skip_serializing_if = "Option::is_none")]
1132 pub encrypted_content: Option<String>,
1133 #[serde(skip_serializing_if = "Option::is_none")]
1135 pub interaction_id: Option<String>,
1136 pub message_id: String,
1138 #[serde(skip_serializing_if = "Option::is_none")]
1140 pub model: Option<String>,
1141 #[serde(skip_serializing_if = "Option::is_none")]
1143 pub output_tokens: Option<i64>,
1144 #[doc(hidden)]
1146 #[deprecated]
1147 #[serde(skip_serializing_if = "Option::is_none")]
1148 pub parent_tool_call_id: Option<String>,
1149 #[serde(skip_serializing_if = "Option::is_none")]
1151 pub phase: Option<String>,
1152 #[serde(skip_serializing_if = "Option::is_none")]
1154 pub reasoning_opaque: Option<String>,
1155 #[serde(skip_serializing_if = "Option::is_none")]
1157 pub reasoning_text: Option<String>,
1158 #[serde(skip_serializing_if = "Option::is_none")]
1160 pub request_id: Option<RequestId>,
1161 #[serde(default)]
1163 pub tool_requests: Vec<AssistantMessageToolRequest>,
1164 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub turn_id: Option<String>,
1167}
1168
1169#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1171#[serde(rename_all = "camelCase")]
1172pub struct AssistantMessageStartData {
1173 pub message_id: String,
1175 #[serde(skip_serializing_if = "Option::is_none")]
1177 pub phase: Option<String>,
1178}
1179
1180#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1182#[serde(rename_all = "camelCase")]
1183pub struct AssistantMessageDeltaData {
1184 pub delta_content: String,
1186 pub message_id: String,
1188 #[doc(hidden)]
1190 #[deprecated]
1191 #[serde(skip_serializing_if = "Option::is_none")]
1192 pub parent_tool_call_id: Option<String>,
1193}
1194
1195#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1197#[serde(rename_all = "camelCase")]
1198pub struct AssistantTurnEndData {
1199 pub turn_id: String,
1201}
1202
1203#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1205#[serde(rename_all = "camelCase")]
1206pub struct AssistantUsageCopilotUsageTokenDetail {
1207 pub batch_size: i64,
1209 pub cost_per_batch: i64,
1211 pub token_count: i64,
1213 pub token_type: String,
1215}
1216
1217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1219#[serde(rename_all = "camelCase")]
1220pub struct AssistantUsageCopilotUsage {
1221 pub token_details: Vec<AssistantUsageCopilotUsageTokenDetail>,
1223 pub total_nano_aiu: f64,
1225}
1226
1227#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1229#[serde(rename_all = "camelCase")]
1230pub struct AssistantUsageQuotaSnapshot {
1231 pub entitlement_requests: i64,
1233 pub is_unlimited_entitlement: bool,
1235 pub overage: f64,
1237 pub overage_allowed_with_exhausted_quota: bool,
1239 pub remaining_percentage: f64,
1241 #[serde(skip_serializing_if = "Option::is_none")]
1243 pub reset_date: Option<String>,
1244 pub usage_allowed_with_exhausted_quota: bool,
1246 pub used_requests: i64,
1248}
1249
1250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1252#[serde(rename_all = "camelCase")]
1253pub struct AssistantUsageData {
1254 #[serde(skip_serializing_if = "Option::is_none")]
1256 pub api_call_id: Option<String>,
1257 #[serde(skip_serializing_if = "Option::is_none")]
1259 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1260 #[serde(skip_serializing_if = "Option::is_none")]
1262 pub cache_read_tokens: Option<i64>,
1263 #[serde(skip_serializing_if = "Option::is_none")]
1265 pub cache_write_tokens: Option<i64>,
1266 #[serde(skip_serializing_if = "Option::is_none")]
1268 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1269 #[serde(skip_serializing_if = "Option::is_none")]
1271 pub cost: Option<f64>,
1272 #[serde(skip_serializing_if = "Option::is_none")]
1274 pub duration: Option<i64>,
1275 #[serde(skip_serializing_if = "Option::is_none")]
1277 pub initiator: Option<String>,
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub input_tokens: Option<i64>,
1281 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub inter_token_latency_ms: Option<f64>,
1284 pub model: String,
1286 #[serde(skip_serializing_if = "Option::is_none")]
1288 pub output_tokens: Option<i64>,
1289 #[doc(hidden)]
1291 #[deprecated]
1292 #[serde(skip_serializing_if = "Option::is_none")]
1293 pub parent_tool_call_id: Option<String>,
1294 #[serde(skip_serializing_if = "Option::is_none")]
1296 pub provider_call_id: Option<String>,
1297 #[serde(default)]
1299 pub quota_snapshots: HashMap<String, AssistantUsageQuotaSnapshot>,
1300 #[serde(skip_serializing_if = "Option::is_none")]
1302 pub reasoning_effort: Option<String>,
1303 #[serde(skip_serializing_if = "Option::is_none")]
1305 pub reasoning_tokens: Option<i64>,
1306 #[serde(skip_serializing_if = "Option::is_none")]
1308 pub time_to_first_token_ms: Option<i64>,
1309}
1310
1311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1313#[serde(rename_all = "camelCase")]
1314pub struct ModelCallFailureData {
1315 #[serde(skip_serializing_if = "Option::is_none")]
1317 pub api_call_id: Option<String>,
1318 #[serde(skip_serializing_if = "Option::is_none")]
1320 pub duration_ms: Option<i64>,
1321 #[serde(skip_serializing_if = "Option::is_none")]
1323 pub error_message: Option<String>,
1324 #[serde(skip_serializing_if = "Option::is_none")]
1326 pub initiator: Option<String>,
1327 #[serde(skip_serializing_if = "Option::is_none")]
1329 pub model: Option<String>,
1330 #[serde(skip_serializing_if = "Option::is_none")]
1332 pub provider_call_id: Option<String>,
1333 pub source: ModelCallFailureSource,
1335 #[serde(skip_serializing_if = "Option::is_none")]
1337 pub status_code: Option<i32>,
1338}
1339
1340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1342#[serde(rename_all = "camelCase")]
1343pub struct AbortData {
1344 pub reason: AbortReason,
1346}
1347
1348#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1350#[serde(rename_all = "camelCase")]
1351pub struct ToolUserRequestedData {
1352 #[serde(skip_serializing_if = "Option::is_none")]
1354 pub arguments: Option<serde_json::Value>,
1355 pub tool_call_id: String,
1357 pub tool_name: String,
1359}
1360
1361#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1363#[serde(rename_all = "camelCase")]
1364pub struct ToolExecutionStartData {
1365 #[serde(skip_serializing_if = "Option::is_none")]
1367 pub arguments: Option<serde_json::Value>,
1368 #[serde(skip_serializing_if = "Option::is_none")]
1370 pub mcp_server_name: Option<String>,
1371 #[serde(skip_serializing_if = "Option::is_none")]
1373 pub mcp_tool_name: Option<String>,
1374 #[doc(hidden)]
1376 #[deprecated]
1377 #[serde(skip_serializing_if = "Option::is_none")]
1378 pub parent_tool_call_id: Option<String>,
1379 pub tool_call_id: String,
1381 pub tool_name: String,
1383 #[serde(skip_serializing_if = "Option::is_none")]
1385 pub turn_id: Option<String>,
1386}
1387
1388#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1390#[serde(rename_all = "camelCase")]
1391pub struct ToolExecutionPartialResultData {
1392 pub partial_output: String,
1394 pub tool_call_id: String,
1396}
1397
1398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1400#[serde(rename_all = "camelCase")]
1401pub struct ToolExecutionProgressData {
1402 pub progress_message: String,
1404 pub tool_call_id: String,
1406}
1407
1408#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1410#[serde(rename_all = "camelCase")]
1411pub struct ToolExecutionCompleteError {
1412 #[serde(skip_serializing_if = "Option::is_none")]
1414 pub code: Option<String>,
1415 pub message: String,
1417}
1418
1419#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1421#[serde(rename_all = "camelCase")]
1422pub struct ToolExecutionCompleteContentText {
1423 pub text: String,
1425 pub r#type: ToolExecutionCompleteContentTextType,
1427}
1428
1429#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1431#[serde(rename_all = "camelCase")]
1432pub struct ToolExecutionCompleteContentTerminal {
1433 #[serde(skip_serializing_if = "Option::is_none")]
1435 pub cwd: Option<String>,
1436 #[serde(skip_serializing_if = "Option::is_none")]
1438 pub exit_code: Option<i64>,
1439 pub text: String,
1441 pub r#type: ToolExecutionCompleteContentTerminalType,
1443}
1444
1445#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1447#[serde(rename_all = "camelCase")]
1448pub struct ToolExecutionCompleteContentImage {
1449 pub data: String,
1451 pub mime_type: String,
1453 pub r#type: ToolExecutionCompleteContentImageType,
1455}
1456
1457#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1459#[serde(rename_all = "camelCase")]
1460pub struct ToolExecutionCompleteContentAudio {
1461 pub data: String,
1463 pub mime_type: String,
1465 pub r#type: ToolExecutionCompleteContentAudioType,
1467}
1468
1469#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1471#[serde(rename_all = "camelCase")]
1472pub struct ToolExecutionCompleteContentResourceLinkIcon {
1473 #[serde(skip_serializing_if = "Option::is_none")]
1475 pub mime_type: Option<String>,
1476 #[serde(default)]
1478 pub sizes: Vec<String>,
1479 pub src: String,
1481 #[serde(skip_serializing_if = "Option::is_none")]
1483 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
1484}
1485
1486#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1488#[serde(rename_all = "camelCase")]
1489pub struct ToolExecutionCompleteContentResourceLink {
1490 #[serde(skip_serializing_if = "Option::is_none")]
1492 pub description: Option<String>,
1493 #[serde(default)]
1495 pub icons: Vec<ToolExecutionCompleteContentResourceLinkIcon>,
1496 #[serde(skip_serializing_if = "Option::is_none")]
1498 pub mime_type: Option<String>,
1499 pub name: String,
1501 #[serde(skip_serializing_if = "Option::is_none")]
1503 pub size: Option<i64>,
1504 #[serde(skip_serializing_if = "Option::is_none")]
1506 pub title: Option<String>,
1507 pub r#type: ToolExecutionCompleteContentResourceLinkType,
1509 pub uri: String,
1511}
1512
1513#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1515#[serde(rename_all = "camelCase")]
1516pub struct EmbeddedTextResourceContents {
1517 #[serde(skip_serializing_if = "Option::is_none")]
1519 pub mime_type: Option<String>,
1520 pub text: String,
1522 pub uri: String,
1524}
1525
1526#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1528#[serde(rename_all = "camelCase")]
1529pub struct EmbeddedBlobResourceContents {
1530 pub blob: String,
1532 #[serde(skip_serializing_if = "Option::is_none")]
1534 pub mime_type: Option<String>,
1535 pub uri: String,
1537}
1538
1539#[derive(Debug, Clone, Serialize, Deserialize)]
1541#[serde(rename_all = "camelCase")]
1542pub struct ToolExecutionCompleteContentResource {
1543 pub resource: ToolExecutionCompleteContentResourceDetails,
1545 pub r#type: ToolExecutionCompleteContentResourceType,
1547}
1548
1549#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1551#[serde(rename_all = "camelCase")]
1552pub struct ToolExecutionCompleteResult {
1553 pub content: String,
1555 #[serde(default)]
1557 pub contents: Vec<ToolExecutionCompleteContent>,
1558 #[serde(skip_serializing_if = "Option::is_none")]
1560 pub detailed_content: Option<String>,
1561}
1562
1563#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1565#[serde(rename_all = "camelCase")]
1566pub struct ToolExecutionCompleteData {
1567 #[serde(skip_serializing_if = "Option::is_none")]
1569 pub error: Option<ToolExecutionCompleteError>,
1570 #[serde(skip_serializing_if = "Option::is_none")]
1572 pub interaction_id: Option<String>,
1573 #[serde(skip_serializing_if = "Option::is_none")]
1575 pub is_user_requested: Option<bool>,
1576 #[serde(skip_serializing_if = "Option::is_none")]
1578 pub model: Option<String>,
1579 #[doc(hidden)]
1581 #[deprecated]
1582 #[serde(skip_serializing_if = "Option::is_none")]
1583 pub parent_tool_call_id: Option<String>,
1584 #[serde(skip_serializing_if = "Option::is_none")]
1586 pub result: Option<ToolExecutionCompleteResult>,
1587 pub success: bool,
1589 pub tool_call_id: String,
1591 #[serde(default)]
1593 pub tool_telemetry: HashMap<String, serde_json::Value>,
1594 #[serde(skip_serializing_if = "Option::is_none")]
1596 pub turn_id: Option<String>,
1597}
1598
1599#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1601#[serde(rename_all = "camelCase")]
1602pub struct SkillInvokedData {
1603 #[serde(default)]
1605 pub allowed_tools: Vec<String>,
1606 pub content: String,
1608 #[serde(skip_serializing_if = "Option::is_none")]
1610 pub description: Option<String>,
1611 pub name: String,
1613 pub path: String,
1615 #[serde(skip_serializing_if = "Option::is_none")]
1617 pub plugin_name: Option<String>,
1618 #[serde(skip_serializing_if = "Option::is_none")]
1620 pub plugin_version: Option<String>,
1621}
1622
1623#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1625#[serde(rename_all = "camelCase")]
1626pub struct SubagentStartedData {
1627 pub agent_description: String,
1629 pub agent_display_name: String,
1631 pub agent_name: String,
1633 #[serde(skip_serializing_if = "Option::is_none")]
1635 pub model: Option<String>,
1636 pub tool_call_id: String,
1638}
1639
1640#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1642#[serde(rename_all = "camelCase")]
1643pub struct SubagentCompletedData {
1644 pub agent_display_name: String,
1646 pub agent_name: String,
1648 #[serde(skip_serializing_if = "Option::is_none")]
1650 pub duration_ms: Option<i64>,
1651 #[serde(skip_serializing_if = "Option::is_none")]
1653 pub model: Option<String>,
1654 pub tool_call_id: String,
1656 #[serde(skip_serializing_if = "Option::is_none")]
1658 pub total_tokens: Option<i64>,
1659 #[serde(skip_serializing_if = "Option::is_none")]
1661 pub total_tool_calls: Option<i64>,
1662}
1663
1664#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1666#[serde(rename_all = "camelCase")]
1667pub struct SubagentFailedData {
1668 pub agent_display_name: String,
1670 pub agent_name: String,
1672 #[serde(skip_serializing_if = "Option::is_none")]
1674 pub duration_ms: Option<i64>,
1675 pub error: String,
1677 #[serde(skip_serializing_if = "Option::is_none")]
1679 pub model: Option<String>,
1680 pub tool_call_id: String,
1682 #[serde(skip_serializing_if = "Option::is_none")]
1684 pub total_tokens: Option<i64>,
1685 #[serde(skip_serializing_if = "Option::is_none")]
1687 pub total_tool_calls: Option<i64>,
1688}
1689
1690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1692#[serde(rename_all = "camelCase")]
1693pub struct SubagentSelectedData {
1694 pub agent_display_name: String,
1696 pub agent_name: String,
1698 pub tools: Vec<String>,
1700}
1701
1702#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1704#[serde(rename_all = "camelCase")]
1705pub struct SubagentDeselectedData {}
1706
1707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1709#[serde(rename_all = "camelCase")]
1710pub struct HookStartData {
1711 pub hook_invocation_id: String,
1713 pub hook_type: String,
1715 #[serde(skip_serializing_if = "Option::is_none")]
1717 pub input: Option<serde_json::Value>,
1718}
1719
1720#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1722#[serde(rename_all = "camelCase")]
1723pub struct HookEndError {
1724 pub message: String,
1726 #[serde(skip_serializing_if = "Option::is_none")]
1728 pub stack: Option<String>,
1729}
1730
1731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1733#[serde(rename_all = "camelCase")]
1734pub struct HookEndData {
1735 #[serde(skip_serializing_if = "Option::is_none")]
1737 pub error: Option<HookEndError>,
1738 pub hook_invocation_id: String,
1740 pub hook_type: String,
1742 #[serde(skip_serializing_if = "Option::is_none")]
1744 pub output: Option<serde_json::Value>,
1745 pub success: bool,
1747}
1748
1749#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1751#[serde(rename_all = "camelCase")]
1752pub struct SystemMessageMetadata {
1753 #[serde(skip_serializing_if = "Option::is_none")]
1755 pub prompt_version: Option<String>,
1756 #[serde(default)]
1758 pub variables: HashMap<String, serde_json::Value>,
1759}
1760
1761#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1763#[serde(rename_all = "camelCase")]
1764pub struct SystemMessageData {
1765 pub content: String,
1767 #[serde(skip_serializing_if = "Option::is_none")]
1769 pub metadata: Option<SystemMessageMetadata>,
1770 #[serde(skip_serializing_if = "Option::is_none")]
1772 pub name: Option<String>,
1773 pub role: SystemMessageRole,
1775}
1776
1777#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1779#[serde(rename_all = "camelCase")]
1780pub struct SystemNotificationData {
1781 pub content: String,
1783 pub kind: serde_json::Value,
1785}
1786
1787#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1789#[serde(rename_all = "camelCase")]
1790pub struct PermissionRequestShellCommand {
1791 pub identifier: String,
1793 pub read_only: bool,
1795}
1796
1797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1799#[serde(rename_all = "camelCase")]
1800pub struct PermissionRequestShellPossibleUrl {
1801 pub url: String,
1803}
1804
1805#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1807#[serde(rename_all = "camelCase")]
1808pub struct PermissionRequestShell {
1809 pub can_offer_session_approval: bool,
1811 pub commands: Vec<PermissionRequestShellCommand>,
1813 pub full_command_text: String,
1815 pub has_write_file_redirection: bool,
1817 pub intention: String,
1819 pub kind: PermissionRequestShellKind,
1821 pub possible_paths: Vec<String>,
1823 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
1825 #[serde(skip_serializing_if = "Option::is_none")]
1827 pub tool_call_id: Option<String>,
1828 #[serde(skip_serializing_if = "Option::is_none")]
1830 pub warning: Option<String>,
1831}
1832
1833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1835#[serde(rename_all = "camelCase")]
1836pub struct PermissionRequestWrite {
1837 pub can_offer_session_approval: bool,
1839 pub diff: String,
1841 pub file_name: String,
1843 pub intention: String,
1845 pub kind: PermissionRequestWriteKind,
1847 #[serde(skip_serializing_if = "Option::is_none")]
1849 pub new_file_contents: Option<String>,
1850 #[serde(skip_serializing_if = "Option::is_none")]
1852 pub tool_call_id: Option<String>,
1853}
1854
1855#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1857#[serde(rename_all = "camelCase")]
1858pub struct PermissionRequestRead {
1859 pub intention: String,
1861 pub kind: PermissionRequestReadKind,
1863 pub path: String,
1865 #[serde(skip_serializing_if = "Option::is_none")]
1867 pub tool_call_id: Option<String>,
1868}
1869
1870#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1872#[serde(rename_all = "camelCase")]
1873pub struct PermissionRequestMcp {
1874 #[serde(skip_serializing_if = "Option::is_none")]
1876 pub args: Option<serde_json::Value>,
1877 pub kind: PermissionRequestMcpKind,
1879 pub read_only: bool,
1881 pub server_name: String,
1883 #[serde(skip_serializing_if = "Option::is_none")]
1885 pub tool_call_id: Option<String>,
1886 pub tool_name: String,
1888 pub tool_title: String,
1890}
1891
1892#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1894#[serde(rename_all = "camelCase")]
1895pub struct PermissionRequestUrl {
1896 pub intention: String,
1898 pub kind: PermissionRequestUrlKind,
1900 #[serde(skip_serializing_if = "Option::is_none")]
1902 pub tool_call_id: Option<String>,
1903 pub url: String,
1905}
1906
1907#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1909#[serde(rename_all = "camelCase")]
1910pub struct PermissionRequestMemory {
1911 #[serde(skip_serializing_if = "Option::is_none")]
1913 pub action: Option<PermissionRequestMemoryAction>,
1914 #[serde(skip_serializing_if = "Option::is_none")]
1916 pub citations: Option<String>,
1917 #[serde(skip_serializing_if = "Option::is_none")]
1919 pub direction: Option<PermissionRequestMemoryDirection>,
1920 pub fact: String,
1922 pub kind: PermissionRequestMemoryKind,
1924 #[serde(skip_serializing_if = "Option::is_none")]
1926 pub reason: Option<String>,
1927 #[serde(skip_serializing_if = "Option::is_none")]
1929 pub subject: Option<String>,
1930 #[serde(skip_serializing_if = "Option::is_none")]
1932 pub tool_call_id: Option<String>,
1933}
1934
1935#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1937#[serde(rename_all = "camelCase")]
1938pub struct PermissionRequestCustomTool {
1939 #[serde(skip_serializing_if = "Option::is_none")]
1941 pub args: Option<serde_json::Value>,
1942 pub kind: PermissionRequestCustomToolKind,
1944 #[serde(skip_serializing_if = "Option::is_none")]
1946 pub tool_call_id: Option<String>,
1947 pub tool_description: String,
1949 pub tool_name: String,
1951}
1952
1953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1955#[serde(rename_all = "camelCase")]
1956pub struct PermissionRequestHook {
1957 #[serde(skip_serializing_if = "Option::is_none")]
1959 pub hook_message: Option<String>,
1960 pub kind: PermissionRequestHookKind,
1962 #[serde(skip_serializing_if = "Option::is_none")]
1964 pub tool_args: Option<serde_json::Value>,
1965 #[serde(skip_serializing_if = "Option::is_none")]
1967 pub tool_call_id: Option<String>,
1968 pub tool_name: String,
1970}
1971
1972#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1974#[serde(rename_all = "camelCase")]
1975pub struct PermissionRequestExtensionManagement {
1976 #[serde(skip_serializing_if = "Option::is_none")]
1978 pub extension_name: Option<String>,
1979 pub kind: PermissionRequestExtensionManagementKind,
1981 pub operation: String,
1983 #[serde(skip_serializing_if = "Option::is_none")]
1985 pub tool_call_id: Option<String>,
1986}
1987
1988#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1990#[serde(rename_all = "camelCase")]
1991pub struct PermissionRequestExtensionPermissionAccess {
1992 pub capabilities: Vec<String>,
1994 pub extension_name: String,
1996 pub kind: PermissionRequestExtensionPermissionAccessKind,
1998 #[serde(skip_serializing_if = "Option::is_none")]
2000 pub tool_call_id: Option<String>,
2001}
2002
2003#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2005#[serde(rename_all = "camelCase")]
2006pub struct PermissionPromptRequestCommands {
2007 pub can_offer_session_approval: bool,
2009 pub command_identifiers: Vec<String>,
2011 pub full_command_text: String,
2013 pub intention: String,
2015 pub kind: PermissionPromptRequestCommandsKind,
2017 #[serde(skip_serializing_if = "Option::is_none")]
2019 pub tool_call_id: Option<String>,
2020 #[serde(skip_serializing_if = "Option::is_none")]
2022 pub warning: Option<String>,
2023}
2024
2025#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2027#[serde(rename_all = "camelCase")]
2028pub struct PermissionPromptRequestWrite {
2029 pub can_offer_session_approval: bool,
2031 pub diff: String,
2033 pub file_name: String,
2035 pub intention: String,
2037 pub kind: PermissionPromptRequestWriteKind,
2039 #[serde(skip_serializing_if = "Option::is_none")]
2041 pub new_file_contents: Option<String>,
2042 #[serde(skip_serializing_if = "Option::is_none")]
2044 pub tool_call_id: Option<String>,
2045}
2046
2047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2049#[serde(rename_all = "camelCase")]
2050pub struct PermissionPromptRequestRead {
2051 pub intention: String,
2053 pub kind: PermissionPromptRequestReadKind,
2055 pub path: String,
2057 #[serde(skip_serializing_if = "Option::is_none")]
2059 pub tool_call_id: Option<String>,
2060}
2061
2062#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2064#[serde(rename_all = "camelCase")]
2065pub struct PermissionPromptRequestMcp {
2066 #[serde(skip_serializing_if = "Option::is_none")]
2068 pub args: Option<serde_json::Value>,
2069 pub kind: PermissionPromptRequestMcpKind,
2071 pub server_name: String,
2073 #[serde(skip_serializing_if = "Option::is_none")]
2075 pub tool_call_id: Option<String>,
2076 pub tool_name: String,
2078 pub tool_title: String,
2080}
2081
2082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2084#[serde(rename_all = "camelCase")]
2085pub struct PermissionPromptRequestUrl {
2086 pub intention: String,
2088 pub kind: PermissionPromptRequestUrlKind,
2090 #[serde(skip_serializing_if = "Option::is_none")]
2092 pub tool_call_id: Option<String>,
2093 pub url: String,
2095}
2096
2097#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2099#[serde(rename_all = "camelCase")]
2100pub struct PermissionPromptRequestMemory {
2101 #[serde(skip_serializing_if = "Option::is_none")]
2103 pub action: Option<PermissionRequestMemoryAction>,
2104 #[serde(skip_serializing_if = "Option::is_none")]
2106 pub citations: Option<String>,
2107 #[serde(skip_serializing_if = "Option::is_none")]
2109 pub direction: Option<PermissionRequestMemoryDirection>,
2110 pub fact: String,
2112 pub kind: PermissionPromptRequestMemoryKind,
2114 #[serde(skip_serializing_if = "Option::is_none")]
2116 pub reason: Option<String>,
2117 #[serde(skip_serializing_if = "Option::is_none")]
2119 pub subject: Option<String>,
2120 #[serde(skip_serializing_if = "Option::is_none")]
2122 pub tool_call_id: Option<String>,
2123}
2124
2125#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2127#[serde(rename_all = "camelCase")]
2128pub struct PermissionPromptRequestCustomTool {
2129 #[serde(skip_serializing_if = "Option::is_none")]
2131 pub args: Option<serde_json::Value>,
2132 pub kind: PermissionPromptRequestCustomToolKind,
2134 #[serde(skip_serializing_if = "Option::is_none")]
2136 pub tool_call_id: Option<String>,
2137 pub tool_description: String,
2139 pub tool_name: String,
2141}
2142
2143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2145#[serde(rename_all = "camelCase")]
2146pub struct PermissionPromptRequestPath {
2147 pub access_kind: PermissionPromptRequestPathAccessKind,
2149 pub kind: PermissionPromptRequestPathKind,
2151 pub paths: Vec<String>,
2153 #[serde(skip_serializing_if = "Option::is_none")]
2155 pub tool_call_id: Option<String>,
2156}
2157
2158#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2160#[serde(rename_all = "camelCase")]
2161pub struct PermissionPromptRequestHook {
2162 #[serde(skip_serializing_if = "Option::is_none")]
2164 pub hook_message: Option<String>,
2165 pub kind: PermissionPromptRequestHookKind,
2167 #[serde(skip_serializing_if = "Option::is_none")]
2169 pub tool_args: Option<serde_json::Value>,
2170 #[serde(skip_serializing_if = "Option::is_none")]
2172 pub tool_call_id: Option<String>,
2173 pub tool_name: String,
2175}
2176
2177#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2179#[serde(rename_all = "camelCase")]
2180pub struct PermissionPromptRequestExtensionManagement {
2181 #[serde(skip_serializing_if = "Option::is_none")]
2183 pub extension_name: Option<String>,
2184 pub kind: PermissionPromptRequestExtensionManagementKind,
2186 pub operation: String,
2188 #[serde(skip_serializing_if = "Option::is_none")]
2190 pub tool_call_id: Option<String>,
2191}
2192
2193#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2195#[serde(rename_all = "camelCase")]
2196pub struct PermissionPromptRequestExtensionPermissionAccess {
2197 pub capabilities: Vec<String>,
2199 pub extension_name: String,
2201 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
2203 #[serde(skip_serializing_if = "Option::is_none")]
2205 pub tool_call_id: Option<String>,
2206}
2207
2208#[derive(Debug, Clone, Serialize, Deserialize)]
2210#[serde(rename_all = "camelCase")]
2211pub struct PermissionRequestedData {
2212 pub permission_request: PermissionRequest,
2214 #[serde(skip_serializing_if = "Option::is_none")]
2216 pub prompt_request: Option<PermissionPromptRequest>,
2217 pub request_id: RequestId,
2219 #[serde(skip_serializing_if = "Option::is_none")]
2221 pub resolved_by_hook: Option<bool>,
2222}
2223
2224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2226#[serde(rename_all = "camelCase")]
2227pub struct PermissionApproved {
2228 pub kind: PermissionApprovedKind,
2230}
2231
2232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2234#[serde(rename_all = "camelCase")]
2235pub struct UserToolSessionApprovalCommands {
2236 pub command_identifiers: Vec<String>,
2238 pub kind: UserToolSessionApprovalCommandsKind,
2240}
2241
2242#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2244#[serde(rename_all = "camelCase")]
2245pub struct UserToolSessionApprovalRead {
2246 pub kind: UserToolSessionApprovalReadKind,
2248}
2249
2250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2252#[serde(rename_all = "camelCase")]
2253pub struct UserToolSessionApprovalWrite {
2254 pub kind: UserToolSessionApprovalWriteKind,
2256}
2257
2258#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2260#[serde(rename_all = "camelCase")]
2261pub struct UserToolSessionApprovalMcp {
2262 pub kind: UserToolSessionApprovalMcpKind,
2264 pub server_name: String,
2266 pub tool_name: Option<String>,
2268}
2269
2270#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2272#[serde(rename_all = "camelCase")]
2273pub struct UserToolSessionApprovalMemory {
2274 pub kind: UserToolSessionApprovalMemoryKind,
2276}
2277
2278#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2280#[serde(rename_all = "camelCase")]
2281pub struct UserToolSessionApprovalCustomTool {
2282 pub kind: UserToolSessionApprovalCustomToolKind,
2284 pub tool_name: String,
2286}
2287
2288#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2290#[serde(rename_all = "camelCase")]
2291pub struct UserToolSessionApprovalExtensionManagement {
2292 pub kind: UserToolSessionApprovalExtensionManagementKind,
2294 #[serde(skip_serializing_if = "Option::is_none")]
2296 pub operation: Option<String>,
2297}
2298
2299#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2301#[serde(rename_all = "camelCase")]
2302pub struct UserToolSessionApprovalExtensionPermissionAccess {
2303 pub extension_name: String,
2305 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
2307}
2308
2309#[derive(Debug, Clone, Serialize, Deserialize)]
2311#[serde(rename_all = "camelCase")]
2312pub struct PermissionApprovedForSession {
2313 pub approval: UserToolSessionApproval,
2315 pub kind: PermissionApprovedForSessionKind,
2317}
2318
2319#[derive(Debug, Clone, Serialize, Deserialize)]
2321#[serde(rename_all = "camelCase")]
2322pub struct PermissionApprovedForLocation {
2323 pub approval: UserToolSessionApproval,
2325 pub kind: PermissionApprovedForLocationKind,
2327 pub location_key: String,
2329}
2330
2331#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2333#[serde(rename_all = "camelCase")]
2334pub struct PermissionCancelled {
2335 pub kind: PermissionCancelledKind,
2337 #[serde(skip_serializing_if = "Option::is_none")]
2339 pub reason: Option<String>,
2340}
2341
2342#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2344#[serde(rename_all = "camelCase")]
2345pub struct PermissionRule {
2346 pub argument: Option<String>,
2348 pub kind: String,
2350}
2351
2352#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2354#[serde(rename_all = "camelCase")]
2355pub struct PermissionDeniedByRules {
2356 pub kind: PermissionDeniedByRulesKind,
2358 pub rules: Vec<PermissionRule>,
2360}
2361
2362#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2364#[serde(rename_all = "camelCase")]
2365pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
2366 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
2368}
2369
2370#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2372#[serde(rename_all = "camelCase")]
2373pub struct PermissionDeniedInteractivelyByUser {
2374 #[serde(skip_serializing_if = "Option::is_none")]
2376 pub feedback: Option<String>,
2377 #[serde(skip_serializing_if = "Option::is_none")]
2379 pub force_reject: Option<bool>,
2380 pub kind: PermissionDeniedInteractivelyByUserKind,
2382}
2383
2384#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2386#[serde(rename_all = "camelCase")]
2387pub struct PermissionDeniedByContentExclusionPolicy {
2388 pub kind: PermissionDeniedByContentExclusionPolicyKind,
2390 pub message: String,
2392 pub path: String,
2394}
2395
2396#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2398#[serde(rename_all = "camelCase")]
2399pub struct PermissionDeniedByPermissionRequestHook {
2400 #[serde(skip_serializing_if = "Option::is_none")]
2402 pub interrupt: Option<bool>,
2403 pub kind: PermissionDeniedByPermissionRequestHookKind,
2405 #[serde(skip_serializing_if = "Option::is_none")]
2407 pub message: Option<String>,
2408}
2409
2410#[derive(Debug, Clone, Serialize, Deserialize)]
2412#[serde(rename_all = "camelCase")]
2413pub struct PermissionCompletedData {
2414 pub request_id: RequestId,
2416 pub result: PermissionResult,
2418 #[serde(skip_serializing_if = "Option::is_none")]
2420 pub tool_call_id: Option<String>,
2421}
2422
2423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2425#[serde(rename_all = "camelCase")]
2426pub struct UserInputRequestedData {
2427 #[serde(skip_serializing_if = "Option::is_none")]
2429 pub allow_freeform: Option<bool>,
2430 #[serde(default)]
2432 pub choices: Vec<String>,
2433 pub question: String,
2435 pub request_id: RequestId,
2437 #[serde(skip_serializing_if = "Option::is_none")]
2439 pub tool_call_id: Option<String>,
2440}
2441
2442#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2444#[serde(rename_all = "camelCase")]
2445pub struct UserInputCompletedData {
2446 #[serde(skip_serializing_if = "Option::is_none")]
2448 pub answer: Option<String>,
2449 pub request_id: RequestId,
2451 #[serde(skip_serializing_if = "Option::is_none")]
2453 pub was_freeform: Option<bool>,
2454}
2455
2456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2458#[serde(rename_all = "camelCase")]
2459pub struct ElicitationRequestedSchema {
2460 pub properties: HashMap<String, serde_json::Value>,
2462 #[serde(default)]
2464 pub required: Vec<String>,
2465 pub r#type: ElicitationRequestedSchemaType,
2467}
2468
2469#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2471#[serde(rename_all = "camelCase")]
2472pub struct ElicitationRequestedData {
2473 #[serde(skip_serializing_if = "Option::is_none")]
2475 pub elicitation_source: Option<String>,
2476 pub message: String,
2478 #[serde(skip_serializing_if = "Option::is_none")]
2480 pub mode: Option<ElicitationRequestedMode>,
2481 #[serde(skip_serializing_if = "Option::is_none")]
2483 pub requested_schema: Option<ElicitationRequestedSchema>,
2484 pub request_id: RequestId,
2486 #[serde(skip_serializing_if = "Option::is_none")]
2488 pub tool_call_id: Option<String>,
2489 #[serde(skip_serializing_if = "Option::is_none")]
2491 pub url: Option<String>,
2492}
2493
2494#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2496#[serde(rename_all = "camelCase")]
2497pub struct ElicitationCompletedData {
2498 #[serde(skip_serializing_if = "Option::is_none")]
2500 pub action: Option<ElicitationCompletedAction>,
2501 #[serde(default)]
2503 pub content: HashMap<String, serde_json::Value>,
2504 pub request_id: RequestId,
2506}
2507
2508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2510#[serde(rename_all = "camelCase")]
2511pub struct SamplingRequestedData {
2512 pub mcp_request_id: serde_json::Value,
2514 pub request_id: RequestId,
2516 pub server_name: String,
2518}
2519
2520#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2522#[serde(rename_all = "camelCase")]
2523pub struct SamplingCompletedData {
2524 pub request_id: RequestId,
2526}
2527
2528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2530#[serde(rename_all = "camelCase")]
2531pub struct McpOauthRequiredStaticClientConfig {
2532 pub client_id: String,
2534 #[serde(skip_serializing_if = "Option::is_none")]
2536 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
2537 #[serde(skip_serializing_if = "Option::is_none")]
2539 pub public_client: Option<bool>,
2540}
2541
2542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2544#[serde(rename_all = "camelCase")]
2545pub struct McpOauthRequiredData {
2546 pub request_id: RequestId,
2548 pub server_name: String,
2550 pub server_url: String,
2552 #[serde(skip_serializing_if = "Option::is_none")]
2554 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
2555}
2556
2557#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2559#[serde(rename_all = "camelCase")]
2560pub struct McpOauthCompletedData {
2561 pub request_id: RequestId,
2563}
2564
2565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2567#[serde(rename_all = "camelCase")]
2568pub struct SessionCustomNotificationData {
2569 pub name: String,
2571 pub payload: serde_json::Value,
2573 pub source: String,
2575 #[serde(default)]
2577 pub subject: HashMap<String, String>,
2578 #[serde(skip_serializing_if = "Option::is_none")]
2580 pub version: Option<i64>,
2581}
2582
2583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2585#[serde(rename_all = "camelCase")]
2586pub struct ExternalToolRequestedData {
2587 #[serde(skip_serializing_if = "Option::is_none")]
2589 pub arguments: Option<serde_json::Value>,
2590 pub request_id: RequestId,
2592 pub session_id: SessionId,
2594 pub tool_call_id: String,
2596 pub tool_name: String,
2598 #[serde(skip_serializing_if = "Option::is_none")]
2600 pub traceparent: Option<String>,
2601 #[serde(skip_serializing_if = "Option::is_none")]
2603 pub tracestate: Option<String>,
2604}
2605
2606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2608#[serde(rename_all = "camelCase")]
2609pub struct ExternalToolCompletedData {
2610 pub request_id: RequestId,
2612}
2613
2614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2616#[serde(rename_all = "camelCase")]
2617pub struct CommandQueuedData {
2618 pub command: String,
2620 pub request_id: RequestId,
2622}
2623
2624#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2626#[serde(rename_all = "camelCase")]
2627pub struct CommandExecuteData {
2628 pub args: String,
2630 pub command: String,
2632 pub command_name: String,
2634 pub request_id: RequestId,
2636}
2637
2638#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2640#[serde(rename_all = "camelCase")]
2641pub struct CommandCompletedData {
2642 pub request_id: RequestId,
2644}
2645
2646#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2648#[serde(rename_all = "camelCase")]
2649pub struct AutoModeSwitchRequestedData {
2650 #[serde(skip_serializing_if = "Option::is_none")]
2652 pub error_code: Option<String>,
2653 pub request_id: RequestId,
2655 #[serde(skip_serializing_if = "Option::is_none")]
2657 pub retry_after_seconds: Option<i64>,
2658}
2659
2660#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2662#[serde(rename_all = "camelCase")]
2663pub struct AutoModeSwitchCompletedData {
2664 pub request_id: RequestId,
2666 pub response: AutoModeSwitchResponse,
2668}
2669
2670#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2672#[serde(rename_all = "camelCase")]
2673pub struct CommandsChangedCommand {
2674 #[serde(skip_serializing_if = "Option::is_none")]
2676 pub description: Option<String>,
2677 pub name: String,
2679}
2680
2681#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2683#[serde(rename_all = "camelCase")]
2684pub struct CommandsChangedData {
2685 pub commands: Vec<CommandsChangedCommand>,
2687}
2688
2689#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2691#[serde(rename_all = "camelCase")]
2692pub struct CapabilitiesChangedUI {
2693 #[serde(skip_serializing_if = "Option::is_none")]
2695 pub elicitation: Option<bool>,
2696}
2697
2698#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2700#[serde(rename_all = "camelCase")]
2701pub struct CapabilitiesChangedData {
2702 #[serde(skip_serializing_if = "Option::is_none")]
2704 pub ui: Option<CapabilitiesChangedUI>,
2705}
2706
2707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2709#[serde(rename_all = "camelCase")]
2710pub struct ExitPlanModeRequestedData {
2711 pub actions: Vec<ExitPlanModeAction>,
2713 pub plan_content: String,
2715 pub recommended_action: ExitPlanModeAction,
2717 pub request_id: RequestId,
2719 pub summary: String,
2721}
2722
2723#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2725#[serde(rename_all = "camelCase")]
2726pub struct ExitPlanModeCompletedData {
2727 #[serde(skip_serializing_if = "Option::is_none")]
2729 pub approved: Option<bool>,
2730 #[serde(skip_serializing_if = "Option::is_none")]
2732 pub auto_approve_edits: Option<bool>,
2733 #[serde(skip_serializing_if = "Option::is_none")]
2735 pub feedback: Option<String>,
2736 pub request_id: RequestId,
2738 #[serde(skip_serializing_if = "Option::is_none")]
2740 pub selected_action: Option<ExitPlanModeAction>,
2741}
2742
2743#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2745#[serde(rename_all = "camelCase")]
2746pub struct SessionToolsUpdatedData {
2747 pub model: String,
2749}
2750
2751#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2753#[serde(rename_all = "camelCase")]
2754pub struct SessionBackgroundTasksChangedData {}
2755
2756#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2758#[serde(rename_all = "camelCase")]
2759pub struct SkillsLoadedSkill {
2760 pub description: String,
2762 pub enabled: bool,
2764 pub name: String,
2766 #[serde(skip_serializing_if = "Option::is_none")]
2768 pub path: Option<String>,
2769 pub source: SkillSource,
2771 pub user_invocable: bool,
2773}
2774
2775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2777#[serde(rename_all = "camelCase")]
2778pub struct SessionSkillsLoadedData {
2779 pub skills: Vec<SkillsLoadedSkill>,
2781}
2782
2783#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2785#[serde(rename_all = "camelCase")]
2786pub struct CustomAgentsUpdatedAgent {
2787 pub description: String,
2789 pub display_name: String,
2791 pub id: String,
2793 #[serde(skip_serializing_if = "Option::is_none")]
2795 pub model: Option<String>,
2796 pub name: String,
2798 pub source: String,
2800 pub tools: Vec<String>,
2802 pub user_invocable: bool,
2804}
2805
2806#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2808#[serde(rename_all = "camelCase")]
2809pub struct SessionCustomAgentsUpdatedData {
2810 pub agents: Vec<CustomAgentsUpdatedAgent>,
2812 pub errors: Vec<String>,
2814 pub warnings: Vec<String>,
2816}
2817
2818#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2820#[serde(rename_all = "camelCase")]
2821pub struct McpServersLoadedServer {
2822 #[serde(skip_serializing_if = "Option::is_none")]
2824 pub error: Option<String>,
2825 pub name: String,
2827 #[serde(skip_serializing_if = "Option::is_none")]
2829 pub source: Option<McpServerSource>,
2830 pub status: McpServerStatus,
2832}
2833
2834#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2836#[serde(rename_all = "camelCase")]
2837pub struct SessionMcpServersLoadedData {
2838 pub servers: Vec<McpServersLoadedServer>,
2840}
2841
2842#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2844#[serde(rename_all = "camelCase")]
2845pub struct SessionMcpServerStatusChangedData {
2846 pub server_name: String,
2848 pub status: McpServerStatus,
2850}
2851
2852#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2854#[serde(rename_all = "camelCase")]
2855pub struct ExtensionsLoadedExtension {
2856 pub id: String,
2858 pub name: String,
2860 pub source: ExtensionsLoadedExtensionSource,
2862 pub status: ExtensionsLoadedExtensionStatus,
2864}
2865
2866#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2868#[serde(rename_all = "camelCase")]
2869pub struct SessionExtensionsLoadedData {
2870 pub extensions: Vec<ExtensionsLoadedExtension>,
2872}
2873
2874#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2876pub enum WorkingDirectoryContextHostType {
2877 #[serde(rename = "github")]
2879 Github,
2880 #[serde(rename = "ado")]
2882 Ado,
2883 #[default]
2885 #[serde(other)]
2886 Unknown,
2887}
2888
2889#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2891pub enum ReasoningSummary {
2892 #[serde(rename = "none")]
2894 None,
2895 #[serde(rename = "concise")]
2897 Concise,
2898 #[serde(rename = "detailed")]
2900 Detailed,
2901 #[default]
2903 #[serde(other)]
2904 Unknown,
2905}
2906
2907#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2909pub enum SessionMode {
2910 #[serde(rename = "interactive")]
2912 Interactive,
2913 #[serde(rename = "plan")]
2915 Plan,
2916 #[serde(rename = "autopilot")]
2918 Autopilot,
2919 #[default]
2921 #[serde(other)]
2922 Unknown,
2923}
2924
2925#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2927pub enum PlanChangedOperation {
2928 #[serde(rename = "create")]
2930 Create,
2931 #[serde(rename = "update")]
2933 Update,
2934 #[serde(rename = "delete")]
2936 Delete,
2937 #[default]
2939 #[serde(other)]
2940 Unknown,
2941}
2942
2943#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2945pub enum WorkspaceFileChangedOperation {
2946 #[serde(rename = "create")]
2948 Create,
2949 #[serde(rename = "update")]
2951 Update,
2952 #[default]
2954 #[serde(other)]
2955 Unknown,
2956}
2957
2958#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2960pub enum HandoffSourceType {
2961 #[serde(rename = "remote")]
2963 Remote,
2964 #[serde(rename = "local")]
2966 Local,
2967 #[default]
2969 #[serde(other)]
2970 Unknown,
2971}
2972
2973#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2975pub enum ShutdownType {
2976 #[serde(rename = "routine")]
2978 Routine,
2979 #[serde(rename = "error")]
2981 Error,
2982 #[default]
2984 #[serde(other)]
2985 Unknown,
2986}
2987
2988#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2990pub enum UserMessageAgentMode {
2991 #[serde(rename = "interactive")]
2993 Interactive,
2994 #[serde(rename = "plan")]
2996 Plan,
2997 #[serde(rename = "autopilot")]
2999 Autopilot,
3000 #[serde(rename = "shell")]
3002 Shell,
3003 #[default]
3005 #[serde(other)]
3006 Unknown,
3007}
3008
3009#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3011pub enum AssistantMessageToolRequestType {
3012 #[serde(rename = "function")]
3014 Function,
3015 #[serde(rename = "custom")]
3017 Custom,
3018 #[default]
3020 #[serde(other)]
3021 Unknown,
3022}
3023
3024#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3026pub enum AssistantUsageApiEndpoint {
3027 #[serde(rename = "/chat/completions")]
3029 ChatCompletions,
3030 #[serde(rename = "/v1/messages")]
3032 V1Messages,
3033 #[serde(rename = "/responses")]
3035 Responses,
3036 #[serde(rename = "ws:/responses")]
3038 WsResponses,
3039 #[default]
3041 #[serde(other)]
3042 Unknown,
3043}
3044
3045#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3047pub enum ModelCallFailureSource {
3048 #[serde(rename = "top_level")]
3050 TopLevel,
3051 #[serde(rename = "subagent")]
3053 Subagent,
3054 #[serde(rename = "mcp_sampling")]
3056 McpSampling,
3057 #[default]
3059 #[serde(other)]
3060 Unknown,
3061}
3062
3063#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3065pub enum AbortReason {
3066 #[serde(rename = "user_initiated")]
3068 UserInitiated,
3069 #[serde(rename = "remote_command")]
3071 RemoteCommand,
3072 #[serde(rename = "user_abort")]
3074 UserAbort,
3075 #[default]
3077 #[serde(other)]
3078 Unknown,
3079}
3080
3081#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3083pub enum ToolExecutionCompleteContentTextType {
3084 #[serde(rename = "text")]
3085 #[default]
3086 Text,
3087}
3088
3089#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3091pub enum ToolExecutionCompleteContentTerminalType {
3092 #[serde(rename = "terminal")]
3093 #[default]
3094 Terminal,
3095}
3096
3097#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3099pub enum ToolExecutionCompleteContentImageType {
3100 #[serde(rename = "image")]
3101 #[default]
3102 Image,
3103}
3104
3105#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3107pub enum ToolExecutionCompleteContentAudioType {
3108 #[serde(rename = "audio")]
3109 #[default]
3110 Audio,
3111}
3112
3113#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3115pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
3116 #[serde(rename = "light")]
3118 Light,
3119 #[serde(rename = "dark")]
3121 Dark,
3122 #[default]
3124 #[serde(other)]
3125 Unknown,
3126}
3127
3128#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3130pub enum ToolExecutionCompleteContentResourceLinkType {
3131 #[serde(rename = "resource_link")]
3132 #[default]
3133 ResourceLink,
3134}
3135
3136#[derive(Debug, Clone, Serialize, Deserialize)]
3138#[serde(untagged)]
3139pub enum ToolExecutionCompleteContentResourceDetails {
3140 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
3141 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
3142}
3143
3144#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3146pub enum ToolExecutionCompleteContentResourceType {
3147 #[serde(rename = "resource")]
3148 #[default]
3149 Resource,
3150}
3151
3152#[derive(Debug, Clone, Serialize, Deserialize)]
3154#[serde(untagged)]
3155pub enum ToolExecutionCompleteContent {
3156 Text(ToolExecutionCompleteContentText),
3157 Terminal(ToolExecutionCompleteContentTerminal),
3158 Image(ToolExecutionCompleteContentImage),
3159 Audio(ToolExecutionCompleteContentAudio),
3160 ResourceLink(ToolExecutionCompleteContentResourceLink),
3161 Resource(ToolExecutionCompleteContentResource),
3162}
3163
3164#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3166pub enum SystemMessageRole {
3167 #[serde(rename = "system")]
3169 System,
3170 #[serde(rename = "developer")]
3172 Developer,
3173 #[default]
3175 #[serde(other)]
3176 Unknown,
3177}
3178
3179#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3181pub enum PermissionRequestShellKind {
3182 #[serde(rename = "shell")]
3183 #[default]
3184 Shell,
3185}
3186
3187#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3189pub enum PermissionRequestWriteKind {
3190 #[serde(rename = "write")]
3191 #[default]
3192 Write,
3193}
3194
3195#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3197pub enum PermissionRequestReadKind {
3198 #[serde(rename = "read")]
3199 #[default]
3200 Read,
3201}
3202
3203#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3205pub enum PermissionRequestMcpKind {
3206 #[serde(rename = "mcp")]
3207 #[default]
3208 Mcp,
3209}
3210
3211#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3213pub enum PermissionRequestUrlKind {
3214 #[serde(rename = "url")]
3215 #[default]
3216 Url,
3217}
3218
3219#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3221pub enum PermissionRequestMemoryAction {
3222 #[serde(rename = "store")]
3224 Store,
3225 #[serde(rename = "vote")]
3227 Vote,
3228 #[default]
3230 #[serde(other)]
3231 Unknown,
3232}
3233
3234#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3236pub enum PermissionRequestMemoryDirection {
3237 #[serde(rename = "upvote")]
3239 Upvote,
3240 #[serde(rename = "downvote")]
3242 Downvote,
3243 #[default]
3245 #[serde(other)]
3246 Unknown,
3247}
3248
3249#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3251pub enum PermissionRequestMemoryKind {
3252 #[serde(rename = "memory")]
3253 #[default]
3254 Memory,
3255}
3256
3257#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3259pub enum PermissionRequestCustomToolKind {
3260 #[serde(rename = "custom-tool")]
3261 #[default]
3262 CustomTool,
3263}
3264
3265#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3267pub enum PermissionRequestHookKind {
3268 #[serde(rename = "hook")]
3269 #[default]
3270 Hook,
3271}
3272
3273#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3275pub enum PermissionRequestExtensionManagementKind {
3276 #[serde(rename = "extension-management")]
3277 #[default]
3278 ExtensionManagement,
3279}
3280
3281#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3283pub enum PermissionRequestExtensionPermissionAccessKind {
3284 #[serde(rename = "extension-permission-access")]
3285 #[default]
3286 ExtensionPermissionAccess,
3287}
3288
3289#[derive(Debug, Clone, Serialize, Deserialize)]
3291#[serde(untagged)]
3292pub enum PermissionRequest {
3293 Shell(PermissionRequestShell),
3294 Write(PermissionRequestWrite),
3295 Read(PermissionRequestRead),
3296 Mcp(PermissionRequestMcp),
3297 Url(PermissionRequestUrl),
3298 Memory(PermissionRequestMemory),
3299 CustomTool(PermissionRequestCustomTool),
3300 Hook(PermissionRequestHook),
3301 ExtensionManagement(PermissionRequestExtensionManagement),
3302 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
3303}
3304
3305#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3307pub enum PermissionPromptRequestCommandsKind {
3308 #[serde(rename = "commands")]
3309 #[default]
3310 Commands,
3311}
3312
3313#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3315pub enum PermissionPromptRequestWriteKind {
3316 #[serde(rename = "write")]
3317 #[default]
3318 Write,
3319}
3320
3321#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3323pub enum PermissionPromptRequestReadKind {
3324 #[serde(rename = "read")]
3325 #[default]
3326 Read,
3327}
3328
3329#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3331pub enum PermissionPromptRequestMcpKind {
3332 #[serde(rename = "mcp")]
3333 #[default]
3334 Mcp,
3335}
3336
3337#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3339pub enum PermissionPromptRequestUrlKind {
3340 #[serde(rename = "url")]
3341 #[default]
3342 Url,
3343}
3344
3345#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3347pub enum PermissionPromptRequestMemoryKind {
3348 #[serde(rename = "memory")]
3349 #[default]
3350 Memory,
3351}
3352
3353#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3355pub enum PermissionPromptRequestCustomToolKind {
3356 #[serde(rename = "custom-tool")]
3357 #[default]
3358 CustomTool,
3359}
3360
3361#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3363pub enum PermissionPromptRequestPathAccessKind {
3364 #[serde(rename = "read")]
3366 Read,
3367 #[serde(rename = "shell")]
3369 Shell,
3370 #[serde(rename = "write")]
3372 Write,
3373 #[default]
3375 #[serde(other)]
3376 Unknown,
3377}
3378
3379#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3381pub enum PermissionPromptRequestPathKind {
3382 #[serde(rename = "path")]
3383 #[default]
3384 Path,
3385}
3386
3387#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3389pub enum PermissionPromptRequestHookKind {
3390 #[serde(rename = "hook")]
3391 #[default]
3392 Hook,
3393}
3394
3395#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3397pub enum PermissionPromptRequestExtensionManagementKind {
3398 #[serde(rename = "extension-management")]
3399 #[default]
3400 ExtensionManagement,
3401}
3402
3403#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3405pub enum PermissionPromptRequestExtensionPermissionAccessKind {
3406 #[serde(rename = "extension-permission-access")]
3407 #[default]
3408 ExtensionPermissionAccess,
3409}
3410
3411#[derive(Debug, Clone, Serialize, Deserialize)]
3413#[serde(untagged)]
3414pub enum PermissionPromptRequest {
3415 Commands(PermissionPromptRequestCommands),
3416 Write(PermissionPromptRequestWrite),
3417 Read(PermissionPromptRequestRead),
3418 Mcp(PermissionPromptRequestMcp),
3419 Url(PermissionPromptRequestUrl),
3420 Memory(PermissionPromptRequestMemory),
3421 CustomTool(PermissionPromptRequestCustomTool),
3422 Path(PermissionPromptRequestPath),
3423 Hook(PermissionPromptRequestHook),
3424 ExtensionManagement(PermissionPromptRequestExtensionManagement),
3425 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
3426}
3427
3428#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3430pub enum PermissionApprovedKind {
3431 #[serde(rename = "approved")]
3432 #[default]
3433 Approved,
3434}
3435
3436#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3438pub enum UserToolSessionApprovalCommandsKind {
3439 #[serde(rename = "commands")]
3440 #[default]
3441 Commands,
3442}
3443
3444#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3446pub enum UserToolSessionApprovalReadKind {
3447 #[serde(rename = "read")]
3448 #[default]
3449 Read,
3450}
3451
3452#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3454pub enum UserToolSessionApprovalWriteKind {
3455 #[serde(rename = "write")]
3456 #[default]
3457 Write,
3458}
3459
3460#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3462pub enum UserToolSessionApprovalMcpKind {
3463 #[serde(rename = "mcp")]
3464 #[default]
3465 Mcp,
3466}
3467
3468#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3470pub enum UserToolSessionApprovalMemoryKind {
3471 #[serde(rename = "memory")]
3472 #[default]
3473 Memory,
3474}
3475
3476#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3478pub enum UserToolSessionApprovalCustomToolKind {
3479 #[serde(rename = "custom-tool")]
3480 #[default]
3481 CustomTool,
3482}
3483
3484#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3486pub enum UserToolSessionApprovalExtensionManagementKind {
3487 #[serde(rename = "extension-management")]
3488 #[default]
3489 ExtensionManagement,
3490}
3491
3492#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3494pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
3495 #[serde(rename = "extension-permission-access")]
3496 #[default]
3497 ExtensionPermissionAccess,
3498}
3499
3500#[derive(Debug, Clone, Serialize, Deserialize)]
3502#[serde(untagged)]
3503pub enum UserToolSessionApproval {
3504 Commands(UserToolSessionApprovalCommands),
3505 Read(UserToolSessionApprovalRead),
3506 Write(UserToolSessionApprovalWrite),
3507 Mcp(UserToolSessionApprovalMcp),
3508 Memory(UserToolSessionApprovalMemory),
3509 CustomTool(UserToolSessionApprovalCustomTool),
3510 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
3511 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
3512}
3513
3514#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3516pub enum PermissionApprovedForSessionKind {
3517 #[serde(rename = "approved-for-session")]
3518 #[default]
3519 ApprovedForSession,
3520}
3521
3522#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3524pub enum PermissionApprovedForLocationKind {
3525 #[serde(rename = "approved-for-location")]
3526 #[default]
3527 ApprovedForLocation,
3528}
3529
3530#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3532pub enum PermissionCancelledKind {
3533 #[serde(rename = "cancelled")]
3534 #[default]
3535 Cancelled,
3536}
3537
3538#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3540pub enum PermissionDeniedByRulesKind {
3541 #[serde(rename = "denied-by-rules")]
3542 #[default]
3543 DeniedByRules,
3544}
3545
3546#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3548pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
3549 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
3550 #[default]
3551 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
3552}
3553
3554#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3556pub enum PermissionDeniedInteractivelyByUserKind {
3557 #[serde(rename = "denied-interactively-by-user")]
3558 #[default]
3559 DeniedInteractivelyByUser,
3560}
3561
3562#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3564pub enum PermissionDeniedByContentExclusionPolicyKind {
3565 #[serde(rename = "denied-by-content-exclusion-policy")]
3566 #[default]
3567 DeniedByContentExclusionPolicy,
3568}
3569
3570#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3572pub enum PermissionDeniedByPermissionRequestHookKind {
3573 #[serde(rename = "denied-by-permission-request-hook")]
3574 #[default]
3575 DeniedByPermissionRequestHook,
3576}
3577
3578#[derive(Debug, Clone, Serialize, Deserialize)]
3580#[serde(untagged)]
3581pub enum PermissionResult {
3582 Approved(PermissionApproved),
3583 ApprovedForSession(PermissionApprovedForSession),
3584 ApprovedForLocation(PermissionApprovedForLocation),
3585 Cancelled(PermissionCancelled),
3586 DeniedByRules(PermissionDeniedByRules),
3587 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
3588 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
3589 ),
3590 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
3591 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
3592 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
3593}
3594
3595#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3597pub enum ElicitationRequestedMode {
3598 #[serde(rename = "form")]
3600 Form,
3601 #[serde(rename = "url")]
3603 Url,
3604 #[default]
3606 #[serde(other)]
3607 Unknown,
3608}
3609
3610#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3612pub enum ElicitationRequestedSchemaType {
3613 #[serde(rename = "object")]
3614 #[default]
3615 Object,
3616}
3617
3618#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3620pub enum ElicitationCompletedAction {
3621 #[serde(rename = "accept")]
3623 Accept,
3624 #[serde(rename = "decline")]
3626 Decline,
3627 #[serde(rename = "cancel")]
3629 Cancel,
3630 #[default]
3632 #[serde(other)]
3633 Unknown,
3634}
3635
3636#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3638pub enum McpOauthRequiredStaticClientConfigGrantType {
3639 #[serde(rename = "client_credentials")]
3640 #[default]
3641 ClientCredentials,
3642}
3643
3644#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3646pub enum AutoModeSwitchResponse {
3647 #[serde(rename = "yes")]
3649 Yes,
3650 #[serde(rename = "yes_always")]
3652 YesAlways,
3653 #[serde(rename = "no")]
3655 No,
3656 #[default]
3658 #[serde(other)]
3659 Unknown,
3660}
3661
3662#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3664pub enum ExitPlanModeAction {
3665 #[serde(rename = "exit_only")]
3667 ExitOnly,
3668 #[serde(rename = "interactive")]
3670 Interactive,
3671 #[serde(rename = "autopilot")]
3673 Autopilot,
3674 #[serde(rename = "autopilot_fleet")]
3676 AutopilotFleet,
3677 #[default]
3679 #[serde(other)]
3680 Unknown,
3681}
3682
3683#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3685pub enum SkillSource {
3686 #[serde(rename = "project")]
3688 Project,
3689 #[serde(rename = "inherited")]
3691 Inherited,
3692 #[serde(rename = "personal-copilot")]
3694 PersonalCopilot,
3695 #[serde(rename = "personal-agents")]
3697 PersonalAgents,
3698 #[serde(rename = "plugin")]
3700 Plugin,
3701 #[serde(rename = "custom")]
3703 Custom,
3704 #[serde(rename = "builtin")]
3706 Builtin,
3707 #[default]
3709 #[serde(other)]
3710 Unknown,
3711}
3712
3713#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3715pub enum McpServerSource {
3716 #[serde(rename = "user")]
3718 User,
3719 #[serde(rename = "workspace")]
3721 Workspace,
3722 #[serde(rename = "plugin")]
3724 Plugin,
3725 #[serde(rename = "builtin")]
3727 Builtin,
3728 #[default]
3730 #[serde(other)]
3731 Unknown,
3732}
3733
3734#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3736pub enum McpServerStatus {
3737 #[serde(rename = "connected")]
3739 Connected,
3740 #[serde(rename = "failed")]
3742 Failed,
3743 #[serde(rename = "needs-auth")]
3745 NeedsAuth,
3746 #[serde(rename = "pending")]
3748 Pending,
3749 #[serde(rename = "disabled")]
3751 Disabled,
3752 #[serde(rename = "not_configured")]
3754 NotConfigured,
3755 #[default]
3757 #[serde(other)]
3758 Unknown,
3759}
3760
3761#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3763pub enum ExtensionsLoadedExtensionSource {
3764 #[serde(rename = "project")]
3766 Project,
3767 #[serde(rename = "user")]
3769 User,
3770 #[default]
3772 #[serde(other)]
3773 Unknown,
3774}
3775
3776#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3778pub enum ExtensionsLoadedExtensionStatus {
3779 #[serde(rename = "running")]
3781 Running,
3782 #[serde(rename = "disabled")]
3784 Disabled,
3785 #[serde(rename = "failed")]
3787 Failed,
3788 #[serde(rename = "starting")]
3790 Starting,
3791 #[default]
3793 #[serde(other)]
3794 Unknown,
3795}