1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7use crate::types::{RequestId, SessionId};
8
9#[derive(Debug, Clone, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
11pub enum SessionEventType {
12 #[serde(rename = "session.start")]
13 SessionStart,
14 #[serde(rename = "session.resume")]
15 SessionResume,
16 #[serde(rename = "session.remote_steerable_changed")]
17 SessionRemoteSteerableChanged,
18 #[serde(rename = "session.error")]
19 SessionError,
20 #[serde(rename = "session.idle")]
21 SessionIdle,
22 #[serde(rename = "session.title_changed")]
23 SessionTitleChanged,
24 #[serde(rename = "session.schedule_created")]
25 SessionScheduleCreated,
26 #[serde(rename = "session.schedule_cancelled")]
27 SessionScheduleCancelled,
28 #[serde(rename = "session.autopilot_objective_changed")]
29 SessionAutopilotObjectiveChanged,
30 #[serde(rename = "session.info")]
31 SessionInfo,
32 #[serde(rename = "session.warning")]
33 SessionWarning,
34 #[serde(rename = "session.model_change")]
35 SessionModelChange,
36 #[serde(rename = "session.mode_changed")]
37 SessionModeChanged,
38 #[serde(rename = "session.permissions_changed")]
39 SessionPermissionsChanged,
40 #[serde(rename = "session.plan_changed")]
41 SessionPlanChanged,
42 #[serde(rename = "session.todos_changed")]
43 SessionTodosChanged,
44 #[serde(rename = "session.workspace_file_changed")]
45 SessionWorkspaceFileChanged,
46 #[serde(rename = "session.handoff")]
47 SessionHandoff,
48 #[serde(rename = "session.truncation")]
49 SessionTruncation,
50 #[serde(rename = "session.snapshot_rewind")]
51 SessionSnapshotRewind,
52 #[serde(rename = "session.shutdown")]
53 SessionShutdown,
54 #[serde(rename = "session.context_changed")]
55 SessionContextChanged,
56 #[serde(rename = "session.usage_info")]
57 SessionUsageInfo,
58 #[serde(rename = "session.compaction_start")]
59 SessionCompactionStart,
60 #[serde(rename = "session.compaction_complete")]
61 SessionCompactionComplete,
62 #[serde(rename = "session.task_complete")]
63 SessionTaskComplete,
64 #[serde(rename = "user.message")]
65 UserMessage,
66 #[serde(rename = "pending_messages.modified")]
67 PendingMessagesModified,
68 #[serde(rename = "assistant.turn_start")]
69 AssistantTurnStart,
70 #[serde(rename = "assistant.intent")]
71 AssistantIntent,
72 #[serde(rename = "assistant.reasoning")]
73 AssistantReasoning,
74 #[serde(rename = "assistant.reasoning_delta")]
75 AssistantReasoningDelta,
76 #[serde(rename = "assistant.streaming_delta")]
77 AssistantStreamingDelta,
78 #[serde(rename = "assistant.message")]
79 AssistantMessage,
80 #[serde(rename = "assistant.message_start")]
81 AssistantMessageStart,
82 #[serde(rename = "assistant.message_delta")]
83 AssistantMessageDelta,
84 #[serde(rename = "assistant.turn_end")]
85 AssistantTurnEnd,
86 #[serde(rename = "assistant.usage")]
87 AssistantUsage,
88 #[serde(rename = "model.call_failure")]
89 ModelCallFailure,
90 #[serde(rename = "abort")]
91 Abort,
92 #[serde(rename = "tool.user_requested")]
93 ToolUserRequested,
94 #[serde(rename = "tool.execution_start")]
95 ToolExecutionStart,
96 #[serde(rename = "tool.execution_partial_result")]
97 ToolExecutionPartialResult,
98 #[serde(rename = "tool.execution_progress")]
99 ToolExecutionProgress,
100 #[serde(rename = "tool.execution_complete")]
101 ToolExecutionComplete,
102 #[serde(rename = "skill.invoked")]
103 SkillInvoked,
104 #[serde(rename = "subagent.started")]
105 SubagentStarted,
106 #[serde(rename = "subagent.completed")]
107 SubagentCompleted,
108 #[serde(rename = "subagent.failed")]
109 SubagentFailed,
110 #[serde(rename = "subagent.selected")]
111 SubagentSelected,
112 #[serde(rename = "subagent.deselected")]
113 SubagentDeselected,
114 #[serde(rename = "hook.start")]
115 HookStart,
116 #[serde(rename = "hook.end")]
117 HookEnd,
118 #[serde(rename = "hook.progress")]
119 HookProgress,
120 #[serde(rename = "session.binary_asset")]
128 SessionBinaryAsset,
129 #[serde(rename = "system.message")]
130 SystemMessage,
131 #[serde(rename = "system.notification")]
132 SystemNotification,
133 #[serde(rename = "permission.requested")]
134 PermissionRequested,
135 #[serde(rename = "permission.completed")]
136 PermissionCompleted,
137 #[serde(rename = "user_input.requested")]
138 UserInputRequested,
139 #[serde(rename = "user_input.completed")]
140 UserInputCompleted,
141 #[serde(rename = "elicitation.requested")]
142 ElicitationRequested,
143 #[serde(rename = "elicitation.completed")]
144 ElicitationCompleted,
145 #[serde(rename = "sampling.requested")]
146 SamplingRequested,
147 #[serde(rename = "sampling.completed")]
148 SamplingCompleted,
149 #[serde(rename = "mcp.oauth_required")]
150 McpOauthRequired,
151 #[serde(rename = "mcp.oauth_completed")]
152 McpOauthCompleted,
153 #[serde(rename = "session.custom_notification")]
154 SessionCustomNotification,
155 #[serde(rename = "external_tool.requested")]
156 ExternalToolRequested,
157 #[serde(rename = "external_tool.completed")]
158 ExternalToolCompleted,
159 #[serde(rename = "command.queued")]
160 CommandQueued,
161 #[serde(rename = "command.execute")]
162 CommandExecute,
163 #[serde(rename = "command.completed")]
164 CommandCompleted,
165 #[serde(rename = "auto_mode_switch.requested")]
166 AutoModeSwitchRequested,
167 #[serde(rename = "auto_mode_switch.completed")]
168 AutoModeSwitchCompleted,
169 #[serde(rename = "commands.changed")]
170 CommandsChanged,
171 #[serde(rename = "capabilities.changed")]
172 CapabilitiesChanged,
173 #[serde(rename = "exit_plan_mode.requested")]
174 ExitPlanModeRequested,
175 #[serde(rename = "exit_plan_mode.completed")]
176 ExitPlanModeCompleted,
177 #[serde(rename = "session.tools_updated")]
178 SessionToolsUpdated,
179 #[serde(rename = "session.background_tasks_changed")]
180 SessionBackgroundTasksChanged,
181 #[serde(rename = "session.skills_loaded")]
182 SessionSkillsLoaded,
183 #[serde(rename = "session.custom_agents_updated")]
184 SessionCustomAgentsUpdated,
185 #[serde(rename = "session.mcp_servers_loaded")]
186 SessionMcpServersLoaded,
187 #[serde(rename = "session.mcp_server_status_changed")]
188 SessionMcpServerStatusChanged,
189 #[serde(rename = "session.extensions_loaded")]
190 SessionExtensionsLoaded,
191 #[serde(rename = "session.canvas.opened")]
192 SessionCanvasOpened,
193 #[serde(rename = "session.canvas.registry_changed")]
194 SessionCanvasRegistryChanged,
195 #[serde(rename = "session.canvas.closed")]
196 SessionCanvasClosed,
197 #[serde(rename = "session.extensions.attachments_pushed")]
198 SessionExtensionsAttachmentsPushed,
199 #[serde(rename = "mcp_app.tool_call_complete")]
200 McpAppToolCallComplete,
201 #[default]
203 #[serde(other)]
204 Unknown,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
211#[serde(tag = "type", content = "data")]
212pub enum SessionEventData {
213 #[serde(rename = "session.start")]
214 SessionStart(SessionStartData),
215 #[serde(rename = "session.resume")]
216 SessionResume(SessionResumeData),
217 #[serde(rename = "session.remote_steerable_changed")]
218 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
219 #[serde(rename = "session.error")]
220 SessionError(SessionErrorData),
221 #[serde(rename = "session.idle")]
222 SessionIdle(SessionIdleData),
223 #[serde(rename = "session.title_changed")]
224 SessionTitleChanged(SessionTitleChangedData),
225 #[serde(rename = "session.schedule_created")]
226 SessionScheduleCreated(SessionScheduleCreatedData),
227 #[serde(rename = "session.schedule_cancelled")]
228 SessionScheduleCancelled(SessionScheduleCancelledData),
229 #[serde(rename = "session.autopilot_objective_changed")]
230 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
231 #[serde(rename = "session.info")]
232 SessionInfo(SessionInfoData),
233 #[serde(rename = "session.warning")]
234 SessionWarning(SessionWarningData),
235 #[serde(rename = "session.model_change")]
236 SessionModelChange(SessionModelChangeData),
237 #[serde(rename = "session.mode_changed")]
238 SessionModeChanged(SessionModeChangedData),
239 #[serde(rename = "session.permissions_changed")]
240 SessionPermissionsChanged(SessionPermissionsChangedData),
241 #[serde(rename = "session.plan_changed")]
242 SessionPlanChanged(SessionPlanChangedData),
243 #[serde(rename = "session.todos_changed")]
244 SessionTodosChanged(SessionTodosChangedData),
245 #[serde(rename = "session.workspace_file_changed")]
246 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
247 #[serde(rename = "session.handoff")]
248 SessionHandoff(SessionHandoffData),
249 #[serde(rename = "session.truncation")]
250 SessionTruncation(SessionTruncationData),
251 #[serde(rename = "session.snapshot_rewind")]
252 SessionSnapshotRewind(SessionSnapshotRewindData),
253 #[serde(rename = "session.shutdown")]
254 SessionShutdown(SessionShutdownData),
255 #[serde(rename = "session.context_changed")]
256 SessionContextChanged(SessionContextChangedData),
257 #[serde(rename = "session.usage_info")]
258 SessionUsageInfo(SessionUsageInfoData),
259 #[serde(rename = "session.compaction_start")]
260 SessionCompactionStart(SessionCompactionStartData),
261 #[serde(rename = "session.compaction_complete")]
262 SessionCompactionComplete(SessionCompactionCompleteData),
263 #[serde(rename = "session.task_complete")]
264 SessionTaskComplete(SessionTaskCompleteData),
265 #[serde(rename = "user.message")]
266 UserMessage(UserMessageData),
267 #[serde(rename = "pending_messages.modified")]
268 PendingMessagesModified(PendingMessagesModifiedData),
269 #[serde(rename = "assistant.turn_start")]
270 AssistantTurnStart(AssistantTurnStartData),
271 #[serde(rename = "assistant.intent")]
272 AssistantIntent(AssistantIntentData),
273 #[serde(rename = "assistant.reasoning")]
274 AssistantReasoning(AssistantReasoningData),
275 #[serde(rename = "assistant.reasoning_delta")]
276 AssistantReasoningDelta(AssistantReasoningDeltaData),
277 #[serde(rename = "assistant.streaming_delta")]
278 AssistantStreamingDelta(AssistantStreamingDeltaData),
279 #[serde(rename = "assistant.message")]
280 AssistantMessage(AssistantMessageData),
281 #[serde(rename = "assistant.message_start")]
282 AssistantMessageStart(AssistantMessageStartData),
283 #[serde(rename = "assistant.message_delta")]
284 AssistantMessageDelta(AssistantMessageDeltaData),
285 #[serde(rename = "assistant.turn_end")]
286 AssistantTurnEnd(AssistantTurnEndData),
287 #[serde(rename = "assistant.usage")]
288 AssistantUsage(AssistantUsageData),
289 #[serde(rename = "model.call_failure")]
290 ModelCallFailure(ModelCallFailureData),
291 #[serde(rename = "abort")]
292 Abort(AbortData),
293 #[serde(rename = "tool.user_requested")]
294 ToolUserRequested(ToolUserRequestedData),
295 #[serde(rename = "tool.execution_start")]
296 ToolExecutionStart(ToolExecutionStartData),
297 #[serde(rename = "tool.execution_partial_result")]
298 ToolExecutionPartialResult(ToolExecutionPartialResultData),
299 #[serde(rename = "tool.execution_progress")]
300 ToolExecutionProgress(ToolExecutionProgressData),
301 #[serde(rename = "tool.execution_complete")]
302 ToolExecutionComplete(ToolExecutionCompleteData),
303 #[serde(rename = "skill.invoked")]
304 SkillInvoked(SkillInvokedData),
305 #[serde(rename = "subagent.started")]
306 SubagentStarted(SubagentStartedData),
307 #[serde(rename = "subagent.completed")]
308 SubagentCompleted(SubagentCompletedData),
309 #[serde(rename = "subagent.failed")]
310 SubagentFailed(SubagentFailedData),
311 #[serde(rename = "subagent.selected")]
312 SubagentSelected(SubagentSelectedData),
313 #[serde(rename = "subagent.deselected")]
314 SubagentDeselected(SubagentDeselectedData),
315 #[serde(rename = "hook.start")]
316 HookStart(HookStartData),
317 #[serde(rename = "hook.end")]
318 HookEnd(HookEndData),
319 #[serde(rename = "hook.progress")]
320 HookProgress(HookProgressData),
321 #[serde(rename = "session.binary_asset")]
322 SessionBinaryAsset(SessionBinaryAssetData),
323 #[serde(rename = "system.message")]
324 SystemMessage(SystemMessageData),
325 #[serde(rename = "system.notification")]
326 SystemNotification(SystemNotificationData),
327 #[serde(rename = "permission.requested")]
328 PermissionRequested(PermissionRequestedData),
329 #[serde(rename = "permission.completed")]
330 PermissionCompleted(PermissionCompletedData),
331 #[serde(rename = "user_input.requested")]
332 UserInputRequested(UserInputRequestedData),
333 #[serde(rename = "user_input.completed")]
334 UserInputCompleted(UserInputCompletedData),
335 #[serde(rename = "elicitation.requested")]
336 ElicitationRequested(ElicitationRequestedData),
337 #[serde(rename = "elicitation.completed")]
338 ElicitationCompleted(ElicitationCompletedData),
339 #[serde(rename = "sampling.requested")]
340 SamplingRequested(SamplingRequestedData),
341 #[serde(rename = "sampling.completed")]
342 SamplingCompleted(SamplingCompletedData),
343 #[serde(rename = "mcp.oauth_required")]
344 McpOauthRequired(McpOauthRequiredData),
345 #[serde(rename = "mcp.oauth_completed")]
346 McpOauthCompleted(McpOauthCompletedData),
347 #[serde(rename = "session.custom_notification")]
348 SessionCustomNotification(SessionCustomNotificationData),
349 #[serde(rename = "external_tool.requested")]
350 ExternalToolRequested(ExternalToolRequestedData),
351 #[serde(rename = "external_tool.completed")]
352 ExternalToolCompleted(ExternalToolCompletedData),
353 #[serde(rename = "command.queued")]
354 CommandQueued(CommandQueuedData),
355 #[serde(rename = "command.execute")]
356 CommandExecute(CommandExecuteData),
357 #[serde(rename = "command.completed")]
358 CommandCompleted(CommandCompletedData),
359 #[serde(rename = "auto_mode_switch.requested")]
360 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
361 #[serde(rename = "auto_mode_switch.completed")]
362 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
363 #[serde(rename = "commands.changed")]
364 CommandsChanged(CommandsChangedData),
365 #[serde(rename = "capabilities.changed")]
366 CapabilitiesChanged(CapabilitiesChangedData),
367 #[serde(rename = "exit_plan_mode.requested")]
368 ExitPlanModeRequested(ExitPlanModeRequestedData),
369 #[serde(rename = "exit_plan_mode.completed")]
370 ExitPlanModeCompleted(ExitPlanModeCompletedData),
371 #[serde(rename = "session.tools_updated")]
372 SessionToolsUpdated(SessionToolsUpdatedData),
373 #[serde(rename = "session.background_tasks_changed")]
374 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
375 #[serde(rename = "session.skills_loaded")]
376 SessionSkillsLoaded(SessionSkillsLoadedData),
377 #[serde(rename = "session.custom_agents_updated")]
378 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
379 #[serde(rename = "session.mcp_servers_loaded")]
380 SessionMcpServersLoaded(SessionMcpServersLoadedData),
381 #[serde(rename = "session.mcp_server_status_changed")]
382 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
383 #[serde(rename = "session.extensions_loaded")]
384 SessionExtensionsLoaded(SessionExtensionsLoadedData),
385 #[serde(rename = "session.canvas.opened")]
386 SessionCanvasOpened(SessionCanvasOpenedData),
387 #[serde(rename = "session.canvas.registry_changed")]
388 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
389 #[serde(rename = "session.canvas.closed")]
390 SessionCanvasClosed(SessionCanvasClosedData),
391 #[serde(rename = "session.extensions.attachments_pushed")]
392 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
393 #[serde(rename = "mcp_app.tool_call_complete")]
394 McpAppToolCallComplete(McpAppToolCallCompleteData),
395}
396
397#[derive(Debug, Clone, Serialize, Deserialize)]
403#[serde(rename_all = "camelCase")]
404pub struct TypedSessionEvent {
405 pub id: String,
407 pub timestamp: String,
409 #[serde(skip_serializing_if = "Option::is_none")]
411 pub parent_id: Option<String>,
412 #[serde(skip_serializing_if = "Option::is_none")]
414 pub ephemeral: Option<bool>,
415 #[serde(skip_serializing_if = "Option::is_none")]
418 pub agent_id: Option<String>,
419 #[serde(flatten)]
421 pub payload: SessionEventData,
422}
423
424#[derive(Debug, Clone, Default, Serialize, Deserialize)]
426#[serde(rename_all = "camelCase")]
427pub struct WorkingDirectoryContext {
428 #[serde(skip_serializing_if = "Option::is_none")]
430 pub base_commit: Option<String>,
431 #[serde(skip_serializing_if = "Option::is_none")]
433 pub branch: Option<String>,
434 pub cwd: String,
436 #[serde(skip_serializing_if = "Option::is_none")]
438 pub git_root: Option<String>,
439 #[serde(skip_serializing_if = "Option::is_none")]
441 pub head_commit: Option<String>,
442 #[serde(skip_serializing_if = "Option::is_none")]
444 pub host_type: Option<WorkingDirectoryContextHostType>,
445 #[serde(skip_serializing_if = "Option::is_none")]
447 pub repository: Option<String>,
448 #[serde(skip_serializing_if = "Option::is_none")]
450 pub repository_host: Option<String>,
451}
452
453#[derive(Debug, Clone, Default, Serialize, Deserialize)]
455#[serde(rename_all = "camelCase")]
456pub struct SessionStartData {
457 #[serde(skip_serializing_if = "Option::is_none")]
459 pub already_in_use: Option<bool>,
460 #[serde(skip_serializing_if = "Option::is_none")]
462 pub context: Option<WorkingDirectoryContext>,
463 #[serde(skip_serializing_if = "Option::is_none")]
465 pub context_tier: Option<ContextTier>,
466 pub copilot_version: String,
468 #[serde(skip_serializing_if = "Option::is_none")]
470 pub detached_from_spawning_parent_session_id: Option<String>,
471 pub producer: String,
473 #[serde(skip_serializing_if = "Option::is_none")]
475 pub reasoning_effort: Option<String>,
476 #[serde(skip_serializing_if = "Option::is_none")]
478 pub reasoning_summary: Option<ReasoningSummary>,
479 #[serde(skip_serializing_if = "Option::is_none")]
481 pub remote_steerable: Option<bool>,
482 #[serde(skip_serializing_if = "Option::is_none")]
484 pub selected_model: Option<String>,
485 pub session_id: SessionId,
487 pub start_time: String,
489 pub version: i64,
491}
492
493#[derive(Debug, Clone, Default, Serialize, Deserialize)]
495#[serde(rename_all = "camelCase")]
496pub struct SessionResumeData {
497 #[serde(skip_serializing_if = "Option::is_none")]
499 pub already_in_use: Option<bool>,
500 #[serde(skip_serializing_if = "Option::is_none")]
502 pub context: Option<WorkingDirectoryContext>,
503 #[serde(skip_serializing_if = "Option::is_none")]
505 pub context_tier: Option<ContextTier>,
506 #[serde(skip_serializing_if = "Option::is_none")]
508 pub continue_pending_work: Option<bool>,
509 pub event_count: i64,
511 #[serde(skip_serializing_if = "Option::is_none")]
513 pub events_file_size_bytes: Option<i64>,
514 #[serde(skip_serializing_if = "Option::is_none")]
516 pub reasoning_effort: Option<String>,
517 #[serde(skip_serializing_if = "Option::is_none")]
519 pub reasoning_summary: Option<ReasoningSummary>,
520 #[serde(skip_serializing_if = "Option::is_none")]
522 pub remote_steerable: Option<bool>,
523 pub resume_time: String,
525 #[serde(skip_serializing_if = "Option::is_none")]
527 pub selected_model: Option<String>,
528 #[serde(skip_serializing_if = "Option::is_none")]
530 pub session_was_active: Option<bool>,
531}
532
533#[derive(Debug, Clone, Default, Serialize, Deserialize)]
535#[serde(rename_all = "camelCase")]
536pub struct SessionRemoteSteerableChangedData {
537 pub remote_steerable: bool,
539}
540
541#[derive(Debug, Clone, Default, Serialize, Deserialize)]
543#[serde(rename_all = "camelCase")]
544pub struct SessionErrorData {
545 #[serde(skip_serializing_if = "Option::is_none")]
547 pub eligible_for_auto_switch: Option<bool>,
548 #[serde(skip_serializing_if = "Option::is_none")]
550 pub error_code: Option<String>,
551 pub error_type: String,
553 pub message: String,
555 #[serde(skip_serializing_if = "Option::is_none")]
557 pub provider_call_id: Option<String>,
558 #[serde(skip_serializing_if = "Option::is_none")]
560 pub service_request_id: Option<String>,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub stack: Option<String>,
564 #[serde(skip_serializing_if = "Option::is_none")]
566 pub status_code: Option<i32>,
567 #[serde(skip_serializing_if = "Option::is_none")]
569 pub url: Option<String>,
570}
571
572#[derive(Debug, Clone, Default, Serialize, Deserialize)]
574#[serde(rename_all = "camelCase")]
575pub struct SessionIdleData {
576 #[serde(skip_serializing_if = "Option::is_none")]
578 pub aborted: Option<bool>,
579}
580
581#[derive(Debug, Clone, Default, Serialize, Deserialize)]
583#[serde(rename_all = "camelCase")]
584pub struct SessionTitleChangedData {
585 pub title: String,
587}
588
589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
591#[serde(rename_all = "camelCase")]
592pub struct SessionScheduleCreatedData {
593 #[serde(skip_serializing_if = "Option::is_none")]
595 pub at: Option<i64>,
596 #[serde(skip_serializing_if = "Option::is_none")]
598 pub cron: Option<String>,
599 #[serde(skip_serializing_if = "Option::is_none")]
601 pub display_prompt: Option<String>,
602 pub id: i64,
604 #[serde(skip_serializing_if = "Option::is_none")]
606 pub interval_ms: Option<i64>,
607 pub prompt: String,
609 #[serde(skip_serializing_if = "Option::is_none")]
611 pub recurring: Option<bool>,
612 #[serde(skip_serializing_if = "Option::is_none")]
614 pub tz: Option<String>,
615}
616
617#[derive(Debug, Clone, Default, Serialize, Deserialize)]
619#[serde(rename_all = "camelCase")]
620pub struct SessionScheduleCancelledData {
621 pub id: i64,
623}
624
625#[derive(Debug, Clone, Default, Serialize, Deserialize)]
627#[serde(rename_all = "camelCase")]
628pub struct SessionAutopilotObjectiveChangedData {
629 #[serde(skip_serializing_if = "Option::is_none")]
631 pub id: Option<i64>,
632 pub operation: AutopilotObjectiveChangedOperation,
634 #[serde(skip_serializing_if = "Option::is_none")]
636 pub status: Option<AutopilotObjectiveChangedStatus>,
637}
638
639#[derive(Debug, Clone, Default, Serialize, Deserialize)]
641#[serde(rename_all = "camelCase")]
642pub struct SessionInfoData {
643 pub info_type: String,
645 pub message: String,
647 #[serde(skip_serializing_if = "Option::is_none")]
649 pub tip: Option<String>,
650 #[serde(skip_serializing_if = "Option::is_none")]
652 pub url: Option<String>,
653}
654
655#[derive(Debug, Clone, Default, Serialize, Deserialize)]
657#[serde(rename_all = "camelCase")]
658pub struct SessionWarningData {
659 pub message: String,
661 #[serde(skip_serializing_if = "Option::is_none")]
663 pub url: Option<String>,
664 pub warning_type: String,
666}
667
668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
670#[serde(rename_all = "camelCase")]
671pub struct SessionModelChangeData {
672 #[serde(skip_serializing_if = "Option::is_none")]
674 pub cause: Option<String>,
675 #[serde(skip_serializing_if = "Option::is_none")]
677 pub context_tier: Option<ContextTier>,
678 pub new_model: String,
680 #[serde(skip_serializing_if = "Option::is_none")]
682 pub previous_model: Option<String>,
683 #[serde(skip_serializing_if = "Option::is_none")]
685 pub previous_reasoning_effort: Option<String>,
686 #[serde(skip_serializing_if = "Option::is_none")]
688 pub previous_reasoning_summary: Option<ReasoningSummary>,
689 #[serde(skip_serializing_if = "Option::is_none")]
691 pub reasoning_effort: Option<String>,
692 #[serde(skip_serializing_if = "Option::is_none")]
694 pub reasoning_summary: Option<ReasoningSummary>,
695}
696
697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
699#[serde(rename_all = "camelCase")]
700pub struct SessionModeChangedData {
701 pub new_mode: SessionMode,
703 pub previous_mode: SessionMode,
705}
706
707#[derive(Debug, Clone, Default, Serialize, Deserialize)]
709#[serde(rename_all = "camelCase")]
710pub struct SessionPermissionsChangedData {
711 pub allow_all_permissions: bool,
713 pub previous_allow_all_permissions: bool,
715}
716
717#[derive(Debug, Clone, Default, Serialize, Deserialize)]
719#[serde(rename_all = "camelCase")]
720pub struct SessionPlanChangedData {
721 pub operation: PlanChangedOperation,
723}
724
725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
727#[serde(rename_all = "camelCase")]
728pub struct SessionTodosChangedData {}
729
730#[derive(Debug, Clone, Default, Serialize, Deserialize)]
732#[serde(rename_all = "camelCase")]
733pub struct SessionWorkspaceFileChangedData {
734 pub operation: WorkspaceFileChangedOperation,
736 pub path: String,
738}
739
740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
742#[serde(rename_all = "camelCase")]
743pub struct HandoffRepository {
744 #[serde(skip_serializing_if = "Option::is_none")]
746 pub branch: Option<String>,
747 pub name: String,
749 pub owner: String,
751}
752
753#[derive(Debug, Clone, Default, Serialize, Deserialize)]
755#[serde(rename_all = "camelCase")]
756pub struct SessionHandoffData {
757 #[serde(skip_serializing_if = "Option::is_none")]
759 pub context: Option<String>,
760 pub handoff_time: String,
762 #[serde(skip_serializing_if = "Option::is_none")]
764 pub host: Option<String>,
765 #[serde(skip_serializing_if = "Option::is_none")]
767 pub remote_session_id: Option<SessionId>,
768 #[serde(skip_serializing_if = "Option::is_none")]
770 pub repository: Option<HandoffRepository>,
771 pub source_type: HandoffSourceType,
773 #[serde(skip_serializing_if = "Option::is_none")]
775 pub summary: Option<String>,
776}
777
778#[derive(Debug, Clone, Default, Serialize, Deserialize)]
780#[serde(rename_all = "camelCase")]
781pub struct SessionTruncationData {
782 pub messages_removed_during_truncation: i64,
784 pub performed_by: String,
786 pub post_truncation_messages_length: i64,
788 pub post_truncation_tokens_in_messages: i64,
790 pub pre_truncation_messages_length: i64,
792 pub pre_truncation_tokens_in_messages: i64,
794 pub token_limit: i64,
796 pub tokens_removed_during_truncation: i64,
798}
799
800#[derive(Debug, Clone, Default, Serialize, Deserialize)]
802#[serde(rename_all = "camelCase")]
803pub struct SessionSnapshotRewindData {
804 pub events_removed: i64,
806 pub up_to_event_id: String,
808}
809
810#[derive(Debug, Clone, Default, Serialize, Deserialize)]
812#[serde(rename_all = "camelCase")]
813pub struct ShutdownCodeChanges {
814 pub files_modified: Vec<String>,
816 pub lines_added: i64,
818 pub lines_removed: i64,
820}
821
822#[derive(Debug, Clone, Default, Serialize, Deserialize)]
824#[serde(rename_all = "camelCase")]
825pub struct ShutdownModelMetricRequests {
826 #[serde(skip_serializing_if = "Option::is_none")]
835 pub cost: Option<f64>,
836 #[serde(skip_serializing_if = "Option::is_none")]
845 pub count: Option<i64>,
846}
847
848#[derive(Debug, Clone, Default, Serialize, Deserialize)]
850#[serde(rename_all = "camelCase")]
851pub struct ShutdownModelMetricTokenDetail {
852 pub token_count: i64,
854}
855
856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
858#[serde(rename_all = "camelCase")]
859pub struct ShutdownModelMetricUsage {
860 pub cache_read_tokens: i64,
862 pub cache_write_tokens: i64,
864 pub input_tokens: i64,
866 pub output_tokens: i64,
868 #[serde(skip_serializing_if = "Option::is_none")]
870 pub reasoning_tokens: Option<i64>,
871}
872
873#[derive(Debug, Clone, Default, Serialize, Deserialize)]
875#[serde(rename_all = "camelCase")]
876pub struct ShutdownModelMetric {
877 pub requests: ShutdownModelMetricRequests,
879 #[serde(skip_serializing_if = "Option::is_none")]
881 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
882 #[serde(skip_serializing_if = "Option::is_none")]
891 pub total_nano_aiu: Option<f64>,
892 pub usage: ShutdownModelMetricUsage,
894}
895
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898#[serde(rename_all = "camelCase")]
899pub struct ShutdownTokenDetail {
900 pub token_count: i64,
902}
903
904#[derive(Debug, Clone, Default, Serialize, Deserialize)]
906#[serde(rename_all = "camelCase")]
907pub struct SessionShutdownData {
908 pub code_changes: ShutdownCodeChanges,
910 #[serde(skip_serializing_if = "Option::is_none")]
912 pub conversation_tokens: Option<i64>,
913 #[serde(skip_serializing_if = "Option::is_none")]
915 pub current_model: Option<String>,
916 #[serde(skip_serializing_if = "Option::is_none")]
918 pub current_tokens: Option<i64>,
919 #[serde(skip_serializing_if = "Option::is_none")]
921 pub error_reason: Option<String>,
922 #[serde(skip_serializing_if = "Option::is_none")]
924 pub events_file_size_bytes: Option<i64>,
925 pub model_metrics: HashMap<String, ShutdownModelMetric>,
927 pub session_start_time: i64,
929 pub shutdown_type: ShutdownType,
931 #[serde(skip_serializing_if = "Option::is_none")]
933 pub system_tokens: Option<i64>,
934 #[serde(skip_serializing_if = "Option::is_none")]
936 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
937 #[serde(skip_serializing_if = "Option::is_none")]
939 pub tool_definitions_tokens: Option<i64>,
940 pub total_api_duration_ms: i64,
942 #[serde(skip_serializing_if = "Option::is_none")]
951 pub total_nano_aiu: Option<f64>,
952 #[doc(hidden)]
954 #[serde(skip_serializing_if = "Option::is_none")]
955 pub(crate) total_premium_requests: Option<f64>,
956}
957
958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
960#[serde(rename_all = "camelCase")]
961pub struct SessionContextChangedData {
962 #[serde(skip_serializing_if = "Option::is_none")]
964 pub base_commit: Option<String>,
965 #[serde(skip_serializing_if = "Option::is_none")]
967 pub branch: Option<String>,
968 pub cwd: String,
970 #[serde(skip_serializing_if = "Option::is_none")]
972 pub git_root: Option<String>,
973 #[serde(skip_serializing_if = "Option::is_none")]
975 pub head_commit: Option<String>,
976 #[serde(skip_serializing_if = "Option::is_none")]
978 pub host_type: Option<WorkingDirectoryContextHostType>,
979 #[serde(skip_serializing_if = "Option::is_none")]
981 pub repository: Option<String>,
982 #[serde(skip_serializing_if = "Option::is_none")]
984 pub repository_host: Option<String>,
985}
986
987#[derive(Debug, Clone, Default, Serialize, Deserialize)]
989#[serde(rename_all = "camelCase")]
990pub struct SessionUsageInfoData {
991 #[serde(skip_serializing_if = "Option::is_none")]
993 pub conversation_tokens: Option<i64>,
994 pub current_tokens: i64,
996 #[serde(skip_serializing_if = "Option::is_none")]
998 pub is_initial: Option<bool>,
999 pub messages_length: i64,
1001 #[serde(skip_serializing_if = "Option::is_none")]
1003 pub system_tokens: Option<i64>,
1004 pub token_limit: i64,
1006 #[serde(skip_serializing_if = "Option::is_none")]
1008 pub tool_definitions_tokens: Option<i64>,
1009}
1010
1011#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1013#[serde(rename_all = "camelCase")]
1014pub struct SessionCompactionStartData {
1015 #[serde(skip_serializing_if = "Option::is_none")]
1017 pub conversation_tokens: Option<i64>,
1018 #[serde(skip_serializing_if = "Option::is_none")]
1020 pub system_tokens: Option<i64>,
1021 #[serde(skip_serializing_if = "Option::is_none")]
1023 pub tool_definitions_tokens: Option<i64>,
1024}
1025
1026#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1028#[serde(rename_all = "camelCase")]
1029pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1030 pub batch_size: i64,
1032 pub cost_per_batch: i64,
1034 pub token_count: i64,
1036 pub token_type: String,
1038}
1039
1040#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1042#[serde(rename_all = "camelCase")]
1043pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1044 #[doc(hidden)]
1046 #[serde(skip_serializing_if = "Option::is_none")]
1047 pub(crate) token_details:
1048 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1049 pub total_nano_aiu: f64,
1051}
1052
1053#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1055#[serde(rename_all = "camelCase")]
1056pub struct CompactionCompleteCompactionTokensUsed {
1057 #[serde(skip_serializing_if = "Option::is_none")]
1059 pub cache_read_tokens: Option<i64>,
1060 #[serde(skip_serializing_if = "Option::is_none")]
1062 pub cache_write_tokens: Option<i64>,
1063 #[doc(hidden)]
1065 #[serde(skip_serializing_if = "Option::is_none")]
1066 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1067 #[serde(skip_serializing_if = "Option::is_none")]
1069 pub duration: Option<i64>,
1070 #[serde(skip_serializing_if = "Option::is_none")]
1072 pub input_tokens: Option<i64>,
1073 #[serde(skip_serializing_if = "Option::is_none")]
1075 pub model: Option<String>,
1076 #[serde(skip_serializing_if = "Option::is_none")]
1078 pub output_tokens: Option<i64>,
1079}
1080
1081#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1083#[serde(rename_all = "camelCase")]
1084pub struct SessionCompactionCompleteData {
1085 #[serde(skip_serializing_if = "Option::is_none")]
1087 pub checkpoint_number: Option<i64>,
1088 #[serde(skip_serializing_if = "Option::is_none")]
1090 pub checkpoint_path: Option<String>,
1091 #[serde(skip_serializing_if = "Option::is_none")]
1093 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1094 #[serde(skip_serializing_if = "Option::is_none")]
1096 pub conversation_tokens: Option<i64>,
1097 #[serde(skip_serializing_if = "Option::is_none")]
1099 pub custom_instructions: Option<String>,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub error: Option<String>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub messages_removed: Option<i64>,
1106 #[serde(skip_serializing_if = "Option::is_none")]
1108 pub post_compaction_tokens: Option<i64>,
1109 #[serde(skip_serializing_if = "Option::is_none")]
1111 pub pre_compaction_messages_length: Option<i64>,
1112 #[serde(skip_serializing_if = "Option::is_none")]
1114 pub pre_compaction_tokens: Option<i64>,
1115 #[serde(skip_serializing_if = "Option::is_none")]
1117 pub request_id: Option<RequestId>,
1118 #[serde(skip_serializing_if = "Option::is_none")]
1120 pub service_request_id: Option<String>,
1121 pub success: bool,
1123 #[serde(skip_serializing_if = "Option::is_none")]
1125 pub summary_content: Option<String>,
1126 #[serde(skip_serializing_if = "Option::is_none")]
1128 pub system_tokens: Option<i64>,
1129 #[serde(skip_serializing_if = "Option::is_none")]
1131 pub tokens_removed: Option<i64>,
1132 #[serde(skip_serializing_if = "Option::is_none")]
1134 pub tool_definitions_tokens: Option<i64>,
1135}
1136
1137#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1139#[serde(rename_all = "camelCase")]
1140pub struct SessionTaskCompleteData {
1141 #[serde(skip_serializing_if = "Option::is_none")]
1143 pub success: Option<bool>,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub summary: Option<String>,
1147}
1148
1149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1151#[serde(rename_all = "camelCase")]
1152pub struct UserMessageData {
1153 #[serde(skip_serializing_if = "Option::is_none")]
1155 pub agent_mode: Option<UserMessageAgentMode>,
1156 #[serde(skip_serializing_if = "Option::is_none")]
1158 pub attachments: Option<Vec<serde_json::Value>>,
1159 pub content: String,
1161 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub interaction_id: Option<String>,
1164 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub is_autopilot_continuation: Option<bool>,
1167 #[serde(skip_serializing_if = "Option::is_none")]
1169 pub native_document_path_fallback_paths: Option<Vec<String>>,
1170 #[serde(skip_serializing_if = "Option::is_none")]
1172 pub parent_agent_task_id: Option<String>,
1173 #[serde(skip_serializing_if = "Option::is_none")]
1175 pub source: Option<String>,
1176 #[serde(skip_serializing_if = "Option::is_none")]
1178 pub supported_native_document_mime_types: Option<Vec<String>>,
1179 #[serde(skip_serializing_if = "Option::is_none")]
1181 pub transformed_content: Option<String>,
1182}
1183
1184#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1186#[serde(rename_all = "camelCase")]
1187pub struct PendingMessagesModifiedData {}
1188
1189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1191#[serde(rename_all = "camelCase")]
1192pub struct AssistantTurnStartData {
1193 #[serde(skip_serializing_if = "Option::is_none")]
1195 pub interaction_id: Option<String>,
1196 pub turn_id: String,
1198}
1199
1200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1202#[serde(rename_all = "camelCase")]
1203pub struct AssistantIntentData {
1204 pub intent: String,
1206}
1207
1208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1210#[serde(rename_all = "camelCase")]
1211pub struct AssistantReasoningData {
1212 pub content: String,
1214 pub reasoning_id: String,
1216}
1217
1218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1220#[serde(rename_all = "camelCase")]
1221pub struct AssistantReasoningDeltaData {
1222 pub delta_content: String,
1224 pub reasoning_id: String,
1226}
1227
1228#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1230#[serde(rename_all = "camelCase")]
1231pub struct AssistantStreamingDeltaData {
1232 pub total_response_size_bytes: i64,
1234}
1235
1236#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245#[serde(rename_all = "camelCase")]
1246pub struct CitationSource {
1247 pub id: String,
1249 #[serde(skip_serializing_if = "Option::is_none")]
1251 pub path: Option<String>,
1252 pub provider: CitationProvider,
1254 #[serde(skip_serializing_if = "Option::is_none")]
1256 pub title: Option<String>,
1257 #[serde(skip_serializing_if = "Option::is_none")]
1259 pub url: Option<String>,
1260}
1261
1262#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1271#[serde(rename_all = "camelCase")]
1272pub struct CitationReference {
1273 #[serde(skip_serializing_if = "Option::is_none")]
1275 pub cited_text: Option<String>,
1276 #[serde(skip_serializing_if = "Option::is_none")]
1278 pub location: Option<serde_json::Value>,
1279 #[serde(skip_serializing_if = "Option::is_none")]
1281 pub provider_metadata: Option<serde_json::Value>,
1282 pub source_id: String,
1284}
1285
1286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1295#[serde(rename_all = "camelCase")]
1296pub struct CitationSpan {
1297 pub end_index: i64,
1299 pub references: Vec<CitationReference>,
1301 pub start_index: i64,
1303}
1304
1305#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1314#[serde(rename_all = "camelCase")]
1315pub struct Citations {
1316 pub sources: Vec<CitationSource>,
1318 pub spans: Vec<CitationSpan>,
1320}
1321
1322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1331#[serde(rename_all = "camelCase")]
1332pub struct AssistantMessageServerTools {
1333 #[serde(skip_serializing_if = "Option::is_none")]
1334 pub advisor_model: Option<String>,
1335 #[serde(skip_serializing_if = "Option::is_none")]
1336 pub function_call_namespaces: Option<HashMap<String, String>>,
1337 #[serde(skip_serializing_if = "Option::is_none")]
1338 pub items: Option<Vec<serde_json::Value>>,
1339 pub provider: String,
1340 #[serde(skip_serializing_if = "Option::is_none")]
1341 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1342}
1343
1344#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1346#[serde(rename_all = "camelCase")]
1347pub struct AssistantMessageToolRequest {
1348 #[serde(skip_serializing_if = "Option::is_none")]
1350 pub arguments: Option<serde_json::Value>,
1351 #[serde(skip_serializing_if = "Option::is_none")]
1353 pub intention_summary: Option<String>,
1354 #[serde(skip_serializing_if = "Option::is_none")]
1356 pub mcp_server_name: Option<String>,
1357 #[serde(skip_serializing_if = "Option::is_none")]
1359 pub mcp_tool_name: Option<String>,
1360 pub name: String,
1362 pub tool_call_id: String,
1364 #[serde(skip_serializing_if = "Option::is_none")]
1366 pub tool_title: Option<String>,
1367 #[serde(skip_serializing_if = "Option::is_none")]
1369 pub r#type: Option<AssistantMessageToolRequestType>,
1370}
1371
1372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1374#[serde(rename_all = "camelCase")]
1375pub struct AssistantMessageData {
1376 #[serde(skip_serializing_if = "Option::is_none")]
1378 pub api_call_id: Option<String>,
1379 #[serde(skip_serializing_if = "Option::is_none")]
1388 pub citations: Option<Citations>,
1389 pub content: String,
1391 #[serde(skip_serializing_if = "Option::is_none")]
1393 pub encrypted_content: Option<String>,
1394 #[serde(skip_serializing_if = "Option::is_none")]
1396 pub interaction_id: Option<String>,
1397 pub message_id: String,
1399 #[serde(skip_serializing_if = "Option::is_none")]
1401 pub model: Option<String>,
1402 #[serde(skip_serializing_if = "Option::is_none")]
1404 pub output_tokens: Option<i64>,
1405 #[doc(hidden)]
1407 #[deprecated]
1408 #[serde(skip_serializing_if = "Option::is_none")]
1409 pub parent_tool_call_id: Option<String>,
1410 #[serde(skip_serializing_if = "Option::is_none")]
1412 pub phase: Option<String>,
1413 #[serde(skip_serializing_if = "Option::is_none")]
1415 pub reasoning_opaque: Option<String>,
1416 #[serde(skip_serializing_if = "Option::is_none")]
1418 pub reasoning_text: Option<String>,
1419 #[serde(skip_serializing_if = "Option::is_none")]
1421 pub request_id: Option<RequestId>,
1422 #[serde(skip_serializing_if = "Option::is_none")]
1424 pub server_tools: Option<AssistantMessageServerTools>,
1425 #[serde(skip_serializing_if = "Option::is_none")]
1427 pub service_request_id: Option<String>,
1428 #[serde(skip_serializing_if = "Option::is_none")]
1430 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1431 #[serde(skip_serializing_if = "Option::is_none")]
1433 pub turn_id: Option<String>,
1434}
1435
1436#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1438#[serde(rename_all = "camelCase")]
1439pub struct AssistantMessageStartData {
1440 pub message_id: String,
1442 #[serde(skip_serializing_if = "Option::is_none")]
1444 pub phase: Option<String>,
1445}
1446
1447#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1449#[serde(rename_all = "camelCase")]
1450pub struct AssistantMessageDeltaData {
1451 pub delta_content: String,
1453 pub message_id: String,
1455 #[doc(hidden)]
1457 #[deprecated]
1458 #[serde(skip_serializing_if = "Option::is_none")]
1459 pub parent_tool_call_id: Option<String>,
1460}
1461
1462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1464#[serde(rename_all = "camelCase")]
1465pub struct AssistantTurnEndData {
1466 pub turn_id: String,
1468}
1469
1470#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1472#[serde(rename_all = "camelCase")]
1473pub struct AssistantUsageCopilotUsageTokenDetail {
1474 pub batch_size: i64,
1476 pub cost_per_batch: i64,
1478 pub token_count: i64,
1480 pub token_type: String,
1482}
1483
1484#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1486#[serde(rename_all = "camelCase")]
1487pub struct AssistantUsageCopilotUsage {
1488 #[doc(hidden)]
1490 #[serde(skip_serializing_if = "Option::is_none")]
1491 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1492 pub total_nano_aiu: f64,
1494}
1495
1496#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1498#[serde(rename_all = "camelCase")]
1499pub(crate) struct AssistantUsageQuotaSnapshot {
1500 #[doc(hidden)]
1502 pub(crate) entitlement_requests: i64,
1503 #[doc(hidden)]
1505 pub(crate) is_unlimited_entitlement: bool,
1506 #[doc(hidden)]
1508 pub(crate) overage: f64,
1509 #[doc(hidden)]
1511 pub(crate) overage_allowed_with_exhausted_quota: bool,
1512 #[doc(hidden)]
1514 pub(crate) remaining_percentage: f64,
1515 #[doc(hidden)]
1517 #[serde(skip_serializing_if = "Option::is_none")]
1518 pub(crate) reset_date: Option<String>,
1519 #[doc(hidden)]
1521 pub(crate) usage_allowed_with_exhausted_quota: bool,
1522 #[doc(hidden)]
1524 pub(crate) used_requests: i64,
1525}
1526
1527#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1529#[serde(rename_all = "camelCase")]
1530pub struct AssistantUsageData {
1531 #[serde(skip_serializing_if = "Option::is_none")]
1533 pub api_call_id: Option<String>,
1534 #[serde(skip_serializing_if = "Option::is_none")]
1536 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1537 #[serde(skip_serializing_if = "Option::is_none")]
1539 pub cache_read_tokens: Option<i64>,
1540 #[serde(skip_serializing_if = "Option::is_none")]
1542 pub cache_write_tokens: Option<i64>,
1543 #[serde(skip_serializing_if = "Option::is_none")]
1545 pub content_filter_triggered: Option<bool>,
1546 #[serde(skip_serializing_if = "Option::is_none")]
1548 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1549 #[serde(skip_serializing_if = "Option::is_none")]
1558 pub cost: Option<f64>,
1559 #[serde(skip_serializing_if = "Option::is_none")]
1561 pub duration: Option<i64>,
1562 #[serde(skip_serializing_if = "Option::is_none")]
1564 pub finish_reason: Option<String>,
1565 #[serde(skip_serializing_if = "Option::is_none")]
1567 pub initiator: Option<String>,
1568 #[serde(skip_serializing_if = "Option::is_none")]
1570 pub input_tokens: Option<i64>,
1571 #[serde(skip_serializing_if = "Option::is_none")]
1573 pub inter_token_latency_ms: Option<f64>,
1574 pub model: String,
1576 #[serde(skip_serializing_if = "Option::is_none")]
1578 pub output_tokens: Option<i64>,
1579 #[doc(hidden)]
1581 #[deprecated]
1582 #[serde(skip_serializing_if = "Option::is_none")]
1583 pub parent_tool_call_id: Option<String>,
1584 #[serde(skip_serializing_if = "Option::is_none")]
1586 pub provider_call_id: Option<String>,
1587 #[doc(hidden)]
1589 #[serde(skip_serializing_if = "Option::is_none")]
1590 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1591 #[serde(skip_serializing_if = "Option::is_none")]
1593 pub reasoning_effort: Option<String>,
1594 #[serde(skip_serializing_if = "Option::is_none")]
1596 pub reasoning_tokens: Option<i64>,
1597 #[serde(skip_serializing_if = "Option::is_none")]
1599 pub service_request_id: Option<String>,
1600 #[serde(skip_serializing_if = "Option::is_none")]
1602 pub time_to_first_token_ms: Option<i64>,
1603}
1604
1605#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1607#[serde(rename_all = "camelCase")]
1608pub struct ModelCallFailureData {
1609 #[serde(skip_serializing_if = "Option::is_none")]
1611 pub api_call_id: Option<String>,
1612 #[serde(skip_serializing_if = "Option::is_none")]
1614 pub bad_request_kind: Option<ModelCallFailureBadRequestKind>,
1615 #[serde(skip_serializing_if = "Option::is_none")]
1617 pub duration_ms: Option<i64>,
1618 #[serde(skip_serializing_if = "Option::is_none")]
1620 pub error_code: Option<String>,
1621 #[serde(skip_serializing_if = "Option::is_none")]
1623 pub error_message: Option<String>,
1624 #[serde(skip_serializing_if = "Option::is_none")]
1626 pub error_type: Option<String>,
1627 #[serde(skip_serializing_if = "Option::is_none")]
1629 pub initiator: Option<String>,
1630 #[serde(skip_serializing_if = "Option::is_none")]
1632 pub model: Option<String>,
1633 #[serde(skip_serializing_if = "Option::is_none")]
1635 pub provider_call_id: Option<String>,
1636 #[serde(skip_serializing_if = "Option::is_none")]
1638 pub service_request_id: Option<String>,
1639 pub source: ModelCallFailureSource,
1641 #[serde(skip_serializing_if = "Option::is_none")]
1643 pub status_code: Option<i32>,
1644}
1645
1646#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1648#[serde(rename_all = "camelCase")]
1649pub struct AbortData {
1650 pub reason: AbortReason,
1652}
1653
1654#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1656#[serde(rename_all = "camelCase")]
1657pub struct ToolUserRequestedData {
1658 #[serde(skip_serializing_if = "Option::is_none")]
1660 pub arguments: Option<serde_json::Value>,
1661 pub tool_call_id: String,
1663 pub tool_name: String,
1665}
1666
1667#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1669#[serde(rename_all = "camelCase")]
1670pub struct ToolExecutionStartToolDescriptionMetaUI {
1671 #[serde(skip_serializing_if = "Option::is_none")]
1673 pub resource_uri: Option<String>,
1674 #[serde(skip_serializing_if = "Option::is_none")]
1676 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
1677}
1678
1679#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1681#[serde(rename_all = "camelCase")]
1682pub struct ToolExecutionStartToolDescriptionMeta {
1683 #[serde(skip_serializing_if = "Option::is_none")]
1685 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
1686}
1687
1688#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1690#[serde(rename_all = "camelCase")]
1691pub struct ToolExecutionStartToolDescription {
1692 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1694 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
1695 #[serde(skip_serializing_if = "Option::is_none")]
1697 pub description: Option<String>,
1698 pub name: String,
1700}
1701
1702#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1704#[serde(rename_all = "camelCase")]
1705pub struct ToolExecutionStartData {
1706 #[serde(skip_serializing_if = "Option::is_none")]
1708 pub arguments: Option<serde_json::Value>,
1709 #[serde(skip_serializing_if = "Option::is_none")]
1711 pub display_verbatim: Option<bool>,
1712 #[serde(skip_serializing_if = "Option::is_none")]
1714 pub mcp_server_name: Option<String>,
1715 #[serde(skip_serializing_if = "Option::is_none")]
1717 pub mcp_tool_name: Option<String>,
1718 #[serde(skip_serializing_if = "Option::is_none")]
1720 pub model: Option<String>,
1721 #[doc(hidden)]
1723 #[deprecated]
1724 #[serde(skip_serializing_if = "Option::is_none")]
1725 pub parent_tool_call_id: Option<String>,
1726 pub tool_call_id: String,
1728 #[serde(skip_serializing_if = "Option::is_none")]
1730 pub tool_description: Option<ToolExecutionStartToolDescription>,
1731 pub tool_name: String,
1733 #[serde(skip_serializing_if = "Option::is_none")]
1735 pub turn_id: Option<String>,
1736}
1737
1738#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1740#[serde(rename_all = "camelCase")]
1741pub struct ToolExecutionPartialResultData {
1742 pub partial_output: String,
1744 pub tool_call_id: String,
1746}
1747
1748#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1750#[serde(rename_all = "camelCase")]
1751pub struct ToolExecutionProgressData {
1752 pub progress_message: String,
1754 pub tool_call_id: String,
1756}
1757
1758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1760#[serde(rename_all = "camelCase")]
1761pub struct ToolExecutionCompleteError {
1762 #[serde(skip_serializing_if = "Option::is_none")]
1764 pub code: Option<String>,
1765 pub message: String,
1767}
1768
1769#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1778#[serde(rename_all = "camelCase")]
1779pub struct CitableSource {
1780 pub content: String,
1782 pub id: String,
1784 #[serde(skip_serializing_if = "Option::is_none")]
1786 pub path: Option<String>,
1787 #[serde(skip_serializing_if = "Option::is_none")]
1789 pub title: Option<String>,
1790 #[serde(skip_serializing_if = "Option::is_none")]
1792 pub url: Option<String>,
1793}
1794
1795#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1797#[serde(rename_all = "camelCase")]
1798pub struct ToolExecutionCompleteContentText {
1799 pub text: String,
1801 pub r#type: ToolExecutionCompleteContentTextType,
1803}
1804
1805#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1807#[serde(rename_all = "camelCase")]
1808pub struct ToolExecutionCompleteContentTerminal {
1809 #[serde(skip_serializing_if = "Option::is_none")]
1811 pub cwd: Option<String>,
1812 #[serde(skip_serializing_if = "Option::is_none")]
1814 pub exit_code: Option<i64>,
1815 pub text: String,
1817 pub r#type: ToolExecutionCompleteContentTerminalType,
1819}
1820
1821#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1823#[serde(rename_all = "camelCase")]
1824pub struct ToolExecutionCompleteContentImage {
1825 pub data: String,
1827 pub mime_type: String,
1829 pub r#type: ToolExecutionCompleteContentImageType,
1831}
1832
1833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1835#[serde(rename_all = "camelCase")]
1836pub struct ToolExecutionCompleteContentAudio {
1837 pub data: String,
1839 pub mime_type: String,
1841 pub r#type: ToolExecutionCompleteContentAudioType,
1843}
1844
1845#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1847#[serde(rename_all = "camelCase")]
1848pub struct ToolExecutionCompleteContentResourceLinkIcon {
1849 #[serde(skip_serializing_if = "Option::is_none")]
1851 pub mime_type: Option<String>,
1852 #[serde(skip_serializing_if = "Option::is_none")]
1854 pub sizes: Option<Vec<String>>,
1855 pub src: String,
1857 #[serde(skip_serializing_if = "Option::is_none")]
1859 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
1860}
1861
1862#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1864#[serde(rename_all = "camelCase")]
1865pub struct ToolExecutionCompleteContentResourceLink {
1866 #[serde(skip_serializing_if = "Option::is_none")]
1868 pub description: Option<String>,
1869 #[serde(skip_serializing_if = "Option::is_none")]
1871 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
1872 #[serde(skip_serializing_if = "Option::is_none")]
1874 pub mime_type: Option<String>,
1875 pub name: String,
1877 #[serde(skip_serializing_if = "Option::is_none")]
1879 pub size: Option<i64>,
1880 #[serde(skip_serializing_if = "Option::is_none")]
1882 pub title: Option<String>,
1883 pub r#type: ToolExecutionCompleteContentResourceLinkType,
1885 pub uri: String,
1887}
1888
1889#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1891#[serde(rename_all = "camelCase")]
1892pub struct EmbeddedTextResourceContents {
1893 #[serde(skip_serializing_if = "Option::is_none")]
1895 pub mime_type: Option<String>,
1896 pub text: String,
1898 pub uri: String,
1900}
1901
1902#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1904#[serde(rename_all = "camelCase")]
1905pub struct EmbeddedBlobResourceContents {
1906 pub blob: String,
1908 #[serde(skip_serializing_if = "Option::is_none")]
1910 pub mime_type: Option<String>,
1911 pub uri: String,
1913}
1914
1915#[derive(Debug, Clone, Serialize, Deserialize)]
1917#[serde(rename_all = "camelCase")]
1918pub struct ToolExecutionCompleteContentResource {
1919 pub resource: ToolExecutionCompleteContentResourceDetails,
1921 pub r#type: ToolExecutionCompleteContentResourceType,
1923}
1924
1925#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1927#[serde(rename_all = "camelCase")]
1928pub struct ToolExecutionCompleteUIResourceMetaUICsp {
1929 #[serde(skip_serializing_if = "Option::is_none")]
1930 pub base_uri_domains: Option<Vec<String>>,
1931 #[serde(skip_serializing_if = "Option::is_none")]
1932 pub connect_domains: Option<Vec<String>>,
1933 #[serde(skip_serializing_if = "Option::is_none")]
1934 pub frame_domains: Option<Vec<String>>,
1935 #[serde(skip_serializing_if = "Option::is_none")]
1936 pub resource_domains: Option<Vec<String>>,
1937}
1938
1939#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1941#[serde(rename_all = "camelCase")]
1942pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
1943
1944#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1946#[serde(rename_all = "camelCase")]
1947pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
1948
1949#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1951#[serde(rename_all = "camelCase")]
1952pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
1953
1954#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1956#[serde(rename_all = "camelCase")]
1957pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
1958
1959#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1961#[serde(rename_all = "camelCase")]
1962pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
1963 #[serde(skip_serializing_if = "Option::is_none")]
1965 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
1966 #[serde(skip_serializing_if = "Option::is_none")]
1968 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
1969 #[serde(skip_serializing_if = "Option::is_none")]
1971 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
1972 #[serde(skip_serializing_if = "Option::is_none")]
1974 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
1975}
1976
1977#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1979#[serde(rename_all = "camelCase")]
1980pub struct ToolExecutionCompleteUIResourceMetaUI {
1981 #[serde(skip_serializing_if = "Option::is_none")]
1983 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
1984 #[serde(skip_serializing_if = "Option::is_none")]
1985 pub domain: Option<String>,
1986 #[serde(skip_serializing_if = "Option::is_none")]
1988 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
1989 #[serde(skip_serializing_if = "Option::is_none")]
1990 pub prefers_border: Option<bool>,
1991}
1992
1993#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1995#[serde(rename_all = "camelCase")]
1996pub struct ToolExecutionCompleteUIResourceMeta {
1997 #[serde(skip_serializing_if = "Option::is_none")]
1999 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
2000}
2001
2002#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2004#[serde(rename_all = "camelCase")]
2005pub struct ToolExecutionCompleteUIResource {
2006 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2008 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
2009 #[serde(skip_serializing_if = "Option::is_none")]
2011 pub blob: Option<String>,
2012 pub mime_type: String,
2014 #[serde(skip_serializing_if = "Option::is_none")]
2016 pub text: Option<String>,
2017 pub uri: String,
2019}
2020
2021#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2023#[serde(rename_all = "camelCase")]
2024pub struct ToolExecutionCompleteResult {
2025 #[serde(skip_serializing_if = "Option::is_none")]
2034 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
2035 #[serde(skip_serializing_if = "Option::is_none")]
2044 pub citable_sources: Option<Vec<CitableSource>>,
2045 pub content: String,
2047 #[serde(skip_serializing_if = "Option::is_none")]
2049 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
2050 #[serde(skip_serializing_if = "Option::is_none")]
2052 pub detailed_content: Option<String>,
2053 #[serde(skip_serializing_if = "Option::is_none")]
2055 pub structured_content: Option<serde_json::Value>,
2056 #[serde(skip_serializing_if = "Option::is_none")]
2058 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2059}
2060
2061#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2063#[serde(rename_all = "camelCase")]
2064pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2065 #[serde(skip_serializing_if = "Option::is_none")]
2067 pub resource_uri: Option<String>,
2068 #[serde(skip_serializing_if = "Option::is_none")]
2070 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2071}
2072
2073#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2075#[serde(rename_all = "camelCase")]
2076pub struct ToolExecutionCompleteToolDescriptionMeta {
2077 #[serde(skip_serializing_if = "Option::is_none")]
2079 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2080}
2081
2082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2084#[serde(rename_all = "camelCase")]
2085pub struct ToolExecutionCompleteToolDescription {
2086 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2088 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2089 #[serde(skip_serializing_if = "Option::is_none")]
2091 pub description: Option<String>,
2092 pub name: String,
2094}
2095
2096#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2098#[serde(rename_all = "camelCase")]
2099pub struct ToolExecutionCompleteData {
2100 #[serde(skip_serializing_if = "Option::is_none")]
2102 pub error: Option<ToolExecutionCompleteError>,
2103 #[serde(skip_serializing_if = "Option::is_none")]
2105 pub interaction_id: Option<String>,
2106 #[serde(skip_serializing_if = "Option::is_none")]
2108 pub is_user_requested: Option<bool>,
2109 #[serde(skip_serializing_if = "Option::is_none")]
2111 pub model: Option<String>,
2112 #[doc(hidden)]
2114 #[deprecated]
2115 #[serde(skip_serializing_if = "Option::is_none")]
2116 pub parent_tool_call_id: Option<String>,
2117 #[serde(skip_serializing_if = "Option::is_none")]
2119 pub result: Option<ToolExecutionCompleteResult>,
2120 #[serde(skip_serializing_if = "Option::is_none")]
2122 pub sandboxed: Option<bool>,
2123 pub success: bool,
2125 pub tool_call_id: String,
2127 #[serde(skip_serializing_if = "Option::is_none")]
2129 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2130 #[serde(skip_serializing_if = "Option::is_none")]
2132 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2133 #[serde(skip_serializing_if = "Option::is_none")]
2135 pub turn_id: Option<String>,
2136}
2137
2138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2140#[serde(rename_all = "camelCase")]
2141pub struct SkillInvokedData {
2142 #[serde(skip_serializing_if = "Option::is_none")]
2144 pub allowed_tools: Option<Vec<String>>,
2145 pub content: String,
2147 #[serde(skip_serializing_if = "Option::is_none")]
2149 pub description: Option<String>,
2150 pub name: String,
2152 pub path: String,
2154 #[serde(skip_serializing_if = "Option::is_none")]
2156 pub plugin_name: Option<String>,
2157 #[serde(skip_serializing_if = "Option::is_none")]
2159 pub plugin_version: Option<String>,
2160 #[serde(skip_serializing_if = "Option::is_none")]
2162 pub source: Option<String>,
2163 #[serde(skip_serializing_if = "Option::is_none")]
2165 pub trigger: Option<SkillInvokedTrigger>,
2166}
2167
2168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2170#[serde(rename_all = "camelCase")]
2171pub struct SubagentStartedData {
2172 pub agent_description: String,
2174 pub agent_display_name: String,
2176 pub agent_name: String,
2178 #[serde(skip_serializing_if = "Option::is_none")]
2180 pub model: Option<String>,
2181 pub tool_call_id: String,
2183}
2184
2185#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2187#[serde(rename_all = "camelCase")]
2188pub struct SubagentCompletedData {
2189 pub agent_display_name: String,
2191 pub agent_name: String,
2193 #[serde(skip_serializing_if = "Option::is_none")]
2195 pub duration_ms: Option<i64>,
2196 #[serde(skip_serializing_if = "Option::is_none")]
2198 pub model: Option<String>,
2199 pub tool_call_id: String,
2201 #[serde(skip_serializing_if = "Option::is_none")]
2203 pub total_tokens: Option<i64>,
2204 #[serde(skip_serializing_if = "Option::is_none")]
2206 pub total_tool_calls: Option<i64>,
2207}
2208
2209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2211#[serde(rename_all = "camelCase")]
2212pub struct SubagentFailedData {
2213 pub agent_display_name: String,
2215 pub agent_name: String,
2217 #[serde(skip_serializing_if = "Option::is_none")]
2219 pub duration_ms: Option<i64>,
2220 pub error: String,
2222 #[serde(skip_serializing_if = "Option::is_none")]
2224 pub model: Option<String>,
2225 pub tool_call_id: String,
2227 #[serde(skip_serializing_if = "Option::is_none")]
2229 pub total_tokens: Option<i64>,
2230 #[serde(skip_serializing_if = "Option::is_none")]
2232 pub total_tool_calls: Option<i64>,
2233}
2234
2235#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2237#[serde(rename_all = "camelCase")]
2238pub struct SubagentSelectedData {
2239 pub agent_display_name: String,
2241 pub agent_name: String,
2243 pub tools: Option<Vec<String>>,
2245}
2246
2247#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2249#[serde(rename_all = "camelCase")]
2250pub struct SubagentDeselectedData {}
2251
2252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2254#[serde(rename_all = "camelCase")]
2255pub struct HookStartData {
2256 pub hook_invocation_id: String,
2258 pub hook_type: String,
2260 #[serde(skip_serializing_if = "Option::is_none")]
2262 pub input: Option<serde_json::Value>,
2263}
2264
2265#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2267#[serde(rename_all = "camelCase")]
2268pub struct HookEndError {
2269 pub message: String,
2271 #[serde(skip_serializing_if = "Option::is_none")]
2273 pub source: Option<String>,
2274 #[serde(skip_serializing_if = "Option::is_none")]
2276 pub stack: Option<String>,
2277}
2278
2279#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2281#[serde(rename_all = "camelCase")]
2282pub struct HookEndData {
2283 #[serde(skip_serializing_if = "Option::is_none")]
2285 pub error: Option<HookEndError>,
2286 pub hook_invocation_id: String,
2288 pub hook_type: String,
2290 #[serde(skip_serializing_if = "Option::is_none")]
2292 pub output: Option<serde_json::Value>,
2293 pub success: bool,
2295}
2296
2297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2299#[serde(rename_all = "camelCase")]
2300pub struct HookProgressData {
2301 pub message: String,
2303 #[serde(skip_serializing_if = "Option::is_none")]
2305 pub temporary: Option<bool>,
2306}
2307
2308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2310#[serde(rename_all = "camelCase")]
2311pub struct SessionBinaryAssetData {
2312 pub asset_id: String,
2314 pub byte_length: i64,
2316 pub data: String,
2318 #[serde(skip_serializing_if = "Option::is_none")]
2320 pub description: Option<String>,
2321 #[serde(skip_serializing_if = "Option::is_none")]
2323 pub metadata: Option<HashMap<String, serde_json::Value>>,
2324 pub mime_type: String,
2326 pub r#type: BinaryAssetType,
2328}
2329
2330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2332#[serde(rename_all = "camelCase")]
2333pub struct SystemMessageMetadata {
2334 #[serde(skip_serializing_if = "Option::is_none")]
2336 pub prompt_version: Option<String>,
2337 #[serde(skip_serializing_if = "Option::is_none")]
2339 pub variables: Option<HashMap<String, serde_json::Value>>,
2340}
2341
2342#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2344#[serde(rename_all = "camelCase")]
2345pub struct SystemMessageData {
2346 pub content: String,
2348 #[serde(skip_serializing_if = "Option::is_none")]
2350 pub metadata: Option<SystemMessageMetadata>,
2351 #[serde(skip_serializing_if = "Option::is_none")]
2353 pub name: Option<String>,
2354 pub role: SystemMessageRole,
2356}
2357
2358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2360#[serde(rename_all = "camelCase")]
2361pub struct SystemNotificationData {
2362 pub content: String,
2364 pub kind: serde_json::Value,
2366}
2367
2368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2370#[serde(rename_all = "camelCase")]
2371pub struct PermissionRequestShellCommand {
2372 pub identifier: String,
2374 pub read_only: bool,
2376}
2377
2378#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2380#[serde(rename_all = "camelCase")]
2381pub struct PermissionRequestShellPossibleUrl {
2382 pub url: String,
2384}
2385
2386#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2388#[serde(rename_all = "camelCase")]
2389pub struct PermissionRequestShell {
2390 pub can_offer_session_approval: bool,
2392 pub commands: Vec<PermissionRequestShellCommand>,
2394 pub full_command_text: String,
2396 pub has_write_file_redirection: bool,
2398 pub intention: String,
2400 pub kind: PermissionRequestShellKind,
2402 pub possible_paths: Vec<String>,
2404 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2406 #[serde(skip_serializing_if = "Option::is_none")]
2408 pub tool_call_id: Option<String>,
2409 #[serde(skip_serializing_if = "Option::is_none")]
2411 pub warning: Option<String>,
2412}
2413
2414#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2416#[serde(rename_all = "camelCase")]
2417pub struct PermissionRequestWrite {
2418 pub can_offer_session_approval: bool,
2420 pub diff: String,
2422 pub file_name: String,
2424 pub intention: String,
2426 pub kind: PermissionRequestWriteKind,
2428 #[serde(skip_serializing_if = "Option::is_none")]
2430 pub new_file_contents: Option<String>,
2431 #[serde(skip_serializing_if = "Option::is_none")]
2433 pub tool_call_id: Option<String>,
2434}
2435
2436#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2438#[serde(rename_all = "camelCase")]
2439pub struct PermissionRequestRead {
2440 pub intention: String,
2442 pub kind: PermissionRequestReadKind,
2444 pub path: String,
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 PermissionRequestMcp {
2455 #[serde(skip_serializing_if = "Option::is_none")]
2457 pub args: Option<serde_json::Value>,
2458 pub kind: PermissionRequestMcpKind,
2460 pub read_only: bool,
2462 pub server_name: String,
2464 #[serde(skip_serializing_if = "Option::is_none")]
2466 pub tool_call_id: Option<String>,
2467 pub tool_name: String,
2469 pub tool_title: String,
2471}
2472
2473#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2475#[serde(rename_all = "camelCase")]
2476pub struct PermissionRequestUrl {
2477 pub intention: String,
2479 pub kind: PermissionRequestUrlKind,
2481 #[serde(skip_serializing_if = "Option::is_none")]
2483 pub tool_call_id: Option<String>,
2484 pub url: String,
2486}
2487
2488#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2490#[serde(rename_all = "camelCase")]
2491pub struct PermissionRequestMemory {
2492 #[serde(skip_serializing_if = "Option::is_none")]
2494 pub action: Option<PermissionRequestMemoryAction>,
2495 #[serde(skip_serializing_if = "Option::is_none")]
2497 pub citations: Option<String>,
2498 #[serde(skip_serializing_if = "Option::is_none")]
2500 pub direction: Option<PermissionRequestMemoryDirection>,
2501 pub fact: String,
2503 pub kind: PermissionRequestMemoryKind,
2505 #[serde(skip_serializing_if = "Option::is_none")]
2507 pub reason: Option<String>,
2508 #[serde(skip_serializing_if = "Option::is_none")]
2510 pub subject: Option<String>,
2511 #[serde(skip_serializing_if = "Option::is_none")]
2513 pub tool_call_id: Option<String>,
2514}
2515
2516#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2518#[serde(rename_all = "camelCase")]
2519pub struct PermissionRequestCustomTool {
2520 #[serde(skip_serializing_if = "Option::is_none")]
2522 pub args: Option<serde_json::Value>,
2523 pub kind: PermissionRequestCustomToolKind,
2525 #[serde(skip_serializing_if = "Option::is_none")]
2527 pub tool_call_id: Option<String>,
2528 pub tool_description: String,
2530 pub tool_name: String,
2532}
2533
2534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2536#[serde(rename_all = "camelCase")]
2537pub struct PermissionRequestHook {
2538 #[serde(skip_serializing_if = "Option::is_none")]
2540 pub hook_message: Option<String>,
2541 pub kind: PermissionRequestHookKind,
2543 #[serde(skip_serializing_if = "Option::is_none")]
2545 pub tool_args: Option<serde_json::Value>,
2546 #[serde(skip_serializing_if = "Option::is_none")]
2548 pub tool_call_id: Option<String>,
2549 pub tool_name: String,
2551}
2552
2553#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2555#[serde(rename_all = "camelCase")]
2556pub struct PermissionRequestExtensionManagement {
2557 #[serde(skip_serializing_if = "Option::is_none")]
2559 pub extension_name: Option<String>,
2560 pub kind: PermissionRequestExtensionManagementKind,
2562 pub operation: String,
2564 #[serde(skip_serializing_if = "Option::is_none")]
2566 pub tool_call_id: Option<String>,
2567}
2568
2569#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2571#[serde(rename_all = "camelCase")]
2572pub struct PermissionRequestExtensionPermissionAccess {
2573 pub capabilities: Vec<String>,
2575 pub extension_name: String,
2577 pub kind: PermissionRequestExtensionPermissionAccessKind,
2579 #[serde(skip_serializing_if = "Option::is_none")]
2581 pub tool_call_id: Option<String>,
2582}
2583
2584#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2586#[serde(rename_all = "camelCase")]
2587pub struct PermissionPromptRequestCommands {
2588 pub can_offer_session_approval: bool,
2590 pub command_identifiers: Vec<String>,
2592 pub full_command_text: String,
2594 pub intention: String,
2596 pub kind: PermissionPromptRequestCommandsKind,
2598 #[serde(skip_serializing_if = "Option::is_none")]
2600 pub tool_call_id: Option<String>,
2601 #[serde(skip_serializing_if = "Option::is_none")]
2603 pub warning: Option<String>,
2604}
2605
2606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2608#[serde(rename_all = "camelCase")]
2609pub struct PermissionPromptRequestWrite {
2610 pub can_offer_session_approval: bool,
2612 pub diff: String,
2614 pub file_name: String,
2616 pub intention: String,
2618 pub kind: PermissionPromptRequestWriteKind,
2620 #[serde(skip_serializing_if = "Option::is_none")]
2622 pub new_file_contents: Option<String>,
2623 #[serde(skip_serializing_if = "Option::is_none")]
2625 pub tool_call_id: Option<String>,
2626}
2627
2628#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2630#[serde(rename_all = "camelCase")]
2631pub struct PermissionPromptRequestRead {
2632 pub intention: String,
2634 pub kind: PermissionPromptRequestReadKind,
2636 pub path: String,
2638 #[serde(skip_serializing_if = "Option::is_none")]
2640 pub tool_call_id: Option<String>,
2641}
2642
2643#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2645#[serde(rename_all = "camelCase")]
2646pub struct PermissionPromptRequestMcp {
2647 #[serde(skip_serializing_if = "Option::is_none")]
2649 pub args: Option<serde_json::Value>,
2650 pub kind: PermissionPromptRequestMcpKind,
2652 pub server_name: String,
2654 #[serde(skip_serializing_if = "Option::is_none")]
2656 pub tool_call_id: Option<String>,
2657 pub tool_name: String,
2659 pub tool_title: String,
2661}
2662
2663#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2665#[serde(rename_all = "camelCase")]
2666pub struct PermissionPromptRequestUrl {
2667 pub intention: String,
2669 pub kind: PermissionPromptRequestUrlKind,
2671 #[serde(skip_serializing_if = "Option::is_none")]
2673 pub tool_call_id: Option<String>,
2674 pub url: String,
2676}
2677
2678#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2680#[serde(rename_all = "camelCase")]
2681pub struct PermissionPromptRequestMemory {
2682 #[serde(skip_serializing_if = "Option::is_none")]
2684 pub action: Option<PermissionRequestMemoryAction>,
2685 #[serde(skip_serializing_if = "Option::is_none")]
2687 pub citations: Option<String>,
2688 #[serde(skip_serializing_if = "Option::is_none")]
2690 pub direction: Option<PermissionRequestMemoryDirection>,
2691 pub fact: String,
2693 pub kind: PermissionPromptRequestMemoryKind,
2695 #[serde(skip_serializing_if = "Option::is_none")]
2697 pub reason: Option<String>,
2698 #[serde(skip_serializing_if = "Option::is_none")]
2700 pub subject: Option<String>,
2701 #[serde(skip_serializing_if = "Option::is_none")]
2703 pub tool_call_id: Option<String>,
2704}
2705
2706#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2708#[serde(rename_all = "camelCase")]
2709pub struct PermissionPromptRequestCustomTool {
2710 #[serde(skip_serializing_if = "Option::is_none")]
2712 pub args: Option<serde_json::Value>,
2713 pub kind: PermissionPromptRequestCustomToolKind,
2715 #[serde(skip_serializing_if = "Option::is_none")]
2717 pub tool_call_id: Option<String>,
2718 pub tool_description: String,
2720 pub tool_name: String,
2722}
2723
2724#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2726#[serde(rename_all = "camelCase")]
2727pub struct PermissionPromptRequestPath {
2728 pub access_kind: PermissionPromptRequestPathAccessKind,
2730 pub kind: PermissionPromptRequestPathKind,
2732 pub paths: Vec<String>,
2734 #[serde(skip_serializing_if = "Option::is_none")]
2736 pub tool_call_id: Option<String>,
2737}
2738
2739#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2741#[serde(rename_all = "camelCase")]
2742pub struct PermissionPromptRequestHook {
2743 #[serde(skip_serializing_if = "Option::is_none")]
2745 pub hook_message: Option<String>,
2746 pub kind: PermissionPromptRequestHookKind,
2748 #[serde(skip_serializing_if = "Option::is_none")]
2750 pub tool_args: Option<serde_json::Value>,
2751 #[serde(skip_serializing_if = "Option::is_none")]
2753 pub tool_call_id: Option<String>,
2754 pub tool_name: String,
2756}
2757
2758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2760#[serde(rename_all = "camelCase")]
2761pub struct PermissionPromptRequestExtensionManagement {
2762 #[serde(skip_serializing_if = "Option::is_none")]
2764 pub extension_name: Option<String>,
2765 pub kind: PermissionPromptRequestExtensionManagementKind,
2767 pub operation: String,
2769 #[serde(skip_serializing_if = "Option::is_none")]
2771 pub tool_call_id: Option<String>,
2772}
2773
2774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2776#[serde(rename_all = "camelCase")]
2777pub struct PermissionPromptRequestExtensionPermissionAccess {
2778 pub capabilities: Vec<String>,
2780 pub extension_name: String,
2782 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
2784 #[serde(skip_serializing_if = "Option::is_none")]
2786 pub tool_call_id: Option<String>,
2787}
2788
2789#[derive(Debug, Clone, Serialize, Deserialize)]
2791#[serde(rename_all = "camelCase")]
2792pub struct PermissionRequestedData {
2793 pub permission_request: PermissionRequest,
2795 #[serde(skip_serializing_if = "Option::is_none")]
2797 pub prompt_request: Option<PermissionPromptRequest>,
2798 pub request_id: RequestId,
2800 #[serde(skip_serializing_if = "Option::is_none")]
2802 pub resolved_by_hook: Option<bool>,
2803}
2804
2805#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2807#[serde(rename_all = "camelCase")]
2808pub struct PermissionApproved {
2809 pub kind: PermissionApprovedKind,
2811}
2812
2813#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2815#[serde(rename_all = "camelCase")]
2816pub struct UserToolSessionApprovalCommands {
2817 pub command_identifiers: Vec<String>,
2819 pub kind: UserToolSessionApprovalCommandsKind,
2821}
2822
2823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2825#[serde(rename_all = "camelCase")]
2826pub struct UserToolSessionApprovalRead {
2827 pub kind: UserToolSessionApprovalReadKind,
2829}
2830
2831#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2833#[serde(rename_all = "camelCase")]
2834pub struct UserToolSessionApprovalWrite {
2835 pub kind: UserToolSessionApprovalWriteKind,
2837}
2838
2839#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2841#[serde(rename_all = "camelCase")]
2842pub struct UserToolSessionApprovalMcp {
2843 pub kind: UserToolSessionApprovalMcpKind,
2845 pub server_name: String,
2847 pub tool_name: Option<String>,
2849}
2850
2851#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2853#[serde(rename_all = "camelCase")]
2854pub struct UserToolSessionApprovalMemory {
2855 pub kind: UserToolSessionApprovalMemoryKind,
2857}
2858
2859#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2861#[serde(rename_all = "camelCase")]
2862pub struct UserToolSessionApprovalCustomTool {
2863 pub kind: UserToolSessionApprovalCustomToolKind,
2865 pub tool_name: String,
2867}
2868
2869#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2871#[serde(rename_all = "camelCase")]
2872pub struct UserToolSessionApprovalExtensionManagement {
2873 pub kind: UserToolSessionApprovalExtensionManagementKind,
2875 #[serde(skip_serializing_if = "Option::is_none")]
2877 pub operation: Option<String>,
2878}
2879
2880#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2882#[serde(rename_all = "camelCase")]
2883pub struct UserToolSessionApprovalExtensionPermissionAccess {
2884 pub extension_name: String,
2886 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
2888}
2889
2890#[derive(Debug, Clone, Serialize, Deserialize)]
2892#[serde(rename_all = "camelCase")]
2893pub struct PermissionApprovedForSession {
2894 pub approval: UserToolSessionApproval,
2896 pub kind: PermissionApprovedForSessionKind,
2898}
2899
2900#[derive(Debug, Clone, Serialize, Deserialize)]
2902#[serde(rename_all = "camelCase")]
2903pub struct PermissionApprovedForLocation {
2904 pub approval: UserToolSessionApproval,
2906 pub kind: PermissionApprovedForLocationKind,
2908 pub location_key: String,
2910}
2911
2912#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2914#[serde(rename_all = "camelCase")]
2915pub struct PermissionCancelled {
2916 pub kind: PermissionCancelledKind,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2920 pub reason: Option<String>,
2921}
2922
2923#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2925#[serde(rename_all = "camelCase")]
2926pub struct PermissionRule {
2927 pub argument: Option<String>,
2929 pub kind: String,
2931}
2932
2933#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2935#[serde(rename_all = "camelCase")]
2936pub struct PermissionDeniedByRules {
2937 pub kind: PermissionDeniedByRulesKind,
2939 pub rules: Vec<PermissionRule>,
2941}
2942
2943#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2945#[serde(rename_all = "camelCase")]
2946pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
2947 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
2949}
2950
2951#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2953#[serde(rename_all = "camelCase")]
2954pub struct PermissionDeniedInteractivelyByUser {
2955 #[serde(skip_serializing_if = "Option::is_none")]
2957 pub feedback: Option<String>,
2958 #[serde(skip_serializing_if = "Option::is_none")]
2960 pub force_reject: Option<bool>,
2961 pub kind: PermissionDeniedInteractivelyByUserKind,
2963}
2964
2965#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2967#[serde(rename_all = "camelCase")]
2968pub struct PermissionDeniedByContentExclusionPolicy {
2969 pub kind: PermissionDeniedByContentExclusionPolicyKind,
2971 pub message: String,
2973 pub path: String,
2975}
2976
2977#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2979#[serde(rename_all = "camelCase")]
2980pub struct PermissionDeniedByPermissionRequestHook {
2981 #[serde(skip_serializing_if = "Option::is_none")]
2983 pub interrupt: Option<bool>,
2984 pub kind: PermissionDeniedByPermissionRequestHookKind,
2986 #[serde(skip_serializing_if = "Option::is_none")]
2988 pub message: Option<String>,
2989}
2990
2991#[derive(Debug, Clone, Serialize, Deserialize)]
2993#[serde(rename_all = "camelCase")]
2994pub struct PermissionCompletedData {
2995 pub request_id: RequestId,
2997 pub result: PermissionResult,
2999 #[serde(skip_serializing_if = "Option::is_none")]
3001 pub tool_call_id: Option<String>,
3002}
3003
3004#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3006#[serde(rename_all = "camelCase")]
3007pub struct UserInputRequestedData {
3008 #[serde(skip_serializing_if = "Option::is_none")]
3010 pub allow_freeform: Option<bool>,
3011 #[serde(skip_serializing_if = "Option::is_none")]
3013 pub choices: Option<Vec<String>>,
3014 pub question: String,
3016 pub request_id: RequestId,
3018 #[serde(skip_serializing_if = "Option::is_none")]
3020 pub tool_call_id: Option<String>,
3021}
3022
3023#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3025#[serde(rename_all = "camelCase")]
3026pub struct UserInputCompletedData {
3027 #[serde(skip_serializing_if = "Option::is_none")]
3029 pub answer: Option<String>,
3030 pub request_id: RequestId,
3032 #[serde(skip_serializing_if = "Option::is_none")]
3034 pub was_freeform: Option<bool>,
3035}
3036
3037#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3039#[serde(rename_all = "camelCase")]
3040pub struct ElicitationRequestedSchema {
3041 pub properties: HashMap<String, serde_json::Value>,
3043 #[serde(skip_serializing_if = "Option::is_none")]
3045 pub required: Option<Vec<String>>,
3046 pub r#type: ElicitationRequestedSchemaType,
3048}
3049
3050#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3052#[serde(rename_all = "camelCase")]
3053pub struct ElicitationRequestedData {
3054 #[serde(skip_serializing_if = "Option::is_none")]
3056 pub elicitation_source: Option<String>,
3057 pub message: String,
3059 #[serde(skip_serializing_if = "Option::is_none")]
3061 pub mode: Option<ElicitationRequestedMode>,
3062 #[serde(skip_serializing_if = "Option::is_none")]
3064 pub requested_schema: Option<ElicitationRequestedSchema>,
3065 pub request_id: RequestId,
3067 #[serde(skip_serializing_if = "Option::is_none")]
3069 pub tool_call_id: Option<String>,
3070 #[serde(skip_serializing_if = "Option::is_none")]
3072 pub url: Option<String>,
3073}
3074
3075#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3077#[serde(rename_all = "camelCase")]
3078pub struct ElicitationCompletedData {
3079 #[serde(skip_serializing_if = "Option::is_none")]
3081 pub action: Option<ElicitationCompletedAction>,
3082 #[serde(skip_serializing_if = "Option::is_none")]
3084 pub content: Option<HashMap<String, serde_json::Value>>,
3085 pub request_id: RequestId,
3087}
3088
3089#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3091#[serde(rename_all = "camelCase")]
3092pub struct SamplingRequestedData {
3093 pub mcp_request_id: serde_json::Value,
3095 pub request_id: RequestId,
3097 pub server_name: String,
3099}
3100
3101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3103#[serde(rename_all = "camelCase")]
3104pub struct SamplingCompletedData {
3105 pub request_id: RequestId,
3107}
3108
3109#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3111#[serde(rename_all = "camelCase")]
3112pub struct McpOauthRequiredStaticClientConfig {
3113 pub client_id: String,
3115 #[serde(skip_serializing_if = "Option::is_none")]
3117 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3118 #[serde(skip_serializing_if = "Option::is_none")]
3120 pub public_client: Option<bool>,
3121}
3122
3123#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3125#[serde(rename_all = "camelCase")]
3126pub struct McpOauthWWWAuthenticateParams {
3127 #[serde(skip_serializing_if = "Option::is_none")]
3129 pub error: Option<String>,
3130 pub resource_metadata_url: String,
3132 #[serde(skip_serializing_if = "Option::is_none")]
3134 pub scope: Option<String>,
3135}
3136
3137#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3139#[serde(rename_all = "camelCase")]
3140pub struct McpOauthRequiredData {
3141 pub request_id: RequestId,
3143 #[serde(skip_serializing_if = "Option::is_none")]
3145 pub resource_metadata: Option<String>,
3146 pub server_name: String,
3148 pub server_url: String,
3150 #[serde(skip_serializing_if = "Option::is_none")]
3152 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3153 #[serde(skip_serializing_if = "Option::is_none")]
3155 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3156}
3157
3158#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3160#[serde(rename_all = "camelCase")]
3161pub struct McpOauthCompletedData {
3162 pub outcome: McpOauthCompletionOutcome,
3164 pub request_id: RequestId,
3166}
3167
3168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3170#[serde(rename_all = "camelCase")]
3171pub struct SessionCustomNotificationData {
3172 pub name: String,
3174 pub payload: serde_json::Value,
3176 pub source: String,
3178 #[serde(skip_serializing_if = "Option::is_none")]
3180 pub subject: Option<HashMap<String, String>>,
3181 #[serde(skip_serializing_if = "Option::is_none")]
3183 pub version: Option<i64>,
3184}
3185
3186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3188#[serde(rename_all = "camelCase")]
3189pub struct ExternalToolRequestedData {
3190 #[serde(skip_serializing_if = "Option::is_none")]
3192 pub arguments: Option<serde_json::Value>,
3193 pub request_id: RequestId,
3195 pub session_id: SessionId,
3197 pub tool_call_id: String,
3199 pub tool_name: String,
3201 #[serde(skip_serializing_if = "Option::is_none")]
3203 pub traceparent: Option<String>,
3204 #[serde(skip_serializing_if = "Option::is_none")]
3206 pub tracestate: Option<String>,
3207 #[serde(skip_serializing_if = "Option::is_none")]
3209 pub working_directory: Option<String>,
3210}
3211
3212#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3214#[serde(rename_all = "camelCase")]
3215pub struct ExternalToolCompletedData {
3216 pub request_id: RequestId,
3218}
3219
3220#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3222#[serde(rename_all = "camelCase")]
3223pub struct CommandQueuedData {
3224 pub command: String,
3226 pub request_id: RequestId,
3228}
3229
3230#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3232#[serde(rename_all = "camelCase")]
3233pub struct CommandExecuteData {
3234 pub args: String,
3236 pub command: String,
3238 pub command_name: String,
3240 pub request_id: RequestId,
3242}
3243
3244#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3246#[serde(rename_all = "camelCase")]
3247pub struct CommandCompletedData {
3248 pub request_id: RequestId,
3250}
3251
3252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3254#[serde(rename_all = "camelCase")]
3255pub struct AutoModeSwitchRequestedData {
3256 #[serde(skip_serializing_if = "Option::is_none")]
3258 pub error_code: Option<String>,
3259 pub request_id: RequestId,
3261 #[serde(skip_serializing_if = "Option::is_none")]
3263 pub retry_after_seconds: Option<i64>,
3264}
3265
3266#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3268#[serde(rename_all = "camelCase")]
3269pub struct AutoModeSwitchCompletedData {
3270 pub request_id: RequestId,
3272 pub response: AutoModeSwitchResponse,
3274}
3275
3276#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3278#[serde(rename_all = "camelCase")]
3279pub struct CommandsChangedCommand {
3280 #[serde(skip_serializing_if = "Option::is_none")]
3282 pub description: Option<String>,
3283 pub name: String,
3285}
3286
3287#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3289#[serde(rename_all = "camelCase")]
3290pub struct CommandsChangedData {
3291 pub commands: Vec<CommandsChangedCommand>,
3293}
3294
3295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3297#[serde(rename_all = "camelCase")]
3298pub struct CapabilitiesChangedUI {
3299 #[serde(skip_serializing_if = "Option::is_none")]
3301 pub canvases: Option<bool>,
3302 #[serde(skip_serializing_if = "Option::is_none")]
3304 pub elicitation: Option<bool>,
3305 #[serde(skip_serializing_if = "Option::is_none")]
3307 pub mcp_apps: Option<bool>,
3308}
3309
3310#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3312#[serde(rename_all = "camelCase")]
3313pub struct CapabilitiesChangedData {
3314 #[serde(skip_serializing_if = "Option::is_none")]
3316 pub ui: Option<CapabilitiesChangedUI>,
3317}
3318
3319#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3321#[serde(rename_all = "camelCase")]
3322pub struct ExitPlanModeRequestedData {
3323 pub actions: Vec<ExitPlanModeAction>,
3325 pub plan_content: String,
3327 pub recommended_action: ExitPlanModeAction,
3329 pub request_id: RequestId,
3331 pub summary: String,
3333}
3334
3335#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3337#[serde(rename_all = "camelCase")]
3338pub struct ExitPlanModeCompletedData {
3339 #[serde(skip_serializing_if = "Option::is_none")]
3341 pub approved: Option<bool>,
3342 #[serde(skip_serializing_if = "Option::is_none")]
3344 pub auto_approve_edits: Option<bool>,
3345 #[serde(skip_serializing_if = "Option::is_none")]
3347 pub feedback: Option<String>,
3348 pub request_id: RequestId,
3350 #[serde(skip_serializing_if = "Option::is_none")]
3352 pub selected_action: Option<ExitPlanModeAction>,
3353}
3354
3355#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3357#[serde(rename_all = "camelCase")]
3358pub struct SessionToolsUpdatedData {
3359 pub model: String,
3361}
3362
3363#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3365#[serde(rename_all = "camelCase")]
3366pub struct SessionBackgroundTasksChangedData {}
3367
3368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3370#[serde(rename_all = "camelCase")]
3371pub struct SkillsLoadedSkill {
3372 pub description: String,
3374 pub enabled: bool,
3376 pub name: String,
3378 #[serde(skip_serializing_if = "Option::is_none")]
3380 pub path: Option<String>,
3381 pub source: SkillSource,
3383 pub user_invocable: bool,
3385}
3386
3387#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3389#[serde(rename_all = "camelCase")]
3390pub struct SessionSkillsLoadedData {
3391 pub skills: Vec<SkillsLoadedSkill>,
3393}
3394
3395#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3397#[serde(rename_all = "camelCase")]
3398pub struct CustomAgentsUpdatedAgent {
3399 pub description: String,
3401 pub display_name: String,
3403 pub id: String,
3405 #[serde(skip_serializing_if = "Option::is_none")]
3407 pub model: Option<String>,
3408 pub name: String,
3410 pub source: String,
3412 pub tools: Option<Vec<String>>,
3414 pub user_invocable: bool,
3416}
3417
3418#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3420#[serde(rename_all = "camelCase")]
3421pub struct SessionCustomAgentsUpdatedData {
3422 pub agents: Vec<CustomAgentsUpdatedAgent>,
3424 pub errors: Vec<String>,
3426 pub warnings: Vec<String>,
3428}
3429
3430#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3432#[serde(rename_all = "camelCase")]
3433pub struct McpServersLoadedServer {
3434 #[serde(skip_serializing_if = "Option::is_none")]
3436 pub error: Option<String>,
3437 pub name: String,
3439 #[serde(skip_serializing_if = "Option::is_none")]
3441 pub plugin_name: Option<String>,
3442 #[serde(skip_serializing_if = "Option::is_none")]
3444 pub plugin_version: Option<String>,
3445 #[serde(skip_serializing_if = "Option::is_none")]
3447 pub source: Option<McpServerSource>,
3448 pub status: McpServerStatus,
3450 #[serde(skip_serializing_if = "Option::is_none")]
3452 pub transport: Option<McpServerTransport>,
3453}
3454
3455#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3457#[serde(rename_all = "camelCase")]
3458pub struct SessionMcpServersLoadedData {
3459 pub servers: Vec<McpServersLoadedServer>,
3461}
3462
3463#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3465#[serde(rename_all = "camelCase")]
3466pub struct SessionMcpServerStatusChangedData {
3467 #[serde(skip_serializing_if = "Option::is_none")]
3469 pub error: Option<String>,
3470 pub server_name: String,
3472 pub status: McpServerStatus,
3474}
3475
3476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3478#[serde(rename_all = "camelCase")]
3479pub struct ExtensionsLoadedExtension {
3480 pub id: String,
3482 pub name: String,
3484 pub source: ExtensionsLoadedExtensionSource,
3486 pub status: ExtensionsLoadedExtensionStatus,
3488}
3489
3490#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3492#[serde(rename_all = "camelCase")]
3493pub struct SessionExtensionsLoadedData {
3494 pub extensions: Vec<ExtensionsLoadedExtension>,
3496}
3497
3498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3500#[serde(rename_all = "camelCase")]
3501pub struct SessionCanvasOpenedData {
3502 pub availability: CanvasOpenedAvailability,
3504 pub canvas_id: String,
3506 pub extension_id: String,
3508 #[serde(skip_serializing_if = "Option::is_none")]
3510 pub extension_name: Option<String>,
3511 #[serde(skip_serializing_if = "Option::is_none")]
3513 pub input: Option<serde_json::Value>,
3514 pub instance_id: String,
3516 pub reopen: bool,
3518 #[serde(skip_serializing_if = "Option::is_none")]
3520 pub status: Option<String>,
3521 #[serde(skip_serializing_if = "Option::is_none")]
3523 pub title: Option<String>,
3524 #[serde(skip_serializing_if = "Option::is_none")]
3526 pub url: Option<String>,
3527}
3528
3529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3531#[serde(rename_all = "camelCase")]
3532pub struct CanvasRegistryChangedCanvasAction {
3533 #[serde(skip_serializing_if = "Option::is_none")]
3535 pub description: Option<String>,
3536 #[serde(skip_serializing_if = "Option::is_none")]
3538 pub input_schema: Option<serde_json::Value>,
3539 pub name: String,
3541}
3542
3543#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3545#[serde(rename_all = "camelCase")]
3546pub struct CanvasRegistryChangedCanvas {
3547 #[serde(skip_serializing_if = "Option::is_none")]
3549 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
3550 pub canvas_id: String,
3552 pub description: String,
3554 pub display_name: String,
3556 pub extension_id: String,
3558 #[serde(skip_serializing_if = "Option::is_none")]
3560 pub extension_name: Option<String>,
3561 #[serde(skip_serializing_if = "Option::is_none")]
3563 pub input_schema: Option<serde_json::Value>,
3564}
3565
3566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3568#[serde(rename_all = "camelCase")]
3569pub struct SessionCanvasRegistryChangedData {
3570 pub canvases: Vec<CanvasRegistryChangedCanvas>,
3572}
3573
3574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3576#[serde(rename_all = "camelCase")]
3577pub struct SessionCanvasClosedData {
3578 pub canvas_id: String,
3580 pub extension_id: String,
3582 pub instance_id: String,
3584}
3585
3586#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3588#[serde(rename_all = "camelCase")]
3589pub struct SessionExtensionsAttachmentsPushedData {
3590 pub attachments: Vec<serde_json::Value>,
3592}
3593
3594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3596#[serde(rename_all = "camelCase")]
3597pub struct McpAppToolCallCompleteError {
3598 pub message: String,
3600}
3601
3602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3604#[serde(rename_all = "camelCase")]
3605pub struct McpAppToolCallCompleteToolMetaUI {
3606 #[serde(skip_serializing_if = "Option::is_none")]
3608 pub resource_uri: Option<String>,
3609 #[serde(skip_serializing_if = "Option::is_none")]
3611 pub visibility: Option<Vec<String>>,
3612}
3613
3614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3616#[serde(rename_all = "camelCase")]
3617pub struct McpAppToolCallCompleteToolMeta {
3618 #[serde(skip_serializing_if = "Option::is_none")]
3620 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
3621}
3622
3623#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3625#[serde(rename_all = "camelCase")]
3626pub struct McpAppToolCallCompleteData {
3627 #[serde(skip_serializing_if = "Option::is_none")]
3629 pub arguments: Option<HashMap<String, serde_json::Value>>,
3630 pub duration_ms: f64,
3632 #[serde(skip_serializing_if = "Option::is_none")]
3634 pub error: Option<McpAppToolCallCompleteError>,
3635 #[serde(skip_serializing_if = "Option::is_none")]
3637 pub result: Option<HashMap<String, serde_json::Value>>,
3638 pub server_name: String,
3640 pub success: bool,
3642 #[serde(skip_serializing_if = "Option::is_none")]
3644 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
3645 pub tool_name: String,
3647}
3648
3649#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3651pub enum WorkingDirectoryContextHostType {
3652 #[serde(rename = "github")]
3654 GitHub,
3655 #[serde(rename = "ado")]
3657 Ado,
3658 #[default]
3660 #[serde(other)]
3661 Unknown,
3662}
3663
3664#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3666pub enum ContextTier {
3667 #[serde(rename = "default")]
3669 Default,
3670 #[serde(rename = "long_context")]
3672 LongContext,
3673 #[default]
3675 #[serde(other)]
3676 Unknown,
3677}
3678
3679#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3681pub enum ReasoningSummary {
3682 #[serde(rename = "none")]
3684 None,
3685 #[serde(rename = "concise")]
3687 Concise,
3688 #[serde(rename = "detailed")]
3690 Detailed,
3691 #[default]
3693 #[serde(other)]
3694 Unknown,
3695}
3696
3697#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3699pub enum AutopilotObjectiveChangedOperation {
3700 #[serde(rename = "create")]
3702 Create,
3703 #[serde(rename = "update")]
3705 Update,
3706 #[serde(rename = "delete")]
3708 Delete,
3709 #[default]
3711 #[serde(other)]
3712 Unknown,
3713}
3714
3715#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3717pub enum AutopilotObjectiveChangedStatus {
3718 #[serde(rename = "active")]
3720 Active,
3721 #[serde(rename = "paused")]
3723 Paused,
3724 #[serde(rename = "cap_reached")]
3726 CapReached,
3727 #[serde(rename = "completed")]
3729 Completed,
3730 #[default]
3732 #[serde(other)]
3733 Unknown,
3734}
3735
3736#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3738pub enum SessionMode {
3739 #[serde(rename = "interactive")]
3741 Interactive,
3742 #[serde(rename = "plan")]
3744 Plan,
3745 #[serde(rename = "autopilot")]
3747 Autopilot,
3748 #[default]
3750 #[serde(other)]
3751 Unknown,
3752}
3753
3754#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3756pub enum PlanChangedOperation {
3757 #[serde(rename = "create")]
3759 Create,
3760 #[serde(rename = "update")]
3762 Update,
3763 #[serde(rename = "delete")]
3765 Delete,
3766 #[default]
3768 #[serde(other)]
3769 Unknown,
3770}
3771
3772#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3774pub enum WorkspaceFileChangedOperation {
3775 #[serde(rename = "create")]
3777 Create,
3778 #[serde(rename = "update")]
3780 Update,
3781 #[default]
3783 #[serde(other)]
3784 Unknown,
3785}
3786
3787#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3789pub enum HandoffSourceType {
3790 #[serde(rename = "remote")]
3792 Remote,
3793 #[serde(rename = "local")]
3795 Local,
3796 #[default]
3798 #[serde(other)]
3799 Unknown,
3800}
3801
3802#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3804pub enum ShutdownType {
3805 #[serde(rename = "routine")]
3807 Routine,
3808 #[serde(rename = "error")]
3810 Error,
3811 #[default]
3813 #[serde(other)]
3814 Unknown,
3815}
3816
3817#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3819pub enum UserMessageAgentMode {
3820 #[serde(rename = "interactive")]
3822 Interactive,
3823 #[serde(rename = "plan")]
3825 Plan,
3826 #[serde(rename = "autopilot")]
3828 Autopilot,
3829 #[serde(rename = "shell")]
3831 Shell,
3832 #[default]
3834 #[serde(other)]
3835 Unknown,
3836}
3837
3838#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3847pub enum CitationProvider {
3848 #[serde(rename = "anthropic")]
3850 Anthropic,
3851 #[serde(rename = "openai")]
3853 Openai,
3854 #[serde(rename = "client")]
3856 Client,
3857 #[default]
3859 #[serde(other)]
3860 Unknown,
3861}
3862
3863#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3865pub enum AssistantMessageToolRequestType {
3866 #[serde(rename = "function")]
3868 Function,
3869 #[serde(rename = "custom")]
3871 Custom,
3872 #[default]
3874 #[serde(other)]
3875 Unknown,
3876}
3877
3878#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3880pub enum AssistantUsageApiEndpoint {
3881 #[serde(rename = "/chat/completions")]
3883 ChatCompletions,
3884 #[serde(rename = "/v1/messages")]
3886 V1Messages,
3887 #[serde(rename = "/responses")]
3889 Responses,
3890 #[serde(rename = "ws:/responses")]
3892 WsResponses,
3893 #[default]
3895 #[serde(other)]
3896 Unknown,
3897}
3898
3899#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3901pub enum ModelCallFailureBadRequestKind {
3902 #[serde(rename = "bodyless")]
3904 Bodyless,
3905 #[serde(rename = "structured_error")]
3907 StructuredError,
3908 #[default]
3910 #[serde(other)]
3911 Unknown,
3912}
3913
3914#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3916pub enum ModelCallFailureSource {
3917 #[serde(rename = "top_level")]
3919 TopLevel,
3920 #[serde(rename = "subagent")]
3922 Subagent,
3923 #[serde(rename = "mcp_sampling")]
3925 McpSampling,
3926 #[default]
3928 #[serde(other)]
3929 Unknown,
3930}
3931
3932#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3934pub enum AbortReason {
3935 #[serde(rename = "user_initiated")]
3937 UserInitiated,
3938 #[serde(rename = "remote_command")]
3940 RemoteCommand,
3941 #[serde(rename = "user_abort")]
3943 UserAbort,
3944 #[default]
3946 #[serde(other)]
3947 Unknown,
3948}
3949
3950#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3952pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
3953 #[serde(rename = "model")]
3955 Model,
3956 #[serde(rename = "app")]
3958 App,
3959 #[default]
3961 #[serde(other)]
3962 Unknown,
3963}
3964
3965#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3967pub enum ToolExecutionCompleteContentTextType {
3968 #[serde(rename = "text")]
3969 #[default]
3970 Text,
3971}
3972
3973#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3975pub enum ToolExecutionCompleteContentTerminalType {
3976 #[serde(rename = "terminal")]
3977 #[default]
3978 Terminal,
3979}
3980
3981#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3983pub enum ToolExecutionCompleteContentImageType {
3984 #[serde(rename = "image")]
3985 #[default]
3986 Image,
3987}
3988
3989#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3991pub enum ToolExecutionCompleteContentAudioType {
3992 #[serde(rename = "audio")]
3993 #[default]
3994 Audio,
3995}
3996
3997#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3999pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4000 #[serde(rename = "light")]
4002 Light,
4003 #[serde(rename = "dark")]
4005 Dark,
4006 #[default]
4008 #[serde(other)]
4009 Unknown,
4010}
4011
4012#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4014pub enum ToolExecutionCompleteContentResourceLinkType {
4015 #[serde(rename = "resource_link")]
4016 #[default]
4017 ResourceLink,
4018}
4019
4020#[derive(Debug, Clone, Serialize, Deserialize)]
4022#[serde(untagged)]
4023pub enum ToolExecutionCompleteContentResourceDetails {
4024 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4025 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4026}
4027
4028#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4030pub enum ToolExecutionCompleteContentResourceType {
4031 #[serde(rename = "resource")]
4032 #[default]
4033 Resource,
4034}
4035
4036#[derive(Debug, Clone, Serialize, Deserialize)]
4038#[serde(untagged)]
4039pub enum ToolExecutionCompleteContent {
4040 Text(ToolExecutionCompleteContentText),
4041 Terminal(ToolExecutionCompleteContentTerminal),
4042 Image(ToolExecutionCompleteContentImage),
4043 Audio(ToolExecutionCompleteContentAudio),
4044 ResourceLink(ToolExecutionCompleteContentResourceLink),
4045 Resource(ToolExecutionCompleteContentResource),
4046}
4047
4048#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4050pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4051 #[serde(rename = "model")]
4053 Model,
4054 #[serde(rename = "app")]
4056 App,
4057 #[default]
4059 #[serde(other)]
4060 Unknown,
4061}
4062
4063#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4065pub enum SkillInvokedTrigger {
4066 #[serde(rename = "user-invoked")]
4068 UserInvoked,
4069 #[serde(rename = "agent-invoked")]
4071 AgentInvoked,
4072 #[serde(rename = "context-load")]
4074 ContextLoad,
4075 #[default]
4077 #[serde(other)]
4078 Unknown,
4079}
4080
4081#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4083pub enum BinaryAssetType {
4084 #[serde(rename = "image")]
4086 Image,
4087 #[serde(rename = "resource")]
4089 Resource,
4090 #[default]
4092 #[serde(other)]
4093 Unknown,
4094}
4095
4096#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4098pub enum SystemMessageRole {
4099 #[serde(rename = "system")]
4101 System,
4102 #[serde(rename = "developer")]
4104 Developer,
4105 #[default]
4107 #[serde(other)]
4108 Unknown,
4109}
4110
4111#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4113pub enum PermissionRequestShellKind {
4114 #[serde(rename = "shell")]
4115 #[default]
4116 Shell,
4117}
4118
4119#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4121pub enum PermissionRequestWriteKind {
4122 #[serde(rename = "write")]
4123 #[default]
4124 Write,
4125}
4126
4127#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4129pub enum PermissionRequestReadKind {
4130 #[serde(rename = "read")]
4131 #[default]
4132 Read,
4133}
4134
4135#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4137pub enum PermissionRequestMcpKind {
4138 #[serde(rename = "mcp")]
4139 #[default]
4140 Mcp,
4141}
4142
4143#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4145pub enum PermissionRequestUrlKind {
4146 #[serde(rename = "url")]
4147 #[default]
4148 Url,
4149}
4150
4151#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4153pub enum PermissionRequestMemoryAction {
4154 #[serde(rename = "store")]
4156 Store,
4157 #[serde(rename = "vote")]
4159 Vote,
4160 #[default]
4162 #[serde(other)]
4163 Unknown,
4164}
4165
4166#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4168pub enum PermissionRequestMemoryDirection {
4169 #[serde(rename = "upvote")]
4171 Upvote,
4172 #[serde(rename = "downvote")]
4174 Downvote,
4175 #[default]
4177 #[serde(other)]
4178 Unknown,
4179}
4180
4181#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4183pub enum PermissionRequestMemoryKind {
4184 #[serde(rename = "memory")]
4185 #[default]
4186 Memory,
4187}
4188
4189#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4191pub enum PermissionRequestCustomToolKind {
4192 #[serde(rename = "custom-tool")]
4193 #[default]
4194 CustomTool,
4195}
4196
4197#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4199pub enum PermissionRequestHookKind {
4200 #[serde(rename = "hook")]
4201 #[default]
4202 Hook,
4203}
4204
4205#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4207pub enum PermissionRequestExtensionManagementKind {
4208 #[serde(rename = "extension-management")]
4209 #[default]
4210 ExtensionManagement,
4211}
4212
4213#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4215pub enum PermissionRequestExtensionPermissionAccessKind {
4216 #[serde(rename = "extension-permission-access")]
4217 #[default]
4218 ExtensionPermissionAccess,
4219}
4220
4221#[derive(Debug, Clone, Serialize, Deserialize)]
4223#[serde(untagged)]
4224pub enum PermissionRequest {
4225 Shell(PermissionRequestShell),
4226 Write(PermissionRequestWrite),
4227 Read(PermissionRequestRead),
4228 Mcp(PermissionRequestMcp),
4229 Url(PermissionRequestUrl),
4230 Memory(PermissionRequestMemory),
4231 CustomTool(PermissionRequestCustomTool),
4232 Hook(PermissionRequestHook),
4233 ExtensionManagement(PermissionRequestExtensionManagement),
4234 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
4235}
4236
4237#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4239pub enum PermissionPromptRequestCommandsKind {
4240 #[serde(rename = "commands")]
4241 #[default]
4242 Commands,
4243}
4244
4245#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4247pub enum PermissionPromptRequestWriteKind {
4248 #[serde(rename = "write")]
4249 #[default]
4250 Write,
4251}
4252
4253#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4255pub enum PermissionPromptRequestReadKind {
4256 #[serde(rename = "read")]
4257 #[default]
4258 Read,
4259}
4260
4261#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4263pub enum PermissionPromptRequestMcpKind {
4264 #[serde(rename = "mcp")]
4265 #[default]
4266 Mcp,
4267}
4268
4269#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4271pub enum PermissionPromptRequestUrlKind {
4272 #[serde(rename = "url")]
4273 #[default]
4274 Url,
4275}
4276
4277#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4279pub enum PermissionPromptRequestMemoryKind {
4280 #[serde(rename = "memory")]
4281 #[default]
4282 Memory,
4283}
4284
4285#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4287pub enum PermissionPromptRequestCustomToolKind {
4288 #[serde(rename = "custom-tool")]
4289 #[default]
4290 CustomTool,
4291}
4292
4293#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4295pub enum PermissionPromptRequestPathAccessKind {
4296 #[serde(rename = "read")]
4298 Read,
4299 #[serde(rename = "shell")]
4301 Shell,
4302 #[serde(rename = "write")]
4304 Write,
4305 #[default]
4307 #[serde(other)]
4308 Unknown,
4309}
4310
4311#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4313pub enum PermissionPromptRequestPathKind {
4314 #[serde(rename = "path")]
4315 #[default]
4316 Path,
4317}
4318
4319#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4321pub enum PermissionPromptRequestHookKind {
4322 #[serde(rename = "hook")]
4323 #[default]
4324 Hook,
4325}
4326
4327#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4329pub enum PermissionPromptRequestExtensionManagementKind {
4330 #[serde(rename = "extension-management")]
4331 #[default]
4332 ExtensionManagement,
4333}
4334
4335#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4337pub enum PermissionPromptRequestExtensionPermissionAccessKind {
4338 #[serde(rename = "extension-permission-access")]
4339 #[default]
4340 ExtensionPermissionAccess,
4341}
4342
4343#[derive(Debug, Clone, Serialize, Deserialize)]
4345#[serde(untagged)]
4346pub enum PermissionPromptRequest {
4347 Commands(PermissionPromptRequestCommands),
4348 Write(PermissionPromptRequestWrite),
4349 Read(PermissionPromptRequestRead),
4350 Mcp(PermissionPromptRequestMcp),
4351 Url(PermissionPromptRequestUrl),
4352 Memory(PermissionPromptRequestMemory),
4353 CustomTool(PermissionPromptRequestCustomTool),
4354 Path(PermissionPromptRequestPath),
4355 Hook(PermissionPromptRequestHook),
4356 ExtensionManagement(PermissionPromptRequestExtensionManagement),
4357 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
4358}
4359
4360#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4362pub enum PermissionApprovedKind {
4363 #[serde(rename = "approved")]
4364 #[default]
4365 Approved,
4366}
4367
4368#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4370pub enum UserToolSessionApprovalCommandsKind {
4371 #[serde(rename = "commands")]
4372 #[default]
4373 Commands,
4374}
4375
4376#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4378pub enum UserToolSessionApprovalReadKind {
4379 #[serde(rename = "read")]
4380 #[default]
4381 Read,
4382}
4383
4384#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4386pub enum UserToolSessionApprovalWriteKind {
4387 #[serde(rename = "write")]
4388 #[default]
4389 Write,
4390}
4391
4392#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4394pub enum UserToolSessionApprovalMcpKind {
4395 #[serde(rename = "mcp")]
4396 #[default]
4397 Mcp,
4398}
4399
4400#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4402pub enum UserToolSessionApprovalMemoryKind {
4403 #[serde(rename = "memory")]
4404 #[default]
4405 Memory,
4406}
4407
4408#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4410pub enum UserToolSessionApprovalCustomToolKind {
4411 #[serde(rename = "custom-tool")]
4412 #[default]
4413 CustomTool,
4414}
4415
4416#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4418pub enum UserToolSessionApprovalExtensionManagementKind {
4419 #[serde(rename = "extension-management")]
4420 #[default]
4421 ExtensionManagement,
4422}
4423
4424#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4426pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
4427 #[serde(rename = "extension-permission-access")]
4428 #[default]
4429 ExtensionPermissionAccess,
4430}
4431
4432#[derive(Debug, Clone, Serialize, Deserialize)]
4434#[serde(untagged)]
4435pub enum UserToolSessionApproval {
4436 Commands(UserToolSessionApprovalCommands),
4437 Read(UserToolSessionApprovalRead),
4438 Write(UserToolSessionApprovalWrite),
4439 Mcp(UserToolSessionApprovalMcp),
4440 Memory(UserToolSessionApprovalMemory),
4441 CustomTool(UserToolSessionApprovalCustomTool),
4442 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
4443 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
4444}
4445
4446#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4448pub enum PermissionApprovedForSessionKind {
4449 #[serde(rename = "approved-for-session")]
4450 #[default]
4451 ApprovedForSession,
4452}
4453
4454#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4456pub enum PermissionApprovedForLocationKind {
4457 #[serde(rename = "approved-for-location")]
4458 #[default]
4459 ApprovedForLocation,
4460}
4461
4462#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4464pub enum PermissionCancelledKind {
4465 #[serde(rename = "cancelled")]
4466 #[default]
4467 Cancelled,
4468}
4469
4470#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4472pub enum PermissionDeniedByRulesKind {
4473 #[serde(rename = "denied-by-rules")]
4474 #[default]
4475 DeniedByRules,
4476}
4477
4478#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4480pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
4481 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
4482 #[default]
4483 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
4484}
4485
4486#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4488pub enum PermissionDeniedInteractivelyByUserKind {
4489 #[serde(rename = "denied-interactively-by-user")]
4490 #[default]
4491 DeniedInteractivelyByUser,
4492}
4493
4494#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4496pub enum PermissionDeniedByContentExclusionPolicyKind {
4497 #[serde(rename = "denied-by-content-exclusion-policy")]
4498 #[default]
4499 DeniedByContentExclusionPolicy,
4500}
4501
4502#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4504pub enum PermissionDeniedByPermissionRequestHookKind {
4505 #[serde(rename = "denied-by-permission-request-hook")]
4506 #[default]
4507 DeniedByPermissionRequestHook,
4508}
4509
4510#[derive(Debug, Clone, Serialize, Deserialize)]
4512#[serde(untagged)]
4513pub enum PermissionResult {
4514 Approved(PermissionApproved),
4515 ApprovedForSession(PermissionApprovedForSession),
4516 ApprovedForLocation(PermissionApprovedForLocation),
4517 Cancelled(PermissionCancelled),
4518 DeniedByRules(PermissionDeniedByRules),
4519 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
4520 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
4521 ),
4522 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
4523 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
4524 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
4525}
4526
4527#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4529pub enum ElicitationRequestedMode {
4530 #[serde(rename = "form")]
4532 Form,
4533 #[serde(rename = "url")]
4535 Url,
4536 #[default]
4538 #[serde(other)]
4539 Unknown,
4540}
4541
4542#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4544pub enum ElicitationRequestedSchemaType {
4545 #[serde(rename = "object")]
4546 #[default]
4547 Object,
4548}
4549
4550#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4552pub enum ElicitationCompletedAction {
4553 #[serde(rename = "accept")]
4555 Accept,
4556 #[serde(rename = "decline")]
4558 Decline,
4559 #[serde(rename = "cancel")]
4561 Cancel,
4562 #[default]
4564 #[serde(other)]
4565 Unknown,
4566}
4567
4568#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4570pub enum McpOauthRequiredStaticClientConfigGrantType {
4571 #[serde(rename = "client_credentials")]
4572 #[default]
4573 ClientCredentials,
4574}
4575
4576#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4578pub enum McpOauthCompletionOutcome {
4579 #[serde(rename = "token")]
4581 Token,
4582 #[serde(rename = "cancelled")]
4584 Cancelled,
4585 #[default]
4587 #[serde(other)]
4588 Unknown,
4589}
4590
4591#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4593pub enum AutoModeSwitchResponse {
4594 #[serde(rename = "yes")]
4596 Yes,
4597 #[serde(rename = "yes_always")]
4599 YesAlways,
4600 #[serde(rename = "no")]
4602 No,
4603 #[default]
4605 #[serde(other)]
4606 Unknown,
4607}
4608
4609#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4611pub enum ExitPlanModeAction {
4612 #[serde(rename = "exit_only")]
4614 ExitOnly,
4615 #[serde(rename = "interactive")]
4617 Interactive,
4618 #[serde(rename = "autopilot")]
4620 Autopilot,
4621 #[serde(rename = "autopilot_fleet")]
4623 AutopilotFleet,
4624 #[default]
4626 #[serde(other)]
4627 Unknown,
4628}
4629
4630#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4632pub enum SkillSource {
4633 #[serde(rename = "project")]
4635 Project,
4636 #[serde(rename = "inherited")]
4638 Inherited,
4639 #[serde(rename = "personal-copilot")]
4641 PersonalCopilot,
4642 #[serde(rename = "personal-agents")]
4644 PersonalAgents,
4645 #[serde(rename = "plugin")]
4647 Plugin,
4648 #[serde(rename = "custom")]
4650 Custom,
4651 #[serde(rename = "builtin")]
4653 Builtin,
4654 #[default]
4656 #[serde(other)]
4657 Unknown,
4658}
4659
4660#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4662pub enum McpServerSource {
4663 #[serde(rename = "user")]
4665 User,
4666 #[serde(rename = "workspace")]
4668 Workspace,
4669 #[serde(rename = "plugin")]
4671 Plugin,
4672 #[serde(rename = "builtin")]
4674 Builtin,
4675 #[default]
4677 #[serde(other)]
4678 Unknown,
4679}
4680
4681#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4683pub enum McpServerStatus {
4684 #[serde(rename = "connected")]
4686 Connected,
4687 #[serde(rename = "failed")]
4689 Failed,
4690 #[serde(rename = "needs-auth")]
4692 NeedsAuth,
4693 #[serde(rename = "pending")]
4695 Pending,
4696 #[serde(rename = "disabled")]
4698 Disabled,
4699 #[serde(rename = "not_configured")]
4701 NotConfigured,
4702 #[default]
4704 #[serde(other)]
4705 Unknown,
4706}
4707
4708#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4710pub enum McpServerTransport {
4711 #[serde(rename = "stdio")]
4713 Stdio,
4714 #[serde(rename = "http")]
4716 Http,
4717 #[serde(rename = "sse")]
4719 Sse,
4720 #[serde(rename = "memory")]
4722 Memory,
4723 #[default]
4725 #[serde(other)]
4726 Unknown,
4727}
4728
4729#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4731pub enum ExtensionsLoadedExtensionSource {
4732 #[serde(rename = "project")]
4734 Project,
4735 #[serde(rename = "user")]
4737 User,
4738 #[serde(rename = "plugin")]
4740 Plugin,
4741 #[serde(rename = "session")]
4743 Session,
4744 #[default]
4746 #[serde(other)]
4747 Unknown,
4748}
4749
4750#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4752pub enum ExtensionsLoadedExtensionStatus {
4753 #[serde(rename = "running")]
4755 Running,
4756 #[serde(rename = "disabled")]
4758 Disabled,
4759 #[serde(rename = "failed")]
4761 Failed,
4762 #[serde(rename = "starting")]
4764 Starting,
4765 #[default]
4767 #[serde(other)]
4768 Unknown,
4769}
4770
4771#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4773pub enum CanvasOpenedAvailability {
4774 #[serde(rename = "ready")]
4776 Ready,
4777 #[serde(rename = "stale")]
4779 Stale,
4780 #[default]
4782 #[serde(other)]
4783 Unknown,
4784}