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.streaming_delta")]
85 AssistantStreamingDelta,
86 #[serde(rename = "assistant.message")]
87 AssistantMessage,
88 #[serde(rename = "assistant.message_start")]
89 AssistantMessageStart,
90 #[serde(rename = "assistant.message_delta")]
91 AssistantMessageDelta,
92 #[serde(rename = "assistant.turn_end")]
93 AssistantTurnEnd,
94 #[serde(rename = "assistant.idle")]
95 AssistantIdle,
96 #[serde(rename = "assistant.usage")]
97 AssistantUsage,
98 #[serde(rename = "model.call_failure")]
99 ModelCallFailure,
100 #[serde(rename = "abort")]
101 Abort,
102 #[serde(rename = "tool.user_requested")]
103 ToolUserRequested,
104 #[serde(rename = "tool.execution_start")]
105 ToolExecutionStart,
106 #[serde(rename = "tool.execution_partial_result")]
107 ToolExecutionPartialResult,
108 #[serde(rename = "tool.execution_progress")]
109 ToolExecutionProgress,
110 #[serde(rename = "tool.execution_complete")]
111 ToolExecutionComplete,
112 #[serde(rename = "skill.invoked")]
113 SkillInvoked,
114 #[serde(rename = "subagent.started")]
115 SubagentStarted,
116 #[serde(rename = "subagent.completed")]
117 SubagentCompleted,
118 #[serde(rename = "subagent.failed")]
119 SubagentFailed,
120 #[serde(rename = "subagent.selected")]
121 SubagentSelected,
122 #[serde(rename = "subagent.deselected")]
123 SubagentDeselected,
124 #[serde(rename = "hook.start")]
125 HookStart,
126 #[serde(rename = "hook.end")]
127 HookEnd,
128 #[serde(rename = "hook.progress")]
129 HookProgress,
130 #[serde(rename = "session.binary_asset")]
138 SessionBinaryAsset,
139 #[serde(rename = "system.message")]
140 SystemMessage,
141 #[serde(rename = "system.notification")]
142 SystemNotification,
143 #[serde(rename = "permission.requested")]
144 PermissionRequested,
145 #[serde(rename = "permission.completed")]
146 PermissionCompleted,
147 #[serde(rename = "user_input.requested")]
148 UserInputRequested,
149 #[serde(rename = "user_input.completed")]
150 UserInputCompleted,
151 #[serde(rename = "elicitation.requested")]
152 ElicitationRequested,
153 #[serde(rename = "elicitation.completed")]
154 ElicitationCompleted,
155 #[serde(rename = "sampling.requested")]
156 SamplingRequested,
157 #[serde(rename = "sampling.completed")]
158 SamplingCompleted,
159 #[serde(rename = "mcp.oauth_required")]
160 McpOauthRequired,
161 #[serde(rename = "mcp.oauth_completed")]
162 McpOauthCompleted,
163 #[serde(rename = "mcp.headers_refresh_required")]
164 McpHeadersRefreshRequired,
165 #[serde(rename = "mcp.headers_refresh_completed")]
166 McpHeadersRefreshCompleted,
167 #[serde(rename = "session.custom_notification")]
168 SessionCustomNotification,
169 #[serde(rename = "external_tool.requested")]
170 ExternalToolRequested,
171 #[serde(rename = "external_tool.completed")]
172 ExternalToolCompleted,
173 #[serde(rename = "command.queued")]
174 CommandQueued,
175 #[serde(rename = "command.execute")]
176 CommandExecute,
177 #[serde(rename = "command.completed")]
178 CommandCompleted,
179 #[serde(rename = "auto_mode_switch.requested")]
180 AutoModeSwitchRequested,
181 #[serde(rename = "auto_mode_switch.completed")]
182 AutoModeSwitchCompleted,
183 #[serde(rename = "session_limits_exhausted.requested")]
184 SessionLimitsExhaustedRequested,
185 #[serde(rename = "session_limits_exhausted.completed")]
186 SessionLimitsExhaustedCompleted,
187 #[serde(rename = "commands.changed")]
188 CommandsChanged,
189 #[serde(rename = "capabilities.changed")]
190 CapabilitiesChanged,
191 #[serde(rename = "exit_plan_mode.requested")]
192 ExitPlanModeRequested,
193 #[serde(rename = "exit_plan_mode.completed")]
194 ExitPlanModeCompleted,
195 #[serde(rename = "session.tools_updated")]
196 SessionToolsUpdated,
197 #[serde(rename = "session.background_tasks_changed")]
198 SessionBackgroundTasksChanged,
199 #[serde(rename = "session.skills_loaded")]
200 SessionSkillsLoaded,
201 #[serde(rename = "session.custom_agents_updated")]
202 SessionCustomAgentsUpdated,
203 #[serde(rename = "session.mcp_servers_loaded")]
204 SessionMcpServersLoaded,
205 #[serde(rename = "session.mcp_server_status_changed")]
206 SessionMcpServerStatusChanged,
207 #[serde(rename = "session.extensions_loaded")]
208 SessionExtensionsLoaded,
209 #[serde(rename = "session.canvas.opened")]
217 SessionCanvasOpened,
218 #[serde(rename = "session.canvas.registry_changed")]
226 SessionCanvasRegistryChanged,
227 #[serde(rename = "session.canvas.closed")]
235 SessionCanvasClosed,
236 #[serde(rename = "session.canvas.unavailable")]
244 SessionCanvasUnavailable,
245 #[serde(rename = "session.canvas.recorded")]
253 SessionCanvasRecorded,
254 #[serde(rename = "session.canvas.removed")]
262 SessionCanvasRemoved,
263 #[serde(rename = "session.extensions.attachments_pushed")]
264 SessionExtensionsAttachmentsPushed,
265 #[serde(rename = "mcp_app.tool_call_complete")]
266 McpAppToolCallComplete,
267 #[default]
269 #[serde(other)]
270 Unknown,
271}
272
273#[derive(Debug, Clone, Serialize, Deserialize)]
277#[serde(tag = "type", content = "data")]
278pub enum SessionEventData {
279 #[serde(rename = "session.start")]
280 SessionStart(SessionStartData),
281 #[serde(rename = "session.resume")]
282 SessionResume(SessionResumeData),
283 #[serde(rename = "session.remote_steerable_changed")]
284 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
285 #[serde(rename = "session.error")]
286 SessionError(SessionErrorData),
287 #[serde(rename = "session.idle")]
288 SessionIdle(SessionIdleData),
289 #[serde(rename = "session.title_changed")]
290 SessionTitleChanged(SessionTitleChangedData),
291 #[serde(rename = "session.schedule_created")]
292 SessionScheduleCreated(SessionScheduleCreatedData),
293 #[serde(rename = "session.schedule_cancelled")]
294 SessionScheduleCancelled(SessionScheduleCancelledData),
295 #[serde(rename = "session.schedule_rearmed")]
296 SessionScheduleRearmed(SessionScheduleRearmedData),
297 #[serde(rename = "session.autopilot_objective_changed")]
298 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
299 #[serde(rename = "session.info")]
300 SessionInfo(SessionInfoData),
301 #[serde(rename = "session.warning")]
302 SessionWarning(SessionWarningData),
303 #[serde(rename = "session.model_change")]
304 SessionModelChange(SessionModelChangeData),
305 #[serde(rename = "session.mode_changed")]
306 SessionModeChanged(SessionModeChangedData),
307 #[serde(rename = "session.session_limits_changed")]
308 SessionSessionLimitsChanged(SessionSessionLimitsChangedData),
309 #[serde(rename = "session.permissions_changed")]
310 SessionPermissionsChanged(SessionPermissionsChangedData),
311 #[serde(rename = "session.plan_changed")]
312 SessionPlanChanged(SessionPlanChangedData),
313 #[serde(rename = "session.todos_changed")]
314 SessionTodosChanged(SessionTodosChangedData),
315 #[serde(rename = "session.workspace_file_changed")]
316 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
317 #[serde(rename = "session.handoff")]
318 SessionHandoff(SessionHandoffData),
319 #[serde(rename = "session.truncation")]
320 SessionTruncation(SessionTruncationData),
321 #[serde(rename = "session.snapshot_rewind")]
322 SessionSnapshotRewind(SessionSnapshotRewindData),
323 #[serde(rename = "session.shutdown")]
324 SessionShutdown(SessionShutdownData),
325 #[serde(rename = "session.usage_checkpoint")]
326 SessionUsageCheckpoint(SessionUsageCheckpointData),
327 #[serde(rename = "session.context_changed")]
328 SessionContextChanged(SessionContextChangedData),
329 #[serde(rename = "session.usage_info")]
330 SessionUsageInfo(SessionUsageInfoData),
331 #[serde(rename = "session.compaction_start")]
332 SessionCompactionStart(SessionCompactionStartData),
333 #[serde(rename = "session.compaction_complete")]
334 SessionCompactionComplete(SessionCompactionCompleteData),
335 #[serde(rename = "session.task_complete")]
336 SessionTaskComplete(SessionTaskCompleteData),
337 #[serde(rename = "user.message")]
338 UserMessage(UserMessageData),
339 #[serde(rename = "pending_messages.modified")]
340 PendingMessagesModified(PendingMessagesModifiedData),
341 #[serde(rename = "assistant.turn_start")]
342 AssistantTurnStart(AssistantTurnStartData),
343 #[serde(rename = "assistant.intent")]
344 AssistantIntent(AssistantIntentData),
345 #[serde(rename = "assistant.reasoning")]
346 AssistantReasoning(AssistantReasoningData),
347 #[serde(rename = "assistant.reasoning_delta")]
348 AssistantReasoningDelta(AssistantReasoningDeltaData),
349 #[serde(rename = "assistant.streaming_delta")]
350 AssistantStreamingDelta(AssistantStreamingDeltaData),
351 #[serde(rename = "assistant.message")]
352 AssistantMessage(AssistantMessageData),
353 #[serde(rename = "assistant.message_start")]
354 AssistantMessageStart(AssistantMessageStartData),
355 #[serde(rename = "assistant.message_delta")]
356 AssistantMessageDelta(AssistantMessageDeltaData),
357 #[serde(rename = "assistant.turn_end")]
358 AssistantTurnEnd(AssistantTurnEndData),
359 #[serde(rename = "assistant.idle")]
360 AssistantIdle(AssistantIdleData),
361 #[serde(rename = "assistant.usage")]
362 AssistantUsage(AssistantUsageData),
363 #[serde(rename = "model.call_failure")]
364 ModelCallFailure(ModelCallFailureData),
365 #[serde(rename = "abort")]
366 Abort(AbortData),
367 #[serde(rename = "tool.user_requested")]
368 ToolUserRequested(ToolUserRequestedData),
369 #[serde(rename = "tool.execution_start")]
370 ToolExecutionStart(ToolExecutionStartData),
371 #[serde(rename = "tool.execution_partial_result")]
372 ToolExecutionPartialResult(ToolExecutionPartialResultData),
373 #[serde(rename = "tool.execution_progress")]
374 ToolExecutionProgress(ToolExecutionProgressData),
375 #[serde(rename = "tool.execution_complete")]
376 ToolExecutionComplete(ToolExecutionCompleteData),
377 #[serde(rename = "skill.invoked")]
378 SkillInvoked(SkillInvokedData),
379 #[serde(rename = "subagent.started")]
380 SubagentStarted(SubagentStartedData),
381 #[serde(rename = "subagent.completed")]
382 SubagentCompleted(SubagentCompletedData),
383 #[serde(rename = "subagent.failed")]
384 SubagentFailed(SubagentFailedData),
385 #[serde(rename = "subagent.selected")]
386 SubagentSelected(SubagentSelectedData),
387 #[serde(rename = "subagent.deselected")]
388 SubagentDeselected(SubagentDeselectedData),
389 #[serde(rename = "hook.start")]
390 HookStart(HookStartData),
391 #[serde(rename = "hook.end")]
392 HookEnd(HookEndData),
393 #[serde(rename = "hook.progress")]
394 HookProgress(HookProgressData),
395 #[serde(rename = "session.binary_asset")]
396 SessionBinaryAsset(SessionBinaryAssetData),
397 #[serde(rename = "system.message")]
398 SystemMessage(SystemMessageData),
399 #[serde(rename = "system.notification")]
400 SystemNotification(SystemNotificationData),
401 #[serde(rename = "permission.requested")]
402 PermissionRequested(PermissionRequestedData),
403 #[serde(rename = "permission.completed")]
404 PermissionCompleted(PermissionCompletedData),
405 #[serde(rename = "user_input.requested")]
406 UserInputRequested(UserInputRequestedData),
407 #[serde(rename = "user_input.completed")]
408 UserInputCompleted(UserInputCompletedData),
409 #[serde(rename = "elicitation.requested")]
410 ElicitationRequested(ElicitationRequestedData),
411 #[serde(rename = "elicitation.completed")]
412 ElicitationCompleted(ElicitationCompletedData),
413 #[serde(rename = "sampling.requested")]
414 SamplingRequested(SamplingRequestedData),
415 #[serde(rename = "sampling.completed")]
416 SamplingCompleted(SamplingCompletedData),
417 #[serde(rename = "mcp.oauth_required")]
418 McpOauthRequired(McpOauthRequiredData),
419 #[serde(rename = "mcp.oauth_completed")]
420 McpOauthCompleted(McpOauthCompletedData),
421 #[serde(rename = "mcp.headers_refresh_required")]
422 McpHeadersRefreshRequired(McpHeadersRefreshRequiredData),
423 #[serde(rename = "mcp.headers_refresh_completed")]
424 McpHeadersRefreshCompleted(McpHeadersRefreshCompletedData),
425 #[serde(rename = "session.custom_notification")]
426 SessionCustomNotification(SessionCustomNotificationData),
427 #[serde(rename = "external_tool.requested")]
428 ExternalToolRequested(ExternalToolRequestedData),
429 #[serde(rename = "external_tool.completed")]
430 ExternalToolCompleted(ExternalToolCompletedData),
431 #[serde(rename = "command.queued")]
432 CommandQueued(CommandQueuedData),
433 #[serde(rename = "command.execute")]
434 CommandExecute(CommandExecuteData),
435 #[serde(rename = "command.completed")]
436 CommandCompleted(CommandCompletedData),
437 #[serde(rename = "auto_mode_switch.requested")]
438 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
439 #[serde(rename = "auto_mode_switch.completed")]
440 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
441 #[serde(rename = "session_limits_exhausted.requested")]
442 SessionLimitsExhaustedRequested(SessionLimitsExhaustedRequestedData),
443 #[serde(rename = "session_limits_exhausted.completed")]
444 SessionLimitsExhaustedCompleted(SessionLimitsExhaustedCompletedData),
445 #[serde(rename = "commands.changed")]
446 CommandsChanged(CommandsChangedData),
447 #[serde(rename = "capabilities.changed")]
448 CapabilitiesChanged(CapabilitiesChangedData),
449 #[serde(rename = "exit_plan_mode.requested")]
450 ExitPlanModeRequested(ExitPlanModeRequestedData),
451 #[serde(rename = "exit_plan_mode.completed")]
452 ExitPlanModeCompleted(ExitPlanModeCompletedData),
453 #[serde(rename = "session.tools_updated")]
454 SessionToolsUpdated(SessionToolsUpdatedData),
455 #[serde(rename = "session.background_tasks_changed")]
456 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
457 #[serde(rename = "session.skills_loaded")]
458 SessionSkillsLoaded(SessionSkillsLoadedData),
459 #[serde(rename = "session.custom_agents_updated")]
460 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
461 #[serde(rename = "session.mcp_servers_loaded")]
462 SessionMcpServersLoaded(SessionMcpServersLoadedData),
463 #[serde(rename = "session.mcp_server_status_changed")]
464 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
465 #[serde(rename = "session.extensions_loaded")]
466 SessionExtensionsLoaded(SessionExtensionsLoadedData),
467 #[serde(rename = "session.canvas.opened")]
475 SessionCanvasOpened(SessionCanvasOpenedData),
476 #[serde(rename = "session.canvas.registry_changed")]
484 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
485 #[serde(rename = "session.canvas.closed")]
493 SessionCanvasClosed(SessionCanvasClosedData),
494 #[serde(rename = "session.canvas.unavailable")]
502 SessionCanvasUnavailable(SessionCanvasUnavailableData),
503 #[serde(rename = "session.canvas.recorded")]
511 SessionCanvasRecorded(SessionCanvasRecordedData),
512 #[serde(rename = "session.canvas.removed")]
520 SessionCanvasRemoved(SessionCanvasRemovedData),
521 #[serde(rename = "session.extensions.attachments_pushed")]
522 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
523 #[serde(rename = "mcp_app.tool_call_complete")]
524 McpAppToolCallComplete(McpAppToolCallCompleteData),
525}
526
527#[derive(Debug, Clone, Serialize, Deserialize)]
533#[serde(rename_all = "camelCase")]
534pub struct TypedSessionEvent {
535 pub id: String,
537 pub timestamp: String,
539 #[serde(skip_serializing_if = "Option::is_none")]
541 pub parent_id: Option<String>,
542 #[serde(skip_serializing_if = "Option::is_none")]
544 pub ephemeral: Option<bool>,
545 #[serde(skip_serializing_if = "Option::is_none")]
548 pub agent_id: Option<String>,
549 #[serde(flatten)]
551 pub payload: SessionEventData,
552}
553
554#[derive(Debug, Clone, Default, Serialize, Deserialize)]
556#[serde(rename_all = "camelCase")]
557pub struct WorkingDirectoryContext {
558 #[serde(skip_serializing_if = "Option::is_none")]
560 pub base_commit: Option<String>,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub branch: Option<String>,
564 pub cwd: String,
566 #[serde(skip_serializing_if = "Option::is_none")]
568 pub git_root: Option<String>,
569 #[serde(skip_serializing_if = "Option::is_none")]
571 pub head_commit: Option<String>,
572 #[serde(skip_serializing_if = "Option::is_none")]
574 pub host_type: Option<WorkingDirectoryContextHostType>,
575 #[serde(skip_serializing_if = "Option::is_none")]
577 pub repository: Option<String>,
578 #[serde(skip_serializing_if = "Option::is_none")]
580 pub repository_host: Option<String>,
581}
582
583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
585#[serde(rename_all = "camelCase")]
586pub struct SessionLimitsConfig {
587 #[serde(skip_serializing_if = "Option::is_none")]
589 pub max_ai_credits: Option<f64>,
590}
591
592#[derive(Debug, Clone, Default, Serialize, Deserialize)]
594#[serde(rename_all = "camelCase")]
595pub struct SessionStartData {
596 #[serde(skip_serializing_if = "Option::is_none")]
598 pub already_in_use: Option<bool>,
599 #[serde(skip_serializing_if = "Option::is_none")]
601 pub context: Option<WorkingDirectoryContext>,
602 #[serde(skip_serializing_if = "Option::is_none")]
604 pub context_tier: Option<ContextTier>,
605 pub copilot_version: String,
607 #[serde(skip_serializing_if = "Option::is_none")]
609 pub detached_from_spawning_parent_session_id: Option<String>,
610 pub producer: String,
612 #[serde(skip_serializing_if = "Option::is_none")]
614 pub reasoning_effort: Option<String>,
615 #[serde(skip_serializing_if = "Option::is_none")]
617 pub reasoning_summary: Option<ReasoningSummary>,
618 #[serde(skip_serializing_if = "Option::is_none")]
620 pub remote_steerable: Option<bool>,
621 #[serde(skip_serializing_if = "Option::is_none")]
623 pub selected_model: Option<String>,
624 pub session_id: SessionId,
626 #[serde(skip_serializing_if = "Option::is_none")]
628 pub session_limits: Option<SessionLimitsConfig>,
629 pub start_time: String,
631 pub version: i64,
633}
634
635#[derive(Debug, Clone, Default, Serialize, Deserialize)]
637#[serde(rename_all = "camelCase")]
638pub struct SessionResumeData {
639 #[serde(skip_serializing_if = "Option::is_none")]
641 pub already_in_use: Option<bool>,
642 #[serde(skip_serializing_if = "Option::is_none")]
644 pub context: Option<WorkingDirectoryContext>,
645 #[serde(skip_serializing_if = "Option::is_none")]
647 pub context_tier: Option<ContextTier>,
648 #[serde(skip_serializing_if = "Option::is_none")]
650 pub continue_pending_work: Option<bool>,
651 pub event_count: i64,
653 #[serde(skip_serializing_if = "Option::is_none")]
655 pub events_file_size_bytes: Option<i64>,
656 #[serde(skip_serializing_if = "Option::is_none")]
658 pub reasoning_effort: Option<String>,
659 #[serde(skip_serializing_if = "Option::is_none")]
661 pub reasoning_summary: Option<ReasoningSummary>,
662 #[serde(skip_serializing_if = "Option::is_none")]
664 pub remote_steerable: Option<bool>,
665 pub resume_time: String,
667 #[serde(skip_serializing_if = "Option::is_none")]
669 pub selected_model: Option<String>,
670 #[serde(skip_serializing_if = "Option::is_none")]
672 pub session_limits: Option<SessionLimitsConfig>,
673 #[serde(skip_serializing_if = "Option::is_none")]
675 pub session_was_active: Option<bool>,
676}
677
678#[derive(Debug, Clone, Default, Serialize, Deserialize)]
680#[serde(rename_all = "camelCase")]
681pub struct SessionRemoteSteerableChangedData {
682 pub remote_steerable: bool,
684}
685
686#[derive(Debug, Clone, Default, Serialize, Deserialize)]
688#[serde(rename_all = "camelCase")]
689pub struct SessionErrorData {
690 #[serde(skip_serializing_if = "Option::is_none")]
692 pub eligible_for_auto_switch: Option<bool>,
693 #[serde(skip_serializing_if = "Option::is_none")]
695 pub error_code: Option<String>,
696 pub error_type: String,
698 pub message: String,
700 #[serde(skip_serializing_if = "Option::is_none")]
702 pub provider_call_id: Option<String>,
703 #[serde(skip_serializing_if = "Option::is_none")]
705 pub service_request_id: Option<String>,
706 #[serde(skip_serializing_if = "Option::is_none")]
708 pub stack: Option<String>,
709 #[serde(skip_serializing_if = "Option::is_none")]
711 pub status_code: Option<i32>,
712 #[serde(skip_serializing_if = "Option::is_none")]
714 pub url: Option<String>,
715}
716
717#[derive(Debug, Clone, Default, Serialize, Deserialize)]
719#[serde(rename_all = "camelCase")]
720pub struct SessionIdleData {
721 #[serde(skip_serializing_if = "Option::is_none")]
723 pub aborted: Option<bool>,
724}
725
726#[derive(Debug, Clone, Default, Serialize, Deserialize)]
728#[serde(rename_all = "camelCase")]
729pub struct SessionTitleChangedData {
730 pub title: String,
732}
733
734#[derive(Debug, Clone, Default, Serialize, Deserialize)]
736#[serde(rename_all = "camelCase")]
737pub struct SessionScheduleCreatedData {
738 #[serde(skip_serializing_if = "Option::is_none")]
740 pub at: Option<i64>,
741 #[serde(skip_serializing_if = "Option::is_none")]
743 pub cron: Option<String>,
744 #[serde(skip_serializing_if = "Option::is_none")]
746 pub display_prompt: Option<String>,
747 pub id: i64,
749 #[serde(skip_serializing_if = "Option::is_none")]
751 pub interval_ms: Option<i64>,
752 pub prompt: String,
754 #[serde(skip_serializing_if = "Option::is_none")]
756 pub recurring: Option<bool>,
757 #[serde(skip_serializing_if = "Option::is_none")]
759 pub self_paced: Option<bool>,
760 #[serde(skip_serializing_if = "Option::is_none")]
762 pub tz: Option<String>,
763}
764
765#[derive(Debug, Clone, Default, Serialize, Deserialize)]
767#[serde(rename_all = "camelCase")]
768pub struct SessionScheduleCancelledData {
769 pub id: i64,
771}
772
773#[derive(Debug, Clone, Default, Serialize, Deserialize)]
775#[serde(rename_all = "camelCase")]
776pub struct SessionScheduleRearmedData {
777 pub id: i64,
779 pub next_run_at: i64,
781}
782
783#[derive(Debug, Clone, Default, Serialize, Deserialize)]
785#[serde(rename_all = "camelCase")]
786pub struct SessionAutopilotObjectiveChangedData {
787 #[serde(skip_serializing_if = "Option::is_none")]
789 pub id: Option<i64>,
790 pub operation: AutopilotObjectiveChangedOperation,
792 #[serde(skip_serializing_if = "Option::is_none")]
794 pub status: Option<AutopilotObjectiveChangedStatus>,
795}
796
797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
799#[serde(rename_all = "camelCase")]
800pub struct SessionInfoData {
801 pub info_type: String,
803 pub message: String,
805 #[serde(skip_serializing_if = "Option::is_none")]
807 pub tip: Option<String>,
808 #[serde(skip_serializing_if = "Option::is_none")]
810 pub url: Option<String>,
811}
812
813#[derive(Debug, Clone, Default, Serialize, Deserialize)]
815#[serde(rename_all = "camelCase")]
816pub struct SessionWarningData {
817 pub message: String,
819 #[serde(skip_serializing_if = "Option::is_none")]
821 pub url: Option<String>,
822 pub warning_type: String,
824}
825
826#[derive(Debug, Clone, Default, Serialize, Deserialize)]
828#[serde(rename_all = "camelCase")]
829pub struct SessionModelChangeData {
830 #[serde(skip_serializing_if = "Option::is_none")]
832 pub cause: Option<String>,
833 #[serde(skip_serializing_if = "Option::is_none")]
835 pub context_tier: Option<ContextTier>,
836 pub new_model: String,
838 #[serde(skip_serializing_if = "Option::is_none")]
840 pub previous_model: Option<String>,
841 #[serde(skip_serializing_if = "Option::is_none")]
843 pub previous_reasoning_effort: Option<String>,
844 #[serde(skip_serializing_if = "Option::is_none")]
846 pub previous_reasoning_summary: Option<ReasoningSummary>,
847 #[serde(skip_serializing_if = "Option::is_none")]
849 pub reasoning_effort: Option<String>,
850 #[serde(skip_serializing_if = "Option::is_none")]
852 pub reasoning_summary: Option<ReasoningSummary>,
853}
854
855#[derive(Debug, Clone, Default, Serialize, Deserialize)]
857#[serde(rename_all = "camelCase")]
858pub struct SessionModeChangedData {
859 pub new_mode: SessionMode,
861 pub previous_mode: SessionMode,
863}
864
865#[derive(Debug, Clone, Default, Serialize, Deserialize)]
867#[serde(rename_all = "camelCase")]
868pub struct SessionSessionLimitsChangedData {
869 pub session_limits: Option<SessionLimitsConfig>,
871}
872
873#[derive(Debug, Clone, Default, Serialize, Deserialize)]
875#[serde(rename_all = "camelCase")]
876pub struct SessionPermissionsChangedData {
877 pub allow_all_permissions: bool,
879 pub previous_allow_all_permissions: bool,
881}
882
883#[derive(Debug, Clone, Default, Serialize, Deserialize)]
885#[serde(rename_all = "camelCase")]
886pub struct SessionPlanChangedData {
887 pub operation: PlanChangedOperation,
889}
890
891#[derive(Debug, Clone, Default, Serialize, Deserialize)]
893#[serde(rename_all = "camelCase")]
894pub struct SessionTodosChangedData {}
895
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898#[serde(rename_all = "camelCase")]
899pub struct SessionWorkspaceFileChangedData {
900 pub operation: WorkspaceFileChangedOperation,
902 pub path: String,
904}
905
906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
908#[serde(rename_all = "camelCase")]
909pub struct HandoffRepository {
910 #[serde(skip_serializing_if = "Option::is_none")]
912 pub branch: Option<String>,
913 pub name: String,
915 pub owner: String,
917}
918
919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
921#[serde(rename_all = "camelCase")]
922pub struct SessionHandoffData {
923 #[serde(skip_serializing_if = "Option::is_none")]
925 pub context: Option<String>,
926 pub handoff_time: String,
928 #[serde(skip_serializing_if = "Option::is_none")]
930 pub host: Option<String>,
931 #[serde(skip_serializing_if = "Option::is_none")]
933 pub remote_session_id: Option<SessionId>,
934 #[serde(skip_serializing_if = "Option::is_none")]
936 pub repository: Option<HandoffRepository>,
937 pub source_type: HandoffSourceType,
939 #[serde(skip_serializing_if = "Option::is_none")]
941 pub summary: Option<String>,
942}
943
944#[derive(Debug, Clone, Default, Serialize, Deserialize)]
946#[serde(rename_all = "camelCase")]
947pub struct SessionTruncationData {
948 pub messages_removed_during_truncation: i64,
950 pub performed_by: String,
952 pub post_truncation_messages_length: i64,
954 pub post_truncation_tokens_in_messages: i64,
956 pub pre_truncation_messages_length: i64,
958 pub pre_truncation_tokens_in_messages: i64,
960 pub token_limit: i64,
962 pub tokens_removed_during_truncation: i64,
964}
965
966#[derive(Debug, Clone, Default, Serialize, Deserialize)]
968#[serde(rename_all = "camelCase")]
969pub struct SessionSnapshotRewindData {
970 pub events_removed: i64,
972 pub up_to_event_id: String,
974}
975
976#[derive(Debug, Clone, Default, Serialize, Deserialize)]
978#[serde(rename_all = "camelCase")]
979pub struct ShutdownCodeChanges {
980 pub files_modified: Vec<String>,
982 pub lines_added: i64,
984 pub lines_removed: i64,
986}
987
988#[derive(Debug, Clone, Default, Serialize, Deserialize)]
990#[serde(rename_all = "camelCase")]
991pub struct ShutdownModelMetricRequests {
992 #[serde(skip_serializing_if = "Option::is_none")]
1001 pub cost: Option<f64>,
1002 #[serde(skip_serializing_if = "Option::is_none")]
1011 pub count: Option<i64>,
1012}
1013
1014#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1016#[serde(rename_all = "camelCase")]
1017pub struct ShutdownModelMetricTokenDetail {
1018 pub token_count: i64,
1020}
1021
1022#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1024#[serde(rename_all = "camelCase")]
1025pub struct ShutdownModelMetricUsage {
1026 pub cache_read_tokens: i64,
1028 pub cache_write_tokens: i64,
1030 pub input_tokens: i64,
1032 pub output_tokens: i64,
1034 #[serde(skip_serializing_if = "Option::is_none")]
1036 pub reasoning_tokens: Option<i64>,
1037}
1038
1039#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1041#[serde(rename_all = "camelCase")]
1042pub struct ShutdownModelMetric {
1043 pub requests: ShutdownModelMetricRequests,
1045 #[serde(skip_serializing_if = "Option::is_none")]
1047 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
1048 #[serde(skip_serializing_if = "Option::is_none")]
1057 pub total_nano_aiu: Option<f64>,
1058 pub usage: ShutdownModelMetricUsage,
1060}
1061
1062#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1064#[serde(rename_all = "camelCase")]
1065pub struct ShutdownTokenDetail {
1066 pub token_count: i64,
1068}
1069
1070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1072#[serde(rename_all = "camelCase")]
1073pub struct SessionShutdownData {
1074 pub code_changes: ShutdownCodeChanges,
1076 #[serde(skip_serializing_if = "Option::is_none")]
1078 pub conversation_tokens: Option<i64>,
1079 #[serde(skip_serializing_if = "Option::is_none")]
1081 pub current_model: Option<String>,
1082 #[serde(skip_serializing_if = "Option::is_none")]
1084 pub current_tokens: Option<i64>,
1085 #[serde(skip_serializing_if = "Option::is_none")]
1087 pub error_reason: Option<String>,
1088 #[serde(skip_serializing_if = "Option::is_none")]
1090 pub events_file_size_bytes: Option<i64>,
1091 pub model_metrics: HashMap<String, ShutdownModelMetric>,
1093 pub session_start_time: i64,
1095 pub shutdown_type: ShutdownType,
1097 #[serde(skip_serializing_if = "Option::is_none")]
1099 pub system_tokens: Option<i64>,
1100 #[serde(skip_serializing_if = "Option::is_none")]
1102 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
1103 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub tool_definitions_tokens: Option<i64>,
1106 pub total_api_duration_ms: i64,
1108 #[serde(skip_serializing_if = "Option::is_none")]
1117 pub total_nano_aiu: Option<f64>,
1118 #[doc(hidden)]
1120 #[serde(skip_serializing_if = "Option::is_none")]
1121 pub(crate) total_premium_requests: Option<f64>,
1122}
1123
1124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1126#[serde(rename_all = "camelCase")]
1127pub struct SessionUsageCheckpointData {
1128 pub total_nano_aiu: f64,
1130 #[doc(hidden)]
1132 #[serde(skip_serializing_if = "Option::is_none")]
1133 pub(crate) total_premium_requests: Option<f64>,
1134}
1135
1136#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1138#[serde(rename_all = "camelCase")]
1139pub struct SessionContextChangedData {
1140 #[serde(skip_serializing_if = "Option::is_none")]
1142 pub base_commit: Option<String>,
1143 #[serde(skip_serializing_if = "Option::is_none")]
1145 pub branch: Option<String>,
1146 pub cwd: String,
1148 #[serde(skip_serializing_if = "Option::is_none")]
1150 pub git_root: Option<String>,
1151 #[serde(skip_serializing_if = "Option::is_none")]
1153 pub head_commit: Option<String>,
1154 #[serde(skip_serializing_if = "Option::is_none")]
1156 pub host_type: Option<WorkingDirectoryContextHostType>,
1157 #[serde(skip_serializing_if = "Option::is_none")]
1159 pub repository: Option<String>,
1160 #[serde(skip_serializing_if = "Option::is_none")]
1162 pub repository_host: Option<String>,
1163}
1164
1165#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1167#[serde(rename_all = "camelCase")]
1168pub struct SessionUsageInfoData {
1169 #[serde(skip_serializing_if = "Option::is_none")]
1171 pub conversation_tokens: Option<i64>,
1172 pub current_tokens: i64,
1174 #[serde(skip_serializing_if = "Option::is_none")]
1176 pub is_initial: Option<bool>,
1177 pub messages_length: i64,
1179 #[serde(skip_serializing_if = "Option::is_none")]
1181 pub system_tokens: Option<i64>,
1182 pub token_limit: i64,
1184 #[serde(skip_serializing_if = "Option::is_none")]
1186 pub tool_definitions_tokens: Option<i64>,
1187}
1188
1189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1191#[serde(rename_all = "camelCase")]
1192pub struct SessionCompactionStartData {
1193 #[serde(skip_serializing_if = "Option::is_none")]
1195 pub conversation_tokens: Option<i64>,
1196 #[serde(skip_serializing_if = "Option::is_none")]
1198 pub system_tokens: Option<i64>,
1199 #[serde(skip_serializing_if = "Option::is_none")]
1201 pub tool_definitions_tokens: Option<i64>,
1202}
1203
1204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1206#[serde(rename_all = "camelCase")]
1207pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1208 pub batch_size: i64,
1210 pub cost_per_batch: i64,
1212 pub token_count: i64,
1214 pub token_type: String,
1216}
1217
1218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1220#[serde(rename_all = "camelCase")]
1221pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1222 #[doc(hidden)]
1224 #[serde(skip_serializing_if = "Option::is_none")]
1225 pub(crate) token_details:
1226 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1227 pub total_nano_aiu: f64,
1229}
1230
1231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1233#[serde(rename_all = "camelCase")]
1234pub struct CompactionCompleteCompactionTokensUsed {
1235 #[serde(skip_serializing_if = "Option::is_none")]
1237 pub cache_read_tokens: Option<i64>,
1238 #[serde(skip_serializing_if = "Option::is_none")]
1240 pub cache_write_tokens: Option<i64>,
1241 #[doc(hidden)]
1243 #[serde(skip_serializing_if = "Option::is_none")]
1244 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1245 #[serde(skip_serializing_if = "Option::is_none")]
1247 pub duration: Option<i64>,
1248 #[serde(skip_serializing_if = "Option::is_none")]
1250 pub input_tokens: Option<i64>,
1251 #[serde(skip_serializing_if = "Option::is_none")]
1253 pub model: Option<String>,
1254 #[serde(skip_serializing_if = "Option::is_none")]
1256 pub output_tokens: Option<i64>,
1257}
1258
1259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1261#[serde(rename_all = "camelCase")]
1262pub struct SessionCompactionCompleteData {
1263 #[serde(skip_serializing_if = "Option::is_none")]
1265 pub checkpoint_number: Option<i64>,
1266 #[serde(skip_serializing_if = "Option::is_none")]
1268 pub checkpoint_path: Option<String>,
1269 #[serde(skip_serializing_if = "Option::is_none")]
1271 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1272 #[serde(skip_serializing_if = "Option::is_none")]
1274 pub conversation_tokens: Option<i64>,
1275 #[serde(skip_serializing_if = "Option::is_none")]
1277 pub custom_instructions: Option<String>,
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub error: Option<String>,
1281 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub messages_removed: Option<i64>,
1284 #[serde(skip_serializing_if = "Option::is_none")]
1286 pub post_compaction_tokens: Option<i64>,
1287 #[serde(skip_serializing_if = "Option::is_none")]
1289 pub pre_compaction_messages_length: Option<i64>,
1290 #[serde(skip_serializing_if = "Option::is_none")]
1292 pub pre_compaction_tokens: Option<i64>,
1293 #[serde(skip_serializing_if = "Option::is_none")]
1295 pub request_id: Option<RequestId>,
1296 #[serde(skip_serializing_if = "Option::is_none")]
1298 pub service_request_id: Option<String>,
1299 #[serde(skip_serializing_if = "Option::is_none")]
1301 pub status_code: Option<i64>,
1302 pub success: bool,
1304 #[serde(skip_serializing_if = "Option::is_none")]
1306 pub summary_content: Option<String>,
1307 #[serde(skip_serializing_if = "Option::is_none")]
1309 pub system_tokens: Option<i64>,
1310 #[serde(skip_serializing_if = "Option::is_none")]
1312 pub tokens_removed: Option<i64>,
1313 #[serde(skip_serializing_if = "Option::is_none")]
1315 pub tool_definitions_tokens: Option<i64>,
1316}
1317
1318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1320#[serde(rename_all = "camelCase")]
1321pub struct SessionTaskCompleteData {
1322 #[serde(skip_serializing_if = "Option::is_none")]
1324 pub success: Option<bool>,
1325 #[serde(skip_serializing_if = "Option::is_none")]
1327 pub summary: Option<String>,
1328}
1329
1330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1332#[serde(rename_all = "camelCase")]
1333pub struct UserMessageData {
1334 #[serde(skip_serializing_if = "Option::is_none")]
1336 pub agent_mode: Option<UserMessageAgentMode>,
1337 #[serde(skip_serializing_if = "Option::is_none")]
1339 pub attachments: Option<Vec<serde_json::Value>>,
1340 pub content: String,
1342 #[serde(skip_serializing_if = "Option::is_none")]
1344 pub delivery: Option<UserMessageDelivery>,
1345 #[serde(skip_serializing_if = "Option::is_none")]
1347 pub interaction_id: Option<String>,
1348 #[serde(skip_serializing_if = "Option::is_none")]
1350 pub is_autopilot_continuation: Option<bool>,
1351 #[serde(skip_serializing_if = "Option::is_none")]
1353 pub native_document_path_fallback_paths: Option<Vec<String>>,
1354 #[serde(skip_serializing_if = "Option::is_none")]
1356 pub parent_agent_task_id: Option<String>,
1357 #[serde(skip_serializing_if = "Option::is_none")]
1359 pub source: Option<String>,
1360 #[serde(skip_serializing_if = "Option::is_none")]
1362 pub supported_native_document_mime_types: Option<Vec<String>>,
1363 #[serde(skip_serializing_if = "Option::is_none")]
1365 pub transformed_content: Option<String>,
1366}
1367
1368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1370#[serde(rename_all = "camelCase")]
1371pub struct PendingMessagesModifiedData {}
1372
1373#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1375#[serde(rename_all = "camelCase")]
1376pub struct AssistantTurnStartData {
1377 #[serde(skip_serializing_if = "Option::is_none")]
1379 pub interaction_id: Option<String>,
1380 pub turn_id: String,
1382}
1383
1384#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1386#[serde(rename_all = "camelCase")]
1387pub struct AssistantIntentData {
1388 pub intent: String,
1390}
1391
1392#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1394#[serde(rename_all = "camelCase")]
1395pub struct AssistantReasoningData {
1396 pub content: String,
1398 pub reasoning_id: String,
1400}
1401
1402#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1404#[serde(rename_all = "camelCase")]
1405pub struct AssistantReasoningDeltaData {
1406 pub delta_content: String,
1408 pub reasoning_id: String,
1410}
1411
1412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1414#[serde(rename_all = "camelCase")]
1415pub struct AssistantStreamingDeltaData {
1416 pub total_response_size_bytes: i64,
1418}
1419
1420#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1429#[serde(rename_all = "camelCase")]
1430pub struct CitationSource {
1431 pub id: String,
1433 #[serde(skip_serializing_if = "Option::is_none")]
1435 pub path: Option<String>,
1436 pub provider: CitationProvider,
1438 #[serde(skip_serializing_if = "Option::is_none")]
1440 pub title: Option<String>,
1441 #[serde(skip_serializing_if = "Option::is_none")]
1443 pub url: Option<String>,
1444}
1445
1446#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1455#[serde(rename_all = "camelCase")]
1456pub struct CitationReference {
1457 #[serde(skip_serializing_if = "Option::is_none")]
1459 pub cited_text: Option<String>,
1460 #[serde(skip_serializing_if = "Option::is_none")]
1462 pub location: Option<serde_json::Value>,
1463 #[serde(skip_serializing_if = "Option::is_none")]
1465 pub provider_metadata: Option<serde_json::Value>,
1466 pub source_id: String,
1468}
1469
1470#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1479#[serde(rename_all = "camelCase")]
1480pub struct CitationSpan {
1481 pub end_index: i64,
1483 pub references: Vec<CitationReference>,
1485 pub start_index: i64,
1487}
1488
1489#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1498#[serde(rename_all = "camelCase")]
1499pub struct Citations {
1500 pub sources: Vec<CitationSource>,
1502 pub spans: Vec<CitationSpan>,
1504}
1505
1506#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1515#[serde(rename_all = "camelCase")]
1516pub struct AssistantMessageServerTools {
1517 #[serde(skip_serializing_if = "Option::is_none")]
1518 pub advisor_model: Option<String>,
1519 #[serde(skip_serializing_if = "Option::is_none")]
1520 pub function_call_namespaces: Option<HashMap<String, String>>,
1521 #[serde(skip_serializing_if = "Option::is_none")]
1522 pub items: Option<Vec<serde_json::Value>>,
1523 pub provider: String,
1524 #[serde(skip_serializing_if = "Option::is_none")]
1525 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1526}
1527
1528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1530#[serde(rename_all = "camelCase")]
1531pub struct AssistantMessageToolRequest {
1532 #[serde(skip_serializing_if = "Option::is_none")]
1534 pub arguments: Option<serde_json::Value>,
1535 #[serde(skip_serializing_if = "Option::is_none")]
1537 pub intention_summary: Option<String>,
1538 #[serde(skip_serializing_if = "Option::is_none")]
1540 pub mcp_server_name: Option<String>,
1541 #[serde(skip_serializing_if = "Option::is_none")]
1543 pub mcp_tool_name: Option<String>,
1544 pub name: String,
1546 pub tool_call_id: String,
1548 #[serde(skip_serializing_if = "Option::is_none")]
1550 pub tool_title: Option<String>,
1551 #[serde(skip_serializing_if = "Option::is_none")]
1553 pub r#type: Option<AssistantMessageToolRequestType>,
1554}
1555
1556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1558#[serde(rename_all = "camelCase")]
1559pub struct AssistantMessageData {
1560 #[serde(skip_serializing_if = "Option::is_none")]
1562 pub api_call_id: Option<String>,
1563 #[serde(skip_serializing_if = "Option::is_none")]
1572 pub citations: Option<Citations>,
1573 pub content: String,
1575 #[serde(skip_serializing_if = "Option::is_none")]
1577 pub encrypted_content: Option<String>,
1578 #[serde(skip_serializing_if = "Option::is_none")]
1580 pub interaction_id: Option<String>,
1581 pub message_id: String,
1583 #[serde(skip_serializing_if = "Option::is_none")]
1585 pub model: Option<String>,
1586 #[serde(skip_serializing_if = "Option::is_none")]
1588 pub output_tokens: Option<i64>,
1589 #[doc(hidden)]
1591 #[deprecated]
1592 #[serde(skip_serializing_if = "Option::is_none")]
1593 pub parent_tool_call_id: Option<String>,
1594 #[serde(skip_serializing_if = "Option::is_none")]
1596 pub phase: Option<String>,
1597 #[serde(skip_serializing_if = "Option::is_none")]
1599 pub reasoning_opaque: Option<String>,
1600 #[serde(skip_serializing_if = "Option::is_none")]
1602 pub reasoning_text: Option<String>,
1603 #[serde(skip_serializing_if = "Option::is_none")]
1605 pub reasoning_wire_field: Option<String>,
1606 #[serde(skip_serializing_if = "Option::is_none")]
1608 pub request_id: Option<RequestId>,
1609 #[serde(skip_serializing_if = "Option::is_none")]
1611 pub server_tools: Option<AssistantMessageServerTools>,
1612 #[serde(skip_serializing_if = "Option::is_none")]
1614 pub service_request_id: Option<String>,
1615 #[serde(skip_serializing_if = "Option::is_none")]
1617 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1618 #[serde(skip_serializing_if = "Option::is_none")]
1620 pub turn_id: Option<String>,
1621}
1622
1623#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1625#[serde(rename_all = "camelCase")]
1626pub struct AssistantMessageStartData {
1627 pub message_id: String,
1629 #[serde(skip_serializing_if = "Option::is_none")]
1631 pub phase: Option<String>,
1632}
1633
1634#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1636#[serde(rename_all = "camelCase")]
1637pub struct AssistantMessageDeltaData {
1638 pub delta_content: String,
1640 pub message_id: String,
1642 #[doc(hidden)]
1644 #[deprecated]
1645 #[serde(skip_serializing_if = "Option::is_none")]
1646 pub parent_tool_call_id: Option<String>,
1647}
1648
1649#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1651#[serde(rename_all = "camelCase")]
1652pub struct AssistantTurnEndData {
1653 pub turn_id: String,
1655}
1656
1657#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1659#[serde(rename_all = "camelCase")]
1660pub struct AssistantIdleData {
1661 #[serde(skip_serializing_if = "Option::is_none")]
1663 pub aborted: Option<bool>,
1664}
1665
1666#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1668#[serde(rename_all = "camelCase")]
1669pub struct AssistantUsageCopilotUsageTokenDetail {
1670 pub batch_size: i64,
1672 pub cost_per_batch: i64,
1674 pub token_count: i64,
1676 pub token_type: String,
1678}
1679
1680#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1682#[serde(rename_all = "camelCase")]
1683pub struct AssistantUsageCopilotUsage {
1684 #[doc(hidden)]
1686 #[serde(skip_serializing_if = "Option::is_none")]
1687 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1688 pub total_nano_aiu: f64,
1690}
1691
1692#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1694#[serde(rename_all = "camelCase")]
1695pub(crate) struct AssistantUsageQuotaSnapshot {
1696 #[doc(hidden)]
1698 pub(crate) entitlement_requests: i64,
1699 #[doc(hidden)]
1701 #[serde(skip_serializing_if = "Option::is_none")]
1702 pub(crate) has_quota: Option<bool>,
1703 #[doc(hidden)]
1705 pub(crate) is_unlimited_entitlement: bool,
1706 #[doc(hidden)]
1708 pub(crate) overage: f64,
1709 #[doc(hidden)]
1711 pub(crate) overage_allowed_with_exhausted_quota: bool,
1712 #[doc(hidden)]
1714 #[serde(skip_serializing_if = "Option::is_none")]
1715 pub(crate) overage_entitlement: Option<f64>,
1716 #[doc(hidden)]
1718 pub(crate) remaining_percentage: f64,
1719 #[doc(hidden)]
1721 #[serde(skip_serializing_if = "Option::is_none")]
1722 pub(crate) reset_date: Option<String>,
1723 #[doc(hidden)]
1725 #[serde(skip_serializing_if = "Option::is_none")]
1726 pub(crate) token_based_billing: Option<bool>,
1727 #[doc(hidden)]
1729 pub(crate) usage_allowed_with_exhausted_quota: bool,
1730 #[doc(hidden)]
1732 pub(crate) used_requests: i64,
1733}
1734
1735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1737#[serde(rename_all = "camelCase")]
1738pub struct AssistantUsageData {
1739 #[serde(skip_serializing_if = "Option::is_none")]
1741 pub api_call_id: Option<String>,
1742 #[serde(skip_serializing_if = "Option::is_none")]
1744 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1745 #[serde(skip_serializing_if = "Option::is_none")]
1747 pub cache_read_tokens: Option<i64>,
1748 #[serde(skip_serializing_if = "Option::is_none")]
1750 pub cache_write_tokens: Option<i64>,
1751 #[serde(skip_serializing_if = "Option::is_none")]
1753 pub content_filter_triggered: Option<bool>,
1754 #[serde(skip_serializing_if = "Option::is_none")]
1756 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1757 #[serde(skip_serializing_if = "Option::is_none")]
1766 pub cost: Option<f64>,
1767 #[serde(skip_serializing_if = "Option::is_none")]
1769 pub duration: Option<i64>,
1770 #[serde(skip_serializing_if = "Option::is_none")]
1772 pub finish_reason: Option<String>,
1773 #[serde(skip_serializing_if = "Option::is_none")]
1775 pub initiator: Option<String>,
1776 #[serde(skip_serializing_if = "Option::is_none")]
1778 pub input_tokens: Option<i64>,
1779 #[serde(skip_serializing_if = "Option::is_none")]
1781 pub inter_token_latency_ms: Option<f64>,
1782 pub model: String,
1784 #[serde(skip_serializing_if = "Option::is_none")]
1786 pub output_tokens: Option<i64>,
1787 #[doc(hidden)]
1789 #[deprecated]
1790 #[serde(skip_serializing_if = "Option::is_none")]
1791 pub parent_tool_call_id: Option<String>,
1792 #[serde(skip_serializing_if = "Option::is_none")]
1794 pub provider_call_id: Option<String>,
1795 #[doc(hidden)]
1797 #[serde(skip_serializing_if = "Option::is_none")]
1798 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1799 #[serde(skip_serializing_if = "Option::is_none")]
1801 pub reasoning_effort: Option<String>,
1802 #[serde(skip_serializing_if = "Option::is_none")]
1804 pub reasoning_tokens: Option<i64>,
1805 #[serde(skip_serializing_if = "Option::is_none")]
1807 pub service_request_id: Option<String>,
1808 #[serde(skip_serializing_if = "Option::is_none")]
1810 pub time_to_first_token_ms: Option<i64>,
1811}
1812
1813#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1815#[serde(rename_all = "camelCase")]
1816pub struct ModelCallFailureRequestFingerprint {
1817 pub image_part_count: i64,
1819 pub image_parts_missing_media_type: i64,
1821 #[serde(skip_serializing_if = "Option::is_none")]
1823 pub last_message_role: Option<String>,
1824 pub message_count: i64,
1826 pub nameless_tool_call_count: i64,
1828 pub tool_call_count: i64,
1830 pub tool_result_message_count: i64,
1832}
1833
1834#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1836#[serde(rename_all = "camelCase")]
1837pub struct ModelCallFailureData {
1838 #[serde(skip_serializing_if = "Option::is_none")]
1840 pub api_call_id: Option<String>,
1841 #[serde(skip_serializing_if = "Option::is_none")]
1843 pub bad_request_kind: Option<ModelCallFailureBadRequestKind>,
1844 #[serde(skip_serializing_if = "Option::is_none")]
1846 pub duration_ms: Option<i64>,
1847 #[serde(skip_serializing_if = "Option::is_none")]
1849 pub error_code: Option<String>,
1850 #[serde(skip_serializing_if = "Option::is_none")]
1852 pub error_message: Option<String>,
1853 #[serde(skip_serializing_if = "Option::is_none")]
1855 pub error_type: Option<String>,
1856 #[serde(skip_serializing_if = "Option::is_none")]
1858 pub initiator: Option<String>,
1859 #[serde(skip_serializing_if = "Option::is_none")]
1861 pub model: Option<String>,
1862 #[serde(skip_serializing_if = "Option::is_none")]
1864 pub provider_call_id: Option<String>,
1865 #[doc(hidden)]
1867 #[serde(skip_serializing_if = "Option::is_none")]
1868 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1869 #[serde(skip_serializing_if = "Option::is_none")]
1871 pub request_fingerprint: Option<ModelCallFailureRequestFingerprint>,
1872 #[serde(skip_serializing_if = "Option::is_none")]
1874 pub service_request_id: Option<String>,
1875 pub source: ModelCallFailureSource,
1877 #[serde(skip_serializing_if = "Option::is_none")]
1879 pub status_code: Option<i32>,
1880}
1881
1882#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1884#[serde(rename_all = "camelCase")]
1885pub struct AbortData {
1886 pub reason: AbortReason,
1888}
1889
1890#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1892#[serde(rename_all = "camelCase")]
1893pub struct ToolUserRequestedData {
1894 #[serde(skip_serializing_if = "Option::is_none")]
1896 pub arguments: Option<serde_json::Value>,
1897 pub tool_call_id: String,
1899 pub tool_name: String,
1901}
1902
1903#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1905#[serde(rename_all = "camelCase")]
1906pub struct ToolExecutionStartShellToolInfo {
1907 pub has_write_file_redirection: bool,
1909 pub possible_paths: Vec<String>,
1911}
1912
1913#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1915#[serde(rename_all = "camelCase")]
1916pub struct ToolExecutionStartToolDescriptionMetaUI {
1917 #[serde(skip_serializing_if = "Option::is_none")]
1919 pub resource_uri: Option<String>,
1920 #[serde(skip_serializing_if = "Option::is_none")]
1922 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
1923}
1924
1925#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1927#[serde(rename_all = "camelCase")]
1928pub struct ToolExecutionStartToolDescriptionMeta {
1929 #[serde(skip_serializing_if = "Option::is_none")]
1931 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
1932}
1933
1934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1936#[serde(rename_all = "camelCase")]
1937pub struct ToolExecutionStartToolDescription {
1938 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1940 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
1941 #[serde(skip_serializing_if = "Option::is_none")]
1943 pub description: Option<String>,
1944 pub name: String,
1946}
1947
1948#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1950#[serde(rename_all = "camelCase")]
1951pub struct ToolExecutionStartData {
1952 #[serde(skip_serializing_if = "Option::is_none")]
1954 pub arguments: Option<serde_json::Value>,
1955 #[serde(skip_serializing_if = "Option::is_none")]
1957 pub display_verbatim: Option<bool>,
1958 #[serde(skip_serializing_if = "Option::is_none")]
1960 pub mcp_server_name: Option<String>,
1961 #[serde(skip_serializing_if = "Option::is_none")]
1963 pub mcp_tool_name: Option<String>,
1964 #[serde(skip_serializing_if = "Option::is_none")]
1966 pub model: Option<String>,
1967 #[doc(hidden)]
1969 #[deprecated]
1970 #[serde(skip_serializing_if = "Option::is_none")]
1971 pub parent_tool_call_id: Option<String>,
1972 #[serde(skip_serializing_if = "Option::is_none")]
1974 pub shell_tool_info: Option<ToolExecutionStartShellToolInfo>,
1975 pub tool_call_id: String,
1977 #[serde(skip_serializing_if = "Option::is_none")]
1979 pub tool_description: Option<ToolExecutionStartToolDescription>,
1980 pub tool_name: String,
1982 #[serde(skip_serializing_if = "Option::is_none")]
1984 pub turn_id: Option<String>,
1985}
1986
1987#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1989#[serde(rename_all = "camelCase")]
1990pub struct ToolExecutionPartialResultData {
1991 pub partial_output: String,
1993 pub tool_call_id: String,
1995}
1996
1997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1999#[serde(rename_all = "camelCase")]
2000pub struct ToolExecutionProgressData {
2001 pub progress_message: String,
2003 pub tool_call_id: String,
2005}
2006
2007#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2009#[serde(rename_all = "camelCase")]
2010pub struct ToolExecutionCompleteError {
2011 #[serde(skip_serializing_if = "Option::is_none")]
2013 pub code: Option<String>,
2014 pub message: String,
2016}
2017
2018#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2027#[serde(rename_all = "camelCase")]
2028pub struct CitableSource {
2029 pub content: String,
2031 pub id: String,
2033 #[serde(skip_serializing_if = "Option::is_none")]
2035 pub path: Option<String>,
2036 #[serde(skip_serializing_if = "Option::is_none")]
2038 pub title: Option<String>,
2039 #[serde(skip_serializing_if = "Option::is_none")]
2041 pub url: Option<String>,
2042}
2043
2044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2046#[serde(rename_all = "camelCase")]
2047pub struct ToolExecutionCompleteContentText {
2048 pub text: String,
2050 pub r#type: ToolExecutionCompleteContentTextType,
2052}
2053
2054#[doc(hidden)]
2056#[deprecated]
2057#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2058#[serde(rename_all = "camelCase")]
2059pub struct ToolExecutionCompleteContentTerminal {
2060 #[serde(skip_serializing_if = "Option::is_none")]
2062 pub cwd: Option<String>,
2063 #[serde(skip_serializing_if = "Option::is_none")]
2065 pub exit_code: Option<i64>,
2066 pub text: String,
2068 pub r#type: ToolExecutionCompleteContentTerminalType,
2070}
2071
2072#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2074#[serde(rename_all = "camelCase")]
2075pub struct ToolExecutionCompleteContentShellExit {
2076 #[serde(skip_serializing_if = "Option::is_none")]
2078 pub cwd: Option<String>,
2079 pub exit_code: i64,
2081 #[serde(skip_serializing_if = "Option::is_none")]
2083 pub output_preview: Option<String>,
2084 #[serde(skip_serializing_if = "Option::is_none")]
2086 pub output_truncated: Option<bool>,
2087 pub shell_id: String,
2089 pub r#type: ToolExecutionCompleteContentShellExitType,
2091}
2092
2093#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2095#[serde(rename_all = "camelCase")]
2096pub struct ToolExecutionCompleteContentImage {
2097 pub data: String,
2099 pub mime_type: String,
2101 pub r#type: ToolExecutionCompleteContentImageType,
2103}
2104
2105#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2107#[serde(rename_all = "camelCase")]
2108pub struct ToolExecutionCompleteContentAudio {
2109 pub data: String,
2111 pub mime_type: String,
2113 pub r#type: ToolExecutionCompleteContentAudioType,
2115}
2116
2117#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2119#[serde(rename_all = "camelCase")]
2120pub struct ToolExecutionCompleteContentResourceLinkIcon {
2121 #[serde(skip_serializing_if = "Option::is_none")]
2123 pub mime_type: Option<String>,
2124 #[serde(skip_serializing_if = "Option::is_none")]
2126 pub sizes: Option<Vec<String>>,
2127 pub src: String,
2129 #[serde(skip_serializing_if = "Option::is_none")]
2131 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
2132}
2133
2134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2136#[serde(rename_all = "camelCase")]
2137pub struct ToolExecutionCompleteContentResourceLink {
2138 #[serde(skip_serializing_if = "Option::is_none")]
2140 pub description: Option<String>,
2141 #[serde(skip_serializing_if = "Option::is_none")]
2143 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
2144 #[serde(skip_serializing_if = "Option::is_none")]
2146 pub mime_type: Option<String>,
2147 pub name: String,
2149 #[serde(skip_serializing_if = "Option::is_none")]
2151 pub size: Option<i64>,
2152 #[serde(skip_serializing_if = "Option::is_none")]
2154 pub title: Option<String>,
2155 pub r#type: ToolExecutionCompleteContentResourceLinkType,
2157 pub uri: String,
2159}
2160
2161#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2163#[serde(rename_all = "camelCase")]
2164pub struct EmbeddedTextResourceContents {
2165 #[serde(skip_serializing_if = "Option::is_none")]
2167 pub mime_type: Option<String>,
2168 pub text: String,
2170 pub uri: String,
2172}
2173
2174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2176#[serde(rename_all = "camelCase")]
2177pub struct EmbeddedBlobResourceContents {
2178 pub blob: String,
2180 #[serde(skip_serializing_if = "Option::is_none")]
2182 pub mime_type: Option<String>,
2183 pub uri: String,
2185}
2186
2187#[derive(Debug, Clone, Serialize, Deserialize)]
2189#[serde(rename_all = "camelCase")]
2190pub struct ToolExecutionCompleteContentResource {
2191 pub resource: ToolExecutionCompleteContentResourceDetails,
2193 pub r#type: ToolExecutionCompleteContentResourceType,
2195}
2196
2197#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2199#[serde(rename_all = "camelCase")]
2200pub struct ToolExecutionCompleteUIResourceMetaUICsp {
2201 #[serde(skip_serializing_if = "Option::is_none")]
2202 pub base_uri_domains: Option<Vec<String>>,
2203 #[serde(skip_serializing_if = "Option::is_none")]
2204 pub connect_domains: Option<Vec<String>>,
2205 #[serde(skip_serializing_if = "Option::is_none")]
2206 pub frame_domains: Option<Vec<String>>,
2207 #[serde(skip_serializing_if = "Option::is_none")]
2208 pub resource_domains: Option<Vec<String>>,
2209}
2210
2211#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2213#[serde(rename_all = "camelCase")]
2214pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
2215
2216#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2218#[serde(rename_all = "camelCase")]
2219pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
2220
2221#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2223#[serde(rename_all = "camelCase")]
2224pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
2225
2226#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2228#[serde(rename_all = "camelCase")]
2229pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
2230
2231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2233#[serde(rename_all = "camelCase")]
2234pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
2235 #[serde(skip_serializing_if = "Option::is_none")]
2237 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
2238 #[serde(skip_serializing_if = "Option::is_none")]
2240 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
2241 #[serde(skip_serializing_if = "Option::is_none")]
2243 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
2244 #[serde(skip_serializing_if = "Option::is_none")]
2246 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
2247}
2248
2249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2251#[serde(rename_all = "camelCase")]
2252pub struct ToolExecutionCompleteUIResourceMetaUI {
2253 #[serde(skip_serializing_if = "Option::is_none")]
2255 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
2256 #[serde(skip_serializing_if = "Option::is_none")]
2257 pub domain: Option<String>,
2258 #[serde(skip_serializing_if = "Option::is_none")]
2260 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
2261 #[serde(skip_serializing_if = "Option::is_none")]
2262 pub prefers_border: Option<bool>,
2263}
2264
2265#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2267#[serde(rename_all = "camelCase")]
2268pub struct ToolExecutionCompleteUIResourceMeta {
2269 #[serde(skip_serializing_if = "Option::is_none")]
2271 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
2272}
2273
2274#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2276#[serde(rename_all = "camelCase")]
2277pub struct ToolExecutionCompleteUIResource {
2278 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2280 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
2281 #[serde(skip_serializing_if = "Option::is_none")]
2283 pub blob: Option<String>,
2284 pub mime_type: String,
2286 #[serde(skip_serializing_if = "Option::is_none")]
2288 pub text: Option<String>,
2289 pub uri: String,
2291}
2292
2293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2295#[serde(rename_all = "camelCase")]
2296pub struct ToolExecutionCompleteResult {
2297 #[serde(skip_serializing_if = "Option::is_none")]
2306 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
2307 #[serde(skip_serializing_if = "Option::is_none")]
2316 pub citable_sources: Option<Vec<CitableSource>>,
2317 pub content: String,
2319 #[serde(skip_serializing_if = "Option::is_none")]
2321 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
2322 #[serde(skip_serializing_if = "Option::is_none")]
2324 pub detailed_content: Option<String>,
2325 #[serde(skip_serializing_if = "Option::is_none")]
2327 pub structured_content: Option<serde_json::Value>,
2328 #[serde(skip_serializing_if = "Option::is_none")]
2330 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2331}
2332
2333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2335#[serde(rename_all = "camelCase")]
2336pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2337 #[serde(skip_serializing_if = "Option::is_none")]
2339 pub resource_uri: Option<String>,
2340 #[serde(skip_serializing_if = "Option::is_none")]
2342 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2343}
2344
2345#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2347#[serde(rename_all = "camelCase")]
2348pub struct ToolExecutionCompleteToolDescriptionMeta {
2349 #[serde(skip_serializing_if = "Option::is_none")]
2351 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2352}
2353
2354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2356#[serde(rename_all = "camelCase")]
2357pub struct ToolExecutionCompleteToolDescription {
2358 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2360 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2361 #[serde(skip_serializing_if = "Option::is_none")]
2363 pub description: Option<String>,
2364 pub name: String,
2366}
2367
2368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2370#[serde(rename_all = "camelCase")]
2371pub struct ToolExecutionCompleteData {
2372 #[serde(skip_serializing_if = "Option::is_none")]
2374 pub error: Option<ToolExecutionCompleteError>,
2375 #[serde(skip_serializing_if = "Option::is_none")]
2377 pub interaction_id: Option<String>,
2378 #[serde(skip_serializing_if = "Option::is_none")]
2380 pub is_user_requested: Option<bool>,
2381 #[serde(skip_serializing_if = "Option::is_none")]
2383 pub model: Option<String>,
2384 #[doc(hidden)]
2386 #[deprecated]
2387 #[serde(skip_serializing_if = "Option::is_none")]
2388 pub parent_tool_call_id: Option<String>,
2389 #[serde(skip_serializing_if = "Option::is_none")]
2391 pub result: Option<ToolExecutionCompleteResult>,
2392 #[serde(skip_serializing_if = "Option::is_none")]
2394 pub sandboxed: Option<bool>,
2395 pub success: bool,
2397 pub tool_call_id: String,
2399 #[serde(skip_serializing_if = "Option::is_none")]
2401 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2402 #[serde(skip_serializing_if = "Option::is_none")]
2404 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2405 #[serde(skip_serializing_if = "Option::is_none")]
2407 pub turn_id: Option<String>,
2408}
2409
2410#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2412#[serde(rename_all = "camelCase")]
2413pub struct SkillInvokedData {
2414 #[serde(skip_serializing_if = "Option::is_none")]
2416 pub allowed_tools: Option<Vec<String>>,
2417 pub content: String,
2419 #[serde(skip_serializing_if = "Option::is_none")]
2421 pub description: Option<String>,
2422 pub name: String,
2424 pub path: String,
2426 #[serde(skip_serializing_if = "Option::is_none")]
2428 pub plugin_name: Option<String>,
2429 #[serde(skip_serializing_if = "Option::is_none")]
2431 pub plugin_version: Option<String>,
2432 #[serde(skip_serializing_if = "Option::is_none")]
2434 pub source: Option<String>,
2435 #[serde(skip_serializing_if = "Option::is_none")]
2437 pub trigger: Option<SkillInvokedTrigger>,
2438}
2439
2440#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2442#[serde(rename_all = "camelCase")]
2443pub struct SubagentStartedData {
2444 pub agent_description: String,
2446 pub agent_display_name: String,
2448 pub agent_name: String,
2450 #[serde(skip_serializing_if = "Option::is_none")]
2452 pub model: Option<String>,
2453 pub tool_call_id: String,
2455}
2456
2457#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2459#[serde(rename_all = "camelCase")]
2460pub struct SubagentCompletedData {
2461 pub agent_display_name: String,
2463 pub agent_name: String,
2465 #[serde(skip_serializing_if = "Option::is_none")]
2467 pub duration_ms: Option<i64>,
2468 #[serde(skip_serializing_if = "Option::is_none")]
2470 pub model: Option<String>,
2471 pub tool_call_id: String,
2473 #[serde(skip_serializing_if = "Option::is_none")]
2475 pub total_tokens: Option<i64>,
2476 #[serde(skip_serializing_if = "Option::is_none")]
2478 pub total_tool_calls: Option<i64>,
2479}
2480
2481#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2483#[serde(rename_all = "camelCase")]
2484pub struct SubagentFailedData {
2485 pub agent_display_name: String,
2487 pub agent_name: String,
2489 #[serde(skip_serializing_if = "Option::is_none")]
2491 pub duration_ms: Option<i64>,
2492 pub error: String,
2494 #[serde(skip_serializing_if = "Option::is_none")]
2496 pub model: Option<String>,
2497 pub tool_call_id: String,
2499 #[serde(skip_serializing_if = "Option::is_none")]
2501 pub total_tokens: Option<i64>,
2502 #[serde(skip_serializing_if = "Option::is_none")]
2504 pub total_tool_calls: Option<i64>,
2505}
2506
2507#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2509#[serde(rename_all = "camelCase")]
2510pub struct SubagentSelectedData {
2511 pub agent_display_name: String,
2513 pub agent_name: String,
2515 pub tools: Option<Vec<String>>,
2517}
2518
2519#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2521#[serde(rename_all = "camelCase")]
2522pub struct SubagentDeselectedData {}
2523
2524#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2526#[serde(rename_all = "camelCase")]
2527pub struct HookStartData {
2528 pub hook_invocation_id: String,
2530 pub hook_type: String,
2532 #[serde(skip_serializing_if = "Option::is_none")]
2534 pub input: Option<serde_json::Value>,
2535}
2536
2537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2539#[serde(rename_all = "camelCase")]
2540pub struct HookEndError {
2541 pub message: String,
2543 #[serde(skip_serializing_if = "Option::is_none")]
2545 pub source: Option<String>,
2546 #[serde(skip_serializing_if = "Option::is_none")]
2548 pub stack: Option<String>,
2549}
2550
2551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2553#[serde(rename_all = "camelCase")]
2554pub struct HookEndData {
2555 #[serde(skip_serializing_if = "Option::is_none")]
2557 pub error: Option<HookEndError>,
2558 pub hook_invocation_id: String,
2560 pub hook_type: String,
2562 #[serde(skip_serializing_if = "Option::is_none")]
2564 pub output: Option<serde_json::Value>,
2565 pub success: bool,
2567}
2568
2569#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2571#[serde(rename_all = "camelCase")]
2572pub struct HookProgressData {
2573 pub message: String,
2575 #[serde(skip_serializing_if = "Option::is_none")]
2577 pub temporary: Option<bool>,
2578}
2579
2580#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2582#[serde(rename_all = "camelCase")]
2583pub struct SessionBinaryAssetData {
2584 pub asset_id: String,
2586 pub byte_length: i64,
2588 pub data: String,
2590 #[serde(skip_serializing_if = "Option::is_none")]
2592 pub description: Option<String>,
2593 #[serde(skip_serializing_if = "Option::is_none")]
2595 pub metadata: Option<HashMap<String, serde_json::Value>>,
2596 pub mime_type: String,
2598 pub r#type: BinaryAssetType,
2600}
2601
2602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2604#[serde(rename_all = "camelCase")]
2605pub struct SystemMessageMetadata {
2606 #[serde(skip_serializing_if = "Option::is_none")]
2608 pub prompt_version: Option<String>,
2609 #[serde(skip_serializing_if = "Option::is_none")]
2611 pub variables: Option<HashMap<String, serde_json::Value>>,
2612}
2613
2614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2616#[serde(rename_all = "camelCase")]
2617pub struct SystemMessageData {
2618 pub content: String,
2620 #[serde(skip_serializing_if = "Option::is_none")]
2622 pub metadata: Option<SystemMessageMetadata>,
2623 #[serde(skip_serializing_if = "Option::is_none")]
2625 pub name: Option<String>,
2626 pub role: SystemMessageRole,
2628}
2629
2630#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2632#[serde(rename_all = "camelCase")]
2633pub struct SystemNotificationData {
2634 pub content: String,
2636 pub kind: serde_json::Value,
2638}
2639
2640#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2642#[serde(rename_all = "camelCase")]
2643pub struct PermissionRequestShellCommand {
2644 pub identifier: String,
2646 pub read_only: bool,
2648}
2649
2650#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2652#[serde(rename_all = "camelCase")]
2653pub struct PermissionRequestShellPossibleUrl {
2654 pub url: String,
2656}
2657
2658#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2660#[serde(rename_all = "camelCase")]
2661pub struct PermissionRequestShell {
2662 pub can_offer_session_approval: bool,
2664 pub commands: Vec<PermissionRequestShellCommand>,
2666 pub full_command_text: String,
2668 pub has_write_file_redirection: bool,
2670 pub intention: String,
2672 pub kind: PermissionRequestShellKind,
2674 pub possible_paths: Vec<String>,
2676 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2678 #[serde(skip_serializing_if = "Option::is_none")]
2680 pub request_sandbox_bypass: Option<bool>,
2681 #[serde(skip_serializing_if = "Option::is_none")]
2683 pub request_sandbox_bypass_reason: Option<String>,
2684 #[serde(skip_serializing_if = "Option::is_none")]
2686 pub tool_call_id: Option<String>,
2687 #[serde(skip_serializing_if = "Option::is_none")]
2689 pub warning: Option<String>,
2690}
2691
2692#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2694#[serde(rename_all = "camelCase")]
2695pub struct PermissionRequestWrite {
2696 pub can_offer_session_approval: bool,
2698 pub diff: String,
2700 pub file_name: String,
2702 pub intention: String,
2704 pub kind: PermissionRequestWriteKind,
2706 #[serde(skip_serializing_if = "Option::is_none")]
2708 pub new_file_contents: Option<String>,
2709 #[serde(skip_serializing_if = "Option::is_none")]
2711 pub tool_call_id: Option<String>,
2712}
2713
2714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2716#[serde(rename_all = "camelCase")]
2717pub struct PermissionRequestRead {
2718 pub intention: String,
2720 pub kind: PermissionRequestReadKind,
2722 pub path: String,
2724 #[serde(skip_serializing_if = "Option::is_none")]
2726 pub request_sandbox_bypass: Option<bool>,
2727 #[serde(skip_serializing_if = "Option::is_none")]
2729 pub request_sandbox_bypass_reason: Option<String>,
2730 #[serde(skip_serializing_if = "Option::is_none")]
2732 pub tool_call_id: Option<String>,
2733}
2734
2735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2737#[serde(rename_all = "camelCase")]
2738pub struct PermissionRequestMcp {
2739 #[serde(skip_serializing_if = "Option::is_none")]
2741 pub args: Option<serde_json::Value>,
2742 pub kind: PermissionRequestMcpKind,
2744 pub read_only: bool,
2746 pub server_name: String,
2748 #[serde(skip_serializing_if = "Option::is_none")]
2750 pub tool_call_id: Option<String>,
2751 pub tool_name: String,
2753 pub tool_title: String,
2755}
2756
2757#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2759#[serde(rename_all = "camelCase")]
2760pub struct PermissionRequestUrl {
2761 pub intention: String,
2763 pub kind: PermissionRequestUrlKind,
2765 #[serde(skip_serializing_if = "Option::is_none")]
2767 pub tool_call_id: Option<String>,
2768 pub url: String,
2770}
2771
2772#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2774#[serde(rename_all = "camelCase")]
2775pub struct PermissionRequestMemory {
2776 #[serde(skip_serializing_if = "Option::is_none")]
2778 pub action: Option<PermissionRequestMemoryAction>,
2779 #[serde(skip_serializing_if = "Option::is_none")]
2781 pub citations: Option<String>,
2782 #[serde(skip_serializing_if = "Option::is_none")]
2784 pub direction: Option<PermissionRequestMemoryDirection>,
2785 pub fact: String,
2787 pub kind: PermissionRequestMemoryKind,
2789 #[serde(skip_serializing_if = "Option::is_none")]
2791 pub reason: Option<String>,
2792 #[serde(skip_serializing_if = "Option::is_none")]
2794 pub subject: Option<String>,
2795 #[serde(skip_serializing_if = "Option::is_none")]
2797 pub tool_call_id: Option<String>,
2798}
2799
2800#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2802#[serde(rename_all = "camelCase")]
2803pub struct PermissionRequestCustomTool {
2804 #[serde(skip_serializing_if = "Option::is_none")]
2806 pub args: Option<serde_json::Value>,
2807 pub kind: PermissionRequestCustomToolKind,
2809 #[serde(skip_serializing_if = "Option::is_none")]
2811 pub tool_call_id: Option<String>,
2812 pub tool_description: String,
2814 pub tool_name: String,
2816}
2817
2818#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2820#[serde(rename_all = "camelCase")]
2821pub struct PermissionRequestHook {
2822 #[serde(skip_serializing_if = "Option::is_none")]
2824 pub hook_message: Option<String>,
2825 pub kind: PermissionRequestHookKind,
2827 #[serde(skip_serializing_if = "Option::is_none")]
2829 pub tool_args: Option<serde_json::Value>,
2830 #[serde(skip_serializing_if = "Option::is_none")]
2832 pub tool_call_id: Option<String>,
2833 pub tool_name: String,
2835}
2836
2837#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2839#[serde(rename_all = "camelCase")]
2840pub struct PermissionRequestExtensionManagement {
2841 #[serde(skip_serializing_if = "Option::is_none")]
2843 pub extension_name: Option<String>,
2844 pub kind: PermissionRequestExtensionManagementKind,
2846 pub operation: String,
2848 #[serde(skip_serializing_if = "Option::is_none")]
2850 pub tool_call_id: Option<String>,
2851}
2852
2853#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2855#[serde(rename_all = "camelCase")]
2856pub struct PermissionRequestExtensionPermissionAccess {
2857 pub capabilities: Vec<String>,
2859 pub extension_name: String,
2861 pub kind: PermissionRequestExtensionPermissionAccessKind,
2863 #[serde(skip_serializing_if = "Option::is_none")]
2865 pub tool_call_id: Option<String>,
2866}
2867
2868#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2870#[serde(rename_all = "camelCase")]
2871pub struct PermissionPromptRequestCommands {
2872 pub can_offer_session_approval: bool,
2874 pub command_identifiers: Vec<String>,
2876 pub full_command_text: String,
2878 pub intention: String,
2880 pub kind: PermissionPromptRequestCommandsKind,
2882 #[serde(skip_serializing_if = "Option::is_none")]
2884 pub tool_call_id: Option<String>,
2885 #[serde(skip_serializing_if = "Option::is_none")]
2887 pub warning: Option<String>,
2888}
2889
2890#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2892#[serde(rename_all = "camelCase")]
2893pub struct PermissionPromptRequestWrite {
2894 pub can_offer_session_approval: bool,
2896 pub diff: String,
2898 pub file_name: String,
2900 pub intention: String,
2902 pub kind: PermissionPromptRequestWriteKind,
2904 #[serde(skip_serializing_if = "Option::is_none")]
2906 pub new_file_contents: Option<String>,
2907 #[serde(skip_serializing_if = "Option::is_none")]
2909 pub tool_call_id: Option<String>,
2910}
2911
2912#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2914#[serde(rename_all = "camelCase")]
2915pub struct PermissionPromptRequestRead {
2916 pub intention: String,
2918 pub kind: PermissionPromptRequestReadKind,
2920 pub path: String,
2922 #[serde(skip_serializing_if = "Option::is_none")]
2924 pub tool_call_id: Option<String>,
2925}
2926
2927#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2929#[serde(rename_all = "camelCase")]
2930pub struct PermissionPromptRequestMcp {
2931 #[serde(skip_serializing_if = "Option::is_none")]
2933 pub args: Option<serde_json::Value>,
2934 pub kind: PermissionPromptRequestMcpKind,
2936 pub server_name: String,
2938 #[serde(skip_serializing_if = "Option::is_none")]
2940 pub tool_call_id: Option<String>,
2941 pub tool_name: String,
2943 pub tool_title: String,
2945}
2946
2947#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2949#[serde(rename_all = "camelCase")]
2950pub struct PermissionPromptRequestUrl {
2951 pub intention: String,
2953 pub kind: PermissionPromptRequestUrlKind,
2955 #[serde(skip_serializing_if = "Option::is_none")]
2957 pub tool_call_id: Option<String>,
2958 pub url: String,
2960}
2961
2962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2964#[serde(rename_all = "camelCase")]
2965pub struct PermissionPromptRequestMemory {
2966 #[serde(skip_serializing_if = "Option::is_none")]
2968 pub action: Option<PermissionRequestMemoryAction>,
2969 #[serde(skip_serializing_if = "Option::is_none")]
2971 pub citations: Option<String>,
2972 #[serde(skip_serializing_if = "Option::is_none")]
2974 pub direction: Option<PermissionRequestMemoryDirection>,
2975 pub fact: String,
2977 pub kind: PermissionPromptRequestMemoryKind,
2979 #[serde(skip_serializing_if = "Option::is_none")]
2981 pub reason: Option<String>,
2982 #[serde(skip_serializing_if = "Option::is_none")]
2984 pub subject: Option<String>,
2985 #[serde(skip_serializing_if = "Option::is_none")]
2987 pub tool_call_id: Option<String>,
2988}
2989
2990#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2992#[serde(rename_all = "camelCase")]
2993pub struct PermissionPromptRequestCustomTool {
2994 #[serde(skip_serializing_if = "Option::is_none")]
2996 pub args: Option<serde_json::Value>,
2997 pub kind: PermissionPromptRequestCustomToolKind,
2999 #[serde(skip_serializing_if = "Option::is_none")]
3001 pub tool_call_id: Option<String>,
3002 pub tool_description: String,
3004 pub tool_name: String,
3006}
3007
3008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3010#[serde(rename_all = "camelCase")]
3011pub struct PermissionPromptRequestPath {
3012 pub access_kind: PermissionPromptRequestPathAccessKind,
3014 pub kind: PermissionPromptRequestPathKind,
3016 pub paths: Vec<String>,
3018 #[serde(skip_serializing_if = "Option::is_none")]
3020 pub tool_call_id: Option<String>,
3021}
3022
3023#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3025#[serde(rename_all = "camelCase")]
3026pub struct PermissionPromptRequestHook {
3027 #[serde(skip_serializing_if = "Option::is_none")]
3029 pub hook_message: Option<String>,
3030 pub kind: PermissionPromptRequestHookKind,
3032 #[serde(skip_serializing_if = "Option::is_none")]
3034 pub tool_args: Option<serde_json::Value>,
3035 #[serde(skip_serializing_if = "Option::is_none")]
3037 pub tool_call_id: Option<String>,
3038 pub tool_name: String,
3040}
3041
3042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3044#[serde(rename_all = "camelCase")]
3045pub struct PermissionPromptRequestExtensionManagement {
3046 #[serde(skip_serializing_if = "Option::is_none")]
3048 pub extension_name: Option<String>,
3049 pub kind: PermissionPromptRequestExtensionManagementKind,
3051 pub operation: String,
3053 #[serde(skip_serializing_if = "Option::is_none")]
3055 pub tool_call_id: Option<String>,
3056}
3057
3058#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3060#[serde(rename_all = "camelCase")]
3061pub struct PermissionPromptRequestExtensionPermissionAccess {
3062 pub capabilities: Vec<String>,
3064 pub extension_name: String,
3066 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
3068 #[serde(skip_serializing_if = "Option::is_none")]
3070 pub tool_call_id: Option<String>,
3071}
3072
3073#[derive(Debug, Clone, Serialize, Deserialize)]
3075#[serde(rename_all = "camelCase")]
3076pub struct PermissionRequestedData {
3077 pub permission_request: PermissionRequest,
3079 #[serde(skip_serializing_if = "Option::is_none")]
3081 pub prompt_request: Option<PermissionPromptRequest>,
3082 pub request_id: RequestId,
3084 #[serde(skip_serializing_if = "Option::is_none")]
3086 pub resolved_by_hook: Option<bool>,
3087}
3088
3089#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3091#[serde(rename_all = "camelCase")]
3092pub struct PermissionApproved {
3093 pub kind: PermissionApprovedKind,
3095}
3096
3097#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3099#[serde(rename_all = "camelCase")]
3100pub struct UserToolSessionApprovalCommands {
3101 pub command_identifiers: Vec<String>,
3103 pub kind: UserToolSessionApprovalCommandsKind,
3105}
3106
3107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3109#[serde(rename_all = "camelCase")]
3110pub struct UserToolSessionApprovalRead {
3111 pub kind: UserToolSessionApprovalReadKind,
3113}
3114
3115#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3117#[serde(rename_all = "camelCase")]
3118pub struct UserToolSessionApprovalWrite {
3119 pub kind: UserToolSessionApprovalWriteKind,
3121}
3122
3123#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3125#[serde(rename_all = "camelCase")]
3126pub struct UserToolSessionApprovalMcp {
3127 pub kind: UserToolSessionApprovalMcpKind,
3129 pub server_name: String,
3131 pub tool_name: Option<String>,
3133}
3134
3135#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3137#[serde(rename_all = "camelCase")]
3138pub struct UserToolSessionApprovalMemory {
3139 pub kind: UserToolSessionApprovalMemoryKind,
3141}
3142
3143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3145#[serde(rename_all = "camelCase")]
3146pub struct UserToolSessionApprovalCustomTool {
3147 pub kind: UserToolSessionApprovalCustomToolKind,
3149 pub tool_name: String,
3151}
3152
3153#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3155#[serde(rename_all = "camelCase")]
3156pub struct UserToolSessionApprovalExtensionManagement {
3157 pub kind: UserToolSessionApprovalExtensionManagementKind,
3159 #[serde(skip_serializing_if = "Option::is_none")]
3161 pub operation: Option<String>,
3162}
3163
3164#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3166#[serde(rename_all = "camelCase")]
3167pub struct UserToolSessionApprovalExtensionPermissionAccess {
3168 pub extension_name: String,
3170 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
3172}
3173
3174#[derive(Debug, Clone, Serialize, Deserialize)]
3176#[serde(rename_all = "camelCase")]
3177pub struct PermissionApprovedForSession {
3178 pub approval: UserToolSessionApproval,
3180 pub kind: PermissionApprovedForSessionKind,
3182}
3183
3184#[derive(Debug, Clone, Serialize, Deserialize)]
3186#[serde(rename_all = "camelCase")]
3187pub struct PermissionApprovedForLocation {
3188 pub approval: UserToolSessionApproval,
3190 pub kind: PermissionApprovedForLocationKind,
3192 pub location_key: String,
3194}
3195
3196#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3198#[serde(rename_all = "camelCase")]
3199pub struct PermissionCancelled {
3200 pub kind: PermissionCancelledKind,
3202 #[serde(skip_serializing_if = "Option::is_none")]
3204 pub reason: Option<String>,
3205}
3206
3207#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3209#[serde(rename_all = "camelCase")]
3210pub struct PermissionRule {
3211 pub argument: Option<String>,
3213 pub kind: String,
3215}
3216
3217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3219#[serde(rename_all = "camelCase")]
3220pub struct PermissionDeniedByRules {
3221 pub kind: PermissionDeniedByRulesKind,
3223 pub rules: Vec<PermissionRule>,
3225}
3226
3227#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3229#[serde(rename_all = "camelCase")]
3230pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
3231 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
3233}
3234
3235#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3237#[serde(rename_all = "camelCase")]
3238pub struct PermissionDeniedInteractivelyByUser {
3239 #[serde(skip_serializing_if = "Option::is_none")]
3241 pub feedback: Option<String>,
3242 #[serde(skip_serializing_if = "Option::is_none")]
3244 pub force_reject: Option<bool>,
3245 pub kind: PermissionDeniedInteractivelyByUserKind,
3247}
3248
3249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3251#[serde(rename_all = "camelCase")]
3252pub struct PermissionDeniedByContentExclusionPolicy {
3253 pub kind: PermissionDeniedByContentExclusionPolicyKind,
3255 pub message: String,
3257 pub path: String,
3259}
3260
3261#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3263#[serde(rename_all = "camelCase")]
3264pub struct PermissionDeniedByPermissionRequestHook {
3265 #[serde(skip_serializing_if = "Option::is_none")]
3267 pub interrupt: Option<bool>,
3268 pub kind: PermissionDeniedByPermissionRequestHookKind,
3270 #[serde(skip_serializing_if = "Option::is_none")]
3272 pub message: Option<String>,
3273}
3274
3275#[derive(Debug, Clone, Serialize, Deserialize)]
3277#[serde(rename_all = "camelCase")]
3278pub struct PermissionCompletedData {
3279 pub request_id: RequestId,
3281 pub result: PermissionResult,
3283 #[serde(skip_serializing_if = "Option::is_none")]
3285 pub tool_call_id: Option<String>,
3286}
3287
3288#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3290#[serde(rename_all = "camelCase")]
3291pub struct UserInputRequestedData {
3292 #[serde(skip_serializing_if = "Option::is_none")]
3294 pub allow_freeform: Option<bool>,
3295 #[serde(skip_serializing_if = "Option::is_none")]
3297 pub choices: Option<Vec<String>>,
3298 pub question: String,
3300 pub request_id: RequestId,
3302 #[serde(skip_serializing_if = "Option::is_none")]
3304 pub tool_call_id: Option<String>,
3305}
3306
3307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3309#[serde(rename_all = "camelCase")]
3310pub struct UserInputCompletedData {
3311 #[serde(skip_serializing_if = "Option::is_none")]
3313 pub answer: Option<String>,
3314 pub request_id: RequestId,
3316 #[serde(skip_serializing_if = "Option::is_none")]
3318 pub was_freeform: Option<bool>,
3319}
3320
3321#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3323#[serde(rename_all = "camelCase")]
3324pub struct ElicitationRequestedSchema {
3325 pub properties: HashMap<String, serde_json::Value>,
3327 #[serde(skip_serializing_if = "Option::is_none")]
3329 pub required: Option<Vec<String>>,
3330 pub r#type: ElicitationRequestedSchemaType,
3332}
3333
3334#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3336#[serde(rename_all = "camelCase")]
3337pub struct ElicitationRequestedData {
3338 #[serde(skip_serializing_if = "Option::is_none")]
3340 pub elicitation_source: Option<String>,
3341 pub message: String,
3343 #[serde(skip_serializing_if = "Option::is_none")]
3345 pub mode: Option<ElicitationRequestedMode>,
3346 #[serde(skip_serializing_if = "Option::is_none")]
3348 pub requested_schema: Option<ElicitationRequestedSchema>,
3349 pub request_id: RequestId,
3351 #[serde(skip_serializing_if = "Option::is_none")]
3353 pub tool_call_id: Option<String>,
3354 #[serde(skip_serializing_if = "Option::is_none")]
3356 pub url: Option<String>,
3357}
3358
3359#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3361#[serde(rename_all = "camelCase")]
3362pub struct ElicitationCompletedData {
3363 #[serde(skip_serializing_if = "Option::is_none")]
3365 pub action: Option<ElicitationCompletedAction>,
3366 #[serde(skip_serializing_if = "Option::is_none")]
3368 pub content: Option<HashMap<String, serde_json::Value>>,
3369 pub request_id: RequestId,
3371}
3372
3373#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3375#[serde(rename_all = "camelCase")]
3376pub struct SamplingRequestedData {
3377 pub mcp_request_id: serde_json::Value,
3379 pub request_id: RequestId,
3381 pub server_name: String,
3383}
3384
3385#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3387#[serde(rename_all = "camelCase")]
3388pub struct SamplingCompletedData {
3389 pub request_id: RequestId,
3391}
3392
3393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3395#[serde(rename_all = "camelCase")]
3396pub struct McpOauthRequiredStaticClientConfig {
3397 pub client_id: String,
3399 #[serde(skip_serializing_if = "Option::is_none")]
3401 pub client_secret: Option<String>,
3402 #[serde(skip_serializing_if = "Option::is_none")]
3404 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3405 #[serde(skip_serializing_if = "Option::is_none")]
3407 pub public_client: Option<bool>,
3408}
3409
3410#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3412#[serde(rename_all = "camelCase")]
3413pub struct McpOauthWWWAuthenticateParams {
3414 #[serde(skip_serializing_if = "Option::is_none")]
3416 pub error: Option<String>,
3417 #[serde(skip_serializing_if = "Option::is_none")]
3419 pub resource_metadata_url: Option<String>,
3420 #[serde(skip_serializing_if = "Option::is_none")]
3422 pub scope: Option<String>,
3423}
3424
3425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3427#[serde(rename_all = "camelCase")]
3428pub struct McpOauthRequiredData {
3429 pub reason: McpOauthRequestReason,
3431 pub request_id: RequestId,
3433 #[serde(skip_serializing_if = "Option::is_none")]
3435 pub resource_metadata: Option<String>,
3436 pub server_name: String,
3438 pub server_url: String,
3440 #[serde(skip_serializing_if = "Option::is_none")]
3442 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3443 #[serde(skip_serializing_if = "Option::is_none")]
3445 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3446}
3447
3448#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3450#[serde(rename_all = "camelCase")]
3451pub struct McpOauthCompletedData {
3452 pub outcome: McpOauthCompletionOutcome,
3454 pub request_id: RequestId,
3456}
3457
3458#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3460#[serde(rename_all = "camelCase")]
3461pub struct McpHeadersRefreshRequiredData {
3462 pub reason: McpHeadersRefreshRequiredReason,
3464 pub request_id: RequestId,
3466 pub server_name: String,
3468 pub server_url: String,
3470}
3471
3472#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3474#[serde(rename_all = "camelCase")]
3475pub struct McpHeadersRefreshCompletedData {
3476 pub outcome: McpHeadersRefreshCompletedOutcome,
3478 pub request_id: RequestId,
3480}
3481
3482#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3484#[serde(rename_all = "camelCase")]
3485pub struct SessionCustomNotificationData {
3486 pub name: String,
3488 pub payload: serde_json::Value,
3490 pub source: String,
3492 #[serde(skip_serializing_if = "Option::is_none")]
3494 pub subject: Option<HashMap<String, String>>,
3495 #[serde(skip_serializing_if = "Option::is_none")]
3497 pub version: Option<i64>,
3498}
3499
3500#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3502#[serde(rename_all = "camelCase")]
3503pub struct ExternalToolRequestedData {
3504 #[serde(skip_serializing_if = "Option::is_none")]
3506 pub arguments: Option<serde_json::Value>,
3507 pub request_id: RequestId,
3509 pub session_id: SessionId,
3511 pub tool_call_id: String,
3513 pub tool_name: String,
3515 #[serde(skip_serializing_if = "Option::is_none")]
3517 pub traceparent: Option<String>,
3518 #[serde(skip_serializing_if = "Option::is_none")]
3520 pub tracestate: Option<String>,
3521 #[serde(skip_serializing_if = "Option::is_none")]
3523 pub working_directory: Option<String>,
3524}
3525
3526#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3528#[serde(rename_all = "camelCase")]
3529pub struct ExternalToolCompletedData {
3530 pub request_id: RequestId,
3532}
3533
3534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3536#[serde(rename_all = "camelCase")]
3537pub struct CommandQueuedData {
3538 pub command: String,
3540 pub request_id: RequestId,
3542}
3543
3544#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3546#[serde(rename_all = "camelCase")]
3547pub struct CommandExecuteData {
3548 pub args: String,
3550 pub command: String,
3552 pub command_name: String,
3554 pub request_id: RequestId,
3556}
3557
3558#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3560#[serde(rename_all = "camelCase")]
3561pub struct CommandCompletedData {
3562 pub request_id: RequestId,
3564}
3565
3566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3568#[serde(rename_all = "camelCase")]
3569pub struct AutoModeSwitchRequestedData {
3570 #[serde(skip_serializing_if = "Option::is_none")]
3572 pub error_code: Option<String>,
3573 pub request_id: RequestId,
3575 #[serde(skip_serializing_if = "Option::is_none")]
3577 pub retry_after_seconds: Option<i64>,
3578}
3579
3580#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3582#[serde(rename_all = "camelCase")]
3583pub struct AutoModeSwitchCompletedData {
3584 pub request_id: RequestId,
3586 pub response: AutoModeSwitchResponse,
3588}
3589
3590#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3592#[serde(rename_all = "camelCase")]
3593pub struct SessionLimitsExhaustedRequestedData {
3594 pub max_ai_credits: f64,
3596 pub request_id: RequestId,
3598 pub used_ai_credits: f64,
3600}
3601
3602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3604#[serde(rename_all = "camelCase")]
3605pub struct SessionLimitsExhaustedResponse {
3606 pub action: SessionLimitsExhaustedResponseAction,
3608 #[serde(skip_serializing_if = "Option::is_none")]
3610 pub additional_ai_credits: Option<f64>,
3611 #[serde(skip_serializing_if = "Option::is_none")]
3613 pub max_ai_credits: Option<f64>,
3614}
3615
3616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3618#[serde(rename_all = "camelCase")]
3619pub struct SessionLimitsExhaustedCompletedData {
3620 pub request_id: RequestId,
3622 pub response: SessionLimitsExhaustedResponse,
3624}
3625
3626#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3628#[serde(rename_all = "camelCase")]
3629pub struct CommandsChangedCommand {
3630 #[serde(skip_serializing_if = "Option::is_none")]
3632 pub description: Option<String>,
3633 pub name: String,
3635}
3636
3637#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3639#[serde(rename_all = "camelCase")]
3640pub struct CommandsChangedData {
3641 pub commands: Vec<CommandsChangedCommand>,
3643}
3644
3645#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3647#[serde(rename_all = "camelCase")]
3648pub struct CapabilitiesChangedUI {
3649 #[serde(skip_serializing_if = "Option::is_none")]
3651 pub canvases: Option<bool>,
3652 #[serde(skip_serializing_if = "Option::is_none")]
3654 pub elicitation: Option<bool>,
3655 #[serde(skip_serializing_if = "Option::is_none")]
3657 pub mcp_apps: Option<bool>,
3658}
3659
3660#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3662#[serde(rename_all = "camelCase")]
3663pub struct CapabilitiesChangedData {
3664 #[serde(skip_serializing_if = "Option::is_none")]
3666 pub ui: Option<CapabilitiesChangedUI>,
3667}
3668
3669#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3671#[serde(rename_all = "camelCase")]
3672pub struct ExitPlanModeRequestedData {
3673 pub actions: Vec<ExitPlanModeAction>,
3675 pub plan_content: String,
3677 pub recommended_action: ExitPlanModeAction,
3679 pub request_id: RequestId,
3681 pub summary: String,
3683}
3684
3685#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3687#[serde(rename_all = "camelCase")]
3688pub struct ExitPlanModeCompletedData {
3689 #[serde(skip_serializing_if = "Option::is_none")]
3691 pub approved: Option<bool>,
3692 #[serde(skip_serializing_if = "Option::is_none")]
3694 pub auto_approve_edits: Option<bool>,
3695 #[serde(skip_serializing_if = "Option::is_none")]
3697 pub feedback: Option<String>,
3698 pub request_id: RequestId,
3700 #[serde(skip_serializing_if = "Option::is_none")]
3702 pub selected_action: Option<ExitPlanModeAction>,
3703}
3704
3705#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3707#[serde(rename_all = "camelCase")]
3708pub struct SessionToolsUpdatedData {
3709 pub model: String,
3711}
3712
3713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3715#[serde(rename_all = "camelCase")]
3716pub struct SessionBackgroundTasksChangedData {}
3717
3718#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3720#[serde(rename_all = "camelCase")]
3721pub struct SkillsLoadedSkill {
3722 #[serde(skip_serializing_if = "Option::is_none")]
3724 pub argument_hint: Option<String>,
3725 pub description: String,
3727 pub enabled: bool,
3729 pub name: String,
3731 #[serde(skip_serializing_if = "Option::is_none")]
3733 pub path: Option<String>,
3734 pub source: SkillSource,
3736 pub user_invocable: bool,
3738}
3739
3740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3742#[serde(rename_all = "camelCase")]
3743pub struct SessionSkillsLoadedData {
3744 pub skills: Vec<SkillsLoadedSkill>,
3746}
3747
3748#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3750#[serde(rename_all = "camelCase")]
3751pub struct CustomAgentsUpdatedAgent {
3752 pub description: String,
3754 pub display_name: String,
3756 pub id: String,
3758 #[serde(skip_serializing_if = "Option::is_none")]
3760 pub model: Option<String>,
3761 pub name: String,
3763 pub source: String,
3765 pub tools: Option<Vec<String>>,
3767 pub user_invocable: bool,
3769}
3770
3771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3773#[serde(rename_all = "camelCase")]
3774pub struct SessionCustomAgentsUpdatedData {
3775 pub agents: Vec<CustomAgentsUpdatedAgent>,
3777 pub errors: Vec<String>,
3779 pub warnings: Vec<String>,
3781}
3782
3783#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3785#[serde(rename_all = "camelCase")]
3786pub struct McpServersLoadedServer {
3787 #[serde(skip_serializing_if = "Option::is_none")]
3789 pub error: Option<String>,
3790 pub name: String,
3792 #[serde(skip_serializing_if = "Option::is_none")]
3794 pub plugin_name: Option<String>,
3795 #[serde(skip_serializing_if = "Option::is_none")]
3797 pub plugin_version: Option<String>,
3798 #[serde(skip_serializing_if = "Option::is_none")]
3800 pub source: Option<McpServerSource>,
3801 pub status: McpServerStatus,
3803 #[serde(skip_serializing_if = "Option::is_none")]
3805 pub transport: Option<McpServerTransport>,
3806}
3807
3808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3810#[serde(rename_all = "camelCase")]
3811pub struct SessionMcpServersLoadedData {
3812 pub servers: Vec<McpServersLoadedServer>,
3814}
3815
3816#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3818#[serde(rename_all = "camelCase")]
3819pub struct SessionMcpServerStatusChangedData {
3820 #[serde(skip_serializing_if = "Option::is_none")]
3822 pub error: Option<String>,
3823 pub server_name: String,
3825 pub status: McpServerStatus,
3827}
3828
3829#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3831#[serde(rename_all = "camelCase")]
3832pub struct ExtensionsLoadedExtension {
3833 pub id: String,
3835 pub name: String,
3837 pub source: ExtensionsLoadedExtensionSource,
3839 pub status: ExtensionsLoadedExtensionStatus,
3841}
3842
3843#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3845#[serde(rename_all = "camelCase")]
3846pub struct SessionExtensionsLoadedData {
3847 pub extensions: Vec<ExtensionsLoadedExtension>,
3849}
3850
3851#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3860#[serde(rename_all = "camelCase")]
3861pub struct SessionCanvasOpenedData {
3862 pub canvas_id: String,
3864 pub extension_id: String,
3866 #[serde(skip_serializing_if = "Option::is_none")]
3868 pub extension_name: Option<String>,
3869 #[serde(skip_serializing_if = "Option::is_none")]
3871 pub input: Option<serde_json::Value>,
3872 pub instance_id: String,
3874 #[serde(skip_serializing_if = "Option::is_none")]
3876 pub status: Option<String>,
3877 #[serde(skip_serializing_if = "Option::is_none")]
3879 pub title: Option<String>,
3880 #[serde(skip_serializing_if = "Option::is_none")]
3882 pub url: Option<String>,
3883}
3884
3885#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3894#[serde(rename_all = "camelCase")]
3895pub struct CanvasRegistryChangedCanvasAction {
3896 #[serde(skip_serializing_if = "Option::is_none")]
3898 pub description: Option<String>,
3899 #[serde(skip_serializing_if = "Option::is_none")]
3901 pub input_schema: Option<serde_json::Value>,
3902 pub name: String,
3904}
3905
3906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3915#[serde(rename_all = "camelCase")]
3916pub struct CanvasRegistryChangedCanvas {
3917 #[serde(skip_serializing_if = "Option::is_none")]
3919 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
3920 pub canvas_id: String,
3922 pub description: String,
3924 pub display_name: String,
3926 pub extension_id: String,
3928 #[serde(skip_serializing_if = "Option::is_none")]
3930 pub extension_name: Option<String>,
3931 #[serde(skip_serializing_if = "Option::is_none")]
3933 pub input_schema: Option<serde_json::Value>,
3934}
3935
3936#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3945#[serde(rename_all = "camelCase")]
3946pub struct SessionCanvasRegistryChangedData {
3947 pub canvases: Vec<CanvasRegistryChangedCanvas>,
3949}
3950
3951#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3960#[serde(rename_all = "camelCase")]
3961pub struct SessionCanvasClosedData {
3962 pub canvas_id: String,
3964 pub extension_id: String,
3966 pub instance_id: String,
3968}
3969
3970#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3979#[serde(rename_all = "camelCase")]
3980pub struct SessionCanvasUnavailableData {
3981 pub canvas_id: String,
3983 pub extension_id: String,
3985 pub instance_id: String,
3987}
3988
3989#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3998#[serde(rename_all = "camelCase")]
3999pub struct SessionCanvasRecordedData {
4000 pub canvas_id: String,
4002 pub extension_id: String,
4004 #[serde(skip_serializing_if = "Option::is_none")]
4006 pub input: Option<serde_json::Value>,
4007 pub instance_id: String,
4009 #[serde(skip_serializing_if = "Option::is_none")]
4011 pub title: Option<String>,
4012}
4013
4014#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4023#[serde(rename_all = "camelCase")]
4024pub struct SessionCanvasRemovedData {
4025 pub canvas_id: String,
4027 pub extension_id: String,
4029 pub instance_id: String,
4031}
4032
4033#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4035#[serde(rename_all = "camelCase")]
4036pub struct SessionExtensionsAttachmentsPushedData {
4037 pub attachments: Vec<serde_json::Value>,
4039}
4040
4041#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4043#[serde(rename_all = "camelCase")]
4044pub struct McpAppToolCallCompleteError {
4045 pub message: String,
4047}
4048
4049#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4051#[serde(rename_all = "camelCase")]
4052pub struct McpAppToolCallCompleteToolMetaUI {
4053 #[serde(skip_serializing_if = "Option::is_none")]
4055 pub resource_uri: Option<String>,
4056 #[serde(skip_serializing_if = "Option::is_none")]
4058 pub visibility: Option<Vec<String>>,
4059}
4060
4061#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4063#[serde(rename_all = "camelCase")]
4064pub struct McpAppToolCallCompleteToolMeta {
4065 #[serde(skip_serializing_if = "Option::is_none")]
4067 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
4068}
4069
4070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4072#[serde(rename_all = "camelCase")]
4073pub struct McpAppToolCallCompleteData {
4074 #[serde(skip_serializing_if = "Option::is_none")]
4076 pub arguments: Option<HashMap<String, serde_json::Value>>,
4077 pub duration_ms: f64,
4079 #[serde(skip_serializing_if = "Option::is_none")]
4081 pub error: Option<McpAppToolCallCompleteError>,
4082 #[serde(skip_serializing_if = "Option::is_none")]
4084 pub result: Option<HashMap<String, serde_json::Value>>,
4085 pub server_name: String,
4087 pub success: bool,
4089 #[serde(skip_serializing_if = "Option::is_none")]
4091 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
4092 pub tool_name: String,
4094}
4095
4096#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4098pub enum WorkingDirectoryContextHostType {
4099 #[serde(rename = "github")]
4101 GitHub,
4102 #[serde(rename = "ado")]
4104 Ado,
4105 #[default]
4107 #[serde(other)]
4108 Unknown,
4109}
4110
4111#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4113pub enum ContextTier {
4114 #[serde(rename = "default")]
4116 Default,
4117 #[serde(rename = "long_context")]
4119 LongContext,
4120 #[default]
4122 #[serde(other)]
4123 Unknown,
4124}
4125
4126#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4128pub enum ReasoningSummary {
4129 #[serde(rename = "none")]
4131 None,
4132 #[serde(rename = "concise")]
4134 Concise,
4135 #[serde(rename = "detailed")]
4137 Detailed,
4138 #[default]
4140 #[serde(other)]
4141 Unknown,
4142}
4143
4144#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4146pub enum AutopilotObjectiveChangedOperation {
4147 #[serde(rename = "create")]
4149 Create,
4150 #[serde(rename = "update")]
4152 Update,
4153 #[serde(rename = "delete")]
4155 Delete,
4156 #[default]
4158 #[serde(other)]
4159 Unknown,
4160}
4161
4162#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4164pub enum AutopilotObjectiveChangedStatus {
4165 #[serde(rename = "active")]
4167 Active,
4168 #[serde(rename = "paused")]
4170 Paused,
4171 #[serde(rename = "cap_reached")]
4173 CapReached,
4174 #[serde(rename = "completed")]
4176 Completed,
4177 #[default]
4179 #[serde(other)]
4180 Unknown,
4181}
4182
4183#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4185pub enum SessionMode {
4186 #[serde(rename = "interactive")]
4188 Interactive,
4189 #[serde(rename = "plan")]
4191 Plan,
4192 #[serde(rename = "autopilot")]
4194 Autopilot,
4195 #[default]
4197 #[serde(other)]
4198 Unknown,
4199}
4200
4201#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4203pub enum PlanChangedOperation {
4204 #[serde(rename = "create")]
4206 Create,
4207 #[serde(rename = "update")]
4209 Update,
4210 #[serde(rename = "delete")]
4212 Delete,
4213 #[default]
4215 #[serde(other)]
4216 Unknown,
4217}
4218
4219#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4221pub enum WorkspaceFileChangedOperation {
4222 #[serde(rename = "create")]
4224 Create,
4225 #[serde(rename = "update")]
4227 Update,
4228 #[default]
4230 #[serde(other)]
4231 Unknown,
4232}
4233
4234#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4236pub enum HandoffSourceType {
4237 #[serde(rename = "remote")]
4239 Remote,
4240 #[serde(rename = "local")]
4242 Local,
4243 #[default]
4245 #[serde(other)]
4246 Unknown,
4247}
4248
4249#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4251pub enum ShutdownType {
4252 #[serde(rename = "routine")]
4254 Routine,
4255 #[serde(rename = "error")]
4257 Error,
4258 #[default]
4260 #[serde(other)]
4261 Unknown,
4262}
4263
4264#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4266pub enum UserMessageAgentMode {
4267 #[serde(rename = "interactive")]
4269 Interactive,
4270 #[serde(rename = "plan")]
4272 Plan,
4273 #[serde(rename = "autopilot")]
4275 Autopilot,
4276 #[serde(rename = "shell")]
4278 Shell,
4279 #[default]
4281 #[serde(other)]
4282 Unknown,
4283}
4284
4285#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4287pub enum UserMessageDelivery {
4288 #[serde(rename = "idle")]
4290 Idle,
4291 #[serde(rename = "steering")]
4293 Steering,
4294 #[serde(rename = "queued")]
4296 Queued,
4297 #[default]
4299 #[serde(other)]
4300 Unknown,
4301}
4302
4303#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4312pub enum CitationProvider {
4313 #[serde(rename = "anthropic")]
4315 Anthropic,
4316 #[serde(rename = "openai")]
4318 Openai,
4319 #[serde(rename = "client")]
4321 Client,
4322 #[default]
4324 #[serde(other)]
4325 Unknown,
4326}
4327
4328#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4330pub enum AssistantMessageToolRequestType {
4331 #[serde(rename = "function")]
4333 Function,
4334 #[serde(rename = "custom")]
4336 Custom,
4337 #[default]
4339 #[serde(other)]
4340 Unknown,
4341}
4342
4343#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4345pub enum AssistantUsageApiEndpoint {
4346 #[serde(rename = "/chat/completions")]
4348 ChatCompletions,
4349 #[serde(rename = "/v1/messages")]
4351 V1Messages,
4352 #[serde(rename = "/responses")]
4354 Responses,
4355 #[serde(rename = "ws:/responses")]
4357 WsResponses,
4358 #[default]
4360 #[serde(other)]
4361 Unknown,
4362}
4363
4364#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4366pub enum ModelCallFailureBadRequestKind {
4367 #[serde(rename = "bodyless")]
4369 Bodyless,
4370 #[serde(rename = "structured_error")]
4372 StructuredError,
4373 #[default]
4375 #[serde(other)]
4376 Unknown,
4377}
4378
4379#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4381pub enum ModelCallFailureSource {
4382 #[serde(rename = "top_level")]
4384 TopLevel,
4385 #[serde(rename = "subagent")]
4387 Subagent,
4388 #[serde(rename = "mcp_sampling")]
4390 McpSampling,
4391 #[default]
4393 #[serde(other)]
4394 Unknown,
4395}
4396
4397#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4399pub enum AbortReason {
4400 #[serde(rename = "user_initiated")]
4402 UserInitiated,
4403 #[serde(rename = "remote_command")]
4405 RemoteCommand,
4406 #[serde(rename = "user_abort")]
4408 UserAbort,
4409 #[default]
4411 #[serde(other)]
4412 Unknown,
4413}
4414
4415#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4417pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
4418 #[serde(rename = "model")]
4420 Model,
4421 #[serde(rename = "app")]
4423 App,
4424 #[default]
4426 #[serde(other)]
4427 Unknown,
4428}
4429
4430#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4432pub enum ToolExecutionCompleteContentTextType {
4433 #[serde(rename = "text")]
4434 #[default]
4435 Text,
4436}
4437
4438#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4440pub enum ToolExecutionCompleteContentTerminalType {
4441 #[serde(rename = "terminal")]
4442 #[default]
4443 Terminal,
4444}
4445
4446#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4448pub enum ToolExecutionCompleteContentShellExitType {
4449 #[serde(rename = "shell_exit")]
4450 #[default]
4451 ShellExit,
4452}
4453
4454#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4456pub enum ToolExecutionCompleteContentImageType {
4457 #[serde(rename = "image")]
4458 #[default]
4459 Image,
4460}
4461
4462#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4464pub enum ToolExecutionCompleteContentAudioType {
4465 #[serde(rename = "audio")]
4466 #[default]
4467 Audio,
4468}
4469
4470#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4472pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4473 #[serde(rename = "light")]
4475 Light,
4476 #[serde(rename = "dark")]
4478 Dark,
4479 #[default]
4481 #[serde(other)]
4482 Unknown,
4483}
4484
4485#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4487pub enum ToolExecutionCompleteContentResourceLinkType {
4488 #[serde(rename = "resource_link")]
4489 #[default]
4490 ResourceLink,
4491}
4492
4493#[derive(Debug, Clone, Serialize, Deserialize)]
4495#[serde(untagged)]
4496pub enum ToolExecutionCompleteContentResourceDetails {
4497 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4498 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4499}
4500
4501#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4503pub enum ToolExecutionCompleteContentResourceType {
4504 #[serde(rename = "resource")]
4505 #[default]
4506 Resource,
4507}
4508
4509#[derive(Debug, Clone, Serialize, Deserialize)]
4511#[serde(untagged)]
4512pub enum ToolExecutionCompleteContent {
4513 Text(ToolExecutionCompleteContentText),
4514 Terminal(ToolExecutionCompleteContentTerminal),
4515 ShellExit(ToolExecutionCompleteContentShellExit),
4516 Image(ToolExecutionCompleteContentImage),
4517 Audio(ToolExecutionCompleteContentAudio),
4518 ResourceLink(ToolExecutionCompleteContentResourceLink),
4519 Resource(ToolExecutionCompleteContentResource),
4520}
4521
4522#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4524pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4525 #[serde(rename = "model")]
4527 Model,
4528 #[serde(rename = "app")]
4530 App,
4531 #[default]
4533 #[serde(other)]
4534 Unknown,
4535}
4536
4537#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4539pub enum SkillInvokedTrigger {
4540 #[serde(rename = "user-invoked")]
4542 UserInvoked,
4543 #[serde(rename = "agent-invoked")]
4545 AgentInvoked,
4546 #[serde(rename = "context-load")]
4548 ContextLoad,
4549 #[default]
4551 #[serde(other)]
4552 Unknown,
4553}
4554
4555#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4557pub enum BinaryAssetType {
4558 #[serde(rename = "image")]
4560 Image,
4561 #[serde(rename = "resource")]
4563 Resource,
4564 #[default]
4566 #[serde(other)]
4567 Unknown,
4568}
4569
4570#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4572pub enum SystemMessageRole {
4573 #[serde(rename = "system")]
4575 System,
4576 #[serde(rename = "developer")]
4578 Developer,
4579 #[default]
4581 #[serde(other)]
4582 Unknown,
4583}
4584
4585#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4587pub enum PermissionRequestShellKind {
4588 #[serde(rename = "shell")]
4589 #[default]
4590 Shell,
4591}
4592
4593#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4595pub enum PermissionRequestWriteKind {
4596 #[serde(rename = "write")]
4597 #[default]
4598 Write,
4599}
4600
4601#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4603pub enum PermissionRequestReadKind {
4604 #[serde(rename = "read")]
4605 #[default]
4606 Read,
4607}
4608
4609#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4611pub enum PermissionRequestMcpKind {
4612 #[serde(rename = "mcp")]
4613 #[default]
4614 Mcp,
4615}
4616
4617#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4619pub enum PermissionRequestUrlKind {
4620 #[serde(rename = "url")]
4621 #[default]
4622 Url,
4623}
4624
4625#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4627pub enum PermissionRequestMemoryAction {
4628 #[serde(rename = "store")]
4630 Store,
4631 #[serde(rename = "vote")]
4633 Vote,
4634 #[default]
4636 #[serde(other)]
4637 Unknown,
4638}
4639
4640#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4642pub enum PermissionRequestMemoryDirection {
4643 #[serde(rename = "upvote")]
4645 Upvote,
4646 #[serde(rename = "downvote")]
4648 Downvote,
4649 #[default]
4651 #[serde(other)]
4652 Unknown,
4653}
4654
4655#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4657pub enum PermissionRequestMemoryKind {
4658 #[serde(rename = "memory")]
4659 #[default]
4660 Memory,
4661}
4662
4663#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4665pub enum PermissionRequestCustomToolKind {
4666 #[serde(rename = "custom-tool")]
4667 #[default]
4668 CustomTool,
4669}
4670
4671#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4673pub enum PermissionRequestHookKind {
4674 #[serde(rename = "hook")]
4675 #[default]
4676 Hook,
4677}
4678
4679#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4681pub enum PermissionRequestExtensionManagementKind {
4682 #[serde(rename = "extension-management")]
4683 #[default]
4684 ExtensionManagement,
4685}
4686
4687#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4689pub enum PermissionRequestExtensionPermissionAccessKind {
4690 #[serde(rename = "extension-permission-access")]
4691 #[default]
4692 ExtensionPermissionAccess,
4693}
4694
4695#[derive(Debug, Clone, Serialize, Deserialize)]
4697#[serde(untagged)]
4698pub enum PermissionRequest {
4699 Shell(PermissionRequestShell),
4700 Write(PermissionRequestWrite),
4701 Read(PermissionRequestRead),
4702 Mcp(PermissionRequestMcp),
4703 Url(PermissionRequestUrl),
4704 Memory(PermissionRequestMemory),
4705 CustomTool(PermissionRequestCustomTool),
4706 Hook(PermissionRequestHook),
4707 ExtensionManagement(PermissionRequestExtensionManagement),
4708 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
4709}
4710
4711#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4713pub enum PermissionPromptRequestCommandsKind {
4714 #[serde(rename = "commands")]
4715 #[default]
4716 Commands,
4717}
4718
4719#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4721pub enum PermissionPromptRequestWriteKind {
4722 #[serde(rename = "write")]
4723 #[default]
4724 Write,
4725}
4726
4727#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4729pub enum PermissionPromptRequestReadKind {
4730 #[serde(rename = "read")]
4731 #[default]
4732 Read,
4733}
4734
4735#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4737pub enum PermissionPromptRequestMcpKind {
4738 #[serde(rename = "mcp")]
4739 #[default]
4740 Mcp,
4741}
4742
4743#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4745pub enum PermissionPromptRequestUrlKind {
4746 #[serde(rename = "url")]
4747 #[default]
4748 Url,
4749}
4750
4751#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4753pub enum PermissionPromptRequestMemoryKind {
4754 #[serde(rename = "memory")]
4755 #[default]
4756 Memory,
4757}
4758
4759#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4761pub enum PermissionPromptRequestCustomToolKind {
4762 #[serde(rename = "custom-tool")]
4763 #[default]
4764 CustomTool,
4765}
4766
4767#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4769pub enum PermissionPromptRequestPathAccessKind {
4770 #[serde(rename = "read")]
4772 Read,
4773 #[serde(rename = "shell")]
4775 Shell,
4776 #[serde(rename = "write")]
4778 Write,
4779 #[default]
4781 #[serde(other)]
4782 Unknown,
4783}
4784
4785#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4787pub enum PermissionPromptRequestPathKind {
4788 #[serde(rename = "path")]
4789 #[default]
4790 Path,
4791}
4792
4793#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4795pub enum PermissionPromptRequestHookKind {
4796 #[serde(rename = "hook")]
4797 #[default]
4798 Hook,
4799}
4800
4801#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4803pub enum PermissionPromptRequestExtensionManagementKind {
4804 #[serde(rename = "extension-management")]
4805 #[default]
4806 ExtensionManagement,
4807}
4808
4809#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4811pub enum PermissionPromptRequestExtensionPermissionAccessKind {
4812 #[serde(rename = "extension-permission-access")]
4813 #[default]
4814 ExtensionPermissionAccess,
4815}
4816
4817#[derive(Debug, Clone, Serialize, Deserialize)]
4819#[serde(untagged)]
4820pub enum PermissionPromptRequest {
4821 Commands(PermissionPromptRequestCommands),
4822 Write(PermissionPromptRequestWrite),
4823 Read(PermissionPromptRequestRead),
4824 Mcp(PermissionPromptRequestMcp),
4825 Url(PermissionPromptRequestUrl),
4826 Memory(PermissionPromptRequestMemory),
4827 CustomTool(PermissionPromptRequestCustomTool),
4828 Path(PermissionPromptRequestPath),
4829 Hook(PermissionPromptRequestHook),
4830 ExtensionManagement(PermissionPromptRequestExtensionManagement),
4831 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
4832}
4833
4834#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4836pub enum PermissionApprovedKind {
4837 #[serde(rename = "approved")]
4838 #[default]
4839 Approved,
4840}
4841
4842#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4844pub enum UserToolSessionApprovalCommandsKind {
4845 #[serde(rename = "commands")]
4846 #[default]
4847 Commands,
4848}
4849
4850#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4852pub enum UserToolSessionApprovalReadKind {
4853 #[serde(rename = "read")]
4854 #[default]
4855 Read,
4856}
4857
4858#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4860pub enum UserToolSessionApprovalWriteKind {
4861 #[serde(rename = "write")]
4862 #[default]
4863 Write,
4864}
4865
4866#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4868pub enum UserToolSessionApprovalMcpKind {
4869 #[serde(rename = "mcp")]
4870 #[default]
4871 Mcp,
4872}
4873
4874#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4876pub enum UserToolSessionApprovalMemoryKind {
4877 #[serde(rename = "memory")]
4878 #[default]
4879 Memory,
4880}
4881
4882#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4884pub enum UserToolSessionApprovalCustomToolKind {
4885 #[serde(rename = "custom-tool")]
4886 #[default]
4887 CustomTool,
4888}
4889
4890#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4892pub enum UserToolSessionApprovalExtensionManagementKind {
4893 #[serde(rename = "extension-management")]
4894 #[default]
4895 ExtensionManagement,
4896}
4897
4898#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4900pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
4901 #[serde(rename = "extension-permission-access")]
4902 #[default]
4903 ExtensionPermissionAccess,
4904}
4905
4906#[derive(Debug, Clone, Serialize, Deserialize)]
4908#[serde(untagged)]
4909pub enum UserToolSessionApproval {
4910 Commands(UserToolSessionApprovalCommands),
4911 Read(UserToolSessionApprovalRead),
4912 Write(UserToolSessionApprovalWrite),
4913 Mcp(UserToolSessionApprovalMcp),
4914 Memory(UserToolSessionApprovalMemory),
4915 CustomTool(UserToolSessionApprovalCustomTool),
4916 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
4917 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
4918}
4919
4920#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4922pub enum PermissionApprovedForSessionKind {
4923 #[serde(rename = "approved-for-session")]
4924 #[default]
4925 ApprovedForSession,
4926}
4927
4928#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4930pub enum PermissionApprovedForLocationKind {
4931 #[serde(rename = "approved-for-location")]
4932 #[default]
4933 ApprovedForLocation,
4934}
4935
4936#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4938pub enum PermissionCancelledKind {
4939 #[serde(rename = "cancelled")]
4940 #[default]
4941 Cancelled,
4942}
4943
4944#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4946pub enum PermissionDeniedByRulesKind {
4947 #[serde(rename = "denied-by-rules")]
4948 #[default]
4949 DeniedByRules,
4950}
4951
4952#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4954pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
4955 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
4956 #[default]
4957 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
4958}
4959
4960#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4962pub enum PermissionDeniedInteractivelyByUserKind {
4963 #[serde(rename = "denied-interactively-by-user")]
4964 #[default]
4965 DeniedInteractivelyByUser,
4966}
4967
4968#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4970pub enum PermissionDeniedByContentExclusionPolicyKind {
4971 #[serde(rename = "denied-by-content-exclusion-policy")]
4972 #[default]
4973 DeniedByContentExclusionPolicy,
4974}
4975
4976#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4978pub enum PermissionDeniedByPermissionRequestHookKind {
4979 #[serde(rename = "denied-by-permission-request-hook")]
4980 #[default]
4981 DeniedByPermissionRequestHook,
4982}
4983
4984#[derive(Debug, Clone, Serialize, Deserialize)]
4986#[serde(untagged)]
4987pub enum PermissionResult {
4988 Approved(PermissionApproved),
4989 ApprovedForSession(PermissionApprovedForSession),
4990 ApprovedForLocation(PermissionApprovedForLocation),
4991 Cancelled(PermissionCancelled),
4992 DeniedByRules(PermissionDeniedByRules),
4993 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
4994 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
4995 ),
4996 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
4997 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
4998 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
4999}
5000
5001#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5003pub enum ElicitationRequestedMode {
5004 #[serde(rename = "form")]
5006 Form,
5007 #[serde(rename = "url")]
5009 Url,
5010 #[default]
5012 #[serde(other)]
5013 Unknown,
5014}
5015
5016#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5018pub enum ElicitationRequestedSchemaType {
5019 #[serde(rename = "object")]
5020 #[default]
5021 Object,
5022}
5023
5024#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5026pub enum ElicitationCompletedAction {
5027 #[serde(rename = "accept")]
5029 Accept,
5030 #[serde(rename = "decline")]
5032 Decline,
5033 #[serde(rename = "cancel")]
5035 Cancel,
5036 #[default]
5038 #[serde(other)]
5039 Unknown,
5040}
5041
5042#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5044pub enum McpOauthRequestReason {
5045 #[serde(rename = "initial")]
5047 Initial,
5048 #[serde(rename = "refresh")]
5050 Refresh,
5051 #[serde(rename = "reauth")]
5053 Reauth,
5054 #[serde(rename = "upscope")]
5056 Upscope,
5057 #[default]
5059 #[serde(other)]
5060 Unknown,
5061}
5062
5063#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5065pub enum McpOauthRequiredStaticClientConfigGrantType {
5066 #[serde(rename = "client_credentials")]
5067 #[default]
5068 ClientCredentials,
5069}
5070
5071#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5073pub enum McpOauthCompletionOutcome {
5074 #[serde(rename = "token")]
5076 Token,
5077 #[serde(rename = "cancelled")]
5079 Cancelled,
5080 #[default]
5082 #[serde(other)]
5083 Unknown,
5084}
5085
5086#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5088pub enum McpHeadersRefreshRequiredReason {
5089 #[serde(rename = "startup")]
5091 Startup,
5092 #[serde(rename = "ttl-expired")]
5094 TtlExpired,
5095 #[serde(rename = "auth-failed")]
5097 AuthFailed,
5098 #[default]
5100 #[serde(other)]
5101 Unknown,
5102}
5103
5104#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5106pub enum McpHeadersRefreshCompletedOutcome {
5107 #[serde(rename = "headers")]
5109 Headers,
5110 #[serde(rename = "none")]
5112 None,
5113 #[serde(rename = "timeout")]
5115 Timeout,
5116 #[default]
5118 #[serde(other)]
5119 Unknown,
5120}
5121
5122#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5124pub enum AutoModeSwitchResponse {
5125 #[serde(rename = "yes")]
5127 Yes,
5128 #[serde(rename = "yes_always")]
5130 YesAlways,
5131 #[serde(rename = "no")]
5133 No,
5134 #[default]
5136 #[serde(other)]
5137 Unknown,
5138}
5139
5140#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5142pub enum SessionLimitsExhaustedResponseAction {
5143 #[serde(rename = "add")]
5145 Add,
5146 #[serde(rename = "set")]
5148 Set,
5149 #[serde(rename = "unset")]
5151 Unset,
5152 #[serde(rename = "cancel")]
5154 Cancel,
5155 #[default]
5157 #[serde(other)]
5158 Unknown,
5159}
5160
5161#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5163pub enum ExitPlanModeAction {
5164 #[serde(rename = "exit_only")]
5166 ExitOnly,
5167 #[serde(rename = "interactive")]
5169 Interactive,
5170 #[serde(rename = "autopilot")]
5172 Autopilot,
5173 #[serde(rename = "autopilot_fleet")]
5175 AutopilotFleet,
5176 #[default]
5178 #[serde(other)]
5179 Unknown,
5180}
5181
5182#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5184pub enum SkillSource {
5185 #[serde(rename = "project")]
5187 Project,
5188 #[serde(rename = "inherited")]
5190 Inherited,
5191 #[serde(rename = "personal-copilot")]
5193 PersonalCopilot,
5194 #[serde(rename = "personal-agents")]
5196 PersonalAgents,
5197 #[serde(rename = "plugin")]
5199 Plugin,
5200 #[serde(rename = "custom")]
5202 Custom,
5203 #[serde(rename = "builtin")]
5205 Builtin,
5206 #[default]
5208 #[serde(other)]
5209 Unknown,
5210}
5211
5212#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5214pub enum McpServerSource {
5215 #[serde(rename = "user")]
5217 User,
5218 #[serde(rename = "workspace")]
5220 Workspace,
5221 #[serde(rename = "plugin")]
5223 Plugin,
5224 #[serde(rename = "builtin")]
5226 Builtin,
5227 #[default]
5229 #[serde(other)]
5230 Unknown,
5231}
5232
5233#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5235pub enum McpServerStatus {
5236 #[serde(rename = "connected")]
5238 Connected,
5239 #[serde(rename = "failed")]
5241 Failed,
5242 #[serde(rename = "needs-auth")]
5244 NeedsAuth,
5245 #[serde(rename = "pending")]
5247 Pending,
5248 #[serde(rename = "disabled")]
5250 Disabled,
5251 #[serde(rename = "not_configured")]
5253 NotConfigured,
5254 #[default]
5256 #[serde(other)]
5257 Unknown,
5258}
5259
5260#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5262pub enum McpServerTransport {
5263 #[serde(rename = "stdio")]
5265 Stdio,
5266 #[serde(rename = "http")]
5268 Http,
5269 #[serde(rename = "sse")]
5271 Sse,
5272 #[serde(rename = "memory")]
5274 Memory,
5275 #[default]
5277 #[serde(other)]
5278 Unknown,
5279}
5280
5281#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5283pub enum ExtensionsLoadedExtensionSource {
5284 #[serde(rename = "project")]
5286 Project,
5287 #[serde(rename = "user")]
5289 User,
5290 #[serde(rename = "plugin")]
5292 Plugin,
5293 #[serde(rename = "session")]
5295 Session,
5296 #[default]
5298 #[serde(other)]
5299 Unknown,
5300}
5301
5302#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5304pub enum ExtensionsLoadedExtensionStatus {
5305 #[serde(rename = "running")]
5307 Running,
5308 #[serde(rename = "disabled")]
5310 Disabled,
5311 #[serde(rename = "failed")]
5313 Failed,
5314 #[serde(rename = "starting")]
5316 Starting,
5317 #[default]
5319 #[serde(other)]
5320 Unknown,
5321}