1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7use crate::types::{RequestId, SessionId};
8
9#[derive(Debug, Clone, 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 = "external_tool.requested")]
137 ExternalToolRequested,
138 #[serde(rename = "external_tool.completed")]
139 ExternalToolCompleted,
140 #[serde(rename = "command.queued")]
141 CommandQueued,
142 #[serde(rename = "command.execute")]
143 CommandExecute,
144 #[serde(rename = "command.completed")]
145 CommandCompleted,
146 #[serde(rename = "auto_mode_switch.requested")]
147 AutoModeSwitchRequested,
148 #[serde(rename = "auto_mode_switch.completed")]
149 AutoModeSwitchCompleted,
150 #[serde(rename = "commands.changed")]
151 CommandsChanged,
152 #[serde(rename = "capabilities.changed")]
153 CapabilitiesChanged,
154 #[serde(rename = "exit_plan_mode.requested")]
155 ExitPlanModeRequested,
156 #[serde(rename = "exit_plan_mode.completed")]
157 ExitPlanModeCompleted,
158 #[serde(rename = "session.tools_updated")]
159 SessionToolsUpdated,
160 #[serde(rename = "session.background_tasks_changed")]
161 SessionBackgroundTasksChanged,
162 #[serde(rename = "session.skills_loaded")]
163 SessionSkillsLoaded,
164 #[serde(rename = "session.custom_agents_updated")]
165 SessionCustomAgentsUpdated,
166 #[serde(rename = "session.mcp_servers_loaded")]
167 SessionMcpServersLoaded,
168 #[serde(rename = "session.mcp_server_status_changed")]
169 SessionMcpServerStatusChanged,
170 #[serde(rename = "session.extensions_loaded")]
171 SessionExtensionsLoaded,
172 #[serde(other)]
174 Unknown,
175}
176
177#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(tag = "type", content = "data")]
182pub enum SessionEventData {
183 #[serde(rename = "session.start")]
184 SessionStart(SessionStartData),
185 #[serde(rename = "session.resume")]
186 SessionResume(SessionResumeData),
187 #[serde(rename = "session.remote_steerable_changed")]
188 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
189 #[serde(rename = "session.error")]
190 SessionError(SessionErrorData),
191 #[serde(rename = "session.idle")]
192 SessionIdle(SessionIdleData),
193 #[serde(rename = "session.title_changed")]
194 SessionTitleChanged(SessionTitleChangedData),
195 #[serde(rename = "session.schedule_created")]
196 SessionScheduleCreated(SessionScheduleCreatedData),
197 #[serde(rename = "session.schedule_cancelled")]
198 SessionScheduleCancelled(SessionScheduleCancelledData),
199 #[serde(rename = "session.info")]
200 SessionInfo(SessionInfoData),
201 #[serde(rename = "session.warning")]
202 SessionWarning(SessionWarningData),
203 #[serde(rename = "session.model_change")]
204 SessionModelChange(SessionModelChangeData),
205 #[serde(rename = "session.mode_changed")]
206 SessionModeChanged(SessionModeChangedData),
207 #[serde(rename = "session.plan_changed")]
208 SessionPlanChanged(SessionPlanChangedData),
209 #[serde(rename = "session.workspace_file_changed")]
210 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
211 #[serde(rename = "session.handoff")]
212 SessionHandoff(SessionHandoffData),
213 #[serde(rename = "session.truncation")]
214 SessionTruncation(SessionTruncationData),
215 #[serde(rename = "session.snapshot_rewind")]
216 SessionSnapshotRewind(SessionSnapshotRewindData),
217 #[serde(rename = "session.shutdown")]
218 SessionShutdown(SessionShutdownData),
219 #[serde(rename = "session.context_changed")]
220 SessionContextChanged(SessionContextChangedData),
221 #[serde(rename = "session.usage_info")]
222 SessionUsageInfo(SessionUsageInfoData),
223 #[serde(rename = "session.compaction_start")]
224 SessionCompactionStart(SessionCompactionStartData),
225 #[serde(rename = "session.compaction_complete")]
226 SessionCompactionComplete(SessionCompactionCompleteData),
227 #[serde(rename = "session.task_complete")]
228 SessionTaskComplete(SessionTaskCompleteData),
229 #[serde(rename = "user.message")]
230 UserMessage(UserMessageData),
231 #[serde(rename = "pending_messages.modified")]
232 PendingMessagesModified(PendingMessagesModifiedData),
233 #[serde(rename = "assistant.turn_start")]
234 AssistantTurnStart(AssistantTurnStartData),
235 #[serde(rename = "assistant.intent")]
236 AssistantIntent(AssistantIntentData),
237 #[serde(rename = "assistant.reasoning")]
238 AssistantReasoning(AssistantReasoningData),
239 #[serde(rename = "assistant.reasoning_delta")]
240 AssistantReasoningDelta(AssistantReasoningDeltaData),
241 #[serde(rename = "assistant.streaming_delta")]
242 AssistantStreamingDelta(AssistantStreamingDeltaData),
243 #[serde(rename = "assistant.message")]
244 AssistantMessage(AssistantMessageData),
245 #[serde(rename = "assistant.message_start")]
246 AssistantMessageStart(AssistantMessageStartData),
247 #[serde(rename = "assistant.message_delta")]
248 AssistantMessageDelta(AssistantMessageDeltaData),
249 #[serde(rename = "assistant.turn_end")]
250 AssistantTurnEnd(AssistantTurnEndData),
251 #[serde(rename = "assistant.usage")]
252 AssistantUsage(AssistantUsageData),
253 #[serde(rename = "model.call_failure")]
254 ModelCallFailure(ModelCallFailureData),
255 #[serde(rename = "abort")]
256 Abort(AbortData),
257 #[serde(rename = "tool.user_requested")]
258 ToolUserRequested(ToolUserRequestedData),
259 #[serde(rename = "tool.execution_start")]
260 ToolExecutionStart(ToolExecutionStartData),
261 #[serde(rename = "tool.execution_partial_result")]
262 ToolExecutionPartialResult(ToolExecutionPartialResultData),
263 #[serde(rename = "tool.execution_progress")]
264 ToolExecutionProgress(ToolExecutionProgressData),
265 #[serde(rename = "tool.execution_complete")]
266 ToolExecutionComplete(ToolExecutionCompleteData),
267 #[serde(rename = "skill.invoked")]
268 SkillInvoked(SkillInvokedData),
269 #[serde(rename = "subagent.started")]
270 SubagentStarted(SubagentStartedData),
271 #[serde(rename = "subagent.completed")]
272 SubagentCompleted(SubagentCompletedData),
273 #[serde(rename = "subagent.failed")]
274 SubagentFailed(SubagentFailedData),
275 #[serde(rename = "subagent.selected")]
276 SubagentSelected(SubagentSelectedData),
277 #[serde(rename = "subagent.deselected")]
278 SubagentDeselected(SubagentDeselectedData),
279 #[serde(rename = "hook.start")]
280 HookStart(HookStartData),
281 #[serde(rename = "hook.end")]
282 HookEnd(HookEndData),
283 #[serde(rename = "system.message")]
284 SystemMessage(SystemMessageData),
285 #[serde(rename = "system.notification")]
286 SystemNotification(SystemNotificationData),
287 #[serde(rename = "permission.requested")]
288 PermissionRequested(PermissionRequestedData),
289 #[serde(rename = "permission.completed")]
290 PermissionCompleted(PermissionCompletedData),
291 #[serde(rename = "user_input.requested")]
292 UserInputRequested(UserInputRequestedData),
293 #[serde(rename = "user_input.completed")]
294 UserInputCompleted(UserInputCompletedData),
295 #[serde(rename = "elicitation.requested")]
296 ElicitationRequested(ElicitationRequestedData),
297 #[serde(rename = "elicitation.completed")]
298 ElicitationCompleted(ElicitationCompletedData),
299 #[serde(rename = "sampling.requested")]
300 SamplingRequested(SamplingRequestedData),
301 #[serde(rename = "sampling.completed")]
302 SamplingCompleted(SamplingCompletedData),
303 #[serde(rename = "mcp.oauth_required")]
304 McpOauthRequired(McpOauthRequiredData),
305 #[serde(rename = "mcp.oauth_completed")]
306 McpOauthCompleted(McpOauthCompletedData),
307 #[serde(rename = "external_tool.requested")]
308 ExternalToolRequested(ExternalToolRequestedData),
309 #[serde(rename = "external_tool.completed")]
310 ExternalToolCompleted(ExternalToolCompletedData),
311 #[serde(rename = "command.queued")]
312 CommandQueued(CommandQueuedData),
313 #[serde(rename = "command.execute")]
314 CommandExecute(CommandExecuteData),
315 #[serde(rename = "command.completed")]
316 CommandCompleted(CommandCompletedData),
317 #[serde(rename = "auto_mode_switch.requested")]
318 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
319 #[serde(rename = "auto_mode_switch.completed")]
320 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
321 #[serde(rename = "commands.changed")]
322 CommandsChanged(CommandsChangedData),
323 #[serde(rename = "capabilities.changed")]
324 CapabilitiesChanged(CapabilitiesChangedData),
325 #[serde(rename = "exit_plan_mode.requested")]
326 ExitPlanModeRequested(ExitPlanModeRequestedData),
327 #[serde(rename = "exit_plan_mode.completed")]
328 ExitPlanModeCompleted(ExitPlanModeCompletedData),
329 #[serde(rename = "session.tools_updated")]
330 SessionToolsUpdated(SessionToolsUpdatedData),
331 #[serde(rename = "session.background_tasks_changed")]
332 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
333 #[serde(rename = "session.skills_loaded")]
334 SessionSkillsLoaded(SessionSkillsLoadedData),
335 #[serde(rename = "session.custom_agents_updated")]
336 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
337 #[serde(rename = "session.mcp_servers_loaded")]
338 SessionMcpServersLoaded(SessionMcpServersLoadedData),
339 #[serde(rename = "session.mcp_server_status_changed")]
340 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
341 #[serde(rename = "session.extensions_loaded")]
342 SessionExtensionsLoaded(SessionExtensionsLoadedData),
343}
344
345#[derive(Debug, Clone, Serialize, Deserialize)]
351#[serde(rename_all = "camelCase")]
352pub struct TypedSessionEvent {
353 pub id: String,
355 pub timestamp: String,
357 #[serde(skip_serializing_if = "Option::is_none")]
359 pub parent_id: Option<String>,
360 #[serde(skip_serializing_if = "Option::is_none")]
362 pub ephemeral: Option<bool>,
363 #[serde(skip_serializing_if = "Option::is_none")]
366 pub agent_id: Option<String>,
367 #[serde(flatten)]
369 pub payload: SessionEventData,
370}
371
372#[derive(Debug, Clone, Serialize, Deserialize)]
374#[serde(rename_all = "camelCase")]
375pub struct WorkingDirectoryContext {
376 #[serde(skip_serializing_if = "Option::is_none")]
378 pub base_commit: Option<String>,
379 #[serde(skip_serializing_if = "Option::is_none")]
381 pub branch: Option<String>,
382 pub cwd: String,
384 #[serde(skip_serializing_if = "Option::is_none")]
386 pub git_root: Option<String>,
387 #[serde(skip_serializing_if = "Option::is_none")]
389 pub head_commit: Option<String>,
390 #[serde(skip_serializing_if = "Option::is_none")]
392 pub host_type: Option<WorkingDirectoryContextHostType>,
393 #[serde(skip_serializing_if = "Option::is_none")]
395 pub repository: Option<String>,
396 #[serde(skip_serializing_if = "Option::is_none")]
398 pub repository_host: Option<String>,
399}
400
401#[derive(Debug, Clone, Serialize, Deserialize)]
403#[serde(rename_all = "camelCase")]
404pub struct SessionStartData {
405 #[serde(skip_serializing_if = "Option::is_none")]
407 pub already_in_use: Option<bool>,
408 #[serde(skip_serializing_if = "Option::is_none")]
410 pub context: Option<WorkingDirectoryContext>,
411 pub copilot_version: String,
413 #[serde(skip_serializing_if = "Option::is_none")]
415 pub detached_from_spawning_parent_session_id: Option<String>,
416 pub producer: String,
418 #[serde(skip_serializing_if = "Option::is_none")]
420 pub reasoning_effort: Option<String>,
421 #[serde(skip_serializing_if = "Option::is_none")]
423 pub remote_steerable: Option<bool>,
424 #[serde(skip_serializing_if = "Option::is_none")]
426 pub selected_model: Option<String>,
427 pub session_id: SessionId,
429 pub start_time: String,
431 pub version: f64,
433}
434
435#[derive(Debug, Clone, Serialize, Deserialize)]
437#[serde(rename_all = "camelCase")]
438pub struct SessionResumeData {
439 #[serde(skip_serializing_if = "Option::is_none")]
441 pub already_in_use: Option<bool>,
442 #[serde(skip_serializing_if = "Option::is_none")]
444 pub context: Option<WorkingDirectoryContext>,
445 #[serde(skip_serializing_if = "Option::is_none")]
447 pub continue_pending_work: Option<bool>,
448 pub event_count: f64,
450 #[serde(skip_serializing_if = "Option::is_none")]
452 pub reasoning_effort: Option<String>,
453 #[serde(skip_serializing_if = "Option::is_none")]
455 pub remote_steerable: Option<bool>,
456 pub resume_time: String,
458 #[serde(skip_serializing_if = "Option::is_none")]
460 pub selected_model: Option<String>,
461 #[serde(skip_serializing_if = "Option::is_none")]
463 pub session_was_active: Option<bool>,
464}
465
466#[derive(Debug, Clone, Serialize, Deserialize)]
468#[serde(rename_all = "camelCase")]
469pub struct SessionRemoteSteerableChangedData {
470 pub remote_steerable: bool,
472}
473
474#[derive(Debug, Clone, Serialize, Deserialize)]
476#[serde(rename_all = "camelCase")]
477pub struct SessionErrorData {
478 #[serde(skip_serializing_if = "Option::is_none")]
480 pub eligible_for_auto_switch: Option<bool>,
481 #[serde(skip_serializing_if = "Option::is_none")]
483 pub error_code: Option<String>,
484 pub error_type: String,
486 pub message: String,
488 #[serde(skip_serializing_if = "Option::is_none")]
490 pub provider_call_id: Option<String>,
491 #[serde(skip_serializing_if = "Option::is_none")]
493 pub stack: Option<String>,
494 #[serde(skip_serializing_if = "Option::is_none")]
496 pub status_code: Option<i64>,
497 #[serde(skip_serializing_if = "Option::is_none")]
499 pub url: Option<String>,
500}
501
502#[derive(Debug, Clone, Serialize, Deserialize)]
504#[serde(rename_all = "camelCase")]
505pub struct SessionIdleData {
506 #[serde(skip_serializing_if = "Option::is_none")]
508 pub aborted: Option<bool>,
509}
510
511#[derive(Debug, Clone, Serialize, Deserialize)]
513#[serde(rename_all = "camelCase")]
514pub struct SessionTitleChangedData {
515 pub title: String,
517}
518
519#[derive(Debug, Clone, Serialize, Deserialize)]
521#[serde(rename_all = "camelCase")]
522pub struct SessionScheduleCreatedData {
523 pub id: i64,
525 pub interval_ms: i64,
527 pub prompt: String,
529}
530
531#[derive(Debug, Clone, Serialize, Deserialize)]
533#[serde(rename_all = "camelCase")]
534pub struct SessionScheduleCancelledData {
535 pub id: i64,
537}
538
539#[derive(Debug, Clone, Serialize, Deserialize)]
541#[serde(rename_all = "camelCase")]
542pub struct SessionInfoData {
543 pub info_type: String,
545 pub message: String,
547 #[serde(skip_serializing_if = "Option::is_none")]
549 pub tip: Option<String>,
550 #[serde(skip_serializing_if = "Option::is_none")]
552 pub url: Option<String>,
553}
554
555#[derive(Debug, Clone, Serialize, Deserialize)]
557#[serde(rename_all = "camelCase")]
558pub struct SessionWarningData {
559 pub message: String,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub url: Option<String>,
564 pub warning_type: String,
566}
567
568#[derive(Debug, Clone, Serialize, Deserialize)]
570#[serde(rename_all = "camelCase")]
571pub struct SessionModelChangeData {
572 #[serde(skip_serializing_if = "Option::is_none")]
574 pub cause: Option<String>,
575 pub new_model: String,
577 #[serde(skip_serializing_if = "Option::is_none")]
579 pub previous_model: Option<String>,
580 #[serde(skip_serializing_if = "Option::is_none")]
582 pub previous_reasoning_effort: Option<String>,
583 #[serde(skip_serializing_if = "Option::is_none")]
585 pub reasoning_effort: Option<String>,
586}
587
588#[derive(Debug, Clone, Serialize, Deserialize)]
590#[serde(rename_all = "camelCase")]
591pub struct SessionModeChangedData {
592 pub new_mode: String,
594 pub previous_mode: String,
596}
597
598#[derive(Debug, Clone, Serialize, Deserialize)]
600#[serde(rename_all = "camelCase")]
601pub struct SessionPlanChangedData {
602 pub operation: PlanChangedOperation,
604}
605
606#[derive(Debug, Clone, Serialize, Deserialize)]
608#[serde(rename_all = "camelCase")]
609pub struct SessionWorkspaceFileChangedData {
610 pub operation: WorkspaceFileChangedOperation,
612 pub path: String,
614}
615
616#[derive(Debug, Clone, Serialize, Deserialize)]
618#[serde(rename_all = "camelCase")]
619pub struct HandoffRepository {
620 #[serde(skip_serializing_if = "Option::is_none")]
622 pub branch: Option<String>,
623 pub name: String,
625 pub owner: String,
627}
628
629#[derive(Debug, Clone, Serialize, Deserialize)]
631#[serde(rename_all = "camelCase")]
632pub struct SessionHandoffData {
633 #[serde(skip_serializing_if = "Option::is_none")]
635 pub context: Option<String>,
636 pub handoff_time: String,
638 #[serde(skip_serializing_if = "Option::is_none")]
640 pub host: Option<String>,
641 #[serde(skip_serializing_if = "Option::is_none")]
643 pub remote_session_id: Option<SessionId>,
644 #[serde(skip_serializing_if = "Option::is_none")]
646 pub repository: Option<HandoffRepository>,
647 pub source_type: HandoffSourceType,
649 #[serde(skip_serializing_if = "Option::is_none")]
651 pub summary: Option<String>,
652}
653
654#[derive(Debug, Clone, Serialize, Deserialize)]
656#[serde(rename_all = "camelCase")]
657pub struct SessionTruncationData {
658 pub messages_removed_during_truncation: f64,
660 pub performed_by: String,
662 pub post_truncation_messages_length: f64,
664 pub post_truncation_tokens_in_messages: f64,
666 pub pre_truncation_messages_length: f64,
668 pub pre_truncation_tokens_in_messages: f64,
670 pub token_limit: f64,
672 pub tokens_removed_during_truncation: f64,
674}
675
676#[derive(Debug, Clone, Serialize, Deserialize)]
678#[serde(rename_all = "camelCase")]
679pub struct SessionSnapshotRewindData {
680 pub events_removed: f64,
682 pub up_to_event_id: String,
684}
685
686#[derive(Debug, Clone, Serialize, Deserialize)]
688#[serde(rename_all = "camelCase")]
689pub struct ShutdownCodeChanges {
690 pub files_modified: Vec<String>,
692 pub lines_added: f64,
694 pub lines_removed: f64,
696}
697
698#[derive(Debug, Clone, Serialize, Deserialize)]
700#[serde(rename_all = "camelCase")]
701pub struct ShutdownModelMetricRequests {
702 pub cost: f64,
704 pub count: f64,
706}
707
708#[derive(Debug, Clone, Serialize, Deserialize)]
709#[serde(rename_all = "camelCase")]
710pub struct ShutdownModelMetricTokenDetail {
711 pub token_count: f64,
713}
714
715#[derive(Debug, Clone, Serialize, Deserialize)]
717#[serde(rename_all = "camelCase")]
718pub struct ShutdownModelMetricUsage {
719 pub cache_read_tokens: f64,
721 pub cache_write_tokens: f64,
723 pub input_tokens: f64,
725 pub output_tokens: f64,
727 #[serde(skip_serializing_if = "Option::is_none")]
729 pub reasoning_tokens: Option<f64>,
730}
731
732#[derive(Debug, Clone, Serialize, Deserialize)]
733#[serde(rename_all = "camelCase")]
734pub struct ShutdownModelMetric {
735 pub requests: ShutdownModelMetricRequests,
737 #[serde(default)]
739 pub token_details: HashMap<String, ShutdownModelMetricTokenDetail>,
740 #[serde(skip_serializing_if = "Option::is_none")]
742 pub total_nano_aiu: Option<f64>,
743 pub usage: ShutdownModelMetricUsage,
745}
746
747#[derive(Debug, Clone, Serialize, Deserialize)]
748#[serde(rename_all = "camelCase")]
749pub struct ShutdownTokenDetail {
750 pub token_count: f64,
752}
753
754#[derive(Debug, Clone, Serialize, Deserialize)]
756#[serde(rename_all = "camelCase")]
757pub struct SessionShutdownData {
758 pub code_changes: ShutdownCodeChanges,
760 #[serde(skip_serializing_if = "Option::is_none")]
762 pub conversation_tokens: Option<f64>,
763 #[serde(skip_serializing_if = "Option::is_none")]
765 pub current_model: Option<String>,
766 #[serde(skip_serializing_if = "Option::is_none")]
768 pub current_tokens: Option<f64>,
769 #[serde(skip_serializing_if = "Option::is_none")]
771 pub error_reason: Option<String>,
772 pub model_metrics: HashMap<String, ShutdownModelMetric>,
774 pub session_start_time: f64,
776 pub shutdown_type: ShutdownType,
778 #[serde(skip_serializing_if = "Option::is_none")]
780 pub system_tokens: Option<f64>,
781 #[serde(default)]
783 pub token_details: HashMap<String, ShutdownTokenDetail>,
784 #[serde(skip_serializing_if = "Option::is_none")]
786 pub tool_definitions_tokens: Option<f64>,
787 pub total_api_duration_ms: f64,
789 #[serde(skip_serializing_if = "Option::is_none")]
791 pub total_nano_aiu: Option<f64>,
792 pub total_premium_requests: f64,
794}
795
796#[derive(Debug, Clone, Serialize, Deserialize)]
798#[serde(rename_all = "camelCase")]
799pub struct SessionContextChangedData {
800 #[serde(skip_serializing_if = "Option::is_none")]
802 pub base_commit: Option<String>,
803 #[serde(skip_serializing_if = "Option::is_none")]
805 pub branch: Option<String>,
806 pub cwd: String,
808 #[serde(skip_serializing_if = "Option::is_none")]
810 pub git_root: Option<String>,
811 #[serde(skip_serializing_if = "Option::is_none")]
813 pub head_commit: Option<String>,
814 #[serde(skip_serializing_if = "Option::is_none")]
816 pub host_type: Option<WorkingDirectoryContextHostType>,
817 #[serde(skip_serializing_if = "Option::is_none")]
819 pub repository: Option<String>,
820 #[serde(skip_serializing_if = "Option::is_none")]
822 pub repository_host: Option<String>,
823}
824
825#[derive(Debug, Clone, Serialize, Deserialize)]
827#[serde(rename_all = "camelCase")]
828pub struct SessionUsageInfoData {
829 #[serde(skip_serializing_if = "Option::is_none")]
831 pub conversation_tokens: Option<f64>,
832 pub current_tokens: f64,
834 #[serde(skip_serializing_if = "Option::is_none")]
836 pub is_initial: Option<bool>,
837 pub messages_length: f64,
839 #[serde(skip_serializing_if = "Option::is_none")]
841 pub system_tokens: Option<f64>,
842 pub token_limit: f64,
844 #[serde(skip_serializing_if = "Option::is_none")]
846 pub tool_definitions_tokens: Option<f64>,
847}
848
849#[derive(Debug, Clone, Serialize, Deserialize)]
851#[serde(rename_all = "camelCase")]
852pub struct SessionCompactionStartData {
853 #[serde(skip_serializing_if = "Option::is_none")]
855 pub conversation_tokens: Option<f64>,
856 #[serde(skip_serializing_if = "Option::is_none")]
858 pub system_tokens: Option<f64>,
859 #[serde(skip_serializing_if = "Option::is_none")]
861 pub tool_definitions_tokens: Option<f64>,
862}
863
864#[derive(Debug, Clone, Serialize, Deserialize)]
866#[serde(rename_all = "camelCase")]
867pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
868 pub batch_size: f64,
870 pub cost_per_batch: f64,
872 pub token_count: f64,
874 pub token_type: String,
876}
877
878#[derive(Debug, Clone, Serialize, Deserialize)]
880#[serde(rename_all = "camelCase")]
881pub struct CompactionCompleteCompactionTokensUsedCopilotUsage {
882 pub token_details: Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>,
884 pub total_nano_aiu: f64,
886}
887
888#[derive(Debug, Clone, Serialize, Deserialize)]
890#[serde(rename_all = "camelCase")]
891pub struct CompactionCompleteCompactionTokensUsed {
892 #[serde(skip_serializing_if = "Option::is_none")]
894 pub cache_read_tokens: Option<f64>,
895 #[serde(skip_serializing_if = "Option::is_none")]
897 pub cache_write_tokens: Option<f64>,
898 #[serde(skip_serializing_if = "Option::is_none")]
900 pub copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
901 #[serde(skip_serializing_if = "Option::is_none")]
903 pub duration: Option<f64>,
904 #[serde(skip_serializing_if = "Option::is_none")]
906 pub input_tokens: Option<f64>,
907 #[serde(skip_serializing_if = "Option::is_none")]
909 pub model: Option<String>,
910 #[serde(skip_serializing_if = "Option::is_none")]
912 pub output_tokens: Option<f64>,
913}
914
915#[derive(Debug, Clone, Serialize, Deserialize)]
917#[serde(rename_all = "camelCase")]
918pub struct SessionCompactionCompleteData {
919 #[serde(skip_serializing_if = "Option::is_none")]
921 pub checkpoint_number: Option<f64>,
922 #[serde(skip_serializing_if = "Option::is_none")]
924 pub checkpoint_path: Option<String>,
925 #[serde(skip_serializing_if = "Option::is_none")]
927 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
928 #[serde(skip_serializing_if = "Option::is_none")]
930 pub conversation_tokens: Option<f64>,
931 #[serde(skip_serializing_if = "Option::is_none")]
933 pub error: Option<String>,
934 #[serde(skip_serializing_if = "Option::is_none")]
936 pub messages_removed: Option<f64>,
937 #[serde(skip_serializing_if = "Option::is_none")]
939 pub post_compaction_tokens: Option<f64>,
940 #[serde(skip_serializing_if = "Option::is_none")]
942 pub pre_compaction_messages_length: Option<f64>,
943 #[serde(skip_serializing_if = "Option::is_none")]
945 pub pre_compaction_tokens: Option<f64>,
946 #[serde(skip_serializing_if = "Option::is_none")]
948 pub request_id: Option<RequestId>,
949 pub success: bool,
951 #[serde(skip_serializing_if = "Option::is_none")]
953 pub summary_content: Option<String>,
954 #[serde(skip_serializing_if = "Option::is_none")]
956 pub system_tokens: Option<f64>,
957 #[serde(skip_serializing_if = "Option::is_none")]
959 pub tokens_removed: Option<f64>,
960 #[serde(skip_serializing_if = "Option::is_none")]
962 pub tool_definitions_tokens: Option<f64>,
963}
964
965#[derive(Debug, Clone, Serialize, Deserialize)]
967#[serde(rename_all = "camelCase")]
968pub struct SessionTaskCompleteData {
969 #[serde(skip_serializing_if = "Option::is_none")]
971 pub success: Option<bool>,
972 #[serde(skip_serializing_if = "Option::is_none")]
974 pub summary: Option<String>,
975}
976
977#[derive(Debug, Clone, Serialize, Deserialize)]
978#[serde(rename_all = "camelCase")]
979pub struct UserMessageData {
980 #[serde(skip_serializing_if = "Option::is_none")]
982 pub agent_mode: Option<UserMessageAgentMode>,
983 #[serde(default)]
985 pub attachments: Vec<serde_json::Value>,
986 pub content: String,
988 #[serde(skip_serializing_if = "Option::is_none")]
990 pub interaction_id: Option<String>,
991 #[serde(default)]
993 pub native_document_path_fallback_paths: Vec<String>,
994 #[serde(skip_serializing_if = "Option::is_none")]
996 pub parent_agent_task_id: Option<String>,
997 #[serde(skip_serializing_if = "Option::is_none")]
999 pub source: Option<String>,
1000 #[serde(default)]
1002 pub supported_native_document_mime_types: Vec<String>,
1003 #[serde(skip_serializing_if = "Option::is_none")]
1005 pub transformed_content: Option<String>,
1006}
1007
1008#[derive(Debug, Clone, Serialize, Deserialize)]
1010#[serde(rename_all = "camelCase")]
1011pub struct PendingMessagesModifiedData {}
1012
1013#[derive(Debug, Clone, Serialize, Deserialize)]
1015#[serde(rename_all = "camelCase")]
1016pub struct AssistantTurnStartData {
1017 #[serde(skip_serializing_if = "Option::is_none")]
1019 pub interaction_id: Option<String>,
1020 pub turn_id: String,
1022}
1023
1024#[derive(Debug, Clone, Serialize, Deserialize)]
1026#[serde(rename_all = "camelCase")]
1027pub struct AssistantIntentData {
1028 pub intent: String,
1030}
1031
1032#[derive(Debug, Clone, Serialize, Deserialize)]
1034#[serde(rename_all = "camelCase")]
1035pub struct AssistantReasoningData {
1036 pub content: String,
1038 pub reasoning_id: String,
1040}
1041
1042#[derive(Debug, Clone, Serialize, Deserialize)]
1044#[serde(rename_all = "camelCase")]
1045pub struct AssistantReasoningDeltaData {
1046 pub delta_content: String,
1048 pub reasoning_id: String,
1050}
1051
1052#[derive(Debug, Clone, Serialize, Deserialize)]
1054#[serde(rename_all = "camelCase")]
1055pub struct AssistantStreamingDeltaData {
1056 pub total_response_size_bytes: f64,
1058}
1059
1060#[derive(Debug, Clone, Serialize, Deserialize)]
1062#[serde(rename_all = "camelCase")]
1063pub struct AssistantMessageToolRequest {
1064 #[serde(skip_serializing_if = "Option::is_none")]
1066 pub arguments: Option<serde_json::Value>,
1067 #[serde(skip_serializing_if = "Option::is_none")]
1069 pub intention_summary: Option<String>,
1070 #[serde(skip_serializing_if = "Option::is_none")]
1072 pub mcp_server_name: Option<String>,
1073 #[serde(skip_serializing_if = "Option::is_none")]
1075 pub mcp_tool_name: Option<String>,
1076 pub name: String,
1078 pub tool_call_id: String,
1080 #[serde(skip_serializing_if = "Option::is_none")]
1082 pub tool_title: Option<String>,
1083 #[serde(skip_serializing_if = "Option::is_none")]
1085 pub r#type: Option<AssistantMessageToolRequestType>,
1086}
1087
1088#[derive(Debug, Clone, Serialize, Deserialize)]
1090#[serde(rename_all = "camelCase")]
1091pub struct AssistantMessageData {
1092 #[serde(default)]
1094 pub anthropic_advisor_blocks: Vec<serde_json::Value>,
1095 #[serde(skip_serializing_if = "Option::is_none")]
1097 pub anthropic_advisor_model: Option<String>,
1098 pub content: String,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub encrypted_content: Option<String>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub interaction_id: Option<String>,
1106 pub message_id: String,
1108 #[serde(skip_serializing_if = "Option::is_none")]
1110 pub model: Option<String>,
1111 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub output_tokens: Option<f64>,
1114 #[deprecated]
1116 #[serde(skip_serializing_if = "Option::is_none")]
1117 pub parent_tool_call_id: Option<String>,
1118 #[serde(skip_serializing_if = "Option::is_none")]
1120 pub phase: Option<String>,
1121 #[serde(skip_serializing_if = "Option::is_none")]
1123 pub reasoning_opaque: Option<String>,
1124 #[serde(skip_serializing_if = "Option::is_none")]
1126 pub reasoning_text: Option<String>,
1127 #[serde(skip_serializing_if = "Option::is_none")]
1129 pub request_id: Option<RequestId>,
1130 #[serde(default)]
1132 pub tool_requests: Vec<AssistantMessageToolRequest>,
1133 #[serde(skip_serializing_if = "Option::is_none")]
1135 pub turn_id: Option<String>,
1136}
1137
1138#[derive(Debug, Clone, Serialize, Deserialize)]
1140#[serde(rename_all = "camelCase")]
1141pub struct AssistantMessageStartData {
1142 pub message_id: String,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub phase: Option<String>,
1147}
1148
1149#[derive(Debug, Clone, Serialize, Deserialize)]
1151#[serde(rename_all = "camelCase")]
1152pub struct AssistantMessageDeltaData {
1153 pub delta_content: String,
1155 pub message_id: String,
1157 #[deprecated]
1159 #[serde(skip_serializing_if = "Option::is_none")]
1160 pub parent_tool_call_id: Option<String>,
1161}
1162
1163#[derive(Debug, Clone, Serialize, Deserialize)]
1165#[serde(rename_all = "camelCase")]
1166pub struct AssistantTurnEndData {
1167 pub turn_id: String,
1169}
1170
1171#[derive(Debug, Clone, Serialize, Deserialize)]
1173#[serde(rename_all = "camelCase")]
1174pub struct AssistantUsageCopilotUsageTokenDetail {
1175 pub batch_size: f64,
1177 pub cost_per_batch: f64,
1179 pub token_count: f64,
1181 pub token_type: String,
1183}
1184
1185#[derive(Debug, Clone, Serialize, Deserialize)]
1187#[serde(rename_all = "camelCase")]
1188pub struct AssistantUsageCopilotUsage {
1189 pub token_details: Vec<AssistantUsageCopilotUsageTokenDetail>,
1191 pub total_nano_aiu: f64,
1193}
1194
1195#[derive(Debug, Clone, Serialize, Deserialize)]
1196#[serde(rename_all = "camelCase")]
1197pub struct AssistantUsageQuotaSnapshot {
1198 pub entitlement_requests: f64,
1200 pub is_unlimited_entitlement: bool,
1202 pub overage: f64,
1204 pub overage_allowed_with_exhausted_quota: bool,
1206 pub remaining_percentage: f64,
1208 #[serde(skip_serializing_if = "Option::is_none")]
1210 pub reset_date: Option<String>,
1211 pub usage_allowed_with_exhausted_quota: bool,
1213 pub used_requests: f64,
1215}
1216
1217#[derive(Debug, Clone, Serialize, Deserialize)]
1219#[serde(rename_all = "camelCase")]
1220pub struct AssistantUsageData {
1221 #[serde(skip_serializing_if = "Option::is_none")]
1223 pub api_call_id: Option<String>,
1224 #[serde(skip_serializing_if = "Option::is_none")]
1226 pub cache_read_tokens: Option<f64>,
1227 #[serde(skip_serializing_if = "Option::is_none")]
1229 pub cache_write_tokens: Option<f64>,
1230 #[serde(skip_serializing_if = "Option::is_none")]
1232 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1233 #[serde(skip_serializing_if = "Option::is_none")]
1235 pub cost: Option<f64>,
1236 #[serde(skip_serializing_if = "Option::is_none")]
1238 pub duration: Option<f64>,
1239 #[serde(skip_serializing_if = "Option::is_none")]
1241 pub initiator: Option<String>,
1242 #[serde(skip_serializing_if = "Option::is_none")]
1244 pub input_tokens: Option<f64>,
1245 #[serde(skip_serializing_if = "Option::is_none")]
1247 pub inter_token_latency_ms: Option<f64>,
1248 pub model: String,
1250 #[serde(skip_serializing_if = "Option::is_none")]
1252 pub output_tokens: Option<f64>,
1253 #[deprecated]
1255 #[serde(skip_serializing_if = "Option::is_none")]
1256 pub parent_tool_call_id: Option<String>,
1257 #[serde(skip_serializing_if = "Option::is_none")]
1259 pub provider_call_id: Option<String>,
1260 #[serde(default)]
1262 pub quota_snapshots: HashMap<String, AssistantUsageQuotaSnapshot>,
1263 #[serde(skip_serializing_if = "Option::is_none")]
1265 pub reasoning_effort: Option<String>,
1266 #[serde(skip_serializing_if = "Option::is_none")]
1268 pub reasoning_tokens: Option<f64>,
1269 #[serde(skip_serializing_if = "Option::is_none")]
1271 pub ttft_ms: Option<f64>,
1272}
1273
1274#[derive(Debug, Clone, Serialize, Deserialize)]
1276#[serde(rename_all = "camelCase")]
1277pub struct ModelCallFailureData {
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub api_call_id: Option<String>,
1281 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub duration_ms: Option<f64>,
1284 #[serde(skip_serializing_if = "Option::is_none")]
1286 pub error_message: Option<String>,
1287 #[serde(skip_serializing_if = "Option::is_none")]
1289 pub initiator: Option<String>,
1290 #[serde(skip_serializing_if = "Option::is_none")]
1292 pub model: Option<String>,
1293 #[serde(skip_serializing_if = "Option::is_none")]
1295 pub provider_call_id: Option<String>,
1296 pub source: ModelCallFailureSource,
1298 #[serde(skip_serializing_if = "Option::is_none")]
1300 pub status_code: Option<i64>,
1301}
1302
1303#[derive(Debug, Clone, Serialize, Deserialize)]
1305#[serde(rename_all = "camelCase")]
1306pub struct AbortData {
1307 pub reason: AbortReason,
1309}
1310
1311#[derive(Debug, Clone, Serialize, Deserialize)]
1313#[serde(rename_all = "camelCase")]
1314pub struct ToolUserRequestedData {
1315 #[serde(skip_serializing_if = "Option::is_none")]
1317 pub arguments: Option<serde_json::Value>,
1318 pub tool_call_id: String,
1320 pub tool_name: String,
1322}
1323
1324#[derive(Debug, Clone, Serialize, Deserialize)]
1326#[serde(rename_all = "camelCase")]
1327pub struct ToolExecutionStartData {
1328 #[serde(skip_serializing_if = "Option::is_none")]
1330 pub arguments: Option<serde_json::Value>,
1331 #[serde(skip_serializing_if = "Option::is_none")]
1333 pub mcp_server_name: Option<String>,
1334 #[serde(skip_serializing_if = "Option::is_none")]
1336 pub mcp_tool_name: Option<String>,
1337 #[deprecated]
1339 #[serde(skip_serializing_if = "Option::is_none")]
1340 pub parent_tool_call_id: Option<String>,
1341 pub tool_call_id: String,
1343 pub tool_name: String,
1345 #[serde(skip_serializing_if = "Option::is_none")]
1347 pub turn_id: Option<String>,
1348}
1349
1350#[derive(Debug, Clone, Serialize, Deserialize)]
1352#[serde(rename_all = "camelCase")]
1353pub struct ToolExecutionPartialResultData {
1354 pub partial_output: String,
1356 pub tool_call_id: String,
1358}
1359
1360#[derive(Debug, Clone, Serialize, Deserialize)]
1362#[serde(rename_all = "camelCase")]
1363pub struct ToolExecutionProgressData {
1364 pub progress_message: String,
1366 pub tool_call_id: String,
1368}
1369
1370#[derive(Debug, Clone, Serialize, Deserialize)]
1372#[serde(rename_all = "camelCase")]
1373pub struct ToolExecutionCompleteError {
1374 #[serde(skip_serializing_if = "Option::is_none")]
1376 pub code: Option<String>,
1377 pub message: String,
1379}
1380
1381#[derive(Debug, Clone, Serialize, Deserialize)]
1383#[serde(rename_all = "camelCase")]
1384pub struct ToolExecutionCompleteResult {
1385 pub content: String,
1387 #[serde(default)]
1389 pub contents: Vec<serde_json::Value>,
1390 #[serde(skip_serializing_if = "Option::is_none")]
1392 pub detailed_content: Option<String>,
1393}
1394
1395#[derive(Debug, Clone, Serialize, Deserialize)]
1397#[serde(rename_all = "camelCase")]
1398pub struct ToolExecutionCompleteData {
1399 #[serde(skip_serializing_if = "Option::is_none")]
1401 pub error: Option<ToolExecutionCompleteError>,
1402 #[serde(skip_serializing_if = "Option::is_none")]
1404 pub interaction_id: Option<String>,
1405 #[serde(skip_serializing_if = "Option::is_none")]
1407 pub is_user_requested: Option<bool>,
1408 #[serde(skip_serializing_if = "Option::is_none")]
1410 pub model: Option<String>,
1411 #[deprecated]
1413 #[serde(skip_serializing_if = "Option::is_none")]
1414 pub parent_tool_call_id: Option<String>,
1415 #[serde(skip_serializing_if = "Option::is_none")]
1417 pub result: Option<ToolExecutionCompleteResult>,
1418 pub success: bool,
1420 pub tool_call_id: String,
1422 #[serde(default)]
1424 pub tool_telemetry: HashMap<String, serde_json::Value>,
1425 #[serde(skip_serializing_if = "Option::is_none")]
1427 pub turn_id: Option<String>,
1428}
1429
1430#[derive(Debug, Clone, Serialize, Deserialize)]
1432#[serde(rename_all = "camelCase")]
1433pub struct SkillInvokedData {
1434 #[serde(default)]
1436 pub allowed_tools: Vec<String>,
1437 pub content: String,
1439 #[serde(skip_serializing_if = "Option::is_none")]
1441 pub description: Option<String>,
1442 pub name: String,
1444 pub path: String,
1446 #[serde(skip_serializing_if = "Option::is_none")]
1448 pub plugin_name: Option<String>,
1449 #[serde(skip_serializing_if = "Option::is_none")]
1451 pub plugin_version: Option<String>,
1452}
1453
1454#[derive(Debug, Clone, Serialize, Deserialize)]
1456#[serde(rename_all = "camelCase")]
1457pub struct SubagentStartedData {
1458 pub agent_description: String,
1460 pub agent_display_name: String,
1462 pub agent_name: String,
1464 #[serde(skip_serializing_if = "Option::is_none")]
1466 pub model: Option<String>,
1467 pub tool_call_id: String,
1469}
1470
1471#[derive(Debug, Clone, Serialize, Deserialize)]
1473#[serde(rename_all = "camelCase")]
1474pub struct SubagentCompletedData {
1475 pub agent_display_name: String,
1477 pub agent_name: String,
1479 #[serde(skip_serializing_if = "Option::is_none")]
1481 pub duration_ms: Option<f64>,
1482 #[serde(skip_serializing_if = "Option::is_none")]
1484 pub model: Option<String>,
1485 pub tool_call_id: String,
1487 #[serde(skip_serializing_if = "Option::is_none")]
1489 pub total_tokens: Option<f64>,
1490 #[serde(skip_serializing_if = "Option::is_none")]
1492 pub total_tool_calls: Option<f64>,
1493}
1494
1495#[derive(Debug, Clone, Serialize, Deserialize)]
1497#[serde(rename_all = "camelCase")]
1498pub struct SubagentFailedData {
1499 pub agent_display_name: String,
1501 pub agent_name: String,
1503 #[serde(skip_serializing_if = "Option::is_none")]
1505 pub duration_ms: Option<f64>,
1506 pub error: String,
1508 #[serde(skip_serializing_if = "Option::is_none")]
1510 pub model: Option<String>,
1511 pub tool_call_id: String,
1513 #[serde(skip_serializing_if = "Option::is_none")]
1515 pub total_tokens: Option<f64>,
1516 #[serde(skip_serializing_if = "Option::is_none")]
1518 pub total_tool_calls: Option<f64>,
1519}
1520
1521#[derive(Debug, Clone, Serialize, Deserialize)]
1523#[serde(rename_all = "camelCase")]
1524pub struct SubagentSelectedData {
1525 pub agent_display_name: String,
1527 pub agent_name: String,
1529 pub tools: Vec<String>,
1531}
1532
1533#[derive(Debug, Clone, Serialize, Deserialize)]
1535#[serde(rename_all = "camelCase")]
1536pub struct SubagentDeselectedData {}
1537
1538#[derive(Debug, Clone, Serialize, Deserialize)]
1540#[serde(rename_all = "camelCase")]
1541pub struct HookStartData {
1542 pub hook_invocation_id: String,
1544 pub hook_type: String,
1546 #[serde(skip_serializing_if = "Option::is_none")]
1548 pub input: Option<serde_json::Value>,
1549}
1550
1551#[derive(Debug, Clone, Serialize, Deserialize)]
1553#[serde(rename_all = "camelCase")]
1554pub struct HookEndError {
1555 pub message: String,
1557 #[serde(skip_serializing_if = "Option::is_none")]
1559 pub stack: Option<String>,
1560}
1561
1562#[derive(Debug, Clone, Serialize, Deserialize)]
1564#[serde(rename_all = "camelCase")]
1565pub struct HookEndData {
1566 #[serde(skip_serializing_if = "Option::is_none")]
1568 pub error: Option<HookEndError>,
1569 pub hook_invocation_id: String,
1571 pub hook_type: String,
1573 #[serde(skip_serializing_if = "Option::is_none")]
1575 pub output: Option<serde_json::Value>,
1576 pub success: bool,
1578}
1579
1580#[derive(Debug, Clone, Serialize, Deserialize)]
1582#[serde(rename_all = "camelCase")]
1583pub struct SystemMessageMetadata {
1584 #[serde(skip_serializing_if = "Option::is_none")]
1586 pub prompt_version: Option<String>,
1587 #[serde(default)]
1589 pub variables: HashMap<String, serde_json::Value>,
1590}
1591
1592#[derive(Debug, Clone, Serialize, Deserialize)]
1594#[serde(rename_all = "camelCase")]
1595pub struct SystemMessageData {
1596 pub content: String,
1598 #[serde(skip_serializing_if = "Option::is_none")]
1600 pub metadata: Option<SystemMessageMetadata>,
1601 #[serde(skip_serializing_if = "Option::is_none")]
1603 pub name: Option<String>,
1604 pub role: SystemMessageRole,
1606}
1607
1608#[derive(Debug, Clone, Serialize, Deserialize)]
1610#[serde(rename_all = "camelCase")]
1611pub struct SystemNotificationData {
1612 pub content: String,
1614 pub kind: serde_json::Value,
1616}
1617
1618#[derive(Debug, Clone, Serialize, Deserialize)]
1619#[serde(rename_all = "camelCase")]
1620pub struct PermissionRequestShellCommand {
1621 pub identifier: String,
1623 pub read_only: bool,
1625}
1626
1627#[derive(Debug, Clone, Serialize, Deserialize)]
1628#[serde(rename_all = "camelCase")]
1629pub struct PermissionRequestShellPossibleUrl {
1630 pub url: String,
1632}
1633
1634#[derive(Debug, Clone, Serialize, Deserialize)]
1636#[serde(rename_all = "camelCase")]
1637pub struct PermissionRequestShell {
1638 pub can_offer_session_approval: bool,
1640 pub commands: Vec<PermissionRequestShellCommand>,
1642 pub full_command_text: String,
1644 pub has_write_file_redirection: bool,
1646 pub intention: String,
1648 pub kind: PermissionRequestShellKind,
1650 pub possible_paths: Vec<String>,
1652 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
1654 #[serde(skip_serializing_if = "Option::is_none")]
1656 pub tool_call_id: Option<String>,
1657 #[serde(skip_serializing_if = "Option::is_none")]
1659 pub warning: Option<String>,
1660}
1661
1662#[derive(Debug, Clone, Serialize, Deserialize)]
1664#[serde(rename_all = "camelCase")]
1665pub struct PermissionRequestWrite {
1666 pub can_offer_session_approval: bool,
1668 pub diff: String,
1670 pub file_name: String,
1672 pub intention: String,
1674 pub kind: PermissionRequestWriteKind,
1676 #[serde(skip_serializing_if = "Option::is_none")]
1678 pub new_file_contents: Option<String>,
1679 #[serde(skip_serializing_if = "Option::is_none")]
1681 pub tool_call_id: Option<String>,
1682}
1683
1684#[derive(Debug, Clone, Serialize, Deserialize)]
1686#[serde(rename_all = "camelCase")]
1687pub struct PermissionRequestRead {
1688 pub intention: String,
1690 pub kind: PermissionRequestReadKind,
1692 pub path: String,
1694 #[serde(skip_serializing_if = "Option::is_none")]
1696 pub tool_call_id: Option<String>,
1697}
1698
1699#[derive(Debug, Clone, Serialize, Deserialize)]
1701#[serde(rename_all = "camelCase")]
1702pub struct PermissionRequestMcp {
1703 #[serde(skip_serializing_if = "Option::is_none")]
1705 pub args: Option<serde_json::Value>,
1706 pub kind: PermissionRequestMcpKind,
1708 pub read_only: bool,
1710 pub server_name: String,
1712 #[serde(skip_serializing_if = "Option::is_none")]
1714 pub tool_call_id: Option<String>,
1715 pub tool_name: String,
1717 pub tool_title: String,
1719}
1720
1721#[derive(Debug, Clone, Serialize, Deserialize)]
1723#[serde(rename_all = "camelCase")]
1724pub struct PermissionRequestUrl {
1725 pub intention: String,
1727 pub kind: PermissionRequestUrlKind,
1729 #[serde(skip_serializing_if = "Option::is_none")]
1731 pub tool_call_id: Option<String>,
1732 pub url: String,
1734}
1735
1736#[derive(Debug, Clone, Serialize, Deserialize)]
1738#[serde(rename_all = "camelCase")]
1739pub struct PermissionRequestMemory {
1740 #[serde(skip_serializing_if = "Option::is_none")]
1742 pub action: Option<PermissionRequestMemoryAction>,
1743 #[serde(skip_serializing_if = "Option::is_none")]
1745 pub citations: Option<String>,
1746 #[serde(skip_serializing_if = "Option::is_none")]
1748 pub direction: Option<PermissionRequestMemoryDirection>,
1749 pub fact: String,
1751 pub kind: PermissionRequestMemoryKind,
1753 #[serde(skip_serializing_if = "Option::is_none")]
1755 pub reason: Option<String>,
1756 #[serde(skip_serializing_if = "Option::is_none")]
1758 pub subject: Option<String>,
1759 #[serde(skip_serializing_if = "Option::is_none")]
1761 pub tool_call_id: Option<String>,
1762}
1763
1764#[derive(Debug, Clone, Serialize, Deserialize)]
1766#[serde(rename_all = "camelCase")]
1767pub struct PermissionRequestCustomTool {
1768 #[serde(skip_serializing_if = "Option::is_none")]
1770 pub args: Option<serde_json::Value>,
1771 pub kind: PermissionRequestCustomToolKind,
1773 #[serde(skip_serializing_if = "Option::is_none")]
1775 pub tool_call_id: Option<String>,
1776 pub tool_description: String,
1778 pub tool_name: String,
1780}
1781
1782#[derive(Debug, Clone, Serialize, Deserialize)]
1784#[serde(rename_all = "camelCase")]
1785pub struct PermissionRequestHook {
1786 #[serde(skip_serializing_if = "Option::is_none")]
1788 pub hook_message: Option<String>,
1789 pub kind: PermissionRequestHookKind,
1791 #[serde(skip_serializing_if = "Option::is_none")]
1793 pub tool_args: Option<serde_json::Value>,
1794 #[serde(skip_serializing_if = "Option::is_none")]
1796 pub tool_call_id: Option<String>,
1797 pub tool_name: String,
1799}
1800
1801#[derive(Debug, Clone, Serialize, Deserialize)]
1803#[serde(rename_all = "camelCase")]
1804pub struct PermissionRequestExtensionManagement {
1805 #[serde(skip_serializing_if = "Option::is_none")]
1807 pub extension_name: Option<String>,
1808 pub kind: PermissionRequestExtensionManagementKind,
1810 pub operation: String,
1812 #[serde(skip_serializing_if = "Option::is_none")]
1814 pub tool_call_id: Option<String>,
1815}
1816
1817#[derive(Debug, Clone, Serialize, Deserialize)]
1819#[serde(rename_all = "camelCase")]
1820pub struct PermissionRequestExtensionPermissionAccess {
1821 pub capabilities: Vec<String>,
1823 pub extension_name: String,
1825 pub kind: PermissionRequestExtensionPermissionAccessKind,
1827 #[serde(skip_serializing_if = "Option::is_none")]
1829 pub tool_call_id: Option<String>,
1830}
1831
1832#[derive(Debug, Clone, Serialize, Deserialize)]
1834#[serde(rename_all = "camelCase")]
1835pub struct PermissionPromptRequestCommands {
1836 pub can_offer_session_approval: bool,
1838 pub command_identifiers: Vec<String>,
1840 pub full_command_text: String,
1842 pub intention: String,
1844 pub kind: PermissionPromptRequestCommandsKind,
1846 #[serde(skip_serializing_if = "Option::is_none")]
1848 pub tool_call_id: Option<String>,
1849 #[serde(skip_serializing_if = "Option::is_none")]
1851 pub warning: Option<String>,
1852}
1853
1854#[derive(Debug, Clone, Serialize, Deserialize)]
1856#[serde(rename_all = "camelCase")]
1857pub struct PermissionPromptRequestWrite {
1858 pub can_offer_session_approval: bool,
1860 pub diff: String,
1862 pub file_name: String,
1864 pub intention: String,
1866 pub kind: PermissionPromptRequestWriteKind,
1868 #[serde(skip_serializing_if = "Option::is_none")]
1870 pub new_file_contents: Option<String>,
1871 #[serde(skip_serializing_if = "Option::is_none")]
1873 pub tool_call_id: Option<String>,
1874}
1875
1876#[derive(Debug, Clone, Serialize, Deserialize)]
1878#[serde(rename_all = "camelCase")]
1879pub struct PermissionPromptRequestRead {
1880 pub intention: String,
1882 pub kind: PermissionPromptRequestReadKind,
1884 pub path: String,
1886 #[serde(skip_serializing_if = "Option::is_none")]
1888 pub tool_call_id: Option<String>,
1889}
1890
1891#[derive(Debug, Clone, Serialize, Deserialize)]
1893#[serde(rename_all = "camelCase")]
1894pub struct PermissionPromptRequestMcp {
1895 #[serde(skip_serializing_if = "Option::is_none")]
1897 pub args: Option<serde_json::Value>,
1898 pub kind: PermissionPromptRequestMcpKind,
1900 pub server_name: String,
1902 #[serde(skip_serializing_if = "Option::is_none")]
1904 pub tool_call_id: Option<String>,
1905 pub tool_name: String,
1907 pub tool_title: String,
1909}
1910
1911#[derive(Debug, Clone, Serialize, Deserialize)]
1913#[serde(rename_all = "camelCase")]
1914pub struct PermissionPromptRequestUrl {
1915 pub intention: String,
1917 pub kind: PermissionPromptRequestUrlKind,
1919 #[serde(skip_serializing_if = "Option::is_none")]
1921 pub tool_call_id: Option<String>,
1922 pub url: String,
1924}
1925
1926#[derive(Debug, Clone, Serialize, Deserialize)]
1928#[serde(rename_all = "camelCase")]
1929pub struct PermissionPromptRequestMemory {
1930 #[serde(skip_serializing_if = "Option::is_none")]
1932 pub action: Option<PermissionPromptRequestMemoryAction>,
1933 #[serde(skip_serializing_if = "Option::is_none")]
1935 pub citations: Option<String>,
1936 #[serde(skip_serializing_if = "Option::is_none")]
1938 pub direction: Option<PermissionPromptRequestMemoryDirection>,
1939 pub fact: String,
1941 pub kind: PermissionPromptRequestMemoryKind,
1943 #[serde(skip_serializing_if = "Option::is_none")]
1945 pub reason: Option<String>,
1946 #[serde(skip_serializing_if = "Option::is_none")]
1948 pub subject: Option<String>,
1949 #[serde(skip_serializing_if = "Option::is_none")]
1951 pub tool_call_id: Option<String>,
1952}
1953
1954#[derive(Debug, Clone, Serialize, Deserialize)]
1956#[serde(rename_all = "camelCase")]
1957pub struct PermissionPromptRequestCustomTool {
1958 #[serde(skip_serializing_if = "Option::is_none")]
1960 pub args: Option<serde_json::Value>,
1961 pub kind: PermissionPromptRequestCustomToolKind,
1963 #[serde(skip_serializing_if = "Option::is_none")]
1965 pub tool_call_id: Option<String>,
1966 pub tool_description: String,
1968 pub tool_name: String,
1970}
1971
1972#[derive(Debug, Clone, Serialize, Deserialize)]
1974#[serde(rename_all = "camelCase")]
1975pub struct PermissionPromptRequestPath {
1976 pub access_kind: PermissionPromptRequestPathAccessKind,
1978 pub kind: PermissionPromptRequestPathKind,
1980 pub paths: Vec<String>,
1982 #[serde(skip_serializing_if = "Option::is_none")]
1984 pub tool_call_id: Option<String>,
1985}
1986
1987#[derive(Debug, Clone, Serialize, Deserialize)]
1989#[serde(rename_all = "camelCase")]
1990pub struct PermissionPromptRequestHook {
1991 #[serde(skip_serializing_if = "Option::is_none")]
1993 pub hook_message: Option<String>,
1994 pub kind: PermissionPromptRequestHookKind,
1996 #[serde(skip_serializing_if = "Option::is_none")]
1998 pub tool_args: Option<serde_json::Value>,
1999 #[serde(skip_serializing_if = "Option::is_none")]
2001 pub tool_call_id: Option<String>,
2002 pub tool_name: String,
2004}
2005
2006#[derive(Debug, Clone, Serialize, Deserialize)]
2008#[serde(rename_all = "camelCase")]
2009pub struct PermissionPromptRequestExtensionManagement {
2010 #[serde(skip_serializing_if = "Option::is_none")]
2012 pub extension_name: Option<String>,
2013 pub kind: PermissionPromptRequestExtensionManagementKind,
2015 pub operation: String,
2017 #[serde(skip_serializing_if = "Option::is_none")]
2019 pub tool_call_id: Option<String>,
2020}
2021
2022#[derive(Debug, Clone, Serialize, Deserialize)]
2024#[serde(rename_all = "camelCase")]
2025pub struct PermissionPromptRequestExtensionPermissionAccess {
2026 pub capabilities: Vec<String>,
2028 pub extension_name: String,
2030 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
2032 #[serde(skip_serializing_if = "Option::is_none")]
2034 pub tool_call_id: Option<String>,
2035}
2036
2037#[derive(Debug, Clone, Serialize, Deserialize)]
2039#[serde(rename_all = "camelCase")]
2040pub struct PermissionRequestedData {
2041 pub permission_request: PermissionRequest,
2043 #[serde(skip_serializing_if = "Option::is_none")]
2045 pub prompt_request: Option<PermissionPromptRequest>,
2046 pub request_id: RequestId,
2048 #[serde(skip_serializing_if = "Option::is_none")]
2050 pub resolved_by_hook: Option<bool>,
2051}
2052
2053#[derive(Debug, Clone, Serialize, Deserialize)]
2054#[serde(rename_all = "camelCase")]
2055pub struct PermissionApproved {
2056 pub kind: PermissionApprovedKind,
2058}
2059
2060#[derive(Debug, Clone, Serialize, Deserialize)]
2061#[serde(rename_all = "camelCase")]
2062pub struct UserToolSessionApprovalCommands {
2063 pub command_identifiers: Vec<String>,
2065 pub kind: UserToolSessionApprovalCommandsKind,
2067}
2068
2069#[derive(Debug, Clone, Serialize, Deserialize)]
2070#[serde(rename_all = "camelCase")]
2071pub struct UserToolSessionApprovalRead {
2072 pub kind: UserToolSessionApprovalReadKind,
2074}
2075
2076#[derive(Debug, Clone, Serialize, Deserialize)]
2077#[serde(rename_all = "camelCase")]
2078pub struct UserToolSessionApprovalWrite {
2079 pub kind: UserToolSessionApprovalWriteKind,
2081}
2082
2083#[derive(Debug, Clone, Serialize, Deserialize)]
2084#[serde(rename_all = "camelCase")]
2085pub struct UserToolSessionApprovalMcp {
2086 pub kind: UserToolSessionApprovalMcpKind,
2088 pub server_name: String,
2090 pub tool_name: Option<String>,
2092}
2093
2094#[derive(Debug, Clone, Serialize, Deserialize)]
2095#[serde(rename_all = "camelCase")]
2096pub struct UserToolSessionApprovalMemory {
2097 pub kind: UserToolSessionApprovalMemoryKind,
2099}
2100
2101#[derive(Debug, Clone, Serialize, Deserialize)]
2102#[serde(rename_all = "camelCase")]
2103pub struct UserToolSessionApprovalCustomTool {
2104 pub kind: UserToolSessionApprovalCustomToolKind,
2106 pub tool_name: String,
2108}
2109
2110#[derive(Debug, Clone, Serialize, Deserialize)]
2111#[serde(rename_all = "camelCase")]
2112pub struct UserToolSessionApprovalExtensionManagement {
2113 pub kind: UserToolSessionApprovalExtensionManagementKind,
2115 #[serde(skip_serializing_if = "Option::is_none")]
2117 pub operation: Option<String>,
2118}
2119
2120#[derive(Debug, Clone, Serialize, Deserialize)]
2121#[serde(rename_all = "camelCase")]
2122pub struct UserToolSessionApprovalExtensionPermissionAccess {
2123 pub extension_name: String,
2125 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
2127}
2128
2129#[derive(Debug, Clone, Serialize, Deserialize)]
2130#[serde(rename_all = "camelCase")]
2131pub struct PermissionApprovedForSession {
2132 pub approval: UserToolSessionApproval,
2134 pub kind: PermissionApprovedForSessionKind,
2136}
2137
2138#[derive(Debug, Clone, Serialize, Deserialize)]
2139#[serde(rename_all = "camelCase")]
2140pub struct PermissionApprovedForLocation {
2141 pub approval: UserToolSessionApproval,
2143 pub kind: PermissionApprovedForLocationKind,
2145 pub location_key: String,
2147}
2148
2149#[derive(Debug, Clone, Serialize, Deserialize)]
2150#[serde(rename_all = "camelCase")]
2151pub struct PermissionCancelled {
2152 pub kind: PermissionCancelledKind,
2154 #[serde(skip_serializing_if = "Option::is_none")]
2156 pub reason: Option<String>,
2157}
2158
2159#[derive(Debug, Clone, Serialize, Deserialize)]
2160#[serde(rename_all = "camelCase")]
2161pub struct PermissionRule {
2162 pub argument: Option<String>,
2164 pub kind: String,
2166}
2167
2168#[derive(Debug, Clone, Serialize, Deserialize)]
2169#[serde(rename_all = "camelCase")]
2170pub struct PermissionDeniedByRules {
2171 pub kind: PermissionDeniedByRulesKind,
2173 pub rules: Vec<PermissionRule>,
2175}
2176
2177#[derive(Debug, Clone, Serialize, Deserialize)]
2178#[serde(rename_all = "camelCase")]
2179pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
2180 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
2182}
2183
2184#[derive(Debug, Clone, Serialize, Deserialize)]
2185#[serde(rename_all = "camelCase")]
2186pub struct PermissionDeniedInteractivelyByUser {
2187 #[serde(skip_serializing_if = "Option::is_none")]
2189 pub feedback: Option<String>,
2190 #[serde(skip_serializing_if = "Option::is_none")]
2192 pub force_reject: Option<bool>,
2193 pub kind: PermissionDeniedInteractivelyByUserKind,
2195}
2196
2197#[derive(Debug, Clone, Serialize, Deserialize)]
2198#[serde(rename_all = "camelCase")]
2199pub struct PermissionDeniedByContentExclusionPolicy {
2200 pub kind: PermissionDeniedByContentExclusionPolicyKind,
2202 pub message: String,
2204 pub path: String,
2206}
2207
2208#[derive(Debug, Clone, Serialize, Deserialize)]
2209#[serde(rename_all = "camelCase")]
2210pub struct PermissionDeniedByPermissionRequestHook {
2211 #[serde(skip_serializing_if = "Option::is_none")]
2213 pub interrupt: Option<bool>,
2214 pub kind: PermissionDeniedByPermissionRequestHookKind,
2216 #[serde(skip_serializing_if = "Option::is_none")]
2218 pub message: Option<String>,
2219}
2220
2221#[derive(Debug, Clone, Serialize, Deserialize)]
2223#[serde(rename_all = "camelCase")]
2224pub struct PermissionCompletedData {
2225 pub request_id: RequestId,
2227 pub result: PermissionResult,
2229 #[serde(skip_serializing_if = "Option::is_none")]
2231 pub tool_call_id: Option<String>,
2232}
2233
2234#[derive(Debug, Clone, Serialize, Deserialize)]
2236#[serde(rename_all = "camelCase")]
2237pub struct UserInputRequestedData {
2238 #[serde(skip_serializing_if = "Option::is_none")]
2240 pub allow_freeform: Option<bool>,
2241 #[serde(default)]
2243 pub choices: Vec<String>,
2244 pub question: String,
2246 pub request_id: RequestId,
2248 #[serde(skip_serializing_if = "Option::is_none")]
2250 pub tool_call_id: Option<String>,
2251}
2252
2253#[derive(Debug, Clone, Serialize, Deserialize)]
2255#[serde(rename_all = "camelCase")]
2256pub struct UserInputCompletedData {
2257 #[serde(skip_serializing_if = "Option::is_none")]
2259 pub answer: Option<String>,
2260 pub request_id: RequestId,
2262 #[serde(skip_serializing_if = "Option::is_none")]
2264 pub was_freeform: Option<bool>,
2265}
2266
2267#[derive(Debug, Clone, Serialize, Deserialize)]
2269#[serde(rename_all = "camelCase")]
2270pub struct ElicitationRequestedSchema {
2271 pub properties: HashMap<String, serde_json::Value>,
2273 #[serde(default)]
2275 pub required: Vec<String>,
2276 pub r#type: ElicitationRequestedSchemaType,
2278}
2279
2280#[derive(Debug, Clone, Serialize, Deserialize)]
2282#[serde(rename_all = "camelCase")]
2283pub struct ElicitationRequestedData {
2284 #[serde(skip_serializing_if = "Option::is_none")]
2286 pub elicitation_source: Option<String>,
2287 pub message: String,
2289 #[serde(skip_serializing_if = "Option::is_none")]
2291 pub mode: Option<ElicitationRequestedMode>,
2292 #[serde(skip_serializing_if = "Option::is_none")]
2294 pub requested_schema: Option<ElicitationRequestedSchema>,
2295 pub request_id: RequestId,
2297 #[serde(skip_serializing_if = "Option::is_none")]
2299 pub tool_call_id: Option<String>,
2300 #[serde(skip_serializing_if = "Option::is_none")]
2302 pub url: Option<String>,
2303}
2304
2305#[derive(Debug, Clone, Serialize, Deserialize)]
2307#[serde(rename_all = "camelCase")]
2308pub struct ElicitationCompletedData {
2309 #[serde(skip_serializing_if = "Option::is_none")]
2311 pub action: Option<ElicitationCompletedAction>,
2312 #[serde(default)]
2314 pub content: HashMap<String, serde_json::Value>,
2315 pub request_id: RequestId,
2317}
2318
2319#[derive(Debug, Clone, Serialize, Deserialize)]
2321#[serde(rename_all = "camelCase")]
2322pub struct SamplingRequestedData {
2323 pub mcp_request_id: serde_json::Value,
2325 pub request_id: RequestId,
2327 pub server_name: String,
2329}
2330
2331#[derive(Debug, Clone, Serialize, Deserialize)]
2333#[serde(rename_all = "camelCase")]
2334pub struct SamplingCompletedData {
2335 pub request_id: RequestId,
2337}
2338
2339#[derive(Debug, Clone, Serialize, Deserialize)]
2341#[serde(rename_all = "camelCase")]
2342pub struct McpOauthRequiredStaticClientConfig {
2343 pub client_id: String,
2345 #[serde(skip_serializing_if = "Option::is_none")]
2347 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
2348 #[serde(skip_serializing_if = "Option::is_none")]
2350 pub public_client: Option<bool>,
2351}
2352
2353#[derive(Debug, Clone, Serialize, Deserialize)]
2355#[serde(rename_all = "camelCase")]
2356pub struct McpOauthRequiredData {
2357 pub request_id: RequestId,
2359 pub server_name: String,
2361 pub server_url: String,
2363 #[serde(skip_serializing_if = "Option::is_none")]
2365 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
2366}
2367
2368#[derive(Debug, Clone, Serialize, Deserialize)]
2370#[serde(rename_all = "camelCase")]
2371pub struct McpOauthCompletedData {
2372 pub request_id: RequestId,
2374}
2375
2376#[derive(Debug, Clone, Serialize, Deserialize)]
2378#[serde(rename_all = "camelCase")]
2379pub struct ExternalToolRequestedData {
2380 #[serde(skip_serializing_if = "Option::is_none")]
2382 pub arguments: Option<serde_json::Value>,
2383 pub request_id: RequestId,
2385 pub session_id: SessionId,
2387 pub tool_call_id: String,
2389 pub tool_name: String,
2391 #[serde(skip_serializing_if = "Option::is_none")]
2393 pub traceparent: Option<String>,
2394 #[serde(skip_serializing_if = "Option::is_none")]
2396 pub tracestate: Option<String>,
2397}
2398
2399#[derive(Debug, Clone, Serialize, Deserialize)]
2401#[serde(rename_all = "camelCase")]
2402pub struct ExternalToolCompletedData {
2403 pub request_id: RequestId,
2405}
2406
2407#[derive(Debug, Clone, Serialize, Deserialize)]
2409#[serde(rename_all = "camelCase")]
2410pub struct CommandQueuedData {
2411 pub command: String,
2413 pub request_id: RequestId,
2415}
2416
2417#[derive(Debug, Clone, Serialize, Deserialize)]
2419#[serde(rename_all = "camelCase")]
2420pub struct CommandExecuteData {
2421 pub args: String,
2423 pub command: String,
2425 pub command_name: String,
2427 pub request_id: RequestId,
2429}
2430
2431#[derive(Debug, Clone, Serialize, Deserialize)]
2433#[serde(rename_all = "camelCase")]
2434pub struct CommandCompletedData {
2435 pub request_id: RequestId,
2437}
2438
2439#[derive(Debug, Clone, Serialize, Deserialize)]
2441#[serde(rename_all = "camelCase")]
2442pub struct AutoModeSwitchRequestedData {
2443 #[serde(skip_serializing_if = "Option::is_none")]
2445 pub error_code: Option<String>,
2446 pub request_id: RequestId,
2448 #[serde(skip_serializing_if = "Option::is_none")]
2450 pub retry_after_seconds: Option<f64>,
2451}
2452
2453#[derive(Debug, Clone, Serialize, Deserialize)]
2455#[serde(rename_all = "camelCase")]
2456pub struct AutoModeSwitchCompletedData {
2457 pub request_id: RequestId,
2459 pub response: String,
2461}
2462
2463#[derive(Debug, Clone, Serialize, Deserialize)]
2464#[serde(rename_all = "camelCase")]
2465pub struct CommandsChangedCommand {
2466 #[serde(skip_serializing_if = "Option::is_none")]
2467 pub description: Option<String>,
2468 pub name: String,
2469}
2470
2471#[derive(Debug, Clone, Serialize, Deserialize)]
2473#[serde(rename_all = "camelCase")]
2474pub struct CommandsChangedData {
2475 pub commands: Vec<CommandsChangedCommand>,
2477}
2478
2479#[derive(Debug, Clone, Serialize, Deserialize)]
2481#[serde(rename_all = "camelCase")]
2482pub struct CapabilitiesChangedUI {
2483 #[serde(skip_serializing_if = "Option::is_none")]
2485 pub elicitation: Option<bool>,
2486}
2487
2488#[derive(Debug, Clone, Serialize, Deserialize)]
2490#[serde(rename_all = "camelCase")]
2491pub struct CapabilitiesChangedData {
2492 #[serde(skip_serializing_if = "Option::is_none")]
2494 pub ui: Option<CapabilitiesChangedUI>,
2495}
2496
2497#[derive(Debug, Clone, Serialize, Deserialize)]
2499#[serde(rename_all = "camelCase")]
2500pub struct ExitPlanModeRequestedData {
2501 pub actions: Vec<String>,
2503 pub plan_content: String,
2505 pub recommended_action: String,
2507 pub request_id: RequestId,
2509 pub summary: String,
2511}
2512
2513#[derive(Debug, Clone, Serialize, Deserialize)]
2515#[serde(rename_all = "camelCase")]
2516pub struct ExitPlanModeCompletedData {
2517 #[serde(skip_serializing_if = "Option::is_none")]
2519 pub approved: Option<bool>,
2520 #[serde(skip_serializing_if = "Option::is_none")]
2522 pub auto_approve_edits: Option<bool>,
2523 #[serde(skip_serializing_if = "Option::is_none")]
2525 pub feedback: Option<String>,
2526 pub request_id: RequestId,
2528 #[serde(skip_serializing_if = "Option::is_none")]
2530 pub selected_action: Option<String>,
2531}
2532
2533#[derive(Debug, Clone, Serialize, Deserialize)]
2534#[serde(rename_all = "camelCase")]
2535pub struct SessionToolsUpdatedData {
2536 pub model: String,
2537}
2538
2539#[derive(Debug, Clone, Serialize, Deserialize)]
2540#[serde(rename_all = "camelCase")]
2541pub struct SessionBackgroundTasksChangedData {}
2542
2543#[derive(Debug, Clone, Serialize, Deserialize)]
2544#[serde(rename_all = "camelCase")]
2545pub struct SkillsLoadedSkill {
2546 pub description: String,
2548 pub enabled: bool,
2550 pub name: String,
2552 #[serde(skip_serializing_if = "Option::is_none")]
2554 pub path: Option<String>,
2555 pub source: String,
2557 pub user_invocable: bool,
2559}
2560
2561#[derive(Debug, Clone, Serialize, Deserialize)]
2562#[serde(rename_all = "camelCase")]
2563pub struct SessionSkillsLoadedData {
2564 pub skills: Vec<SkillsLoadedSkill>,
2566}
2567
2568#[derive(Debug, Clone, Serialize, Deserialize)]
2569#[serde(rename_all = "camelCase")]
2570pub struct CustomAgentsUpdatedAgent {
2571 pub description: String,
2573 pub display_name: String,
2575 pub id: String,
2577 #[serde(skip_serializing_if = "Option::is_none")]
2579 pub model: Option<String>,
2580 pub name: String,
2582 pub source: String,
2584 pub tools: Vec<String>,
2586 pub user_invocable: bool,
2588}
2589
2590#[derive(Debug, Clone, Serialize, Deserialize)]
2591#[serde(rename_all = "camelCase")]
2592pub struct SessionCustomAgentsUpdatedData {
2593 pub agents: Vec<CustomAgentsUpdatedAgent>,
2595 pub errors: Vec<String>,
2597 pub warnings: Vec<String>,
2599}
2600
2601#[derive(Debug, Clone, Serialize, Deserialize)]
2602#[serde(rename_all = "camelCase")]
2603pub struct McpServersLoadedServer {
2604 #[serde(skip_serializing_if = "Option::is_none")]
2606 pub error: Option<String>,
2607 pub name: String,
2609 #[serde(skip_serializing_if = "Option::is_none")]
2611 pub source: Option<String>,
2612 pub status: McpServersLoadedServerStatus,
2614}
2615
2616#[derive(Debug, Clone, Serialize, Deserialize)]
2617#[serde(rename_all = "camelCase")]
2618pub struct SessionMcpServersLoadedData {
2619 pub servers: Vec<McpServersLoadedServer>,
2621}
2622
2623#[derive(Debug, Clone, Serialize, Deserialize)]
2624#[serde(rename_all = "camelCase")]
2625pub struct SessionMcpServerStatusChangedData {
2626 pub server_name: String,
2628 pub status: McpServerStatusChangedStatus,
2630}
2631
2632#[derive(Debug, Clone, Serialize, Deserialize)]
2633#[serde(rename_all = "camelCase")]
2634pub struct ExtensionsLoadedExtension {
2635 pub id: String,
2637 pub name: String,
2639 pub source: ExtensionsLoadedExtensionSource,
2641 pub status: ExtensionsLoadedExtensionStatus,
2643}
2644
2645#[derive(Debug, Clone, Serialize, Deserialize)]
2646#[serde(rename_all = "camelCase")]
2647pub struct SessionExtensionsLoadedData {
2648 pub extensions: Vec<ExtensionsLoadedExtension>,
2650}
2651
2652#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2654pub enum WorkingDirectoryContextHostType {
2655 #[serde(rename = "github")]
2656 Github,
2657 #[serde(rename = "ado")]
2658 Ado,
2659 #[serde(other)]
2661 Unknown,
2662}
2663
2664#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2666pub enum PlanChangedOperation {
2667 #[serde(rename = "create")]
2668 Create,
2669 #[serde(rename = "update")]
2670 Update,
2671 #[serde(rename = "delete")]
2672 Delete,
2673 #[serde(other)]
2675 Unknown,
2676}
2677
2678#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2680pub enum WorkspaceFileChangedOperation {
2681 #[serde(rename = "create")]
2682 Create,
2683 #[serde(rename = "update")]
2684 Update,
2685 #[serde(other)]
2687 Unknown,
2688}
2689
2690#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2692pub enum HandoffSourceType {
2693 #[serde(rename = "remote")]
2694 Remote,
2695 #[serde(rename = "local")]
2696 Local,
2697 #[serde(other)]
2699 Unknown,
2700}
2701
2702#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2704pub enum ShutdownType {
2705 #[serde(rename = "routine")]
2706 Routine,
2707 #[serde(rename = "error")]
2708 Error,
2709 #[serde(other)]
2711 Unknown,
2712}
2713
2714#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2716pub enum UserMessageAgentMode {
2717 #[serde(rename = "interactive")]
2718 Interactive,
2719 #[serde(rename = "plan")]
2720 Plan,
2721 #[serde(rename = "autopilot")]
2722 Autopilot,
2723 #[serde(rename = "shell")]
2724 Shell,
2725 #[serde(other)]
2727 Unknown,
2728}
2729
2730#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2732pub enum AssistantMessageToolRequestType {
2733 #[serde(rename = "function")]
2734 Function,
2735 #[serde(rename = "custom")]
2736 Custom,
2737 #[serde(other)]
2739 Unknown,
2740}
2741
2742#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2744pub enum ModelCallFailureSource {
2745 #[serde(rename = "top_level")]
2746 TopLevel,
2747 #[serde(rename = "subagent")]
2748 Subagent,
2749 #[serde(rename = "mcp_sampling")]
2750 McpSampling,
2751 #[serde(other)]
2753 Unknown,
2754}
2755
2756#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2758pub enum AbortReason {
2759 #[serde(rename = "user_initiated")]
2760 UserInitiated,
2761 #[serde(rename = "remote_command")]
2762 RemoteCommand,
2763 #[serde(rename = "user_abort")]
2764 UserAbort,
2765 #[serde(other)]
2767 Unknown,
2768}
2769
2770#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2772pub enum SystemMessageRole {
2773 #[serde(rename = "system")]
2774 System,
2775 #[serde(rename = "developer")]
2776 Developer,
2777 #[serde(other)]
2779 Unknown,
2780}
2781
2782#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2784pub enum PermissionRequestShellKind {
2785 #[serde(rename = "shell")]
2786 Shell,
2787}
2788
2789#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2791pub enum PermissionRequestWriteKind {
2792 #[serde(rename = "write")]
2793 Write,
2794}
2795
2796#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2798pub enum PermissionRequestReadKind {
2799 #[serde(rename = "read")]
2800 Read,
2801}
2802
2803#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2805pub enum PermissionRequestMcpKind {
2806 #[serde(rename = "mcp")]
2807 Mcp,
2808}
2809
2810#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2812pub enum PermissionRequestUrlKind {
2813 #[serde(rename = "url")]
2814 Url,
2815}
2816
2817#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2819pub enum PermissionRequestMemoryAction {
2820 #[serde(rename = "store")]
2821 Store,
2822 #[serde(rename = "vote")]
2823 Vote,
2824 #[serde(other)]
2826 Unknown,
2827}
2828
2829#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2831pub enum PermissionRequestMemoryDirection {
2832 #[serde(rename = "upvote")]
2833 Upvote,
2834 #[serde(rename = "downvote")]
2835 Downvote,
2836 #[serde(other)]
2838 Unknown,
2839}
2840
2841#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2843pub enum PermissionRequestMemoryKind {
2844 #[serde(rename = "memory")]
2845 Memory,
2846}
2847
2848#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2850pub enum PermissionRequestCustomToolKind {
2851 #[serde(rename = "custom-tool")]
2852 CustomTool,
2853}
2854
2855#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2857pub enum PermissionRequestHookKind {
2858 #[serde(rename = "hook")]
2859 Hook,
2860}
2861
2862#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2864pub enum PermissionRequestExtensionManagementKind {
2865 #[serde(rename = "extension-management")]
2866 ExtensionManagement,
2867}
2868
2869#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2871pub enum PermissionRequestExtensionPermissionAccessKind {
2872 #[serde(rename = "extension-permission-access")]
2873 ExtensionPermissionAccess,
2874}
2875
2876#[derive(Debug, Clone, Serialize, Deserialize)]
2878#[serde(untagged)]
2879pub enum PermissionRequest {
2880 Shell(PermissionRequestShell),
2881 Write(PermissionRequestWrite),
2882 Read(PermissionRequestRead),
2883 Mcp(PermissionRequestMcp),
2884 Url(PermissionRequestUrl),
2885 Memory(PermissionRequestMemory),
2886 CustomTool(PermissionRequestCustomTool),
2887 Hook(PermissionRequestHook),
2888 ExtensionManagement(PermissionRequestExtensionManagement),
2889 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
2890}
2891
2892#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2894pub enum PermissionPromptRequestCommandsKind {
2895 #[serde(rename = "commands")]
2896 Commands,
2897}
2898
2899#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2901pub enum PermissionPromptRequestWriteKind {
2902 #[serde(rename = "write")]
2903 Write,
2904}
2905
2906#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2908pub enum PermissionPromptRequestReadKind {
2909 #[serde(rename = "read")]
2910 Read,
2911}
2912
2913#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2915pub enum PermissionPromptRequestMcpKind {
2916 #[serde(rename = "mcp")]
2917 Mcp,
2918}
2919
2920#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2922pub enum PermissionPromptRequestUrlKind {
2923 #[serde(rename = "url")]
2924 Url,
2925}
2926
2927#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2929pub enum PermissionPromptRequestMemoryAction {
2930 #[serde(rename = "store")]
2931 Store,
2932 #[serde(rename = "vote")]
2933 Vote,
2934 #[serde(other)]
2936 Unknown,
2937}
2938
2939#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2941pub enum PermissionPromptRequestMemoryDirection {
2942 #[serde(rename = "upvote")]
2943 Upvote,
2944 #[serde(rename = "downvote")]
2945 Downvote,
2946 #[serde(other)]
2948 Unknown,
2949}
2950
2951#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2953pub enum PermissionPromptRequestMemoryKind {
2954 #[serde(rename = "memory")]
2955 Memory,
2956}
2957
2958#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2960pub enum PermissionPromptRequestCustomToolKind {
2961 #[serde(rename = "custom-tool")]
2962 CustomTool,
2963}
2964
2965#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2967pub enum PermissionPromptRequestPathAccessKind {
2968 #[serde(rename = "read")]
2969 Read,
2970 #[serde(rename = "shell")]
2971 Shell,
2972 #[serde(rename = "write")]
2973 Write,
2974 #[serde(other)]
2976 Unknown,
2977}
2978
2979#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2981pub enum PermissionPromptRequestPathKind {
2982 #[serde(rename = "path")]
2983 Path,
2984}
2985
2986#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2988pub enum PermissionPromptRequestHookKind {
2989 #[serde(rename = "hook")]
2990 Hook,
2991}
2992
2993#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2995pub enum PermissionPromptRequestExtensionManagementKind {
2996 #[serde(rename = "extension-management")]
2997 ExtensionManagement,
2998}
2999
3000#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3002pub enum PermissionPromptRequestExtensionPermissionAccessKind {
3003 #[serde(rename = "extension-permission-access")]
3004 ExtensionPermissionAccess,
3005}
3006
3007#[derive(Debug, Clone, Serialize, Deserialize)]
3009#[serde(untagged)]
3010pub enum PermissionPromptRequest {
3011 Commands(PermissionPromptRequestCommands),
3012 Write(PermissionPromptRequestWrite),
3013 Read(PermissionPromptRequestRead),
3014 Mcp(PermissionPromptRequestMcp),
3015 Url(PermissionPromptRequestUrl),
3016 Memory(PermissionPromptRequestMemory),
3017 CustomTool(PermissionPromptRequestCustomTool),
3018 Path(PermissionPromptRequestPath),
3019 Hook(PermissionPromptRequestHook),
3020 ExtensionManagement(PermissionPromptRequestExtensionManagement),
3021 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
3022}
3023
3024#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3026pub enum PermissionApprovedKind {
3027 #[serde(rename = "approved")]
3028 Approved,
3029}
3030
3031#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3033pub enum UserToolSessionApprovalCommandsKind {
3034 #[serde(rename = "commands")]
3035 Commands,
3036}
3037
3038#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3040pub enum UserToolSessionApprovalReadKind {
3041 #[serde(rename = "read")]
3042 Read,
3043}
3044
3045#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3047pub enum UserToolSessionApprovalWriteKind {
3048 #[serde(rename = "write")]
3049 Write,
3050}
3051
3052#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3054pub enum UserToolSessionApprovalMcpKind {
3055 #[serde(rename = "mcp")]
3056 Mcp,
3057}
3058
3059#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3061pub enum UserToolSessionApprovalMemoryKind {
3062 #[serde(rename = "memory")]
3063 Memory,
3064}
3065
3066#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3068pub enum UserToolSessionApprovalCustomToolKind {
3069 #[serde(rename = "custom-tool")]
3070 CustomTool,
3071}
3072
3073#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3075pub enum UserToolSessionApprovalExtensionManagementKind {
3076 #[serde(rename = "extension-management")]
3077 ExtensionManagement,
3078}
3079
3080#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3082pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
3083 #[serde(rename = "extension-permission-access")]
3084 ExtensionPermissionAccess,
3085}
3086
3087#[derive(Debug, Clone, Serialize, Deserialize)]
3089#[serde(untagged)]
3090pub enum UserToolSessionApproval {
3091 Commands(UserToolSessionApprovalCommands),
3092 Read(UserToolSessionApprovalRead),
3093 Write(UserToolSessionApprovalWrite),
3094 Mcp(UserToolSessionApprovalMcp),
3095 Memory(UserToolSessionApprovalMemory),
3096 CustomTool(UserToolSessionApprovalCustomTool),
3097 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
3098 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
3099}
3100
3101#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3103pub enum PermissionApprovedForSessionKind {
3104 #[serde(rename = "approved-for-session")]
3105 ApprovedForSession,
3106}
3107
3108#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3110pub enum PermissionApprovedForLocationKind {
3111 #[serde(rename = "approved-for-location")]
3112 ApprovedForLocation,
3113}
3114
3115#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3117pub enum PermissionCancelledKind {
3118 #[serde(rename = "cancelled")]
3119 Cancelled,
3120}
3121
3122#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3124pub enum PermissionDeniedByRulesKind {
3125 #[serde(rename = "denied-by-rules")]
3126 DeniedByRules,
3127}
3128
3129#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3131pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
3132 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
3133 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
3134}
3135
3136#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3138pub enum PermissionDeniedInteractivelyByUserKind {
3139 #[serde(rename = "denied-interactively-by-user")]
3140 DeniedInteractivelyByUser,
3141}
3142
3143#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3145pub enum PermissionDeniedByContentExclusionPolicyKind {
3146 #[serde(rename = "denied-by-content-exclusion-policy")]
3147 DeniedByContentExclusionPolicy,
3148}
3149
3150#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3152pub enum PermissionDeniedByPermissionRequestHookKind {
3153 #[serde(rename = "denied-by-permission-request-hook")]
3154 DeniedByPermissionRequestHook,
3155}
3156
3157#[derive(Debug, Clone, Serialize, Deserialize)]
3159#[serde(untagged)]
3160pub enum PermissionResult {
3161 Approved(PermissionApproved),
3162 ApprovedForSession(PermissionApprovedForSession),
3163 ApprovedForLocation(PermissionApprovedForLocation),
3164 Cancelled(PermissionCancelled),
3165 DeniedByRules(PermissionDeniedByRules),
3166 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
3167 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
3168 ),
3169 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
3170 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
3171 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
3172}
3173
3174#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3176pub enum ElicitationRequestedMode {
3177 #[serde(rename = "form")]
3178 Form,
3179 #[serde(rename = "url")]
3180 Url,
3181 #[serde(other)]
3183 Unknown,
3184}
3185
3186#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3188pub enum ElicitationRequestedSchemaType {
3189 #[serde(rename = "object")]
3190 Object,
3191}
3192
3193#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3195pub enum ElicitationCompletedAction {
3196 #[serde(rename = "accept")]
3197 Accept,
3198 #[serde(rename = "decline")]
3199 Decline,
3200 #[serde(rename = "cancel")]
3201 Cancel,
3202 #[serde(other)]
3204 Unknown,
3205}
3206
3207#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3209pub enum McpOauthRequiredStaticClientConfigGrantType {
3210 #[serde(rename = "client_credentials")]
3211 ClientCredentials,
3212}
3213
3214#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3216pub enum McpServersLoadedServerStatus {
3217 #[serde(rename = "connected")]
3218 Connected,
3219 #[serde(rename = "failed")]
3220 Failed,
3221 #[serde(rename = "needs-auth")]
3222 NeedsAuth,
3223 #[serde(rename = "pending")]
3224 Pending,
3225 #[serde(rename = "disabled")]
3226 Disabled,
3227 #[serde(rename = "not_configured")]
3228 NotConfigured,
3229 #[serde(other)]
3231 Unknown,
3232}
3233
3234#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3236pub enum McpServerStatusChangedStatus {
3237 #[serde(rename = "connected")]
3238 Connected,
3239 #[serde(rename = "failed")]
3240 Failed,
3241 #[serde(rename = "needs-auth")]
3242 NeedsAuth,
3243 #[serde(rename = "pending")]
3244 Pending,
3245 #[serde(rename = "disabled")]
3246 Disabled,
3247 #[serde(rename = "not_configured")]
3248 NotConfigured,
3249 #[serde(other)]
3251 Unknown,
3252}
3253
3254#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3256pub enum ExtensionsLoadedExtensionSource {
3257 #[serde(rename = "project")]
3258 Project,
3259 #[serde(rename = "user")]
3260 User,
3261 #[serde(other)]
3263 Unknown,
3264}
3265
3266#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
3268pub enum ExtensionsLoadedExtensionStatus {
3269 #[serde(rename = "running")]
3270 Running,
3271 #[serde(rename = "disabled")]
3272 Disabled,
3273 #[serde(rename = "failed")]
3274 Failed,
3275 #[serde(rename = "starting")]
3276 Starting,
3277 #[serde(other)]
3279 Unknown,
3280}