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 = "session.extensions_loaded")]
219 SessionExtensionsLoaded,
220 #[serde(rename = "session.canvas.opened")]
228 SessionCanvasOpened,
229 #[serde(rename = "session.canvas.registry_changed")]
237 SessionCanvasRegistryChanged,
238 #[serde(rename = "session.canvas.closed")]
246 SessionCanvasClosed,
247 #[serde(rename = "session.canvas.unavailable")]
255 SessionCanvasUnavailable,
256 #[serde(rename = "session.canvas.recorded")]
264 SessionCanvasRecorded,
265 #[serde(rename = "session.canvas.removed")]
273 SessionCanvasRemoved,
274 #[serde(rename = "session.extensions.attachments_pushed")]
275 SessionExtensionsAttachmentsPushed,
276 #[serde(rename = "mcp_app.tool_call_complete")]
277 McpAppToolCallComplete,
278 #[default]
280 #[serde(other)]
281 Unknown,
282}
283
284#[derive(Debug, Clone, Serialize, Deserialize)]
288#[serde(tag = "type", content = "data")]
289pub enum SessionEventData {
290 #[serde(rename = "session.start")]
291 SessionStart(SessionStartData),
292 #[serde(rename = "session.resume")]
293 SessionResume(SessionResumeData),
294 #[serde(rename = "session.remote_steerable_changed")]
295 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
296 #[serde(rename = "session.error")]
297 SessionError(SessionErrorData),
298 #[serde(rename = "session.idle")]
299 SessionIdle(SessionIdleData),
300 #[serde(rename = "session.title_changed")]
301 SessionTitleChanged(SessionTitleChangedData),
302 #[serde(rename = "session.schedule_created")]
303 SessionScheduleCreated(SessionScheduleCreatedData),
304 #[serde(rename = "session.schedule_cancelled")]
305 SessionScheduleCancelled(SessionScheduleCancelledData),
306 #[serde(rename = "session.schedule_rearmed")]
307 SessionScheduleRearmed(SessionScheduleRearmedData),
308 #[serde(rename = "session.autopilot_objective_changed")]
309 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
310 #[serde(rename = "session.info")]
311 SessionInfo(SessionInfoData),
312 #[serde(rename = "session.warning")]
313 SessionWarning(SessionWarningData),
314 #[serde(rename = "session.model_change")]
315 SessionModelChange(SessionModelChangeData),
316 #[serde(rename = "session.mode_changed")]
317 SessionModeChanged(SessionModeChangedData),
318 #[serde(rename = "session.session_limits_changed")]
319 SessionSessionLimitsChanged(SessionSessionLimitsChangedData),
320 #[serde(rename = "session.permissions_changed")]
321 SessionPermissionsChanged(SessionPermissionsChangedData),
322 #[serde(rename = "session.plan_changed")]
323 SessionPlanChanged(SessionPlanChangedData),
324 #[serde(rename = "session.todos_changed")]
325 SessionTodosChanged(SessionTodosChangedData),
326 #[serde(rename = "session.workspace_file_changed")]
327 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
328 #[serde(rename = "session.handoff")]
329 SessionHandoff(SessionHandoffData),
330 #[serde(rename = "session.truncation")]
331 SessionTruncation(SessionTruncationData),
332 #[serde(rename = "session.snapshot_rewind")]
333 SessionSnapshotRewind(SessionSnapshotRewindData),
334 #[serde(rename = "session.shutdown")]
335 SessionShutdown(SessionShutdownData),
336 #[serde(rename = "session.usage_checkpoint")]
337 SessionUsageCheckpoint(SessionUsageCheckpointData),
338 #[serde(rename = "session.context_changed")]
339 SessionContextChanged(SessionContextChangedData),
340 #[serde(rename = "session.usage_info")]
341 SessionUsageInfo(SessionUsageInfoData),
342 #[serde(rename = "session.compaction_start")]
343 SessionCompactionStart(SessionCompactionStartData),
344 #[serde(rename = "session.compaction_complete")]
345 SessionCompactionComplete(SessionCompactionCompleteData),
346 #[serde(rename = "session.task_complete")]
347 SessionTaskComplete(SessionTaskCompleteData),
348 #[serde(rename = "user.message")]
349 UserMessage(UserMessageData),
350 #[serde(rename = "pending_messages.modified")]
351 PendingMessagesModified(PendingMessagesModifiedData),
352 #[serde(rename = "assistant.turn_start")]
353 AssistantTurnStart(AssistantTurnStartData),
354 #[serde(rename = "assistant.intent")]
355 AssistantIntent(AssistantIntentData),
356 #[serde(rename = "assistant.reasoning")]
357 AssistantReasoning(AssistantReasoningData),
358 #[serde(rename = "assistant.reasoning_delta")]
359 AssistantReasoningDelta(AssistantReasoningDeltaData),
360 #[serde(rename = "assistant.tool_call_delta")]
361 AssistantToolCallDelta(AssistantToolCallDeltaData),
362 #[serde(rename = "assistant.streaming_delta")]
363 AssistantStreamingDelta(AssistantStreamingDeltaData),
364 #[serde(rename = "assistant.message")]
365 AssistantMessage(AssistantMessageData),
366 #[serde(rename = "assistant.message_start")]
367 AssistantMessageStart(AssistantMessageStartData),
368 #[serde(rename = "assistant.message_delta")]
369 AssistantMessageDelta(AssistantMessageDeltaData),
370 #[serde(rename = "assistant.turn_end")]
371 AssistantTurnEnd(AssistantTurnEndData),
372 #[serde(rename = "assistant.idle")]
373 AssistantIdle(AssistantIdleData),
374 #[serde(rename = "assistant.usage")]
375 AssistantUsage(AssistantUsageData),
376 #[serde(rename = "model.call_failure")]
377 ModelCallFailure(ModelCallFailureData),
378 #[serde(rename = "abort")]
379 Abort(AbortData),
380 #[serde(rename = "tool.user_requested")]
381 ToolUserRequested(ToolUserRequestedData),
382 #[serde(rename = "tool.execution_start")]
383 ToolExecutionStart(ToolExecutionStartData),
384 #[serde(rename = "tool.execution_partial_result")]
385 ToolExecutionPartialResult(ToolExecutionPartialResultData),
386 #[serde(rename = "tool.execution_progress")]
387 ToolExecutionProgress(ToolExecutionProgressData),
388 #[serde(rename = "tool.execution_complete")]
389 ToolExecutionComplete(ToolExecutionCompleteData),
390 #[serde(rename = "skill.invoked")]
391 SkillInvoked(SkillInvokedData),
392 #[serde(rename = "subagent.started")]
393 SubagentStarted(SubagentStartedData),
394 #[serde(rename = "subagent.completed")]
395 SubagentCompleted(SubagentCompletedData),
396 #[serde(rename = "subagent.failed")]
397 SubagentFailed(SubagentFailedData),
398 #[serde(rename = "subagent.selected")]
399 SubagentSelected(SubagentSelectedData),
400 #[serde(rename = "subagent.deselected")]
401 SubagentDeselected(SubagentDeselectedData),
402 #[serde(rename = "hook.start")]
403 HookStart(HookStartData),
404 #[serde(rename = "hook.end")]
405 HookEnd(HookEndData),
406 #[serde(rename = "hook.progress")]
407 HookProgress(HookProgressData),
408 #[serde(rename = "session.binary_asset")]
409 SessionBinaryAsset(SessionBinaryAssetData),
410 #[serde(rename = "system.message")]
411 SystemMessage(SystemMessageData),
412 #[serde(rename = "system.notification")]
413 SystemNotification(SystemNotificationData),
414 #[serde(rename = "permission.requested")]
415 PermissionRequested(PermissionRequestedData),
416 #[serde(rename = "permission.completed")]
417 PermissionCompleted(PermissionCompletedData),
418 #[serde(rename = "user_input.requested")]
419 UserInputRequested(UserInputRequestedData),
420 #[serde(rename = "user_input.completed")]
421 UserInputCompleted(UserInputCompletedData),
422 #[serde(rename = "elicitation.requested")]
423 ElicitationRequested(ElicitationRequestedData),
424 #[serde(rename = "elicitation.completed")]
425 ElicitationCompleted(ElicitationCompletedData),
426 #[serde(rename = "sampling.requested")]
427 SamplingRequested(SamplingRequestedData),
428 #[serde(rename = "sampling.completed")]
429 SamplingCompleted(SamplingCompletedData),
430 #[serde(rename = "mcp.oauth_required")]
431 McpOauthRequired(McpOauthRequiredData),
432 #[serde(rename = "mcp.oauth_completed")]
433 McpOauthCompleted(McpOauthCompletedData),
434 #[serde(rename = "mcp.headers_refresh_required")]
435 McpHeadersRefreshRequired(McpHeadersRefreshRequiredData),
436 #[serde(rename = "mcp.headers_refresh_completed")]
437 McpHeadersRefreshCompleted(McpHeadersRefreshCompletedData),
438 #[serde(rename = "session.custom_notification")]
439 SessionCustomNotification(SessionCustomNotificationData),
440 #[serde(rename = "external_tool.requested")]
441 ExternalToolRequested(ExternalToolRequestedData),
442 #[serde(rename = "external_tool.completed")]
443 ExternalToolCompleted(ExternalToolCompletedData),
444 #[serde(rename = "command.queued")]
445 CommandQueued(CommandQueuedData),
446 #[serde(rename = "command.execute")]
447 CommandExecute(CommandExecuteData),
448 #[serde(rename = "command.completed")]
449 CommandCompleted(CommandCompletedData),
450 #[serde(rename = "auto_mode_switch.requested")]
451 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
452 #[serde(rename = "auto_mode_switch.completed")]
453 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
454 #[serde(rename = "session_limits_exhausted.requested")]
455 SessionLimitsExhaustedRequested(SessionLimitsExhaustedRequestedData),
456 #[serde(rename = "session_limits_exhausted.completed")]
457 SessionLimitsExhaustedCompleted(SessionLimitsExhaustedCompletedData),
458 #[serde(rename = "session.auto_mode_resolved")]
466 SessionAutoModeResolved(SessionAutoModeResolvedData),
467 #[serde(rename = "commands.changed")]
468 CommandsChanged(CommandsChangedData),
469 #[serde(rename = "capabilities.changed")]
470 CapabilitiesChanged(CapabilitiesChangedData),
471 #[serde(rename = "exit_plan_mode.requested")]
472 ExitPlanModeRequested(ExitPlanModeRequestedData),
473 #[serde(rename = "exit_plan_mode.completed")]
474 ExitPlanModeCompleted(ExitPlanModeCompletedData),
475 #[serde(rename = "session.tools_updated")]
476 SessionToolsUpdated(SessionToolsUpdatedData),
477 #[serde(rename = "session.background_tasks_changed")]
478 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
479 #[serde(rename = "session.skills_loaded")]
480 SessionSkillsLoaded(SessionSkillsLoadedData),
481 #[serde(rename = "session.custom_agents_updated")]
482 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
483 #[serde(rename = "session.mcp_servers_loaded")]
484 SessionMcpServersLoaded(SessionMcpServersLoadedData),
485 #[serde(rename = "session.mcp_server_status_changed")]
486 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
487 #[serde(rename = "session.extensions_loaded")]
488 SessionExtensionsLoaded(SessionExtensionsLoadedData),
489 #[serde(rename = "session.canvas.opened")]
497 SessionCanvasOpened(SessionCanvasOpenedData),
498 #[serde(rename = "session.canvas.registry_changed")]
506 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
507 #[serde(rename = "session.canvas.closed")]
515 SessionCanvasClosed(SessionCanvasClosedData),
516 #[serde(rename = "session.canvas.unavailable")]
524 SessionCanvasUnavailable(SessionCanvasUnavailableData),
525 #[serde(rename = "session.canvas.recorded")]
533 SessionCanvasRecorded(SessionCanvasRecordedData),
534 #[serde(rename = "session.canvas.removed")]
542 SessionCanvasRemoved(SessionCanvasRemovedData),
543 #[serde(rename = "session.extensions.attachments_pushed")]
544 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
545 #[serde(rename = "mcp_app.tool_call_complete")]
546 McpAppToolCallComplete(McpAppToolCallCompleteData),
547}
548
549#[derive(Debug, Clone, Serialize, Deserialize)]
555#[serde(rename_all = "camelCase")]
556pub struct TypedSessionEvent {
557 pub id: String,
559 pub timestamp: String,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub parent_id: Option<String>,
564 #[serde(skip_serializing_if = "Option::is_none")]
566 pub ephemeral: Option<bool>,
567 #[serde(skip_serializing_if = "Option::is_none")]
570 pub agent_id: Option<String>,
571 #[serde(flatten)]
573 pub payload: SessionEventData,
574}
575
576#[derive(Debug, Clone, Default, Serialize, Deserialize)]
578#[serde(rename_all = "camelCase")]
579pub struct WorkingDirectoryContext {
580 #[serde(skip_serializing_if = "Option::is_none")]
582 pub base_commit: Option<String>,
583 #[serde(skip_serializing_if = "Option::is_none")]
585 pub branch: Option<String>,
586 pub cwd: String,
588 #[serde(skip_serializing_if = "Option::is_none")]
590 pub git_root: Option<String>,
591 #[serde(skip_serializing_if = "Option::is_none")]
593 pub head_commit: Option<String>,
594 #[serde(skip_serializing_if = "Option::is_none")]
596 pub host_type: Option<WorkingDirectoryContextHostType>,
597 #[serde(skip_serializing_if = "Option::is_none")]
599 pub repository: Option<String>,
600 #[serde(skip_serializing_if = "Option::is_none")]
602 pub repository_host: Option<String>,
603}
604
605#[derive(Debug, Clone, Default, Serialize, Deserialize)]
607#[serde(rename_all = "camelCase")]
608pub struct SessionLimitsConfig {
609 #[serde(skip_serializing_if = "Option::is_none")]
611 pub max_ai_credits: Option<f64>,
612}
613
614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
616#[serde(rename_all = "camelCase")]
617pub struct SessionStartData {
618 #[serde(skip_serializing_if = "Option::is_none")]
620 pub already_in_use: Option<bool>,
621 #[serde(skip_serializing_if = "Option::is_none")]
623 pub context: Option<WorkingDirectoryContext>,
624 #[serde(skip_serializing_if = "Option::is_none")]
626 pub context_tier: Option<ContextTier>,
627 pub copilot_version: String,
629 #[serde(skip_serializing_if = "Option::is_none")]
631 pub detached_from_spawning_parent_session_id: Option<String>,
632 pub producer: String,
634 #[serde(skip_serializing_if = "Option::is_none")]
636 pub reasoning_effort: Option<String>,
637 #[serde(skip_serializing_if = "Option::is_none")]
639 pub reasoning_summary: Option<ReasoningSummary>,
640 #[serde(skip_serializing_if = "Option::is_none")]
642 pub remote_steerable: Option<bool>,
643 #[serde(skip_serializing_if = "Option::is_none")]
645 pub selected_model: Option<String>,
646 pub session_id: SessionId,
648 #[serde(skip_serializing_if = "Option::is_none")]
650 pub session_limits: Option<SessionLimitsConfig>,
651 pub start_time: String,
653 #[serde(skip_serializing_if = "Option::is_none")]
655 pub verbosity: Option<Verbosity>,
656 pub version: i64,
658}
659
660#[derive(Debug, Clone, Default, Serialize, Deserialize)]
662#[serde(rename_all = "camelCase")]
663pub struct SessionResumeData {
664 #[serde(skip_serializing_if = "Option::is_none")]
666 pub already_in_use: Option<bool>,
667 #[serde(skip_serializing_if = "Option::is_none")]
669 pub context: Option<WorkingDirectoryContext>,
670 #[serde(skip_serializing_if = "Option::is_none")]
672 pub context_tier: Option<ContextTier>,
673 #[serde(skip_serializing_if = "Option::is_none")]
675 pub continue_pending_work: Option<bool>,
676 pub event_count: i64,
678 #[serde(skip_serializing_if = "Option::is_none")]
680 pub events_file_size_bytes: Option<i64>,
681 #[serde(skip_serializing_if = "Option::is_none")]
683 pub reasoning_effort: Option<String>,
684 #[serde(skip_serializing_if = "Option::is_none")]
686 pub reasoning_summary: Option<ReasoningSummary>,
687 #[serde(skip_serializing_if = "Option::is_none")]
689 pub remote_steerable: Option<bool>,
690 pub resume_time: String,
692 #[serde(skip_serializing_if = "Option::is_none")]
694 pub selected_model: Option<String>,
695 #[serde(skip_serializing_if = "Option::is_none")]
697 pub session_limits: Option<SessionLimitsConfig>,
698 #[serde(skip_serializing_if = "Option::is_none")]
700 pub session_was_active: Option<bool>,
701 #[serde(skip_serializing_if = "Option::is_none")]
703 pub verbosity: Option<Verbosity>,
704}
705
706#[derive(Debug, Clone, Default, Serialize, Deserialize)]
708#[serde(rename_all = "camelCase")]
709pub struct SessionRemoteSteerableChangedData {
710 pub remote_steerable: bool,
712}
713
714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
716#[serde(rename_all = "camelCase")]
717pub struct SessionErrorData {
718 #[serde(skip_serializing_if = "Option::is_none")]
720 pub eligible_for_auto_switch: Option<bool>,
721 #[serde(skip_serializing_if = "Option::is_none")]
723 pub error_code: Option<String>,
724 pub error_type: String,
726 pub message: String,
728 #[serde(skip_serializing_if = "Option::is_none")]
730 pub provider_call_id: Option<String>,
731 #[serde(skip_serializing_if = "Option::is_none")]
733 pub service_request_id: Option<String>,
734 #[serde(skip_serializing_if = "Option::is_none")]
736 pub stack: Option<String>,
737 #[serde(skip_serializing_if = "Option::is_none")]
739 pub status_code: Option<i32>,
740 #[serde(skip_serializing_if = "Option::is_none")]
742 pub url: Option<String>,
743}
744
745#[derive(Debug, Clone, Default, Serialize, Deserialize)]
747#[serde(rename_all = "camelCase")]
748pub struct SessionIdleData {
749 #[serde(skip_serializing_if = "Option::is_none")]
751 pub aborted: Option<bool>,
752}
753
754#[derive(Debug, Clone, Default, Serialize, Deserialize)]
756#[serde(rename_all = "camelCase")]
757pub struct SessionTitleChangedData {
758 pub title: String,
760}
761
762#[derive(Debug, Clone, Default, Serialize, Deserialize)]
764#[serde(rename_all = "camelCase")]
765pub struct SessionScheduleCreatedData {
766 #[serde(skip_serializing_if = "Option::is_none")]
768 pub at: Option<i64>,
769 #[serde(skip_serializing_if = "Option::is_none")]
771 pub cron: Option<String>,
772 #[serde(skip_serializing_if = "Option::is_none")]
774 pub display_prompt: Option<String>,
775 pub id: i64,
777 #[serde(skip_serializing_if = "Option::is_none")]
779 pub interval_ms: Option<i64>,
780 pub prompt: String,
782 #[serde(skip_serializing_if = "Option::is_none")]
784 pub recurring: Option<bool>,
785 #[serde(skip_serializing_if = "Option::is_none")]
787 pub self_paced: Option<bool>,
788 #[serde(skip_serializing_if = "Option::is_none")]
790 pub tz: Option<String>,
791}
792
793#[derive(Debug, Clone, Default, Serialize, Deserialize)]
795#[serde(rename_all = "camelCase")]
796pub struct SessionScheduleCancelledData {
797 pub id: i64,
799}
800
801#[derive(Debug, Clone, Default, Serialize, Deserialize)]
803#[serde(rename_all = "camelCase")]
804pub struct SessionScheduleRearmedData {
805 pub id: i64,
807 pub next_run_at: i64,
809}
810
811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
813#[serde(rename_all = "camelCase")]
814pub struct SessionAutopilotObjectiveChangedData {
815 #[serde(skip_serializing_if = "Option::is_none")]
817 pub id: Option<i64>,
818 pub operation: AutopilotObjectiveChangedOperation,
820 #[serde(skip_serializing_if = "Option::is_none")]
822 pub status: Option<AutopilotObjectiveChangedStatus>,
823}
824
825#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827#[serde(rename_all = "camelCase")]
828pub struct SessionInfoData {
829 pub info_type: String,
831 pub message: String,
833 #[serde(skip_serializing_if = "Option::is_none")]
835 pub tip: Option<String>,
836 #[serde(skip_serializing_if = "Option::is_none")]
838 pub url: Option<String>,
839}
840
841#[derive(Debug, Clone, Default, Serialize, Deserialize)]
843#[serde(rename_all = "camelCase")]
844pub struct SessionWarningData {
845 pub message: String,
847 #[serde(skip_serializing_if = "Option::is_none")]
849 pub url: Option<String>,
850 pub warning_type: String,
852}
853
854#[derive(Debug, Clone, Default, Serialize, Deserialize)]
856#[serde(rename_all = "camelCase")]
857pub struct SessionModelChangeData {
858 #[serde(skip_serializing_if = "Option::is_none")]
860 pub cause: Option<String>,
861 #[serde(skip_serializing_if = "Option::is_none")]
863 pub context_tier: Option<ContextTier>,
864 pub new_model: String,
866 #[serde(skip_serializing_if = "Option::is_none")]
868 pub previous_model: Option<String>,
869 #[serde(skip_serializing_if = "Option::is_none")]
871 pub previous_reasoning_effort: Option<String>,
872 #[serde(skip_serializing_if = "Option::is_none")]
874 pub previous_reasoning_summary: Option<ReasoningSummary>,
875 #[serde(skip_serializing_if = "Option::is_none")]
877 pub previous_verbosity: Option<Verbosity>,
878 #[serde(skip_serializing_if = "Option::is_none")]
880 pub reasoning_effort: Option<String>,
881 #[serde(skip_serializing_if = "Option::is_none")]
883 pub reasoning_summary: Option<ReasoningSummary>,
884 #[serde(skip_serializing_if = "Option::is_none")]
886 pub verbosity: Option<Verbosity>,
887}
888
889#[derive(Debug, Clone, Default, Serialize, Deserialize)]
891#[serde(rename_all = "camelCase")]
892pub struct SessionModeChangedData {
893 pub new_mode: SessionMode,
895 pub previous_mode: SessionMode,
897}
898
899#[derive(Debug, Clone, Default, Serialize, Deserialize)]
901#[serde(rename_all = "camelCase")]
902pub struct SessionSessionLimitsChangedData {
903 pub session_limits: Option<SessionLimitsConfig>,
905}
906
907#[derive(Debug, Clone, Default, Serialize, Deserialize)]
909#[serde(rename_all = "camelCase")]
910pub struct SessionPermissionsChangedData {
911 #[serde(skip_serializing_if = "Option::is_none")]
920 pub allow_all_permission_mode: Option<PermissionAllowAllMode>,
921 pub allow_all_permissions: bool,
923 #[serde(skip_serializing_if = "Option::is_none")]
932 pub previous_allow_all_permission_mode: Option<PermissionAllowAllMode>,
933 pub previous_allow_all_permissions: bool,
935}
936
937#[derive(Debug, Clone, Default, Serialize, Deserialize)]
939#[serde(rename_all = "camelCase")]
940pub struct SessionPlanChangedData {
941 pub operation: PlanChangedOperation,
943}
944
945#[derive(Debug, Clone, Default, Serialize, Deserialize)]
947#[serde(rename_all = "camelCase")]
948pub struct SessionTodosChangedData {}
949
950#[derive(Debug, Clone, Default, Serialize, Deserialize)]
952#[serde(rename_all = "camelCase")]
953pub struct SessionWorkspaceFileChangedData {
954 pub operation: WorkspaceFileChangedOperation,
956 pub path: String,
958}
959
960#[derive(Debug, Clone, Default, Serialize, Deserialize)]
962#[serde(rename_all = "camelCase")]
963pub struct HandoffRepository {
964 #[serde(skip_serializing_if = "Option::is_none")]
966 pub branch: Option<String>,
967 pub name: String,
969 pub owner: String,
971}
972
973#[derive(Debug, Clone, Default, Serialize, Deserialize)]
975#[serde(rename_all = "camelCase")]
976pub struct SessionHandoffData {
977 #[serde(skip_serializing_if = "Option::is_none")]
979 pub context: Option<String>,
980 pub handoff_time: String,
982 #[serde(skip_serializing_if = "Option::is_none")]
984 pub host: Option<String>,
985 #[serde(skip_serializing_if = "Option::is_none")]
987 pub remote_session_id: Option<SessionId>,
988 #[serde(skip_serializing_if = "Option::is_none")]
990 pub repository: Option<HandoffRepository>,
991 pub source_type: HandoffSourceType,
993 #[serde(skip_serializing_if = "Option::is_none")]
995 pub summary: Option<String>,
996}
997
998#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1000#[serde(rename_all = "camelCase")]
1001pub struct SessionTruncationData {
1002 pub messages_removed_during_truncation: i64,
1004 pub performed_by: String,
1006 pub post_truncation_messages_length: i64,
1008 pub post_truncation_tokens_in_messages: i64,
1010 pub pre_truncation_messages_length: i64,
1012 pub pre_truncation_tokens_in_messages: i64,
1014 pub token_limit: i64,
1016 pub tokens_removed_during_truncation: i64,
1018}
1019
1020#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1022#[serde(rename_all = "camelCase")]
1023pub struct SessionSnapshotRewindData {
1024 pub events_removed: i64,
1026 pub up_to_event_id: String,
1028}
1029
1030#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1032#[serde(rename_all = "camelCase")]
1033pub struct ShutdownCodeChanges {
1034 pub files_modified: Vec<String>,
1036 pub lines_added: i64,
1038 pub lines_removed: i64,
1040}
1041
1042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1044#[serde(rename_all = "camelCase")]
1045pub struct ShutdownModelMetricRequests {
1046 #[serde(skip_serializing_if = "Option::is_none")]
1055 pub cost: Option<f64>,
1056 #[serde(skip_serializing_if = "Option::is_none")]
1065 pub count: Option<i64>,
1066}
1067
1068#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1070#[serde(rename_all = "camelCase")]
1071pub struct ShutdownModelMetricTokenDetail {
1072 pub token_count: i64,
1074}
1075
1076#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1078#[serde(rename_all = "camelCase")]
1079pub struct ShutdownModelMetricUsage {
1080 pub cache_read_tokens: i64,
1082 pub cache_write_tokens: i64,
1084 pub input_tokens: i64,
1086 pub output_tokens: i64,
1088 #[serde(skip_serializing_if = "Option::is_none")]
1090 pub reasoning_tokens: Option<i64>,
1091}
1092
1093#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1095#[serde(rename_all = "camelCase")]
1096pub struct ShutdownModelMetric {
1097 pub requests: ShutdownModelMetricRequests,
1099 #[serde(skip_serializing_if = "Option::is_none")]
1101 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
1102 #[serde(skip_serializing_if = "Option::is_none")]
1111 pub total_nano_aiu: Option<f64>,
1112 pub usage: ShutdownModelMetricUsage,
1114}
1115
1116#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1118#[serde(rename_all = "camelCase")]
1119pub struct ShutdownTokenDetail {
1120 pub token_count: i64,
1122}
1123
1124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1126#[serde(rename_all = "camelCase")]
1127pub struct SessionShutdownData {
1128 pub code_changes: ShutdownCodeChanges,
1130 #[serde(skip_serializing_if = "Option::is_none")]
1132 pub conversation_tokens: Option<i64>,
1133 #[serde(skip_serializing_if = "Option::is_none")]
1135 pub current_model: Option<String>,
1136 #[serde(skip_serializing_if = "Option::is_none")]
1138 pub current_tokens: Option<i64>,
1139 #[serde(skip_serializing_if = "Option::is_none")]
1141 pub error_reason: Option<String>,
1142 #[serde(skip_serializing_if = "Option::is_none")]
1144 pub events_file_size_bytes: Option<i64>,
1145 pub model_metrics: HashMap<String, ShutdownModelMetric>,
1147 pub session_start_time: i64,
1149 pub shutdown_type: ShutdownType,
1151 #[serde(skip_serializing_if = "Option::is_none")]
1153 pub system_tokens: Option<i64>,
1154 #[serde(skip_serializing_if = "Option::is_none")]
1156 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
1157 #[serde(skip_serializing_if = "Option::is_none")]
1159 pub tool_definitions_tokens: Option<i64>,
1160 pub total_api_duration_ms: i64,
1162 #[serde(skip_serializing_if = "Option::is_none")]
1171 pub total_nano_aiu: Option<f64>,
1172 #[doc(hidden)]
1174 #[serde(skip_serializing_if = "Option::is_none")]
1175 pub(crate) total_premium_requests: Option<f64>,
1176}
1177
1178#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1180#[serde(rename_all = "camelCase")]
1181pub struct SessionUsageCheckpointData {
1182 pub total_nano_aiu: 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 SessionContextChangedData {
1194 #[serde(skip_serializing_if = "Option::is_none")]
1196 pub base_commit: Option<String>,
1197 #[serde(skip_serializing_if = "Option::is_none")]
1199 pub branch: Option<String>,
1200 pub cwd: String,
1202 #[serde(skip_serializing_if = "Option::is_none")]
1204 pub git_root: Option<String>,
1205 #[serde(skip_serializing_if = "Option::is_none")]
1207 pub head_commit: Option<String>,
1208 #[serde(skip_serializing_if = "Option::is_none")]
1210 pub host_type: Option<WorkingDirectoryContextHostType>,
1211 #[serde(skip_serializing_if = "Option::is_none")]
1213 pub repository: Option<String>,
1214 #[serde(skip_serializing_if = "Option::is_none")]
1216 pub repository_host: Option<String>,
1217}
1218
1219#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1221#[serde(rename_all = "camelCase")]
1222pub struct SessionUsageInfoData {
1223 #[serde(skip_serializing_if = "Option::is_none")]
1225 pub conversation_tokens: Option<i64>,
1226 pub current_tokens: i64,
1228 #[serde(skip_serializing_if = "Option::is_none")]
1230 pub is_initial: Option<bool>,
1231 pub messages_length: i64,
1233 #[serde(skip_serializing_if = "Option::is_none")]
1235 pub system_tokens: Option<i64>,
1236 pub token_limit: i64,
1238 #[serde(skip_serializing_if = "Option::is_none")]
1240 pub tool_definitions_tokens: Option<i64>,
1241}
1242
1243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245#[serde(rename_all = "camelCase")]
1246pub struct SessionCompactionStartData {
1247 #[serde(skip_serializing_if = "Option::is_none")]
1249 pub conversation_tokens: Option<i64>,
1250 #[serde(skip_serializing_if = "Option::is_none")]
1252 pub model: Option<String>,
1253 #[serde(skip_serializing_if = "Option::is_none")]
1255 pub system_tokens: Option<i64>,
1256 #[serde(skip_serializing_if = "Option::is_none")]
1258 pub tool_definitions_tokens: Option<i64>,
1259}
1260
1261#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1263#[serde(rename_all = "camelCase")]
1264pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1265 pub batch_size: i64,
1267 pub cost_per_batch: i64,
1269 pub token_count: i64,
1271 pub token_type: String,
1273}
1274
1275#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1277#[serde(rename_all = "camelCase")]
1278pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1279 #[doc(hidden)]
1281 #[serde(skip_serializing_if = "Option::is_none")]
1282 pub(crate) token_details:
1283 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1284 pub total_nano_aiu: f64,
1286}
1287
1288#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1290#[serde(rename_all = "camelCase")]
1291pub struct CompactionCompleteCompactionTokensUsed {
1292 #[serde(skip_serializing_if = "Option::is_none")]
1294 pub cache_read_tokens: Option<i64>,
1295 #[serde(skip_serializing_if = "Option::is_none")]
1297 pub cache_write_tokens: Option<i64>,
1298 #[doc(hidden)]
1300 #[serde(skip_serializing_if = "Option::is_none")]
1301 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1302 #[serde(skip_serializing_if = "Option::is_none")]
1304 pub duration: Option<i64>,
1305 #[serde(skip_serializing_if = "Option::is_none")]
1307 pub input_tokens: Option<i64>,
1308 #[serde(skip_serializing_if = "Option::is_none")]
1310 pub model: Option<String>,
1311 #[serde(skip_serializing_if = "Option::is_none")]
1313 pub output_tokens: Option<i64>,
1314}
1315
1316#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1318#[serde(rename_all = "camelCase")]
1319pub struct SessionCompactionCompleteData {
1320 #[serde(skip_serializing_if = "Option::is_none")]
1322 pub checkpoint_number: Option<i64>,
1323 #[serde(skip_serializing_if = "Option::is_none")]
1325 pub checkpoint_path: Option<String>,
1326 #[serde(skip_serializing_if = "Option::is_none")]
1328 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1329 #[serde(skip_serializing_if = "Option::is_none")]
1331 pub conversation_tokens: Option<i64>,
1332 #[serde(skip_serializing_if = "Option::is_none")]
1334 pub custom_instructions: Option<String>,
1335 #[serde(skip_serializing_if = "Option::is_none")]
1337 pub error: Option<String>,
1338 #[serde(skip_serializing_if = "Option::is_none")]
1340 pub messages_removed: Option<i64>,
1341 #[serde(skip_serializing_if = "Option::is_none")]
1343 pub post_compaction_tokens: Option<i64>,
1344 #[serde(skip_serializing_if = "Option::is_none")]
1346 pub pre_compaction_messages_length: Option<i64>,
1347 #[serde(skip_serializing_if = "Option::is_none")]
1349 pub pre_compaction_tokens: Option<i64>,
1350 #[serde(skip_serializing_if = "Option::is_none")]
1352 pub request_id: Option<RequestId>,
1353 #[serde(skip_serializing_if = "Option::is_none")]
1355 pub service_request_id: Option<String>,
1356 #[serde(skip_serializing_if = "Option::is_none")]
1358 pub status_code: Option<i64>,
1359 pub success: bool,
1361 #[serde(skip_serializing_if = "Option::is_none")]
1363 pub summary_content: Option<String>,
1364 #[serde(skip_serializing_if = "Option::is_none")]
1366 pub system_tokens: Option<i64>,
1367 #[serde(skip_serializing_if = "Option::is_none")]
1369 pub tokens_removed: Option<i64>,
1370 #[serde(skip_serializing_if = "Option::is_none")]
1372 pub tool_definitions_tokens: Option<i64>,
1373}
1374
1375#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1377#[serde(rename_all = "camelCase")]
1378pub struct SessionTaskCompleteData {
1379 #[serde(skip_serializing_if = "Option::is_none")]
1381 pub success: Option<bool>,
1382 #[serde(skip_serializing_if = "Option::is_none")]
1384 pub summary: Option<String>,
1385}
1386
1387#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1389#[serde(rename_all = "camelCase")]
1390pub struct UserMessageData {
1391 #[serde(skip_serializing_if = "Option::is_none")]
1393 pub agent_mode: Option<UserMessageAgentMode>,
1394 #[serde(skip_serializing_if = "Option::is_none")]
1396 pub attachments: Option<Vec<serde_json::Value>>,
1397 pub content: String,
1399 #[serde(skip_serializing_if = "Option::is_none")]
1401 pub delivery: Option<UserMessageDelivery>,
1402 #[serde(skip_serializing_if = "Option::is_none")]
1404 pub interaction_id: Option<String>,
1405 #[serde(skip_serializing_if = "Option::is_none")]
1407 pub is_autopilot_continuation: Option<bool>,
1408 #[serde(skip_serializing_if = "Option::is_none")]
1410 pub native_document_path_fallback_paths: Option<Vec<String>>,
1411 #[serde(skip_serializing_if = "Option::is_none")]
1413 pub parent_agent_task_id: Option<String>,
1414 #[serde(skip_serializing_if = "Option::is_none")]
1416 pub source: Option<String>,
1417 #[serde(skip_serializing_if = "Option::is_none")]
1419 pub supported_native_document_mime_types: Option<Vec<String>>,
1420 #[serde(skip_serializing_if = "Option::is_none")]
1422 pub transformed_content: Option<String>,
1423}
1424
1425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1427#[serde(rename_all = "camelCase")]
1428pub struct PendingMessagesModifiedData {}
1429
1430#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1432#[serde(rename_all = "camelCase")]
1433pub struct AssistantTurnStartData {
1434 #[serde(skip_serializing_if = "Option::is_none")]
1436 pub interaction_id: Option<String>,
1437 #[serde(skip_serializing_if = "Option::is_none")]
1439 pub model: Option<String>,
1440 pub turn_id: String,
1442}
1443
1444#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1446#[serde(rename_all = "camelCase")]
1447pub struct AssistantIntentData {
1448 pub intent: String,
1450}
1451
1452#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1454#[serde(rename_all = "camelCase")]
1455pub struct AssistantReasoningData {
1456 pub content: String,
1458 pub reasoning_id: String,
1460}
1461
1462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1464#[serde(rename_all = "camelCase")]
1465pub struct AssistantReasoningDeltaData {
1466 pub delta_content: String,
1468 pub reasoning_id: String,
1470}
1471
1472#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1474#[serde(rename_all = "camelCase")]
1475pub struct AssistantToolCallDeltaData {
1476 pub input_delta: String,
1478 pub tool_call_id: String,
1480 #[serde(skip_serializing_if = "Option::is_none")]
1482 pub tool_name: Option<String>,
1483 #[serde(skip_serializing_if = "Option::is_none")]
1485 pub tool_type: Option<AssistantMessageToolRequestType>,
1486}
1487
1488#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1490#[serde(rename_all = "camelCase")]
1491pub struct AssistantStreamingDeltaData {
1492 pub total_response_size_bytes: i64,
1494}
1495
1496#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1505#[serde(rename_all = "camelCase")]
1506pub struct CitationSource {
1507 pub id: String,
1509 #[serde(skip_serializing_if = "Option::is_none")]
1511 pub path: Option<String>,
1512 pub provider: CitationProvider,
1514 #[serde(skip_serializing_if = "Option::is_none")]
1516 pub title: Option<String>,
1517 #[serde(skip_serializing_if = "Option::is_none")]
1519 pub url: Option<String>,
1520}
1521
1522#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1531#[serde(rename_all = "camelCase")]
1532pub struct CitationReference {
1533 #[serde(skip_serializing_if = "Option::is_none")]
1535 pub cited_text: Option<String>,
1536 #[serde(skip_serializing_if = "Option::is_none")]
1538 pub location: Option<serde_json::Value>,
1539 #[serde(skip_serializing_if = "Option::is_none")]
1541 pub provider_metadata: Option<serde_json::Value>,
1542 pub source_id: String,
1544}
1545
1546#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1555#[serde(rename_all = "camelCase")]
1556pub struct CitationSpan {
1557 pub end_index: i64,
1559 pub references: Vec<CitationReference>,
1561 pub start_index: i64,
1563}
1564
1565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1574#[serde(rename_all = "camelCase")]
1575pub struct Citations {
1576 pub sources: Vec<CitationSource>,
1578 pub spans: Vec<CitationSpan>,
1580}
1581
1582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1591#[serde(rename_all = "camelCase")]
1592pub struct AssistantMessageServerTools {
1593 #[serde(skip_serializing_if = "Option::is_none")]
1594 pub advisor_model: Option<String>,
1595 #[serde(skip_serializing_if = "Option::is_none")]
1596 pub function_call_namespaces: Option<HashMap<String, String>>,
1597 #[serde(skip_serializing_if = "Option::is_none")]
1598 pub items: Option<Vec<serde_json::Value>>,
1599 pub provider: String,
1600 #[serde(skip_serializing_if = "Option::is_none")]
1601 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1602}
1603
1604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1606#[serde(rename_all = "camelCase")]
1607pub struct AssistantMessageToolRequest {
1608 #[serde(skip_serializing_if = "Option::is_none")]
1610 pub arguments: Option<serde_json::Value>,
1611 #[serde(skip_serializing_if = "Option::is_none")]
1613 pub intention_summary: Option<String>,
1614 #[serde(skip_serializing_if = "Option::is_none")]
1616 pub mcp_server_name: Option<String>,
1617 #[serde(skip_serializing_if = "Option::is_none")]
1619 pub mcp_tool_name: Option<String>,
1620 pub name: String,
1622 pub tool_call_id: String,
1624 #[serde(skip_serializing_if = "Option::is_none")]
1626 pub tool_title: Option<String>,
1627 #[serde(skip_serializing_if = "Option::is_none")]
1629 pub r#type: Option<AssistantMessageToolRequestType>,
1630}
1631
1632#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1634#[serde(rename_all = "camelCase")]
1635pub struct AssistantMessageData {
1636 #[serde(skip_serializing_if = "Option::is_none")]
1638 pub api_call_id: Option<String>,
1639 #[serde(skip_serializing_if = "Option::is_none")]
1648 pub citations: Option<Citations>,
1649 #[serde(skip_serializing_if = "Option::is_none")]
1651 pub client_request_id: Option<String>,
1652 pub content: String,
1654 #[serde(skip_serializing_if = "Option::is_none")]
1656 pub encrypted_content: Option<String>,
1657 #[serde(skip_serializing_if = "Option::is_none")]
1659 pub interaction_id: Option<String>,
1660 pub message_id: String,
1662 #[serde(skip_serializing_if = "Option::is_none")]
1664 pub model: Option<String>,
1665 #[serde(skip_serializing_if = "Option::is_none")]
1667 pub output_tokens: Option<i64>,
1668 #[doc(hidden)]
1670 #[deprecated]
1671 #[serde(skip_serializing_if = "Option::is_none")]
1672 pub parent_tool_call_id: Option<String>,
1673 #[serde(skip_serializing_if = "Option::is_none")]
1675 pub phase: Option<String>,
1676 #[serde(skip_serializing_if = "Option::is_none")]
1678 pub reasoning_opaque: Option<String>,
1679 #[serde(skip_serializing_if = "Option::is_none")]
1681 pub reasoning_text: Option<String>,
1682 #[serde(skip_serializing_if = "Option::is_none")]
1684 pub reasoning_wire_field: Option<String>,
1685 #[serde(skip_serializing_if = "Option::is_none")]
1687 pub request_id: Option<RequestId>,
1688 #[serde(skip_serializing_if = "Option::is_none")]
1690 pub server_tools: Option<AssistantMessageServerTools>,
1691 #[serde(skip_serializing_if = "Option::is_none")]
1693 pub service_request_id: Option<String>,
1694 #[serde(skip_serializing_if = "Option::is_none")]
1696 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1697 #[serde(skip_serializing_if = "Option::is_none")]
1699 pub turn_id: Option<String>,
1700}
1701
1702#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1704#[serde(rename_all = "camelCase")]
1705pub struct AssistantMessageStartData {
1706 pub message_id: String,
1708 #[serde(skip_serializing_if = "Option::is_none")]
1710 pub phase: Option<String>,
1711}
1712
1713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1715#[serde(rename_all = "camelCase")]
1716pub struct AssistantMessageDeltaData {
1717 pub delta_content: String,
1719 pub message_id: String,
1721 #[doc(hidden)]
1723 #[deprecated]
1724 #[serde(skip_serializing_if = "Option::is_none")]
1725 pub parent_tool_call_id: Option<String>,
1726}
1727
1728#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1730#[serde(rename_all = "camelCase")]
1731pub struct AssistantTurnEndData {
1732 #[serde(skip_serializing_if = "Option::is_none")]
1734 pub model: Option<String>,
1735 pub turn_id: String,
1737}
1738
1739#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1741#[serde(rename_all = "camelCase")]
1742pub struct AssistantIdleData {
1743 #[serde(skip_serializing_if = "Option::is_none")]
1745 pub aborted: Option<bool>,
1746}
1747
1748#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1750#[serde(rename_all = "camelCase")]
1751pub struct AssistantUsageCopilotUsageTokenDetail {
1752 pub batch_size: i64,
1754 pub cost_per_batch: i64,
1756 pub token_count: i64,
1758 pub token_type: String,
1760}
1761
1762#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1764#[serde(rename_all = "camelCase")]
1765pub struct AssistantUsageCopilotUsage {
1766 #[doc(hidden)]
1768 #[serde(skip_serializing_if = "Option::is_none")]
1769 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1770 pub total_nano_aiu: f64,
1772}
1773
1774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1776#[serde(rename_all = "camelCase")]
1777pub(crate) struct AssistantUsageQuotaSnapshot {
1778 #[doc(hidden)]
1780 pub(crate) entitlement_requests: i64,
1781 #[doc(hidden)]
1783 #[serde(skip_serializing_if = "Option::is_none")]
1784 pub(crate) has_quota: Option<bool>,
1785 #[doc(hidden)]
1787 pub(crate) is_unlimited_entitlement: bool,
1788 #[doc(hidden)]
1790 pub(crate) overage: f64,
1791 #[doc(hidden)]
1793 pub(crate) overage_allowed_with_exhausted_quota: bool,
1794 #[doc(hidden)]
1796 #[serde(skip_serializing_if = "Option::is_none")]
1797 pub(crate) overage_entitlement: Option<f64>,
1798 #[doc(hidden)]
1800 pub(crate) remaining_percentage: f64,
1801 #[doc(hidden)]
1803 #[serde(skip_serializing_if = "Option::is_none")]
1804 pub(crate) reset_date: Option<String>,
1805 #[doc(hidden)]
1807 #[serde(skip_serializing_if = "Option::is_none")]
1808 pub(crate) token_based_billing: Option<bool>,
1809 #[doc(hidden)]
1811 pub(crate) usage_allowed_with_exhausted_quota: bool,
1812 #[doc(hidden)]
1814 pub(crate) used_requests: i64,
1815}
1816
1817#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1819#[serde(rename_all = "camelCase")]
1820pub struct AssistantUsageData {
1821 #[serde(skip_serializing_if = "Option::is_none")]
1823 pub api_call_id: Option<String>,
1824 #[serde(skip_serializing_if = "Option::is_none")]
1826 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1827 #[serde(skip_serializing_if = "Option::is_none")]
1829 pub cache_read_tokens: Option<i64>,
1830 #[serde(skip_serializing_if = "Option::is_none")]
1832 pub cache_write_tokens: Option<i64>,
1833 #[serde(skip_serializing_if = "Option::is_none")]
1835 pub content_filter_triggered: Option<bool>,
1836 #[serde(skip_serializing_if = "Option::is_none")]
1838 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1839 #[serde(skip_serializing_if = "Option::is_none")]
1848 pub cost: Option<f64>,
1849 #[serde(skip_serializing_if = "Option::is_none")]
1851 pub duration: Option<i64>,
1852 #[serde(skip_serializing_if = "Option::is_none")]
1854 pub finish_reason: Option<String>,
1855 #[serde(skip_serializing_if = "Option::is_none")]
1857 pub initiator: Option<String>,
1858 #[serde(skip_serializing_if = "Option::is_none")]
1860 pub input_tokens: Option<i64>,
1861 #[serde(skip_serializing_if = "Option::is_none")]
1863 pub inter_token_latency_ms: Option<f64>,
1864 pub model: String,
1866 #[serde(skip_serializing_if = "Option::is_none")]
1868 pub output_tokens: Option<i64>,
1869 #[doc(hidden)]
1871 #[deprecated]
1872 #[serde(skip_serializing_if = "Option::is_none")]
1873 pub parent_tool_call_id: Option<String>,
1874 #[serde(skip_serializing_if = "Option::is_none")]
1876 pub provider_call_id: Option<String>,
1877 #[doc(hidden)]
1879 #[serde(skip_serializing_if = "Option::is_none")]
1880 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1881 #[serde(skip_serializing_if = "Option::is_none")]
1883 pub reasoning_effort: Option<String>,
1884 #[serde(skip_serializing_if = "Option::is_none")]
1886 pub reasoning_tokens: Option<i64>,
1887 #[serde(skip_serializing_if = "Option::is_none")]
1889 pub service_request_id: Option<String>,
1890 #[serde(skip_serializing_if = "Option::is_none")]
1892 pub time_to_first_token_ms: Option<f64>,
1893}
1894
1895#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1897#[serde(rename_all = "camelCase")]
1898pub struct ModelCallFailureRequestFingerprint {
1899 pub image_part_count: i64,
1901 pub image_parts_missing_media_type: i64,
1903 #[serde(skip_serializing_if = "Option::is_none")]
1905 pub last_message_role: Option<String>,
1906 pub message_count: i64,
1908 pub nameless_tool_call_count: i64,
1910 pub tool_call_count: i64,
1912 pub tool_result_message_count: i64,
1914}
1915
1916#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1918#[serde(rename_all = "camelCase")]
1919pub struct ModelCallFailureData {
1920 #[serde(skip_serializing_if = "Option::is_none")]
1922 pub api_call_id: Option<String>,
1923 #[serde(skip_serializing_if = "Option::is_none")]
1925 pub bad_request_kind: Option<ModelCallFailureBadRequestKind>,
1926 #[serde(skip_serializing_if = "Option::is_none")]
1928 pub duration_ms: Option<i64>,
1929 #[serde(skip_serializing_if = "Option::is_none")]
1931 pub error_code: Option<String>,
1932 #[serde(skip_serializing_if = "Option::is_none")]
1934 pub error_message: Option<String>,
1935 #[serde(skip_serializing_if = "Option::is_none")]
1937 pub error_type: Option<String>,
1938 #[serde(skip_serializing_if = "Option::is_none")]
1940 pub initiator: Option<String>,
1941 #[serde(skip_serializing_if = "Option::is_none")]
1943 pub model: Option<String>,
1944 #[serde(skip_serializing_if = "Option::is_none")]
1946 pub provider_call_id: Option<String>,
1947 #[doc(hidden)]
1949 #[serde(skip_serializing_if = "Option::is_none")]
1950 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1951 #[serde(skip_serializing_if = "Option::is_none")]
1953 pub request_fingerprint: Option<ModelCallFailureRequestFingerprint>,
1954 #[serde(skip_serializing_if = "Option::is_none")]
1956 pub service_request_id: Option<String>,
1957 pub source: ModelCallFailureSource,
1959 #[serde(skip_serializing_if = "Option::is_none")]
1961 pub status_code: Option<i32>,
1962}
1963
1964#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1966#[serde(rename_all = "camelCase")]
1967pub struct AbortData {
1968 pub reason: AbortReason,
1970}
1971
1972#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1974#[serde(rename_all = "camelCase")]
1975pub struct ToolUserRequestedData {
1976 #[serde(skip_serializing_if = "Option::is_none")]
1978 pub arguments: Option<serde_json::Value>,
1979 pub tool_call_id: String,
1981 pub tool_name: String,
1983}
1984
1985#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1987#[serde(rename_all = "camelCase")]
1988pub struct ToolExecutionStartShellToolInfo {
1989 pub has_write_file_redirection: bool,
1991 pub possible_paths: Vec<String>,
1993}
1994
1995#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1997#[serde(rename_all = "camelCase")]
1998pub struct ToolExecutionStartToolDescriptionMetaUI {
1999 #[serde(skip_serializing_if = "Option::is_none")]
2001 pub resource_uri: Option<String>,
2002 #[serde(skip_serializing_if = "Option::is_none")]
2004 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
2005}
2006
2007#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2009#[serde(rename_all = "camelCase")]
2010pub struct ToolExecutionStartToolDescriptionMeta {
2011 #[serde(skip_serializing_if = "Option::is_none")]
2013 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
2014}
2015
2016#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2018#[serde(rename_all = "camelCase")]
2019pub struct ToolExecutionStartToolDescription {
2020 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2022 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
2023 #[serde(skip_serializing_if = "Option::is_none")]
2025 pub description: Option<String>,
2026 pub name: String,
2028}
2029
2030#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2032#[serde(rename_all = "camelCase")]
2033pub struct ToolExecutionStartData {
2034 #[serde(skip_serializing_if = "Option::is_none")]
2036 pub arguments: Option<serde_json::Value>,
2037 #[serde(skip_serializing_if = "Option::is_none")]
2039 pub display_verbatim: Option<bool>,
2040 #[serde(skip_serializing_if = "Option::is_none")]
2042 pub mcp_server_name: Option<String>,
2043 #[serde(skip_serializing_if = "Option::is_none")]
2045 pub mcp_tool_name: Option<String>,
2046 #[serde(skip_serializing_if = "Option::is_none")]
2048 pub model: Option<String>,
2049 #[doc(hidden)]
2051 #[deprecated]
2052 #[serde(skip_serializing_if = "Option::is_none")]
2053 pub parent_tool_call_id: Option<String>,
2054 #[serde(skip_serializing_if = "Option::is_none")]
2056 pub shell_tool_info: Option<ToolExecutionStartShellToolInfo>,
2057 pub tool_call_id: String,
2059 #[serde(skip_serializing_if = "Option::is_none")]
2061 pub tool_description: Option<ToolExecutionStartToolDescription>,
2062 pub tool_name: String,
2064 #[serde(skip_serializing_if = "Option::is_none")]
2066 pub turn_id: Option<String>,
2067}
2068
2069#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2071#[serde(rename_all = "camelCase")]
2072pub struct ToolExecutionPartialResultData {
2073 pub partial_output: String,
2075 pub tool_call_id: String,
2077}
2078
2079#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2081#[serde(rename_all = "camelCase")]
2082pub struct ToolExecutionProgressData {
2083 pub progress_message: String,
2085 pub tool_call_id: String,
2087}
2088
2089#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2091#[serde(rename_all = "camelCase")]
2092pub struct ToolExecutionCompleteError {
2093 #[serde(skip_serializing_if = "Option::is_none")]
2095 pub code: Option<String>,
2096 pub message: String,
2098}
2099
2100#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2109#[serde(rename_all = "camelCase")]
2110pub struct CitableSource {
2111 pub content: String,
2113 pub id: String,
2115 #[serde(skip_serializing_if = "Option::is_none")]
2117 pub path: Option<String>,
2118 #[serde(skip_serializing_if = "Option::is_none")]
2120 pub title: Option<String>,
2121 #[serde(skip_serializing_if = "Option::is_none")]
2123 pub url: Option<String>,
2124}
2125
2126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2128#[serde(rename_all = "camelCase")]
2129pub struct ToolExecutionCompleteContentText {
2130 pub text: String,
2132 pub r#type: ToolExecutionCompleteContentTextType,
2134}
2135
2136#[doc(hidden)]
2138#[deprecated]
2139#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2140#[serde(rename_all = "camelCase")]
2141pub struct ToolExecutionCompleteContentTerminal {
2142 #[serde(skip_serializing_if = "Option::is_none")]
2144 pub cwd: Option<String>,
2145 #[serde(skip_serializing_if = "Option::is_none")]
2147 pub exit_code: Option<i64>,
2148 pub text: String,
2150 pub r#type: ToolExecutionCompleteContentTerminalType,
2152}
2153
2154#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2156#[serde(rename_all = "camelCase")]
2157pub struct ToolExecutionCompleteContentShellExit {
2158 #[serde(skip_serializing_if = "Option::is_none")]
2160 pub cwd: Option<String>,
2161 pub exit_code: i64,
2163 #[serde(skip_serializing_if = "Option::is_none")]
2165 pub output_preview: Option<String>,
2166 #[serde(skip_serializing_if = "Option::is_none")]
2168 pub output_truncated: Option<bool>,
2169 pub shell_id: String,
2171 pub r#type: ToolExecutionCompleteContentShellExitType,
2173}
2174
2175#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2177#[serde(rename_all = "camelCase")]
2178pub struct ToolExecutionCompleteContentImage {
2179 pub data: String,
2181 pub mime_type: String,
2183 pub r#type: ToolExecutionCompleteContentImageType,
2185}
2186
2187#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2189#[serde(rename_all = "camelCase")]
2190pub struct ToolExecutionCompleteContentAudio {
2191 pub data: String,
2193 pub mime_type: String,
2195 pub r#type: ToolExecutionCompleteContentAudioType,
2197}
2198
2199#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2201#[serde(rename_all = "camelCase")]
2202pub struct ToolExecutionCompleteContentResourceLinkIcon {
2203 #[serde(skip_serializing_if = "Option::is_none")]
2205 pub mime_type: Option<String>,
2206 #[serde(skip_serializing_if = "Option::is_none")]
2208 pub sizes: Option<Vec<String>>,
2209 pub src: String,
2211 #[serde(skip_serializing_if = "Option::is_none")]
2213 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
2214}
2215
2216#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2218#[serde(rename_all = "camelCase")]
2219pub struct ToolExecutionCompleteContentResourceLink {
2220 #[serde(skip_serializing_if = "Option::is_none")]
2222 pub description: Option<String>,
2223 #[serde(skip_serializing_if = "Option::is_none")]
2225 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
2226 #[serde(skip_serializing_if = "Option::is_none")]
2228 pub mime_type: Option<String>,
2229 pub name: String,
2231 #[serde(skip_serializing_if = "Option::is_none")]
2233 pub size: Option<i64>,
2234 #[serde(skip_serializing_if = "Option::is_none")]
2236 pub title: Option<String>,
2237 pub r#type: ToolExecutionCompleteContentResourceLinkType,
2239 pub uri: String,
2241}
2242
2243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2245#[serde(rename_all = "camelCase")]
2246pub struct EmbeddedTextResourceContents {
2247 #[serde(skip_serializing_if = "Option::is_none")]
2249 pub mime_type: Option<String>,
2250 pub text: String,
2252 pub uri: String,
2254}
2255
2256#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2258#[serde(rename_all = "camelCase")]
2259pub struct EmbeddedBlobResourceContents {
2260 pub blob: String,
2262 #[serde(skip_serializing_if = "Option::is_none")]
2264 pub mime_type: Option<String>,
2265 pub uri: String,
2267}
2268
2269#[derive(Debug, Clone, Serialize, Deserialize)]
2271#[serde(rename_all = "camelCase")]
2272pub struct ToolExecutionCompleteContentResource {
2273 pub resource: ToolExecutionCompleteContentResourceDetails,
2275 pub r#type: ToolExecutionCompleteContentResourceType,
2277}
2278
2279#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2281#[serde(rename_all = "camelCase")]
2282pub struct ToolExecutionCompleteUIResourceMetaUICsp {
2283 #[serde(skip_serializing_if = "Option::is_none")]
2284 pub base_uri_domains: Option<Vec<String>>,
2285 #[serde(skip_serializing_if = "Option::is_none")]
2286 pub connect_domains: Option<Vec<String>>,
2287 #[serde(skip_serializing_if = "Option::is_none")]
2288 pub frame_domains: Option<Vec<String>>,
2289 #[serde(skip_serializing_if = "Option::is_none")]
2290 pub resource_domains: Option<Vec<String>>,
2291}
2292
2293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2295#[serde(rename_all = "camelCase")]
2296pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
2297
2298#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2300#[serde(rename_all = "camelCase")]
2301pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
2302
2303#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2305#[serde(rename_all = "camelCase")]
2306pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
2307
2308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2310#[serde(rename_all = "camelCase")]
2311pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
2312
2313#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2315#[serde(rename_all = "camelCase")]
2316pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
2317 #[serde(skip_serializing_if = "Option::is_none")]
2319 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
2320 #[serde(skip_serializing_if = "Option::is_none")]
2322 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
2323 #[serde(skip_serializing_if = "Option::is_none")]
2325 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
2326 #[serde(skip_serializing_if = "Option::is_none")]
2328 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
2329}
2330
2331#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2333#[serde(rename_all = "camelCase")]
2334pub struct ToolExecutionCompleteUIResourceMetaUI {
2335 #[serde(skip_serializing_if = "Option::is_none")]
2337 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
2338 #[serde(skip_serializing_if = "Option::is_none")]
2339 pub domain: Option<String>,
2340 #[serde(skip_serializing_if = "Option::is_none")]
2342 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
2343 #[serde(skip_serializing_if = "Option::is_none")]
2344 pub prefers_border: Option<bool>,
2345}
2346
2347#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2349#[serde(rename_all = "camelCase")]
2350pub struct ToolExecutionCompleteUIResourceMeta {
2351 #[serde(skip_serializing_if = "Option::is_none")]
2353 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
2354}
2355
2356#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2358#[serde(rename_all = "camelCase")]
2359pub struct ToolExecutionCompleteUIResource {
2360 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2362 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
2363 #[serde(skip_serializing_if = "Option::is_none")]
2365 pub blob: Option<String>,
2366 pub mime_type: String,
2368 #[serde(skip_serializing_if = "Option::is_none")]
2370 pub text: Option<String>,
2371 pub uri: String,
2373}
2374
2375#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2377#[serde(rename_all = "camelCase")]
2378pub struct ToolExecutionCompleteResult {
2379 #[serde(skip_serializing_if = "Option::is_none")]
2388 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
2389 #[serde(skip_serializing_if = "Option::is_none")]
2398 pub citable_sources: Option<Vec<CitableSource>>,
2399 pub content: String,
2401 #[serde(skip_serializing_if = "Option::is_none")]
2403 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
2404 #[serde(skip_serializing_if = "Option::is_none")]
2406 pub detailed_content: Option<String>,
2407 #[serde(skip_serializing_if = "Option::is_none")]
2409 pub structured_content: Option<serde_json::Value>,
2410 #[serde(skip_serializing_if = "Option::is_none")]
2412 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2413}
2414
2415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2417#[serde(rename_all = "camelCase")]
2418pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2419 #[serde(skip_serializing_if = "Option::is_none")]
2421 pub resource_uri: Option<String>,
2422 #[serde(skip_serializing_if = "Option::is_none")]
2424 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2425}
2426
2427#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2429#[serde(rename_all = "camelCase")]
2430pub struct ToolExecutionCompleteToolDescriptionMeta {
2431 #[serde(skip_serializing_if = "Option::is_none")]
2433 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2434}
2435
2436#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2438#[serde(rename_all = "camelCase")]
2439pub struct ToolExecutionCompleteToolDescription {
2440 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2442 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2443 #[serde(skip_serializing_if = "Option::is_none")]
2445 pub description: Option<String>,
2446 pub name: String,
2448}
2449
2450#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2452#[serde(rename_all = "camelCase")]
2453pub struct ToolExecutionCompleteData {
2454 #[serde(skip_serializing_if = "Option::is_none")]
2456 pub error: Option<ToolExecutionCompleteError>,
2457 #[serde(skip_serializing_if = "Option::is_none")]
2459 pub interaction_id: Option<String>,
2460 #[serde(skip_serializing_if = "Option::is_none")]
2462 pub is_user_requested: Option<bool>,
2463 #[serde(skip_serializing_if = "Option::is_none")]
2465 pub model: Option<String>,
2466 #[doc(hidden)]
2468 #[deprecated]
2469 #[serde(skip_serializing_if = "Option::is_none")]
2470 pub parent_tool_call_id: Option<String>,
2471 #[serde(skip_serializing_if = "Option::is_none")]
2473 pub result: Option<ToolExecutionCompleteResult>,
2474 #[serde(skip_serializing_if = "Option::is_none")]
2476 pub sandboxed: Option<bool>,
2477 pub success: bool,
2479 pub tool_call_id: String,
2481 #[serde(skip_serializing_if = "Option::is_none")]
2483 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2484 #[serde(skip_serializing_if = "Option::is_none")]
2486 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2487 #[serde(skip_serializing_if = "Option::is_none")]
2489 pub turn_id: Option<String>,
2490}
2491
2492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2494#[serde(rename_all = "camelCase")]
2495pub struct SkillInvokedData {
2496 #[serde(skip_serializing_if = "Option::is_none")]
2498 pub allowed_tools: Option<Vec<String>>,
2499 pub content: String,
2501 #[serde(skip_serializing_if = "Option::is_none")]
2503 pub description: Option<String>,
2504 #[serde(skip_serializing_if = "Option::is_none")]
2506 pub model: Option<String>,
2507 pub name: String,
2509 pub path: String,
2511 #[serde(skip_serializing_if = "Option::is_none")]
2513 pub plugin_name: Option<String>,
2514 #[serde(skip_serializing_if = "Option::is_none")]
2516 pub plugin_version: Option<String>,
2517 #[serde(skip_serializing_if = "Option::is_none")]
2519 pub source: Option<String>,
2520 #[serde(skip_serializing_if = "Option::is_none")]
2522 pub trigger: Option<SkillInvokedTrigger>,
2523}
2524
2525#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2527#[serde(rename_all = "camelCase")]
2528pub struct SubagentStartedData {
2529 pub agent_description: String,
2531 pub agent_display_name: String,
2533 pub agent_name: String,
2535 #[serde(skip_serializing_if = "Option::is_none")]
2537 pub model: Option<String>,
2538 pub tool_call_id: String,
2540}
2541
2542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2544#[serde(rename_all = "camelCase")]
2545pub struct SubagentCompletedData {
2546 pub agent_display_name: String,
2548 pub agent_name: String,
2550 #[serde(skip_serializing_if = "Option::is_none")]
2552 pub duration_ms: Option<i64>,
2553 #[serde(skip_serializing_if = "Option::is_none")]
2555 pub model: Option<String>,
2556 pub tool_call_id: String,
2558 #[serde(skip_serializing_if = "Option::is_none")]
2560 pub total_tokens: Option<i64>,
2561 #[serde(skip_serializing_if = "Option::is_none")]
2563 pub total_tool_calls: Option<i64>,
2564}
2565
2566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2568#[serde(rename_all = "camelCase")]
2569pub struct SubagentFailedData {
2570 pub agent_display_name: String,
2572 pub agent_name: String,
2574 #[serde(skip_serializing_if = "Option::is_none")]
2576 pub duration_ms: Option<i64>,
2577 pub error: String,
2579 #[serde(skip_serializing_if = "Option::is_none")]
2581 pub model: Option<String>,
2582 pub tool_call_id: String,
2584 #[serde(skip_serializing_if = "Option::is_none")]
2586 pub total_tokens: Option<i64>,
2587 #[serde(skip_serializing_if = "Option::is_none")]
2589 pub total_tool_calls: Option<i64>,
2590}
2591
2592#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2594#[serde(rename_all = "camelCase")]
2595pub struct SubagentSelectedData {
2596 pub agent_display_name: String,
2598 pub agent_name: String,
2600 pub tools: Option<Vec<String>>,
2602}
2603
2604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2606#[serde(rename_all = "camelCase")]
2607pub struct SubagentDeselectedData {}
2608
2609#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2611#[serde(rename_all = "camelCase")]
2612pub struct HookStartData {
2613 pub hook_invocation_id: String,
2615 pub hook_type: String,
2617 #[serde(skip_serializing_if = "Option::is_none")]
2619 pub input: Option<serde_json::Value>,
2620}
2621
2622#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2624#[serde(rename_all = "camelCase")]
2625pub struct HookEndError {
2626 pub message: String,
2628 #[serde(skip_serializing_if = "Option::is_none")]
2630 pub source: Option<String>,
2631 #[serde(skip_serializing_if = "Option::is_none")]
2633 pub stack: Option<String>,
2634}
2635
2636#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2638#[serde(rename_all = "camelCase")]
2639pub struct HookEndData {
2640 #[serde(skip_serializing_if = "Option::is_none")]
2642 pub error: Option<HookEndError>,
2643 pub hook_invocation_id: String,
2645 pub hook_type: String,
2647 #[serde(skip_serializing_if = "Option::is_none")]
2649 pub output: Option<serde_json::Value>,
2650 pub success: bool,
2652}
2653
2654#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2656#[serde(rename_all = "camelCase")]
2657pub struct HookProgressData {
2658 pub message: String,
2660 #[serde(skip_serializing_if = "Option::is_none")]
2662 pub temporary: Option<bool>,
2663}
2664
2665#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2667#[serde(rename_all = "camelCase")]
2668pub struct SessionBinaryAssetData {
2669 pub asset_id: String,
2671 pub byte_length: i64,
2673 pub data: String,
2675 #[serde(skip_serializing_if = "Option::is_none")]
2677 pub description: Option<String>,
2678 #[serde(skip_serializing_if = "Option::is_none")]
2680 pub metadata: Option<HashMap<String, serde_json::Value>>,
2681 pub mime_type: String,
2683 pub r#type: BinaryAssetType,
2685}
2686
2687#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2689#[serde(rename_all = "camelCase")]
2690pub struct SystemMessageMetadata {
2691 #[serde(skip_serializing_if = "Option::is_none")]
2693 pub prompt_version: Option<String>,
2694 #[serde(skip_serializing_if = "Option::is_none")]
2696 pub variables: Option<HashMap<String, serde_json::Value>>,
2697}
2698
2699#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2701#[serde(rename_all = "camelCase")]
2702pub struct SystemMessageData {
2703 pub content: String,
2705 #[serde(skip_serializing_if = "Option::is_none")]
2707 pub metadata: Option<SystemMessageMetadata>,
2708 #[serde(skip_serializing_if = "Option::is_none")]
2710 pub name: Option<String>,
2711 pub role: SystemMessageRole,
2713}
2714
2715#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2717#[serde(rename_all = "camelCase")]
2718pub struct SystemNotificationData {
2719 pub content: String,
2721 pub kind: serde_json::Value,
2723}
2724
2725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2727#[serde(rename_all = "camelCase")]
2728pub struct PermissionRequestShellCommand {
2729 pub identifier: String,
2731 pub read_only: bool,
2733}
2734
2735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2737#[serde(rename_all = "camelCase")]
2738pub struct PermissionRequestShellPossibleUrl {
2739 pub url: String,
2741}
2742
2743#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2745#[serde(rename_all = "camelCase")]
2746pub struct PermissionRequestShell {
2747 pub can_offer_session_approval: bool,
2749 pub commands: Vec<PermissionRequestShellCommand>,
2751 pub full_command_text: String,
2753 pub has_write_file_redirection: bool,
2755 pub intention: String,
2757 pub kind: PermissionRequestShellKind,
2759 pub possible_paths: Vec<String>,
2761 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2763 #[serde(skip_serializing_if = "Option::is_none")]
2765 pub request_sandbox_bypass: Option<bool>,
2766 #[serde(skip_serializing_if = "Option::is_none")]
2768 pub request_sandbox_bypass_reason: Option<String>,
2769 #[serde(skip_serializing_if = "Option::is_none")]
2771 pub tool_call_id: Option<String>,
2772 #[serde(skip_serializing_if = "Option::is_none")]
2774 pub warning: Option<String>,
2775}
2776
2777#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2779#[serde(rename_all = "camelCase")]
2780pub struct PermissionRequestWrite {
2781 pub can_offer_session_approval: bool,
2783 pub diff: String,
2785 pub file_name: String,
2787 pub intention: String,
2789 pub kind: PermissionRequestWriteKind,
2791 #[serde(skip_serializing_if = "Option::is_none")]
2793 pub new_file_contents: Option<String>,
2794 #[serde(skip_serializing_if = "Option::is_none")]
2796 pub request_sandbox_bypass: Option<bool>,
2797 #[serde(skip_serializing_if = "Option::is_none")]
2799 pub request_sandbox_bypass_reason: Option<String>,
2800 #[serde(skip_serializing_if = "Option::is_none")]
2802 pub tool_call_id: Option<String>,
2803}
2804
2805#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2807#[serde(rename_all = "camelCase")]
2808pub struct PermissionRequestRead {
2809 pub intention: String,
2811 pub kind: PermissionRequestReadKind,
2813 pub path: String,
2815 #[serde(skip_serializing_if = "Option::is_none")]
2817 pub request_sandbox_bypass: Option<bool>,
2818 #[serde(skip_serializing_if = "Option::is_none")]
2820 pub request_sandbox_bypass_reason: Option<String>,
2821 #[serde(skip_serializing_if = "Option::is_none")]
2823 pub tool_call_id: Option<String>,
2824}
2825
2826#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2828#[serde(rename_all = "camelCase")]
2829pub struct PermissionRequestMcp {
2830 #[serde(skip_serializing_if = "Option::is_none")]
2832 pub args: Option<serde_json::Value>,
2833 pub kind: PermissionRequestMcpKind,
2835 pub read_only: bool,
2837 pub server_name: String,
2839 #[serde(skip_serializing_if = "Option::is_none")]
2841 pub tool_call_id: Option<String>,
2842 pub tool_name: String,
2844 pub tool_title: String,
2846}
2847
2848#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2850#[serde(rename_all = "camelCase")]
2851pub struct PermissionRequestUrl {
2852 pub intention: String,
2854 pub kind: PermissionRequestUrlKind,
2856 #[serde(skip_serializing_if = "Option::is_none")]
2858 pub request_sandbox_bypass: Option<bool>,
2859 #[serde(skip_serializing_if = "Option::is_none")]
2861 pub request_sandbox_bypass_reason: Option<String>,
2862 #[serde(skip_serializing_if = "Option::is_none")]
2864 pub tool_call_id: Option<String>,
2865 pub url: String,
2867}
2868
2869#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2871#[serde(rename_all = "camelCase")]
2872pub struct PermissionRequestMemory {
2873 #[serde(skip_serializing_if = "Option::is_none")]
2875 pub action: Option<PermissionRequestMemoryAction>,
2876 #[serde(skip_serializing_if = "Option::is_none")]
2878 pub citations: Option<String>,
2879 #[serde(skip_serializing_if = "Option::is_none")]
2881 pub direction: Option<PermissionRequestMemoryDirection>,
2882 pub fact: String,
2884 pub kind: PermissionRequestMemoryKind,
2886 #[serde(skip_serializing_if = "Option::is_none")]
2888 pub reason: Option<String>,
2889 #[serde(skip_serializing_if = "Option::is_none")]
2891 pub subject: Option<String>,
2892 #[serde(skip_serializing_if = "Option::is_none")]
2894 pub tool_call_id: Option<String>,
2895}
2896
2897#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2899#[serde(rename_all = "camelCase")]
2900pub struct PermissionRequestCustomTool {
2901 #[serde(skip_serializing_if = "Option::is_none")]
2903 pub args: Option<serde_json::Value>,
2904 pub kind: PermissionRequestCustomToolKind,
2906 #[serde(skip_serializing_if = "Option::is_none")]
2908 pub tool_call_id: Option<String>,
2909 pub tool_description: String,
2911 pub tool_name: String,
2913}
2914
2915#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2917#[serde(rename_all = "camelCase")]
2918pub struct PermissionRequestHook {
2919 #[serde(skip_serializing_if = "Option::is_none")]
2921 pub hook_message: Option<String>,
2922 pub kind: PermissionRequestHookKind,
2924 #[serde(skip_serializing_if = "Option::is_none")]
2926 pub tool_args: Option<serde_json::Value>,
2927 #[serde(skip_serializing_if = "Option::is_none")]
2929 pub tool_call_id: Option<String>,
2930 pub tool_name: String,
2932}
2933
2934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2936#[serde(rename_all = "camelCase")]
2937pub struct PermissionRequestExtensionManagement {
2938 #[serde(skip_serializing_if = "Option::is_none")]
2940 pub extension_name: Option<String>,
2941 pub kind: PermissionRequestExtensionManagementKind,
2943 pub operation: String,
2945 #[serde(skip_serializing_if = "Option::is_none")]
2947 pub tool_call_id: Option<String>,
2948}
2949
2950#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2952#[serde(rename_all = "camelCase")]
2953pub struct PermissionRequestExtensionPermissionAccess {
2954 pub capabilities: Vec<String>,
2956 pub extension_name: String,
2958 pub kind: PermissionRequestExtensionPermissionAccessKind,
2960 #[serde(skip_serializing_if = "Option::is_none")]
2962 pub tool_call_id: Option<String>,
2963}
2964
2965#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2974#[serde(rename_all = "camelCase")]
2975pub struct PermissionAutoApproval {
2976 #[serde(skip_serializing_if = "Option::is_none")]
2978 pub reason: Option<String>,
2979 pub recommendation: AutoApprovalRecommendation,
2981}
2982
2983#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2985#[serde(rename_all = "camelCase")]
2986pub struct PermissionPromptRequestCommands {
2987 #[serde(skip_serializing_if = "Option::is_none")]
2996 pub auto_approval: Option<PermissionAutoApproval>,
2997 pub can_offer_session_approval: bool,
2999 pub command_identifiers: Vec<String>,
3001 pub full_command_text: String,
3003 pub intention: String,
3005 pub kind: PermissionPromptRequestCommandsKind,
3007 #[serde(skip_serializing_if = "Option::is_none")]
3009 pub tool_call_id: Option<String>,
3010 #[serde(skip_serializing_if = "Option::is_none")]
3012 pub warning: Option<String>,
3013}
3014
3015#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3017#[serde(rename_all = "camelCase")]
3018pub struct PermissionPromptRequestWrite {
3019 #[serde(skip_serializing_if = "Option::is_none")]
3028 pub auto_approval: Option<PermissionAutoApproval>,
3029 pub can_offer_session_approval: bool,
3031 pub diff: String,
3033 pub file_name: String,
3035 pub intention: String,
3037 pub kind: PermissionPromptRequestWriteKind,
3039 #[serde(skip_serializing_if = "Option::is_none")]
3041 pub new_file_contents: Option<String>,
3042 #[serde(skip_serializing_if = "Option::is_none")]
3044 pub tool_call_id: Option<String>,
3045}
3046
3047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3049#[serde(rename_all = "camelCase")]
3050pub struct PermissionPromptRequestRead {
3051 #[serde(skip_serializing_if = "Option::is_none")]
3060 pub auto_approval: Option<PermissionAutoApproval>,
3061 pub intention: String,
3063 pub kind: PermissionPromptRequestReadKind,
3065 pub path: String,
3067 #[serde(skip_serializing_if = "Option::is_none")]
3069 pub tool_call_id: Option<String>,
3070}
3071
3072#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3074#[serde(rename_all = "camelCase")]
3075pub struct PermissionPromptRequestMcp {
3076 #[serde(skip_serializing_if = "Option::is_none")]
3078 pub args: Option<serde_json::Value>,
3079 #[serde(skip_serializing_if = "Option::is_none")]
3088 pub auto_approval: Option<PermissionAutoApproval>,
3089 pub kind: PermissionPromptRequestMcpKind,
3091 pub server_name: String,
3093 #[serde(skip_serializing_if = "Option::is_none")]
3095 pub tool_call_id: Option<String>,
3096 pub tool_name: String,
3098 pub tool_title: String,
3100}
3101
3102#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3104#[serde(rename_all = "camelCase")]
3105pub struct PermissionPromptRequestUrl {
3106 #[serde(skip_serializing_if = "Option::is_none")]
3115 pub auto_approval: Option<PermissionAutoApproval>,
3116 pub intention: String,
3118 pub kind: PermissionPromptRequestUrlKind,
3120 #[serde(skip_serializing_if = "Option::is_none")]
3122 pub request_sandbox_bypass: Option<bool>,
3123 #[serde(skip_serializing_if = "Option::is_none")]
3125 pub request_sandbox_bypass_reason: Option<String>,
3126 #[serde(skip_serializing_if = "Option::is_none")]
3128 pub tool_call_id: Option<String>,
3129 pub url: String,
3131}
3132
3133#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3135#[serde(rename_all = "camelCase")]
3136pub struct PermissionPromptRequestMemory {
3137 #[serde(skip_serializing_if = "Option::is_none")]
3139 pub action: Option<PermissionRequestMemoryAction>,
3140 #[serde(skip_serializing_if = "Option::is_none")]
3149 pub auto_approval: Option<PermissionAutoApproval>,
3150 #[serde(skip_serializing_if = "Option::is_none")]
3152 pub citations: Option<String>,
3153 #[serde(skip_serializing_if = "Option::is_none")]
3155 pub direction: Option<PermissionRequestMemoryDirection>,
3156 pub fact: String,
3158 pub kind: PermissionPromptRequestMemoryKind,
3160 #[serde(skip_serializing_if = "Option::is_none")]
3162 pub reason: Option<String>,
3163 #[serde(skip_serializing_if = "Option::is_none")]
3165 pub subject: Option<String>,
3166 #[serde(skip_serializing_if = "Option::is_none")]
3168 pub tool_call_id: Option<String>,
3169}
3170
3171#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3173#[serde(rename_all = "camelCase")]
3174pub struct PermissionPromptRequestCustomTool {
3175 #[serde(skip_serializing_if = "Option::is_none")]
3177 pub args: Option<serde_json::Value>,
3178 #[serde(skip_serializing_if = "Option::is_none")]
3187 pub auto_approval: Option<PermissionAutoApproval>,
3188 pub kind: PermissionPromptRequestCustomToolKind,
3190 #[serde(skip_serializing_if = "Option::is_none")]
3192 pub tool_call_id: Option<String>,
3193 pub tool_description: String,
3195 pub tool_name: String,
3197}
3198
3199#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3201#[serde(rename_all = "camelCase")]
3202pub struct PermissionPromptRequestPath {
3203 pub access_kind: PermissionPromptRequestPathAccessKind,
3205 #[serde(skip_serializing_if = "Option::is_none")]
3214 pub auto_approval: Option<PermissionAutoApproval>,
3215 pub kind: PermissionPromptRequestPathKind,
3217 pub paths: Vec<String>,
3219 #[serde(skip_serializing_if = "Option::is_none")]
3221 pub tool_call_id: Option<String>,
3222}
3223
3224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3226#[serde(rename_all = "camelCase")]
3227pub struct PermissionPromptRequestHook {
3228 #[serde(skip_serializing_if = "Option::is_none")]
3237 pub auto_approval: Option<PermissionAutoApproval>,
3238 #[serde(skip_serializing_if = "Option::is_none")]
3240 pub hook_message: Option<String>,
3241 pub kind: PermissionPromptRequestHookKind,
3243 #[serde(skip_serializing_if = "Option::is_none")]
3245 pub tool_args: Option<serde_json::Value>,
3246 #[serde(skip_serializing_if = "Option::is_none")]
3248 pub tool_call_id: Option<String>,
3249 pub tool_name: String,
3251}
3252
3253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3255#[serde(rename_all = "camelCase")]
3256pub struct PermissionPromptRequestExtensionManagement {
3257 #[serde(skip_serializing_if = "Option::is_none")]
3266 pub auto_approval: Option<PermissionAutoApproval>,
3267 #[serde(skip_serializing_if = "Option::is_none")]
3269 pub extension_name: Option<String>,
3270 pub kind: PermissionPromptRequestExtensionManagementKind,
3272 pub operation: String,
3274 #[serde(skip_serializing_if = "Option::is_none")]
3276 pub tool_call_id: Option<String>,
3277}
3278
3279#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3281#[serde(rename_all = "camelCase")]
3282pub struct PermissionPromptRequestExtensionPermissionAccess {
3283 #[serde(skip_serializing_if = "Option::is_none")]
3292 pub auto_approval: Option<PermissionAutoApproval>,
3293 pub capabilities: Vec<String>,
3295 pub extension_name: String,
3297 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
3299 #[serde(skip_serializing_if = "Option::is_none")]
3301 pub tool_call_id: Option<String>,
3302}
3303
3304#[derive(Debug, Clone, Serialize, Deserialize)]
3306#[serde(rename_all = "camelCase")]
3307pub struct PermissionRequestedData {
3308 pub permission_request: PermissionRequest,
3310 #[serde(skip_serializing_if = "Option::is_none")]
3312 pub prompt_request: Option<PermissionPromptRequest>,
3313 pub request_id: RequestId,
3315 #[serde(skip_serializing_if = "Option::is_none")]
3317 pub resolved_by_hook: Option<bool>,
3318}
3319
3320#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3322#[serde(rename_all = "camelCase")]
3323pub struct PermissionApproved {
3324 pub kind: PermissionApprovedKind,
3326}
3327
3328#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3330#[serde(rename_all = "camelCase")]
3331pub struct UserToolSessionApprovalCommands {
3332 pub command_identifiers: Vec<String>,
3334 pub kind: UserToolSessionApprovalCommandsKind,
3336}
3337
3338#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3340#[serde(rename_all = "camelCase")]
3341pub struct UserToolSessionApprovalRead {
3342 pub kind: UserToolSessionApprovalReadKind,
3344}
3345
3346#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3348#[serde(rename_all = "camelCase")]
3349pub struct UserToolSessionApprovalWrite {
3350 pub kind: UserToolSessionApprovalWriteKind,
3352}
3353
3354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3356#[serde(rename_all = "camelCase")]
3357pub struct UserToolSessionApprovalMcp {
3358 pub kind: UserToolSessionApprovalMcpKind,
3360 pub server_name: String,
3362 pub tool_name: Option<String>,
3364}
3365
3366#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3368#[serde(rename_all = "camelCase")]
3369pub struct UserToolSessionApprovalMemory {
3370 pub kind: UserToolSessionApprovalMemoryKind,
3372}
3373
3374#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3376#[serde(rename_all = "camelCase")]
3377pub struct UserToolSessionApprovalCustomTool {
3378 pub kind: UserToolSessionApprovalCustomToolKind,
3380 pub tool_name: String,
3382}
3383
3384#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3386#[serde(rename_all = "camelCase")]
3387pub struct UserToolSessionApprovalExtensionManagement {
3388 pub kind: UserToolSessionApprovalExtensionManagementKind,
3390 #[serde(skip_serializing_if = "Option::is_none")]
3392 pub operation: Option<String>,
3393}
3394
3395#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3397#[serde(rename_all = "camelCase")]
3398pub struct UserToolSessionApprovalExtensionPermissionAccess {
3399 pub extension_name: String,
3401 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
3403}
3404
3405#[derive(Debug, Clone, Serialize, Deserialize)]
3407#[serde(rename_all = "camelCase")]
3408pub struct PermissionApprovedForSession {
3409 pub approval: UserToolSessionApproval,
3411 pub kind: PermissionApprovedForSessionKind,
3413}
3414
3415#[derive(Debug, Clone, Serialize, Deserialize)]
3417#[serde(rename_all = "camelCase")]
3418pub struct PermissionApprovedForLocation {
3419 pub approval: UserToolSessionApproval,
3421 pub kind: PermissionApprovedForLocationKind,
3423 pub location_key: String,
3425}
3426
3427#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3429#[serde(rename_all = "camelCase")]
3430pub struct PermissionCancelled {
3431 pub kind: PermissionCancelledKind,
3433 #[serde(skip_serializing_if = "Option::is_none")]
3435 pub reason: Option<String>,
3436}
3437
3438#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3440#[serde(rename_all = "camelCase")]
3441pub struct PermissionRule {
3442 pub argument: Option<String>,
3444 pub kind: String,
3446}
3447
3448#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3450#[serde(rename_all = "camelCase")]
3451pub struct PermissionDeniedByRules {
3452 pub kind: PermissionDeniedByRulesKind,
3454 pub rules: Vec<PermissionRule>,
3456}
3457
3458#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3460#[serde(rename_all = "camelCase")]
3461pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
3462 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
3464}
3465
3466#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3468#[serde(rename_all = "camelCase")]
3469pub struct PermissionDeniedInteractivelyByUser {
3470 #[serde(skip_serializing_if = "Option::is_none")]
3472 pub feedback: Option<String>,
3473 #[serde(skip_serializing_if = "Option::is_none")]
3475 pub force_reject: Option<bool>,
3476 pub kind: PermissionDeniedInteractivelyByUserKind,
3478}
3479
3480#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3482#[serde(rename_all = "camelCase")]
3483pub struct PermissionDeniedByContentExclusionPolicy {
3484 pub kind: PermissionDeniedByContentExclusionPolicyKind,
3486 pub message: String,
3488 pub path: String,
3490}
3491
3492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3494#[serde(rename_all = "camelCase")]
3495pub struct PermissionDeniedByPermissionRequestHook {
3496 #[serde(skip_serializing_if = "Option::is_none")]
3498 pub interrupt: Option<bool>,
3499 pub kind: PermissionDeniedByPermissionRequestHookKind,
3501 #[serde(skip_serializing_if = "Option::is_none")]
3503 pub message: Option<String>,
3504}
3505
3506#[derive(Debug, Clone, Serialize, Deserialize)]
3508#[serde(rename_all = "camelCase")]
3509pub struct PermissionCompletedData {
3510 pub request_id: RequestId,
3512 pub result: PermissionResult,
3514 #[serde(skip_serializing_if = "Option::is_none")]
3516 pub tool_call_id: Option<String>,
3517}
3518
3519#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3521#[serde(rename_all = "camelCase")]
3522pub struct UserInputRequestedData {
3523 #[serde(skip_serializing_if = "Option::is_none")]
3525 pub allow_freeform: Option<bool>,
3526 #[serde(skip_serializing_if = "Option::is_none")]
3528 pub choices: Option<Vec<String>>,
3529 pub question: String,
3531 pub request_id: RequestId,
3533 #[serde(skip_serializing_if = "Option::is_none")]
3535 pub tool_call_id: Option<String>,
3536}
3537
3538#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3540#[serde(rename_all = "camelCase")]
3541pub struct UserInputCompletedData {
3542 #[serde(skip_serializing_if = "Option::is_none")]
3544 pub answer: Option<String>,
3545 pub request_id: RequestId,
3547 #[serde(skip_serializing_if = "Option::is_none")]
3549 pub was_freeform: Option<bool>,
3550}
3551
3552#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3554#[serde(rename_all = "camelCase")]
3555pub struct ElicitationRequestedSchema {
3556 pub properties: HashMap<String, serde_json::Value>,
3558 #[serde(skip_serializing_if = "Option::is_none")]
3560 pub required: Option<Vec<String>>,
3561 pub r#type: ElicitationRequestedSchemaType,
3563}
3564
3565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3567#[serde(rename_all = "camelCase")]
3568pub struct ElicitationRequestedData {
3569 #[serde(skip_serializing_if = "Option::is_none")]
3571 pub elicitation_source: Option<String>,
3572 pub message: String,
3574 #[serde(skip_serializing_if = "Option::is_none")]
3576 pub mode: Option<ElicitationRequestedMode>,
3577 #[serde(skip_serializing_if = "Option::is_none")]
3579 pub requested_schema: Option<ElicitationRequestedSchema>,
3580 pub request_id: RequestId,
3582 #[serde(skip_serializing_if = "Option::is_none")]
3584 pub tool_call_id: Option<String>,
3585 #[serde(skip_serializing_if = "Option::is_none")]
3587 pub url: Option<String>,
3588}
3589
3590#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3592#[serde(rename_all = "camelCase")]
3593pub struct ElicitationCompletedData {
3594 #[serde(skip_serializing_if = "Option::is_none")]
3596 pub action: Option<ElicitationCompletedAction>,
3597 #[serde(skip_serializing_if = "Option::is_none")]
3599 pub content: Option<HashMap<String, serde_json::Value>>,
3600 pub request_id: RequestId,
3602}
3603
3604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3606#[serde(rename_all = "camelCase")]
3607pub struct SamplingRequestedData {
3608 pub mcp_request_id: serde_json::Value,
3610 pub request_id: RequestId,
3612 pub server_name: String,
3614}
3615
3616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3618#[serde(rename_all = "camelCase")]
3619pub struct SamplingCompletedData {
3620 pub request_id: RequestId,
3622}
3623
3624#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3626#[serde(rename_all = "camelCase")]
3627pub struct McpOauthRequiredStaticClientConfig {
3628 pub client_id: String,
3630 #[serde(skip_serializing_if = "Option::is_none")]
3632 pub client_secret: Option<String>,
3633 #[serde(skip_serializing_if = "Option::is_none")]
3635 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3636 #[serde(skip_serializing_if = "Option::is_none")]
3638 pub public_client: Option<bool>,
3639}
3640
3641#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3643#[serde(rename_all = "camelCase")]
3644pub struct McpOauthWWWAuthenticateParams {
3645 #[serde(skip_serializing_if = "Option::is_none")]
3647 pub error: Option<String>,
3648 #[serde(skip_serializing_if = "Option::is_none")]
3650 pub resource_metadata_url: Option<String>,
3651 #[serde(skip_serializing_if = "Option::is_none")]
3653 pub scope: Option<String>,
3654}
3655
3656#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3658#[serde(rename_all = "camelCase")]
3659pub struct McpOauthRequiredData {
3660 pub reason: McpOauthRequestReason,
3662 pub request_id: RequestId,
3664 #[serde(skip_serializing_if = "Option::is_none")]
3666 pub resource_metadata: Option<String>,
3667 pub server_name: String,
3669 pub server_url: String,
3671 #[serde(skip_serializing_if = "Option::is_none")]
3673 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3674 #[serde(skip_serializing_if = "Option::is_none")]
3676 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3677}
3678
3679#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3681#[serde(rename_all = "camelCase")]
3682pub struct McpOauthCompletedData {
3683 pub outcome: McpOauthCompletionOutcome,
3685 pub request_id: RequestId,
3687}
3688
3689#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3691#[serde(rename_all = "camelCase")]
3692pub struct McpHeadersRefreshRequiredData {
3693 pub reason: McpHeadersRefreshRequiredReason,
3695 pub request_id: RequestId,
3697 pub server_name: String,
3699 pub server_url: String,
3701}
3702
3703#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3705#[serde(rename_all = "camelCase")]
3706pub struct McpHeadersRefreshCompletedData {
3707 pub outcome: McpHeadersRefreshCompletedOutcome,
3709 pub request_id: RequestId,
3711}
3712
3713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3715#[serde(rename_all = "camelCase")]
3716pub struct SessionCustomNotificationData {
3717 pub name: String,
3719 pub payload: serde_json::Value,
3721 pub source: String,
3723 #[serde(skip_serializing_if = "Option::is_none")]
3725 pub subject: Option<HashMap<String, String>>,
3726 #[serde(skip_serializing_if = "Option::is_none")]
3728 pub version: Option<i64>,
3729}
3730
3731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3733#[serde(rename_all = "camelCase")]
3734pub struct ExternalToolRequestedData {
3735 #[serde(skip_serializing_if = "Option::is_none")]
3737 pub arguments: Option<serde_json::Value>,
3738 pub request_id: RequestId,
3740 pub session_id: SessionId,
3742 pub tool_call_id: String,
3744 pub tool_name: String,
3746 #[serde(skip_serializing_if = "Option::is_none")]
3748 pub traceparent: Option<String>,
3749 #[serde(skip_serializing_if = "Option::is_none")]
3751 pub tracestate: Option<String>,
3752 #[serde(skip_serializing_if = "Option::is_none")]
3754 pub working_directory: Option<String>,
3755}
3756
3757#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3759#[serde(rename_all = "camelCase")]
3760pub struct ExternalToolCompletedData {
3761 pub request_id: RequestId,
3763}
3764
3765#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3767#[serde(rename_all = "camelCase")]
3768pub struct CommandQueuedData {
3769 pub command: String,
3771 pub request_id: RequestId,
3773}
3774
3775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3777#[serde(rename_all = "camelCase")]
3778pub struct CommandExecuteData {
3779 pub args: String,
3781 pub command: String,
3783 pub command_name: String,
3785 pub request_id: RequestId,
3787}
3788
3789#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3791#[serde(rename_all = "camelCase")]
3792pub struct CommandCompletedData {
3793 pub request_id: RequestId,
3795}
3796
3797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3799#[serde(rename_all = "camelCase")]
3800pub struct AutoModeSwitchRequestedData {
3801 #[serde(skip_serializing_if = "Option::is_none")]
3803 pub error_code: Option<String>,
3804 pub request_id: RequestId,
3806 #[serde(skip_serializing_if = "Option::is_none")]
3808 pub retry_after_seconds: Option<i64>,
3809}
3810
3811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3813#[serde(rename_all = "camelCase")]
3814pub struct AutoModeSwitchCompletedData {
3815 pub request_id: RequestId,
3817 pub response: AutoModeSwitchResponse,
3819}
3820
3821#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3823#[serde(rename_all = "camelCase")]
3824pub struct SessionLimitsExhaustedRequestedData {
3825 pub max_ai_credits: f64,
3827 pub request_id: RequestId,
3829 pub used_ai_credits: f64,
3831}
3832
3833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3835#[serde(rename_all = "camelCase")]
3836pub struct SessionLimitsExhaustedResponse {
3837 pub action: SessionLimitsExhaustedResponseAction,
3839 #[serde(skip_serializing_if = "Option::is_none")]
3841 pub additional_ai_credits: Option<f64>,
3842 #[serde(skip_serializing_if = "Option::is_none")]
3844 pub max_ai_credits: Option<f64>,
3845}
3846
3847#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3849#[serde(rename_all = "camelCase")]
3850pub struct SessionLimitsExhaustedCompletedData {
3851 pub request_id: RequestId,
3853 pub response: SessionLimitsExhaustedResponse,
3855}
3856
3857#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3866#[serde(rename_all = "camelCase")]
3867pub struct SessionAutoModeResolvedData {
3868 #[serde(skip_serializing_if = "Option::is_none")]
3870 pub candidate_models: Option<Vec<String>>,
3871 #[serde(skip_serializing_if = "Option::is_none")]
3873 pub category_scores: Option<HashMap<String, f64>>,
3874 pub chosen_model: String,
3876 #[serde(skip_serializing_if = "Option::is_none")]
3878 pub confidence: Option<f64>,
3879 #[serde(skip_serializing_if = "Option::is_none")]
3881 pub predicted_label: Option<String>,
3882 #[serde(skip_serializing_if = "Option::is_none")]
3884 pub reasoning_bucket: Option<AutoModeResolvedReasoningBucket>,
3885}
3886
3887#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3889#[serde(rename_all = "camelCase")]
3890pub struct CommandsChangedCommand {
3891 #[serde(skip_serializing_if = "Option::is_none")]
3893 pub description: Option<String>,
3894 pub name: String,
3896}
3897
3898#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3900#[serde(rename_all = "camelCase")]
3901pub struct CommandsChangedData {
3902 pub commands: Vec<CommandsChangedCommand>,
3904}
3905
3906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3908#[serde(rename_all = "camelCase")]
3909pub struct CapabilitiesChangedUI {
3910 #[serde(skip_serializing_if = "Option::is_none")]
3912 pub canvases: Option<bool>,
3913 #[serde(skip_serializing_if = "Option::is_none")]
3915 pub elicitation: Option<bool>,
3916 #[serde(skip_serializing_if = "Option::is_none")]
3918 pub mcp_apps: Option<bool>,
3919}
3920
3921#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3923#[serde(rename_all = "camelCase")]
3924pub struct CapabilitiesChangedData {
3925 #[serde(skip_serializing_if = "Option::is_none")]
3927 pub ui: Option<CapabilitiesChangedUI>,
3928}
3929
3930#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3932#[serde(rename_all = "camelCase")]
3933pub struct ExitPlanModeRequestedData {
3934 pub actions: Vec<ExitPlanModeAction>,
3936 pub plan_content: String,
3938 pub recommended_action: ExitPlanModeAction,
3940 pub request_id: RequestId,
3942 pub summary: String,
3944}
3945
3946#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3948#[serde(rename_all = "camelCase")]
3949pub struct ExitPlanModeCompletedData {
3950 #[serde(skip_serializing_if = "Option::is_none")]
3952 pub approved: Option<bool>,
3953 #[serde(skip_serializing_if = "Option::is_none")]
3955 pub auto_approve_edits: Option<bool>,
3956 #[serde(skip_serializing_if = "Option::is_none")]
3958 pub feedback: Option<String>,
3959 pub request_id: RequestId,
3961 #[serde(skip_serializing_if = "Option::is_none")]
3963 pub selected_action: Option<ExitPlanModeAction>,
3964}
3965
3966#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3968#[serde(rename_all = "camelCase")]
3969pub struct SessionToolsUpdatedData {
3970 pub model: String,
3972}
3973
3974#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3976#[serde(rename_all = "camelCase")]
3977pub struct SessionBackgroundTasksChangedData {}
3978
3979#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3981#[serde(rename_all = "camelCase")]
3982pub struct SkillsLoadedSkill {
3983 #[serde(skip_serializing_if = "Option::is_none")]
3985 pub argument_hint: Option<String>,
3986 pub description: String,
3988 pub enabled: bool,
3990 pub name: String,
3992 #[serde(skip_serializing_if = "Option::is_none")]
3994 pub path: Option<String>,
3995 pub source: SkillSource,
3997 pub user_invocable: bool,
3999}
4000
4001#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4003#[serde(rename_all = "camelCase")]
4004pub struct SessionSkillsLoadedData {
4005 pub skills: Vec<SkillsLoadedSkill>,
4007}
4008
4009#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4011#[serde(rename_all = "camelCase")]
4012pub struct CustomAgentsUpdatedAgent {
4013 pub description: String,
4015 pub display_name: String,
4017 pub id: String,
4019 #[serde(skip_serializing_if = "Option::is_none")]
4021 pub model: Option<String>,
4022 pub name: String,
4024 pub source: String,
4026 pub tools: Option<Vec<String>>,
4028 pub user_invocable: bool,
4030}
4031
4032#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4034#[serde(rename_all = "camelCase")]
4035pub struct SessionCustomAgentsUpdatedData {
4036 pub agents: Vec<CustomAgentsUpdatedAgent>,
4038 pub errors: Vec<String>,
4040 pub warnings: Vec<String>,
4042}
4043
4044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4046#[serde(rename_all = "camelCase")]
4047pub struct McpServersLoadedServer {
4048 #[serde(skip_serializing_if = "Option::is_none")]
4050 pub error: Option<String>,
4051 pub name: String,
4053 #[serde(skip_serializing_if = "Option::is_none")]
4055 pub plugin_name: Option<String>,
4056 #[serde(skip_serializing_if = "Option::is_none")]
4058 pub plugin_version: Option<String>,
4059 #[serde(skip_serializing_if = "Option::is_none")]
4061 pub source: Option<McpServerSource>,
4062 pub status: McpServerStatus,
4064 #[serde(skip_serializing_if = "Option::is_none")]
4066 pub transport: Option<McpServerTransport>,
4067}
4068
4069#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4071#[serde(rename_all = "camelCase")]
4072pub struct SessionMcpServersLoadedData {
4073 pub servers: Vec<McpServersLoadedServer>,
4075}
4076
4077#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4079#[serde(rename_all = "camelCase")]
4080pub struct SessionMcpServerStatusChangedData {
4081 #[serde(skip_serializing_if = "Option::is_none")]
4083 pub error: Option<String>,
4084 pub server_name: String,
4086 pub status: McpServerStatus,
4088}
4089
4090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4092#[serde(rename_all = "camelCase")]
4093pub struct ExtensionsLoadedExtension {
4094 pub id: String,
4096 pub name: String,
4098 pub source: ExtensionsLoadedExtensionSource,
4100 pub status: ExtensionsLoadedExtensionStatus,
4102}
4103
4104#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4106#[serde(rename_all = "camelCase")]
4107pub struct SessionExtensionsLoadedData {
4108 pub extensions: Vec<ExtensionsLoadedExtension>,
4110}
4111
4112#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4121#[serde(rename_all = "camelCase")]
4122pub struct SessionCanvasOpenedData {
4123 pub canvas_id: String,
4125 pub extension_id: String,
4127 #[serde(skip_serializing_if = "Option::is_none")]
4129 pub extension_name: Option<String>,
4130 #[serde(skip_serializing_if = "Option::is_none")]
4132 pub input: Option<serde_json::Value>,
4133 pub instance_id: String,
4135 #[serde(skip_serializing_if = "Option::is_none")]
4137 pub status: Option<String>,
4138 #[serde(skip_serializing_if = "Option::is_none")]
4140 pub title: Option<String>,
4141 #[serde(skip_serializing_if = "Option::is_none")]
4143 pub url: Option<String>,
4144}
4145
4146#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4155#[serde(rename_all = "camelCase")]
4156pub struct CanvasRegistryChangedCanvasAction {
4157 #[serde(skip_serializing_if = "Option::is_none")]
4159 pub description: Option<String>,
4160 #[serde(skip_serializing_if = "Option::is_none")]
4162 pub input_schema: Option<serde_json::Value>,
4163 pub name: String,
4165}
4166
4167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4176#[serde(rename_all = "camelCase")]
4177pub struct CanvasRegistryChangedCanvas {
4178 #[serde(skip_serializing_if = "Option::is_none")]
4180 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
4181 pub canvas_id: String,
4183 pub description: String,
4185 pub display_name: String,
4187 pub extension_id: String,
4189 #[serde(skip_serializing_if = "Option::is_none")]
4191 pub extension_name: Option<String>,
4192 #[serde(skip_serializing_if = "Option::is_none")]
4194 pub input_schema: Option<serde_json::Value>,
4195}
4196
4197#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4206#[serde(rename_all = "camelCase")]
4207pub struct SessionCanvasRegistryChangedData {
4208 pub canvases: Vec<CanvasRegistryChangedCanvas>,
4210}
4211
4212#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4221#[serde(rename_all = "camelCase")]
4222pub struct SessionCanvasClosedData {
4223 pub canvas_id: String,
4225 pub extension_id: String,
4227 pub instance_id: String,
4229}
4230
4231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4240#[serde(rename_all = "camelCase")]
4241pub struct SessionCanvasUnavailableData {
4242 pub canvas_id: String,
4244 pub extension_id: String,
4246 pub instance_id: String,
4248}
4249
4250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4259#[serde(rename_all = "camelCase")]
4260pub struct SessionCanvasRecordedData {
4261 pub canvas_id: String,
4263 pub extension_id: String,
4265 #[serde(skip_serializing_if = "Option::is_none")]
4267 pub input: Option<serde_json::Value>,
4268 pub instance_id: String,
4270 #[serde(skip_serializing_if = "Option::is_none")]
4272 pub title: Option<String>,
4273}
4274
4275#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4284#[serde(rename_all = "camelCase")]
4285pub struct SessionCanvasRemovedData {
4286 pub canvas_id: String,
4288 pub extension_id: String,
4290 pub instance_id: String,
4292}
4293
4294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4296#[serde(rename_all = "camelCase")]
4297pub struct SessionExtensionsAttachmentsPushedData {
4298 pub attachments: Vec<serde_json::Value>,
4300}
4301
4302#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4304#[serde(rename_all = "camelCase")]
4305pub struct McpAppToolCallCompleteError {
4306 pub message: String,
4308}
4309
4310#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4312#[serde(rename_all = "camelCase")]
4313pub struct McpAppToolCallCompleteToolMetaUI {
4314 #[serde(skip_serializing_if = "Option::is_none")]
4316 pub resource_uri: Option<String>,
4317 #[serde(skip_serializing_if = "Option::is_none")]
4319 pub visibility: Option<Vec<String>>,
4320}
4321
4322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4324#[serde(rename_all = "camelCase")]
4325pub struct McpAppToolCallCompleteToolMeta {
4326 #[serde(skip_serializing_if = "Option::is_none")]
4328 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
4329}
4330
4331#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4333#[serde(rename_all = "camelCase")]
4334pub struct McpAppToolCallCompleteData {
4335 #[serde(skip_serializing_if = "Option::is_none")]
4337 pub arguments: Option<HashMap<String, serde_json::Value>>,
4338 pub duration_ms: f64,
4340 #[serde(skip_serializing_if = "Option::is_none")]
4342 pub error: Option<McpAppToolCallCompleteError>,
4343 #[serde(skip_serializing_if = "Option::is_none")]
4345 pub result: Option<HashMap<String, serde_json::Value>>,
4346 pub server_name: String,
4348 pub success: bool,
4350 #[serde(skip_serializing_if = "Option::is_none")]
4352 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
4353 pub tool_name: String,
4355}
4356
4357#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4359pub enum WorkingDirectoryContextHostType {
4360 #[serde(rename = "github")]
4362 GitHub,
4363 #[serde(rename = "ado")]
4365 Ado,
4366 #[default]
4368 #[serde(other)]
4369 Unknown,
4370}
4371
4372#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4374pub enum ContextTier {
4375 #[serde(rename = "default")]
4377 Default,
4378 #[serde(rename = "long_context")]
4380 LongContext,
4381 #[default]
4383 #[serde(other)]
4384 Unknown,
4385}
4386
4387#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4389pub enum ReasoningSummary {
4390 #[serde(rename = "none")]
4392 None,
4393 #[serde(rename = "concise")]
4395 Concise,
4396 #[serde(rename = "detailed")]
4398 Detailed,
4399 #[default]
4401 #[serde(other)]
4402 Unknown,
4403}
4404
4405#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4407pub enum Verbosity {
4408 #[serde(rename = "low")]
4410 Low,
4411 #[serde(rename = "medium")]
4413 Medium,
4414 #[serde(rename = "high")]
4416 High,
4417 #[default]
4419 #[serde(other)]
4420 Unknown,
4421}
4422
4423#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4425pub enum AutopilotObjectiveChangedOperation {
4426 #[serde(rename = "create")]
4428 Create,
4429 #[serde(rename = "update")]
4431 Update,
4432 #[serde(rename = "delete")]
4434 Delete,
4435 #[default]
4437 #[serde(other)]
4438 Unknown,
4439}
4440
4441#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4443pub enum AutopilotObjectiveChangedStatus {
4444 #[serde(rename = "active")]
4446 Active,
4447 #[serde(rename = "paused")]
4449 Paused,
4450 #[serde(rename = "cap_reached")]
4452 CapReached,
4453 #[serde(rename = "completed")]
4455 Completed,
4456 #[default]
4458 #[serde(other)]
4459 Unknown,
4460}
4461
4462#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4464pub enum SessionMode {
4465 #[serde(rename = "interactive")]
4467 Interactive,
4468 #[serde(rename = "plan")]
4470 Plan,
4471 #[serde(rename = "autopilot")]
4473 Autopilot,
4474 #[default]
4476 #[serde(other)]
4477 Unknown,
4478}
4479
4480#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4489pub enum PermissionAllowAllMode {
4490 #[serde(rename = "off")]
4492 Off,
4493 #[serde(rename = "on")]
4495 On,
4496 #[serde(rename = "auto")]
4498 Auto,
4499 #[default]
4501 #[serde(other)]
4502 Unknown,
4503}
4504
4505#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4507pub enum PlanChangedOperation {
4508 #[serde(rename = "create")]
4510 Create,
4511 #[serde(rename = "update")]
4513 Update,
4514 #[serde(rename = "delete")]
4516 Delete,
4517 #[default]
4519 #[serde(other)]
4520 Unknown,
4521}
4522
4523#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4525pub enum WorkspaceFileChangedOperation {
4526 #[serde(rename = "create")]
4528 Create,
4529 #[serde(rename = "update")]
4531 Update,
4532 #[default]
4534 #[serde(other)]
4535 Unknown,
4536}
4537
4538#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4540pub enum HandoffSourceType {
4541 #[serde(rename = "remote")]
4543 Remote,
4544 #[serde(rename = "local")]
4546 Local,
4547 #[default]
4549 #[serde(other)]
4550 Unknown,
4551}
4552
4553#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4555pub enum ShutdownType {
4556 #[serde(rename = "routine")]
4558 Routine,
4559 #[serde(rename = "error")]
4561 Error,
4562 #[default]
4564 #[serde(other)]
4565 Unknown,
4566}
4567
4568#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4570pub enum UserMessageAgentMode {
4571 #[serde(rename = "interactive")]
4573 Interactive,
4574 #[serde(rename = "plan")]
4576 Plan,
4577 #[serde(rename = "autopilot")]
4579 Autopilot,
4580 #[serde(rename = "shell")]
4582 Shell,
4583 #[default]
4585 #[serde(other)]
4586 Unknown,
4587}
4588
4589#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4591pub enum UserMessageDelivery {
4592 #[serde(rename = "idle")]
4594 Idle,
4595 #[serde(rename = "steering")]
4597 Steering,
4598 #[serde(rename = "queued")]
4600 Queued,
4601 #[default]
4603 #[serde(other)]
4604 Unknown,
4605}
4606
4607#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4609pub enum AssistantMessageToolRequestType {
4610 #[serde(rename = "function")]
4612 Function,
4613 #[serde(rename = "custom")]
4615 Custom,
4616 #[default]
4618 #[serde(other)]
4619 Unknown,
4620}
4621
4622#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4631pub enum CitationProvider {
4632 #[serde(rename = "anthropic")]
4634 Anthropic,
4635 #[serde(rename = "openai")]
4637 Openai,
4638 #[serde(rename = "client")]
4640 Client,
4641 #[default]
4643 #[serde(other)]
4644 Unknown,
4645}
4646
4647#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4649pub enum AssistantUsageApiEndpoint {
4650 #[serde(rename = "/chat/completions")]
4652 ChatCompletions,
4653 #[serde(rename = "/v1/messages")]
4655 V1Messages,
4656 #[serde(rename = "/responses")]
4658 Responses,
4659 #[serde(rename = "ws:/responses")]
4661 WsResponses,
4662 #[default]
4664 #[serde(other)]
4665 Unknown,
4666}
4667
4668#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4670pub enum ModelCallFailureBadRequestKind {
4671 #[serde(rename = "bodyless")]
4673 Bodyless,
4674 #[serde(rename = "structured_error")]
4676 StructuredError,
4677 #[default]
4679 #[serde(other)]
4680 Unknown,
4681}
4682
4683#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4685pub enum ModelCallFailureSource {
4686 #[serde(rename = "top_level")]
4688 TopLevel,
4689 #[serde(rename = "subagent")]
4691 Subagent,
4692 #[serde(rename = "mcp_sampling")]
4694 McpSampling,
4695 #[default]
4697 #[serde(other)]
4698 Unknown,
4699}
4700
4701#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4703pub enum AbortReason {
4704 #[serde(rename = "user_initiated")]
4706 UserInitiated,
4707 #[serde(rename = "remote_command")]
4709 RemoteCommand,
4710 #[serde(rename = "user_abort")]
4712 UserAbort,
4713 #[default]
4715 #[serde(other)]
4716 Unknown,
4717}
4718
4719#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4721pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
4722 #[serde(rename = "model")]
4724 Model,
4725 #[serde(rename = "app")]
4727 App,
4728 #[default]
4730 #[serde(other)]
4731 Unknown,
4732}
4733
4734#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4736pub enum ToolExecutionCompleteContentTextType {
4737 #[serde(rename = "text")]
4738 #[default]
4739 Text,
4740}
4741
4742#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4744pub enum ToolExecutionCompleteContentTerminalType {
4745 #[serde(rename = "terminal")]
4746 #[default]
4747 Terminal,
4748}
4749
4750#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4752pub enum ToolExecutionCompleteContentShellExitType {
4753 #[serde(rename = "shell_exit")]
4754 #[default]
4755 ShellExit,
4756}
4757
4758#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4760pub enum ToolExecutionCompleteContentImageType {
4761 #[serde(rename = "image")]
4762 #[default]
4763 Image,
4764}
4765
4766#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4768pub enum ToolExecutionCompleteContentAudioType {
4769 #[serde(rename = "audio")]
4770 #[default]
4771 Audio,
4772}
4773
4774#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4776pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4777 #[serde(rename = "light")]
4779 Light,
4780 #[serde(rename = "dark")]
4782 Dark,
4783 #[default]
4785 #[serde(other)]
4786 Unknown,
4787}
4788
4789#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4791pub enum ToolExecutionCompleteContentResourceLinkType {
4792 #[serde(rename = "resource_link")]
4793 #[default]
4794 ResourceLink,
4795}
4796
4797#[derive(Debug, Clone, Serialize, Deserialize)]
4799#[serde(untagged)]
4800pub enum ToolExecutionCompleteContentResourceDetails {
4801 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4802 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4803}
4804
4805#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4807pub enum ToolExecutionCompleteContentResourceType {
4808 #[serde(rename = "resource")]
4809 #[default]
4810 Resource,
4811}
4812
4813#[derive(Debug, Clone, Serialize, Deserialize)]
4815#[serde(untagged)]
4816pub enum ToolExecutionCompleteContent {
4817 Text(ToolExecutionCompleteContentText),
4818 Terminal(ToolExecutionCompleteContentTerminal),
4819 ShellExit(ToolExecutionCompleteContentShellExit),
4820 Image(ToolExecutionCompleteContentImage),
4821 Audio(ToolExecutionCompleteContentAudio),
4822 ResourceLink(ToolExecutionCompleteContentResourceLink),
4823 Resource(ToolExecutionCompleteContentResource),
4824}
4825
4826#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4828pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4829 #[serde(rename = "model")]
4831 Model,
4832 #[serde(rename = "app")]
4834 App,
4835 #[default]
4837 #[serde(other)]
4838 Unknown,
4839}
4840
4841#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4843pub enum SkillInvokedTrigger {
4844 #[serde(rename = "user-invoked")]
4846 UserInvoked,
4847 #[serde(rename = "agent-invoked")]
4849 AgentInvoked,
4850 #[serde(rename = "context-load")]
4852 ContextLoad,
4853 #[default]
4855 #[serde(other)]
4856 Unknown,
4857}
4858
4859#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4861pub enum BinaryAssetType {
4862 #[serde(rename = "image")]
4864 Image,
4865 #[serde(rename = "resource")]
4867 Resource,
4868 #[default]
4870 #[serde(other)]
4871 Unknown,
4872}
4873
4874#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4876pub enum SystemMessageRole {
4877 #[serde(rename = "system")]
4879 System,
4880 #[serde(rename = "developer")]
4882 Developer,
4883 #[default]
4885 #[serde(other)]
4886 Unknown,
4887}
4888
4889#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4891pub enum PermissionRequestShellKind {
4892 #[serde(rename = "shell")]
4893 #[default]
4894 Shell,
4895}
4896
4897#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4899pub enum PermissionRequestWriteKind {
4900 #[serde(rename = "write")]
4901 #[default]
4902 Write,
4903}
4904
4905#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4907pub enum PermissionRequestReadKind {
4908 #[serde(rename = "read")]
4909 #[default]
4910 Read,
4911}
4912
4913#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4915pub enum PermissionRequestMcpKind {
4916 #[serde(rename = "mcp")]
4917 #[default]
4918 Mcp,
4919}
4920
4921#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4923pub enum PermissionRequestUrlKind {
4924 #[serde(rename = "url")]
4925 #[default]
4926 Url,
4927}
4928
4929#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4931pub enum PermissionRequestMemoryAction {
4932 #[serde(rename = "store")]
4934 Store,
4935 #[serde(rename = "vote")]
4937 Vote,
4938 #[default]
4940 #[serde(other)]
4941 Unknown,
4942}
4943
4944#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4946pub enum PermissionRequestMemoryDirection {
4947 #[serde(rename = "upvote")]
4949 Upvote,
4950 #[serde(rename = "downvote")]
4952 Downvote,
4953 #[default]
4955 #[serde(other)]
4956 Unknown,
4957}
4958
4959#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4961pub enum PermissionRequestMemoryKind {
4962 #[serde(rename = "memory")]
4963 #[default]
4964 Memory,
4965}
4966
4967#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4969pub enum PermissionRequestCustomToolKind {
4970 #[serde(rename = "custom-tool")]
4971 #[default]
4972 CustomTool,
4973}
4974
4975#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4977pub enum PermissionRequestHookKind {
4978 #[serde(rename = "hook")]
4979 #[default]
4980 Hook,
4981}
4982
4983#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4985pub enum PermissionRequestExtensionManagementKind {
4986 #[serde(rename = "extension-management")]
4987 #[default]
4988 ExtensionManagement,
4989}
4990
4991#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4993pub enum PermissionRequestExtensionPermissionAccessKind {
4994 #[serde(rename = "extension-permission-access")]
4995 #[default]
4996 ExtensionPermissionAccess,
4997}
4998
4999#[derive(Debug, Clone, Serialize, Deserialize)]
5001#[serde(untagged)]
5002pub enum PermissionRequest {
5003 Shell(PermissionRequestShell),
5004 Write(PermissionRequestWrite),
5005 Read(PermissionRequestRead),
5006 Mcp(PermissionRequestMcp),
5007 Url(PermissionRequestUrl),
5008 Memory(PermissionRequestMemory),
5009 CustomTool(PermissionRequestCustomTool),
5010 Hook(PermissionRequestHook),
5011 ExtensionManagement(PermissionRequestExtensionManagement),
5012 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
5013}
5014
5015#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5024pub enum AutoApprovalRecommendation {
5025 #[serde(rename = "approve")]
5027 Approve,
5028 #[serde(rename = "requireApproval")]
5030 RequireApproval,
5031 #[serde(rename = "excluded")]
5033 Excluded,
5034 #[serde(rename = "error")]
5036 Error,
5037 #[default]
5039 #[serde(other)]
5040 Unknown,
5041}
5042
5043#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5045pub enum PermissionPromptRequestCommandsKind {
5046 #[serde(rename = "commands")]
5047 #[default]
5048 Commands,
5049}
5050
5051#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5053pub enum PermissionPromptRequestWriteKind {
5054 #[serde(rename = "write")]
5055 #[default]
5056 Write,
5057}
5058
5059#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5061pub enum PermissionPromptRequestReadKind {
5062 #[serde(rename = "read")]
5063 #[default]
5064 Read,
5065}
5066
5067#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5069pub enum PermissionPromptRequestMcpKind {
5070 #[serde(rename = "mcp")]
5071 #[default]
5072 Mcp,
5073}
5074
5075#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5077pub enum PermissionPromptRequestUrlKind {
5078 #[serde(rename = "url")]
5079 #[default]
5080 Url,
5081}
5082
5083#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5085pub enum PermissionPromptRequestMemoryKind {
5086 #[serde(rename = "memory")]
5087 #[default]
5088 Memory,
5089}
5090
5091#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5093pub enum PermissionPromptRequestCustomToolKind {
5094 #[serde(rename = "custom-tool")]
5095 #[default]
5096 CustomTool,
5097}
5098
5099#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5101pub enum PermissionPromptRequestPathAccessKind {
5102 #[serde(rename = "read")]
5104 Read,
5105 #[serde(rename = "shell")]
5107 Shell,
5108 #[serde(rename = "write")]
5110 Write,
5111 #[default]
5113 #[serde(other)]
5114 Unknown,
5115}
5116
5117#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5119pub enum PermissionPromptRequestPathKind {
5120 #[serde(rename = "path")]
5121 #[default]
5122 Path,
5123}
5124
5125#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5127pub enum PermissionPromptRequestHookKind {
5128 #[serde(rename = "hook")]
5129 #[default]
5130 Hook,
5131}
5132
5133#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5135pub enum PermissionPromptRequestExtensionManagementKind {
5136 #[serde(rename = "extension-management")]
5137 #[default]
5138 ExtensionManagement,
5139}
5140
5141#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5143pub enum PermissionPromptRequestExtensionPermissionAccessKind {
5144 #[serde(rename = "extension-permission-access")]
5145 #[default]
5146 ExtensionPermissionAccess,
5147}
5148
5149#[derive(Debug, Clone, Serialize, Deserialize)]
5151#[serde(untagged)]
5152pub enum PermissionPromptRequest {
5153 Commands(PermissionPromptRequestCommands),
5154 Write(PermissionPromptRequestWrite),
5155 Read(PermissionPromptRequestRead),
5156 Mcp(PermissionPromptRequestMcp),
5157 Url(PermissionPromptRequestUrl),
5158 Memory(PermissionPromptRequestMemory),
5159 CustomTool(PermissionPromptRequestCustomTool),
5160 Path(PermissionPromptRequestPath),
5161 Hook(PermissionPromptRequestHook),
5162 ExtensionManagement(PermissionPromptRequestExtensionManagement),
5163 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
5164}
5165
5166#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5168pub enum PermissionApprovedKind {
5169 #[serde(rename = "approved")]
5170 #[default]
5171 Approved,
5172}
5173
5174#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5176pub enum UserToolSessionApprovalCommandsKind {
5177 #[serde(rename = "commands")]
5178 #[default]
5179 Commands,
5180}
5181
5182#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5184pub enum UserToolSessionApprovalReadKind {
5185 #[serde(rename = "read")]
5186 #[default]
5187 Read,
5188}
5189
5190#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5192pub enum UserToolSessionApprovalWriteKind {
5193 #[serde(rename = "write")]
5194 #[default]
5195 Write,
5196}
5197
5198#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5200pub enum UserToolSessionApprovalMcpKind {
5201 #[serde(rename = "mcp")]
5202 #[default]
5203 Mcp,
5204}
5205
5206#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5208pub enum UserToolSessionApprovalMemoryKind {
5209 #[serde(rename = "memory")]
5210 #[default]
5211 Memory,
5212}
5213
5214#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5216pub enum UserToolSessionApprovalCustomToolKind {
5217 #[serde(rename = "custom-tool")]
5218 #[default]
5219 CustomTool,
5220}
5221
5222#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5224pub enum UserToolSessionApprovalExtensionManagementKind {
5225 #[serde(rename = "extension-management")]
5226 #[default]
5227 ExtensionManagement,
5228}
5229
5230#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5232pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
5233 #[serde(rename = "extension-permission-access")]
5234 #[default]
5235 ExtensionPermissionAccess,
5236}
5237
5238#[derive(Debug, Clone, Serialize, Deserialize)]
5240#[serde(untagged)]
5241pub enum UserToolSessionApproval {
5242 Commands(UserToolSessionApprovalCommands),
5243 Read(UserToolSessionApprovalRead),
5244 Write(UserToolSessionApprovalWrite),
5245 Mcp(UserToolSessionApprovalMcp),
5246 Memory(UserToolSessionApprovalMemory),
5247 CustomTool(UserToolSessionApprovalCustomTool),
5248 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
5249 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
5250}
5251
5252#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5254pub enum PermissionApprovedForSessionKind {
5255 #[serde(rename = "approved-for-session")]
5256 #[default]
5257 ApprovedForSession,
5258}
5259
5260#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5262pub enum PermissionApprovedForLocationKind {
5263 #[serde(rename = "approved-for-location")]
5264 #[default]
5265 ApprovedForLocation,
5266}
5267
5268#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5270pub enum PermissionCancelledKind {
5271 #[serde(rename = "cancelled")]
5272 #[default]
5273 Cancelled,
5274}
5275
5276#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5278pub enum PermissionDeniedByRulesKind {
5279 #[serde(rename = "denied-by-rules")]
5280 #[default]
5281 DeniedByRules,
5282}
5283
5284#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5286pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
5287 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
5288 #[default]
5289 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
5290}
5291
5292#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5294pub enum PermissionDeniedInteractivelyByUserKind {
5295 #[serde(rename = "denied-interactively-by-user")]
5296 #[default]
5297 DeniedInteractivelyByUser,
5298}
5299
5300#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5302pub enum PermissionDeniedByContentExclusionPolicyKind {
5303 #[serde(rename = "denied-by-content-exclusion-policy")]
5304 #[default]
5305 DeniedByContentExclusionPolicy,
5306}
5307
5308#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5310pub enum PermissionDeniedByPermissionRequestHookKind {
5311 #[serde(rename = "denied-by-permission-request-hook")]
5312 #[default]
5313 DeniedByPermissionRequestHook,
5314}
5315
5316#[derive(Debug, Clone, Serialize, Deserialize)]
5318#[serde(untagged)]
5319pub enum PermissionResult {
5320 Approved(PermissionApproved),
5321 ApprovedForSession(PermissionApprovedForSession),
5322 ApprovedForLocation(PermissionApprovedForLocation),
5323 Cancelled(PermissionCancelled),
5324 DeniedByRules(PermissionDeniedByRules),
5325 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
5326 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
5327 ),
5328 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
5329 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
5330 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
5331}
5332
5333#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5335pub enum ElicitationRequestedMode {
5336 #[serde(rename = "form")]
5338 Form,
5339 #[serde(rename = "url")]
5341 Url,
5342 #[default]
5344 #[serde(other)]
5345 Unknown,
5346}
5347
5348#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5350pub enum ElicitationRequestedSchemaType {
5351 #[serde(rename = "object")]
5352 #[default]
5353 Object,
5354}
5355
5356#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5358pub enum ElicitationCompletedAction {
5359 #[serde(rename = "accept")]
5361 Accept,
5362 #[serde(rename = "decline")]
5364 Decline,
5365 #[serde(rename = "cancel")]
5367 Cancel,
5368 #[default]
5370 #[serde(other)]
5371 Unknown,
5372}
5373
5374#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5376pub enum McpOauthRequestReason {
5377 #[serde(rename = "initial")]
5379 Initial,
5380 #[serde(rename = "refresh")]
5382 Refresh,
5383 #[serde(rename = "reauth")]
5385 Reauth,
5386 #[serde(rename = "upscope")]
5388 Upscope,
5389 #[default]
5391 #[serde(other)]
5392 Unknown,
5393}
5394
5395#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5397pub enum McpOauthRequiredStaticClientConfigGrantType {
5398 #[serde(rename = "client_credentials")]
5399 #[default]
5400 ClientCredentials,
5401}
5402
5403#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5405pub enum McpOauthCompletionOutcome {
5406 #[serde(rename = "token")]
5408 Token,
5409 #[serde(rename = "cancelled")]
5411 Cancelled,
5412 #[default]
5414 #[serde(other)]
5415 Unknown,
5416}
5417
5418#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5420pub enum McpHeadersRefreshRequiredReason {
5421 #[serde(rename = "startup")]
5423 Startup,
5424 #[serde(rename = "ttl-expired")]
5426 TtlExpired,
5427 #[serde(rename = "auth-failed")]
5429 AuthFailed,
5430 #[default]
5432 #[serde(other)]
5433 Unknown,
5434}
5435
5436#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5438pub enum McpHeadersRefreshCompletedOutcome {
5439 #[serde(rename = "headers")]
5441 Headers,
5442 #[serde(rename = "none")]
5444 None,
5445 #[serde(rename = "timeout")]
5447 Timeout,
5448 #[default]
5450 #[serde(other)]
5451 Unknown,
5452}
5453
5454#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5456pub enum AutoModeSwitchResponse {
5457 #[serde(rename = "yes")]
5459 Yes,
5460 #[serde(rename = "yes_always")]
5462 YesAlways,
5463 #[serde(rename = "no")]
5465 No,
5466 #[default]
5468 #[serde(other)]
5469 Unknown,
5470}
5471
5472#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5474pub enum SessionLimitsExhaustedResponseAction {
5475 #[serde(rename = "add")]
5477 Add,
5478 #[serde(rename = "set")]
5480 Set,
5481 #[serde(rename = "unset")]
5483 Unset,
5484 #[serde(rename = "cancel")]
5486 Cancel,
5487 #[default]
5489 #[serde(other)]
5490 Unknown,
5491}
5492
5493#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5495pub enum AutoModeResolvedReasoningBucket {
5496 #[serde(rename = "low")]
5498 Low,
5499 #[serde(rename = "medium")]
5501 Medium,
5502 #[serde(rename = "high")]
5504 High,
5505 #[default]
5507 #[serde(other)]
5508 Unknown,
5509}
5510
5511#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5513pub enum ExitPlanModeAction {
5514 #[serde(rename = "exit_only")]
5516 ExitOnly,
5517 #[serde(rename = "interactive")]
5519 Interactive,
5520 #[serde(rename = "autopilot")]
5522 Autopilot,
5523 #[serde(rename = "autopilot_fleet")]
5525 AutopilotFleet,
5526 #[default]
5528 #[serde(other)]
5529 Unknown,
5530}
5531
5532#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5534pub enum SkillSource {
5535 #[serde(rename = "project")]
5537 Project,
5538 #[serde(rename = "inherited")]
5540 Inherited,
5541 #[serde(rename = "personal-copilot")]
5543 PersonalCopilot,
5544 #[serde(rename = "personal-agents")]
5546 PersonalAgents,
5547 #[serde(rename = "plugin")]
5549 Plugin,
5550 #[serde(rename = "custom")]
5552 Custom,
5553 #[serde(rename = "builtin")]
5555 Builtin,
5556 #[default]
5558 #[serde(other)]
5559 Unknown,
5560}
5561
5562#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5564pub enum McpServerSource {
5565 #[serde(rename = "user")]
5567 User,
5568 #[serde(rename = "workspace")]
5570 Workspace,
5571 #[serde(rename = "plugin")]
5573 Plugin,
5574 #[serde(rename = "builtin")]
5576 Builtin,
5577 #[default]
5579 #[serde(other)]
5580 Unknown,
5581}
5582
5583#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5585pub enum McpServerStatus {
5586 #[serde(rename = "connected")]
5588 Connected,
5589 #[serde(rename = "failed")]
5591 Failed,
5592 #[serde(rename = "needs-auth")]
5594 NeedsAuth,
5595 #[serde(rename = "pending")]
5597 Pending,
5598 #[serde(rename = "disabled")]
5600 Disabled,
5601 #[serde(rename = "not_configured")]
5603 NotConfigured,
5604 #[default]
5606 #[serde(other)]
5607 Unknown,
5608}
5609
5610#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5612pub enum McpServerTransport {
5613 #[serde(rename = "stdio")]
5615 Stdio,
5616 #[serde(rename = "http")]
5618 Http,
5619 #[serde(rename = "sse")]
5621 Sse,
5622 #[serde(rename = "memory")]
5624 Memory,
5625 #[default]
5627 #[serde(other)]
5628 Unknown,
5629}
5630
5631#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5633pub enum ExtensionsLoadedExtensionSource {
5634 #[serde(rename = "project")]
5636 Project,
5637 #[serde(rename = "user")]
5639 User,
5640 #[serde(rename = "plugin")]
5642 Plugin,
5643 #[serde(rename = "session")]
5645 Session,
5646 #[default]
5648 #[serde(other)]
5649 Unknown,
5650}
5651
5652#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5654pub enum ExtensionsLoadedExtensionStatus {
5655 #[serde(rename = "running")]
5657 Running,
5658 #[serde(rename = "disabled")]
5660 Disabled,
5661 #[serde(rename = "failed")]
5663 Failed,
5664 #[serde(rename = "starting")]
5666 Starting,
5667 #[default]
5669 #[serde(other)]
5670 Unknown,
5671}