1#![allow(deprecated)]
4
5use std::collections::HashMap;
6
7use serde::{Deserialize, Serialize};
8
9use crate::types::{RequestId, SessionId};
10
11#[derive(Debug, Clone, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
13pub enum SessionEventType {
14 #[serde(rename = "session.start")]
15 SessionStart,
16 #[serde(rename = "session.resume")]
17 SessionResume,
18 #[serde(rename = "session.remote_steerable_changed")]
19 SessionRemoteSteerableChanged,
20 #[serde(rename = "session.error")]
21 SessionError,
22 #[serde(rename = "session.idle")]
23 SessionIdle,
24 #[serde(rename = "session.title_changed")]
25 SessionTitleChanged,
26 #[serde(rename = "session.schedule_created")]
27 SessionScheduleCreated,
28 #[serde(rename = "session.schedule_cancelled")]
29 SessionScheduleCancelled,
30 #[serde(rename = "session.schedule_rearmed")]
31 SessionScheduleRearmed,
32 #[serde(rename = "session.autopilot_objective_changed")]
33 SessionAutopilotObjectiveChanged,
34 #[serde(rename = "session.info")]
35 SessionInfo,
36 #[serde(rename = "session.warning")]
37 SessionWarning,
38 #[serde(rename = "session.model_change")]
39 SessionModelChange,
40 #[serde(rename = "session.mode_changed")]
41 SessionModeChanged,
42 #[serde(rename = "session.session_limits_changed")]
43 SessionSessionLimitsChanged,
44 #[serde(rename = "session.permissions_changed")]
45 SessionPermissionsChanged,
46 #[serde(rename = "session.plan_changed")]
47 SessionPlanChanged,
48 #[serde(rename = "session.todos_changed")]
49 SessionTodosChanged,
50 #[serde(rename = "session.workspace_file_changed")]
51 SessionWorkspaceFileChanged,
52 #[serde(rename = "session.handoff")]
53 SessionHandoff,
54 #[serde(rename = "session.truncation")]
55 SessionTruncation,
56 #[serde(rename = "session.snapshot_rewind")]
57 SessionSnapshotRewind,
58 #[serde(rename = "session.shutdown")]
59 SessionShutdown,
60 #[serde(rename = "session.usage_checkpoint")]
61 SessionUsageCheckpoint,
62 #[serde(rename = "session.context_changed")]
63 SessionContextChanged,
64 #[serde(rename = "session.usage_info")]
65 SessionUsageInfo,
66 #[serde(rename = "session.compaction_start")]
67 SessionCompactionStart,
68 #[serde(rename = "session.compaction_complete")]
69 SessionCompactionComplete,
70 #[serde(rename = "session.task_complete")]
71 SessionTaskComplete,
72 #[serde(rename = "user.message")]
73 UserMessage,
74 #[serde(rename = "pending_messages.modified")]
75 PendingMessagesModified,
76 #[serde(rename = "assistant.turn_start")]
77 AssistantTurnStart,
78 #[serde(rename = "assistant.intent")]
79 AssistantIntent,
80 #[serde(rename = "assistant.reasoning")]
81 AssistantReasoning,
82 #[serde(rename = "assistant.reasoning_delta")]
83 AssistantReasoningDelta,
84 #[serde(rename = "assistant.tool_call_delta")]
85 AssistantToolCallDelta,
86 #[serde(rename = "assistant.streaming_delta")]
87 AssistantStreamingDelta,
88 #[serde(rename = "assistant.message")]
89 AssistantMessage,
90 #[serde(rename = "assistant.message_start")]
91 AssistantMessageStart,
92 #[serde(rename = "assistant.message_delta")]
93 AssistantMessageDelta,
94 #[serde(rename = "assistant.turn_end")]
95 AssistantTurnEnd,
96 #[serde(rename = "assistant.idle")]
97 AssistantIdle,
98 #[serde(rename = "assistant.usage")]
99 AssistantUsage,
100 #[serde(rename = "model.call_failure")]
101 ModelCallFailure,
102 #[serde(rename = "abort")]
103 Abort,
104 #[serde(rename = "tool.user_requested")]
105 ToolUserRequested,
106 #[serde(rename = "tool.execution_start")]
107 ToolExecutionStart,
108 #[serde(rename = "tool.execution_partial_result")]
109 ToolExecutionPartialResult,
110 #[serde(rename = "tool.execution_progress")]
111 ToolExecutionProgress,
112 #[serde(rename = "tool.execution_complete")]
113 ToolExecutionComplete,
114 #[serde(rename = "skill.invoked")]
115 SkillInvoked,
116 #[serde(rename = "subagent.started")]
117 SubagentStarted,
118 #[serde(rename = "subagent.completed")]
119 SubagentCompleted,
120 #[serde(rename = "subagent.failed")]
121 SubagentFailed,
122 #[serde(rename = "subagent.selected")]
123 SubagentSelected,
124 #[serde(rename = "subagent.deselected")]
125 SubagentDeselected,
126 #[serde(rename = "hook.start")]
127 HookStart,
128 #[serde(rename = "hook.end")]
129 HookEnd,
130 #[serde(rename = "hook.progress")]
131 HookProgress,
132 #[serde(rename = "session.binary_asset")]
140 SessionBinaryAsset,
141 #[serde(rename = "system.message")]
142 SystemMessage,
143 #[serde(rename = "system.notification")]
144 SystemNotification,
145 #[serde(rename = "permission.requested")]
146 PermissionRequested,
147 #[serde(rename = "permission.completed")]
148 PermissionCompleted,
149 #[serde(rename = "user_input.requested")]
150 UserInputRequested,
151 #[serde(rename = "user_input.completed")]
152 UserInputCompleted,
153 #[serde(rename = "elicitation.requested")]
154 ElicitationRequested,
155 #[serde(rename = "elicitation.completed")]
156 ElicitationCompleted,
157 #[serde(rename = "sampling.requested")]
158 SamplingRequested,
159 #[serde(rename = "sampling.completed")]
160 SamplingCompleted,
161 #[serde(rename = "mcp.oauth_required")]
162 McpOauthRequired,
163 #[serde(rename = "mcp.oauth_completed")]
164 McpOauthCompleted,
165 #[serde(rename = "mcp.headers_refresh_required")]
166 McpHeadersRefreshRequired,
167 #[serde(rename = "mcp.headers_refresh_completed")]
168 McpHeadersRefreshCompleted,
169 #[serde(rename = "session.custom_notification")]
170 SessionCustomNotification,
171 #[serde(rename = "external_tool.requested")]
172 ExternalToolRequested,
173 #[serde(rename = "external_tool.completed")]
174 ExternalToolCompleted,
175 #[serde(rename = "command.queued")]
176 CommandQueued,
177 #[serde(rename = "command.execute")]
178 CommandExecute,
179 #[serde(rename = "command.completed")]
180 CommandCompleted,
181 #[serde(rename = "auto_mode_switch.requested")]
182 AutoModeSwitchRequested,
183 #[serde(rename = "auto_mode_switch.completed")]
184 AutoModeSwitchCompleted,
185 #[serde(rename = "session_limits_exhausted.requested")]
186 SessionLimitsExhaustedRequested,
187 #[serde(rename = "session_limits_exhausted.completed")]
188 SessionLimitsExhaustedCompleted,
189 #[serde(rename = "session.auto_mode_resolved")]
197 SessionAutoModeResolved,
198 #[serde(rename = "commands.changed")]
199 CommandsChanged,
200 #[serde(rename = "capabilities.changed")]
201 CapabilitiesChanged,
202 #[serde(rename = "exit_plan_mode.requested")]
203 ExitPlanModeRequested,
204 #[serde(rename = "exit_plan_mode.completed")]
205 ExitPlanModeCompleted,
206 #[serde(rename = "session.tools_updated")]
207 SessionToolsUpdated,
208 #[serde(rename = "session.background_tasks_changed")]
209 SessionBackgroundTasksChanged,
210 #[serde(rename = "session.skills_loaded")]
211 SessionSkillsLoaded,
212 #[serde(rename = "session.custom_agents_updated")]
213 SessionCustomAgentsUpdated,
214 #[serde(rename = "session.mcp_servers_loaded")]
215 SessionMcpServersLoaded,
216 #[serde(rename = "session.mcp_server_status_changed")]
217 SessionMcpServerStatusChanged,
218 #[serde(rename = "mcp.tools.list_changed")]
219 McpToolsListChanged,
220 #[serde(rename = "mcp.resources.list_changed")]
221 McpResourcesListChanged,
222 #[serde(rename = "mcp.prompts.list_changed")]
223 McpPromptsListChanged,
224 #[serde(rename = "session.extensions_loaded")]
225 SessionExtensionsLoaded,
226 #[serde(rename = "session.canvas.opened")]
234 SessionCanvasOpened,
235 #[serde(rename = "session.canvas.registry_changed")]
243 SessionCanvasRegistryChanged,
244 #[serde(rename = "session.canvas.closed")]
252 SessionCanvasClosed,
253 #[serde(rename = "session.canvas.unavailable")]
261 SessionCanvasUnavailable,
262 #[serde(rename = "session.canvas.recorded")]
270 SessionCanvasRecorded,
271 #[serde(rename = "session.canvas.removed")]
279 SessionCanvasRemoved,
280 #[serde(rename = "session.extensions.attachments_pushed")]
281 SessionExtensionsAttachmentsPushed,
282 #[serde(rename = "mcp_app.tool_call_complete")]
283 McpAppToolCallComplete,
284 #[default]
286 #[serde(other)]
287 Unknown,
288}
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
294#[serde(tag = "type", content = "data")]
295pub enum SessionEventData {
296 #[serde(rename = "session.start")]
297 SessionStart(SessionStartData),
298 #[serde(rename = "session.resume")]
299 SessionResume(SessionResumeData),
300 #[serde(rename = "session.remote_steerable_changed")]
301 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
302 #[serde(rename = "session.error")]
303 SessionError(SessionErrorData),
304 #[serde(rename = "session.idle")]
305 SessionIdle(SessionIdleData),
306 #[serde(rename = "session.title_changed")]
307 SessionTitleChanged(SessionTitleChangedData),
308 #[serde(rename = "session.schedule_created")]
309 SessionScheduleCreated(SessionScheduleCreatedData),
310 #[serde(rename = "session.schedule_cancelled")]
311 SessionScheduleCancelled(SessionScheduleCancelledData),
312 #[serde(rename = "session.schedule_rearmed")]
313 SessionScheduleRearmed(SessionScheduleRearmedData),
314 #[serde(rename = "session.autopilot_objective_changed")]
315 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
316 #[serde(rename = "session.info")]
317 SessionInfo(SessionInfoData),
318 #[serde(rename = "session.warning")]
319 SessionWarning(SessionWarningData),
320 #[serde(rename = "session.model_change")]
321 SessionModelChange(SessionModelChangeData),
322 #[serde(rename = "session.mode_changed")]
323 SessionModeChanged(SessionModeChangedData),
324 #[serde(rename = "session.session_limits_changed")]
325 SessionSessionLimitsChanged(SessionSessionLimitsChangedData),
326 #[serde(rename = "session.permissions_changed")]
327 SessionPermissionsChanged(SessionPermissionsChangedData),
328 #[serde(rename = "session.plan_changed")]
329 SessionPlanChanged(SessionPlanChangedData),
330 #[serde(rename = "session.todos_changed")]
331 SessionTodosChanged(SessionTodosChangedData),
332 #[serde(rename = "session.workspace_file_changed")]
333 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
334 #[serde(rename = "session.handoff")]
335 SessionHandoff(SessionHandoffData),
336 #[serde(rename = "session.truncation")]
337 SessionTruncation(SessionTruncationData),
338 #[serde(rename = "session.snapshot_rewind")]
339 SessionSnapshotRewind(SessionSnapshotRewindData),
340 #[serde(rename = "session.shutdown")]
341 SessionShutdown(SessionShutdownData),
342 #[serde(rename = "session.usage_checkpoint")]
343 SessionUsageCheckpoint(SessionUsageCheckpointData),
344 #[serde(rename = "session.context_changed")]
345 SessionContextChanged(SessionContextChangedData),
346 #[serde(rename = "session.usage_info")]
347 SessionUsageInfo(SessionUsageInfoData),
348 #[serde(rename = "session.compaction_start")]
349 SessionCompactionStart(SessionCompactionStartData),
350 #[serde(rename = "session.compaction_complete")]
351 SessionCompactionComplete(SessionCompactionCompleteData),
352 #[serde(rename = "session.task_complete")]
353 SessionTaskComplete(SessionTaskCompleteData),
354 #[serde(rename = "user.message")]
355 UserMessage(UserMessageData),
356 #[serde(rename = "pending_messages.modified")]
357 PendingMessagesModified(PendingMessagesModifiedData),
358 #[serde(rename = "assistant.turn_start")]
359 AssistantTurnStart(AssistantTurnStartData),
360 #[serde(rename = "assistant.intent")]
361 AssistantIntent(AssistantIntentData),
362 #[serde(rename = "assistant.reasoning")]
363 AssistantReasoning(AssistantReasoningData),
364 #[serde(rename = "assistant.reasoning_delta")]
365 AssistantReasoningDelta(AssistantReasoningDeltaData),
366 #[serde(rename = "assistant.tool_call_delta")]
367 AssistantToolCallDelta(AssistantToolCallDeltaData),
368 #[serde(rename = "assistant.streaming_delta")]
369 AssistantStreamingDelta(AssistantStreamingDeltaData),
370 #[serde(rename = "assistant.message")]
371 AssistantMessage(AssistantMessageData),
372 #[serde(rename = "assistant.message_start")]
373 AssistantMessageStart(AssistantMessageStartData),
374 #[serde(rename = "assistant.message_delta")]
375 AssistantMessageDelta(AssistantMessageDeltaData),
376 #[serde(rename = "assistant.turn_end")]
377 AssistantTurnEnd(AssistantTurnEndData),
378 #[serde(rename = "assistant.idle")]
379 AssistantIdle(AssistantIdleData),
380 #[serde(rename = "assistant.usage")]
381 AssistantUsage(AssistantUsageData),
382 #[serde(rename = "model.call_failure")]
383 ModelCallFailure(ModelCallFailureData),
384 #[serde(rename = "abort")]
385 Abort(AbortData),
386 #[serde(rename = "tool.user_requested")]
387 ToolUserRequested(ToolUserRequestedData),
388 #[serde(rename = "tool.execution_start")]
389 ToolExecutionStart(ToolExecutionStartData),
390 #[serde(rename = "tool.execution_partial_result")]
391 ToolExecutionPartialResult(ToolExecutionPartialResultData),
392 #[serde(rename = "tool.execution_progress")]
393 ToolExecutionProgress(ToolExecutionProgressData),
394 #[serde(rename = "tool.execution_complete")]
395 ToolExecutionComplete(ToolExecutionCompleteData),
396 #[serde(rename = "skill.invoked")]
397 SkillInvoked(SkillInvokedData),
398 #[serde(rename = "subagent.started")]
399 SubagentStarted(SubagentStartedData),
400 #[serde(rename = "subagent.completed")]
401 SubagentCompleted(SubagentCompletedData),
402 #[serde(rename = "subagent.failed")]
403 SubagentFailed(SubagentFailedData),
404 #[serde(rename = "subagent.selected")]
405 SubagentSelected(SubagentSelectedData),
406 #[serde(rename = "subagent.deselected")]
407 SubagentDeselected(SubagentDeselectedData),
408 #[serde(rename = "hook.start")]
409 HookStart(HookStartData),
410 #[serde(rename = "hook.end")]
411 HookEnd(HookEndData),
412 #[serde(rename = "hook.progress")]
413 HookProgress(HookProgressData),
414 #[serde(rename = "session.binary_asset")]
415 SessionBinaryAsset(SessionBinaryAssetData),
416 #[serde(rename = "system.message")]
417 SystemMessage(SystemMessageData),
418 #[serde(rename = "system.notification")]
419 SystemNotification(SystemNotificationData),
420 #[serde(rename = "permission.requested")]
421 PermissionRequested(PermissionRequestedData),
422 #[serde(rename = "permission.completed")]
423 PermissionCompleted(PermissionCompletedData),
424 #[serde(rename = "user_input.requested")]
425 UserInputRequested(UserInputRequestedData),
426 #[serde(rename = "user_input.completed")]
427 UserInputCompleted(UserInputCompletedData),
428 #[serde(rename = "elicitation.requested")]
429 ElicitationRequested(ElicitationRequestedData),
430 #[serde(rename = "elicitation.completed")]
431 ElicitationCompleted(ElicitationCompletedData),
432 #[serde(rename = "sampling.requested")]
433 SamplingRequested(SamplingRequestedData),
434 #[serde(rename = "sampling.completed")]
435 SamplingCompleted(SamplingCompletedData),
436 #[serde(rename = "mcp.oauth_required")]
437 McpOauthRequired(McpOauthRequiredData),
438 #[serde(rename = "mcp.oauth_completed")]
439 McpOauthCompleted(McpOauthCompletedData),
440 #[serde(rename = "mcp.headers_refresh_required")]
441 McpHeadersRefreshRequired(McpHeadersRefreshRequiredData),
442 #[serde(rename = "mcp.headers_refresh_completed")]
443 McpHeadersRefreshCompleted(McpHeadersRefreshCompletedData),
444 #[serde(rename = "session.custom_notification")]
445 SessionCustomNotification(SessionCustomNotificationData),
446 #[serde(rename = "external_tool.requested")]
447 ExternalToolRequested(ExternalToolRequestedData),
448 #[serde(rename = "external_tool.completed")]
449 ExternalToolCompleted(ExternalToolCompletedData),
450 #[serde(rename = "command.queued")]
451 CommandQueued(CommandQueuedData),
452 #[serde(rename = "command.execute")]
453 CommandExecute(CommandExecuteData),
454 #[serde(rename = "command.completed")]
455 CommandCompleted(CommandCompletedData),
456 #[serde(rename = "auto_mode_switch.requested")]
457 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
458 #[serde(rename = "auto_mode_switch.completed")]
459 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
460 #[serde(rename = "session_limits_exhausted.requested")]
461 SessionLimitsExhaustedRequested(SessionLimitsExhaustedRequestedData),
462 #[serde(rename = "session_limits_exhausted.completed")]
463 SessionLimitsExhaustedCompleted(SessionLimitsExhaustedCompletedData),
464 #[serde(rename = "session.auto_mode_resolved")]
472 SessionAutoModeResolved(SessionAutoModeResolvedData),
473 #[serde(rename = "commands.changed")]
474 CommandsChanged(CommandsChangedData),
475 #[serde(rename = "capabilities.changed")]
476 CapabilitiesChanged(CapabilitiesChangedData),
477 #[serde(rename = "exit_plan_mode.requested")]
478 ExitPlanModeRequested(ExitPlanModeRequestedData),
479 #[serde(rename = "exit_plan_mode.completed")]
480 ExitPlanModeCompleted(ExitPlanModeCompletedData),
481 #[serde(rename = "session.tools_updated")]
482 SessionToolsUpdated(SessionToolsUpdatedData),
483 #[serde(rename = "session.background_tasks_changed")]
484 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
485 #[serde(rename = "session.skills_loaded")]
486 SessionSkillsLoaded(SessionSkillsLoadedData),
487 #[serde(rename = "session.custom_agents_updated")]
488 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
489 #[serde(rename = "session.mcp_servers_loaded")]
490 SessionMcpServersLoaded(SessionMcpServersLoadedData),
491 #[serde(rename = "session.mcp_server_status_changed")]
492 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
493 #[serde(rename = "mcp.tools.list_changed")]
494 McpToolsListChanged(McpToolsListChangedData),
495 #[serde(rename = "mcp.resources.list_changed")]
496 McpResourcesListChanged(McpResourcesListChangedData),
497 #[serde(rename = "mcp.prompts.list_changed")]
498 McpPromptsListChanged(McpPromptsListChangedData),
499 #[serde(rename = "session.extensions_loaded")]
500 SessionExtensionsLoaded(SessionExtensionsLoadedData),
501 #[serde(rename = "session.canvas.opened")]
509 SessionCanvasOpened(SessionCanvasOpenedData),
510 #[serde(rename = "session.canvas.registry_changed")]
518 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
519 #[serde(rename = "session.canvas.closed")]
527 SessionCanvasClosed(SessionCanvasClosedData),
528 #[serde(rename = "session.canvas.unavailable")]
536 SessionCanvasUnavailable(SessionCanvasUnavailableData),
537 #[serde(rename = "session.canvas.recorded")]
545 SessionCanvasRecorded(SessionCanvasRecordedData),
546 #[serde(rename = "session.canvas.removed")]
554 SessionCanvasRemoved(SessionCanvasRemovedData),
555 #[serde(rename = "session.extensions.attachments_pushed")]
556 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
557 #[serde(rename = "mcp_app.tool_call_complete")]
558 McpAppToolCallComplete(McpAppToolCallCompleteData),
559}
560
561#[derive(Debug, Clone, Serialize, Deserialize)]
567#[serde(rename_all = "camelCase")]
568pub struct TypedSessionEvent {
569 pub id: String,
571 pub timestamp: String,
573 #[serde(skip_serializing_if = "Option::is_none")]
575 pub parent_id: Option<String>,
576 #[serde(skip_serializing_if = "Option::is_none")]
578 pub ephemeral: Option<bool>,
579 #[serde(skip_serializing_if = "Option::is_none")]
582 pub agent_id: Option<String>,
583 #[serde(flatten)]
585 pub payload: SessionEventData,
586}
587
588#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590#[serde(rename_all = "camelCase")]
591pub struct WorkingDirectoryContext {
592 #[serde(skip_serializing_if = "Option::is_none")]
594 pub base_commit: Option<String>,
595 #[serde(skip_serializing_if = "Option::is_none")]
597 pub branch: Option<String>,
598 pub cwd: String,
600 #[serde(skip_serializing_if = "Option::is_none")]
602 pub git_root: Option<String>,
603 #[serde(skip_serializing_if = "Option::is_none")]
605 pub head_commit: Option<String>,
606 #[serde(skip_serializing_if = "Option::is_none")]
608 pub host_type: Option<WorkingDirectoryContextHostType>,
609 #[serde(skip_serializing_if = "Option::is_none")]
611 pub repository: Option<String>,
612 #[serde(skip_serializing_if = "Option::is_none")]
614 pub repository_host: Option<String>,
615}
616
617#[derive(Debug, Clone, Default, Serialize, Deserialize)]
619#[serde(rename_all = "camelCase")]
620pub struct SessionLimitsConfig {
621 #[serde(skip_serializing_if = "Option::is_none")]
623 pub max_ai_credits: Option<f64>,
624}
625
626#[derive(Debug, Clone, Default, Serialize, Deserialize)]
628#[serde(rename_all = "camelCase")]
629pub struct SessionStartData {
630 #[serde(skip_serializing_if = "Option::is_none")]
632 pub already_in_use: Option<bool>,
633 #[serde(skip_serializing_if = "Option::is_none")]
635 pub context: Option<WorkingDirectoryContext>,
636 #[serde(skip_serializing_if = "Option::is_none")]
638 pub context_tier: Option<ContextTier>,
639 pub copilot_version: String,
641 #[serde(skip_serializing_if = "Option::is_none")]
643 pub detached_from_spawning_parent_session_id: Option<String>,
644 pub producer: String,
646 #[serde(skip_serializing_if = "Option::is_none")]
648 pub reasoning_effort: Option<String>,
649 #[serde(skip_serializing_if = "Option::is_none")]
651 pub reasoning_summary: Option<ReasoningSummary>,
652 #[serde(skip_serializing_if = "Option::is_none")]
654 pub remote_steerable: Option<bool>,
655 #[serde(skip_serializing_if = "Option::is_none")]
657 pub selected_model: Option<String>,
658 pub session_id: SessionId,
660 #[serde(skip_serializing_if = "Option::is_none")]
662 pub session_limits: Option<SessionLimitsConfig>,
663 pub start_time: String,
665 #[serde(skip_serializing_if = "Option::is_none")]
667 pub verbosity: Option<Verbosity>,
668 pub version: i64,
670}
671
672#[derive(Debug, Clone, Default, Serialize, Deserialize)]
674#[serde(rename_all = "camelCase")]
675pub struct SessionResumeData {
676 #[serde(skip_serializing_if = "Option::is_none")]
678 pub already_in_use: Option<bool>,
679 #[serde(skip_serializing_if = "Option::is_none")]
681 pub context: Option<WorkingDirectoryContext>,
682 #[serde(skip_serializing_if = "Option::is_none")]
684 pub context_tier: Option<ContextTier>,
685 #[serde(skip_serializing_if = "Option::is_none")]
687 pub continue_pending_work: Option<bool>,
688 pub event_count: i64,
690 #[serde(skip_serializing_if = "Option::is_none")]
692 pub events_file_size_bytes: Option<i64>,
693 #[serde(skip_serializing_if = "Option::is_none")]
695 pub reasoning_effort: Option<String>,
696 #[serde(skip_serializing_if = "Option::is_none")]
698 pub reasoning_summary: Option<ReasoningSummary>,
699 #[serde(skip_serializing_if = "Option::is_none")]
701 pub remote_steerable: Option<bool>,
702 pub resume_time: String,
704 #[serde(skip_serializing_if = "Option::is_none")]
706 pub selected_model: Option<String>,
707 #[serde(skip_serializing_if = "Option::is_none")]
709 pub session_limits: Option<SessionLimitsConfig>,
710 #[serde(skip_serializing_if = "Option::is_none")]
712 pub session_was_active: Option<bool>,
713 #[serde(skip_serializing_if = "Option::is_none")]
715 pub verbosity: Option<Verbosity>,
716}
717
718#[derive(Debug, Clone, Default, Serialize, Deserialize)]
720#[serde(rename_all = "camelCase")]
721pub struct SessionRemoteSteerableChangedData {
722 pub remote_steerable: bool,
724}
725
726#[derive(Debug, Clone, Default, Serialize, Deserialize)]
728#[serde(rename_all = "camelCase")]
729pub struct SessionErrorData {
730 #[serde(skip_serializing_if = "Option::is_none")]
732 pub eligible_for_auto_switch: Option<bool>,
733 #[serde(skip_serializing_if = "Option::is_none")]
735 pub error_code: Option<String>,
736 pub error_type: String,
738 pub message: String,
740 #[serde(skip_serializing_if = "Option::is_none")]
742 pub provider_call_id: Option<String>,
743 #[serde(skip_serializing_if = "Option::is_none")]
745 pub service_request_id: Option<String>,
746 #[serde(skip_serializing_if = "Option::is_none")]
748 pub stack: Option<String>,
749 #[serde(skip_serializing_if = "Option::is_none")]
751 pub status_code: Option<i32>,
752 #[serde(skip_serializing_if = "Option::is_none")]
754 pub url: Option<String>,
755}
756
757#[derive(Debug, Clone, Default, Serialize, Deserialize)]
759#[serde(rename_all = "camelCase")]
760pub struct SessionIdleData {
761 #[serde(skip_serializing_if = "Option::is_none")]
763 pub aborted: Option<bool>,
764}
765
766#[derive(Debug, Clone, Default, Serialize, Deserialize)]
768#[serde(rename_all = "camelCase")]
769pub struct SessionTitleChangedData {
770 pub title: String,
772}
773
774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
776#[serde(rename_all = "camelCase")]
777pub struct SessionScheduleCreatedData {
778 #[serde(skip_serializing_if = "Option::is_none")]
780 pub at: Option<i64>,
781 #[serde(skip_serializing_if = "Option::is_none")]
783 pub cron: Option<String>,
784 #[serde(skip_serializing_if = "Option::is_none")]
786 pub display_prompt: Option<String>,
787 pub id: i64,
789 #[serde(skip_serializing_if = "Option::is_none")]
791 pub interval_ms: Option<i64>,
792 pub prompt: String,
794 #[serde(skip_serializing_if = "Option::is_none")]
796 pub recurring: Option<bool>,
797 #[serde(skip_serializing_if = "Option::is_none")]
799 pub self_paced: Option<bool>,
800 #[serde(skip_serializing_if = "Option::is_none")]
802 pub tz: Option<String>,
803}
804
805#[derive(Debug, Clone, Default, Serialize, Deserialize)]
807#[serde(rename_all = "camelCase")]
808pub struct SessionScheduleCancelledData {
809 pub id: i64,
811}
812
813#[derive(Debug, Clone, Default, Serialize, Deserialize)]
815#[serde(rename_all = "camelCase")]
816pub struct SessionScheduleRearmedData {
817 pub id: i64,
819 pub next_run_at: i64,
821}
822
823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
825#[serde(rename_all = "camelCase")]
826pub struct SessionAutopilotObjectiveChangedData {
827 #[serde(skip_serializing_if = "Option::is_none")]
829 pub id: Option<i64>,
830 pub operation: AutopilotObjectiveChangedOperation,
832 #[serde(skip_serializing_if = "Option::is_none")]
834 pub status: Option<AutopilotObjectiveChangedStatus>,
835}
836
837#[derive(Debug, Clone, Default, Serialize, Deserialize)]
839#[serde(rename_all = "camelCase")]
840pub struct SessionInfoData {
841 pub info_type: String,
843 pub message: String,
845 #[serde(skip_serializing_if = "Option::is_none")]
847 pub tip: Option<String>,
848 #[serde(skip_serializing_if = "Option::is_none")]
850 pub url: Option<String>,
851}
852
853#[derive(Debug, Clone, Default, Serialize, Deserialize)]
855#[serde(rename_all = "camelCase")]
856pub struct SessionWarningData {
857 pub message: String,
859 #[serde(skip_serializing_if = "Option::is_none")]
861 pub url: Option<String>,
862 pub warning_type: String,
864}
865
866#[derive(Debug, Clone, Default, Serialize, Deserialize)]
868#[serde(rename_all = "camelCase")]
869pub struct SessionModelChangeData {
870 #[serde(skip_serializing_if = "Option::is_none")]
872 pub cause: Option<String>,
873 #[serde(skip_serializing_if = "Option::is_none")]
875 pub context_tier: Option<ContextTier>,
876 pub new_model: String,
878 #[serde(skip_serializing_if = "Option::is_none")]
880 pub previous_model: Option<String>,
881 #[serde(skip_serializing_if = "Option::is_none")]
883 pub previous_reasoning_effort: Option<String>,
884 #[serde(skip_serializing_if = "Option::is_none")]
886 pub previous_reasoning_summary: Option<ReasoningSummary>,
887 #[serde(skip_serializing_if = "Option::is_none")]
889 pub previous_verbosity: Option<Verbosity>,
890 #[serde(skip_serializing_if = "Option::is_none")]
892 pub reasoning_effort: Option<String>,
893 #[serde(skip_serializing_if = "Option::is_none")]
895 pub reasoning_summary: Option<ReasoningSummary>,
896 #[serde(skip_serializing_if = "Option::is_none")]
898 pub verbosity: Option<Verbosity>,
899}
900
901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
903#[serde(rename_all = "camelCase")]
904pub struct SessionModeChangedData {
905 pub new_mode: SessionMode,
907 pub previous_mode: SessionMode,
909}
910
911#[derive(Debug, Clone, Default, Serialize, Deserialize)]
913#[serde(rename_all = "camelCase")]
914pub struct SessionSessionLimitsChangedData {
915 pub session_limits: Option<SessionLimitsConfig>,
917}
918
919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
921#[serde(rename_all = "camelCase")]
922pub struct SessionPermissionsChangedData {
923 #[serde(skip_serializing_if = "Option::is_none")]
932 pub allow_all_permission_mode: Option<PermissionAllowAllMode>,
933 pub allow_all_permissions: bool,
935 #[serde(skip_serializing_if = "Option::is_none")]
944 pub previous_allow_all_permission_mode: Option<PermissionAllowAllMode>,
945 pub previous_allow_all_permissions: bool,
947}
948
949#[derive(Debug, Clone, Default, Serialize, Deserialize)]
951#[serde(rename_all = "camelCase")]
952pub struct SessionPlanChangedData {
953 pub operation: PlanChangedOperation,
955}
956
957#[derive(Debug, Clone, Default, Serialize, Deserialize)]
959#[serde(rename_all = "camelCase")]
960pub struct SessionTodosChangedData {}
961
962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
964#[serde(rename_all = "camelCase")]
965pub struct SessionWorkspaceFileChangedData {
966 pub operation: WorkspaceFileChangedOperation,
968 pub path: String,
970}
971
972#[derive(Debug, Clone, Default, Serialize, Deserialize)]
974#[serde(rename_all = "camelCase")]
975pub struct HandoffRepository {
976 #[serde(skip_serializing_if = "Option::is_none")]
978 pub branch: Option<String>,
979 pub name: String,
981 pub owner: String,
983}
984
985#[derive(Debug, Clone, Default, Serialize, Deserialize)]
987#[serde(rename_all = "camelCase")]
988pub struct SessionHandoffData {
989 #[serde(skip_serializing_if = "Option::is_none")]
991 pub context: Option<String>,
992 pub handoff_time: String,
994 #[serde(skip_serializing_if = "Option::is_none")]
996 pub host: Option<String>,
997 #[serde(skip_serializing_if = "Option::is_none")]
999 pub remote_session_id: Option<SessionId>,
1000 #[serde(skip_serializing_if = "Option::is_none")]
1002 pub repository: Option<HandoffRepository>,
1003 pub source_type: HandoffSourceType,
1005 #[serde(skip_serializing_if = "Option::is_none")]
1007 pub summary: Option<String>,
1008}
1009
1010#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1012#[serde(rename_all = "camelCase")]
1013pub struct SessionTruncationData {
1014 pub messages_removed_during_truncation: i64,
1016 pub performed_by: String,
1018 pub post_truncation_messages_length: i64,
1020 pub post_truncation_tokens_in_messages: i64,
1022 pub pre_truncation_messages_length: i64,
1024 pub pre_truncation_tokens_in_messages: i64,
1026 pub token_limit: i64,
1028 pub tokens_removed_during_truncation: i64,
1030}
1031
1032#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1034#[serde(rename_all = "camelCase")]
1035pub struct SessionSnapshotRewindData {
1036 pub events_removed: i64,
1038 pub up_to_event_id: String,
1040}
1041
1042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1044#[serde(rename_all = "camelCase")]
1045pub struct ShutdownCodeChanges {
1046 pub files_modified: Vec<String>,
1048 pub lines_added: i64,
1050 pub lines_removed: i64,
1052}
1053
1054#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1056#[serde(rename_all = "camelCase")]
1057pub struct ShutdownModelMetricRequests {
1058 #[serde(skip_serializing_if = "Option::is_none")]
1067 pub cost: Option<f64>,
1068 #[serde(skip_serializing_if = "Option::is_none")]
1077 pub count: Option<i64>,
1078}
1079
1080#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1082#[serde(rename_all = "camelCase")]
1083pub struct ShutdownModelMetricTokenDetail {
1084 pub token_count: i64,
1086}
1087
1088#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1090#[serde(rename_all = "camelCase")]
1091pub struct ShutdownModelMetricUsage {
1092 pub cache_read_tokens: i64,
1094 pub cache_write_tokens: i64,
1096 pub input_tokens: i64,
1098 pub output_tokens: i64,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub reasoning_tokens: Option<i64>,
1103}
1104
1105#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1107#[serde(rename_all = "camelCase")]
1108pub struct ShutdownModelMetric {
1109 pub requests: ShutdownModelMetricRequests,
1111 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
1114 #[serde(skip_serializing_if = "Option::is_none")]
1123 pub total_nano_aiu: Option<f64>,
1124 pub usage: ShutdownModelMetricUsage,
1126}
1127
1128#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1130#[serde(rename_all = "camelCase")]
1131pub struct ShutdownTokenDetail {
1132 pub token_count: i64,
1134}
1135
1136#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1138#[serde(rename_all = "camelCase")]
1139pub struct SessionShutdownData {
1140 pub code_changes: ShutdownCodeChanges,
1142 #[serde(skip_serializing_if = "Option::is_none")]
1144 pub conversation_tokens: Option<i64>,
1145 #[serde(skip_serializing_if = "Option::is_none")]
1147 pub current_model: Option<String>,
1148 #[serde(skip_serializing_if = "Option::is_none")]
1150 pub current_tokens: Option<i64>,
1151 #[serde(skip_serializing_if = "Option::is_none")]
1153 pub error_reason: Option<String>,
1154 #[serde(skip_serializing_if = "Option::is_none")]
1156 pub events_file_size_bytes: Option<i64>,
1157 pub model_metrics: HashMap<String, ShutdownModelMetric>,
1159 pub session_start_time: i64,
1161 pub shutdown_type: ShutdownType,
1163 #[serde(skip_serializing_if = "Option::is_none")]
1165 pub system_tokens: Option<i64>,
1166 #[serde(skip_serializing_if = "Option::is_none")]
1168 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
1169 #[serde(skip_serializing_if = "Option::is_none")]
1171 pub tool_definitions_tokens: Option<i64>,
1172 pub total_api_duration_ms: i64,
1174 #[serde(skip_serializing_if = "Option::is_none")]
1183 pub total_nano_aiu: Option<f64>,
1184 #[doc(hidden)]
1186 #[serde(skip_serializing_if = "Option::is_none")]
1187 pub(crate) total_premium_requests: Option<f64>,
1188}
1189
1190#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1192#[serde(rename_all = "camelCase")]
1193pub struct SessionUsageCheckpointData {
1194 pub total_nano_aiu: f64,
1196 #[doc(hidden)]
1198 #[serde(skip_serializing_if = "Option::is_none")]
1199 pub(crate) total_premium_requests: Option<f64>,
1200}
1201
1202#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1204#[serde(rename_all = "camelCase")]
1205pub struct SessionContextChangedData {
1206 #[serde(skip_serializing_if = "Option::is_none")]
1208 pub base_commit: Option<String>,
1209 #[serde(skip_serializing_if = "Option::is_none")]
1211 pub branch: Option<String>,
1212 pub cwd: String,
1214 #[serde(skip_serializing_if = "Option::is_none")]
1216 pub git_root: Option<String>,
1217 #[serde(skip_serializing_if = "Option::is_none")]
1219 pub head_commit: Option<String>,
1220 #[serde(skip_serializing_if = "Option::is_none")]
1222 pub host_type: Option<WorkingDirectoryContextHostType>,
1223 #[serde(skip_serializing_if = "Option::is_none")]
1225 pub repository: Option<String>,
1226 #[serde(skip_serializing_if = "Option::is_none")]
1228 pub repository_host: Option<String>,
1229}
1230
1231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1233#[serde(rename_all = "camelCase")]
1234pub struct SessionUsageInfoData {
1235 #[serde(skip_serializing_if = "Option::is_none")]
1237 pub conversation_tokens: Option<i64>,
1238 pub current_tokens: i64,
1240 #[serde(skip_serializing_if = "Option::is_none")]
1242 pub is_initial: Option<bool>,
1243 pub messages_length: i64,
1245 #[serde(skip_serializing_if = "Option::is_none")]
1247 pub system_tokens: Option<i64>,
1248 pub token_limit: i64,
1250 #[serde(skip_serializing_if = "Option::is_none")]
1252 pub tool_definitions_tokens: Option<i64>,
1253}
1254
1255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1257#[serde(rename_all = "camelCase")]
1258pub struct SessionCompactionStartData {
1259 #[serde(skip_serializing_if = "Option::is_none")]
1261 pub conversation_tokens: Option<i64>,
1262 #[serde(skip_serializing_if = "Option::is_none")]
1264 pub model: Option<String>,
1265 #[serde(skip_serializing_if = "Option::is_none")]
1267 pub system_tokens: Option<i64>,
1268 #[serde(skip_serializing_if = "Option::is_none")]
1270 pub tool_definitions_tokens: Option<i64>,
1271}
1272
1273#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1275#[serde(rename_all = "camelCase")]
1276pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1277 pub batch_size: i64,
1279 pub cost_per_batch: i64,
1281 pub token_count: i64,
1283 pub token_type: String,
1285}
1286
1287#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1289#[serde(rename_all = "camelCase")]
1290pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1291 #[doc(hidden)]
1293 #[serde(skip_serializing_if = "Option::is_none")]
1294 pub(crate) token_details:
1295 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1296 pub total_nano_aiu: f64,
1298}
1299
1300#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1302#[serde(rename_all = "camelCase")]
1303pub struct CompactionCompleteCompactionTokensUsed {
1304 #[serde(skip_serializing_if = "Option::is_none")]
1306 pub cache_read_tokens: Option<i64>,
1307 #[serde(skip_serializing_if = "Option::is_none")]
1309 pub cache_write_tokens: Option<i64>,
1310 #[doc(hidden)]
1312 #[serde(skip_serializing_if = "Option::is_none")]
1313 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1314 #[serde(skip_serializing_if = "Option::is_none")]
1316 pub duration: Option<i64>,
1317 #[serde(skip_serializing_if = "Option::is_none")]
1319 pub input_tokens: Option<i64>,
1320 #[serde(skip_serializing_if = "Option::is_none")]
1322 pub model: Option<String>,
1323 #[serde(skip_serializing_if = "Option::is_none")]
1325 pub output_tokens: Option<i64>,
1326}
1327
1328#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1330#[serde(rename_all = "camelCase")]
1331pub struct SessionCompactionCompleteData {
1332 #[serde(skip_serializing_if = "Option::is_none")]
1334 pub checkpoint_number: Option<i64>,
1335 #[serde(skip_serializing_if = "Option::is_none")]
1337 pub checkpoint_path: Option<String>,
1338 #[serde(skip_serializing_if = "Option::is_none")]
1340 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1341 #[serde(skip_serializing_if = "Option::is_none")]
1343 pub conversation_tokens: Option<i64>,
1344 #[serde(skip_serializing_if = "Option::is_none")]
1346 pub custom_instructions: Option<String>,
1347 #[serde(skip_serializing_if = "Option::is_none")]
1349 pub error: Option<String>,
1350 #[serde(skip_serializing_if = "Option::is_none")]
1352 pub messages_removed: Option<i64>,
1353 #[serde(skip_serializing_if = "Option::is_none")]
1355 pub post_compaction_tokens: Option<i64>,
1356 #[serde(skip_serializing_if = "Option::is_none")]
1358 pub pre_compaction_messages_length: Option<i64>,
1359 #[serde(skip_serializing_if = "Option::is_none")]
1361 pub pre_compaction_tokens: Option<i64>,
1362 #[serde(skip_serializing_if = "Option::is_none")]
1364 pub request_id: Option<RequestId>,
1365 #[serde(skip_serializing_if = "Option::is_none")]
1367 pub service_request_id: Option<String>,
1368 #[serde(skip_serializing_if = "Option::is_none")]
1370 pub status_code: Option<i64>,
1371 pub success: bool,
1373 #[serde(skip_serializing_if = "Option::is_none")]
1375 pub summary_content: Option<String>,
1376 #[serde(skip_serializing_if = "Option::is_none")]
1378 pub system_tokens: Option<i64>,
1379 #[serde(skip_serializing_if = "Option::is_none")]
1381 pub tokens_removed: Option<i64>,
1382 #[serde(skip_serializing_if = "Option::is_none")]
1384 pub tool_definitions_tokens: Option<i64>,
1385}
1386
1387#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1389#[serde(rename_all = "camelCase")]
1390pub struct SessionTaskCompleteData {
1391 #[serde(skip_serializing_if = "Option::is_none")]
1393 pub success: Option<bool>,
1394 #[serde(skip_serializing_if = "Option::is_none")]
1396 pub summary: Option<String>,
1397}
1398
1399#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1401#[serde(rename_all = "camelCase")]
1402pub struct UserMessageData {
1403 #[serde(skip_serializing_if = "Option::is_none")]
1405 pub agent_mode: Option<UserMessageAgentMode>,
1406 #[serde(skip_serializing_if = "Option::is_none")]
1408 pub attachments: Option<Vec<serde_json::Value>>,
1409 pub content: String,
1411 #[serde(skip_serializing_if = "Option::is_none")]
1413 pub delivery: Option<UserMessageDelivery>,
1414 #[serde(skip_serializing_if = "Option::is_none")]
1416 pub interaction_id: Option<String>,
1417 #[serde(skip_serializing_if = "Option::is_none")]
1419 pub is_autopilot_continuation: Option<bool>,
1420 #[serde(skip_serializing_if = "Option::is_none")]
1422 pub native_document_path_fallback_paths: Option<Vec<String>>,
1423 #[serde(skip_serializing_if = "Option::is_none")]
1425 pub parent_agent_task_id: Option<String>,
1426 #[serde(skip_serializing_if = "Option::is_none")]
1428 pub source: Option<String>,
1429 #[serde(skip_serializing_if = "Option::is_none")]
1431 pub supported_native_document_mime_types: Option<Vec<String>>,
1432 #[serde(skip_serializing_if = "Option::is_none")]
1434 pub transformed_content: Option<String>,
1435}
1436
1437#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1439#[serde(rename_all = "camelCase")]
1440pub struct PendingMessagesModifiedData {}
1441
1442#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1444#[serde(rename_all = "camelCase")]
1445pub struct AssistantTurnStartData {
1446 #[serde(skip_serializing_if = "Option::is_none")]
1448 pub interaction_id: Option<String>,
1449 #[serde(skip_serializing_if = "Option::is_none")]
1451 pub model: Option<String>,
1452 pub turn_id: String,
1454}
1455
1456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1458#[serde(rename_all = "camelCase")]
1459pub struct AssistantIntentData {
1460 pub intent: String,
1462}
1463
1464#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1466#[serde(rename_all = "camelCase")]
1467pub struct AssistantReasoningData {
1468 pub content: String,
1470 pub reasoning_id: String,
1472}
1473
1474#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1476#[serde(rename_all = "camelCase")]
1477pub struct AssistantReasoningDeltaData {
1478 pub delta_content: String,
1480 pub reasoning_id: String,
1482}
1483
1484#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1486#[serde(rename_all = "camelCase")]
1487pub struct AssistantToolCallDeltaData {
1488 pub input_delta: String,
1490 pub tool_call_id: String,
1492 #[serde(skip_serializing_if = "Option::is_none")]
1494 pub tool_name: Option<String>,
1495 #[serde(skip_serializing_if = "Option::is_none")]
1497 pub tool_type: Option<AssistantMessageToolRequestType>,
1498}
1499
1500#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1502#[serde(rename_all = "camelCase")]
1503pub struct AssistantStreamingDeltaData {
1504 pub total_response_size_bytes: i64,
1506}
1507
1508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1517#[serde(rename_all = "camelCase")]
1518pub struct CitationSource {
1519 pub id: String,
1521 #[serde(skip_serializing_if = "Option::is_none")]
1523 pub path: Option<String>,
1524 pub provider: CitationProvider,
1526 #[serde(skip_serializing_if = "Option::is_none")]
1528 pub title: Option<String>,
1529 #[serde(skip_serializing_if = "Option::is_none")]
1531 pub url: Option<String>,
1532}
1533
1534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1543#[serde(rename_all = "camelCase")]
1544pub struct CitationReference {
1545 #[serde(skip_serializing_if = "Option::is_none")]
1547 pub cited_text: Option<String>,
1548 #[serde(skip_serializing_if = "Option::is_none")]
1550 pub location: Option<serde_json::Value>,
1551 #[serde(skip_serializing_if = "Option::is_none")]
1553 pub provider_metadata: Option<serde_json::Value>,
1554 pub source_id: String,
1556}
1557
1558#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1567#[serde(rename_all = "camelCase")]
1568pub struct CitationSpan {
1569 pub end_index: i64,
1571 pub references: Vec<CitationReference>,
1573 pub start_index: i64,
1575}
1576
1577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1586#[serde(rename_all = "camelCase")]
1587pub struct Citations {
1588 pub sources: Vec<CitationSource>,
1590 pub spans: Vec<CitationSpan>,
1592}
1593
1594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1603#[serde(rename_all = "camelCase")]
1604pub struct AssistantMessageServerTools {
1605 #[serde(skip_serializing_if = "Option::is_none")]
1606 pub advisor_model: Option<String>,
1607 #[serde(skip_serializing_if = "Option::is_none")]
1608 pub function_call_namespaces: Option<HashMap<String, String>>,
1609 #[serde(skip_serializing_if = "Option::is_none")]
1610 pub items: Option<Vec<serde_json::Value>>,
1611 pub provider: String,
1612 #[serde(skip_serializing_if = "Option::is_none")]
1613 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1614}
1615
1616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1618#[serde(rename_all = "camelCase")]
1619pub struct AssistantMessageToolRequest {
1620 #[serde(skip_serializing_if = "Option::is_none")]
1622 pub arguments: Option<serde_json::Value>,
1623 #[serde(skip_serializing_if = "Option::is_none")]
1625 pub intention_summary: Option<String>,
1626 #[serde(skip_serializing_if = "Option::is_none")]
1628 pub mcp_server_name: Option<String>,
1629 #[serde(skip_serializing_if = "Option::is_none")]
1631 pub mcp_tool_name: Option<String>,
1632 pub name: String,
1634 pub tool_call_id: String,
1636 #[serde(skip_serializing_if = "Option::is_none")]
1638 pub tool_title: Option<String>,
1639 #[serde(skip_serializing_if = "Option::is_none")]
1641 pub r#type: Option<AssistantMessageToolRequestType>,
1642}
1643
1644#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1646#[serde(rename_all = "camelCase")]
1647pub struct AssistantMessageData {
1648 #[serde(skip_serializing_if = "Option::is_none")]
1650 pub api_call_id: Option<String>,
1651 #[serde(skip_serializing_if = "Option::is_none")]
1660 pub citations: Option<Citations>,
1661 #[serde(skip_serializing_if = "Option::is_none")]
1663 pub client_request_id: Option<String>,
1664 pub content: String,
1666 #[serde(skip_serializing_if = "Option::is_none")]
1668 pub encrypted_content: Option<String>,
1669 #[serde(skip_serializing_if = "Option::is_none")]
1671 pub interaction_id: Option<String>,
1672 pub message_id: String,
1674 #[serde(skip_serializing_if = "Option::is_none")]
1676 pub model: Option<String>,
1677 #[serde(skip_serializing_if = "Option::is_none")]
1679 pub output_tokens: Option<i64>,
1680 #[doc(hidden)]
1682 #[deprecated]
1683 #[serde(skip_serializing_if = "Option::is_none")]
1684 pub parent_tool_call_id: Option<String>,
1685 #[serde(skip_serializing_if = "Option::is_none")]
1687 pub phase: Option<String>,
1688 #[serde(skip_serializing_if = "Option::is_none")]
1690 pub reasoning_opaque: Option<String>,
1691 #[serde(skip_serializing_if = "Option::is_none")]
1693 pub reasoning_text: Option<String>,
1694 #[serde(skip_serializing_if = "Option::is_none")]
1696 pub reasoning_wire_field: Option<String>,
1697 #[serde(skip_serializing_if = "Option::is_none")]
1699 pub request_id: Option<RequestId>,
1700 #[serde(skip_serializing_if = "Option::is_none")]
1702 pub server_tools: Option<AssistantMessageServerTools>,
1703 #[serde(skip_serializing_if = "Option::is_none")]
1705 pub service_request_id: Option<String>,
1706 #[serde(skip_serializing_if = "Option::is_none")]
1708 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1709 #[serde(skip_serializing_if = "Option::is_none")]
1711 pub turn_id: Option<String>,
1712}
1713
1714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1716#[serde(rename_all = "camelCase")]
1717pub struct AssistantMessageStartData {
1718 pub message_id: String,
1720 #[serde(skip_serializing_if = "Option::is_none")]
1722 pub phase: Option<String>,
1723}
1724
1725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1727#[serde(rename_all = "camelCase")]
1728pub struct AssistantMessageDeltaData {
1729 pub delta_content: String,
1731 pub message_id: String,
1733 #[doc(hidden)]
1735 #[deprecated]
1736 #[serde(skip_serializing_if = "Option::is_none")]
1737 pub parent_tool_call_id: Option<String>,
1738}
1739
1740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1742#[serde(rename_all = "camelCase")]
1743pub struct AssistantTurnEndData {
1744 #[serde(skip_serializing_if = "Option::is_none")]
1746 pub model: Option<String>,
1747 pub turn_id: String,
1749}
1750
1751#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1753#[serde(rename_all = "camelCase")]
1754pub struct AssistantIdleData {
1755 #[serde(skip_serializing_if = "Option::is_none")]
1757 pub aborted: Option<bool>,
1758}
1759
1760#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1762#[serde(rename_all = "camelCase")]
1763pub struct AssistantUsageCopilotUsageTokenDetail {
1764 pub batch_size: i64,
1766 pub cost_per_batch: i64,
1768 pub token_count: i64,
1770 pub token_type: String,
1772}
1773
1774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1776#[serde(rename_all = "camelCase")]
1777pub struct AssistantUsageCopilotUsage {
1778 #[doc(hidden)]
1780 #[serde(skip_serializing_if = "Option::is_none")]
1781 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1782 pub total_nano_aiu: f64,
1784}
1785
1786#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1788#[serde(rename_all = "camelCase")]
1789pub(crate) struct AssistantUsageQuotaSnapshot {
1790 #[doc(hidden)]
1792 pub(crate) entitlement_requests: i64,
1793 #[doc(hidden)]
1795 #[serde(skip_serializing_if = "Option::is_none")]
1796 pub(crate) has_quota: Option<bool>,
1797 #[doc(hidden)]
1799 pub(crate) is_unlimited_entitlement: bool,
1800 #[doc(hidden)]
1802 pub(crate) overage: f64,
1803 #[doc(hidden)]
1805 pub(crate) overage_allowed_with_exhausted_quota: bool,
1806 #[doc(hidden)]
1808 #[serde(skip_serializing_if = "Option::is_none")]
1809 pub(crate) overage_entitlement: Option<f64>,
1810 #[doc(hidden)]
1812 pub(crate) remaining_percentage: f64,
1813 #[doc(hidden)]
1815 #[serde(skip_serializing_if = "Option::is_none")]
1816 pub(crate) reset_date: Option<String>,
1817 #[doc(hidden)]
1819 #[serde(skip_serializing_if = "Option::is_none")]
1820 pub(crate) token_based_billing: Option<bool>,
1821 #[doc(hidden)]
1823 pub(crate) usage_allowed_with_exhausted_quota: bool,
1824 #[doc(hidden)]
1826 pub(crate) used_requests: i64,
1827}
1828
1829#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1831#[serde(rename_all = "camelCase")]
1832pub struct AssistantUsageData {
1833 #[serde(skip_serializing_if = "Option::is_none")]
1835 pub api_call_id: Option<String>,
1836 #[serde(skip_serializing_if = "Option::is_none")]
1838 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1839 #[serde(skip_serializing_if = "Option::is_none")]
1841 pub cache_read_tokens: Option<i64>,
1842 #[serde(skip_serializing_if = "Option::is_none")]
1844 pub cache_write_tokens: Option<i64>,
1845 #[serde(skip_serializing_if = "Option::is_none")]
1847 pub content_filter_triggered: Option<bool>,
1848 #[serde(skip_serializing_if = "Option::is_none")]
1850 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1851 #[serde(skip_serializing_if = "Option::is_none")]
1860 pub cost: Option<f64>,
1861 #[serde(skip_serializing_if = "Option::is_none")]
1863 pub duration: Option<i64>,
1864 #[serde(skip_serializing_if = "Option::is_none")]
1866 pub finish_reason: Option<String>,
1867 #[serde(skip_serializing_if = "Option::is_none")]
1869 pub initiator: Option<String>,
1870 #[serde(skip_serializing_if = "Option::is_none")]
1872 pub input_tokens: Option<i64>,
1873 #[serde(skip_serializing_if = "Option::is_none")]
1875 pub inter_token_latency_ms: Option<f64>,
1876 pub model: String,
1878 #[serde(skip_serializing_if = "Option::is_none")]
1880 pub output_tokens: Option<i64>,
1881 #[doc(hidden)]
1883 #[deprecated]
1884 #[serde(skip_serializing_if = "Option::is_none")]
1885 pub parent_tool_call_id: Option<String>,
1886 #[serde(skip_serializing_if = "Option::is_none")]
1888 pub provider_call_id: Option<String>,
1889 #[doc(hidden)]
1891 #[serde(skip_serializing_if = "Option::is_none")]
1892 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1893 #[serde(skip_serializing_if = "Option::is_none")]
1895 pub reasoning_effort: Option<String>,
1896 #[serde(skip_serializing_if = "Option::is_none")]
1898 pub reasoning_tokens: Option<i64>,
1899 #[serde(skip_serializing_if = "Option::is_none")]
1901 pub service_request_id: Option<String>,
1902 #[serde(skip_serializing_if = "Option::is_none")]
1904 pub time_to_first_token_ms: Option<f64>,
1905}
1906
1907#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1909#[serde(rename_all = "camelCase")]
1910pub struct ModelCallFailureRequestFingerprint {
1911 pub image_part_count: i64,
1913 pub image_parts_missing_media_type: i64,
1915 #[serde(skip_serializing_if = "Option::is_none")]
1917 pub last_message_role: Option<String>,
1918 pub message_count: i64,
1920 pub nameless_tool_call_count: i64,
1922 pub tool_call_count: i64,
1924 pub tool_result_message_count: i64,
1926}
1927
1928#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1930#[serde(rename_all = "camelCase")]
1931pub struct ModelCallFailureData {
1932 #[serde(skip_serializing_if = "Option::is_none")]
1934 pub api_call_id: Option<String>,
1935 #[serde(skip_serializing_if = "Option::is_none")]
1937 pub bad_request_kind: Option<ModelCallFailureBadRequestKind>,
1938 #[serde(skip_serializing_if = "Option::is_none")]
1940 pub duration_ms: Option<i64>,
1941 #[serde(skip_serializing_if = "Option::is_none")]
1943 pub error_code: Option<String>,
1944 #[serde(skip_serializing_if = "Option::is_none")]
1946 pub error_message: Option<String>,
1947 #[serde(skip_serializing_if = "Option::is_none")]
1949 pub error_type: Option<String>,
1950 #[serde(skip_serializing_if = "Option::is_none")]
1952 pub initiator: Option<String>,
1953 #[serde(skip_serializing_if = "Option::is_none")]
1955 pub model: Option<String>,
1956 #[serde(skip_serializing_if = "Option::is_none")]
1958 pub provider_call_id: Option<String>,
1959 #[doc(hidden)]
1961 #[serde(skip_serializing_if = "Option::is_none")]
1962 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1963 #[serde(skip_serializing_if = "Option::is_none")]
1965 pub request_fingerprint: Option<ModelCallFailureRequestFingerprint>,
1966 #[serde(skip_serializing_if = "Option::is_none")]
1968 pub service_request_id: Option<String>,
1969 pub source: ModelCallFailureSource,
1971 #[serde(skip_serializing_if = "Option::is_none")]
1973 pub status_code: Option<i32>,
1974}
1975
1976#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1978#[serde(rename_all = "camelCase")]
1979pub struct AbortData {
1980 pub reason: AbortReason,
1982}
1983
1984#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1986#[serde(rename_all = "camelCase")]
1987pub struct ToolUserRequestedData {
1988 #[serde(skip_serializing_if = "Option::is_none")]
1990 pub arguments: Option<serde_json::Value>,
1991 pub tool_call_id: String,
1993 pub tool_name: String,
1995}
1996
1997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1999#[serde(rename_all = "camelCase")]
2000pub struct ToolExecutionStartShellToolInfo {
2001 pub has_write_file_redirection: bool,
2003 pub possible_paths: Vec<String>,
2005}
2006
2007#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2009#[serde(rename_all = "camelCase")]
2010pub struct ToolExecutionStartToolDescriptionMetaUI {
2011 #[serde(skip_serializing_if = "Option::is_none")]
2013 pub resource_uri: Option<String>,
2014 #[serde(skip_serializing_if = "Option::is_none")]
2016 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
2017}
2018
2019#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2021#[serde(rename_all = "camelCase")]
2022pub struct ToolExecutionStartToolDescriptionMeta {
2023 #[serde(skip_serializing_if = "Option::is_none")]
2025 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
2026}
2027
2028#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2030#[serde(rename_all = "camelCase")]
2031pub struct ToolExecutionStartToolDescription {
2032 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2034 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
2035 #[serde(skip_serializing_if = "Option::is_none")]
2037 pub description: Option<String>,
2038 pub name: String,
2040}
2041
2042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2044#[serde(rename_all = "camelCase")]
2045pub struct ToolExecutionStartData {
2046 #[serde(skip_serializing_if = "Option::is_none")]
2048 pub arguments: Option<serde_json::Value>,
2049 #[serde(skip_serializing_if = "Option::is_none")]
2051 pub display_verbatim: Option<bool>,
2052 #[serde(skip_serializing_if = "Option::is_none")]
2054 pub mcp_server_name: Option<String>,
2055 #[serde(skip_serializing_if = "Option::is_none")]
2057 pub mcp_tool_name: Option<String>,
2058 #[serde(skip_serializing_if = "Option::is_none")]
2060 pub model: Option<String>,
2061 #[doc(hidden)]
2063 #[deprecated]
2064 #[serde(skip_serializing_if = "Option::is_none")]
2065 pub parent_tool_call_id: Option<String>,
2066 #[serde(skip_serializing_if = "Option::is_none")]
2068 pub shell_tool_info: Option<ToolExecutionStartShellToolInfo>,
2069 pub tool_call_id: String,
2071 #[serde(skip_serializing_if = "Option::is_none")]
2073 pub tool_description: Option<ToolExecutionStartToolDescription>,
2074 pub tool_name: String,
2076 #[serde(skip_serializing_if = "Option::is_none")]
2078 pub turn_id: Option<String>,
2079}
2080
2081#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2083#[serde(rename_all = "camelCase")]
2084pub struct ToolExecutionPartialResultData {
2085 pub partial_output: String,
2087 pub tool_call_id: String,
2089}
2090
2091#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2093#[serde(rename_all = "camelCase")]
2094pub struct ToolExecutionProgressData {
2095 pub progress_message: String,
2097 pub tool_call_id: String,
2099}
2100
2101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2103#[serde(rename_all = "camelCase")]
2104pub struct ToolExecutionCompleteError {
2105 #[serde(skip_serializing_if = "Option::is_none")]
2107 pub code: Option<String>,
2108 pub message: String,
2110}
2111
2112#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2121#[serde(rename_all = "camelCase")]
2122pub struct CitableSource {
2123 pub content: String,
2125 pub id: String,
2127 #[serde(skip_serializing_if = "Option::is_none")]
2129 pub path: Option<String>,
2130 #[serde(skip_serializing_if = "Option::is_none")]
2132 pub title: Option<String>,
2133 #[serde(skip_serializing_if = "Option::is_none")]
2135 pub url: Option<String>,
2136}
2137
2138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2140#[serde(rename_all = "camelCase")]
2141pub struct ToolExecutionCompleteContentText {
2142 pub text: String,
2144 pub r#type: ToolExecutionCompleteContentTextType,
2146}
2147
2148#[doc(hidden)]
2150#[deprecated]
2151#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2152#[serde(rename_all = "camelCase")]
2153pub struct ToolExecutionCompleteContentTerminal {
2154 #[serde(skip_serializing_if = "Option::is_none")]
2156 pub cwd: Option<String>,
2157 #[serde(skip_serializing_if = "Option::is_none")]
2159 pub exit_code: Option<i64>,
2160 pub text: String,
2162 pub r#type: ToolExecutionCompleteContentTerminalType,
2164}
2165
2166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2168#[serde(rename_all = "camelCase")]
2169pub struct ToolExecutionCompleteContentShellExit {
2170 #[serde(skip_serializing_if = "Option::is_none")]
2172 pub cwd: Option<String>,
2173 pub exit_code: i64,
2175 #[serde(skip_serializing_if = "Option::is_none")]
2177 pub output_preview: Option<String>,
2178 #[serde(skip_serializing_if = "Option::is_none")]
2180 pub output_truncated: Option<bool>,
2181 pub shell_id: String,
2183 pub r#type: ToolExecutionCompleteContentShellExitType,
2185}
2186
2187#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2189#[serde(rename_all = "camelCase")]
2190pub struct ToolExecutionCompleteContentImage {
2191 pub data: String,
2193 pub mime_type: String,
2195 pub r#type: ToolExecutionCompleteContentImageType,
2197}
2198
2199#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2201#[serde(rename_all = "camelCase")]
2202pub struct ToolExecutionCompleteContentAudio {
2203 pub data: String,
2205 pub mime_type: String,
2207 pub r#type: ToolExecutionCompleteContentAudioType,
2209}
2210
2211#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2213#[serde(rename_all = "camelCase")]
2214pub struct ToolExecutionCompleteContentResourceLinkIcon {
2215 #[serde(skip_serializing_if = "Option::is_none")]
2217 pub mime_type: Option<String>,
2218 #[serde(skip_serializing_if = "Option::is_none")]
2220 pub sizes: Option<Vec<String>>,
2221 pub src: String,
2223 #[serde(skip_serializing_if = "Option::is_none")]
2225 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
2226}
2227
2228#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2230#[serde(rename_all = "camelCase")]
2231pub struct ToolExecutionCompleteContentResourceLink {
2232 #[serde(skip_serializing_if = "Option::is_none")]
2234 pub description: Option<String>,
2235 #[serde(skip_serializing_if = "Option::is_none")]
2237 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
2238 #[serde(skip_serializing_if = "Option::is_none")]
2240 pub mime_type: Option<String>,
2241 pub name: String,
2243 #[serde(skip_serializing_if = "Option::is_none")]
2245 pub size: Option<i64>,
2246 #[serde(skip_serializing_if = "Option::is_none")]
2248 pub title: Option<String>,
2249 pub r#type: ToolExecutionCompleteContentResourceLinkType,
2251 pub uri: String,
2253}
2254
2255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2257#[serde(rename_all = "camelCase")]
2258pub struct EmbeddedTextResourceContents {
2259 #[serde(skip_serializing_if = "Option::is_none")]
2261 pub mime_type: Option<String>,
2262 pub text: String,
2264 pub uri: String,
2266}
2267
2268#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2270#[serde(rename_all = "camelCase")]
2271pub struct EmbeddedBlobResourceContents {
2272 pub blob: String,
2274 #[serde(skip_serializing_if = "Option::is_none")]
2276 pub mime_type: Option<String>,
2277 pub uri: String,
2279}
2280
2281#[derive(Debug, Clone, Serialize, Deserialize)]
2283#[serde(rename_all = "camelCase")]
2284pub struct ToolExecutionCompleteContentResource {
2285 pub resource: ToolExecutionCompleteContentResourceDetails,
2287 pub r#type: ToolExecutionCompleteContentResourceType,
2289}
2290
2291#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2293#[serde(rename_all = "camelCase")]
2294pub struct ToolExecutionCompleteUIResourceMetaUICsp {
2295 #[serde(skip_serializing_if = "Option::is_none")]
2296 pub base_uri_domains: Option<Vec<String>>,
2297 #[serde(skip_serializing_if = "Option::is_none")]
2298 pub connect_domains: Option<Vec<String>>,
2299 #[serde(skip_serializing_if = "Option::is_none")]
2300 pub frame_domains: Option<Vec<String>>,
2301 #[serde(skip_serializing_if = "Option::is_none")]
2302 pub resource_domains: Option<Vec<String>>,
2303}
2304
2305#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2307#[serde(rename_all = "camelCase")]
2308pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
2309
2310#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2312#[serde(rename_all = "camelCase")]
2313pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
2314
2315#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2317#[serde(rename_all = "camelCase")]
2318pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
2319
2320#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2322#[serde(rename_all = "camelCase")]
2323pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
2324
2325#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2327#[serde(rename_all = "camelCase")]
2328pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
2329 #[serde(skip_serializing_if = "Option::is_none")]
2331 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
2332 #[serde(skip_serializing_if = "Option::is_none")]
2334 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
2335 #[serde(skip_serializing_if = "Option::is_none")]
2337 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
2338 #[serde(skip_serializing_if = "Option::is_none")]
2340 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
2341}
2342
2343#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2345#[serde(rename_all = "camelCase")]
2346pub struct ToolExecutionCompleteUIResourceMetaUI {
2347 #[serde(skip_serializing_if = "Option::is_none")]
2349 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
2350 #[serde(skip_serializing_if = "Option::is_none")]
2351 pub domain: Option<String>,
2352 #[serde(skip_serializing_if = "Option::is_none")]
2354 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
2355 #[serde(skip_serializing_if = "Option::is_none")]
2356 pub prefers_border: Option<bool>,
2357}
2358
2359#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2361#[serde(rename_all = "camelCase")]
2362pub struct ToolExecutionCompleteUIResourceMeta {
2363 #[serde(skip_serializing_if = "Option::is_none")]
2365 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
2366}
2367
2368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2370#[serde(rename_all = "camelCase")]
2371pub struct ToolExecutionCompleteUIResource {
2372 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2374 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
2375 #[serde(skip_serializing_if = "Option::is_none")]
2377 pub blob: Option<String>,
2378 pub mime_type: String,
2380 #[serde(skip_serializing_if = "Option::is_none")]
2382 pub text: Option<String>,
2383 pub uri: String,
2385}
2386
2387#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2389#[serde(rename_all = "camelCase")]
2390pub struct ToolExecutionCompleteResult {
2391 #[serde(skip_serializing_if = "Option::is_none")]
2400 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
2401 #[serde(skip_serializing_if = "Option::is_none")]
2410 pub citable_sources: Option<Vec<CitableSource>>,
2411 pub content: String,
2413 #[serde(skip_serializing_if = "Option::is_none")]
2415 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
2416 #[serde(skip_serializing_if = "Option::is_none")]
2418 pub detailed_content: Option<String>,
2419 #[serde(skip_serializing_if = "Option::is_none")]
2428 pub mcp_meta: Option<serde_json::Value>,
2429 #[serde(skip_serializing_if = "Option::is_none")]
2431 pub structured_content: Option<serde_json::Value>,
2432 #[serde(skip_serializing_if = "Option::is_none")]
2434 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2435}
2436
2437#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2439#[serde(rename_all = "camelCase")]
2440pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2441 #[serde(skip_serializing_if = "Option::is_none")]
2443 pub resource_uri: Option<String>,
2444 #[serde(skip_serializing_if = "Option::is_none")]
2446 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2447}
2448
2449#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2451#[serde(rename_all = "camelCase")]
2452pub struct ToolExecutionCompleteToolDescriptionMeta {
2453 #[serde(skip_serializing_if = "Option::is_none")]
2455 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2456}
2457
2458#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2460#[serde(rename_all = "camelCase")]
2461pub struct ToolExecutionCompleteToolDescription {
2462 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2464 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2465 #[serde(skip_serializing_if = "Option::is_none")]
2467 pub description: Option<String>,
2468 pub name: String,
2470}
2471
2472#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2474#[serde(rename_all = "camelCase")]
2475pub struct ToolExecutionCompleteData {
2476 #[serde(skip_serializing_if = "Option::is_none")]
2478 pub error: Option<ToolExecutionCompleteError>,
2479 #[serde(skip_serializing_if = "Option::is_none")]
2481 pub interaction_id: Option<String>,
2482 #[serde(skip_serializing_if = "Option::is_none")]
2484 pub is_user_requested: Option<bool>,
2485 #[serde(skip_serializing_if = "Option::is_none")]
2494 pub mcp_meta: Option<serde_json::Value>,
2495 #[serde(skip_serializing_if = "Option::is_none")]
2497 pub model: Option<String>,
2498 #[doc(hidden)]
2500 #[deprecated]
2501 #[serde(skip_serializing_if = "Option::is_none")]
2502 pub parent_tool_call_id: Option<String>,
2503 #[serde(skip_serializing_if = "Option::is_none")]
2505 pub result: Option<ToolExecutionCompleteResult>,
2506 #[serde(skip_serializing_if = "Option::is_none")]
2508 pub sandboxed: Option<bool>,
2509 pub success: bool,
2511 pub tool_call_id: String,
2513 #[serde(skip_serializing_if = "Option::is_none")]
2515 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2516 #[serde(skip_serializing_if = "Option::is_none")]
2518 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2519 #[serde(skip_serializing_if = "Option::is_none")]
2521 pub turn_id: Option<String>,
2522}
2523
2524#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2526#[serde(rename_all = "camelCase")]
2527pub struct SkillInvokedData {
2528 #[serde(skip_serializing_if = "Option::is_none")]
2530 pub allowed_tools: Option<Vec<String>>,
2531 pub content: String,
2533 #[serde(skip_serializing_if = "Option::is_none")]
2535 pub description: Option<String>,
2536 #[serde(skip_serializing_if = "Option::is_none")]
2538 pub model: Option<String>,
2539 pub name: String,
2541 pub path: String,
2543 #[serde(skip_serializing_if = "Option::is_none")]
2545 pub plugin_name: Option<String>,
2546 #[serde(skip_serializing_if = "Option::is_none")]
2548 pub plugin_version: Option<String>,
2549 #[serde(skip_serializing_if = "Option::is_none")]
2551 pub source: Option<String>,
2552 #[serde(skip_serializing_if = "Option::is_none")]
2554 pub trigger: Option<SkillInvokedTrigger>,
2555}
2556
2557#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2559#[serde(rename_all = "camelCase")]
2560pub struct SubagentStartedData {
2561 pub agent_description: String,
2563 pub agent_display_name: String,
2565 pub agent_name: String,
2567 #[serde(skip_serializing_if = "Option::is_none")]
2569 pub model: Option<String>,
2570 pub tool_call_id: String,
2572}
2573
2574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2576#[serde(rename_all = "camelCase")]
2577pub struct SubagentCompletedData {
2578 pub agent_display_name: String,
2580 pub agent_name: String,
2582 #[serde(skip_serializing_if = "Option::is_none")]
2584 pub duration_ms: Option<i64>,
2585 #[serde(skip_serializing_if = "Option::is_none")]
2587 pub model: Option<String>,
2588 pub tool_call_id: String,
2590 #[serde(skip_serializing_if = "Option::is_none")]
2592 pub total_tokens: Option<i64>,
2593 #[serde(skip_serializing_if = "Option::is_none")]
2595 pub total_tool_calls: Option<i64>,
2596}
2597
2598#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2600#[serde(rename_all = "camelCase")]
2601pub struct SubagentFailedData {
2602 pub agent_display_name: String,
2604 pub agent_name: String,
2606 #[serde(skip_serializing_if = "Option::is_none")]
2608 pub duration_ms: Option<i64>,
2609 pub error: String,
2611 #[serde(skip_serializing_if = "Option::is_none")]
2613 pub model: Option<String>,
2614 pub tool_call_id: String,
2616 #[serde(skip_serializing_if = "Option::is_none")]
2618 pub total_tokens: Option<i64>,
2619 #[serde(skip_serializing_if = "Option::is_none")]
2621 pub total_tool_calls: Option<i64>,
2622}
2623
2624#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2626#[serde(rename_all = "camelCase")]
2627pub struct SubagentSelectedData {
2628 pub agent_display_name: String,
2630 pub agent_name: String,
2632 pub tools: Option<Vec<String>>,
2634}
2635
2636#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2638#[serde(rename_all = "camelCase")]
2639pub struct SubagentDeselectedData {}
2640
2641#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2643#[serde(rename_all = "camelCase")]
2644pub struct HookStartData {
2645 pub hook_invocation_id: String,
2647 pub hook_type: String,
2649 #[serde(skip_serializing_if = "Option::is_none")]
2651 pub input: Option<serde_json::Value>,
2652}
2653
2654#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2656#[serde(rename_all = "camelCase")]
2657pub struct HookEndError {
2658 pub message: String,
2660 #[serde(skip_serializing_if = "Option::is_none")]
2662 pub source: Option<String>,
2663 #[serde(skip_serializing_if = "Option::is_none")]
2665 pub stack: Option<String>,
2666}
2667
2668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2670#[serde(rename_all = "camelCase")]
2671pub struct HookEndData {
2672 #[serde(skip_serializing_if = "Option::is_none")]
2674 pub error: Option<HookEndError>,
2675 pub hook_invocation_id: String,
2677 pub hook_type: String,
2679 #[serde(skip_serializing_if = "Option::is_none")]
2681 pub output: Option<serde_json::Value>,
2682 pub success: bool,
2684}
2685
2686#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2688#[serde(rename_all = "camelCase")]
2689pub struct HookProgressData {
2690 pub message: String,
2692 #[serde(skip_serializing_if = "Option::is_none")]
2694 pub temporary: Option<bool>,
2695}
2696
2697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2699#[serde(rename_all = "camelCase")]
2700pub struct SessionBinaryAssetData {
2701 pub asset_id: String,
2703 pub byte_length: i64,
2705 pub data: String,
2707 #[serde(skip_serializing_if = "Option::is_none")]
2709 pub description: Option<String>,
2710 #[serde(skip_serializing_if = "Option::is_none")]
2712 pub metadata: Option<HashMap<String, serde_json::Value>>,
2713 pub mime_type: String,
2715 pub r#type: BinaryAssetType,
2717}
2718
2719#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2721#[serde(rename_all = "camelCase")]
2722pub struct SystemMessageMetadata {
2723 #[serde(skip_serializing_if = "Option::is_none")]
2725 pub prompt_version: Option<String>,
2726 #[serde(skip_serializing_if = "Option::is_none")]
2728 pub variables: Option<HashMap<String, serde_json::Value>>,
2729}
2730
2731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2733#[serde(rename_all = "camelCase")]
2734pub struct SystemMessageData {
2735 pub content: String,
2737 #[serde(skip_serializing_if = "Option::is_none")]
2739 pub metadata: Option<SystemMessageMetadata>,
2740 #[serde(skip_serializing_if = "Option::is_none")]
2742 pub name: Option<String>,
2743 pub role: SystemMessageRole,
2745}
2746
2747#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2749#[serde(rename_all = "camelCase")]
2750pub struct SystemNotificationData {
2751 pub content: String,
2753 pub kind: serde_json::Value,
2755}
2756
2757#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2759#[serde(rename_all = "camelCase")]
2760pub struct PermissionRequestShellCommand {
2761 pub identifier: String,
2763 pub read_only: bool,
2765}
2766
2767#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2769#[serde(rename_all = "camelCase")]
2770pub struct PermissionRequestShellPossibleUrl {
2771 pub url: String,
2773}
2774
2775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2777#[serde(rename_all = "camelCase")]
2778pub struct PermissionRequestShell {
2779 pub can_offer_session_approval: bool,
2781 pub commands: Vec<PermissionRequestShellCommand>,
2783 pub full_command_text: String,
2785 pub has_write_file_redirection: bool,
2787 pub intention: String,
2789 pub kind: PermissionRequestShellKind,
2791 pub possible_paths: Vec<String>,
2793 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2795 #[serde(skip_serializing_if = "Option::is_none")]
2797 pub request_sandbox_bypass: Option<bool>,
2798 #[serde(skip_serializing_if = "Option::is_none")]
2800 pub request_sandbox_bypass_reason: Option<String>,
2801 #[serde(skip_serializing_if = "Option::is_none")]
2803 pub tool_call_id: Option<String>,
2804 #[serde(skip_serializing_if = "Option::is_none")]
2806 pub warning: Option<String>,
2807}
2808
2809#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2811#[serde(rename_all = "camelCase")]
2812pub struct PermissionRequestWrite {
2813 pub can_offer_session_approval: bool,
2815 pub diff: String,
2817 pub file_name: String,
2819 pub intention: String,
2821 pub kind: PermissionRequestWriteKind,
2823 #[serde(skip_serializing_if = "Option::is_none")]
2825 pub new_file_contents: Option<String>,
2826 #[serde(skip_serializing_if = "Option::is_none")]
2828 pub request_sandbox_bypass: Option<bool>,
2829 #[serde(skip_serializing_if = "Option::is_none")]
2831 pub request_sandbox_bypass_reason: Option<String>,
2832 #[serde(skip_serializing_if = "Option::is_none")]
2834 pub tool_call_id: Option<String>,
2835}
2836
2837#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2839#[serde(rename_all = "camelCase")]
2840pub struct PermissionRequestRead {
2841 pub intention: String,
2843 pub kind: PermissionRequestReadKind,
2845 pub path: String,
2847 #[serde(skip_serializing_if = "Option::is_none")]
2849 pub request_sandbox_bypass: Option<bool>,
2850 #[serde(skip_serializing_if = "Option::is_none")]
2852 pub request_sandbox_bypass_reason: Option<String>,
2853 #[serde(skip_serializing_if = "Option::is_none")]
2855 pub tool_call_id: Option<String>,
2856}
2857
2858#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2860#[serde(rename_all = "camelCase")]
2861pub struct PermissionRequestMcp {
2862 #[serde(skip_serializing_if = "Option::is_none")]
2864 pub args: Option<serde_json::Value>,
2865 pub kind: PermissionRequestMcpKind,
2867 pub read_only: bool,
2869 pub server_name: String,
2871 #[serde(skip_serializing_if = "Option::is_none")]
2873 pub tool_call_id: Option<String>,
2874 pub tool_name: String,
2876 pub tool_title: String,
2878}
2879
2880#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2882#[serde(rename_all = "camelCase")]
2883pub struct PermissionRequestUrl {
2884 pub intention: String,
2886 pub kind: PermissionRequestUrlKind,
2888 #[serde(skip_serializing_if = "Option::is_none")]
2890 pub request_sandbox_bypass: Option<bool>,
2891 #[serde(skip_serializing_if = "Option::is_none")]
2893 pub request_sandbox_bypass_reason: Option<String>,
2894 #[serde(skip_serializing_if = "Option::is_none")]
2896 pub tool_call_id: Option<String>,
2897 pub url: String,
2899}
2900
2901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2903#[serde(rename_all = "camelCase")]
2904pub struct PermissionRequestMemory {
2905 #[serde(skip_serializing_if = "Option::is_none")]
2907 pub action: Option<PermissionRequestMemoryAction>,
2908 #[serde(skip_serializing_if = "Option::is_none")]
2910 pub citations: Option<String>,
2911 #[serde(skip_serializing_if = "Option::is_none")]
2913 pub direction: Option<PermissionRequestMemoryDirection>,
2914 pub fact: String,
2916 pub kind: PermissionRequestMemoryKind,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2920 pub reason: Option<String>,
2921 #[serde(skip_serializing_if = "Option::is_none")]
2923 pub subject: Option<String>,
2924 #[serde(skip_serializing_if = "Option::is_none")]
2926 pub tool_call_id: Option<String>,
2927}
2928
2929#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2931#[serde(rename_all = "camelCase")]
2932pub struct PermissionRequestCustomTool {
2933 #[serde(skip_serializing_if = "Option::is_none")]
2935 pub args: Option<serde_json::Value>,
2936 pub kind: PermissionRequestCustomToolKind,
2938 #[serde(skip_serializing_if = "Option::is_none")]
2940 pub tool_call_id: Option<String>,
2941 pub tool_description: String,
2943 pub tool_name: String,
2945}
2946
2947#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2949#[serde(rename_all = "camelCase")]
2950pub struct PermissionRequestHook {
2951 #[serde(skip_serializing_if = "Option::is_none")]
2953 pub hook_message: Option<String>,
2954 pub kind: PermissionRequestHookKind,
2956 #[serde(skip_serializing_if = "Option::is_none")]
2958 pub tool_args: Option<serde_json::Value>,
2959 #[serde(skip_serializing_if = "Option::is_none")]
2961 pub tool_call_id: Option<String>,
2962 pub tool_name: String,
2964}
2965
2966#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2968#[serde(rename_all = "camelCase")]
2969pub struct PermissionRequestExtensionManagement {
2970 #[serde(skip_serializing_if = "Option::is_none")]
2972 pub extension_name: Option<String>,
2973 pub kind: PermissionRequestExtensionManagementKind,
2975 pub operation: String,
2977 #[serde(skip_serializing_if = "Option::is_none")]
2979 pub tool_call_id: Option<String>,
2980}
2981
2982#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2984#[serde(rename_all = "camelCase")]
2985pub struct PermissionRequestExtensionPermissionAccess {
2986 pub capabilities: Vec<String>,
2988 pub extension_name: String,
2990 pub kind: PermissionRequestExtensionPermissionAccessKind,
2992 #[serde(skip_serializing_if = "Option::is_none")]
2994 pub tool_call_id: Option<String>,
2995}
2996
2997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3006#[serde(rename_all = "camelCase")]
3007pub struct PermissionAutoApproval {
3008 #[serde(skip_serializing_if = "Option::is_none")]
3010 pub reason: Option<String>,
3011 pub recommendation: AutoApprovalRecommendation,
3013}
3014
3015#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3017#[serde(rename_all = "camelCase")]
3018pub struct PermissionPromptRequestCommands {
3019 #[serde(skip_serializing_if = "Option::is_none")]
3028 pub auto_approval: Option<PermissionAutoApproval>,
3029 pub can_offer_session_approval: bool,
3031 pub command_identifiers: Vec<String>,
3033 pub full_command_text: String,
3035 pub intention: String,
3037 pub kind: PermissionPromptRequestCommandsKind,
3039 #[serde(skip_serializing_if = "Option::is_none")]
3041 pub tool_call_id: Option<String>,
3042 #[serde(skip_serializing_if = "Option::is_none")]
3044 pub warning: Option<String>,
3045}
3046
3047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3049#[serde(rename_all = "camelCase")]
3050pub struct PermissionPromptRequestWrite {
3051 #[serde(skip_serializing_if = "Option::is_none")]
3060 pub auto_approval: Option<PermissionAutoApproval>,
3061 pub can_offer_session_approval: bool,
3063 pub diff: String,
3065 pub file_name: String,
3067 pub intention: String,
3069 pub kind: PermissionPromptRequestWriteKind,
3071 #[serde(skip_serializing_if = "Option::is_none")]
3073 pub new_file_contents: Option<String>,
3074 #[serde(skip_serializing_if = "Option::is_none")]
3076 pub tool_call_id: Option<String>,
3077}
3078
3079#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3081#[serde(rename_all = "camelCase")]
3082pub struct PermissionPromptRequestRead {
3083 #[serde(skip_serializing_if = "Option::is_none")]
3092 pub auto_approval: Option<PermissionAutoApproval>,
3093 pub intention: String,
3095 pub kind: PermissionPromptRequestReadKind,
3097 pub path: String,
3099 #[serde(skip_serializing_if = "Option::is_none")]
3101 pub tool_call_id: Option<String>,
3102}
3103
3104#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3106#[serde(rename_all = "camelCase")]
3107pub struct PermissionPromptRequestMcp {
3108 #[serde(skip_serializing_if = "Option::is_none")]
3110 pub args: Option<serde_json::Value>,
3111 #[serde(skip_serializing_if = "Option::is_none")]
3120 pub auto_approval: Option<PermissionAutoApproval>,
3121 pub kind: PermissionPromptRequestMcpKind,
3123 pub server_name: String,
3125 #[serde(skip_serializing_if = "Option::is_none")]
3127 pub tool_call_id: Option<String>,
3128 pub tool_name: String,
3130 pub tool_title: String,
3132}
3133
3134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3136#[serde(rename_all = "camelCase")]
3137pub struct PermissionPromptRequestUrl {
3138 #[serde(skip_serializing_if = "Option::is_none")]
3147 pub auto_approval: Option<PermissionAutoApproval>,
3148 pub intention: String,
3150 pub kind: PermissionPromptRequestUrlKind,
3152 #[serde(skip_serializing_if = "Option::is_none")]
3154 pub request_sandbox_bypass: Option<bool>,
3155 #[serde(skip_serializing_if = "Option::is_none")]
3157 pub request_sandbox_bypass_reason: Option<String>,
3158 #[serde(skip_serializing_if = "Option::is_none")]
3160 pub tool_call_id: Option<String>,
3161 pub url: String,
3163}
3164
3165#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3167#[serde(rename_all = "camelCase")]
3168pub struct PermissionPromptRequestMemory {
3169 #[serde(skip_serializing_if = "Option::is_none")]
3171 pub action: Option<PermissionRequestMemoryAction>,
3172 #[serde(skip_serializing_if = "Option::is_none")]
3181 pub auto_approval: Option<PermissionAutoApproval>,
3182 #[serde(skip_serializing_if = "Option::is_none")]
3184 pub citations: Option<String>,
3185 #[serde(skip_serializing_if = "Option::is_none")]
3187 pub direction: Option<PermissionRequestMemoryDirection>,
3188 pub fact: String,
3190 pub kind: PermissionPromptRequestMemoryKind,
3192 #[serde(skip_serializing_if = "Option::is_none")]
3194 pub reason: Option<String>,
3195 #[serde(skip_serializing_if = "Option::is_none")]
3197 pub subject: Option<String>,
3198 #[serde(skip_serializing_if = "Option::is_none")]
3200 pub tool_call_id: Option<String>,
3201}
3202
3203#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3205#[serde(rename_all = "camelCase")]
3206pub struct PermissionPromptRequestCustomTool {
3207 #[serde(skip_serializing_if = "Option::is_none")]
3209 pub args: Option<serde_json::Value>,
3210 #[serde(skip_serializing_if = "Option::is_none")]
3219 pub auto_approval: Option<PermissionAutoApproval>,
3220 pub kind: PermissionPromptRequestCustomToolKind,
3222 #[serde(skip_serializing_if = "Option::is_none")]
3224 pub tool_call_id: Option<String>,
3225 pub tool_description: String,
3227 pub tool_name: String,
3229}
3230
3231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3233#[serde(rename_all = "camelCase")]
3234pub struct PermissionPromptRequestPath {
3235 pub access_kind: PermissionPromptRequestPathAccessKind,
3237 #[serde(skip_serializing_if = "Option::is_none")]
3246 pub auto_approval: Option<PermissionAutoApproval>,
3247 pub kind: PermissionPromptRequestPathKind,
3249 pub paths: Vec<String>,
3251 #[serde(skip_serializing_if = "Option::is_none")]
3253 pub tool_call_id: Option<String>,
3254}
3255
3256#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3258#[serde(rename_all = "camelCase")]
3259pub struct PermissionPromptRequestHook {
3260 #[serde(skip_serializing_if = "Option::is_none")]
3269 pub auto_approval: Option<PermissionAutoApproval>,
3270 #[serde(skip_serializing_if = "Option::is_none")]
3272 pub hook_message: Option<String>,
3273 pub kind: PermissionPromptRequestHookKind,
3275 #[serde(skip_serializing_if = "Option::is_none")]
3277 pub tool_args: Option<serde_json::Value>,
3278 #[serde(skip_serializing_if = "Option::is_none")]
3280 pub tool_call_id: Option<String>,
3281 pub tool_name: String,
3283}
3284
3285#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3287#[serde(rename_all = "camelCase")]
3288pub struct PermissionPromptRequestExtensionManagement {
3289 #[serde(skip_serializing_if = "Option::is_none")]
3298 pub auto_approval: Option<PermissionAutoApproval>,
3299 #[serde(skip_serializing_if = "Option::is_none")]
3301 pub extension_name: Option<String>,
3302 pub kind: PermissionPromptRequestExtensionManagementKind,
3304 pub operation: String,
3306 #[serde(skip_serializing_if = "Option::is_none")]
3308 pub tool_call_id: Option<String>,
3309}
3310
3311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3313#[serde(rename_all = "camelCase")]
3314pub struct PermissionPromptRequestExtensionPermissionAccess {
3315 #[serde(skip_serializing_if = "Option::is_none")]
3324 pub auto_approval: Option<PermissionAutoApproval>,
3325 pub capabilities: Vec<String>,
3327 pub extension_name: String,
3329 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
3331 #[serde(skip_serializing_if = "Option::is_none")]
3333 pub tool_call_id: Option<String>,
3334}
3335
3336#[derive(Debug, Clone, Serialize, Deserialize)]
3338#[serde(rename_all = "camelCase")]
3339pub struct PermissionRequestedData {
3340 pub permission_request: PermissionRequest,
3342 #[serde(skip_serializing_if = "Option::is_none")]
3344 pub prompt_request: Option<PermissionPromptRequest>,
3345 pub request_id: RequestId,
3347 #[serde(skip_serializing_if = "Option::is_none")]
3349 pub resolved_by_hook: Option<bool>,
3350}
3351
3352#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3354#[serde(rename_all = "camelCase")]
3355pub struct PermissionApproved {
3356 pub kind: PermissionApprovedKind,
3358}
3359
3360#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3362#[serde(rename_all = "camelCase")]
3363pub struct UserToolSessionApprovalCommands {
3364 pub command_identifiers: Vec<String>,
3366 pub kind: UserToolSessionApprovalCommandsKind,
3368}
3369
3370#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3372#[serde(rename_all = "camelCase")]
3373pub struct UserToolSessionApprovalRead {
3374 pub kind: UserToolSessionApprovalReadKind,
3376}
3377
3378#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3380#[serde(rename_all = "camelCase")]
3381pub struct UserToolSessionApprovalWrite {
3382 pub kind: UserToolSessionApprovalWriteKind,
3384}
3385
3386#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3388#[serde(rename_all = "camelCase")]
3389pub struct UserToolSessionApprovalMcp {
3390 pub kind: UserToolSessionApprovalMcpKind,
3392 pub server_name: String,
3394 pub tool_name: Option<String>,
3396}
3397
3398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3400#[serde(rename_all = "camelCase")]
3401pub struct UserToolSessionApprovalMemory {
3402 pub kind: UserToolSessionApprovalMemoryKind,
3404}
3405
3406#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3408#[serde(rename_all = "camelCase")]
3409pub struct UserToolSessionApprovalCustomTool {
3410 pub kind: UserToolSessionApprovalCustomToolKind,
3412 pub tool_name: String,
3414}
3415
3416#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3418#[serde(rename_all = "camelCase")]
3419pub struct UserToolSessionApprovalExtensionManagement {
3420 pub kind: UserToolSessionApprovalExtensionManagementKind,
3422 #[serde(skip_serializing_if = "Option::is_none")]
3424 pub operation: Option<String>,
3425}
3426
3427#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3429#[serde(rename_all = "camelCase")]
3430pub struct UserToolSessionApprovalExtensionPermissionAccess {
3431 pub extension_name: String,
3433 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
3435}
3436
3437#[derive(Debug, Clone, Serialize, Deserialize)]
3439#[serde(rename_all = "camelCase")]
3440pub struct PermissionApprovedForSession {
3441 pub approval: UserToolSessionApproval,
3443 pub kind: PermissionApprovedForSessionKind,
3445}
3446
3447#[derive(Debug, Clone, Serialize, Deserialize)]
3449#[serde(rename_all = "camelCase")]
3450pub struct PermissionApprovedForLocation {
3451 pub approval: UserToolSessionApproval,
3453 pub kind: PermissionApprovedForLocationKind,
3455 pub location_key: String,
3457}
3458
3459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3461#[serde(rename_all = "camelCase")]
3462pub struct PermissionCancelled {
3463 pub kind: PermissionCancelledKind,
3465 #[serde(skip_serializing_if = "Option::is_none")]
3467 pub reason: Option<String>,
3468}
3469
3470#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3472#[serde(rename_all = "camelCase")]
3473pub struct PermissionRule {
3474 pub argument: Option<String>,
3476 pub kind: String,
3478}
3479
3480#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3482#[serde(rename_all = "camelCase")]
3483pub struct PermissionDeniedByRules {
3484 pub kind: PermissionDeniedByRulesKind,
3486 pub rules: Vec<PermissionRule>,
3488}
3489
3490#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3492#[serde(rename_all = "camelCase")]
3493pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
3494 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
3496}
3497
3498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3500#[serde(rename_all = "camelCase")]
3501pub struct PermissionDeniedInteractivelyByUser {
3502 #[serde(skip_serializing_if = "Option::is_none")]
3504 pub feedback: Option<String>,
3505 #[serde(skip_serializing_if = "Option::is_none")]
3507 pub force_reject: Option<bool>,
3508 pub kind: PermissionDeniedInteractivelyByUserKind,
3510}
3511
3512#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3514#[serde(rename_all = "camelCase")]
3515pub struct PermissionDeniedByContentExclusionPolicy {
3516 pub kind: PermissionDeniedByContentExclusionPolicyKind,
3518 pub message: String,
3520 pub path: String,
3522}
3523
3524#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3526#[serde(rename_all = "camelCase")]
3527pub struct PermissionDeniedByPermissionRequestHook {
3528 #[serde(skip_serializing_if = "Option::is_none")]
3530 pub interrupt: Option<bool>,
3531 pub kind: PermissionDeniedByPermissionRequestHookKind,
3533 #[serde(skip_serializing_if = "Option::is_none")]
3535 pub message: Option<String>,
3536}
3537
3538#[derive(Debug, Clone, Serialize, Deserialize)]
3540#[serde(rename_all = "camelCase")]
3541pub struct PermissionCompletedData {
3542 pub request_id: RequestId,
3544 pub result: PermissionResult,
3546 #[serde(skip_serializing_if = "Option::is_none")]
3548 pub tool_call_id: Option<String>,
3549}
3550
3551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3553#[serde(rename_all = "camelCase")]
3554pub struct UserInputRequestedData {
3555 #[serde(skip_serializing_if = "Option::is_none")]
3557 pub allow_freeform: Option<bool>,
3558 #[serde(skip_serializing_if = "Option::is_none")]
3560 pub choices: Option<Vec<String>>,
3561 pub question: String,
3563 pub request_id: RequestId,
3565 #[serde(skip_serializing_if = "Option::is_none")]
3567 pub tool_call_id: Option<String>,
3568}
3569
3570#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3572#[serde(rename_all = "camelCase")]
3573pub struct UserInputCompletedData {
3574 #[serde(skip_serializing_if = "Option::is_none")]
3576 pub answer: Option<String>,
3577 pub request_id: RequestId,
3579 #[serde(skip_serializing_if = "Option::is_none")]
3581 pub was_freeform: Option<bool>,
3582}
3583
3584#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3586#[serde(rename_all = "camelCase")]
3587pub struct ElicitationRequestedSchema {
3588 pub properties: HashMap<String, serde_json::Value>,
3590 #[serde(skip_serializing_if = "Option::is_none")]
3592 pub required: Option<Vec<String>>,
3593 pub r#type: ElicitationRequestedSchemaType,
3595}
3596
3597#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3599#[serde(rename_all = "camelCase")]
3600pub struct ElicitationRequestedData {
3601 #[serde(skip_serializing_if = "Option::is_none")]
3603 pub elicitation_source: Option<String>,
3604 pub message: String,
3606 #[serde(skip_serializing_if = "Option::is_none")]
3608 pub mode: Option<ElicitationRequestedMode>,
3609 #[serde(skip_serializing_if = "Option::is_none")]
3611 pub requested_schema: Option<ElicitationRequestedSchema>,
3612 pub request_id: RequestId,
3614 #[serde(skip_serializing_if = "Option::is_none")]
3616 pub tool_call_id: Option<String>,
3617 #[serde(skip_serializing_if = "Option::is_none")]
3619 pub url: Option<String>,
3620}
3621
3622#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3624#[serde(rename_all = "camelCase")]
3625pub struct ElicitationCompletedData {
3626 #[serde(skip_serializing_if = "Option::is_none")]
3628 pub action: Option<ElicitationCompletedAction>,
3629 #[serde(skip_serializing_if = "Option::is_none")]
3631 pub content: Option<HashMap<String, serde_json::Value>>,
3632 pub request_id: RequestId,
3634}
3635
3636#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3638#[serde(rename_all = "camelCase")]
3639pub struct SamplingRequestedData {
3640 pub mcp_request_id: serde_json::Value,
3642 pub request_id: RequestId,
3644 pub server_name: String,
3646}
3647
3648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3650#[serde(rename_all = "camelCase")]
3651pub struct SamplingCompletedData {
3652 pub request_id: RequestId,
3654}
3655
3656#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3658#[serde(rename_all = "camelCase")]
3659pub struct McpOauthRequiredStaticClientConfig {
3660 pub client_id: String,
3662 #[serde(skip_serializing_if = "Option::is_none")]
3664 pub client_secret: Option<String>,
3665 #[serde(skip_serializing_if = "Option::is_none")]
3667 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3668 #[serde(skip_serializing_if = "Option::is_none")]
3670 pub public_client: Option<bool>,
3671}
3672
3673#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3675#[serde(rename_all = "camelCase")]
3676pub struct McpOauthWWWAuthenticateParams {
3677 #[serde(skip_serializing_if = "Option::is_none")]
3679 pub error: Option<String>,
3680 #[serde(skip_serializing_if = "Option::is_none")]
3682 pub resource_metadata_url: Option<String>,
3683 #[serde(skip_serializing_if = "Option::is_none")]
3685 pub scope: Option<String>,
3686}
3687
3688#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3690#[serde(rename_all = "camelCase")]
3691pub struct McpOauthRequiredData {
3692 pub reason: McpOauthRequestReason,
3694 pub request_id: RequestId,
3696 #[serde(skip_serializing_if = "Option::is_none")]
3698 pub resource_metadata: Option<String>,
3699 pub server_name: String,
3701 pub server_url: String,
3703 #[serde(skip_serializing_if = "Option::is_none")]
3705 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3706 #[serde(skip_serializing_if = "Option::is_none")]
3708 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3709}
3710
3711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3713#[serde(rename_all = "camelCase")]
3714pub struct McpOauthCompletedData {
3715 pub outcome: McpOauthCompletionOutcome,
3717 pub request_id: RequestId,
3719}
3720
3721#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3723#[serde(rename_all = "camelCase")]
3724pub struct McpHeadersRefreshRequiredData {
3725 pub reason: McpHeadersRefreshRequiredReason,
3727 pub request_id: RequestId,
3729 pub server_name: String,
3731 pub server_url: String,
3733}
3734
3735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3737#[serde(rename_all = "camelCase")]
3738pub struct McpHeadersRefreshCompletedData {
3739 pub outcome: McpHeadersRefreshCompletedOutcome,
3741 pub request_id: RequestId,
3743}
3744
3745#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3747#[serde(rename_all = "camelCase")]
3748pub struct SessionCustomNotificationData {
3749 pub name: String,
3751 pub payload: serde_json::Value,
3753 pub source: String,
3755 #[serde(skip_serializing_if = "Option::is_none")]
3757 pub subject: Option<HashMap<String, String>>,
3758 #[serde(skip_serializing_if = "Option::is_none")]
3760 pub version: Option<i64>,
3761}
3762
3763#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3765#[serde(rename_all = "camelCase")]
3766pub struct ExternalToolRequestedData {
3767 #[serde(skip_serializing_if = "Option::is_none")]
3769 pub arguments: Option<serde_json::Value>,
3770 pub request_id: RequestId,
3772 pub session_id: SessionId,
3774 pub tool_call_id: String,
3776 pub tool_name: String,
3778 #[serde(skip_serializing_if = "Option::is_none")]
3780 pub traceparent: Option<String>,
3781 #[serde(skip_serializing_if = "Option::is_none")]
3783 pub tracestate: Option<String>,
3784 #[serde(skip_serializing_if = "Option::is_none")]
3786 pub working_directory: Option<String>,
3787}
3788
3789#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3791#[serde(rename_all = "camelCase")]
3792pub struct ExternalToolCompletedData {
3793 pub request_id: RequestId,
3795}
3796
3797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3799#[serde(rename_all = "camelCase")]
3800pub struct CommandQueuedData {
3801 pub command: String,
3803 pub request_id: RequestId,
3805}
3806
3807#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3809#[serde(rename_all = "camelCase")]
3810pub struct CommandExecuteData {
3811 pub args: String,
3813 pub command: String,
3815 pub command_name: String,
3817 pub request_id: RequestId,
3819}
3820
3821#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3823#[serde(rename_all = "camelCase")]
3824pub struct CommandCompletedData {
3825 pub request_id: RequestId,
3827}
3828
3829#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3831#[serde(rename_all = "camelCase")]
3832pub struct AutoModeSwitchRequestedData {
3833 #[serde(skip_serializing_if = "Option::is_none")]
3835 pub error_code: Option<String>,
3836 pub request_id: RequestId,
3838 #[serde(skip_serializing_if = "Option::is_none")]
3840 pub retry_after_seconds: Option<i64>,
3841}
3842
3843#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3845#[serde(rename_all = "camelCase")]
3846pub struct AutoModeSwitchCompletedData {
3847 pub request_id: RequestId,
3849 pub response: AutoModeSwitchResponse,
3851}
3852
3853#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3855#[serde(rename_all = "camelCase")]
3856pub struct SessionLimitsExhaustedRequestedData {
3857 pub max_ai_credits: f64,
3859 pub request_id: RequestId,
3861 pub used_ai_credits: f64,
3863}
3864
3865#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3867#[serde(rename_all = "camelCase")]
3868pub struct SessionLimitsExhaustedResponse {
3869 pub action: SessionLimitsExhaustedResponseAction,
3871 #[serde(skip_serializing_if = "Option::is_none")]
3873 pub additional_ai_credits: Option<f64>,
3874 #[serde(skip_serializing_if = "Option::is_none")]
3876 pub max_ai_credits: Option<f64>,
3877}
3878
3879#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3881#[serde(rename_all = "camelCase")]
3882pub struct SessionLimitsExhaustedCompletedData {
3883 pub request_id: RequestId,
3885 pub response: SessionLimitsExhaustedResponse,
3887}
3888
3889#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3898#[serde(rename_all = "camelCase")]
3899pub struct SessionAutoModeResolvedData {
3900 #[serde(skip_serializing_if = "Option::is_none")]
3902 pub candidate_models: Option<Vec<String>>,
3903 #[serde(skip_serializing_if = "Option::is_none")]
3905 pub category_scores: Option<HashMap<String, f64>>,
3906 pub chosen_model: String,
3908 #[serde(skip_serializing_if = "Option::is_none")]
3910 pub confidence: Option<f64>,
3911 #[serde(skip_serializing_if = "Option::is_none")]
3913 pub predicted_label: Option<String>,
3914 #[serde(skip_serializing_if = "Option::is_none")]
3916 pub reasoning_bucket: Option<AutoModeResolvedReasoningBucket>,
3917}
3918
3919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3921#[serde(rename_all = "camelCase")]
3922pub struct CommandsChangedCommand {
3923 #[serde(skip_serializing_if = "Option::is_none")]
3925 pub description: Option<String>,
3926 pub name: String,
3928}
3929
3930#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3932#[serde(rename_all = "camelCase")]
3933pub struct CommandsChangedData {
3934 pub commands: Vec<CommandsChangedCommand>,
3936}
3937
3938#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3940#[serde(rename_all = "camelCase")]
3941pub struct CapabilitiesChangedUI {
3942 #[serde(skip_serializing_if = "Option::is_none")]
3944 pub canvases: Option<bool>,
3945 #[serde(skip_serializing_if = "Option::is_none")]
3947 pub elicitation: Option<bool>,
3948 #[serde(skip_serializing_if = "Option::is_none")]
3950 pub mcp_apps: Option<bool>,
3951}
3952
3953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3955#[serde(rename_all = "camelCase")]
3956pub struct CapabilitiesChangedData {
3957 #[serde(skip_serializing_if = "Option::is_none")]
3959 pub ui: Option<CapabilitiesChangedUI>,
3960}
3961
3962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3964#[serde(rename_all = "camelCase")]
3965pub struct ExitPlanModeRequestedData {
3966 pub actions: Vec<ExitPlanModeAction>,
3968 pub plan_content: String,
3970 pub recommended_action: ExitPlanModeAction,
3972 pub request_id: RequestId,
3974 pub summary: String,
3976}
3977
3978#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3980#[serde(rename_all = "camelCase")]
3981pub struct ExitPlanModeCompletedData {
3982 #[serde(skip_serializing_if = "Option::is_none")]
3984 pub approved: Option<bool>,
3985 #[serde(skip_serializing_if = "Option::is_none")]
3987 pub auto_approve_edits: Option<bool>,
3988 #[serde(skip_serializing_if = "Option::is_none")]
3990 pub feedback: Option<String>,
3991 pub request_id: RequestId,
3993 #[serde(skip_serializing_if = "Option::is_none")]
3995 pub selected_action: Option<ExitPlanModeAction>,
3996}
3997
3998#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4000#[serde(rename_all = "camelCase")]
4001pub struct SessionToolsUpdatedData {
4002 pub model: String,
4004}
4005
4006#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4008#[serde(rename_all = "camelCase")]
4009pub struct SessionBackgroundTasksChangedData {}
4010
4011#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4013#[serde(rename_all = "camelCase")]
4014pub struct SkillsLoadedSkill {
4015 #[serde(skip_serializing_if = "Option::is_none")]
4017 pub argument_hint: Option<String>,
4018 pub description: String,
4020 pub enabled: bool,
4022 pub name: String,
4024 #[serde(skip_serializing_if = "Option::is_none")]
4026 pub path: Option<String>,
4027 pub source: SkillSource,
4029 pub user_invocable: bool,
4031}
4032
4033#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4035#[serde(rename_all = "camelCase")]
4036pub struct SessionSkillsLoadedData {
4037 pub skills: Vec<SkillsLoadedSkill>,
4039}
4040
4041#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4043#[serde(rename_all = "camelCase")]
4044pub struct CustomAgentsUpdatedAgent {
4045 pub description: String,
4047 pub display_name: String,
4049 pub id: String,
4051 #[serde(skip_serializing_if = "Option::is_none")]
4053 pub model: Option<String>,
4054 pub name: String,
4056 pub source: String,
4058 pub tools: Option<Vec<String>>,
4060 pub user_invocable: bool,
4062}
4063
4064#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4066#[serde(rename_all = "camelCase")]
4067pub struct SessionCustomAgentsUpdatedData {
4068 pub agents: Vec<CustomAgentsUpdatedAgent>,
4070 pub errors: Vec<String>,
4072 pub warnings: Vec<String>,
4074}
4075
4076#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4078#[serde(rename_all = "camelCase")]
4079pub struct McpServersLoadedServer {
4080 #[serde(skip_serializing_if = "Option::is_none")]
4082 pub error: Option<String>,
4083 pub name: String,
4085 #[serde(skip_serializing_if = "Option::is_none")]
4087 pub plugin_name: Option<String>,
4088 #[serde(skip_serializing_if = "Option::is_none")]
4090 pub plugin_version: Option<String>,
4091 #[serde(skip_serializing_if = "Option::is_none")]
4093 pub source: Option<McpServerSource>,
4094 pub status: McpServerStatus,
4096 #[serde(skip_serializing_if = "Option::is_none")]
4098 pub transport: Option<McpServerTransport>,
4099}
4100
4101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4103#[serde(rename_all = "camelCase")]
4104pub struct SessionMcpServersLoadedData {
4105 pub servers: Vec<McpServersLoadedServer>,
4107}
4108
4109#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4111#[serde(rename_all = "camelCase")]
4112pub struct SessionMcpServerStatusChangedData {
4113 #[serde(skip_serializing_if = "Option::is_none")]
4115 pub error: Option<String>,
4116 pub server_name: String,
4118 pub status: McpServerStatus,
4120}
4121
4122#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4124#[serde(rename_all = "camelCase")]
4125pub struct McpToolsListChangedData {
4126 pub server_name: String,
4128}
4129
4130#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4132#[serde(rename_all = "camelCase")]
4133pub struct McpResourcesListChangedData {
4134 pub server_name: String,
4136}
4137
4138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4140#[serde(rename_all = "camelCase")]
4141pub struct McpPromptsListChangedData {
4142 pub server_name: String,
4144}
4145
4146#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4148#[serde(rename_all = "camelCase")]
4149pub struct ExtensionsLoadedExtension {
4150 pub id: String,
4152 pub name: String,
4154 pub source: ExtensionsLoadedExtensionSource,
4156 pub status: ExtensionsLoadedExtensionStatus,
4158}
4159
4160#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4162#[serde(rename_all = "camelCase")]
4163pub struct SessionExtensionsLoadedData {
4164 pub extensions: Vec<ExtensionsLoadedExtension>,
4166}
4167
4168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4177#[serde(rename_all = "camelCase")]
4178pub struct SessionCanvasOpenedData {
4179 pub canvas_id: String,
4181 pub extension_id: String,
4183 #[serde(skip_serializing_if = "Option::is_none")]
4185 pub extension_name: Option<String>,
4186 #[serde(skip_serializing_if = "Option::is_none")]
4188 pub icon: Option<String>,
4189 #[serde(skip_serializing_if = "Option::is_none")]
4191 pub input: Option<serde_json::Value>,
4192 pub instance_id: String,
4194 #[serde(skip_serializing_if = "Option::is_none")]
4196 pub status: Option<String>,
4197 #[serde(skip_serializing_if = "Option::is_none")]
4199 pub title: Option<String>,
4200 #[serde(skip_serializing_if = "Option::is_none")]
4202 pub url: Option<String>,
4203}
4204
4205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4214#[serde(rename_all = "camelCase")]
4215pub struct CanvasRegistryChangedCanvasAction {
4216 #[serde(skip_serializing_if = "Option::is_none")]
4218 pub description: Option<String>,
4219 #[serde(skip_serializing_if = "Option::is_none")]
4221 pub input_schema: Option<serde_json::Value>,
4222 pub name: String,
4224}
4225
4226#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4235#[serde(rename_all = "camelCase")]
4236pub struct CanvasRegistryChangedCanvas {
4237 #[serde(skip_serializing_if = "Option::is_none")]
4239 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
4240 pub canvas_id: String,
4242 pub description: String,
4244 pub display_name: String,
4246 pub extension_id: String,
4248 #[serde(skip_serializing_if = "Option::is_none")]
4250 pub extension_name: Option<String>,
4251 #[serde(skip_serializing_if = "Option::is_none")]
4253 pub icon: Option<String>,
4254 #[serde(skip_serializing_if = "Option::is_none")]
4256 pub input_schema: Option<serde_json::Value>,
4257}
4258
4259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4268#[serde(rename_all = "camelCase")]
4269pub struct SessionCanvasRegistryChangedData {
4270 pub canvases: Vec<CanvasRegistryChangedCanvas>,
4272}
4273
4274#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4283#[serde(rename_all = "camelCase")]
4284pub struct SessionCanvasClosedData {
4285 pub canvas_id: String,
4287 pub extension_id: String,
4289 pub instance_id: String,
4291}
4292
4293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4302#[serde(rename_all = "camelCase")]
4303pub struct SessionCanvasUnavailableData {
4304 pub canvas_id: String,
4306 pub extension_id: String,
4308 pub instance_id: String,
4310}
4311
4312#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4321#[serde(rename_all = "camelCase")]
4322pub struct SessionCanvasRecordedData {
4323 pub canvas_id: String,
4325 pub extension_id: String,
4327 #[serde(skip_serializing_if = "Option::is_none")]
4329 pub input: Option<serde_json::Value>,
4330 pub instance_id: String,
4332 #[serde(skip_serializing_if = "Option::is_none")]
4334 pub title: Option<String>,
4335}
4336
4337#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4346#[serde(rename_all = "camelCase")]
4347pub struct SessionCanvasRemovedData {
4348 pub canvas_id: String,
4350 pub extension_id: String,
4352 pub instance_id: String,
4354}
4355
4356#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4358#[serde(rename_all = "camelCase")]
4359pub struct SessionExtensionsAttachmentsPushedData {
4360 pub attachments: Vec<serde_json::Value>,
4362}
4363
4364#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4366#[serde(rename_all = "camelCase")]
4367pub struct McpAppToolCallCompleteError {
4368 pub message: String,
4370}
4371
4372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4374#[serde(rename_all = "camelCase")]
4375pub struct McpAppToolCallCompleteToolMetaUI {
4376 #[serde(skip_serializing_if = "Option::is_none")]
4378 pub resource_uri: Option<String>,
4379 #[serde(skip_serializing_if = "Option::is_none")]
4381 pub visibility: Option<Vec<String>>,
4382}
4383
4384#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4386#[serde(rename_all = "camelCase")]
4387pub struct McpAppToolCallCompleteToolMeta {
4388 #[serde(skip_serializing_if = "Option::is_none")]
4390 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
4391}
4392
4393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4395#[serde(rename_all = "camelCase")]
4396pub struct McpAppToolCallCompleteData {
4397 #[serde(skip_serializing_if = "Option::is_none")]
4399 pub arguments: Option<HashMap<String, serde_json::Value>>,
4400 pub duration_ms: f64,
4402 #[serde(skip_serializing_if = "Option::is_none")]
4404 pub error: Option<McpAppToolCallCompleteError>,
4405 #[serde(skip_serializing_if = "Option::is_none")]
4407 pub result: Option<HashMap<String, serde_json::Value>>,
4408 pub server_name: String,
4410 pub success: bool,
4412 #[serde(skip_serializing_if = "Option::is_none")]
4414 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
4415 pub tool_name: String,
4417}
4418
4419#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4421pub enum WorkingDirectoryContextHostType {
4422 #[serde(rename = "github")]
4424 GitHub,
4425 #[serde(rename = "ado")]
4427 Ado,
4428 #[default]
4430 #[serde(other)]
4431 Unknown,
4432}
4433
4434#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4436pub enum ContextTier {
4437 #[serde(rename = "default")]
4439 Default,
4440 #[serde(rename = "long_context")]
4442 LongContext,
4443 #[default]
4445 #[serde(other)]
4446 Unknown,
4447}
4448
4449#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4451pub enum ReasoningSummary {
4452 #[serde(rename = "none")]
4454 None,
4455 #[serde(rename = "concise")]
4457 Concise,
4458 #[serde(rename = "detailed")]
4460 Detailed,
4461 #[default]
4463 #[serde(other)]
4464 Unknown,
4465}
4466
4467#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4469pub enum Verbosity {
4470 #[serde(rename = "low")]
4472 Low,
4473 #[serde(rename = "medium")]
4475 Medium,
4476 #[serde(rename = "high")]
4478 High,
4479 #[default]
4481 #[serde(other)]
4482 Unknown,
4483}
4484
4485#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4487pub enum AutopilotObjectiveChangedOperation {
4488 #[serde(rename = "create")]
4490 Create,
4491 #[serde(rename = "update")]
4493 Update,
4494 #[serde(rename = "delete")]
4496 Delete,
4497 #[default]
4499 #[serde(other)]
4500 Unknown,
4501}
4502
4503#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4505pub enum AutopilotObjectiveChangedStatus {
4506 #[serde(rename = "active")]
4508 Active,
4509 #[serde(rename = "paused")]
4511 Paused,
4512 #[serde(rename = "cap_reached")]
4514 CapReached,
4515 #[serde(rename = "completed")]
4517 Completed,
4518 #[default]
4520 #[serde(other)]
4521 Unknown,
4522}
4523
4524#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4526pub enum SessionMode {
4527 #[serde(rename = "interactive")]
4529 Interactive,
4530 #[serde(rename = "plan")]
4532 Plan,
4533 #[serde(rename = "autopilot")]
4535 Autopilot,
4536 #[default]
4538 #[serde(other)]
4539 Unknown,
4540}
4541
4542#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4551pub enum PermissionAllowAllMode {
4552 #[serde(rename = "off")]
4554 Off,
4555 #[serde(rename = "on")]
4557 On,
4558 #[serde(rename = "auto")]
4560 Auto,
4561 #[default]
4563 #[serde(other)]
4564 Unknown,
4565}
4566
4567#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4569pub enum PlanChangedOperation {
4570 #[serde(rename = "create")]
4572 Create,
4573 #[serde(rename = "update")]
4575 Update,
4576 #[serde(rename = "delete")]
4578 Delete,
4579 #[default]
4581 #[serde(other)]
4582 Unknown,
4583}
4584
4585#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4587pub enum WorkspaceFileChangedOperation {
4588 #[serde(rename = "create")]
4590 Create,
4591 #[serde(rename = "update")]
4593 Update,
4594 #[default]
4596 #[serde(other)]
4597 Unknown,
4598}
4599
4600#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4602pub enum HandoffSourceType {
4603 #[serde(rename = "remote")]
4605 Remote,
4606 #[serde(rename = "local")]
4608 Local,
4609 #[default]
4611 #[serde(other)]
4612 Unknown,
4613}
4614
4615#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4617pub enum ShutdownType {
4618 #[serde(rename = "routine")]
4620 Routine,
4621 #[serde(rename = "error")]
4623 Error,
4624 #[default]
4626 #[serde(other)]
4627 Unknown,
4628}
4629
4630#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4632pub enum UserMessageAgentMode {
4633 #[serde(rename = "interactive")]
4635 Interactive,
4636 #[serde(rename = "plan")]
4638 Plan,
4639 #[serde(rename = "autopilot")]
4641 Autopilot,
4642 #[serde(rename = "shell")]
4644 Shell,
4645 #[default]
4647 #[serde(other)]
4648 Unknown,
4649}
4650
4651#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4653pub enum UserMessageDelivery {
4654 #[serde(rename = "idle")]
4656 Idle,
4657 #[serde(rename = "steering")]
4659 Steering,
4660 #[serde(rename = "queued")]
4662 Queued,
4663 #[default]
4665 #[serde(other)]
4666 Unknown,
4667}
4668
4669#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4671pub enum AssistantMessageToolRequestType {
4672 #[serde(rename = "function")]
4674 Function,
4675 #[serde(rename = "custom")]
4677 Custom,
4678 #[default]
4680 #[serde(other)]
4681 Unknown,
4682}
4683
4684#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4693pub enum CitationProvider {
4694 #[serde(rename = "anthropic")]
4696 Anthropic,
4697 #[serde(rename = "openai")]
4699 Openai,
4700 #[serde(rename = "client")]
4702 Client,
4703 #[default]
4705 #[serde(other)]
4706 Unknown,
4707}
4708
4709#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4711pub enum AssistantUsageApiEndpoint {
4712 #[serde(rename = "/chat/completions")]
4714 ChatCompletions,
4715 #[serde(rename = "/v1/messages")]
4717 V1Messages,
4718 #[serde(rename = "/responses")]
4720 Responses,
4721 #[serde(rename = "ws:/responses")]
4723 WsResponses,
4724 #[default]
4726 #[serde(other)]
4727 Unknown,
4728}
4729
4730#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4732pub enum ModelCallFailureBadRequestKind {
4733 #[serde(rename = "bodyless")]
4735 Bodyless,
4736 #[serde(rename = "structured_error")]
4738 StructuredError,
4739 #[default]
4741 #[serde(other)]
4742 Unknown,
4743}
4744
4745#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4747pub enum ModelCallFailureSource {
4748 #[serde(rename = "top_level")]
4750 TopLevel,
4751 #[serde(rename = "subagent")]
4753 Subagent,
4754 #[serde(rename = "mcp_sampling")]
4756 McpSampling,
4757 #[default]
4759 #[serde(other)]
4760 Unknown,
4761}
4762
4763#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4765pub enum AbortReason {
4766 #[serde(rename = "user_initiated")]
4768 UserInitiated,
4769 #[serde(rename = "remote_command")]
4771 RemoteCommand,
4772 #[serde(rename = "user_abort")]
4774 UserAbort,
4775 #[default]
4777 #[serde(other)]
4778 Unknown,
4779}
4780
4781#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4783pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
4784 #[serde(rename = "model")]
4786 Model,
4787 #[serde(rename = "app")]
4789 App,
4790 #[default]
4792 #[serde(other)]
4793 Unknown,
4794}
4795
4796#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4798pub enum ToolExecutionCompleteContentTextType {
4799 #[serde(rename = "text")]
4800 #[default]
4801 Text,
4802}
4803
4804#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4806pub enum ToolExecutionCompleteContentTerminalType {
4807 #[serde(rename = "terminal")]
4808 #[default]
4809 Terminal,
4810}
4811
4812#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4814pub enum ToolExecutionCompleteContentShellExitType {
4815 #[serde(rename = "shell_exit")]
4816 #[default]
4817 ShellExit,
4818}
4819
4820#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4822pub enum ToolExecutionCompleteContentImageType {
4823 #[serde(rename = "image")]
4824 #[default]
4825 Image,
4826}
4827
4828#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4830pub enum ToolExecutionCompleteContentAudioType {
4831 #[serde(rename = "audio")]
4832 #[default]
4833 Audio,
4834}
4835
4836#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4838pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4839 #[serde(rename = "light")]
4841 Light,
4842 #[serde(rename = "dark")]
4844 Dark,
4845 #[default]
4847 #[serde(other)]
4848 Unknown,
4849}
4850
4851#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4853pub enum ToolExecutionCompleteContentResourceLinkType {
4854 #[serde(rename = "resource_link")]
4855 #[default]
4856 ResourceLink,
4857}
4858
4859#[derive(Debug, Clone, Serialize, Deserialize)]
4861#[serde(untagged)]
4862pub enum ToolExecutionCompleteContentResourceDetails {
4863 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4864 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4865}
4866
4867#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4869pub enum ToolExecutionCompleteContentResourceType {
4870 #[serde(rename = "resource")]
4871 #[default]
4872 Resource,
4873}
4874
4875#[derive(Debug, Clone, Serialize, Deserialize)]
4877#[serde(untagged)]
4878pub enum ToolExecutionCompleteContent {
4879 Text(ToolExecutionCompleteContentText),
4880 Terminal(ToolExecutionCompleteContentTerminal),
4881 ShellExit(ToolExecutionCompleteContentShellExit),
4882 Image(ToolExecutionCompleteContentImage),
4883 Audio(ToolExecutionCompleteContentAudio),
4884 ResourceLink(ToolExecutionCompleteContentResourceLink),
4885 Resource(ToolExecutionCompleteContentResource),
4886}
4887
4888#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4890pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4891 #[serde(rename = "model")]
4893 Model,
4894 #[serde(rename = "app")]
4896 App,
4897 #[default]
4899 #[serde(other)]
4900 Unknown,
4901}
4902
4903#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4905pub enum SkillInvokedTrigger {
4906 #[serde(rename = "user-invoked")]
4908 UserInvoked,
4909 #[serde(rename = "agent-invoked")]
4911 AgentInvoked,
4912 #[serde(rename = "context-load")]
4914 ContextLoad,
4915 #[default]
4917 #[serde(other)]
4918 Unknown,
4919}
4920
4921#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4923pub enum BinaryAssetType {
4924 #[serde(rename = "image")]
4926 Image,
4927 #[serde(rename = "resource")]
4929 Resource,
4930 #[default]
4932 #[serde(other)]
4933 Unknown,
4934}
4935
4936#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4938pub enum SystemMessageRole {
4939 #[serde(rename = "system")]
4941 System,
4942 #[serde(rename = "developer")]
4944 Developer,
4945 #[default]
4947 #[serde(other)]
4948 Unknown,
4949}
4950
4951#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4953pub enum PermissionRequestShellKind {
4954 #[serde(rename = "shell")]
4955 #[default]
4956 Shell,
4957}
4958
4959#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4961pub enum PermissionRequestWriteKind {
4962 #[serde(rename = "write")]
4963 #[default]
4964 Write,
4965}
4966
4967#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4969pub enum PermissionRequestReadKind {
4970 #[serde(rename = "read")]
4971 #[default]
4972 Read,
4973}
4974
4975#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4977pub enum PermissionRequestMcpKind {
4978 #[serde(rename = "mcp")]
4979 #[default]
4980 Mcp,
4981}
4982
4983#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4985pub enum PermissionRequestUrlKind {
4986 #[serde(rename = "url")]
4987 #[default]
4988 Url,
4989}
4990
4991#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4993pub enum PermissionRequestMemoryAction {
4994 #[serde(rename = "store")]
4996 Store,
4997 #[serde(rename = "vote")]
4999 Vote,
5000 #[default]
5002 #[serde(other)]
5003 Unknown,
5004}
5005
5006#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5008pub enum PermissionRequestMemoryDirection {
5009 #[serde(rename = "upvote")]
5011 Upvote,
5012 #[serde(rename = "downvote")]
5014 Downvote,
5015 #[default]
5017 #[serde(other)]
5018 Unknown,
5019}
5020
5021#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5023pub enum PermissionRequestMemoryKind {
5024 #[serde(rename = "memory")]
5025 #[default]
5026 Memory,
5027}
5028
5029#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5031pub enum PermissionRequestCustomToolKind {
5032 #[serde(rename = "custom-tool")]
5033 #[default]
5034 CustomTool,
5035}
5036
5037#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5039pub enum PermissionRequestHookKind {
5040 #[serde(rename = "hook")]
5041 #[default]
5042 Hook,
5043}
5044
5045#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5047pub enum PermissionRequestExtensionManagementKind {
5048 #[serde(rename = "extension-management")]
5049 #[default]
5050 ExtensionManagement,
5051}
5052
5053#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5055pub enum PermissionRequestExtensionPermissionAccessKind {
5056 #[serde(rename = "extension-permission-access")]
5057 #[default]
5058 ExtensionPermissionAccess,
5059}
5060
5061#[derive(Debug, Clone, Serialize, Deserialize)]
5063#[serde(untagged)]
5064pub enum PermissionRequest {
5065 Shell(PermissionRequestShell),
5066 Write(PermissionRequestWrite),
5067 Read(PermissionRequestRead),
5068 Mcp(PermissionRequestMcp),
5069 Url(PermissionRequestUrl),
5070 Memory(PermissionRequestMemory),
5071 CustomTool(PermissionRequestCustomTool),
5072 Hook(PermissionRequestHook),
5073 ExtensionManagement(PermissionRequestExtensionManagement),
5074 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
5075}
5076
5077#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5086pub enum AutoApprovalRecommendation {
5087 #[serde(rename = "approve")]
5089 Approve,
5090 #[serde(rename = "requireApproval")]
5092 RequireApproval,
5093 #[serde(rename = "excluded")]
5095 Excluded,
5096 #[serde(rename = "error")]
5098 Error,
5099 #[default]
5101 #[serde(other)]
5102 Unknown,
5103}
5104
5105#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5107pub enum PermissionPromptRequestCommandsKind {
5108 #[serde(rename = "commands")]
5109 #[default]
5110 Commands,
5111}
5112
5113#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5115pub enum PermissionPromptRequestWriteKind {
5116 #[serde(rename = "write")]
5117 #[default]
5118 Write,
5119}
5120
5121#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5123pub enum PermissionPromptRequestReadKind {
5124 #[serde(rename = "read")]
5125 #[default]
5126 Read,
5127}
5128
5129#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5131pub enum PermissionPromptRequestMcpKind {
5132 #[serde(rename = "mcp")]
5133 #[default]
5134 Mcp,
5135}
5136
5137#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5139pub enum PermissionPromptRequestUrlKind {
5140 #[serde(rename = "url")]
5141 #[default]
5142 Url,
5143}
5144
5145#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5147pub enum PermissionPromptRequestMemoryKind {
5148 #[serde(rename = "memory")]
5149 #[default]
5150 Memory,
5151}
5152
5153#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5155pub enum PermissionPromptRequestCustomToolKind {
5156 #[serde(rename = "custom-tool")]
5157 #[default]
5158 CustomTool,
5159}
5160
5161#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5163pub enum PermissionPromptRequestPathAccessKind {
5164 #[serde(rename = "read")]
5166 Read,
5167 #[serde(rename = "shell")]
5169 Shell,
5170 #[serde(rename = "write")]
5172 Write,
5173 #[default]
5175 #[serde(other)]
5176 Unknown,
5177}
5178
5179#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5181pub enum PermissionPromptRequestPathKind {
5182 #[serde(rename = "path")]
5183 #[default]
5184 Path,
5185}
5186
5187#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5189pub enum PermissionPromptRequestHookKind {
5190 #[serde(rename = "hook")]
5191 #[default]
5192 Hook,
5193}
5194
5195#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5197pub enum PermissionPromptRequestExtensionManagementKind {
5198 #[serde(rename = "extension-management")]
5199 #[default]
5200 ExtensionManagement,
5201}
5202
5203#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5205pub enum PermissionPromptRequestExtensionPermissionAccessKind {
5206 #[serde(rename = "extension-permission-access")]
5207 #[default]
5208 ExtensionPermissionAccess,
5209}
5210
5211#[derive(Debug, Clone, Serialize, Deserialize)]
5213#[serde(untagged)]
5214pub enum PermissionPromptRequest {
5215 Commands(PermissionPromptRequestCommands),
5216 Write(PermissionPromptRequestWrite),
5217 Read(PermissionPromptRequestRead),
5218 Mcp(PermissionPromptRequestMcp),
5219 Url(PermissionPromptRequestUrl),
5220 Memory(PermissionPromptRequestMemory),
5221 CustomTool(PermissionPromptRequestCustomTool),
5222 Path(PermissionPromptRequestPath),
5223 Hook(PermissionPromptRequestHook),
5224 ExtensionManagement(PermissionPromptRequestExtensionManagement),
5225 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
5226}
5227
5228#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5230pub enum PermissionApprovedKind {
5231 #[serde(rename = "approved")]
5232 #[default]
5233 Approved,
5234}
5235
5236#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5238pub enum UserToolSessionApprovalCommandsKind {
5239 #[serde(rename = "commands")]
5240 #[default]
5241 Commands,
5242}
5243
5244#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5246pub enum UserToolSessionApprovalReadKind {
5247 #[serde(rename = "read")]
5248 #[default]
5249 Read,
5250}
5251
5252#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5254pub enum UserToolSessionApprovalWriteKind {
5255 #[serde(rename = "write")]
5256 #[default]
5257 Write,
5258}
5259
5260#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5262pub enum UserToolSessionApprovalMcpKind {
5263 #[serde(rename = "mcp")]
5264 #[default]
5265 Mcp,
5266}
5267
5268#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5270pub enum UserToolSessionApprovalMemoryKind {
5271 #[serde(rename = "memory")]
5272 #[default]
5273 Memory,
5274}
5275
5276#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5278pub enum UserToolSessionApprovalCustomToolKind {
5279 #[serde(rename = "custom-tool")]
5280 #[default]
5281 CustomTool,
5282}
5283
5284#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5286pub enum UserToolSessionApprovalExtensionManagementKind {
5287 #[serde(rename = "extension-management")]
5288 #[default]
5289 ExtensionManagement,
5290}
5291
5292#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5294pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
5295 #[serde(rename = "extension-permission-access")]
5296 #[default]
5297 ExtensionPermissionAccess,
5298}
5299
5300#[derive(Debug, Clone, Serialize, Deserialize)]
5302#[serde(untagged)]
5303pub enum UserToolSessionApproval {
5304 Commands(UserToolSessionApprovalCommands),
5305 Read(UserToolSessionApprovalRead),
5306 Write(UserToolSessionApprovalWrite),
5307 Mcp(UserToolSessionApprovalMcp),
5308 Memory(UserToolSessionApprovalMemory),
5309 CustomTool(UserToolSessionApprovalCustomTool),
5310 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
5311 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
5312}
5313
5314#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5316pub enum PermissionApprovedForSessionKind {
5317 #[serde(rename = "approved-for-session")]
5318 #[default]
5319 ApprovedForSession,
5320}
5321
5322#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5324pub enum PermissionApprovedForLocationKind {
5325 #[serde(rename = "approved-for-location")]
5326 #[default]
5327 ApprovedForLocation,
5328}
5329
5330#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5332pub enum PermissionCancelledKind {
5333 #[serde(rename = "cancelled")]
5334 #[default]
5335 Cancelled,
5336}
5337
5338#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5340pub enum PermissionDeniedByRulesKind {
5341 #[serde(rename = "denied-by-rules")]
5342 #[default]
5343 DeniedByRules,
5344}
5345
5346#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5348pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
5349 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
5350 #[default]
5351 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
5352}
5353
5354#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5356pub enum PermissionDeniedInteractivelyByUserKind {
5357 #[serde(rename = "denied-interactively-by-user")]
5358 #[default]
5359 DeniedInteractivelyByUser,
5360}
5361
5362#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5364pub enum PermissionDeniedByContentExclusionPolicyKind {
5365 #[serde(rename = "denied-by-content-exclusion-policy")]
5366 #[default]
5367 DeniedByContentExclusionPolicy,
5368}
5369
5370#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5372pub enum PermissionDeniedByPermissionRequestHookKind {
5373 #[serde(rename = "denied-by-permission-request-hook")]
5374 #[default]
5375 DeniedByPermissionRequestHook,
5376}
5377
5378#[derive(Debug, Clone, Serialize, Deserialize)]
5380#[serde(untagged)]
5381pub enum PermissionResult {
5382 Approved(PermissionApproved),
5383 ApprovedForSession(PermissionApprovedForSession),
5384 ApprovedForLocation(PermissionApprovedForLocation),
5385 Cancelled(PermissionCancelled),
5386 DeniedByRules(PermissionDeniedByRules),
5387 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
5388 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
5389 ),
5390 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
5391 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
5392 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
5393}
5394
5395#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5397pub enum ElicitationRequestedMode {
5398 #[serde(rename = "form")]
5400 Form,
5401 #[serde(rename = "url")]
5403 Url,
5404 #[default]
5406 #[serde(other)]
5407 Unknown,
5408}
5409
5410#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5412pub enum ElicitationRequestedSchemaType {
5413 #[serde(rename = "object")]
5414 #[default]
5415 Object,
5416}
5417
5418#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5420pub enum ElicitationCompletedAction {
5421 #[serde(rename = "accept")]
5423 Accept,
5424 #[serde(rename = "decline")]
5426 Decline,
5427 #[serde(rename = "cancel")]
5429 Cancel,
5430 #[default]
5432 #[serde(other)]
5433 Unknown,
5434}
5435
5436#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5438pub enum McpOauthRequestReason {
5439 #[serde(rename = "initial")]
5441 Initial,
5442 #[serde(rename = "refresh")]
5444 Refresh,
5445 #[serde(rename = "reauth")]
5447 Reauth,
5448 #[serde(rename = "upscope")]
5450 Upscope,
5451 #[default]
5453 #[serde(other)]
5454 Unknown,
5455}
5456
5457#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5459pub enum McpOauthRequiredStaticClientConfigGrantType {
5460 #[serde(rename = "client_credentials")]
5461 #[default]
5462 ClientCredentials,
5463}
5464
5465#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5467pub enum McpOauthCompletionOutcome {
5468 #[serde(rename = "token")]
5470 Token,
5471 #[serde(rename = "cancelled")]
5473 Cancelled,
5474 #[default]
5476 #[serde(other)]
5477 Unknown,
5478}
5479
5480#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5482pub enum McpHeadersRefreshRequiredReason {
5483 #[serde(rename = "startup")]
5485 Startup,
5486 #[serde(rename = "ttl-expired")]
5488 TtlExpired,
5489 #[serde(rename = "auth-failed")]
5491 AuthFailed,
5492 #[default]
5494 #[serde(other)]
5495 Unknown,
5496}
5497
5498#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5500pub enum McpHeadersRefreshCompletedOutcome {
5501 #[serde(rename = "headers")]
5503 Headers,
5504 #[serde(rename = "none")]
5506 None,
5507 #[serde(rename = "timeout")]
5509 Timeout,
5510 #[default]
5512 #[serde(other)]
5513 Unknown,
5514}
5515
5516#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5518pub enum AutoModeSwitchResponse {
5519 #[serde(rename = "yes")]
5521 Yes,
5522 #[serde(rename = "yes_always")]
5524 YesAlways,
5525 #[serde(rename = "no")]
5527 No,
5528 #[default]
5530 #[serde(other)]
5531 Unknown,
5532}
5533
5534#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5536pub enum SessionLimitsExhaustedResponseAction {
5537 #[serde(rename = "add")]
5539 Add,
5540 #[serde(rename = "set")]
5542 Set,
5543 #[serde(rename = "unset")]
5545 Unset,
5546 #[serde(rename = "cancel")]
5548 Cancel,
5549 #[default]
5551 #[serde(other)]
5552 Unknown,
5553}
5554
5555#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5557pub enum AutoModeResolvedReasoningBucket {
5558 #[serde(rename = "low")]
5560 Low,
5561 #[serde(rename = "medium")]
5563 Medium,
5564 #[serde(rename = "high")]
5566 High,
5567 #[default]
5569 #[serde(other)]
5570 Unknown,
5571}
5572
5573#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5575pub enum ExitPlanModeAction {
5576 #[serde(rename = "exit_only")]
5578 ExitOnly,
5579 #[serde(rename = "interactive")]
5581 Interactive,
5582 #[serde(rename = "autopilot")]
5584 Autopilot,
5585 #[serde(rename = "autopilot_fleet")]
5587 AutopilotFleet,
5588 #[default]
5590 #[serde(other)]
5591 Unknown,
5592}
5593
5594#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5596pub enum SkillSource {
5597 #[serde(rename = "project")]
5599 Project,
5600 #[serde(rename = "inherited")]
5602 Inherited,
5603 #[serde(rename = "personal-copilot")]
5605 PersonalCopilot,
5606 #[serde(rename = "personal-agents")]
5608 PersonalAgents,
5609 #[serde(rename = "plugin")]
5611 Plugin,
5612 #[serde(rename = "custom")]
5614 Custom,
5615 #[serde(rename = "builtin")]
5617 Builtin,
5618 #[default]
5620 #[serde(other)]
5621 Unknown,
5622}
5623
5624#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5626pub enum McpServerSource {
5627 #[serde(rename = "user")]
5629 User,
5630 #[serde(rename = "workspace")]
5632 Workspace,
5633 #[serde(rename = "plugin")]
5635 Plugin,
5636 #[serde(rename = "builtin")]
5638 Builtin,
5639 #[default]
5641 #[serde(other)]
5642 Unknown,
5643}
5644
5645#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5647pub enum McpServerStatus {
5648 #[serde(rename = "connected")]
5650 Connected,
5651 #[serde(rename = "failed")]
5653 Failed,
5654 #[serde(rename = "needs-auth")]
5656 NeedsAuth,
5657 #[serde(rename = "pending")]
5659 Pending,
5660 #[serde(rename = "disabled")]
5662 Disabled,
5663 #[serde(rename = "not_configured")]
5665 NotConfigured,
5666 #[default]
5668 #[serde(other)]
5669 Unknown,
5670}
5671
5672#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5674pub enum McpServerTransport {
5675 #[serde(rename = "stdio")]
5677 Stdio,
5678 #[serde(rename = "http")]
5680 Http,
5681 #[serde(rename = "sse")]
5683 Sse,
5684 #[serde(rename = "memory")]
5686 Memory,
5687 #[default]
5689 #[serde(other)]
5690 Unknown,
5691}
5692
5693#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5695pub enum ExtensionsLoadedExtensionSource {
5696 #[serde(rename = "project")]
5698 Project,
5699 #[serde(rename = "user")]
5701 User,
5702 #[serde(rename = "plugin")]
5704 Plugin,
5705 #[serde(rename = "session")]
5707 Session,
5708 #[default]
5710 #[serde(other)]
5711 Unknown,
5712}
5713
5714#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5716pub enum ExtensionsLoadedExtensionStatus {
5717 #[serde(rename = "running")]
5719 Running,
5720 #[serde(rename = "disabled")]
5722 Disabled,
5723 #[serde(rename = "failed")]
5725 Failed,
5726 #[serde(rename = "starting")]
5728 Starting,
5729 #[default]
5731 #[serde(other)]
5732 Unknown,
5733}