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")]
2421 pub structured_content: Option<serde_json::Value>,
2422 #[serde(skip_serializing_if = "Option::is_none")]
2424 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2425}
2426
2427#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2429#[serde(rename_all = "camelCase")]
2430pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2431 #[serde(skip_serializing_if = "Option::is_none")]
2433 pub resource_uri: Option<String>,
2434 #[serde(skip_serializing_if = "Option::is_none")]
2436 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2437}
2438
2439#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2441#[serde(rename_all = "camelCase")]
2442pub struct ToolExecutionCompleteToolDescriptionMeta {
2443 #[serde(skip_serializing_if = "Option::is_none")]
2445 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2446}
2447
2448#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2450#[serde(rename_all = "camelCase")]
2451pub struct ToolExecutionCompleteToolDescription {
2452 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2454 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2455 #[serde(skip_serializing_if = "Option::is_none")]
2457 pub description: Option<String>,
2458 pub name: String,
2460}
2461
2462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2464#[serde(rename_all = "camelCase")]
2465pub struct ToolExecutionCompleteData {
2466 #[serde(skip_serializing_if = "Option::is_none")]
2468 pub error: Option<ToolExecutionCompleteError>,
2469 #[serde(skip_serializing_if = "Option::is_none")]
2471 pub interaction_id: Option<String>,
2472 #[serde(skip_serializing_if = "Option::is_none")]
2474 pub is_user_requested: Option<bool>,
2475 #[serde(skip_serializing_if = "Option::is_none")]
2477 pub model: Option<String>,
2478 #[doc(hidden)]
2480 #[deprecated]
2481 #[serde(skip_serializing_if = "Option::is_none")]
2482 pub parent_tool_call_id: Option<String>,
2483 #[serde(skip_serializing_if = "Option::is_none")]
2485 pub result: Option<ToolExecutionCompleteResult>,
2486 #[serde(skip_serializing_if = "Option::is_none")]
2488 pub sandboxed: Option<bool>,
2489 pub success: bool,
2491 pub tool_call_id: String,
2493 #[serde(skip_serializing_if = "Option::is_none")]
2495 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2496 #[serde(skip_serializing_if = "Option::is_none")]
2498 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2499 #[serde(skip_serializing_if = "Option::is_none")]
2501 pub turn_id: Option<String>,
2502}
2503
2504#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2506#[serde(rename_all = "camelCase")]
2507pub struct SkillInvokedData {
2508 #[serde(skip_serializing_if = "Option::is_none")]
2510 pub allowed_tools: Option<Vec<String>>,
2511 pub content: String,
2513 #[serde(skip_serializing_if = "Option::is_none")]
2515 pub description: Option<String>,
2516 #[serde(skip_serializing_if = "Option::is_none")]
2518 pub model: Option<String>,
2519 pub name: String,
2521 pub path: String,
2523 #[serde(skip_serializing_if = "Option::is_none")]
2525 pub plugin_name: Option<String>,
2526 #[serde(skip_serializing_if = "Option::is_none")]
2528 pub plugin_version: Option<String>,
2529 #[serde(skip_serializing_if = "Option::is_none")]
2531 pub source: Option<String>,
2532 #[serde(skip_serializing_if = "Option::is_none")]
2534 pub trigger: Option<SkillInvokedTrigger>,
2535}
2536
2537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2539#[serde(rename_all = "camelCase")]
2540pub struct SubagentStartedData {
2541 pub agent_description: String,
2543 pub agent_display_name: String,
2545 pub agent_name: String,
2547 #[serde(skip_serializing_if = "Option::is_none")]
2549 pub model: Option<String>,
2550 pub tool_call_id: String,
2552}
2553
2554#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2556#[serde(rename_all = "camelCase")]
2557pub struct SubagentCompletedData {
2558 pub agent_display_name: String,
2560 pub agent_name: String,
2562 #[serde(skip_serializing_if = "Option::is_none")]
2564 pub duration_ms: Option<i64>,
2565 #[serde(skip_serializing_if = "Option::is_none")]
2567 pub model: Option<String>,
2568 pub tool_call_id: String,
2570 #[serde(skip_serializing_if = "Option::is_none")]
2572 pub total_tokens: Option<i64>,
2573 #[serde(skip_serializing_if = "Option::is_none")]
2575 pub total_tool_calls: Option<i64>,
2576}
2577
2578#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2580#[serde(rename_all = "camelCase")]
2581pub struct SubagentFailedData {
2582 pub agent_display_name: String,
2584 pub agent_name: String,
2586 #[serde(skip_serializing_if = "Option::is_none")]
2588 pub duration_ms: Option<i64>,
2589 pub error: String,
2591 #[serde(skip_serializing_if = "Option::is_none")]
2593 pub model: Option<String>,
2594 pub tool_call_id: String,
2596 #[serde(skip_serializing_if = "Option::is_none")]
2598 pub total_tokens: Option<i64>,
2599 #[serde(skip_serializing_if = "Option::is_none")]
2601 pub total_tool_calls: Option<i64>,
2602}
2603
2604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2606#[serde(rename_all = "camelCase")]
2607pub struct SubagentSelectedData {
2608 pub agent_display_name: String,
2610 pub agent_name: String,
2612 pub tools: Option<Vec<String>>,
2614}
2615
2616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2618#[serde(rename_all = "camelCase")]
2619pub struct SubagentDeselectedData {}
2620
2621#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2623#[serde(rename_all = "camelCase")]
2624pub struct HookStartData {
2625 pub hook_invocation_id: String,
2627 pub hook_type: String,
2629 #[serde(skip_serializing_if = "Option::is_none")]
2631 pub input: Option<serde_json::Value>,
2632}
2633
2634#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2636#[serde(rename_all = "camelCase")]
2637pub struct HookEndError {
2638 pub message: String,
2640 #[serde(skip_serializing_if = "Option::is_none")]
2642 pub source: Option<String>,
2643 #[serde(skip_serializing_if = "Option::is_none")]
2645 pub stack: Option<String>,
2646}
2647
2648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2650#[serde(rename_all = "camelCase")]
2651pub struct HookEndData {
2652 #[serde(skip_serializing_if = "Option::is_none")]
2654 pub error: Option<HookEndError>,
2655 pub hook_invocation_id: String,
2657 pub hook_type: String,
2659 #[serde(skip_serializing_if = "Option::is_none")]
2661 pub output: Option<serde_json::Value>,
2662 pub success: bool,
2664}
2665
2666#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2668#[serde(rename_all = "camelCase")]
2669pub struct HookProgressData {
2670 pub message: String,
2672 #[serde(skip_serializing_if = "Option::is_none")]
2674 pub temporary: Option<bool>,
2675}
2676
2677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2679#[serde(rename_all = "camelCase")]
2680pub struct SessionBinaryAssetData {
2681 pub asset_id: String,
2683 pub byte_length: i64,
2685 pub data: String,
2687 #[serde(skip_serializing_if = "Option::is_none")]
2689 pub description: Option<String>,
2690 #[serde(skip_serializing_if = "Option::is_none")]
2692 pub metadata: Option<HashMap<String, serde_json::Value>>,
2693 pub mime_type: String,
2695 pub r#type: BinaryAssetType,
2697}
2698
2699#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2701#[serde(rename_all = "camelCase")]
2702pub struct SystemMessageMetadata {
2703 #[serde(skip_serializing_if = "Option::is_none")]
2705 pub prompt_version: Option<String>,
2706 #[serde(skip_serializing_if = "Option::is_none")]
2708 pub variables: Option<HashMap<String, serde_json::Value>>,
2709}
2710
2711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2713#[serde(rename_all = "camelCase")]
2714pub struct SystemMessageData {
2715 pub content: String,
2717 #[serde(skip_serializing_if = "Option::is_none")]
2719 pub metadata: Option<SystemMessageMetadata>,
2720 #[serde(skip_serializing_if = "Option::is_none")]
2722 pub name: Option<String>,
2723 pub role: SystemMessageRole,
2725}
2726
2727#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2729#[serde(rename_all = "camelCase")]
2730pub struct SystemNotificationData {
2731 pub content: String,
2733 pub kind: serde_json::Value,
2735}
2736
2737#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2739#[serde(rename_all = "camelCase")]
2740pub struct PermissionRequestShellCommand {
2741 pub identifier: String,
2743 pub read_only: bool,
2745}
2746
2747#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2749#[serde(rename_all = "camelCase")]
2750pub struct PermissionRequestShellPossibleUrl {
2751 pub url: String,
2753}
2754
2755#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2757#[serde(rename_all = "camelCase")]
2758pub struct PermissionRequestShell {
2759 pub can_offer_session_approval: bool,
2761 pub commands: Vec<PermissionRequestShellCommand>,
2763 pub full_command_text: String,
2765 pub has_write_file_redirection: bool,
2767 pub intention: String,
2769 pub kind: PermissionRequestShellKind,
2771 pub possible_paths: Vec<String>,
2773 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2775 #[serde(skip_serializing_if = "Option::is_none")]
2777 pub request_sandbox_bypass: Option<bool>,
2778 #[serde(skip_serializing_if = "Option::is_none")]
2780 pub request_sandbox_bypass_reason: Option<String>,
2781 #[serde(skip_serializing_if = "Option::is_none")]
2783 pub tool_call_id: Option<String>,
2784 #[serde(skip_serializing_if = "Option::is_none")]
2786 pub warning: Option<String>,
2787}
2788
2789#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2791#[serde(rename_all = "camelCase")]
2792pub struct PermissionRequestWrite {
2793 pub can_offer_session_approval: bool,
2795 pub diff: String,
2797 pub file_name: String,
2799 pub intention: String,
2801 pub kind: PermissionRequestWriteKind,
2803 #[serde(skip_serializing_if = "Option::is_none")]
2805 pub new_file_contents: Option<String>,
2806 #[serde(skip_serializing_if = "Option::is_none")]
2808 pub request_sandbox_bypass: Option<bool>,
2809 #[serde(skip_serializing_if = "Option::is_none")]
2811 pub request_sandbox_bypass_reason: Option<String>,
2812 #[serde(skip_serializing_if = "Option::is_none")]
2814 pub tool_call_id: Option<String>,
2815}
2816
2817#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2819#[serde(rename_all = "camelCase")]
2820pub struct PermissionRequestRead {
2821 pub intention: String,
2823 pub kind: PermissionRequestReadKind,
2825 pub path: String,
2827 #[serde(skip_serializing_if = "Option::is_none")]
2829 pub request_sandbox_bypass: Option<bool>,
2830 #[serde(skip_serializing_if = "Option::is_none")]
2832 pub request_sandbox_bypass_reason: Option<String>,
2833 #[serde(skip_serializing_if = "Option::is_none")]
2835 pub tool_call_id: Option<String>,
2836}
2837
2838#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2840#[serde(rename_all = "camelCase")]
2841pub struct PermissionRequestMcp {
2842 #[serde(skip_serializing_if = "Option::is_none")]
2844 pub args: Option<serde_json::Value>,
2845 pub kind: PermissionRequestMcpKind,
2847 pub read_only: bool,
2849 pub server_name: String,
2851 #[serde(skip_serializing_if = "Option::is_none")]
2853 pub tool_call_id: Option<String>,
2854 pub tool_name: String,
2856 pub tool_title: String,
2858}
2859
2860#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2862#[serde(rename_all = "camelCase")]
2863pub struct PermissionRequestUrl {
2864 pub intention: String,
2866 pub kind: PermissionRequestUrlKind,
2868 #[serde(skip_serializing_if = "Option::is_none")]
2870 pub request_sandbox_bypass: Option<bool>,
2871 #[serde(skip_serializing_if = "Option::is_none")]
2873 pub request_sandbox_bypass_reason: Option<String>,
2874 #[serde(skip_serializing_if = "Option::is_none")]
2876 pub tool_call_id: Option<String>,
2877 pub url: String,
2879}
2880
2881#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2883#[serde(rename_all = "camelCase")]
2884pub struct PermissionRequestMemory {
2885 #[serde(skip_serializing_if = "Option::is_none")]
2887 pub action: Option<PermissionRequestMemoryAction>,
2888 #[serde(skip_serializing_if = "Option::is_none")]
2890 pub citations: Option<String>,
2891 #[serde(skip_serializing_if = "Option::is_none")]
2893 pub direction: Option<PermissionRequestMemoryDirection>,
2894 pub fact: String,
2896 pub kind: PermissionRequestMemoryKind,
2898 #[serde(skip_serializing_if = "Option::is_none")]
2900 pub reason: Option<String>,
2901 #[serde(skip_serializing_if = "Option::is_none")]
2903 pub subject: Option<String>,
2904 #[serde(skip_serializing_if = "Option::is_none")]
2906 pub tool_call_id: Option<String>,
2907}
2908
2909#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2911#[serde(rename_all = "camelCase")]
2912pub struct PermissionRequestCustomTool {
2913 #[serde(skip_serializing_if = "Option::is_none")]
2915 pub args: Option<serde_json::Value>,
2916 pub kind: PermissionRequestCustomToolKind,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2920 pub tool_call_id: Option<String>,
2921 pub tool_description: String,
2923 pub tool_name: String,
2925}
2926
2927#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2929#[serde(rename_all = "camelCase")]
2930pub struct PermissionRequestHook {
2931 #[serde(skip_serializing_if = "Option::is_none")]
2933 pub hook_message: Option<String>,
2934 pub kind: PermissionRequestHookKind,
2936 #[serde(skip_serializing_if = "Option::is_none")]
2938 pub tool_args: Option<serde_json::Value>,
2939 #[serde(skip_serializing_if = "Option::is_none")]
2941 pub tool_call_id: Option<String>,
2942 pub tool_name: String,
2944}
2945
2946#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2948#[serde(rename_all = "camelCase")]
2949pub struct PermissionRequestExtensionManagement {
2950 #[serde(skip_serializing_if = "Option::is_none")]
2952 pub extension_name: Option<String>,
2953 pub kind: PermissionRequestExtensionManagementKind,
2955 pub operation: String,
2957 #[serde(skip_serializing_if = "Option::is_none")]
2959 pub tool_call_id: Option<String>,
2960}
2961
2962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2964#[serde(rename_all = "camelCase")]
2965pub struct PermissionRequestExtensionPermissionAccess {
2966 pub capabilities: Vec<String>,
2968 pub extension_name: String,
2970 pub kind: PermissionRequestExtensionPermissionAccessKind,
2972 #[serde(skip_serializing_if = "Option::is_none")]
2974 pub tool_call_id: Option<String>,
2975}
2976
2977#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2986#[serde(rename_all = "camelCase")]
2987pub struct PermissionAutoApproval {
2988 #[serde(skip_serializing_if = "Option::is_none")]
2990 pub reason: Option<String>,
2991 pub recommendation: AutoApprovalRecommendation,
2993}
2994
2995#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2997#[serde(rename_all = "camelCase")]
2998pub struct PermissionPromptRequestCommands {
2999 #[serde(skip_serializing_if = "Option::is_none")]
3008 pub auto_approval: Option<PermissionAutoApproval>,
3009 pub can_offer_session_approval: bool,
3011 pub command_identifiers: Vec<String>,
3013 pub full_command_text: String,
3015 pub intention: String,
3017 pub kind: PermissionPromptRequestCommandsKind,
3019 #[serde(skip_serializing_if = "Option::is_none")]
3021 pub tool_call_id: Option<String>,
3022 #[serde(skip_serializing_if = "Option::is_none")]
3024 pub warning: Option<String>,
3025}
3026
3027#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3029#[serde(rename_all = "camelCase")]
3030pub struct PermissionPromptRequestWrite {
3031 #[serde(skip_serializing_if = "Option::is_none")]
3040 pub auto_approval: Option<PermissionAutoApproval>,
3041 pub can_offer_session_approval: bool,
3043 pub diff: String,
3045 pub file_name: String,
3047 pub intention: String,
3049 pub kind: PermissionPromptRequestWriteKind,
3051 #[serde(skip_serializing_if = "Option::is_none")]
3053 pub new_file_contents: Option<String>,
3054 #[serde(skip_serializing_if = "Option::is_none")]
3056 pub tool_call_id: Option<String>,
3057}
3058
3059#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3061#[serde(rename_all = "camelCase")]
3062pub struct PermissionPromptRequestRead {
3063 #[serde(skip_serializing_if = "Option::is_none")]
3072 pub auto_approval: Option<PermissionAutoApproval>,
3073 pub intention: String,
3075 pub kind: PermissionPromptRequestReadKind,
3077 pub path: String,
3079 #[serde(skip_serializing_if = "Option::is_none")]
3081 pub tool_call_id: Option<String>,
3082}
3083
3084#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3086#[serde(rename_all = "camelCase")]
3087pub struct PermissionPromptRequestMcp {
3088 #[serde(skip_serializing_if = "Option::is_none")]
3090 pub args: Option<serde_json::Value>,
3091 #[serde(skip_serializing_if = "Option::is_none")]
3100 pub auto_approval: Option<PermissionAutoApproval>,
3101 pub kind: PermissionPromptRequestMcpKind,
3103 pub server_name: String,
3105 #[serde(skip_serializing_if = "Option::is_none")]
3107 pub tool_call_id: Option<String>,
3108 pub tool_name: String,
3110 pub tool_title: String,
3112}
3113
3114#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3116#[serde(rename_all = "camelCase")]
3117pub struct PermissionPromptRequestUrl {
3118 #[serde(skip_serializing_if = "Option::is_none")]
3127 pub auto_approval: Option<PermissionAutoApproval>,
3128 pub intention: String,
3130 pub kind: PermissionPromptRequestUrlKind,
3132 #[serde(skip_serializing_if = "Option::is_none")]
3134 pub request_sandbox_bypass: Option<bool>,
3135 #[serde(skip_serializing_if = "Option::is_none")]
3137 pub request_sandbox_bypass_reason: Option<String>,
3138 #[serde(skip_serializing_if = "Option::is_none")]
3140 pub tool_call_id: Option<String>,
3141 pub url: String,
3143}
3144
3145#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3147#[serde(rename_all = "camelCase")]
3148pub struct PermissionPromptRequestMemory {
3149 #[serde(skip_serializing_if = "Option::is_none")]
3151 pub action: Option<PermissionRequestMemoryAction>,
3152 #[serde(skip_serializing_if = "Option::is_none")]
3161 pub auto_approval: Option<PermissionAutoApproval>,
3162 #[serde(skip_serializing_if = "Option::is_none")]
3164 pub citations: Option<String>,
3165 #[serde(skip_serializing_if = "Option::is_none")]
3167 pub direction: Option<PermissionRequestMemoryDirection>,
3168 pub fact: String,
3170 pub kind: PermissionPromptRequestMemoryKind,
3172 #[serde(skip_serializing_if = "Option::is_none")]
3174 pub reason: Option<String>,
3175 #[serde(skip_serializing_if = "Option::is_none")]
3177 pub subject: Option<String>,
3178 #[serde(skip_serializing_if = "Option::is_none")]
3180 pub tool_call_id: Option<String>,
3181}
3182
3183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3185#[serde(rename_all = "camelCase")]
3186pub struct PermissionPromptRequestCustomTool {
3187 #[serde(skip_serializing_if = "Option::is_none")]
3189 pub args: Option<serde_json::Value>,
3190 #[serde(skip_serializing_if = "Option::is_none")]
3199 pub auto_approval: Option<PermissionAutoApproval>,
3200 pub kind: PermissionPromptRequestCustomToolKind,
3202 #[serde(skip_serializing_if = "Option::is_none")]
3204 pub tool_call_id: Option<String>,
3205 pub tool_description: String,
3207 pub tool_name: String,
3209}
3210
3211#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3213#[serde(rename_all = "camelCase")]
3214pub struct PermissionPromptRequestPath {
3215 pub access_kind: PermissionPromptRequestPathAccessKind,
3217 #[serde(skip_serializing_if = "Option::is_none")]
3226 pub auto_approval: Option<PermissionAutoApproval>,
3227 pub kind: PermissionPromptRequestPathKind,
3229 pub paths: Vec<String>,
3231 #[serde(skip_serializing_if = "Option::is_none")]
3233 pub tool_call_id: Option<String>,
3234}
3235
3236#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3238#[serde(rename_all = "camelCase")]
3239pub struct PermissionPromptRequestHook {
3240 #[serde(skip_serializing_if = "Option::is_none")]
3249 pub auto_approval: Option<PermissionAutoApproval>,
3250 #[serde(skip_serializing_if = "Option::is_none")]
3252 pub hook_message: Option<String>,
3253 pub kind: PermissionPromptRequestHookKind,
3255 #[serde(skip_serializing_if = "Option::is_none")]
3257 pub tool_args: Option<serde_json::Value>,
3258 #[serde(skip_serializing_if = "Option::is_none")]
3260 pub tool_call_id: Option<String>,
3261 pub tool_name: String,
3263}
3264
3265#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3267#[serde(rename_all = "camelCase")]
3268pub struct PermissionPromptRequestExtensionManagement {
3269 #[serde(skip_serializing_if = "Option::is_none")]
3278 pub auto_approval: Option<PermissionAutoApproval>,
3279 #[serde(skip_serializing_if = "Option::is_none")]
3281 pub extension_name: Option<String>,
3282 pub kind: PermissionPromptRequestExtensionManagementKind,
3284 pub operation: String,
3286 #[serde(skip_serializing_if = "Option::is_none")]
3288 pub tool_call_id: Option<String>,
3289}
3290
3291#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3293#[serde(rename_all = "camelCase")]
3294pub struct PermissionPromptRequestExtensionPermissionAccess {
3295 #[serde(skip_serializing_if = "Option::is_none")]
3304 pub auto_approval: Option<PermissionAutoApproval>,
3305 pub capabilities: Vec<String>,
3307 pub extension_name: String,
3309 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
3311 #[serde(skip_serializing_if = "Option::is_none")]
3313 pub tool_call_id: Option<String>,
3314}
3315
3316#[derive(Debug, Clone, Serialize, Deserialize)]
3318#[serde(rename_all = "camelCase")]
3319pub struct PermissionRequestedData {
3320 pub permission_request: PermissionRequest,
3322 #[serde(skip_serializing_if = "Option::is_none")]
3324 pub prompt_request: Option<PermissionPromptRequest>,
3325 pub request_id: RequestId,
3327 #[serde(skip_serializing_if = "Option::is_none")]
3329 pub resolved_by_hook: Option<bool>,
3330}
3331
3332#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3334#[serde(rename_all = "camelCase")]
3335pub struct PermissionApproved {
3336 pub kind: PermissionApprovedKind,
3338}
3339
3340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3342#[serde(rename_all = "camelCase")]
3343pub struct UserToolSessionApprovalCommands {
3344 pub command_identifiers: Vec<String>,
3346 pub kind: UserToolSessionApprovalCommandsKind,
3348}
3349
3350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3352#[serde(rename_all = "camelCase")]
3353pub struct UserToolSessionApprovalRead {
3354 pub kind: UserToolSessionApprovalReadKind,
3356}
3357
3358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3360#[serde(rename_all = "camelCase")]
3361pub struct UserToolSessionApprovalWrite {
3362 pub kind: UserToolSessionApprovalWriteKind,
3364}
3365
3366#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3368#[serde(rename_all = "camelCase")]
3369pub struct UserToolSessionApprovalMcp {
3370 pub kind: UserToolSessionApprovalMcpKind,
3372 pub server_name: String,
3374 pub tool_name: Option<String>,
3376}
3377
3378#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3380#[serde(rename_all = "camelCase")]
3381pub struct UserToolSessionApprovalMemory {
3382 pub kind: UserToolSessionApprovalMemoryKind,
3384}
3385
3386#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3388#[serde(rename_all = "camelCase")]
3389pub struct UserToolSessionApprovalCustomTool {
3390 pub kind: UserToolSessionApprovalCustomToolKind,
3392 pub tool_name: String,
3394}
3395
3396#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3398#[serde(rename_all = "camelCase")]
3399pub struct UserToolSessionApprovalExtensionManagement {
3400 pub kind: UserToolSessionApprovalExtensionManagementKind,
3402 #[serde(skip_serializing_if = "Option::is_none")]
3404 pub operation: Option<String>,
3405}
3406
3407#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3409#[serde(rename_all = "camelCase")]
3410pub struct UserToolSessionApprovalExtensionPermissionAccess {
3411 pub extension_name: String,
3413 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
3415}
3416
3417#[derive(Debug, Clone, Serialize, Deserialize)]
3419#[serde(rename_all = "camelCase")]
3420pub struct PermissionApprovedForSession {
3421 pub approval: UserToolSessionApproval,
3423 pub kind: PermissionApprovedForSessionKind,
3425}
3426
3427#[derive(Debug, Clone, Serialize, Deserialize)]
3429#[serde(rename_all = "camelCase")]
3430pub struct PermissionApprovedForLocation {
3431 pub approval: UserToolSessionApproval,
3433 pub kind: PermissionApprovedForLocationKind,
3435 pub location_key: String,
3437}
3438
3439#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3441#[serde(rename_all = "camelCase")]
3442pub struct PermissionCancelled {
3443 pub kind: PermissionCancelledKind,
3445 #[serde(skip_serializing_if = "Option::is_none")]
3447 pub reason: Option<String>,
3448}
3449
3450#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3452#[serde(rename_all = "camelCase")]
3453pub struct PermissionRule {
3454 pub argument: Option<String>,
3456 pub kind: String,
3458}
3459
3460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3462#[serde(rename_all = "camelCase")]
3463pub struct PermissionDeniedByRules {
3464 pub kind: PermissionDeniedByRulesKind,
3466 pub rules: Vec<PermissionRule>,
3468}
3469
3470#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3472#[serde(rename_all = "camelCase")]
3473pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
3474 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
3476}
3477
3478#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3480#[serde(rename_all = "camelCase")]
3481pub struct PermissionDeniedInteractivelyByUser {
3482 #[serde(skip_serializing_if = "Option::is_none")]
3484 pub feedback: Option<String>,
3485 #[serde(skip_serializing_if = "Option::is_none")]
3487 pub force_reject: Option<bool>,
3488 pub kind: PermissionDeniedInteractivelyByUserKind,
3490}
3491
3492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3494#[serde(rename_all = "camelCase")]
3495pub struct PermissionDeniedByContentExclusionPolicy {
3496 pub kind: PermissionDeniedByContentExclusionPolicyKind,
3498 pub message: String,
3500 pub path: String,
3502}
3503
3504#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3506#[serde(rename_all = "camelCase")]
3507pub struct PermissionDeniedByPermissionRequestHook {
3508 #[serde(skip_serializing_if = "Option::is_none")]
3510 pub interrupt: Option<bool>,
3511 pub kind: PermissionDeniedByPermissionRequestHookKind,
3513 #[serde(skip_serializing_if = "Option::is_none")]
3515 pub message: Option<String>,
3516}
3517
3518#[derive(Debug, Clone, Serialize, Deserialize)]
3520#[serde(rename_all = "camelCase")]
3521pub struct PermissionCompletedData {
3522 pub request_id: RequestId,
3524 pub result: PermissionResult,
3526 #[serde(skip_serializing_if = "Option::is_none")]
3528 pub tool_call_id: Option<String>,
3529}
3530
3531#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3533#[serde(rename_all = "camelCase")]
3534pub struct UserInputRequestedData {
3535 #[serde(skip_serializing_if = "Option::is_none")]
3537 pub allow_freeform: Option<bool>,
3538 #[serde(skip_serializing_if = "Option::is_none")]
3540 pub choices: Option<Vec<String>>,
3541 pub question: String,
3543 pub request_id: RequestId,
3545 #[serde(skip_serializing_if = "Option::is_none")]
3547 pub tool_call_id: Option<String>,
3548}
3549
3550#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3552#[serde(rename_all = "camelCase")]
3553pub struct UserInputCompletedData {
3554 #[serde(skip_serializing_if = "Option::is_none")]
3556 pub answer: Option<String>,
3557 pub request_id: RequestId,
3559 #[serde(skip_serializing_if = "Option::is_none")]
3561 pub was_freeform: Option<bool>,
3562}
3563
3564#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3566#[serde(rename_all = "camelCase")]
3567pub struct ElicitationRequestedSchema {
3568 pub properties: HashMap<String, serde_json::Value>,
3570 #[serde(skip_serializing_if = "Option::is_none")]
3572 pub required: Option<Vec<String>>,
3573 pub r#type: ElicitationRequestedSchemaType,
3575}
3576
3577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3579#[serde(rename_all = "camelCase")]
3580pub struct ElicitationRequestedData {
3581 #[serde(skip_serializing_if = "Option::is_none")]
3583 pub elicitation_source: Option<String>,
3584 pub message: String,
3586 #[serde(skip_serializing_if = "Option::is_none")]
3588 pub mode: Option<ElicitationRequestedMode>,
3589 #[serde(skip_serializing_if = "Option::is_none")]
3591 pub requested_schema: Option<ElicitationRequestedSchema>,
3592 pub request_id: RequestId,
3594 #[serde(skip_serializing_if = "Option::is_none")]
3596 pub tool_call_id: Option<String>,
3597 #[serde(skip_serializing_if = "Option::is_none")]
3599 pub url: Option<String>,
3600}
3601
3602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3604#[serde(rename_all = "camelCase")]
3605pub struct ElicitationCompletedData {
3606 #[serde(skip_serializing_if = "Option::is_none")]
3608 pub action: Option<ElicitationCompletedAction>,
3609 #[serde(skip_serializing_if = "Option::is_none")]
3611 pub content: Option<HashMap<String, serde_json::Value>>,
3612 pub request_id: RequestId,
3614}
3615
3616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3618#[serde(rename_all = "camelCase")]
3619pub struct SamplingRequestedData {
3620 pub mcp_request_id: serde_json::Value,
3622 pub request_id: RequestId,
3624 pub server_name: String,
3626}
3627
3628#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3630#[serde(rename_all = "camelCase")]
3631pub struct SamplingCompletedData {
3632 pub request_id: RequestId,
3634}
3635
3636#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3638#[serde(rename_all = "camelCase")]
3639pub struct McpOauthRequiredStaticClientConfig {
3640 pub client_id: String,
3642 #[serde(skip_serializing_if = "Option::is_none")]
3644 pub client_secret: Option<String>,
3645 #[serde(skip_serializing_if = "Option::is_none")]
3647 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3648 #[serde(skip_serializing_if = "Option::is_none")]
3650 pub public_client: Option<bool>,
3651}
3652
3653#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3655#[serde(rename_all = "camelCase")]
3656pub struct McpOauthWWWAuthenticateParams {
3657 #[serde(skip_serializing_if = "Option::is_none")]
3659 pub error: Option<String>,
3660 #[serde(skip_serializing_if = "Option::is_none")]
3662 pub resource_metadata_url: Option<String>,
3663 #[serde(skip_serializing_if = "Option::is_none")]
3665 pub scope: Option<String>,
3666}
3667
3668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3670#[serde(rename_all = "camelCase")]
3671pub struct McpOauthRequiredData {
3672 pub reason: McpOauthRequestReason,
3674 pub request_id: RequestId,
3676 #[serde(skip_serializing_if = "Option::is_none")]
3678 pub resource_metadata: Option<String>,
3679 pub server_name: String,
3681 pub server_url: String,
3683 #[serde(skip_serializing_if = "Option::is_none")]
3685 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3686 #[serde(skip_serializing_if = "Option::is_none")]
3688 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3689}
3690
3691#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3693#[serde(rename_all = "camelCase")]
3694pub struct McpOauthCompletedData {
3695 pub outcome: McpOauthCompletionOutcome,
3697 pub request_id: RequestId,
3699}
3700
3701#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3703#[serde(rename_all = "camelCase")]
3704pub struct McpHeadersRefreshRequiredData {
3705 pub reason: McpHeadersRefreshRequiredReason,
3707 pub request_id: RequestId,
3709 pub server_name: String,
3711 pub server_url: String,
3713}
3714
3715#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3717#[serde(rename_all = "camelCase")]
3718pub struct McpHeadersRefreshCompletedData {
3719 pub outcome: McpHeadersRefreshCompletedOutcome,
3721 pub request_id: RequestId,
3723}
3724
3725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3727#[serde(rename_all = "camelCase")]
3728pub struct SessionCustomNotificationData {
3729 pub name: String,
3731 pub payload: serde_json::Value,
3733 pub source: String,
3735 #[serde(skip_serializing_if = "Option::is_none")]
3737 pub subject: Option<HashMap<String, String>>,
3738 #[serde(skip_serializing_if = "Option::is_none")]
3740 pub version: Option<i64>,
3741}
3742
3743#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3745#[serde(rename_all = "camelCase")]
3746pub struct ExternalToolRequestedData {
3747 #[serde(skip_serializing_if = "Option::is_none")]
3749 pub arguments: Option<serde_json::Value>,
3750 pub request_id: RequestId,
3752 pub session_id: SessionId,
3754 pub tool_call_id: String,
3756 pub tool_name: String,
3758 #[serde(skip_serializing_if = "Option::is_none")]
3760 pub traceparent: Option<String>,
3761 #[serde(skip_serializing_if = "Option::is_none")]
3763 pub tracestate: Option<String>,
3764 #[serde(skip_serializing_if = "Option::is_none")]
3766 pub working_directory: Option<String>,
3767}
3768
3769#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3771#[serde(rename_all = "camelCase")]
3772pub struct ExternalToolCompletedData {
3773 pub request_id: RequestId,
3775}
3776
3777#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3779#[serde(rename_all = "camelCase")]
3780pub struct CommandQueuedData {
3781 pub command: String,
3783 pub request_id: RequestId,
3785}
3786
3787#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3789#[serde(rename_all = "camelCase")]
3790pub struct CommandExecuteData {
3791 pub args: String,
3793 pub command: String,
3795 pub command_name: String,
3797 pub request_id: RequestId,
3799}
3800
3801#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3803#[serde(rename_all = "camelCase")]
3804pub struct CommandCompletedData {
3805 pub request_id: RequestId,
3807}
3808
3809#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3811#[serde(rename_all = "camelCase")]
3812pub struct AutoModeSwitchRequestedData {
3813 #[serde(skip_serializing_if = "Option::is_none")]
3815 pub error_code: Option<String>,
3816 pub request_id: RequestId,
3818 #[serde(skip_serializing_if = "Option::is_none")]
3820 pub retry_after_seconds: Option<i64>,
3821}
3822
3823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3825#[serde(rename_all = "camelCase")]
3826pub struct AutoModeSwitchCompletedData {
3827 pub request_id: RequestId,
3829 pub response: AutoModeSwitchResponse,
3831}
3832
3833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3835#[serde(rename_all = "camelCase")]
3836pub struct SessionLimitsExhaustedRequestedData {
3837 pub max_ai_credits: f64,
3839 pub request_id: RequestId,
3841 pub used_ai_credits: f64,
3843}
3844
3845#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3847#[serde(rename_all = "camelCase")]
3848pub struct SessionLimitsExhaustedResponse {
3849 pub action: SessionLimitsExhaustedResponseAction,
3851 #[serde(skip_serializing_if = "Option::is_none")]
3853 pub additional_ai_credits: Option<f64>,
3854 #[serde(skip_serializing_if = "Option::is_none")]
3856 pub max_ai_credits: Option<f64>,
3857}
3858
3859#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3861#[serde(rename_all = "camelCase")]
3862pub struct SessionLimitsExhaustedCompletedData {
3863 pub request_id: RequestId,
3865 pub response: SessionLimitsExhaustedResponse,
3867}
3868
3869#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3878#[serde(rename_all = "camelCase")]
3879pub struct SessionAutoModeResolvedData {
3880 #[serde(skip_serializing_if = "Option::is_none")]
3882 pub candidate_models: Option<Vec<String>>,
3883 #[serde(skip_serializing_if = "Option::is_none")]
3885 pub category_scores: Option<HashMap<String, f64>>,
3886 pub chosen_model: String,
3888 #[serde(skip_serializing_if = "Option::is_none")]
3890 pub confidence: Option<f64>,
3891 #[serde(skip_serializing_if = "Option::is_none")]
3893 pub predicted_label: Option<String>,
3894 #[serde(skip_serializing_if = "Option::is_none")]
3896 pub reasoning_bucket: Option<AutoModeResolvedReasoningBucket>,
3897}
3898
3899#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3901#[serde(rename_all = "camelCase")]
3902pub struct CommandsChangedCommand {
3903 #[serde(skip_serializing_if = "Option::is_none")]
3905 pub description: Option<String>,
3906 pub name: String,
3908}
3909
3910#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3912#[serde(rename_all = "camelCase")]
3913pub struct CommandsChangedData {
3914 pub commands: Vec<CommandsChangedCommand>,
3916}
3917
3918#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3920#[serde(rename_all = "camelCase")]
3921pub struct CapabilitiesChangedUI {
3922 #[serde(skip_serializing_if = "Option::is_none")]
3924 pub canvases: Option<bool>,
3925 #[serde(skip_serializing_if = "Option::is_none")]
3927 pub elicitation: Option<bool>,
3928 #[serde(skip_serializing_if = "Option::is_none")]
3930 pub mcp_apps: Option<bool>,
3931}
3932
3933#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3935#[serde(rename_all = "camelCase")]
3936pub struct CapabilitiesChangedData {
3937 #[serde(skip_serializing_if = "Option::is_none")]
3939 pub ui: Option<CapabilitiesChangedUI>,
3940}
3941
3942#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3944#[serde(rename_all = "camelCase")]
3945pub struct ExitPlanModeRequestedData {
3946 pub actions: Vec<ExitPlanModeAction>,
3948 pub plan_content: String,
3950 pub recommended_action: ExitPlanModeAction,
3952 pub request_id: RequestId,
3954 pub summary: String,
3956}
3957
3958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3960#[serde(rename_all = "camelCase")]
3961pub struct ExitPlanModeCompletedData {
3962 #[serde(skip_serializing_if = "Option::is_none")]
3964 pub approved: Option<bool>,
3965 #[serde(skip_serializing_if = "Option::is_none")]
3967 pub auto_approve_edits: Option<bool>,
3968 #[serde(skip_serializing_if = "Option::is_none")]
3970 pub feedback: Option<String>,
3971 pub request_id: RequestId,
3973 #[serde(skip_serializing_if = "Option::is_none")]
3975 pub selected_action: Option<ExitPlanModeAction>,
3976}
3977
3978#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3980#[serde(rename_all = "camelCase")]
3981pub struct SessionToolsUpdatedData {
3982 pub model: String,
3984}
3985
3986#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3988#[serde(rename_all = "camelCase")]
3989pub struct SessionBackgroundTasksChangedData {}
3990
3991#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3993#[serde(rename_all = "camelCase")]
3994pub struct SkillsLoadedSkill {
3995 #[serde(skip_serializing_if = "Option::is_none")]
3997 pub argument_hint: Option<String>,
3998 pub description: String,
4000 pub enabled: bool,
4002 pub name: String,
4004 #[serde(skip_serializing_if = "Option::is_none")]
4006 pub path: Option<String>,
4007 pub source: SkillSource,
4009 pub user_invocable: bool,
4011}
4012
4013#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4015#[serde(rename_all = "camelCase")]
4016pub struct SessionSkillsLoadedData {
4017 pub skills: Vec<SkillsLoadedSkill>,
4019}
4020
4021#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4023#[serde(rename_all = "camelCase")]
4024pub struct CustomAgentsUpdatedAgent {
4025 pub description: String,
4027 pub display_name: String,
4029 pub id: String,
4031 #[serde(skip_serializing_if = "Option::is_none")]
4033 pub model: Option<String>,
4034 pub name: String,
4036 pub source: String,
4038 pub tools: Option<Vec<String>>,
4040 pub user_invocable: bool,
4042}
4043
4044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4046#[serde(rename_all = "camelCase")]
4047pub struct SessionCustomAgentsUpdatedData {
4048 pub agents: Vec<CustomAgentsUpdatedAgent>,
4050 pub errors: Vec<String>,
4052 pub warnings: Vec<String>,
4054}
4055
4056#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4058#[serde(rename_all = "camelCase")]
4059pub struct McpServersLoadedServer {
4060 #[serde(skip_serializing_if = "Option::is_none")]
4062 pub error: Option<String>,
4063 pub name: String,
4065 #[serde(skip_serializing_if = "Option::is_none")]
4067 pub plugin_name: Option<String>,
4068 #[serde(skip_serializing_if = "Option::is_none")]
4070 pub plugin_version: Option<String>,
4071 #[serde(skip_serializing_if = "Option::is_none")]
4073 pub source: Option<McpServerSource>,
4074 pub status: McpServerStatus,
4076 #[serde(skip_serializing_if = "Option::is_none")]
4078 pub transport: Option<McpServerTransport>,
4079}
4080
4081#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4083#[serde(rename_all = "camelCase")]
4084pub struct SessionMcpServersLoadedData {
4085 pub servers: Vec<McpServersLoadedServer>,
4087}
4088
4089#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4091#[serde(rename_all = "camelCase")]
4092pub struct SessionMcpServerStatusChangedData {
4093 #[serde(skip_serializing_if = "Option::is_none")]
4095 pub error: Option<String>,
4096 pub server_name: String,
4098 pub status: McpServerStatus,
4100}
4101
4102#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4104#[serde(rename_all = "camelCase")]
4105pub struct McpToolsListChangedData {
4106 pub server_name: String,
4108}
4109
4110#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4112#[serde(rename_all = "camelCase")]
4113pub struct McpResourcesListChangedData {
4114 pub server_name: String,
4116}
4117
4118#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4120#[serde(rename_all = "camelCase")]
4121pub struct McpPromptsListChangedData {
4122 pub server_name: String,
4124}
4125
4126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4128#[serde(rename_all = "camelCase")]
4129pub struct ExtensionsLoadedExtension {
4130 pub id: String,
4132 pub name: String,
4134 pub source: ExtensionsLoadedExtensionSource,
4136 pub status: ExtensionsLoadedExtensionStatus,
4138}
4139
4140#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4142#[serde(rename_all = "camelCase")]
4143pub struct SessionExtensionsLoadedData {
4144 pub extensions: Vec<ExtensionsLoadedExtension>,
4146}
4147
4148#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4157#[serde(rename_all = "camelCase")]
4158pub struct SessionCanvasOpenedData {
4159 pub canvas_id: String,
4161 pub extension_id: String,
4163 #[serde(skip_serializing_if = "Option::is_none")]
4165 pub extension_name: Option<String>,
4166 #[serde(skip_serializing_if = "Option::is_none")]
4168 pub input: Option<serde_json::Value>,
4169 pub instance_id: String,
4171 #[serde(skip_serializing_if = "Option::is_none")]
4173 pub status: Option<String>,
4174 #[serde(skip_serializing_if = "Option::is_none")]
4176 pub title: Option<String>,
4177 #[serde(skip_serializing_if = "Option::is_none")]
4179 pub url: Option<String>,
4180}
4181
4182#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4191#[serde(rename_all = "camelCase")]
4192pub struct CanvasRegistryChangedCanvasAction {
4193 #[serde(skip_serializing_if = "Option::is_none")]
4195 pub description: Option<String>,
4196 #[serde(skip_serializing_if = "Option::is_none")]
4198 pub input_schema: Option<serde_json::Value>,
4199 pub name: String,
4201}
4202
4203#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4212#[serde(rename_all = "camelCase")]
4213pub struct CanvasRegistryChangedCanvas {
4214 #[serde(skip_serializing_if = "Option::is_none")]
4216 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
4217 pub canvas_id: String,
4219 pub description: String,
4221 pub display_name: String,
4223 pub extension_id: String,
4225 #[serde(skip_serializing_if = "Option::is_none")]
4227 pub extension_name: Option<String>,
4228 #[serde(skip_serializing_if = "Option::is_none")]
4230 pub input_schema: Option<serde_json::Value>,
4231}
4232
4233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4242#[serde(rename_all = "camelCase")]
4243pub struct SessionCanvasRegistryChangedData {
4244 pub canvases: Vec<CanvasRegistryChangedCanvas>,
4246}
4247
4248#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4257#[serde(rename_all = "camelCase")]
4258pub struct SessionCanvasClosedData {
4259 pub canvas_id: String,
4261 pub extension_id: String,
4263 pub instance_id: String,
4265}
4266
4267#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4276#[serde(rename_all = "camelCase")]
4277pub struct SessionCanvasUnavailableData {
4278 pub canvas_id: String,
4280 pub extension_id: String,
4282 pub instance_id: String,
4284}
4285
4286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4295#[serde(rename_all = "camelCase")]
4296pub struct SessionCanvasRecordedData {
4297 pub canvas_id: String,
4299 pub extension_id: String,
4301 #[serde(skip_serializing_if = "Option::is_none")]
4303 pub input: Option<serde_json::Value>,
4304 pub instance_id: String,
4306 #[serde(skip_serializing_if = "Option::is_none")]
4308 pub title: Option<String>,
4309}
4310
4311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4320#[serde(rename_all = "camelCase")]
4321pub struct SessionCanvasRemovedData {
4322 pub canvas_id: String,
4324 pub extension_id: String,
4326 pub instance_id: String,
4328}
4329
4330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4332#[serde(rename_all = "camelCase")]
4333pub struct SessionExtensionsAttachmentsPushedData {
4334 pub attachments: Vec<serde_json::Value>,
4336}
4337
4338#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4340#[serde(rename_all = "camelCase")]
4341pub struct McpAppToolCallCompleteError {
4342 pub message: String,
4344}
4345
4346#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4348#[serde(rename_all = "camelCase")]
4349pub struct McpAppToolCallCompleteToolMetaUI {
4350 #[serde(skip_serializing_if = "Option::is_none")]
4352 pub resource_uri: Option<String>,
4353 #[serde(skip_serializing_if = "Option::is_none")]
4355 pub visibility: Option<Vec<String>>,
4356}
4357
4358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4360#[serde(rename_all = "camelCase")]
4361pub struct McpAppToolCallCompleteToolMeta {
4362 #[serde(skip_serializing_if = "Option::is_none")]
4364 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
4365}
4366
4367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4369#[serde(rename_all = "camelCase")]
4370pub struct McpAppToolCallCompleteData {
4371 #[serde(skip_serializing_if = "Option::is_none")]
4373 pub arguments: Option<HashMap<String, serde_json::Value>>,
4374 pub duration_ms: f64,
4376 #[serde(skip_serializing_if = "Option::is_none")]
4378 pub error: Option<McpAppToolCallCompleteError>,
4379 #[serde(skip_serializing_if = "Option::is_none")]
4381 pub result: Option<HashMap<String, serde_json::Value>>,
4382 pub server_name: String,
4384 pub success: bool,
4386 #[serde(skip_serializing_if = "Option::is_none")]
4388 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
4389 pub tool_name: String,
4391}
4392
4393#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4395pub enum WorkingDirectoryContextHostType {
4396 #[serde(rename = "github")]
4398 GitHub,
4399 #[serde(rename = "ado")]
4401 Ado,
4402 #[default]
4404 #[serde(other)]
4405 Unknown,
4406}
4407
4408#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4410pub enum ContextTier {
4411 #[serde(rename = "default")]
4413 Default,
4414 #[serde(rename = "long_context")]
4416 LongContext,
4417 #[default]
4419 #[serde(other)]
4420 Unknown,
4421}
4422
4423#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4425pub enum ReasoningSummary {
4426 #[serde(rename = "none")]
4428 None,
4429 #[serde(rename = "concise")]
4431 Concise,
4432 #[serde(rename = "detailed")]
4434 Detailed,
4435 #[default]
4437 #[serde(other)]
4438 Unknown,
4439}
4440
4441#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4443pub enum Verbosity {
4444 #[serde(rename = "low")]
4446 Low,
4447 #[serde(rename = "medium")]
4449 Medium,
4450 #[serde(rename = "high")]
4452 High,
4453 #[default]
4455 #[serde(other)]
4456 Unknown,
4457}
4458
4459#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4461pub enum AutopilotObjectiveChangedOperation {
4462 #[serde(rename = "create")]
4464 Create,
4465 #[serde(rename = "update")]
4467 Update,
4468 #[serde(rename = "delete")]
4470 Delete,
4471 #[default]
4473 #[serde(other)]
4474 Unknown,
4475}
4476
4477#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4479pub enum AutopilotObjectiveChangedStatus {
4480 #[serde(rename = "active")]
4482 Active,
4483 #[serde(rename = "paused")]
4485 Paused,
4486 #[serde(rename = "cap_reached")]
4488 CapReached,
4489 #[serde(rename = "completed")]
4491 Completed,
4492 #[default]
4494 #[serde(other)]
4495 Unknown,
4496}
4497
4498#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4500pub enum SessionMode {
4501 #[serde(rename = "interactive")]
4503 Interactive,
4504 #[serde(rename = "plan")]
4506 Plan,
4507 #[serde(rename = "autopilot")]
4509 Autopilot,
4510 #[default]
4512 #[serde(other)]
4513 Unknown,
4514}
4515
4516#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4525pub enum PermissionAllowAllMode {
4526 #[serde(rename = "off")]
4528 Off,
4529 #[serde(rename = "on")]
4531 On,
4532 #[serde(rename = "auto")]
4534 Auto,
4535 #[default]
4537 #[serde(other)]
4538 Unknown,
4539}
4540
4541#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4543pub enum PlanChangedOperation {
4544 #[serde(rename = "create")]
4546 Create,
4547 #[serde(rename = "update")]
4549 Update,
4550 #[serde(rename = "delete")]
4552 Delete,
4553 #[default]
4555 #[serde(other)]
4556 Unknown,
4557}
4558
4559#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4561pub enum WorkspaceFileChangedOperation {
4562 #[serde(rename = "create")]
4564 Create,
4565 #[serde(rename = "update")]
4567 Update,
4568 #[default]
4570 #[serde(other)]
4571 Unknown,
4572}
4573
4574#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4576pub enum HandoffSourceType {
4577 #[serde(rename = "remote")]
4579 Remote,
4580 #[serde(rename = "local")]
4582 Local,
4583 #[default]
4585 #[serde(other)]
4586 Unknown,
4587}
4588
4589#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4591pub enum ShutdownType {
4592 #[serde(rename = "routine")]
4594 Routine,
4595 #[serde(rename = "error")]
4597 Error,
4598 #[default]
4600 #[serde(other)]
4601 Unknown,
4602}
4603
4604#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4606pub enum UserMessageAgentMode {
4607 #[serde(rename = "interactive")]
4609 Interactive,
4610 #[serde(rename = "plan")]
4612 Plan,
4613 #[serde(rename = "autopilot")]
4615 Autopilot,
4616 #[serde(rename = "shell")]
4618 Shell,
4619 #[default]
4621 #[serde(other)]
4622 Unknown,
4623}
4624
4625#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4627pub enum UserMessageDelivery {
4628 #[serde(rename = "idle")]
4630 Idle,
4631 #[serde(rename = "steering")]
4633 Steering,
4634 #[serde(rename = "queued")]
4636 Queued,
4637 #[default]
4639 #[serde(other)]
4640 Unknown,
4641}
4642
4643#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4645pub enum AssistantMessageToolRequestType {
4646 #[serde(rename = "function")]
4648 Function,
4649 #[serde(rename = "custom")]
4651 Custom,
4652 #[default]
4654 #[serde(other)]
4655 Unknown,
4656}
4657
4658#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4667pub enum CitationProvider {
4668 #[serde(rename = "anthropic")]
4670 Anthropic,
4671 #[serde(rename = "openai")]
4673 Openai,
4674 #[serde(rename = "client")]
4676 Client,
4677 #[default]
4679 #[serde(other)]
4680 Unknown,
4681}
4682
4683#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4685pub enum AssistantUsageApiEndpoint {
4686 #[serde(rename = "/chat/completions")]
4688 ChatCompletions,
4689 #[serde(rename = "/v1/messages")]
4691 V1Messages,
4692 #[serde(rename = "/responses")]
4694 Responses,
4695 #[serde(rename = "ws:/responses")]
4697 WsResponses,
4698 #[default]
4700 #[serde(other)]
4701 Unknown,
4702}
4703
4704#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4706pub enum ModelCallFailureBadRequestKind {
4707 #[serde(rename = "bodyless")]
4709 Bodyless,
4710 #[serde(rename = "structured_error")]
4712 StructuredError,
4713 #[default]
4715 #[serde(other)]
4716 Unknown,
4717}
4718
4719#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4721pub enum ModelCallFailureSource {
4722 #[serde(rename = "top_level")]
4724 TopLevel,
4725 #[serde(rename = "subagent")]
4727 Subagent,
4728 #[serde(rename = "mcp_sampling")]
4730 McpSampling,
4731 #[default]
4733 #[serde(other)]
4734 Unknown,
4735}
4736
4737#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4739pub enum AbortReason {
4740 #[serde(rename = "user_initiated")]
4742 UserInitiated,
4743 #[serde(rename = "remote_command")]
4745 RemoteCommand,
4746 #[serde(rename = "user_abort")]
4748 UserAbort,
4749 #[default]
4751 #[serde(other)]
4752 Unknown,
4753}
4754
4755#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4757pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
4758 #[serde(rename = "model")]
4760 Model,
4761 #[serde(rename = "app")]
4763 App,
4764 #[default]
4766 #[serde(other)]
4767 Unknown,
4768}
4769
4770#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4772pub enum ToolExecutionCompleteContentTextType {
4773 #[serde(rename = "text")]
4774 #[default]
4775 Text,
4776}
4777
4778#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4780pub enum ToolExecutionCompleteContentTerminalType {
4781 #[serde(rename = "terminal")]
4782 #[default]
4783 Terminal,
4784}
4785
4786#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4788pub enum ToolExecutionCompleteContentShellExitType {
4789 #[serde(rename = "shell_exit")]
4790 #[default]
4791 ShellExit,
4792}
4793
4794#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4796pub enum ToolExecutionCompleteContentImageType {
4797 #[serde(rename = "image")]
4798 #[default]
4799 Image,
4800}
4801
4802#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4804pub enum ToolExecutionCompleteContentAudioType {
4805 #[serde(rename = "audio")]
4806 #[default]
4807 Audio,
4808}
4809
4810#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4812pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4813 #[serde(rename = "light")]
4815 Light,
4816 #[serde(rename = "dark")]
4818 Dark,
4819 #[default]
4821 #[serde(other)]
4822 Unknown,
4823}
4824
4825#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4827pub enum ToolExecutionCompleteContentResourceLinkType {
4828 #[serde(rename = "resource_link")]
4829 #[default]
4830 ResourceLink,
4831}
4832
4833#[derive(Debug, Clone, Serialize, Deserialize)]
4835#[serde(untagged)]
4836pub enum ToolExecutionCompleteContentResourceDetails {
4837 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4838 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4839}
4840
4841#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4843pub enum ToolExecutionCompleteContentResourceType {
4844 #[serde(rename = "resource")]
4845 #[default]
4846 Resource,
4847}
4848
4849#[derive(Debug, Clone, Serialize, Deserialize)]
4851#[serde(untagged)]
4852pub enum ToolExecutionCompleteContent {
4853 Text(ToolExecutionCompleteContentText),
4854 Terminal(ToolExecutionCompleteContentTerminal),
4855 ShellExit(ToolExecutionCompleteContentShellExit),
4856 Image(ToolExecutionCompleteContentImage),
4857 Audio(ToolExecutionCompleteContentAudio),
4858 ResourceLink(ToolExecutionCompleteContentResourceLink),
4859 Resource(ToolExecutionCompleteContentResource),
4860}
4861
4862#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4864pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4865 #[serde(rename = "model")]
4867 Model,
4868 #[serde(rename = "app")]
4870 App,
4871 #[default]
4873 #[serde(other)]
4874 Unknown,
4875}
4876
4877#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4879pub enum SkillInvokedTrigger {
4880 #[serde(rename = "user-invoked")]
4882 UserInvoked,
4883 #[serde(rename = "agent-invoked")]
4885 AgentInvoked,
4886 #[serde(rename = "context-load")]
4888 ContextLoad,
4889 #[default]
4891 #[serde(other)]
4892 Unknown,
4893}
4894
4895#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4897pub enum BinaryAssetType {
4898 #[serde(rename = "image")]
4900 Image,
4901 #[serde(rename = "resource")]
4903 Resource,
4904 #[default]
4906 #[serde(other)]
4907 Unknown,
4908}
4909
4910#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4912pub enum SystemMessageRole {
4913 #[serde(rename = "system")]
4915 System,
4916 #[serde(rename = "developer")]
4918 Developer,
4919 #[default]
4921 #[serde(other)]
4922 Unknown,
4923}
4924
4925#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4927pub enum PermissionRequestShellKind {
4928 #[serde(rename = "shell")]
4929 #[default]
4930 Shell,
4931}
4932
4933#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4935pub enum PermissionRequestWriteKind {
4936 #[serde(rename = "write")]
4937 #[default]
4938 Write,
4939}
4940
4941#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4943pub enum PermissionRequestReadKind {
4944 #[serde(rename = "read")]
4945 #[default]
4946 Read,
4947}
4948
4949#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4951pub enum PermissionRequestMcpKind {
4952 #[serde(rename = "mcp")]
4953 #[default]
4954 Mcp,
4955}
4956
4957#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4959pub enum PermissionRequestUrlKind {
4960 #[serde(rename = "url")]
4961 #[default]
4962 Url,
4963}
4964
4965#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4967pub enum PermissionRequestMemoryAction {
4968 #[serde(rename = "store")]
4970 Store,
4971 #[serde(rename = "vote")]
4973 Vote,
4974 #[default]
4976 #[serde(other)]
4977 Unknown,
4978}
4979
4980#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4982pub enum PermissionRequestMemoryDirection {
4983 #[serde(rename = "upvote")]
4985 Upvote,
4986 #[serde(rename = "downvote")]
4988 Downvote,
4989 #[default]
4991 #[serde(other)]
4992 Unknown,
4993}
4994
4995#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4997pub enum PermissionRequestMemoryKind {
4998 #[serde(rename = "memory")]
4999 #[default]
5000 Memory,
5001}
5002
5003#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5005pub enum PermissionRequestCustomToolKind {
5006 #[serde(rename = "custom-tool")]
5007 #[default]
5008 CustomTool,
5009}
5010
5011#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5013pub enum PermissionRequestHookKind {
5014 #[serde(rename = "hook")]
5015 #[default]
5016 Hook,
5017}
5018
5019#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5021pub enum PermissionRequestExtensionManagementKind {
5022 #[serde(rename = "extension-management")]
5023 #[default]
5024 ExtensionManagement,
5025}
5026
5027#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5029pub enum PermissionRequestExtensionPermissionAccessKind {
5030 #[serde(rename = "extension-permission-access")]
5031 #[default]
5032 ExtensionPermissionAccess,
5033}
5034
5035#[derive(Debug, Clone, Serialize, Deserialize)]
5037#[serde(untagged)]
5038pub enum PermissionRequest {
5039 Shell(PermissionRequestShell),
5040 Write(PermissionRequestWrite),
5041 Read(PermissionRequestRead),
5042 Mcp(PermissionRequestMcp),
5043 Url(PermissionRequestUrl),
5044 Memory(PermissionRequestMemory),
5045 CustomTool(PermissionRequestCustomTool),
5046 Hook(PermissionRequestHook),
5047 ExtensionManagement(PermissionRequestExtensionManagement),
5048 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
5049}
5050
5051#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5060pub enum AutoApprovalRecommendation {
5061 #[serde(rename = "approve")]
5063 Approve,
5064 #[serde(rename = "requireApproval")]
5066 RequireApproval,
5067 #[serde(rename = "excluded")]
5069 Excluded,
5070 #[serde(rename = "error")]
5072 Error,
5073 #[default]
5075 #[serde(other)]
5076 Unknown,
5077}
5078
5079#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5081pub enum PermissionPromptRequestCommandsKind {
5082 #[serde(rename = "commands")]
5083 #[default]
5084 Commands,
5085}
5086
5087#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5089pub enum PermissionPromptRequestWriteKind {
5090 #[serde(rename = "write")]
5091 #[default]
5092 Write,
5093}
5094
5095#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5097pub enum PermissionPromptRequestReadKind {
5098 #[serde(rename = "read")]
5099 #[default]
5100 Read,
5101}
5102
5103#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5105pub enum PermissionPromptRequestMcpKind {
5106 #[serde(rename = "mcp")]
5107 #[default]
5108 Mcp,
5109}
5110
5111#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5113pub enum PermissionPromptRequestUrlKind {
5114 #[serde(rename = "url")]
5115 #[default]
5116 Url,
5117}
5118
5119#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5121pub enum PermissionPromptRequestMemoryKind {
5122 #[serde(rename = "memory")]
5123 #[default]
5124 Memory,
5125}
5126
5127#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5129pub enum PermissionPromptRequestCustomToolKind {
5130 #[serde(rename = "custom-tool")]
5131 #[default]
5132 CustomTool,
5133}
5134
5135#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5137pub enum PermissionPromptRequestPathAccessKind {
5138 #[serde(rename = "read")]
5140 Read,
5141 #[serde(rename = "shell")]
5143 Shell,
5144 #[serde(rename = "write")]
5146 Write,
5147 #[default]
5149 #[serde(other)]
5150 Unknown,
5151}
5152
5153#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5155pub enum PermissionPromptRequestPathKind {
5156 #[serde(rename = "path")]
5157 #[default]
5158 Path,
5159}
5160
5161#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5163pub enum PermissionPromptRequestHookKind {
5164 #[serde(rename = "hook")]
5165 #[default]
5166 Hook,
5167}
5168
5169#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5171pub enum PermissionPromptRequestExtensionManagementKind {
5172 #[serde(rename = "extension-management")]
5173 #[default]
5174 ExtensionManagement,
5175}
5176
5177#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5179pub enum PermissionPromptRequestExtensionPermissionAccessKind {
5180 #[serde(rename = "extension-permission-access")]
5181 #[default]
5182 ExtensionPermissionAccess,
5183}
5184
5185#[derive(Debug, Clone, Serialize, Deserialize)]
5187#[serde(untagged)]
5188pub enum PermissionPromptRequest {
5189 Commands(PermissionPromptRequestCommands),
5190 Write(PermissionPromptRequestWrite),
5191 Read(PermissionPromptRequestRead),
5192 Mcp(PermissionPromptRequestMcp),
5193 Url(PermissionPromptRequestUrl),
5194 Memory(PermissionPromptRequestMemory),
5195 CustomTool(PermissionPromptRequestCustomTool),
5196 Path(PermissionPromptRequestPath),
5197 Hook(PermissionPromptRequestHook),
5198 ExtensionManagement(PermissionPromptRequestExtensionManagement),
5199 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
5200}
5201
5202#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5204pub enum PermissionApprovedKind {
5205 #[serde(rename = "approved")]
5206 #[default]
5207 Approved,
5208}
5209
5210#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5212pub enum UserToolSessionApprovalCommandsKind {
5213 #[serde(rename = "commands")]
5214 #[default]
5215 Commands,
5216}
5217
5218#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5220pub enum UserToolSessionApprovalReadKind {
5221 #[serde(rename = "read")]
5222 #[default]
5223 Read,
5224}
5225
5226#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5228pub enum UserToolSessionApprovalWriteKind {
5229 #[serde(rename = "write")]
5230 #[default]
5231 Write,
5232}
5233
5234#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5236pub enum UserToolSessionApprovalMcpKind {
5237 #[serde(rename = "mcp")]
5238 #[default]
5239 Mcp,
5240}
5241
5242#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5244pub enum UserToolSessionApprovalMemoryKind {
5245 #[serde(rename = "memory")]
5246 #[default]
5247 Memory,
5248}
5249
5250#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5252pub enum UserToolSessionApprovalCustomToolKind {
5253 #[serde(rename = "custom-tool")]
5254 #[default]
5255 CustomTool,
5256}
5257
5258#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5260pub enum UserToolSessionApprovalExtensionManagementKind {
5261 #[serde(rename = "extension-management")]
5262 #[default]
5263 ExtensionManagement,
5264}
5265
5266#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5268pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
5269 #[serde(rename = "extension-permission-access")]
5270 #[default]
5271 ExtensionPermissionAccess,
5272}
5273
5274#[derive(Debug, Clone, Serialize, Deserialize)]
5276#[serde(untagged)]
5277pub enum UserToolSessionApproval {
5278 Commands(UserToolSessionApprovalCommands),
5279 Read(UserToolSessionApprovalRead),
5280 Write(UserToolSessionApprovalWrite),
5281 Mcp(UserToolSessionApprovalMcp),
5282 Memory(UserToolSessionApprovalMemory),
5283 CustomTool(UserToolSessionApprovalCustomTool),
5284 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
5285 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
5286}
5287
5288#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5290pub enum PermissionApprovedForSessionKind {
5291 #[serde(rename = "approved-for-session")]
5292 #[default]
5293 ApprovedForSession,
5294}
5295
5296#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5298pub enum PermissionApprovedForLocationKind {
5299 #[serde(rename = "approved-for-location")]
5300 #[default]
5301 ApprovedForLocation,
5302}
5303
5304#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5306pub enum PermissionCancelledKind {
5307 #[serde(rename = "cancelled")]
5308 #[default]
5309 Cancelled,
5310}
5311
5312#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5314pub enum PermissionDeniedByRulesKind {
5315 #[serde(rename = "denied-by-rules")]
5316 #[default]
5317 DeniedByRules,
5318}
5319
5320#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5322pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
5323 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
5324 #[default]
5325 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
5326}
5327
5328#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5330pub enum PermissionDeniedInteractivelyByUserKind {
5331 #[serde(rename = "denied-interactively-by-user")]
5332 #[default]
5333 DeniedInteractivelyByUser,
5334}
5335
5336#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5338pub enum PermissionDeniedByContentExclusionPolicyKind {
5339 #[serde(rename = "denied-by-content-exclusion-policy")]
5340 #[default]
5341 DeniedByContentExclusionPolicy,
5342}
5343
5344#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5346pub enum PermissionDeniedByPermissionRequestHookKind {
5347 #[serde(rename = "denied-by-permission-request-hook")]
5348 #[default]
5349 DeniedByPermissionRequestHook,
5350}
5351
5352#[derive(Debug, Clone, Serialize, Deserialize)]
5354#[serde(untagged)]
5355pub enum PermissionResult {
5356 Approved(PermissionApproved),
5357 ApprovedForSession(PermissionApprovedForSession),
5358 ApprovedForLocation(PermissionApprovedForLocation),
5359 Cancelled(PermissionCancelled),
5360 DeniedByRules(PermissionDeniedByRules),
5361 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
5362 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
5363 ),
5364 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
5365 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
5366 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
5367}
5368
5369#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5371pub enum ElicitationRequestedMode {
5372 #[serde(rename = "form")]
5374 Form,
5375 #[serde(rename = "url")]
5377 Url,
5378 #[default]
5380 #[serde(other)]
5381 Unknown,
5382}
5383
5384#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5386pub enum ElicitationRequestedSchemaType {
5387 #[serde(rename = "object")]
5388 #[default]
5389 Object,
5390}
5391
5392#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5394pub enum ElicitationCompletedAction {
5395 #[serde(rename = "accept")]
5397 Accept,
5398 #[serde(rename = "decline")]
5400 Decline,
5401 #[serde(rename = "cancel")]
5403 Cancel,
5404 #[default]
5406 #[serde(other)]
5407 Unknown,
5408}
5409
5410#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5412pub enum McpOauthRequestReason {
5413 #[serde(rename = "initial")]
5415 Initial,
5416 #[serde(rename = "refresh")]
5418 Refresh,
5419 #[serde(rename = "reauth")]
5421 Reauth,
5422 #[serde(rename = "upscope")]
5424 Upscope,
5425 #[default]
5427 #[serde(other)]
5428 Unknown,
5429}
5430
5431#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5433pub enum McpOauthRequiredStaticClientConfigGrantType {
5434 #[serde(rename = "client_credentials")]
5435 #[default]
5436 ClientCredentials,
5437}
5438
5439#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5441pub enum McpOauthCompletionOutcome {
5442 #[serde(rename = "token")]
5444 Token,
5445 #[serde(rename = "cancelled")]
5447 Cancelled,
5448 #[default]
5450 #[serde(other)]
5451 Unknown,
5452}
5453
5454#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5456pub enum McpHeadersRefreshRequiredReason {
5457 #[serde(rename = "startup")]
5459 Startup,
5460 #[serde(rename = "ttl-expired")]
5462 TtlExpired,
5463 #[serde(rename = "auth-failed")]
5465 AuthFailed,
5466 #[default]
5468 #[serde(other)]
5469 Unknown,
5470}
5471
5472#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5474pub enum McpHeadersRefreshCompletedOutcome {
5475 #[serde(rename = "headers")]
5477 Headers,
5478 #[serde(rename = "none")]
5480 None,
5481 #[serde(rename = "timeout")]
5483 Timeout,
5484 #[default]
5486 #[serde(other)]
5487 Unknown,
5488}
5489
5490#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5492pub enum AutoModeSwitchResponse {
5493 #[serde(rename = "yes")]
5495 Yes,
5496 #[serde(rename = "yes_always")]
5498 YesAlways,
5499 #[serde(rename = "no")]
5501 No,
5502 #[default]
5504 #[serde(other)]
5505 Unknown,
5506}
5507
5508#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5510pub enum SessionLimitsExhaustedResponseAction {
5511 #[serde(rename = "add")]
5513 Add,
5514 #[serde(rename = "set")]
5516 Set,
5517 #[serde(rename = "unset")]
5519 Unset,
5520 #[serde(rename = "cancel")]
5522 Cancel,
5523 #[default]
5525 #[serde(other)]
5526 Unknown,
5527}
5528
5529#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5531pub enum AutoModeResolvedReasoningBucket {
5532 #[serde(rename = "low")]
5534 Low,
5535 #[serde(rename = "medium")]
5537 Medium,
5538 #[serde(rename = "high")]
5540 High,
5541 #[default]
5543 #[serde(other)]
5544 Unknown,
5545}
5546
5547#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5549pub enum ExitPlanModeAction {
5550 #[serde(rename = "exit_only")]
5552 ExitOnly,
5553 #[serde(rename = "interactive")]
5555 Interactive,
5556 #[serde(rename = "autopilot")]
5558 Autopilot,
5559 #[serde(rename = "autopilot_fleet")]
5561 AutopilotFleet,
5562 #[default]
5564 #[serde(other)]
5565 Unknown,
5566}
5567
5568#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5570pub enum SkillSource {
5571 #[serde(rename = "project")]
5573 Project,
5574 #[serde(rename = "inherited")]
5576 Inherited,
5577 #[serde(rename = "personal-copilot")]
5579 PersonalCopilot,
5580 #[serde(rename = "personal-agents")]
5582 PersonalAgents,
5583 #[serde(rename = "plugin")]
5585 Plugin,
5586 #[serde(rename = "custom")]
5588 Custom,
5589 #[serde(rename = "builtin")]
5591 Builtin,
5592 #[default]
5594 #[serde(other)]
5595 Unknown,
5596}
5597
5598#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5600pub enum McpServerSource {
5601 #[serde(rename = "user")]
5603 User,
5604 #[serde(rename = "workspace")]
5606 Workspace,
5607 #[serde(rename = "plugin")]
5609 Plugin,
5610 #[serde(rename = "builtin")]
5612 Builtin,
5613 #[default]
5615 #[serde(other)]
5616 Unknown,
5617}
5618
5619#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5621pub enum McpServerStatus {
5622 #[serde(rename = "connected")]
5624 Connected,
5625 #[serde(rename = "failed")]
5627 Failed,
5628 #[serde(rename = "needs-auth")]
5630 NeedsAuth,
5631 #[serde(rename = "pending")]
5633 Pending,
5634 #[serde(rename = "disabled")]
5636 Disabled,
5637 #[serde(rename = "not_configured")]
5639 NotConfigured,
5640 #[default]
5642 #[serde(other)]
5643 Unknown,
5644}
5645
5646#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5648pub enum McpServerTransport {
5649 #[serde(rename = "stdio")]
5651 Stdio,
5652 #[serde(rename = "http")]
5654 Http,
5655 #[serde(rename = "sse")]
5657 Sse,
5658 #[serde(rename = "memory")]
5660 Memory,
5661 #[default]
5663 #[serde(other)]
5664 Unknown,
5665}
5666
5667#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5669pub enum ExtensionsLoadedExtensionSource {
5670 #[serde(rename = "project")]
5672 Project,
5673 #[serde(rename = "user")]
5675 User,
5676 #[serde(rename = "plugin")]
5678 Plugin,
5679 #[serde(rename = "session")]
5681 Session,
5682 #[default]
5684 #[serde(other)]
5685 Unknown,
5686}
5687
5688#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5690pub enum ExtensionsLoadedExtensionStatus {
5691 #[serde(rename = "running")]
5693 Running,
5694 #[serde(rename = "disabled")]
5696 Disabled,
5697 #[serde(rename = "failed")]
5699 Failed,
5700 #[serde(rename = "starting")]
5702 Starting,
5703 #[default]
5705 #[serde(other)]
5706 Unknown,
5707}