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 #[serde(skip_serializing_if = "Option::is_none")]
727 pub cost: Option<f64>,
728 #[serde(skip_serializing_if = "Option::is_none")]
730 pub count: Option<i64>,
731}
732
733#[derive(Debug, Clone, Default, Serialize, Deserialize)]
735#[serde(rename_all = "camelCase")]
736pub struct ShutdownModelMetricTokenDetail {
737 pub token_count: i64,
739}
740
741#[derive(Debug, Clone, Default, Serialize, Deserialize)]
743#[serde(rename_all = "camelCase")]
744pub struct ShutdownModelMetricUsage {
745 pub cache_read_tokens: i64,
747 pub cache_write_tokens: i64,
749 pub input_tokens: i64,
751 pub output_tokens: i64,
753 #[serde(skip_serializing_if = "Option::is_none")]
755 pub reasoning_tokens: Option<i64>,
756}
757
758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
760#[serde(rename_all = "camelCase")]
761pub struct ShutdownModelMetric {
762 pub requests: ShutdownModelMetricRequests,
764 #[serde(default)]
766 pub token_details: HashMap<String, ShutdownModelMetricTokenDetail>,
767 #[serde(skip_serializing_if = "Option::is_none")]
769 pub total_nano_aiu: Option<f64>,
770 pub usage: ShutdownModelMetricUsage,
772}
773
774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
776#[serde(rename_all = "camelCase")]
777pub struct ShutdownTokenDetail {
778 pub token_count: i64,
780}
781
782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
784#[serde(rename_all = "camelCase")]
785pub struct SessionShutdownData {
786 pub code_changes: ShutdownCodeChanges,
788 #[serde(skip_serializing_if = "Option::is_none")]
790 pub conversation_tokens: Option<i64>,
791 #[serde(skip_serializing_if = "Option::is_none")]
793 pub current_model: Option<String>,
794 #[serde(skip_serializing_if = "Option::is_none")]
796 pub current_tokens: Option<i64>,
797 #[serde(skip_serializing_if = "Option::is_none")]
799 pub error_reason: Option<String>,
800 pub model_metrics: HashMap<String, ShutdownModelMetric>,
802 pub session_start_time: i64,
804 pub shutdown_type: ShutdownType,
806 #[serde(skip_serializing_if = "Option::is_none")]
808 pub system_tokens: Option<i64>,
809 #[serde(default)]
811 pub token_details: HashMap<String, ShutdownTokenDetail>,
812 #[serde(skip_serializing_if = "Option::is_none")]
814 pub tool_definitions_tokens: Option<i64>,
815 pub total_api_duration_ms: i64,
817 #[serde(skip_serializing_if = "Option::is_none")]
819 pub total_nano_aiu: Option<f64>,
820 #[serde(skip_serializing_if = "Option::is_none")]
822 pub total_premium_requests: Option<f64>,
823}
824
825#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827#[serde(rename_all = "camelCase")]
828pub struct SessionContextChangedData {
829 #[serde(skip_serializing_if = "Option::is_none")]
831 pub base_commit: Option<String>,
832 #[serde(skip_serializing_if = "Option::is_none")]
834 pub branch: Option<String>,
835 pub cwd: String,
837 #[serde(skip_serializing_if = "Option::is_none")]
839 pub git_root: Option<String>,
840 #[serde(skip_serializing_if = "Option::is_none")]
842 pub head_commit: Option<String>,
843 #[serde(skip_serializing_if = "Option::is_none")]
845 pub host_type: Option<WorkingDirectoryContextHostType>,
846 #[serde(skip_serializing_if = "Option::is_none")]
848 pub repository: Option<String>,
849 #[serde(skip_serializing_if = "Option::is_none")]
851 pub repository_host: Option<String>,
852}
853
854#[derive(Debug, Clone, Default, Serialize, Deserialize)]
856#[serde(rename_all = "camelCase")]
857pub struct SessionUsageInfoData {
858 #[serde(skip_serializing_if = "Option::is_none")]
860 pub conversation_tokens: Option<i64>,
861 pub current_tokens: i64,
863 #[serde(skip_serializing_if = "Option::is_none")]
865 pub is_initial: Option<bool>,
866 pub messages_length: i64,
868 #[serde(skip_serializing_if = "Option::is_none")]
870 pub system_tokens: Option<i64>,
871 pub token_limit: i64,
873 #[serde(skip_serializing_if = "Option::is_none")]
875 pub tool_definitions_tokens: Option<i64>,
876}
877
878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
880#[serde(rename_all = "camelCase")]
881pub struct SessionCompactionStartData {
882 #[serde(skip_serializing_if = "Option::is_none")]
884 pub conversation_tokens: Option<i64>,
885 #[serde(skip_serializing_if = "Option::is_none")]
887 pub system_tokens: Option<i64>,
888 #[serde(skip_serializing_if = "Option::is_none")]
890 pub tool_definitions_tokens: Option<i64>,
891}
892
893#[derive(Debug, Clone, Default, Serialize, Deserialize)]
895#[serde(rename_all = "camelCase")]
896pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
897 pub batch_size: i64,
899 pub cost_per_batch: i64,
901 pub token_count: i64,
903 pub token_type: String,
905}
906
907#[derive(Debug, Clone, Default, Serialize, Deserialize)]
909#[serde(rename_all = "camelCase")]
910pub struct CompactionCompleteCompactionTokensUsedCopilotUsage {
911 pub token_details: Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>,
913 pub total_nano_aiu: f64,
915}
916
917#[derive(Debug, Clone, Default, Serialize, Deserialize)]
919#[serde(rename_all = "camelCase")]
920pub struct CompactionCompleteCompactionTokensUsed {
921 #[serde(skip_serializing_if = "Option::is_none")]
923 pub cache_read_tokens: Option<i64>,
924 #[serde(skip_serializing_if = "Option::is_none")]
926 pub cache_write_tokens: Option<i64>,
927 #[serde(skip_serializing_if = "Option::is_none")]
929 pub copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
930 #[serde(skip_serializing_if = "Option::is_none")]
932 pub duration: Option<i64>,
933 #[serde(skip_serializing_if = "Option::is_none")]
935 pub input_tokens: Option<i64>,
936 #[serde(skip_serializing_if = "Option::is_none")]
938 pub model: Option<String>,
939 #[serde(skip_serializing_if = "Option::is_none")]
941 pub output_tokens: Option<i64>,
942}
943
944#[derive(Debug, Clone, Default, Serialize, Deserialize)]
946#[serde(rename_all = "camelCase")]
947pub struct SessionCompactionCompleteData {
948 #[serde(skip_serializing_if = "Option::is_none")]
950 pub checkpoint_number: Option<i64>,
951 #[serde(skip_serializing_if = "Option::is_none")]
953 pub checkpoint_path: Option<String>,
954 #[serde(skip_serializing_if = "Option::is_none")]
956 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
957 #[serde(skip_serializing_if = "Option::is_none")]
959 pub conversation_tokens: Option<i64>,
960 #[serde(skip_serializing_if = "Option::is_none")]
962 pub custom_instructions: Option<String>,
963 #[serde(skip_serializing_if = "Option::is_none")]
965 pub error: Option<String>,
966 #[serde(skip_serializing_if = "Option::is_none")]
968 pub messages_removed: Option<i64>,
969 #[serde(skip_serializing_if = "Option::is_none")]
971 pub post_compaction_tokens: Option<i64>,
972 #[serde(skip_serializing_if = "Option::is_none")]
974 pub pre_compaction_messages_length: Option<i64>,
975 #[serde(skip_serializing_if = "Option::is_none")]
977 pub pre_compaction_tokens: Option<i64>,
978 #[serde(skip_serializing_if = "Option::is_none")]
980 pub request_id: Option<RequestId>,
981 pub success: bool,
983 #[serde(skip_serializing_if = "Option::is_none")]
985 pub summary_content: Option<String>,
986 #[serde(skip_serializing_if = "Option::is_none")]
988 pub system_tokens: Option<i64>,
989 #[serde(skip_serializing_if = "Option::is_none")]
991 pub tokens_removed: Option<i64>,
992 #[serde(skip_serializing_if = "Option::is_none")]
994 pub tool_definitions_tokens: Option<i64>,
995}
996
997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
999#[serde(rename_all = "camelCase")]
1000pub struct SessionTaskCompleteData {
1001 #[serde(skip_serializing_if = "Option::is_none")]
1003 pub success: Option<bool>,
1004 #[serde(skip_serializing_if = "Option::is_none")]
1006 pub summary: Option<String>,
1007}
1008
1009#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1011#[serde(rename_all = "camelCase")]
1012pub struct UserMessageData {
1013 #[serde(skip_serializing_if = "Option::is_none")]
1015 pub agent_mode: Option<UserMessageAgentMode>,
1016 #[serde(default)]
1018 pub attachments: Vec<serde_json::Value>,
1019 pub content: String,
1021 #[serde(skip_serializing_if = "Option::is_none")]
1023 pub interaction_id: Option<String>,
1024 #[serde(skip_serializing_if = "Option::is_none")]
1026 pub is_autopilot_continuation: Option<bool>,
1027 #[serde(default)]
1029 pub native_document_path_fallback_paths: Vec<String>,
1030 #[serde(skip_serializing_if = "Option::is_none")]
1032 pub parent_agent_task_id: Option<String>,
1033 #[serde(skip_serializing_if = "Option::is_none")]
1035 pub source: Option<String>,
1036 #[serde(default)]
1038 pub supported_native_document_mime_types: Vec<String>,
1039 #[serde(skip_serializing_if = "Option::is_none")]
1041 pub transformed_content: Option<String>,
1042}
1043
1044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1046#[serde(rename_all = "camelCase")]
1047pub struct PendingMessagesModifiedData {}
1048
1049#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1051#[serde(rename_all = "camelCase")]
1052pub struct AssistantTurnStartData {
1053 #[serde(skip_serializing_if = "Option::is_none")]
1055 pub interaction_id: Option<String>,
1056 pub turn_id: String,
1058}
1059
1060#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1062#[serde(rename_all = "camelCase")]
1063pub struct AssistantIntentData {
1064 pub intent: String,
1066}
1067
1068#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1070#[serde(rename_all = "camelCase")]
1071pub struct AssistantReasoningData {
1072 pub content: String,
1074 pub reasoning_id: String,
1076}
1077
1078#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1080#[serde(rename_all = "camelCase")]
1081pub struct AssistantReasoningDeltaData {
1082 pub delta_content: String,
1084 pub reasoning_id: String,
1086}
1087
1088#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1090#[serde(rename_all = "camelCase")]
1091pub struct AssistantStreamingDeltaData {
1092 pub total_response_size_bytes: i64,
1094}
1095
1096#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1098#[serde(rename_all = "camelCase")]
1099pub struct AssistantMessageToolRequest {
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub arguments: Option<serde_json::Value>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub intention_summary: Option<String>,
1106 #[serde(skip_serializing_if = "Option::is_none")]
1108 pub mcp_server_name: Option<String>,
1109 #[serde(skip_serializing_if = "Option::is_none")]
1111 pub mcp_tool_name: Option<String>,
1112 pub name: String,
1114 pub tool_call_id: String,
1116 #[serde(skip_serializing_if = "Option::is_none")]
1118 pub tool_title: Option<String>,
1119 #[serde(skip_serializing_if = "Option::is_none")]
1121 pub r#type: Option<AssistantMessageToolRequestType>,
1122}
1123
1124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1126#[serde(rename_all = "camelCase")]
1127pub struct AssistantMessageData {
1128 #[serde(default)]
1130 pub anthropic_advisor_blocks: Vec<serde_json::Value>,
1131 #[serde(skip_serializing_if = "Option::is_none")]
1133 pub anthropic_advisor_model: Option<String>,
1134 pub content: String,
1136 #[serde(skip_serializing_if = "Option::is_none")]
1138 pub encrypted_content: Option<String>,
1139 #[serde(skip_serializing_if = "Option::is_none")]
1141 pub interaction_id: Option<String>,
1142 pub message_id: String,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub model: Option<String>,
1147 #[serde(skip_serializing_if = "Option::is_none")]
1149 pub output_tokens: Option<i64>,
1150 #[doc(hidden)]
1152 #[deprecated]
1153 #[serde(skip_serializing_if = "Option::is_none")]
1154 pub parent_tool_call_id: Option<String>,
1155 #[serde(skip_serializing_if = "Option::is_none")]
1157 pub phase: Option<String>,
1158 #[serde(skip_serializing_if = "Option::is_none")]
1160 pub reasoning_opaque: Option<String>,
1161 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub reasoning_text: Option<String>,
1164 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub request_id: Option<RequestId>,
1167 #[serde(default)]
1169 pub tool_requests: Vec<AssistantMessageToolRequest>,
1170 #[serde(skip_serializing_if = "Option::is_none")]
1172 pub turn_id: Option<String>,
1173}
1174
1175#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1177#[serde(rename_all = "camelCase")]
1178pub struct AssistantMessageStartData {
1179 pub message_id: String,
1181 #[serde(skip_serializing_if = "Option::is_none")]
1183 pub phase: Option<String>,
1184}
1185
1186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1188#[serde(rename_all = "camelCase")]
1189pub struct AssistantMessageDeltaData {
1190 pub delta_content: String,
1192 pub message_id: String,
1194 #[doc(hidden)]
1196 #[deprecated]
1197 #[serde(skip_serializing_if = "Option::is_none")]
1198 pub parent_tool_call_id: Option<String>,
1199}
1200
1201#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1203#[serde(rename_all = "camelCase")]
1204pub struct AssistantTurnEndData {
1205 pub turn_id: String,
1207}
1208
1209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1211#[serde(rename_all = "camelCase")]
1212pub struct AssistantUsageCopilotUsageTokenDetail {
1213 pub batch_size: i64,
1215 pub cost_per_batch: i64,
1217 pub token_count: i64,
1219 pub token_type: String,
1221}
1222
1223#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1225#[serde(rename_all = "camelCase")]
1226pub struct AssistantUsageCopilotUsage {
1227 pub token_details: Vec<AssistantUsageCopilotUsageTokenDetail>,
1229 pub total_nano_aiu: f64,
1231}
1232
1233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1235#[serde(rename_all = "camelCase")]
1236pub struct AssistantUsageQuotaSnapshot {
1237 pub entitlement_requests: i64,
1239 pub is_unlimited_entitlement: bool,
1241 pub overage: f64,
1243 pub overage_allowed_with_exhausted_quota: bool,
1245 pub remaining_percentage: f64,
1247 #[serde(skip_serializing_if = "Option::is_none")]
1249 pub reset_date: Option<String>,
1250 pub usage_allowed_with_exhausted_quota: bool,
1252 pub used_requests: i64,
1254}
1255
1256#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1258#[serde(rename_all = "camelCase")]
1259pub struct AssistantUsageData {
1260 #[serde(skip_serializing_if = "Option::is_none")]
1262 pub api_call_id: Option<String>,
1263 #[serde(skip_serializing_if = "Option::is_none")]
1265 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1266 #[serde(skip_serializing_if = "Option::is_none")]
1268 pub cache_read_tokens: Option<i64>,
1269 #[serde(skip_serializing_if = "Option::is_none")]
1271 pub cache_write_tokens: Option<i64>,
1272 #[serde(skip_serializing_if = "Option::is_none")]
1274 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1275 #[serde(skip_serializing_if = "Option::is_none")]
1277 pub cost: Option<f64>,
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub duration: Option<i64>,
1281 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub initiator: Option<String>,
1284 #[serde(skip_serializing_if = "Option::is_none")]
1286 pub input_tokens: Option<i64>,
1287 #[serde(skip_serializing_if = "Option::is_none")]
1289 pub inter_token_latency_ms: Option<f64>,
1290 pub model: String,
1292 #[serde(skip_serializing_if = "Option::is_none")]
1294 pub output_tokens: Option<i64>,
1295 #[doc(hidden)]
1297 #[deprecated]
1298 #[serde(skip_serializing_if = "Option::is_none")]
1299 pub parent_tool_call_id: Option<String>,
1300 #[serde(skip_serializing_if = "Option::is_none")]
1302 pub provider_call_id: Option<String>,
1303 #[serde(default)]
1305 pub quota_snapshots: HashMap<String, AssistantUsageQuotaSnapshot>,
1306 #[serde(skip_serializing_if = "Option::is_none")]
1308 pub reasoning_effort: Option<String>,
1309 #[serde(skip_serializing_if = "Option::is_none")]
1311 pub reasoning_tokens: Option<i64>,
1312 #[serde(skip_serializing_if = "Option::is_none")]
1314 pub time_to_first_token_ms: Option<i64>,
1315}
1316
1317#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1319#[serde(rename_all = "camelCase")]
1320pub struct ModelCallFailureData {
1321 #[serde(skip_serializing_if = "Option::is_none")]
1323 pub api_call_id: Option<String>,
1324 #[serde(skip_serializing_if = "Option::is_none")]
1326 pub duration_ms: Option<i64>,
1327 #[serde(skip_serializing_if = "Option::is_none")]
1329 pub error_message: Option<String>,
1330 #[serde(skip_serializing_if = "Option::is_none")]
1332 pub initiator: Option<String>,
1333 #[serde(skip_serializing_if = "Option::is_none")]
1335 pub model: Option<String>,
1336 #[serde(skip_serializing_if = "Option::is_none")]
1338 pub provider_call_id: Option<String>,
1339 pub source: ModelCallFailureSource,
1341 #[serde(skip_serializing_if = "Option::is_none")]
1343 pub status_code: Option<i32>,
1344}
1345
1346#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1348#[serde(rename_all = "camelCase")]
1349pub struct AbortData {
1350 pub reason: AbortReason,
1352}
1353
1354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1356#[serde(rename_all = "camelCase")]
1357pub struct ToolUserRequestedData {
1358 #[serde(skip_serializing_if = "Option::is_none")]
1360 pub arguments: Option<serde_json::Value>,
1361 pub tool_call_id: String,
1363 pub tool_name: String,
1365}
1366
1367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1369#[serde(rename_all = "camelCase")]
1370pub struct ToolExecutionStartData {
1371 #[serde(skip_serializing_if = "Option::is_none")]
1373 pub arguments: Option<serde_json::Value>,
1374 #[serde(skip_serializing_if = "Option::is_none")]
1376 pub mcp_server_name: Option<String>,
1377 #[serde(skip_serializing_if = "Option::is_none")]
1379 pub mcp_tool_name: Option<String>,
1380 #[doc(hidden)]
1382 #[deprecated]
1383 #[serde(skip_serializing_if = "Option::is_none")]
1384 pub parent_tool_call_id: Option<String>,
1385 pub tool_call_id: String,
1387 pub tool_name: String,
1389 #[serde(skip_serializing_if = "Option::is_none")]
1391 pub turn_id: Option<String>,
1392}
1393
1394#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1396#[serde(rename_all = "camelCase")]
1397pub struct ToolExecutionPartialResultData {
1398 pub partial_output: String,
1400 pub tool_call_id: String,
1402}
1403
1404#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1406#[serde(rename_all = "camelCase")]
1407pub struct ToolExecutionProgressData {
1408 pub progress_message: String,
1410 pub tool_call_id: String,
1412}
1413
1414#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1416#[serde(rename_all = "camelCase")]
1417pub struct ToolExecutionCompleteError {
1418 #[serde(skip_serializing_if = "Option::is_none")]
1420 pub code: Option<String>,
1421 pub message: String,
1423}
1424
1425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1427#[serde(rename_all = "camelCase")]
1428pub struct ToolExecutionCompleteContentText {
1429 pub text: String,
1431 pub r#type: ToolExecutionCompleteContentTextType,
1433}
1434
1435#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1437#[serde(rename_all = "camelCase")]
1438pub struct ToolExecutionCompleteContentTerminal {
1439 #[serde(skip_serializing_if = "Option::is_none")]
1441 pub cwd: Option<String>,
1442 #[serde(skip_serializing_if = "Option::is_none")]
1444 pub exit_code: Option<i64>,
1445 pub text: String,
1447 pub r#type: ToolExecutionCompleteContentTerminalType,
1449}
1450
1451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1453#[serde(rename_all = "camelCase")]
1454pub struct ToolExecutionCompleteContentImage {
1455 pub data: String,
1457 pub mime_type: String,
1459 pub r#type: ToolExecutionCompleteContentImageType,
1461}
1462
1463#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1465#[serde(rename_all = "camelCase")]
1466pub struct ToolExecutionCompleteContentAudio {
1467 pub data: String,
1469 pub mime_type: String,
1471 pub r#type: ToolExecutionCompleteContentAudioType,
1473}
1474
1475#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1477#[serde(rename_all = "camelCase")]
1478pub struct ToolExecutionCompleteContentResourceLinkIcon {
1479 #[serde(skip_serializing_if = "Option::is_none")]
1481 pub mime_type: Option<String>,
1482 #[serde(default)]
1484 pub sizes: Vec<String>,
1485 pub src: String,
1487 #[serde(skip_serializing_if = "Option::is_none")]
1489 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
1490}
1491
1492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1494#[serde(rename_all = "camelCase")]
1495pub struct ToolExecutionCompleteContentResourceLink {
1496 #[serde(skip_serializing_if = "Option::is_none")]
1498 pub description: Option<String>,
1499 #[serde(default)]
1501 pub icons: Vec<ToolExecutionCompleteContentResourceLinkIcon>,
1502 #[serde(skip_serializing_if = "Option::is_none")]
1504 pub mime_type: Option<String>,
1505 pub name: String,
1507 #[serde(skip_serializing_if = "Option::is_none")]
1509 pub size: Option<i64>,
1510 #[serde(skip_serializing_if = "Option::is_none")]
1512 pub title: Option<String>,
1513 pub r#type: ToolExecutionCompleteContentResourceLinkType,
1515 pub uri: String,
1517}
1518
1519#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1521#[serde(rename_all = "camelCase")]
1522pub struct EmbeddedTextResourceContents {
1523 #[serde(skip_serializing_if = "Option::is_none")]
1525 pub mime_type: Option<String>,
1526 pub text: String,
1528 pub uri: String,
1530}
1531
1532#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1534#[serde(rename_all = "camelCase")]
1535pub struct EmbeddedBlobResourceContents {
1536 pub blob: String,
1538 #[serde(skip_serializing_if = "Option::is_none")]
1540 pub mime_type: Option<String>,
1541 pub uri: String,
1543}
1544
1545#[derive(Debug, Clone, Serialize, Deserialize)]
1547#[serde(rename_all = "camelCase")]
1548pub struct ToolExecutionCompleteContentResource {
1549 pub resource: ToolExecutionCompleteContentResourceDetails,
1551 pub r#type: ToolExecutionCompleteContentResourceType,
1553}
1554
1555#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1557#[serde(rename_all = "camelCase")]
1558pub struct ToolExecutionCompleteResult {
1559 pub content: String,
1561 #[serde(default)]
1563 pub contents: Vec<ToolExecutionCompleteContent>,
1564 #[serde(skip_serializing_if = "Option::is_none")]
1566 pub detailed_content: Option<String>,
1567}
1568
1569#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1571#[serde(rename_all = "camelCase")]
1572pub struct ToolExecutionCompleteData {
1573 #[serde(skip_serializing_if = "Option::is_none")]
1575 pub error: Option<ToolExecutionCompleteError>,
1576 #[serde(skip_serializing_if = "Option::is_none")]
1578 pub interaction_id: Option<String>,
1579 #[serde(skip_serializing_if = "Option::is_none")]
1581 pub is_user_requested: Option<bool>,
1582 #[serde(skip_serializing_if = "Option::is_none")]
1584 pub model: Option<String>,
1585 #[doc(hidden)]
1587 #[deprecated]
1588 #[serde(skip_serializing_if = "Option::is_none")]
1589 pub parent_tool_call_id: Option<String>,
1590 #[serde(skip_serializing_if = "Option::is_none")]
1592 pub result: Option<ToolExecutionCompleteResult>,
1593 #[serde(skip_serializing_if = "Option::is_none")]
1595 pub sandboxed: Option<bool>,
1596 pub success: bool,
1598 pub tool_call_id: String,
1600 #[serde(default)]
1602 pub tool_telemetry: HashMap<String, serde_json::Value>,
1603 #[serde(skip_serializing_if = "Option::is_none")]
1605 pub turn_id: Option<String>,
1606}
1607
1608#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1610#[serde(rename_all = "camelCase")]
1611pub struct SkillInvokedData {
1612 #[serde(default)]
1614 pub allowed_tools: Vec<String>,
1615 pub content: String,
1617 #[serde(skip_serializing_if = "Option::is_none")]
1619 pub description: Option<String>,
1620 pub name: String,
1622 pub path: String,
1624 #[serde(skip_serializing_if = "Option::is_none")]
1626 pub plugin_name: Option<String>,
1627 #[serde(skip_serializing_if = "Option::is_none")]
1629 pub plugin_version: Option<String>,
1630}
1631
1632#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1634#[serde(rename_all = "camelCase")]
1635pub struct SubagentStartedData {
1636 pub agent_description: String,
1638 pub agent_display_name: String,
1640 pub agent_name: String,
1642 #[serde(skip_serializing_if = "Option::is_none")]
1644 pub model: Option<String>,
1645 pub tool_call_id: String,
1647}
1648
1649#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1651#[serde(rename_all = "camelCase")]
1652pub struct SubagentCompletedData {
1653 pub agent_display_name: String,
1655 pub agent_name: String,
1657 #[serde(skip_serializing_if = "Option::is_none")]
1659 pub duration_ms: Option<i64>,
1660 #[serde(skip_serializing_if = "Option::is_none")]
1662 pub model: Option<String>,
1663 pub tool_call_id: String,
1665 #[serde(skip_serializing_if = "Option::is_none")]
1667 pub total_tokens: Option<i64>,
1668 #[serde(skip_serializing_if = "Option::is_none")]
1670 pub total_tool_calls: Option<i64>,
1671}
1672
1673#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1675#[serde(rename_all = "camelCase")]
1676pub struct SubagentFailedData {
1677 pub agent_display_name: String,
1679 pub agent_name: String,
1681 #[serde(skip_serializing_if = "Option::is_none")]
1683 pub duration_ms: Option<i64>,
1684 pub error: String,
1686 #[serde(skip_serializing_if = "Option::is_none")]
1688 pub model: Option<String>,
1689 pub tool_call_id: String,
1691 #[serde(skip_serializing_if = "Option::is_none")]
1693 pub total_tokens: Option<i64>,
1694 #[serde(skip_serializing_if = "Option::is_none")]
1696 pub total_tool_calls: Option<i64>,
1697}
1698
1699#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1701#[serde(rename_all = "camelCase")]
1702pub struct SubagentSelectedData {
1703 pub agent_display_name: String,
1705 pub agent_name: String,
1707 pub tools: Vec<String>,
1709}
1710
1711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1713#[serde(rename_all = "camelCase")]
1714pub struct SubagentDeselectedData {}
1715
1716#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1718#[serde(rename_all = "camelCase")]
1719pub struct HookStartData {
1720 pub hook_invocation_id: String,
1722 pub hook_type: String,
1724 #[serde(skip_serializing_if = "Option::is_none")]
1726 pub input: Option<serde_json::Value>,
1727}
1728
1729#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1731#[serde(rename_all = "camelCase")]
1732pub struct HookEndError {
1733 pub message: String,
1735 #[serde(skip_serializing_if = "Option::is_none")]
1737 pub stack: Option<String>,
1738}
1739
1740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1742#[serde(rename_all = "camelCase")]
1743pub struct HookEndData {
1744 #[serde(skip_serializing_if = "Option::is_none")]
1746 pub error: Option<HookEndError>,
1747 pub hook_invocation_id: String,
1749 pub hook_type: String,
1751 #[serde(skip_serializing_if = "Option::is_none")]
1753 pub output: Option<serde_json::Value>,
1754 pub success: bool,
1756}
1757
1758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1760#[serde(rename_all = "camelCase")]
1761pub struct SystemMessageMetadata {
1762 #[serde(skip_serializing_if = "Option::is_none")]
1764 pub prompt_version: Option<String>,
1765 #[serde(default)]
1767 pub variables: HashMap<String, serde_json::Value>,
1768}
1769
1770#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1772#[serde(rename_all = "camelCase")]
1773pub struct SystemMessageData {
1774 pub content: String,
1776 #[serde(skip_serializing_if = "Option::is_none")]
1778 pub metadata: Option<SystemMessageMetadata>,
1779 #[serde(skip_serializing_if = "Option::is_none")]
1781 pub name: Option<String>,
1782 pub role: SystemMessageRole,
1784}
1785
1786#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1788#[serde(rename_all = "camelCase")]
1789pub struct SystemNotificationData {
1790 pub content: String,
1792 pub kind: serde_json::Value,
1794}
1795
1796#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1798#[serde(rename_all = "camelCase")]
1799pub struct PermissionRequestShellCommand {
1800 pub identifier: String,
1802 pub read_only: bool,
1804}
1805
1806#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1808#[serde(rename_all = "camelCase")]
1809pub struct PermissionRequestShellPossibleUrl {
1810 pub url: String,
1812}
1813
1814#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1816#[serde(rename_all = "camelCase")]
1817pub struct PermissionRequestShell {
1818 pub can_offer_session_approval: bool,
1820 pub commands: Vec<PermissionRequestShellCommand>,
1822 pub full_command_text: String,
1824 pub has_write_file_redirection: bool,
1826 pub intention: String,
1828 pub kind: PermissionRequestShellKind,
1830 pub possible_paths: Vec<String>,
1832 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
1834 #[serde(skip_serializing_if = "Option::is_none")]
1836 pub tool_call_id: Option<String>,
1837 #[serde(skip_serializing_if = "Option::is_none")]
1839 pub warning: Option<String>,
1840}
1841
1842#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1844#[serde(rename_all = "camelCase")]
1845pub struct PermissionRequestWrite {
1846 pub can_offer_session_approval: bool,
1848 pub diff: String,
1850 pub file_name: String,
1852 pub intention: String,
1854 pub kind: PermissionRequestWriteKind,
1856 #[serde(skip_serializing_if = "Option::is_none")]
1858 pub new_file_contents: Option<String>,
1859 #[serde(skip_serializing_if = "Option::is_none")]
1861 pub tool_call_id: Option<String>,
1862}
1863
1864#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1866#[serde(rename_all = "camelCase")]
1867pub struct PermissionRequestRead {
1868 pub intention: String,
1870 pub kind: PermissionRequestReadKind,
1872 pub path: String,
1874 #[serde(skip_serializing_if = "Option::is_none")]
1876 pub tool_call_id: Option<String>,
1877}
1878
1879#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1881#[serde(rename_all = "camelCase")]
1882pub struct PermissionRequestMcp {
1883 #[serde(skip_serializing_if = "Option::is_none")]
1885 pub args: Option<serde_json::Value>,
1886 pub kind: PermissionRequestMcpKind,
1888 pub read_only: bool,
1890 pub server_name: String,
1892 #[serde(skip_serializing_if = "Option::is_none")]
1894 pub tool_call_id: Option<String>,
1895 pub tool_name: String,
1897 pub tool_title: String,
1899}
1900
1901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1903#[serde(rename_all = "camelCase")]
1904pub struct PermissionRequestUrl {
1905 pub intention: String,
1907 pub kind: PermissionRequestUrlKind,
1909 #[serde(skip_serializing_if = "Option::is_none")]
1911 pub tool_call_id: Option<String>,
1912 pub url: String,
1914}
1915
1916#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1918#[serde(rename_all = "camelCase")]
1919pub struct PermissionRequestMemory {
1920 #[serde(skip_serializing_if = "Option::is_none")]
1922 pub action: Option<PermissionRequestMemoryAction>,
1923 #[serde(skip_serializing_if = "Option::is_none")]
1925 pub citations: Option<String>,
1926 #[serde(skip_serializing_if = "Option::is_none")]
1928 pub direction: Option<PermissionRequestMemoryDirection>,
1929 pub fact: String,
1931 pub kind: PermissionRequestMemoryKind,
1933 #[serde(skip_serializing_if = "Option::is_none")]
1935 pub reason: Option<String>,
1936 #[serde(skip_serializing_if = "Option::is_none")]
1938 pub subject: Option<String>,
1939 #[serde(skip_serializing_if = "Option::is_none")]
1941 pub tool_call_id: Option<String>,
1942}
1943
1944#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1946#[serde(rename_all = "camelCase")]
1947pub struct PermissionRequestCustomTool {
1948 #[serde(skip_serializing_if = "Option::is_none")]
1950 pub args: Option<serde_json::Value>,
1951 pub kind: PermissionRequestCustomToolKind,
1953 #[serde(skip_serializing_if = "Option::is_none")]
1955 pub tool_call_id: Option<String>,
1956 pub tool_description: String,
1958 pub tool_name: String,
1960}
1961
1962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1964#[serde(rename_all = "camelCase")]
1965pub struct PermissionRequestHook {
1966 #[serde(skip_serializing_if = "Option::is_none")]
1968 pub hook_message: Option<String>,
1969 pub kind: PermissionRequestHookKind,
1971 #[serde(skip_serializing_if = "Option::is_none")]
1973 pub tool_args: Option<serde_json::Value>,
1974 #[serde(skip_serializing_if = "Option::is_none")]
1976 pub tool_call_id: Option<String>,
1977 pub tool_name: String,
1979}
1980
1981#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1983#[serde(rename_all = "camelCase")]
1984pub struct PermissionRequestExtensionManagement {
1985 #[serde(skip_serializing_if = "Option::is_none")]
1987 pub extension_name: Option<String>,
1988 pub kind: PermissionRequestExtensionManagementKind,
1990 pub operation: String,
1992 #[serde(skip_serializing_if = "Option::is_none")]
1994 pub tool_call_id: Option<String>,
1995}
1996
1997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1999#[serde(rename_all = "camelCase")]
2000pub struct PermissionRequestExtensionPermissionAccess {
2001 pub capabilities: Vec<String>,
2003 pub extension_name: String,
2005 pub kind: PermissionRequestExtensionPermissionAccessKind,
2007 #[serde(skip_serializing_if = "Option::is_none")]
2009 pub tool_call_id: Option<String>,
2010}
2011
2012#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2014#[serde(rename_all = "camelCase")]
2015pub struct PermissionPromptRequestCommands {
2016 pub can_offer_session_approval: bool,
2018 pub command_identifiers: Vec<String>,
2020 pub full_command_text: String,
2022 pub intention: String,
2024 pub kind: PermissionPromptRequestCommandsKind,
2026 #[serde(skip_serializing_if = "Option::is_none")]
2028 pub tool_call_id: Option<String>,
2029 #[serde(skip_serializing_if = "Option::is_none")]
2031 pub warning: Option<String>,
2032}
2033
2034#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2036#[serde(rename_all = "camelCase")]
2037pub struct PermissionPromptRequestWrite {
2038 pub can_offer_session_approval: bool,
2040 pub diff: String,
2042 pub file_name: String,
2044 pub intention: String,
2046 pub kind: PermissionPromptRequestWriteKind,
2048 #[serde(skip_serializing_if = "Option::is_none")]
2050 pub new_file_contents: Option<String>,
2051 #[serde(skip_serializing_if = "Option::is_none")]
2053 pub tool_call_id: Option<String>,
2054}
2055
2056#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2058#[serde(rename_all = "camelCase")]
2059pub struct PermissionPromptRequestRead {
2060 pub intention: String,
2062 pub kind: PermissionPromptRequestReadKind,
2064 pub path: String,
2066 #[serde(skip_serializing_if = "Option::is_none")]
2068 pub tool_call_id: Option<String>,
2069}
2070
2071#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2073#[serde(rename_all = "camelCase")]
2074pub struct PermissionPromptRequestMcp {
2075 #[serde(skip_serializing_if = "Option::is_none")]
2077 pub args: Option<serde_json::Value>,
2078 pub kind: PermissionPromptRequestMcpKind,
2080 pub server_name: String,
2082 #[serde(skip_serializing_if = "Option::is_none")]
2084 pub tool_call_id: Option<String>,
2085 pub tool_name: String,
2087 pub tool_title: String,
2089}
2090
2091#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2093#[serde(rename_all = "camelCase")]
2094pub struct PermissionPromptRequestUrl {
2095 pub intention: String,
2097 pub kind: PermissionPromptRequestUrlKind,
2099 #[serde(skip_serializing_if = "Option::is_none")]
2101 pub tool_call_id: Option<String>,
2102 pub url: String,
2104}
2105
2106#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2108#[serde(rename_all = "camelCase")]
2109pub struct PermissionPromptRequestMemory {
2110 #[serde(skip_serializing_if = "Option::is_none")]
2112 pub action: Option<PermissionRequestMemoryAction>,
2113 #[serde(skip_serializing_if = "Option::is_none")]
2115 pub citations: Option<String>,
2116 #[serde(skip_serializing_if = "Option::is_none")]
2118 pub direction: Option<PermissionRequestMemoryDirection>,
2119 pub fact: String,
2121 pub kind: PermissionPromptRequestMemoryKind,
2123 #[serde(skip_serializing_if = "Option::is_none")]
2125 pub reason: Option<String>,
2126 #[serde(skip_serializing_if = "Option::is_none")]
2128 pub subject: Option<String>,
2129 #[serde(skip_serializing_if = "Option::is_none")]
2131 pub tool_call_id: Option<String>,
2132}
2133
2134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2136#[serde(rename_all = "camelCase")]
2137pub struct PermissionPromptRequestCustomTool {
2138 #[serde(skip_serializing_if = "Option::is_none")]
2140 pub args: Option<serde_json::Value>,
2141 pub kind: PermissionPromptRequestCustomToolKind,
2143 #[serde(skip_serializing_if = "Option::is_none")]
2145 pub tool_call_id: Option<String>,
2146 pub tool_description: String,
2148 pub tool_name: String,
2150}
2151
2152#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2154#[serde(rename_all = "camelCase")]
2155pub struct PermissionPromptRequestPath {
2156 pub access_kind: PermissionPromptRequestPathAccessKind,
2158 pub kind: PermissionPromptRequestPathKind,
2160 pub paths: Vec<String>,
2162 #[serde(skip_serializing_if = "Option::is_none")]
2164 pub tool_call_id: Option<String>,
2165}
2166
2167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2169#[serde(rename_all = "camelCase")]
2170pub struct PermissionPromptRequestHook {
2171 #[serde(skip_serializing_if = "Option::is_none")]
2173 pub hook_message: Option<String>,
2174 pub kind: PermissionPromptRequestHookKind,
2176 #[serde(skip_serializing_if = "Option::is_none")]
2178 pub tool_args: Option<serde_json::Value>,
2179 #[serde(skip_serializing_if = "Option::is_none")]
2181 pub tool_call_id: Option<String>,
2182 pub tool_name: String,
2184}
2185
2186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2188#[serde(rename_all = "camelCase")]
2189pub struct PermissionPromptRequestExtensionManagement {
2190 #[serde(skip_serializing_if = "Option::is_none")]
2192 pub extension_name: Option<String>,
2193 pub kind: PermissionPromptRequestExtensionManagementKind,
2195 pub operation: String,
2197 #[serde(skip_serializing_if = "Option::is_none")]
2199 pub tool_call_id: Option<String>,
2200}
2201
2202#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2204#[serde(rename_all = "camelCase")]
2205pub struct PermissionPromptRequestExtensionPermissionAccess {
2206 pub capabilities: Vec<String>,
2208 pub extension_name: String,
2210 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
2212 #[serde(skip_serializing_if = "Option::is_none")]
2214 pub tool_call_id: Option<String>,
2215}
2216
2217#[derive(Debug, Clone, Serialize, Deserialize)]
2219#[serde(rename_all = "camelCase")]
2220pub struct PermissionRequestedData {
2221 pub permission_request: PermissionRequest,
2223 #[serde(skip_serializing_if = "Option::is_none")]
2225 pub prompt_request: Option<PermissionPromptRequest>,
2226 pub request_id: RequestId,
2228 #[serde(skip_serializing_if = "Option::is_none")]
2230 pub resolved_by_hook: Option<bool>,
2231}
2232
2233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2235#[serde(rename_all = "camelCase")]
2236pub struct PermissionApproved {
2237 pub kind: PermissionApprovedKind,
2239}
2240
2241#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2243#[serde(rename_all = "camelCase")]
2244pub struct UserToolSessionApprovalCommands {
2245 pub command_identifiers: Vec<String>,
2247 pub kind: UserToolSessionApprovalCommandsKind,
2249}
2250
2251#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2253#[serde(rename_all = "camelCase")]
2254pub struct UserToolSessionApprovalRead {
2255 pub kind: UserToolSessionApprovalReadKind,
2257}
2258
2259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2261#[serde(rename_all = "camelCase")]
2262pub struct UserToolSessionApprovalWrite {
2263 pub kind: UserToolSessionApprovalWriteKind,
2265}
2266
2267#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2269#[serde(rename_all = "camelCase")]
2270pub struct UserToolSessionApprovalMcp {
2271 pub kind: UserToolSessionApprovalMcpKind,
2273 pub server_name: String,
2275 pub tool_name: Option<String>,
2277}
2278
2279#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2281#[serde(rename_all = "camelCase")]
2282pub struct UserToolSessionApprovalMemory {
2283 pub kind: UserToolSessionApprovalMemoryKind,
2285}
2286
2287#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2289#[serde(rename_all = "camelCase")]
2290pub struct UserToolSessionApprovalCustomTool {
2291 pub kind: UserToolSessionApprovalCustomToolKind,
2293 pub tool_name: String,
2295}
2296
2297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2299#[serde(rename_all = "camelCase")]
2300pub struct UserToolSessionApprovalExtensionManagement {
2301 pub kind: UserToolSessionApprovalExtensionManagementKind,
2303 #[serde(skip_serializing_if = "Option::is_none")]
2305 pub operation: Option<String>,
2306}
2307
2308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2310#[serde(rename_all = "camelCase")]
2311pub struct UserToolSessionApprovalExtensionPermissionAccess {
2312 pub extension_name: String,
2314 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
2316}
2317
2318#[derive(Debug, Clone, Serialize, Deserialize)]
2320#[serde(rename_all = "camelCase")]
2321pub struct PermissionApprovedForSession {
2322 pub approval: UserToolSessionApproval,
2324 pub kind: PermissionApprovedForSessionKind,
2326}
2327
2328#[derive(Debug, Clone, Serialize, Deserialize)]
2330#[serde(rename_all = "camelCase")]
2331pub struct PermissionApprovedForLocation {
2332 pub approval: UserToolSessionApproval,
2334 pub kind: PermissionApprovedForLocationKind,
2336 pub location_key: String,
2338}
2339
2340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2342#[serde(rename_all = "camelCase")]
2343pub struct PermissionCancelled {
2344 pub kind: PermissionCancelledKind,
2346 #[serde(skip_serializing_if = "Option::is_none")]
2348 pub reason: Option<String>,
2349}
2350
2351#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2353#[serde(rename_all = "camelCase")]
2354pub struct PermissionRule {
2355 pub argument: Option<String>,
2357 pub kind: String,
2359}
2360
2361#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2363#[serde(rename_all = "camelCase")]
2364pub struct PermissionDeniedByRules {
2365 pub kind: PermissionDeniedByRulesKind,
2367 pub rules: Vec<PermissionRule>,
2369}
2370
2371#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2373#[serde(rename_all = "camelCase")]
2374pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
2375 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
2377}
2378
2379#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2381#[serde(rename_all = "camelCase")]
2382pub struct PermissionDeniedInteractivelyByUser {
2383 #[serde(skip_serializing_if = "Option::is_none")]
2385 pub feedback: Option<String>,
2386 #[serde(skip_serializing_if = "Option::is_none")]
2388 pub force_reject: Option<bool>,
2389 pub kind: PermissionDeniedInteractivelyByUserKind,
2391}
2392
2393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2395#[serde(rename_all = "camelCase")]
2396pub struct PermissionDeniedByContentExclusionPolicy {
2397 pub kind: PermissionDeniedByContentExclusionPolicyKind,
2399 pub message: String,
2401 pub path: String,
2403}
2404
2405#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2407#[serde(rename_all = "camelCase")]
2408pub struct PermissionDeniedByPermissionRequestHook {
2409 #[serde(skip_serializing_if = "Option::is_none")]
2411 pub interrupt: Option<bool>,
2412 pub kind: PermissionDeniedByPermissionRequestHookKind,
2414 #[serde(skip_serializing_if = "Option::is_none")]
2416 pub message: Option<String>,
2417}
2418
2419#[derive(Debug, Clone, Serialize, Deserialize)]
2421#[serde(rename_all = "camelCase")]
2422pub struct PermissionCompletedData {
2423 pub request_id: RequestId,
2425 pub result: PermissionResult,
2427 #[serde(skip_serializing_if = "Option::is_none")]
2429 pub tool_call_id: Option<String>,
2430}
2431
2432#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2434#[serde(rename_all = "camelCase")]
2435pub struct UserInputRequestedData {
2436 #[serde(skip_serializing_if = "Option::is_none")]
2438 pub allow_freeform: Option<bool>,
2439 #[serde(default)]
2441 pub choices: Vec<String>,
2442 pub question: String,
2444 pub request_id: RequestId,
2446 #[serde(skip_serializing_if = "Option::is_none")]
2448 pub tool_call_id: Option<String>,
2449}
2450
2451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2453#[serde(rename_all = "camelCase")]
2454pub struct UserInputCompletedData {
2455 #[serde(skip_serializing_if = "Option::is_none")]
2457 pub answer: Option<String>,
2458 pub request_id: RequestId,
2460 #[serde(skip_serializing_if = "Option::is_none")]
2462 pub was_freeform: Option<bool>,
2463}
2464
2465#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2467#[serde(rename_all = "camelCase")]
2468pub struct ElicitationRequestedSchema {
2469 pub properties: HashMap<String, serde_json::Value>,
2471 #[serde(default)]
2473 pub required: Vec<String>,
2474 pub r#type: ElicitationRequestedSchemaType,
2476}
2477
2478#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2480#[serde(rename_all = "camelCase")]
2481pub struct ElicitationRequestedData {
2482 #[serde(skip_serializing_if = "Option::is_none")]
2484 pub elicitation_source: Option<String>,
2485 pub message: String,
2487 #[serde(skip_serializing_if = "Option::is_none")]
2489 pub mode: Option<ElicitationRequestedMode>,
2490 #[serde(skip_serializing_if = "Option::is_none")]
2492 pub requested_schema: Option<ElicitationRequestedSchema>,
2493 pub request_id: RequestId,
2495 #[serde(skip_serializing_if = "Option::is_none")]
2497 pub tool_call_id: Option<String>,
2498 #[serde(skip_serializing_if = "Option::is_none")]
2500 pub url: Option<String>,
2501}
2502
2503#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2505#[serde(rename_all = "camelCase")]
2506pub struct ElicitationCompletedData {
2507 #[serde(skip_serializing_if = "Option::is_none")]
2509 pub action: Option<ElicitationCompletedAction>,
2510 #[serde(default)]
2512 pub content: HashMap<String, serde_json::Value>,
2513 pub request_id: RequestId,
2515}
2516
2517#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2519#[serde(rename_all = "camelCase")]
2520pub struct SamplingRequestedData {
2521 pub mcp_request_id: serde_json::Value,
2523 pub request_id: RequestId,
2525 pub server_name: String,
2527}
2528
2529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2531#[serde(rename_all = "camelCase")]
2532pub struct SamplingCompletedData {
2533 pub request_id: RequestId,
2535}
2536
2537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2539#[serde(rename_all = "camelCase")]
2540pub struct McpOauthRequiredStaticClientConfig {
2541 pub client_id: String,
2543 #[serde(skip_serializing_if = "Option::is_none")]
2545 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
2546 #[serde(skip_serializing_if = "Option::is_none")]
2548 pub public_client: Option<bool>,
2549}
2550
2551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2553#[serde(rename_all = "camelCase")]
2554pub struct McpOauthRequiredData {
2555 pub request_id: RequestId,
2557 pub server_name: String,
2559 pub server_url: String,
2561 #[serde(skip_serializing_if = "Option::is_none")]
2563 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
2564}
2565
2566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2568#[serde(rename_all = "camelCase")]
2569pub struct McpOauthCompletedData {
2570 pub request_id: RequestId,
2572}
2573
2574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2576#[serde(rename_all = "camelCase")]
2577pub struct SessionCustomNotificationData {
2578 pub name: String,
2580 pub payload: serde_json::Value,
2582 pub source: String,
2584 #[serde(default)]
2586 pub subject: HashMap<String, String>,
2587 #[serde(skip_serializing_if = "Option::is_none")]
2589 pub version: Option<i64>,
2590}
2591
2592#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2594#[serde(rename_all = "camelCase")]
2595pub struct ExternalToolRequestedData {
2596 #[serde(skip_serializing_if = "Option::is_none")]
2598 pub arguments: Option<serde_json::Value>,
2599 pub request_id: RequestId,
2601 pub session_id: SessionId,
2603 pub tool_call_id: String,
2605 pub tool_name: String,
2607 #[serde(skip_serializing_if = "Option::is_none")]
2609 pub traceparent: Option<String>,
2610 #[serde(skip_serializing_if = "Option::is_none")]
2612 pub tracestate: Option<String>,
2613}
2614
2615#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2617#[serde(rename_all = "camelCase")]
2618pub struct ExternalToolCompletedData {
2619 pub request_id: RequestId,
2621}
2622
2623#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2625#[serde(rename_all = "camelCase")]
2626pub struct CommandQueuedData {
2627 pub command: String,
2629 pub request_id: RequestId,
2631}
2632
2633#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2635#[serde(rename_all = "camelCase")]
2636pub struct CommandExecuteData {
2637 pub args: String,
2639 pub command: String,
2641 pub command_name: String,
2643 pub request_id: RequestId,
2645}
2646
2647#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2649#[serde(rename_all = "camelCase")]
2650pub struct CommandCompletedData {
2651 pub request_id: RequestId,
2653}
2654
2655#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2657#[serde(rename_all = "camelCase")]
2658pub struct AutoModeSwitchRequestedData {
2659 #[serde(skip_serializing_if = "Option::is_none")]
2661 pub error_code: Option<String>,
2662 pub request_id: RequestId,
2664 #[serde(skip_serializing_if = "Option::is_none")]
2666 pub retry_after_seconds: Option<i64>,
2667}
2668
2669#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2671#[serde(rename_all = "camelCase")]
2672pub struct AutoModeSwitchCompletedData {
2673 pub request_id: RequestId,
2675 pub response: AutoModeSwitchResponse,
2677}
2678
2679#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2681#[serde(rename_all = "camelCase")]
2682pub struct CommandsChangedCommand {
2683 #[serde(skip_serializing_if = "Option::is_none")]
2685 pub description: Option<String>,
2686 pub name: String,
2688}
2689
2690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2692#[serde(rename_all = "camelCase")]
2693pub struct CommandsChangedData {
2694 pub commands: Vec<CommandsChangedCommand>,
2696}
2697
2698#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2700#[serde(rename_all = "camelCase")]
2701pub struct CapabilitiesChangedUI {
2702 #[serde(skip_serializing_if = "Option::is_none")]
2704 pub elicitation: Option<bool>,
2705}
2706
2707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2709#[serde(rename_all = "camelCase")]
2710pub struct CapabilitiesChangedData {
2711 #[serde(skip_serializing_if = "Option::is_none")]
2713 pub ui: Option<CapabilitiesChangedUI>,
2714}
2715
2716#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2718#[serde(rename_all = "camelCase")]
2719pub struct ExitPlanModeRequestedData {
2720 pub actions: Vec<ExitPlanModeAction>,
2722 pub plan_content: String,
2724 pub recommended_action: ExitPlanModeAction,
2726 pub request_id: RequestId,
2728 pub summary: String,
2730}
2731
2732#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2734#[serde(rename_all = "camelCase")]
2735pub struct ExitPlanModeCompletedData {
2736 #[serde(skip_serializing_if = "Option::is_none")]
2738 pub approved: Option<bool>,
2739 #[serde(skip_serializing_if = "Option::is_none")]
2741 pub auto_approve_edits: Option<bool>,
2742 #[serde(skip_serializing_if = "Option::is_none")]
2744 pub feedback: Option<String>,
2745 pub request_id: RequestId,
2747 #[serde(skip_serializing_if = "Option::is_none")]
2749 pub selected_action: Option<ExitPlanModeAction>,
2750}
2751
2752#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2754#[serde(rename_all = "camelCase")]
2755pub struct SessionToolsUpdatedData {
2756 pub model: String,
2758}
2759
2760#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2762#[serde(rename_all = "camelCase")]
2763pub struct SessionBackgroundTasksChangedData {}
2764
2765#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2767#[serde(rename_all = "camelCase")]
2768pub struct SkillsLoadedSkill {
2769 pub description: String,
2771 pub enabled: bool,
2773 pub name: String,
2775 #[serde(skip_serializing_if = "Option::is_none")]
2777 pub path: Option<String>,
2778 pub source: SkillSource,
2780 pub user_invocable: bool,
2782}
2783
2784#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2786#[serde(rename_all = "camelCase")]
2787pub struct SessionSkillsLoadedData {
2788 pub skills: Vec<SkillsLoadedSkill>,
2790}
2791
2792#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2794#[serde(rename_all = "camelCase")]
2795pub struct CustomAgentsUpdatedAgent {
2796 pub description: String,
2798 pub display_name: String,
2800 pub id: String,
2802 #[serde(skip_serializing_if = "Option::is_none")]
2804 pub model: Option<String>,
2805 pub name: String,
2807 pub source: String,
2809 pub tools: Vec<String>,
2811 pub user_invocable: bool,
2813}
2814
2815#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2817#[serde(rename_all = "camelCase")]
2818pub struct SessionCustomAgentsUpdatedData {
2819 pub agents: Vec<CustomAgentsUpdatedAgent>,
2821 pub errors: Vec<String>,
2823 pub warnings: Vec<String>,
2825}
2826
2827#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2829#[serde(rename_all = "camelCase")]
2830pub struct McpServersLoadedServer {
2831 #[serde(skip_serializing_if = "Option::is_none")]
2833 pub error: Option<String>,
2834 pub name: String,
2836 #[serde(skip_serializing_if = "Option::is_none")]
2838 pub source: Option<McpServerSource>,
2839 pub status: McpServerStatus,
2841}
2842
2843#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2845#[serde(rename_all = "camelCase")]
2846pub struct SessionMcpServersLoadedData {
2847 pub servers: Vec<McpServersLoadedServer>,
2849}
2850
2851#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2853#[serde(rename_all = "camelCase")]
2854pub struct SessionMcpServerStatusChangedData {
2855 pub server_name: String,
2857 pub status: McpServerStatus,
2859}
2860
2861#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2863#[serde(rename_all = "camelCase")]
2864pub struct ExtensionsLoadedExtension {
2865 pub id: String,
2867 pub name: String,
2869 pub source: ExtensionsLoadedExtensionSource,
2871 pub status: ExtensionsLoadedExtensionStatus,
2873}
2874
2875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2877#[serde(rename_all = "camelCase")]
2878pub struct SessionExtensionsLoadedData {
2879 pub extensions: Vec<ExtensionsLoadedExtension>,
2881}
2882
2883#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2885pub enum WorkingDirectoryContextHostType {
2886 #[serde(rename = "github")]
2888 Github,
2889 #[serde(rename = "ado")]
2891 Ado,
2892 #[default]
2894 #[serde(other)]
2895 Unknown,
2896}
2897
2898#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2900pub enum ReasoningSummary {
2901 #[serde(rename = "none")]
2903 None,
2904 #[serde(rename = "concise")]
2906 Concise,
2907 #[serde(rename = "detailed")]
2909 Detailed,
2910 #[default]
2912 #[serde(other)]
2913 Unknown,
2914}
2915
2916#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2918pub enum SessionMode {
2919 #[serde(rename = "interactive")]
2921 Interactive,
2922 #[serde(rename = "plan")]
2924 Plan,
2925 #[serde(rename = "autopilot")]
2927 Autopilot,
2928 #[default]
2930 #[serde(other)]
2931 Unknown,
2932}
2933
2934#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2936pub enum PlanChangedOperation {
2937 #[serde(rename = "create")]
2939 Create,
2940 #[serde(rename = "update")]
2942 Update,
2943 #[serde(rename = "delete")]
2945 Delete,
2946 #[default]
2948 #[serde(other)]
2949 Unknown,
2950}
2951
2952#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2954pub enum WorkspaceFileChangedOperation {
2955 #[serde(rename = "create")]
2957 Create,
2958 #[serde(rename = "update")]
2960 Update,
2961 #[default]
2963 #[serde(other)]
2964 Unknown,
2965}
2966
2967#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2969pub enum HandoffSourceType {
2970 #[serde(rename = "remote")]
2972 Remote,
2973 #[serde(rename = "local")]
2975 Local,
2976 #[default]
2978 #[serde(other)]
2979 Unknown,
2980}
2981
2982#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2984pub enum ShutdownType {
2985 #[serde(rename = "routine")]
2987 Routine,
2988 #[serde(rename = "error")]
2990 Error,
2991 #[default]
2993 #[serde(other)]
2994 Unknown,
2995}
2996
2997#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
2999pub enum UserMessageAgentMode {
3000 #[serde(rename = "interactive")]
3002 Interactive,
3003 #[serde(rename = "plan")]
3005 Plan,
3006 #[serde(rename = "autopilot")]
3008 Autopilot,
3009 #[serde(rename = "shell")]
3011 Shell,
3012 #[default]
3014 #[serde(other)]
3015 Unknown,
3016}
3017
3018#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3020pub enum AssistantMessageToolRequestType {
3021 #[serde(rename = "function")]
3023 Function,
3024 #[serde(rename = "custom")]
3026 Custom,
3027 #[default]
3029 #[serde(other)]
3030 Unknown,
3031}
3032
3033#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3035pub enum AssistantUsageApiEndpoint {
3036 #[serde(rename = "/chat/completions")]
3038 ChatCompletions,
3039 #[serde(rename = "/v1/messages")]
3041 V1Messages,
3042 #[serde(rename = "/responses")]
3044 Responses,
3045 #[serde(rename = "ws:/responses")]
3047 WsResponses,
3048 #[default]
3050 #[serde(other)]
3051 Unknown,
3052}
3053
3054#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3056pub enum ModelCallFailureSource {
3057 #[serde(rename = "top_level")]
3059 TopLevel,
3060 #[serde(rename = "subagent")]
3062 Subagent,
3063 #[serde(rename = "mcp_sampling")]
3065 McpSampling,
3066 #[default]
3068 #[serde(other)]
3069 Unknown,
3070}
3071
3072#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3074pub enum AbortReason {
3075 #[serde(rename = "user_initiated")]
3077 UserInitiated,
3078 #[serde(rename = "remote_command")]
3080 RemoteCommand,
3081 #[serde(rename = "user_abort")]
3083 UserAbort,
3084 #[default]
3086 #[serde(other)]
3087 Unknown,
3088}
3089
3090#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3092pub enum ToolExecutionCompleteContentTextType {
3093 #[serde(rename = "text")]
3094 #[default]
3095 Text,
3096}
3097
3098#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3100pub enum ToolExecutionCompleteContentTerminalType {
3101 #[serde(rename = "terminal")]
3102 #[default]
3103 Terminal,
3104}
3105
3106#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3108pub enum ToolExecutionCompleteContentImageType {
3109 #[serde(rename = "image")]
3110 #[default]
3111 Image,
3112}
3113
3114#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3116pub enum ToolExecutionCompleteContentAudioType {
3117 #[serde(rename = "audio")]
3118 #[default]
3119 Audio,
3120}
3121
3122#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3124pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
3125 #[serde(rename = "light")]
3127 Light,
3128 #[serde(rename = "dark")]
3130 Dark,
3131 #[default]
3133 #[serde(other)]
3134 Unknown,
3135}
3136
3137#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3139pub enum ToolExecutionCompleteContentResourceLinkType {
3140 #[serde(rename = "resource_link")]
3141 #[default]
3142 ResourceLink,
3143}
3144
3145#[derive(Debug, Clone, Serialize, Deserialize)]
3147#[serde(untagged)]
3148pub enum ToolExecutionCompleteContentResourceDetails {
3149 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
3150 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
3151}
3152
3153#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3155pub enum ToolExecutionCompleteContentResourceType {
3156 #[serde(rename = "resource")]
3157 #[default]
3158 Resource,
3159}
3160
3161#[derive(Debug, Clone, Serialize, Deserialize)]
3163#[serde(untagged)]
3164pub enum ToolExecutionCompleteContent {
3165 Text(ToolExecutionCompleteContentText),
3166 Terminal(ToolExecutionCompleteContentTerminal),
3167 Image(ToolExecutionCompleteContentImage),
3168 Audio(ToolExecutionCompleteContentAudio),
3169 ResourceLink(ToolExecutionCompleteContentResourceLink),
3170 Resource(ToolExecutionCompleteContentResource),
3171}
3172
3173#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3175pub enum SystemMessageRole {
3176 #[serde(rename = "system")]
3178 System,
3179 #[serde(rename = "developer")]
3181 Developer,
3182 #[default]
3184 #[serde(other)]
3185 Unknown,
3186}
3187
3188#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3190pub enum PermissionRequestShellKind {
3191 #[serde(rename = "shell")]
3192 #[default]
3193 Shell,
3194}
3195
3196#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3198pub enum PermissionRequestWriteKind {
3199 #[serde(rename = "write")]
3200 #[default]
3201 Write,
3202}
3203
3204#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3206pub enum PermissionRequestReadKind {
3207 #[serde(rename = "read")]
3208 #[default]
3209 Read,
3210}
3211
3212#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3214pub enum PermissionRequestMcpKind {
3215 #[serde(rename = "mcp")]
3216 #[default]
3217 Mcp,
3218}
3219
3220#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3222pub enum PermissionRequestUrlKind {
3223 #[serde(rename = "url")]
3224 #[default]
3225 Url,
3226}
3227
3228#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3230pub enum PermissionRequestMemoryAction {
3231 #[serde(rename = "store")]
3233 Store,
3234 #[serde(rename = "vote")]
3236 Vote,
3237 #[default]
3239 #[serde(other)]
3240 Unknown,
3241}
3242
3243#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3245pub enum PermissionRequestMemoryDirection {
3246 #[serde(rename = "upvote")]
3248 Upvote,
3249 #[serde(rename = "downvote")]
3251 Downvote,
3252 #[default]
3254 #[serde(other)]
3255 Unknown,
3256}
3257
3258#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3260pub enum PermissionRequestMemoryKind {
3261 #[serde(rename = "memory")]
3262 #[default]
3263 Memory,
3264}
3265
3266#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3268pub enum PermissionRequestCustomToolKind {
3269 #[serde(rename = "custom-tool")]
3270 #[default]
3271 CustomTool,
3272}
3273
3274#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3276pub enum PermissionRequestHookKind {
3277 #[serde(rename = "hook")]
3278 #[default]
3279 Hook,
3280}
3281
3282#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3284pub enum PermissionRequestExtensionManagementKind {
3285 #[serde(rename = "extension-management")]
3286 #[default]
3287 ExtensionManagement,
3288}
3289
3290#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3292pub enum PermissionRequestExtensionPermissionAccessKind {
3293 #[serde(rename = "extension-permission-access")]
3294 #[default]
3295 ExtensionPermissionAccess,
3296}
3297
3298#[derive(Debug, Clone, Serialize, Deserialize)]
3300#[serde(untagged)]
3301pub enum PermissionRequest {
3302 Shell(PermissionRequestShell),
3303 Write(PermissionRequestWrite),
3304 Read(PermissionRequestRead),
3305 Mcp(PermissionRequestMcp),
3306 Url(PermissionRequestUrl),
3307 Memory(PermissionRequestMemory),
3308 CustomTool(PermissionRequestCustomTool),
3309 Hook(PermissionRequestHook),
3310 ExtensionManagement(PermissionRequestExtensionManagement),
3311 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
3312}
3313
3314#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3316pub enum PermissionPromptRequestCommandsKind {
3317 #[serde(rename = "commands")]
3318 #[default]
3319 Commands,
3320}
3321
3322#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3324pub enum PermissionPromptRequestWriteKind {
3325 #[serde(rename = "write")]
3326 #[default]
3327 Write,
3328}
3329
3330#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3332pub enum PermissionPromptRequestReadKind {
3333 #[serde(rename = "read")]
3334 #[default]
3335 Read,
3336}
3337
3338#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3340pub enum PermissionPromptRequestMcpKind {
3341 #[serde(rename = "mcp")]
3342 #[default]
3343 Mcp,
3344}
3345
3346#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3348pub enum PermissionPromptRequestUrlKind {
3349 #[serde(rename = "url")]
3350 #[default]
3351 Url,
3352}
3353
3354#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3356pub enum PermissionPromptRequestMemoryKind {
3357 #[serde(rename = "memory")]
3358 #[default]
3359 Memory,
3360}
3361
3362#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3364pub enum PermissionPromptRequestCustomToolKind {
3365 #[serde(rename = "custom-tool")]
3366 #[default]
3367 CustomTool,
3368}
3369
3370#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3372pub enum PermissionPromptRequestPathAccessKind {
3373 #[serde(rename = "read")]
3375 Read,
3376 #[serde(rename = "shell")]
3378 Shell,
3379 #[serde(rename = "write")]
3381 Write,
3382 #[default]
3384 #[serde(other)]
3385 Unknown,
3386}
3387
3388#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3390pub enum PermissionPromptRequestPathKind {
3391 #[serde(rename = "path")]
3392 #[default]
3393 Path,
3394}
3395
3396#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3398pub enum PermissionPromptRequestHookKind {
3399 #[serde(rename = "hook")]
3400 #[default]
3401 Hook,
3402}
3403
3404#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3406pub enum PermissionPromptRequestExtensionManagementKind {
3407 #[serde(rename = "extension-management")]
3408 #[default]
3409 ExtensionManagement,
3410}
3411
3412#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3414pub enum PermissionPromptRequestExtensionPermissionAccessKind {
3415 #[serde(rename = "extension-permission-access")]
3416 #[default]
3417 ExtensionPermissionAccess,
3418}
3419
3420#[derive(Debug, Clone, Serialize, Deserialize)]
3422#[serde(untagged)]
3423pub enum PermissionPromptRequest {
3424 Commands(PermissionPromptRequestCommands),
3425 Write(PermissionPromptRequestWrite),
3426 Read(PermissionPromptRequestRead),
3427 Mcp(PermissionPromptRequestMcp),
3428 Url(PermissionPromptRequestUrl),
3429 Memory(PermissionPromptRequestMemory),
3430 CustomTool(PermissionPromptRequestCustomTool),
3431 Path(PermissionPromptRequestPath),
3432 Hook(PermissionPromptRequestHook),
3433 ExtensionManagement(PermissionPromptRequestExtensionManagement),
3434 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
3435}
3436
3437#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3439pub enum PermissionApprovedKind {
3440 #[serde(rename = "approved")]
3441 #[default]
3442 Approved,
3443}
3444
3445#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3447pub enum UserToolSessionApprovalCommandsKind {
3448 #[serde(rename = "commands")]
3449 #[default]
3450 Commands,
3451}
3452
3453#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3455pub enum UserToolSessionApprovalReadKind {
3456 #[serde(rename = "read")]
3457 #[default]
3458 Read,
3459}
3460
3461#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3463pub enum UserToolSessionApprovalWriteKind {
3464 #[serde(rename = "write")]
3465 #[default]
3466 Write,
3467}
3468
3469#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3471pub enum UserToolSessionApprovalMcpKind {
3472 #[serde(rename = "mcp")]
3473 #[default]
3474 Mcp,
3475}
3476
3477#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3479pub enum UserToolSessionApprovalMemoryKind {
3480 #[serde(rename = "memory")]
3481 #[default]
3482 Memory,
3483}
3484
3485#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3487pub enum UserToolSessionApprovalCustomToolKind {
3488 #[serde(rename = "custom-tool")]
3489 #[default]
3490 CustomTool,
3491}
3492
3493#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3495pub enum UserToolSessionApprovalExtensionManagementKind {
3496 #[serde(rename = "extension-management")]
3497 #[default]
3498 ExtensionManagement,
3499}
3500
3501#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3503pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
3504 #[serde(rename = "extension-permission-access")]
3505 #[default]
3506 ExtensionPermissionAccess,
3507}
3508
3509#[derive(Debug, Clone, Serialize, Deserialize)]
3511#[serde(untagged)]
3512pub enum UserToolSessionApproval {
3513 Commands(UserToolSessionApprovalCommands),
3514 Read(UserToolSessionApprovalRead),
3515 Write(UserToolSessionApprovalWrite),
3516 Mcp(UserToolSessionApprovalMcp),
3517 Memory(UserToolSessionApprovalMemory),
3518 CustomTool(UserToolSessionApprovalCustomTool),
3519 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
3520 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
3521}
3522
3523#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3525pub enum PermissionApprovedForSessionKind {
3526 #[serde(rename = "approved-for-session")]
3527 #[default]
3528 ApprovedForSession,
3529}
3530
3531#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3533pub enum PermissionApprovedForLocationKind {
3534 #[serde(rename = "approved-for-location")]
3535 #[default]
3536 ApprovedForLocation,
3537}
3538
3539#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3541pub enum PermissionCancelledKind {
3542 #[serde(rename = "cancelled")]
3543 #[default]
3544 Cancelled,
3545}
3546
3547#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3549pub enum PermissionDeniedByRulesKind {
3550 #[serde(rename = "denied-by-rules")]
3551 #[default]
3552 DeniedByRules,
3553}
3554
3555#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3557pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
3558 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
3559 #[default]
3560 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
3561}
3562
3563#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3565pub enum PermissionDeniedInteractivelyByUserKind {
3566 #[serde(rename = "denied-interactively-by-user")]
3567 #[default]
3568 DeniedInteractivelyByUser,
3569}
3570
3571#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3573pub enum PermissionDeniedByContentExclusionPolicyKind {
3574 #[serde(rename = "denied-by-content-exclusion-policy")]
3575 #[default]
3576 DeniedByContentExclusionPolicy,
3577}
3578
3579#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3581pub enum PermissionDeniedByPermissionRequestHookKind {
3582 #[serde(rename = "denied-by-permission-request-hook")]
3583 #[default]
3584 DeniedByPermissionRequestHook,
3585}
3586
3587#[derive(Debug, Clone, Serialize, Deserialize)]
3589#[serde(untagged)]
3590pub enum PermissionResult {
3591 Approved(PermissionApproved),
3592 ApprovedForSession(PermissionApprovedForSession),
3593 ApprovedForLocation(PermissionApprovedForLocation),
3594 Cancelled(PermissionCancelled),
3595 DeniedByRules(PermissionDeniedByRules),
3596 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
3597 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
3598 ),
3599 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
3600 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
3601 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
3602}
3603
3604#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3606pub enum ElicitationRequestedMode {
3607 #[serde(rename = "form")]
3609 Form,
3610 #[serde(rename = "url")]
3612 Url,
3613 #[default]
3615 #[serde(other)]
3616 Unknown,
3617}
3618
3619#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3621pub enum ElicitationRequestedSchemaType {
3622 #[serde(rename = "object")]
3623 #[default]
3624 Object,
3625}
3626
3627#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3629pub enum ElicitationCompletedAction {
3630 #[serde(rename = "accept")]
3632 Accept,
3633 #[serde(rename = "decline")]
3635 Decline,
3636 #[serde(rename = "cancel")]
3638 Cancel,
3639 #[default]
3641 #[serde(other)]
3642 Unknown,
3643}
3644
3645#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3647pub enum McpOauthRequiredStaticClientConfigGrantType {
3648 #[serde(rename = "client_credentials")]
3649 #[default]
3650 ClientCredentials,
3651}
3652
3653#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3655pub enum AutoModeSwitchResponse {
3656 #[serde(rename = "yes")]
3658 Yes,
3659 #[serde(rename = "yes_always")]
3661 YesAlways,
3662 #[serde(rename = "no")]
3664 No,
3665 #[default]
3667 #[serde(other)]
3668 Unknown,
3669}
3670
3671#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3673pub enum ExitPlanModeAction {
3674 #[serde(rename = "exit_only")]
3676 ExitOnly,
3677 #[serde(rename = "interactive")]
3679 Interactive,
3680 #[serde(rename = "autopilot")]
3682 Autopilot,
3683 #[serde(rename = "autopilot_fleet")]
3685 AutopilotFleet,
3686 #[default]
3688 #[serde(other)]
3689 Unknown,
3690}
3691
3692#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3694pub enum SkillSource {
3695 #[serde(rename = "project")]
3697 Project,
3698 #[serde(rename = "inherited")]
3700 Inherited,
3701 #[serde(rename = "personal-copilot")]
3703 PersonalCopilot,
3704 #[serde(rename = "personal-agents")]
3706 PersonalAgents,
3707 #[serde(rename = "plugin")]
3709 Plugin,
3710 #[serde(rename = "custom")]
3712 Custom,
3713 #[serde(rename = "builtin")]
3715 Builtin,
3716 #[default]
3718 #[serde(other)]
3719 Unknown,
3720}
3721
3722#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3724pub enum McpServerSource {
3725 #[serde(rename = "user")]
3727 User,
3728 #[serde(rename = "workspace")]
3730 Workspace,
3731 #[serde(rename = "plugin")]
3733 Plugin,
3734 #[serde(rename = "builtin")]
3736 Builtin,
3737 #[default]
3739 #[serde(other)]
3740 Unknown,
3741}
3742
3743#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3745pub enum McpServerStatus {
3746 #[serde(rename = "connected")]
3748 Connected,
3749 #[serde(rename = "failed")]
3751 Failed,
3752 #[serde(rename = "needs-auth")]
3754 NeedsAuth,
3755 #[serde(rename = "pending")]
3757 Pending,
3758 #[serde(rename = "disabled")]
3760 Disabled,
3761 #[serde(rename = "not_configured")]
3763 NotConfigured,
3764 #[default]
3766 #[serde(other)]
3767 Unknown,
3768}
3769
3770#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3772pub enum ExtensionsLoadedExtensionSource {
3773 #[serde(rename = "project")]
3775 Project,
3776 #[serde(rename = "user")]
3778 User,
3779 #[default]
3781 #[serde(other)]
3782 Unknown,
3783}
3784
3785#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3787pub enum ExtensionsLoadedExtensionStatus {
3788 #[serde(rename = "running")]
3790 Running,
3791 #[serde(rename = "disabled")]
3793 Disabled,
3794 #[serde(rename = "failed")]
3796 Failed,
3797 #[serde(rename = "starting")]
3799 Starting,
3800 #[default]
3802 #[serde(other)]
3803 Unknown,
3804}