1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7use crate::types::{RequestId, SessionId};
8
9#[derive(Debug, Clone, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
11pub enum SessionEventType {
12 #[serde(rename = "session.start")]
13 SessionStart,
14 #[serde(rename = "session.resume")]
15 SessionResume,
16 #[serde(rename = "session.remote_steerable_changed")]
17 SessionRemoteSteerableChanged,
18 #[serde(rename = "session.error")]
19 SessionError,
20 #[serde(rename = "session.idle")]
21 SessionIdle,
22 #[serde(rename = "session.title_changed")]
23 SessionTitleChanged,
24 #[serde(rename = "session.schedule_created")]
25 SessionScheduleCreated,
26 #[serde(rename = "session.schedule_cancelled")]
27 SessionScheduleCancelled,
28 #[serde(rename = "session.schedule_rearmed")]
29 SessionScheduleRearmed,
30 #[serde(rename = "session.autopilot_objective_changed")]
31 SessionAutopilotObjectiveChanged,
32 #[serde(rename = "session.info")]
33 SessionInfo,
34 #[serde(rename = "session.warning")]
35 SessionWarning,
36 #[serde(rename = "session.model_change")]
37 SessionModelChange,
38 #[serde(rename = "session.mode_changed")]
39 SessionModeChanged,
40 #[serde(rename = "session.permissions_changed")]
41 SessionPermissionsChanged,
42 #[serde(rename = "session.plan_changed")]
43 SessionPlanChanged,
44 #[serde(rename = "session.todos_changed")]
45 SessionTodosChanged,
46 #[serde(rename = "session.workspace_file_changed")]
47 SessionWorkspaceFileChanged,
48 #[serde(rename = "session.handoff")]
49 SessionHandoff,
50 #[serde(rename = "session.truncation")]
51 SessionTruncation,
52 #[serde(rename = "session.snapshot_rewind")]
53 SessionSnapshotRewind,
54 #[serde(rename = "session.shutdown")]
55 SessionShutdown,
56 #[serde(rename = "session.context_changed")]
57 SessionContextChanged,
58 #[serde(rename = "session.usage_info")]
59 SessionUsageInfo,
60 #[serde(rename = "session.compaction_start")]
61 SessionCompactionStart,
62 #[serde(rename = "session.compaction_complete")]
63 SessionCompactionComplete,
64 #[serde(rename = "session.task_complete")]
65 SessionTaskComplete,
66 #[serde(rename = "user.message")]
67 UserMessage,
68 #[serde(rename = "pending_messages.modified")]
69 PendingMessagesModified,
70 #[serde(rename = "assistant.turn_start")]
71 AssistantTurnStart,
72 #[serde(rename = "assistant.intent")]
73 AssistantIntent,
74 #[serde(rename = "assistant.reasoning")]
75 AssistantReasoning,
76 #[serde(rename = "assistant.reasoning_delta")]
77 AssistantReasoningDelta,
78 #[serde(rename = "assistant.streaming_delta")]
79 AssistantStreamingDelta,
80 #[serde(rename = "assistant.message")]
81 AssistantMessage,
82 #[serde(rename = "assistant.message_start")]
83 AssistantMessageStart,
84 #[serde(rename = "assistant.message_delta")]
85 AssistantMessageDelta,
86 #[serde(rename = "assistant.turn_end")]
87 AssistantTurnEnd,
88 #[serde(rename = "assistant.idle")]
89 AssistantIdle,
90 #[serde(rename = "assistant.usage")]
91 AssistantUsage,
92 #[serde(rename = "model.call_failure")]
93 ModelCallFailure,
94 #[serde(rename = "abort")]
95 Abort,
96 #[serde(rename = "tool.user_requested")]
97 ToolUserRequested,
98 #[serde(rename = "tool.execution_start")]
99 ToolExecutionStart,
100 #[serde(rename = "tool.execution_partial_result")]
101 ToolExecutionPartialResult,
102 #[serde(rename = "tool.execution_progress")]
103 ToolExecutionProgress,
104 #[serde(rename = "tool.execution_complete")]
105 ToolExecutionComplete,
106 #[serde(rename = "skill.invoked")]
107 SkillInvoked,
108 #[serde(rename = "subagent.started")]
109 SubagentStarted,
110 #[serde(rename = "subagent.completed")]
111 SubagentCompleted,
112 #[serde(rename = "subagent.failed")]
113 SubagentFailed,
114 #[serde(rename = "subagent.selected")]
115 SubagentSelected,
116 #[serde(rename = "subagent.deselected")]
117 SubagentDeselected,
118 #[serde(rename = "hook.start")]
119 HookStart,
120 #[serde(rename = "hook.end")]
121 HookEnd,
122 #[serde(rename = "hook.progress")]
123 HookProgress,
124 #[serde(rename = "session.binary_asset")]
132 SessionBinaryAsset,
133 #[serde(rename = "system.message")]
134 SystemMessage,
135 #[serde(rename = "system.notification")]
136 SystemNotification,
137 #[serde(rename = "permission.requested")]
138 PermissionRequested,
139 #[serde(rename = "permission.completed")]
140 PermissionCompleted,
141 #[serde(rename = "user_input.requested")]
142 UserInputRequested,
143 #[serde(rename = "user_input.completed")]
144 UserInputCompleted,
145 #[serde(rename = "elicitation.requested")]
146 ElicitationRequested,
147 #[serde(rename = "elicitation.completed")]
148 ElicitationCompleted,
149 #[serde(rename = "sampling.requested")]
150 SamplingRequested,
151 #[serde(rename = "sampling.completed")]
152 SamplingCompleted,
153 #[serde(rename = "mcp.oauth_required")]
154 McpOauthRequired,
155 #[serde(rename = "mcp.oauth_completed")]
156 McpOauthCompleted,
157 #[serde(rename = "mcp.headers_refresh_required")]
158 McpHeadersRefreshRequired,
159 #[serde(rename = "mcp.headers_refresh_completed")]
160 McpHeadersRefreshCompleted,
161 #[serde(rename = "session.custom_notification")]
162 SessionCustomNotification,
163 #[serde(rename = "external_tool.requested")]
164 ExternalToolRequested,
165 #[serde(rename = "external_tool.completed")]
166 ExternalToolCompleted,
167 #[serde(rename = "command.queued")]
168 CommandQueued,
169 #[serde(rename = "command.execute")]
170 CommandExecute,
171 #[serde(rename = "command.completed")]
172 CommandCompleted,
173 #[serde(rename = "auto_mode_switch.requested")]
174 AutoModeSwitchRequested,
175 #[serde(rename = "auto_mode_switch.completed")]
176 AutoModeSwitchCompleted,
177 #[serde(rename = "commands.changed")]
178 CommandsChanged,
179 #[serde(rename = "capabilities.changed")]
180 CapabilitiesChanged,
181 #[serde(rename = "exit_plan_mode.requested")]
182 ExitPlanModeRequested,
183 #[serde(rename = "exit_plan_mode.completed")]
184 ExitPlanModeCompleted,
185 #[serde(rename = "session.tools_updated")]
186 SessionToolsUpdated,
187 #[serde(rename = "session.background_tasks_changed")]
188 SessionBackgroundTasksChanged,
189 #[serde(rename = "session.skills_loaded")]
190 SessionSkillsLoaded,
191 #[serde(rename = "session.custom_agents_updated")]
192 SessionCustomAgentsUpdated,
193 #[serde(rename = "session.mcp_servers_loaded")]
194 SessionMcpServersLoaded,
195 #[serde(rename = "session.mcp_server_status_changed")]
196 SessionMcpServerStatusChanged,
197 #[serde(rename = "session.extensions_loaded")]
198 SessionExtensionsLoaded,
199 #[serde(rename = "session.canvas.opened")]
207 SessionCanvasOpened,
208 #[serde(rename = "session.canvas.registry_changed")]
216 SessionCanvasRegistryChanged,
217 #[serde(rename = "session.canvas.closed")]
225 SessionCanvasClosed,
226 #[serde(rename = "session.canvas.unavailable")]
234 SessionCanvasUnavailable,
235 #[serde(rename = "session.canvas.recorded")]
243 SessionCanvasRecorded,
244 #[serde(rename = "session.canvas.removed")]
252 SessionCanvasRemoved,
253 #[serde(rename = "session.extensions.attachments_pushed")]
254 SessionExtensionsAttachmentsPushed,
255 #[serde(rename = "mcp_app.tool_call_complete")]
256 McpAppToolCallComplete,
257 #[default]
259 #[serde(other)]
260 Unknown,
261}
262
263#[derive(Debug, Clone, Serialize, Deserialize)]
267#[serde(tag = "type", content = "data")]
268pub enum SessionEventData {
269 #[serde(rename = "session.start")]
270 SessionStart(SessionStartData),
271 #[serde(rename = "session.resume")]
272 SessionResume(SessionResumeData),
273 #[serde(rename = "session.remote_steerable_changed")]
274 SessionRemoteSteerableChanged(SessionRemoteSteerableChangedData),
275 #[serde(rename = "session.error")]
276 SessionError(SessionErrorData),
277 #[serde(rename = "session.idle")]
278 SessionIdle(SessionIdleData),
279 #[serde(rename = "session.title_changed")]
280 SessionTitleChanged(SessionTitleChangedData),
281 #[serde(rename = "session.schedule_created")]
282 SessionScheduleCreated(SessionScheduleCreatedData),
283 #[serde(rename = "session.schedule_cancelled")]
284 SessionScheduleCancelled(SessionScheduleCancelledData),
285 #[serde(rename = "session.schedule_rearmed")]
286 SessionScheduleRearmed(SessionScheduleRearmedData),
287 #[serde(rename = "session.autopilot_objective_changed")]
288 SessionAutopilotObjectiveChanged(SessionAutopilotObjectiveChangedData),
289 #[serde(rename = "session.info")]
290 SessionInfo(SessionInfoData),
291 #[serde(rename = "session.warning")]
292 SessionWarning(SessionWarningData),
293 #[serde(rename = "session.model_change")]
294 SessionModelChange(SessionModelChangeData),
295 #[serde(rename = "session.mode_changed")]
296 SessionModeChanged(SessionModeChangedData),
297 #[serde(rename = "session.permissions_changed")]
298 SessionPermissionsChanged(SessionPermissionsChangedData),
299 #[serde(rename = "session.plan_changed")]
300 SessionPlanChanged(SessionPlanChangedData),
301 #[serde(rename = "session.todos_changed")]
302 SessionTodosChanged(SessionTodosChangedData),
303 #[serde(rename = "session.workspace_file_changed")]
304 SessionWorkspaceFileChanged(SessionWorkspaceFileChangedData),
305 #[serde(rename = "session.handoff")]
306 SessionHandoff(SessionHandoffData),
307 #[serde(rename = "session.truncation")]
308 SessionTruncation(SessionTruncationData),
309 #[serde(rename = "session.snapshot_rewind")]
310 SessionSnapshotRewind(SessionSnapshotRewindData),
311 #[serde(rename = "session.shutdown")]
312 SessionShutdown(SessionShutdownData),
313 #[serde(rename = "session.context_changed")]
314 SessionContextChanged(SessionContextChangedData),
315 #[serde(rename = "session.usage_info")]
316 SessionUsageInfo(SessionUsageInfoData),
317 #[serde(rename = "session.compaction_start")]
318 SessionCompactionStart(SessionCompactionStartData),
319 #[serde(rename = "session.compaction_complete")]
320 SessionCompactionComplete(SessionCompactionCompleteData),
321 #[serde(rename = "session.task_complete")]
322 SessionTaskComplete(SessionTaskCompleteData),
323 #[serde(rename = "user.message")]
324 UserMessage(UserMessageData),
325 #[serde(rename = "pending_messages.modified")]
326 PendingMessagesModified(PendingMessagesModifiedData),
327 #[serde(rename = "assistant.turn_start")]
328 AssistantTurnStart(AssistantTurnStartData),
329 #[serde(rename = "assistant.intent")]
330 AssistantIntent(AssistantIntentData),
331 #[serde(rename = "assistant.reasoning")]
332 AssistantReasoning(AssistantReasoningData),
333 #[serde(rename = "assistant.reasoning_delta")]
334 AssistantReasoningDelta(AssistantReasoningDeltaData),
335 #[serde(rename = "assistant.streaming_delta")]
336 AssistantStreamingDelta(AssistantStreamingDeltaData),
337 #[serde(rename = "assistant.message")]
338 AssistantMessage(AssistantMessageData),
339 #[serde(rename = "assistant.message_start")]
340 AssistantMessageStart(AssistantMessageStartData),
341 #[serde(rename = "assistant.message_delta")]
342 AssistantMessageDelta(AssistantMessageDeltaData),
343 #[serde(rename = "assistant.turn_end")]
344 AssistantTurnEnd(AssistantTurnEndData),
345 #[serde(rename = "assistant.idle")]
346 AssistantIdle(AssistantIdleData),
347 #[serde(rename = "assistant.usage")]
348 AssistantUsage(AssistantUsageData),
349 #[serde(rename = "model.call_failure")]
350 ModelCallFailure(ModelCallFailureData),
351 #[serde(rename = "abort")]
352 Abort(AbortData),
353 #[serde(rename = "tool.user_requested")]
354 ToolUserRequested(ToolUserRequestedData),
355 #[serde(rename = "tool.execution_start")]
356 ToolExecutionStart(ToolExecutionStartData),
357 #[serde(rename = "tool.execution_partial_result")]
358 ToolExecutionPartialResult(ToolExecutionPartialResultData),
359 #[serde(rename = "tool.execution_progress")]
360 ToolExecutionProgress(ToolExecutionProgressData),
361 #[serde(rename = "tool.execution_complete")]
362 ToolExecutionComplete(ToolExecutionCompleteData),
363 #[serde(rename = "skill.invoked")]
364 SkillInvoked(SkillInvokedData),
365 #[serde(rename = "subagent.started")]
366 SubagentStarted(SubagentStartedData),
367 #[serde(rename = "subagent.completed")]
368 SubagentCompleted(SubagentCompletedData),
369 #[serde(rename = "subagent.failed")]
370 SubagentFailed(SubagentFailedData),
371 #[serde(rename = "subagent.selected")]
372 SubagentSelected(SubagentSelectedData),
373 #[serde(rename = "subagent.deselected")]
374 SubagentDeselected(SubagentDeselectedData),
375 #[serde(rename = "hook.start")]
376 HookStart(HookStartData),
377 #[serde(rename = "hook.end")]
378 HookEnd(HookEndData),
379 #[serde(rename = "hook.progress")]
380 HookProgress(HookProgressData),
381 #[serde(rename = "session.binary_asset")]
382 SessionBinaryAsset(SessionBinaryAssetData),
383 #[serde(rename = "system.message")]
384 SystemMessage(SystemMessageData),
385 #[serde(rename = "system.notification")]
386 SystemNotification(SystemNotificationData),
387 #[serde(rename = "permission.requested")]
388 PermissionRequested(PermissionRequestedData),
389 #[serde(rename = "permission.completed")]
390 PermissionCompleted(PermissionCompletedData),
391 #[serde(rename = "user_input.requested")]
392 UserInputRequested(UserInputRequestedData),
393 #[serde(rename = "user_input.completed")]
394 UserInputCompleted(UserInputCompletedData),
395 #[serde(rename = "elicitation.requested")]
396 ElicitationRequested(ElicitationRequestedData),
397 #[serde(rename = "elicitation.completed")]
398 ElicitationCompleted(ElicitationCompletedData),
399 #[serde(rename = "sampling.requested")]
400 SamplingRequested(SamplingRequestedData),
401 #[serde(rename = "sampling.completed")]
402 SamplingCompleted(SamplingCompletedData),
403 #[serde(rename = "mcp.oauth_required")]
404 McpOauthRequired(McpOauthRequiredData),
405 #[serde(rename = "mcp.oauth_completed")]
406 McpOauthCompleted(McpOauthCompletedData),
407 #[serde(rename = "mcp.headers_refresh_required")]
408 McpHeadersRefreshRequired(McpHeadersRefreshRequiredData),
409 #[serde(rename = "mcp.headers_refresh_completed")]
410 McpHeadersRefreshCompleted(McpHeadersRefreshCompletedData),
411 #[serde(rename = "session.custom_notification")]
412 SessionCustomNotification(SessionCustomNotificationData),
413 #[serde(rename = "external_tool.requested")]
414 ExternalToolRequested(ExternalToolRequestedData),
415 #[serde(rename = "external_tool.completed")]
416 ExternalToolCompleted(ExternalToolCompletedData),
417 #[serde(rename = "command.queued")]
418 CommandQueued(CommandQueuedData),
419 #[serde(rename = "command.execute")]
420 CommandExecute(CommandExecuteData),
421 #[serde(rename = "command.completed")]
422 CommandCompleted(CommandCompletedData),
423 #[serde(rename = "auto_mode_switch.requested")]
424 AutoModeSwitchRequested(AutoModeSwitchRequestedData),
425 #[serde(rename = "auto_mode_switch.completed")]
426 AutoModeSwitchCompleted(AutoModeSwitchCompletedData),
427 #[serde(rename = "commands.changed")]
428 CommandsChanged(CommandsChangedData),
429 #[serde(rename = "capabilities.changed")]
430 CapabilitiesChanged(CapabilitiesChangedData),
431 #[serde(rename = "exit_plan_mode.requested")]
432 ExitPlanModeRequested(ExitPlanModeRequestedData),
433 #[serde(rename = "exit_plan_mode.completed")]
434 ExitPlanModeCompleted(ExitPlanModeCompletedData),
435 #[serde(rename = "session.tools_updated")]
436 SessionToolsUpdated(SessionToolsUpdatedData),
437 #[serde(rename = "session.background_tasks_changed")]
438 SessionBackgroundTasksChanged(SessionBackgroundTasksChangedData),
439 #[serde(rename = "session.skills_loaded")]
440 SessionSkillsLoaded(SessionSkillsLoadedData),
441 #[serde(rename = "session.custom_agents_updated")]
442 SessionCustomAgentsUpdated(SessionCustomAgentsUpdatedData),
443 #[serde(rename = "session.mcp_servers_loaded")]
444 SessionMcpServersLoaded(SessionMcpServersLoadedData),
445 #[serde(rename = "session.mcp_server_status_changed")]
446 SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
447 #[serde(rename = "session.extensions_loaded")]
448 SessionExtensionsLoaded(SessionExtensionsLoadedData),
449 #[serde(rename = "session.canvas.opened")]
457 SessionCanvasOpened(SessionCanvasOpenedData),
458 #[serde(rename = "session.canvas.registry_changed")]
466 SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
467 #[serde(rename = "session.canvas.closed")]
475 SessionCanvasClosed(SessionCanvasClosedData),
476 #[serde(rename = "session.canvas.unavailable")]
484 SessionCanvasUnavailable(SessionCanvasUnavailableData),
485 #[serde(rename = "session.canvas.recorded")]
493 SessionCanvasRecorded(SessionCanvasRecordedData),
494 #[serde(rename = "session.canvas.removed")]
502 SessionCanvasRemoved(SessionCanvasRemovedData),
503 #[serde(rename = "session.extensions.attachments_pushed")]
504 SessionExtensionsAttachmentsPushed(SessionExtensionsAttachmentsPushedData),
505 #[serde(rename = "mcp_app.tool_call_complete")]
506 McpAppToolCallComplete(McpAppToolCallCompleteData),
507}
508
509#[derive(Debug, Clone, Serialize, Deserialize)]
515#[serde(rename_all = "camelCase")]
516pub struct TypedSessionEvent {
517 pub id: String,
519 pub timestamp: String,
521 #[serde(skip_serializing_if = "Option::is_none")]
523 pub parent_id: Option<String>,
524 #[serde(skip_serializing_if = "Option::is_none")]
526 pub ephemeral: Option<bool>,
527 #[serde(skip_serializing_if = "Option::is_none")]
530 pub agent_id: Option<String>,
531 #[serde(flatten)]
533 pub payload: SessionEventData,
534}
535
536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
538#[serde(rename_all = "camelCase")]
539pub struct WorkingDirectoryContext {
540 #[serde(skip_serializing_if = "Option::is_none")]
542 pub base_commit: Option<String>,
543 #[serde(skip_serializing_if = "Option::is_none")]
545 pub branch: Option<String>,
546 pub cwd: String,
548 #[serde(skip_serializing_if = "Option::is_none")]
550 pub git_root: Option<String>,
551 #[serde(skip_serializing_if = "Option::is_none")]
553 pub head_commit: Option<String>,
554 #[serde(skip_serializing_if = "Option::is_none")]
556 pub host_type: Option<WorkingDirectoryContextHostType>,
557 #[serde(skip_serializing_if = "Option::is_none")]
559 pub repository: Option<String>,
560 #[serde(skip_serializing_if = "Option::is_none")]
562 pub repository_host: Option<String>,
563}
564
565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
567#[serde(rename_all = "camelCase")]
568pub struct ResponseBudgetConfig {
569 #[serde(skip_serializing_if = "Option::is_none")]
571 pub max_ai_credits: Option<f64>,
572 #[serde(skip_serializing_if = "Option::is_none")]
574 pub max_model_iterations: Option<i64>,
575}
576
577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
579#[serde(rename_all = "camelCase")]
580pub struct SessionStartData {
581 #[serde(skip_serializing_if = "Option::is_none")]
583 pub already_in_use: Option<bool>,
584 #[serde(skip_serializing_if = "Option::is_none")]
586 pub context: Option<WorkingDirectoryContext>,
587 #[serde(skip_serializing_if = "Option::is_none")]
589 pub context_tier: Option<ContextTier>,
590 pub copilot_version: String,
592 #[serde(skip_serializing_if = "Option::is_none")]
594 pub detached_from_spawning_parent_session_id: Option<String>,
595 pub producer: String,
597 #[serde(skip_serializing_if = "Option::is_none")]
599 pub reasoning_effort: Option<String>,
600 #[serde(skip_serializing_if = "Option::is_none")]
602 pub reasoning_summary: Option<ReasoningSummary>,
603 #[serde(skip_serializing_if = "Option::is_none")]
605 pub remote_steerable: Option<bool>,
606 #[serde(skip_serializing_if = "Option::is_none")]
608 pub response_budget: Option<ResponseBudgetConfig>,
609 #[serde(skip_serializing_if = "Option::is_none")]
611 pub selected_model: Option<String>,
612 pub session_id: SessionId,
614 pub start_time: String,
616 pub version: i64,
618}
619
620#[derive(Debug, Clone, Default, Serialize, Deserialize)]
622#[serde(rename_all = "camelCase")]
623pub struct SessionResumeData {
624 #[serde(skip_serializing_if = "Option::is_none")]
626 pub already_in_use: Option<bool>,
627 #[serde(skip_serializing_if = "Option::is_none")]
629 pub context: Option<WorkingDirectoryContext>,
630 #[serde(skip_serializing_if = "Option::is_none")]
632 pub context_tier: Option<ContextTier>,
633 #[serde(skip_serializing_if = "Option::is_none")]
635 pub continue_pending_work: Option<bool>,
636 pub event_count: i64,
638 #[serde(skip_serializing_if = "Option::is_none")]
640 pub events_file_size_bytes: Option<i64>,
641 #[serde(skip_serializing_if = "Option::is_none")]
643 pub reasoning_effort: Option<String>,
644 #[serde(skip_serializing_if = "Option::is_none")]
646 pub reasoning_summary: Option<ReasoningSummary>,
647 #[serde(skip_serializing_if = "Option::is_none")]
649 pub remote_steerable: Option<bool>,
650 #[serde(skip_serializing_if = "Option::is_none")]
652 pub response_budget: Option<ResponseBudgetConfig>,
653 pub resume_time: String,
655 #[serde(skip_serializing_if = "Option::is_none")]
657 pub selected_model: Option<String>,
658 #[serde(skip_serializing_if = "Option::is_none")]
660 pub session_was_active: Option<bool>,
661}
662
663#[derive(Debug, Clone, Default, Serialize, Deserialize)]
665#[serde(rename_all = "camelCase")]
666pub struct SessionRemoteSteerableChangedData {
667 pub remote_steerable: bool,
669}
670
671#[derive(Debug, Clone, Default, Serialize, Deserialize)]
673#[serde(rename_all = "camelCase")]
674pub struct SessionErrorData {
675 #[serde(skip_serializing_if = "Option::is_none")]
677 pub eligible_for_auto_switch: Option<bool>,
678 #[serde(skip_serializing_if = "Option::is_none")]
680 pub error_code: Option<String>,
681 pub error_type: String,
683 pub message: String,
685 #[serde(skip_serializing_if = "Option::is_none")]
687 pub provider_call_id: Option<String>,
688 #[serde(skip_serializing_if = "Option::is_none")]
690 pub service_request_id: Option<String>,
691 #[serde(skip_serializing_if = "Option::is_none")]
693 pub stack: Option<String>,
694 #[serde(skip_serializing_if = "Option::is_none")]
696 pub status_code: Option<i32>,
697 #[serde(skip_serializing_if = "Option::is_none")]
699 pub url: Option<String>,
700}
701
702#[derive(Debug, Clone, Default, Serialize, Deserialize)]
704#[serde(rename_all = "camelCase")]
705pub struct SessionIdleData {
706 #[serde(skip_serializing_if = "Option::is_none")]
708 pub aborted: Option<bool>,
709}
710
711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
713#[serde(rename_all = "camelCase")]
714pub struct SessionTitleChangedData {
715 pub title: String,
717}
718
719#[derive(Debug, Clone, Default, Serialize, Deserialize)]
721#[serde(rename_all = "camelCase")]
722pub struct SessionScheduleCreatedData {
723 #[serde(skip_serializing_if = "Option::is_none")]
725 pub at: Option<i64>,
726 #[serde(skip_serializing_if = "Option::is_none")]
728 pub cron: Option<String>,
729 #[serde(skip_serializing_if = "Option::is_none")]
731 pub display_prompt: Option<String>,
732 pub id: i64,
734 #[serde(skip_serializing_if = "Option::is_none")]
736 pub interval_ms: Option<i64>,
737 pub prompt: String,
739 #[serde(skip_serializing_if = "Option::is_none")]
741 pub recurring: Option<bool>,
742 #[serde(skip_serializing_if = "Option::is_none")]
744 pub self_paced: Option<bool>,
745 #[serde(skip_serializing_if = "Option::is_none")]
747 pub tz: Option<String>,
748}
749
750#[derive(Debug, Clone, Default, Serialize, Deserialize)]
752#[serde(rename_all = "camelCase")]
753pub struct SessionScheduleCancelledData {
754 pub id: i64,
756}
757
758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
760#[serde(rename_all = "camelCase")]
761pub struct SessionScheduleRearmedData {
762 pub id: i64,
764 pub next_run_at: i64,
766}
767
768#[derive(Debug, Clone, Default, Serialize, Deserialize)]
770#[serde(rename_all = "camelCase")]
771pub struct SessionAutopilotObjectiveChangedData {
772 #[serde(skip_serializing_if = "Option::is_none")]
774 pub id: Option<i64>,
775 pub operation: AutopilotObjectiveChangedOperation,
777 #[serde(skip_serializing_if = "Option::is_none")]
779 pub status: Option<AutopilotObjectiveChangedStatus>,
780}
781
782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
784#[serde(rename_all = "camelCase")]
785pub struct SessionInfoData {
786 pub info_type: String,
788 pub message: String,
790 #[serde(skip_serializing_if = "Option::is_none")]
792 pub tip: Option<String>,
793 #[serde(skip_serializing_if = "Option::is_none")]
795 pub url: Option<String>,
796}
797
798#[derive(Debug, Clone, Default, Serialize, Deserialize)]
800#[serde(rename_all = "camelCase")]
801pub struct SessionWarningData {
802 pub message: String,
804 #[serde(skip_serializing_if = "Option::is_none")]
806 pub url: Option<String>,
807 pub warning_type: String,
809}
810
811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
813#[serde(rename_all = "camelCase")]
814pub struct SessionModelChangeData {
815 #[serde(skip_serializing_if = "Option::is_none")]
817 pub cause: Option<String>,
818 #[serde(skip_serializing_if = "Option::is_none")]
820 pub context_tier: Option<ContextTier>,
821 pub new_model: String,
823 #[serde(skip_serializing_if = "Option::is_none")]
825 pub previous_model: Option<String>,
826 #[serde(skip_serializing_if = "Option::is_none")]
828 pub previous_reasoning_effort: Option<String>,
829 #[serde(skip_serializing_if = "Option::is_none")]
831 pub previous_reasoning_summary: Option<ReasoningSummary>,
832 #[serde(skip_serializing_if = "Option::is_none")]
834 pub reasoning_effort: Option<String>,
835 #[serde(skip_serializing_if = "Option::is_none")]
837 pub reasoning_summary: Option<ReasoningSummary>,
838}
839
840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
842#[serde(rename_all = "camelCase")]
843pub struct SessionModeChangedData {
844 pub new_mode: SessionMode,
846 pub previous_mode: SessionMode,
848}
849
850#[derive(Debug, Clone, Default, Serialize, Deserialize)]
852#[serde(rename_all = "camelCase")]
853pub struct SessionPermissionsChangedData {
854 pub allow_all_permissions: bool,
856 pub previous_allow_all_permissions: bool,
858}
859
860#[derive(Debug, Clone, Default, Serialize, Deserialize)]
862#[serde(rename_all = "camelCase")]
863pub struct SessionPlanChangedData {
864 pub operation: PlanChangedOperation,
866}
867
868#[derive(Debug, Clone, Default, Serialize, Deserialize)]
870#[serde(rename_all = "camelCase")]
871pub struct SessionTodosChangedData {}
872
873#[derive(Debug, Clone, Default, Serialize, Deserialize)]
875#[serde(rename_all = "camelCase")]
876pub struct SessionWorkspaceFileChangedData {
877 pub operation: WorkspaceFileChangedOperation,
879 pub path: String,
881}
882
883#[derive(Debug, Clone, Default, Serialize, Deserialize)]
885#[serde(rename_all = "camelCase")]
886pub struct HandoffRepository {
887 #[serde(skip_serializing_if = "Option::is_none")]
889 pub branch: Option<String>,
890 pub name: String,
892 pub owner: String,
894}
895
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898#[serde(rename_all = "camelCase")]
899pub struct SessionHandoffData {
900 #[serde(skip_serializing_if = "Option::is_none")]
902 pub context: Option<String>,
903 pub handoff_time: String,
905 #[serde(skip_serializing_if = "Option::is_none")]
907 pub host: Option<String>,
908 #[serde(skip_serializing_if = "Option::is_none")]
910 pub remote_session_id: Option<SessionId>,
911 #[serde(skip_serializing_if = "Option::is_none")]
913 pub repository: Option<HandoffRepository>,
914 pub source_type: HandoffSourceType,
916 #[serde(skip_serializing_if = "Option::is_none")]
918 pub summary: Option<String>,
919}
920
921#[derive(Debug, Clone, Default, Serialize, Deserialize)]
923#[serde(rename_all = "camelCase")]
924pub struct SessionTruncationData {
925 pub messages_removed_during_truncation: i64,
927 pub performed_by: String,
929 pub post_truncation_messages_length: i64,
931 pub post_truncation_tokens_in_messages: i64,
933 pub pre_truncation_messages_length: i64,
935 pub pre_truncation_tokens_in_messages: i64,
937 pub token_limit: i64,
939 pub tokens_removed_during_truncation: i64,
941}
942
943#[derive(Debug, Clone, Default, Serialize, Deserialize)]
945#[serde(rename_all = "camelCase")]
946pub struct SessionSnapshotRewindData {
947 pub events_removed: i64,
949 pub up_to_event_id: String,
951}
952
953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
955#[serde(rename_all = "camelCase")]
956pub struct ShutdownCodeChanges {
957 pub files_modified: Vec<String>,
959 pub lines_added: i64,
961 pub lines_removed: i64,
963}
964
965#[derive(Debug, Clone, Default, Serialize, Deserialize)]
967#[serde(rename_all = "camelCase")]
968pub struct ShutdownModelMetricRequests {
969 #[serde(skip_serializing_if = "Option::is_none")]
978 pub cost: Option<f64>,
979 #[serde(skip_serializing_if = "Option::is_none")]
988 pub count: Option<i64>,
989}
990
991#[derive(Debug, Clone, Default, Serialize, Deserialize)]
993#[serde(rename_all = "camelCase")]
994pub struct ShutdownModelMetricTokenDetail {
995 pub token_count: i64,
997}
998
999#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1001#[serde(rename_all = "camelCase")]
1002pub struct ShutdownModelMetricUsage {
1003 pub cache_read_tokens: i64,
1005 pub cache_write_tokens: i64,
1007 pub input_tokens: i64,
1009 pub output_tokens: i64,
1011 #[serde(skip_serializing_if = "Option::is_none")]
1013 pub reasoning_tokens: Option<i64>,
1014}
1015
1016#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1018#[serde(rename_all = "camelCase")]
1019pub struct ShutdownModelMetric {
1020 pub requests: ShutdownModelMetricRequests,
1022 #[serde(skip_serializing_if = "Option::is_none")]
1024 pub token_details: Option<HashMap<String, ShutdownModelMetricTokenDetail>>,
1025 #[serde(skip_serializing_if = "Option::is_none")]
1034 pub total_nano_aiu: Option<f64>,
1035 pub usage: ShutdownModelMetricUsage,
1037}
1038
1039#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1041#[serde(rename_all = "camelCase")]
1042pub struct ShutdownTokenDetail {
1043 pub token_count: i64,
1045}
1046
1047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1049#[serde(rename_all = "camelCase")]
1050pub struct SessionShutdownData {
1051 pub code_changes: ShutdownCodeChanges,
1053 #[serde(skip_serializing_if = "Option::is_none")]
1055 pub conversation_tokens: Option<i64>,
1056 #[serde(skip_serializing_if = "Option::is_none")]
1058 pub current_model: Option<String>,
1059 #[serde(skip_serializing_if = "Option::is_none")]
1061 pub current_tokens: Option<i64>,
1062 #[serde(skip_serializing_if = "Option::is_none")]
1064 pub error_reason: Option<String>,
1065 #[serde(skip_serializing_if = "Option::is_none")]
1067 pub events_file_size_bytes: Option<i64>,
1068 pub model_metrics: HashMap<String, ShutdownModelMetric>,
1070 pub session_start_time: i64,
1072 pub shutdown_type: ShutdownType,
1074 #[serde(skip_serializing_if = "Option::is_none")]
1076 pub system_tokens: Option<i64>,
1077 #[serde(skip_serializing_if = "Option::is_none")]
1079 pub token_details: Option<HashMap<String, ShutdownTokenDetail>>,
1080 #[serde(skip_serializing_if = "Option::is_none")]
1082 pub tool_definitions_tokens: Option<i64>,
1083 pub total_api_duration_ms: i64,
1085 #[serde(skip_serializing_if = "Option::is_none")]
1094 pub total_nano_aiu: Option<f64>,
1095 #[doc(hidden)]
1097 #[serde(skip_serializing_if = "Option::is_none")]
1098 pub(crate) total_premium_requests: Option<f64>,
1099}
1100
1101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1103#[serde(rename_all = "camelCase")]
1104pub struct SessionContextChangedData {
1105 #[serde(skip_serializing_if = "Option::is_none")]
1107 pub base_commit: Option<String>,
1108 #[serde(skip_serializing_if = "Option::is_none")]
1110 pub branch: Option<String>,
1111 pub cwd: String,
1113 #[serde(skip_serializing_if = "Option::is_none")]
1115 pub git_root: Option<String>,
1116 #[serde(skip_serializing_if = "Option::is_none")]
1118 pub head_commit: Option<String>,
1119 #[serde(skip_serializing_if = "Option::is_none")]
1121 pub host_type: Option<WorkingDirectoryContextHostType>,
1122 #[serde(skip_serializing_if = "Option::is_none")]
1124 pub repository: Option<String>,
1125 #[serde(skip_serializing_if = "Option::is_none")]
1127 pub repository_host: Option<String>,
1128}
1129
1130#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1132#[serde(rename_all = "camelCase")]
1133pub struct SessionUsageInfoData {
1134 #[serde(skip_serializing_if = "Option::is_none")]
1136 pub conversation_tokens: Option<i64>,
1137 pub current_tokens: i64,
1139 #[serde(skip_serializing_if = "Option::is_none")]
1141 pub is_initial: Option<bool>,
1142 pub messages_length: i64,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub system_tokens: Option<i64>,
1147 pub token_limit: i64,
1149 #[serde(skip_serializing_if = "Option::is_none")]
1151 pub tool_definitions_tokens: Option<i64>,
1152}
1153
1154#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1156#[serde(rename_all = "camelCase")]
1157pub struct SessionCompactionStartData {
1158 #[serde(skip_serializing_if = "Option::is_none")]
1160 pub conversation_tokens: Option<i64>,
1161 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub system_tokens: Option<i64>,
1164 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub tool_definitions_tokens: Option<i64>,
1167}
1168
1169#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1171#[serde(rename_all = "camelCase")]
1172pub struct CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
1173 pub batch_size: i64,
1175 pub cost_per_batch: i64,
1177 pub token_count: i64,
1179 pub token_type: String,
1181}
1182
1183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1185#[serde(rename_all = "camelCase")]
1186pub(crate) struct CompactionCompleteCompactionTokensUsedCopilotUsage {
1187 #[doc(hidden)]
1189 #[serde(skip_serializing_if = "Option::is_none")]
1190 pub(crate) token_details:
1191 Option<Vec<CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail>>,
1192 pub total_nano_aiu: f64,
1194}
1195
1196#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1198#[serde(rename_all = "camelCase")]
1199pub struct CompactionCompleteCompactionTokensUsed {
1200 #[serde(skip_serializing_if = "Option::is_none")]
1202 pub cache_read_tokens: Option<i64>,
1203 #[serde(skip_serializing_if = "Option::is_none")]
1205 pub cache_write_tokens: Option<i64>,
1206 #[doc(hidden)]
1208 #[serde(skip_serializing_if = "Option::is_none")]
1209 pub(crate) copilot_usage: Option<CompactionCompleteCompactionTokensUsedCopilotUsage>,
1210 #[serde(skip_serializing_if = "Option::is_none")]
1212 pub duration: Option<i64>,
1213 #[serde(skip_serializing_if = "Option::is_none")]
1215 pub input_tokens: Option<i64>,
1216 #[serde(skip_serializing_if = "Option::is_none")]
1218 pub model: Option<String>,
1219 #[serde(skip_serializing_if = "Option::is_none")]
1221 pub output_tokens: Option<i64>,
1222}
1223
1224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1226#[serde(rename_all = "camelCase")]
1227pub struct SessionCompactionCompleteData {
1228 #[serde(skip_serializing_if = "Option::is_none")]
1230 pub checkpoint_number: Option<i64>,
1231 #[serde(skip_serializing_if = "Option::is_none")]
1233 pub checkpoint_path: Option<String>,
1234 #[serde(skip_serializing_if = "Option::is_none")]
1236 pub compaction_tokens_used: Option<CompactionCompleteCompactionTokensUsed>,
1237 #[serde(skip_serializing_if = "Option::is_none")]
1239 pub conversation_tokens: Option<i64>,
1240 #[serde(skip_serializing_if = "Option::is_none")]
1242 pub custom_instructions: Option<String>,
1243 #[serde(skip_serializing_if = "Option::is_none")]
1245 pub error: Option<String>,
1246 #[serde(skip_serializing_if = "Option::is_none")]
1248 pub messages_removed: Option<i64>,
1249 #[serde(skip_serializing_if = "Option::is_none")]
1251 pub post_compaction_tokens: Option<i64>,
1252 #[serde(skip_serializing_if = "Option::is_none")]
1254 pub pre_compaction_messages_length: Option<i64>,
1255 #[serde(skip_serializing_if = "Option::is_none")]
1257 pub pre_compaction_tokens: Option<i64>,
1258 #[serde(skip_serializing_if = "Option::is_none")]
1260 pub request_id: Option<RequestId>,
1261 #[serde(skip_serializing_if = "Option::is_none")]
1263 pub service_request_id: Option<String>,
1264 #[serde(skip_serializing_if = "Option::is_none")]
1266 pub status_code: Option<i64>,
1267 pub success: bool,
1269 #[serde(skip_serializing_if = "Option::is_none")]
1271 pub summary_content: Option<String>,
1272 #[serde(skip_serializing_if = "Option::is_none")]
1274 pub system_tokens: Option<i64>,
1275 #[serde(skip_serializing_if = "Option::is_none")]
1277 pub tokens_removed: Option<i64>,
1278 #[serde(skip_serializing_if = "Option::is_none")]
1280 pub tool_definitions_tokens: Option<i64>,
1281}
1282
1283#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1285#[serde(rename_all = "camelCase")]
1286pub struct SessionTaskCompleteData {
1287 #[serde(skip_serializing_if = "Option::is_none")]
1289 pub success: Option<bool>,
1290 #[serde(skip_serializing_if = "Option::is_none")]
1292 pub summary: Option<String>,
1293}
1294
1295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1297#[serde(rename_all = "camelCase")]
1298pub struct UserMessageData {
1299 #[serde(skip_serializing_if = "Option::is_none")]
1301 pub agent_mode: Option<UserMessageAgentMode>,
1302 #[serde(skip_serializing_if = "Option::is_none")]
1304 pub attachments: Option<Vec<serde_json::Value>>,
1305 pub content: String,
1307 #[serde(skip_serializing_if = "Option::is_none")]
1309 pub delivery: Option<UserMessageDelivery>,
1310 #[serde(skip_serializing_if = "Option::is_none")]
1312 pub interaction_id: Option<String>,
1313 #[serde(skip_serializing_if = "Option::is_none")]
1315 pub is_autopilot_continuation: Option<bool>,
1316 #[serde(skip_serializing_if = "Option::is_none")]
1318 pub native_document_path_fallback_paths: Option<Vec<String>>,
1319 #[serde(skip_serializing_if = "Option::is_none")]
1321 pub parent_agent_task_id: Option<String>,
1322 #[serde(skip_serializing_if = "Option::is_none")]
1324 pub source: Option<String>,
1325 #[serde(skip_serializing_if = "Option::is_none")]
1327 pub supported_native_document_mime_types: Option<Vec<String>>,
1328 #[serde(skip_serializing_if = "Option::is_none")]
1330 pub transformed_content: Option<String>,
1331}
1332
1333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1335#[serde(rename_all = "camelCase")]
1336pub struct PendingMessagesModifiedData {}
1337
1338#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1340#[serde(rename_all = "camelCase")]
1341pub struct AssistantTurnStartData {
1342 #[serde(skip_serializing_if = "Option::is_none")]
1344 pub interaction_id: Option<String>,
1345 pub turn_id: String,
1347}
1348
1349#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1351#[serde(rename_all = "camelCase")]
1352pub struct AssistantIntentData {
1353 pub intent: String,
1355}
1356
1357#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1359#[serde(rename_all = "camelCase")]
1360pub struct AssistantReasoningData {
1361 pub content: String,
1363 pub reasoning_id: String,
1365}
1366
1367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1369#[serde(rename_all = "camelCase")]
1370pub struct AssistantReasoningDeltaData {
1371 pub delta_content: String,
1373 pub reasoning_id: String,
1375}
1376
1377#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1379#[serde(rename_all = "camelCase")]
1380pub struct AssistantStreamingDeltaData {
1381 pub total_response_size_bytes: i64,
1383}
1384
1385#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1394#[serde(rename_all = "camelCase")]
1395pub struct CitationSource {
1396 pub id: String,
1398 #[serde(skip_serializing_if = "Option::is_none")]
1400 pub path: Option<String>,
1401 pub provider: CitationProvider,
1403 #[serde(skip_serializing_if = "Option::is_none")]
1405 pub title: Option<String>,
1406 #[serde(skip_serializing_if = "Option::is_none")]
1408 pub url: Option<String>,
1409}
1410
1411#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1420#[serde(rename_all = "camelCase")]
1421pub struct CitationReference {
1422 #[serde(skip_serializing_if = "Option::is_none")]
1424 pub cited_text: Option<String>,
1425 #[serde(skip_serializing_if = "Option::is_none")]
1427 pub location: Option<serde_json::Value>,
1428 #[serde(skip_serializing_if = "Option::is_none")]
1430 pub provider_metadata: Option<serde_json::Value>,
1431 pub source_id: String,
1433}
1434
1435#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1444#[serde(rename_all = "camelCase")]
1445pub struct CitationSpan {
1446 pub end_index: i64,
1448 pub references: Vec<CitationReference>,
1450 pub start_index: i64,
1452}
1453
1454#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1463#[serde(rename_all = "camelCase")]
1464pub struct Citations {
1465 pub sources: Vec<CitationSource>,
1467 pub spans: Vec<CitationSpan>,
1469}
1470
1471#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1480#[serde(rename_all = "camelCase")]
1481pub struct AssistantMessageServerTools {
1482 #[serde(skip_serializing_if = "Option::is_none")]
1483 pub advisor_model: Option<String>,
1484 #[serde(skip_serializing_if = "Option::is_none")]
1485 pub function_call_namespaces: Option<HashMap<String, String>>,
1486 #[serde(skip_serializing_if = "Option::is_none")]
1487 pub items: Option<Vec<serde_json::Value>>,
1488 pub provider: String,
1489 #[serde(skip_serializing_if = "Option::is_none")]
1490 pub raw_content_blocks: Option<Vec<serde_json::Value>>,
1491}
1492
1493#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1495#[serde(rename_all = "camelCase")]
1496pub struct AssistantMessageToolRequest {
1497 #[serde(skip_serializing_if = "Option::is_none")]
1499 pub arguments: Option<serde_json::Value>,
1500 #[serde(skip_serializing_if = "Option::is_none")]
1502 pub intention_summary: Option<String>,
1503 #[serde(skip_serializing_if = "Option::is_none")]
1505 pub mcp_server_name: Option<String>,
1506 #[serde(skip_serializing_if = "Option::is_none")]
1508 pub mcp_tool_name: Option<String>,
1509 pub name: String,
1511 pub tool_call_id: String,
1513 #[serde(skip_serializing_if = "Option::is_none")]
1515 pub tool_title: Option<String>,
1516 #[serde(skip_serializing_if = "Option::is_none")]
1518 pub r#type: Option<AssistantMessageToolRequestType>,
1519}
1520
1521#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1523#[serde(rename_all = "camelCase")]
1524pub struct AssistantMessageData {
1525 #[serde(skip_serializing_if = "Option::is_none")]
1527 pub api_call_id: Option<String>,
1528 #[serde(skip_serializing_if = "Option::is_none")]
1537 pub citations: Option<Citations>,
1538 pub content: String,
1540 #[serde(skip_serializing_if = "Option::is_none")]
1542 pub encrypted_content: Option<String>,
1543 #[serde(skip_serializing_if = "Option::is_none")]
1545 pub interaction_id: Option<String>,
1546 pub message_id: String,
1548 #[serde(skip_serializing_if = "Option::is_none")]
1550 pub model: Option<String>,
1551 #[serde(skip_serializing_if = "Option::is_none")]
1553 pub output_tokens: Option<i64>,
1554 #[doc(hidden)]
1556 #[deprecated]
1557 #[serde(skip_serializing_if = "Option::is_none")]
1558 pub parent_tool_call_id: Option<String>,
1559 #[serde(skip_serializing_if = "Option::is_none")]
1561 pub phase: Option<String>,
1562 #[serde(skip_serializing_if = "Option::is_none")]
1564 pub reasoning_opaque: Option<String>,
1565 #[serde(skip_serializing_if = "Option::is_none")]
1567 pub reasoning_text: Option<String>,
1568 #[serde(skip_serializing_if = "Option::is_none")]
1570 pub request_id: Option<RequestId>,
1571 #[serde(skip_serializing_if = "Option::is_none")]
1573 pub server_tools: Option<AssistantMessageServerTools>,
1574 #[serde(skip_serializing_if = "Option::is_none")]
1576 pub service_request_id: Option<String>,
1577 #[serde(skip_serializing_if = "Option::is_none")]
1579 pub tool_requests: Option<Vec<AssistantMessageToolRequest>>,
1580 #[serde(skip_serializing_if = "Option::is_none")]
1582 pub turn_id: Option<String>,
1583}
1584
1585#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1587#[serde(rename_all = "camelCase")]
1588pub struct AssistantMessageStartData {
1589 pub message_id: String,
1591 #[serde(skip_serializing_if = "Option::is_none")]
1593 pub phase: Option<String>,
1594}
1595
1596#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1598#[serde(rename_all = "camelCase")]
1599pub struct AssistantMessageDeltaData {
1600 pub delta_content: String,
1602 pub message_id: String,
1604 #[doc(hidden)]
1606 #[deprecated]
1607 #[serde(skip_serializing_if = "Option::is_none")]
1608 pub parent_tool_call_id: Option<String>,
1609}
1610
1611#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1613#[serde(rename_all = "camelCase")]
1614pub struct AssistantTurnEndData {
1615 pub turn_id: String,
1617}
1618
1619#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1621#[serde(rename_all = "camelCase")]
1622pub struct AssistantIdleData {
1623 #[serde(skip_serializing_if = "Option::is_none")]
1625 pub aborted: Option<bool>,
1626}
1627
1628#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1630#[serde(rename_all = "camelCase")]
1631pub struct AssistantUsageCopilotUsageTokenDetail {
1632 pub batch_size: i64,
1634 pub cost_per_batch: i64,
1636 pub token_count: i64,
1638 pub token_type: String,
1640}
1641
1642#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1644#[serde(rename_all = "camelCase")]
1645pub struct AssistantUsageCopilotUsage {
1646 #[doc(hidden)]
1648 #[serde(skip_serializing_if = "Option::is_none")]
1649 pub(crate) token_details: Option<Vec<AssistantUsageCopilotUsageTokenDetail>>,
1650 pub total_nano_aiu: f64,
1652}
1653
1654#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1656#[serde(rename_all = "camelCase")]
1657pub(crate) struct AssistantUsageQuotaSnapshot {
1658 #[doc(hidden)]
1660 pub(crate) entitlement_requests: i64,
1661 #[doc(hidden)]
1663 #[serde(skip_serializing_if = "Option::is_none")]
1664 pub(crate) has_quota: Option<bool>,
1665 #[doc(hidden)]
1667 pub(crate) is_unlimited_entitlement: bool,
1668 #[doc(hidden)]
1670 pub(crate) overage: f64,
1671 #[doc(hidden)]
1673 pub(crate) overage_allowed_with_exhausted_quota: bool,
1674 #[doc(hidden)]
1676 #[serde(skip_serializing_if = "Option::is_none")]
1677 pub(crate) overage_entitlement: Option<f64>,
1678 #[doc(hidden)]
1680 pub(crate) remaining_percentage: f64,
1681 #[doc(hidden)]
1683 #[serde(skip_serializing_if = "Option::is_none")]
1684 pub(crate) reset_date: Option<String>,
1685 #[doc(hidden)]
1687 #[serde(skip_serializing_if = "Option::is_none")]
1688 pub(crate) token_based_billing: Option<bool>,
1689 #[doc(hidden)]
1691 pub(crate) usage_allowed_with_exhausted_quota: bool,
1692 #[doc(hidden)]
1694 pub(crate) used_requests: i64,
1695}
1696
1697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1699#[serde(rename_all = "camelCase")]
1700pub struct AssistantUsageData {
1701 #[serde(skip_serializing_if = "Option::is_none")]
1703 pub api_call_id: Option<String>,
1704 #[serde(skip_serializing_if = "Option::is_none")]
1706 pub api_endpoint: Option<AssistantUsageApiEndpoint>,
1707 #[serde(skip_serializing_if = "Option::is_none")]
1709 pub cache_read_tokens: Option<i64>,
1710 #[serde(skip_serializing_if = "Option::is_none")]
1712 pub cache_write_tokens: Option<i64>,
1713 #[serde(skip_serializing_if = "Option::is_none")]
1715 pub content_filter_triggered: Option<bool>,
1716 #[serde(skip_serializing_if = "Option::is_none")]
1718 pub copilot_usage: Option<AssistantUsageCopilotUsage>,
1719 #[serde(skip_serializing_if = "Option::is_none")]
1728 pub cost: Option<f64>,
1729 #[serde(skip_serializing_if = "Option::is_none")]
1731 pub duration: Option<i64>,
1732 #[serde(skip_serializing_if = "Option::is_none")]
1734 pub finish_reason: Option<String>,
1735 #[serde(skip_serializing_if = "Option::is_none")]
1737 pub initiator: Option<String>,
1738 #[serde(skip_serializing_if = "Option::is_none")]
1740 pub input_tokens: Option<i64>,
1741 #[serde(skip_serializing_if = "Option::is_none")]
1743 pub inter_token_latency_ms: Option<f64>,
1744 pub model: String,
1746 #[serde(skip_serializing_if = "Option::is_none")]
1748 pub output_tokens: Option<i64>,
1749 #[doc(hidden)]
1751 #[deprecated]
1752 #[serde(skip_serializing_if = "Option::is_none")]
1753 pub parent_tool_call_id: Option<String>,
1754 #[serde(skip_serializing_if = "Option::is_none")]
1756 pub provider_call_id: Option<String>,
1757 #[doc(hidden)]
1759 #[serde(skip_serializing_if = "Option::is_none")]
1760 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1761 #[serde(skip_serializing_if = "Option::is_none")]
1763 pub reasoning_effort: Option<String>,
1764 #[serde(skip_serializing_if = "Option::is_none")]
1766 pub reasoning_tokens: Option<i64>,
1767 #[serde(skip_serializing_if = "Option::is_none")]
1769 pub service_request_id: Option<String>,
1770 #[serde(skip_serializing_if = "Option::is_none")]
1772 pub time_to_first_token_ms: Option<i64>,
1773}
1774
1775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1777#[serde(rename_all = "camelCase")]
1778pub struct ModelCallFailureRequestFingerprint {
1779 pub image_part_count: i64,
1781 pub image_parts_missing_media_type: i64,
1783 #[serde(skip_serializing_if = "Option::is_none")]
1785 pub last_message_role: Option<String>,
1786 pub message_count: i64,
1788 pub nameless_tool_call_count: i64,
1790 pub tool_call_count: i64,
1792 pub tool_result_message_count: i64,
1794}
1795
1796#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1798#[serde(rename_all = "camelCase")]
1799pub struct ModelCallFailureData {
1800 #[serde(skip_serializing_if = "Option::is_none")]
1802 pub api_call_id: Option<String>,
1803 #[serde(skip_serializing_if = "Option::is_none")]
1805 pub bad_request_kind: Option<ModelCallFailureBadRequestKind>,
1806 #[serde(skip_serializing_if = "Option::is_none")]
1808 pub duration_ms: Option<i64>,
1809 #[serde(skip_serializing_if = "Option::is_none")]
1811 pub error_code: Option<String>,
1812 #[serde(skip_serializing_if = "Option::is_none")]
1814 pub error_message: Option<String>,
1815 #[serde(skip_serializing_if = "Option::is_none")]
1817 pub error_type: Option<String>,
1818 #[serde(skip_serializing_if = "Option::is_none")]
1820 pub initiator: Option<String>,
1821 #[serde(skip_serializing_if = "Option::is_none")]
1823 pub model: Option<String>,
1824 #[serde(skip_serializing_if = "Option::is_none")]
1826 pub provider_call_id: Option<String>,
1827 #[doc(hidden)]
1829 #[serde(skip_serializing_if = "Option::is_none")]
1830 pub(crate) quota_snapshots: Option<HashMap<String, AssistantUsageQuotaSnapshot>>,
1831 #[serde(skip_serializing_if = "Option::is_none")]
1833 pub request_fingerprint: Option<ModelCallFailureRequestFingerprint>,
1834 #[serde(skip_serializing_if = "Option::is_none")]
1836 pub service_request_id: Option<String>,
1837 pub source: ModelCallFailureSource,
1839 #[serde(skip_serializing_if = "Option::is_none")]
1841 pub status_code: Option<i32>,
1842}
1843
1844#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1846#[serde(rename_all = "camelCase")]
1847pub struct AbortData {
1848 pub reason: AbortReason,
1850}
1851
1852#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1854#[serde(rename_all = "camelCase")]
1855pub struct ToolUserRequestedData {
1856 #[serde(skip_serializing_if = "Option::is_none")]
1858 pub arguments: Option<serde_json::Value>,
1859 pub tool_call_id: String,
1861 pub tool_name: String,
1863}
1864
1865#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1867#[serde(rename_all = "camelCase")]
1868pub struct ToolExecutionStartShellToolInfo {
1869 pub has_write_file_redirection: bool,
1871 pub possible_paths: Vec<String>,
1873}
1874
1875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1877#[serde(rename_all = "camelCase")]
1878pub struct ToolExecutionStartToolDescriptionMetaUI {
1879 #[serde(skip_serializing_if = "Option::is_none")]
1881 pub resource_uri: Option<String>,
1882 #[serde(skip_serializing_if = "Option::is_none")]
1884 pub visibility: Option<Vec<ToolExecutionStartToolDescriptionMetaUIVisibility>>,
1885}
1886
1887#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1889#[serde(rename_all = "camelCase")]
1890pub struct ToolExecutionStartToolDescriptionMeta {
1891 #[serde(skip_serializing_if = "Option::is_none")]
1893 pub ui: Option<ToolExecutionStartToolDescriptionMetaUI>,
1894}
1895
1896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1898#[serde(rename_all = "camelCase")]
1899pub struct ToolExecutionStartToolDescription {
1900 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
1902 pub meta: Option<ToolExecutionStartToolDescriptionMeta>,
1903 #[serde(skip_serializing_if = "Option::is_none")]
1905 pub description: Option<String>,
1906 pub name: String,
1908}
1909
1910#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1912#[serde(rename_all = "camelCase")]
1913pub struct ToolExecutionStartData {
1914 #[serde(skip_serializing_if = "Option::is_none")]
1916 pub arguments: Option<serde_json::Value>,
1917 #[serde(skip_serializing_if = "Option::is_none")]
1919 pub display_verbatim: Option<bool>,
1920 #[serde(skip_serializing_if = "Option::is_none")]
1922 pub mcp_server_name: Option<String>,
1923 #[serde(skip_serializing_if = "Option::is_none")]
1925 pub mcp_tool_name: Option<String>,
1926 #[serde(skip_serializing_if = "Option::is_none")]
1928 pub model: Option<String>,
1929 #[doc(hidden)]
1931 #[deprecated]
1932 #[serde(skip_serializing_if = "Option::is_none")]
1933 pub parent_tool_call_id: Option<String>,
1934 #[serde(skip_serializing_if = "Option::is_none")]
1936 pub shell_tool_info: Option<ToolExecutionStartShellToolInfo>,
1937 pub tool_call_id: String,
1939 #[serde(skip_serializing_if = "Option::is_none")]
1941 pub tool_description: Option<ToolExecutionStartToolDescription>,
1942 pub tool_name: String,
1944 #[serde(skip_serializing_if = "Option::is_none")]
1946 pub turn_id: Option<String>,
1947}
1948
1949#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1951#[serde(rename_all = "camelCase")]
1952pub struct ToolExecutionPartialResultData {
1953 pub partial_output: String,
1955 pub tool_call_id: String,
1957}
1958
1959#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1961#[serde(rename_all = "camelCase")]
1962pub struct ToolExecutionProgressData {
1963 pub progress_message: String,
1965 pub tool_call_id: String,
1967}
1968
1969#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1971#[serde(rename_all = "camelCase")]
1972pub struct ToolExecutionCompleteError {
1973 #[serde(skip_serializing_if = "Option::is_none")]
1975 pub code: Option<String>,
1976 pub message: String,
1978}
1979
1980#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1989#[serde(rename_all = "camelCase")]
1990pub struct CitableSource {
1991 pub content: String,
1993 pub id: String,
1995 #[serde(skip_serializing_if = "Option::is_none")]
1997 pub path: Option<String>,
1998 #[serde(skip_serializing_if = "Option::is_none")]
2000 pub title: Option<String>,
2001 #[serde(skip_serializing_if = "Option::is_none")]
2003 pub url: Option<String>,
2004}
2005
2006#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2008#[serde(rename_all = "camelCase")]
2009pub struct ToolExecutionCompleteContentText {
2010 pub text: String,
2012 pub r#type: ToolExecutionCompleteContentTextType,
2014}
2015
2016#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2018#[serde(rename_all = "camelCase")]
2019pub struct ToolExecutionCompleteContentTerminal {
2020 #[serde(skip_serializing_if = "Option::is_none")]
2022 pub cwd: Option<String>,
2023 #[serde(skip_serializing_if = "Option::is_none")]
2025 pub exit_code: Option<i64>,
2026 pub text: String,
2028 pub r#type: ToolExecutionCompleteContentTerminalType,
2030}
2031
2032#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2034#[serde(rename_all = "camelCase")]
2035pub struct ToolExecutionCompleteContentImage {
2036 pub data: String,
2038 pub mime_type: String,
2040 pub r#type: ToolExecutionCompleteContentImageType,
2042}
2043
2044#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2046#[serde(rename_all = "camelCase")]
2047pub struct ToolExecutionCompleteContentAudio {
2048 pub data: String,
2050 pub mime_type: String,
2052 pub r#type: ToolExecutionCompleteContentAudioType,
2054}
2055
2056#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2058#[serde(rename_all = "camelCase")]
2059pub struct ToolExecutionCompleteContentResourceLinkIcon {
2060 #[serde(skip_serializing_if = "Option::is_none")]
2062 pub mime_type: Option<String>,
2063 #[serde(skip_serializing_if = "Option::is_none")]
2065 pub sizes: Option<Vec<String>>,
2066 pub src: String,
2068 #[serde(skip_serializing_if = "Option::is_none")]
2070 pub theme: Option<ToolExecutionCompleteContentResourceLinkIconTheme>,
2071}
2072
2073#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2075#[serde(rename_all = "camelCase")]
2076pub struct ToolExecutionCompleteContentResourceLink {
2077 #[serde(skip_serializing_if = "Option::is_none")]
2079 pub description: Option<String>,
2080 #[serde(skip_serializing_if = "Option::is_none")]
2082 pub icons: Option<Vec<ToolExecutionCompleteContentResourceLinkIcon>>,
2083 #[serde(skip_serializing_if = "Option::is_none")]
2085 pub mime_type: Option<String>,
2086 pub name: String,
2088 #[serde(skip_serializing_if = "Option::is_none")]
2090 pub size: Option<i64>,
2091 #[serde(skip_serializing_if = "Option::is_none")]
2093 pub title: Option<String>,
2094 pub r#type: ToolExecutionCompleteContentResourceLinkType,
2096 pub uri: String,
2098}
2099
2100#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2102#[serde(rename_all = "camelCase")]
2103pub struct EmbeddedTextResourceContents {
2104 #[serde(skip_serializing_if = "Option::is_none")]
2106 pub mime_type: Option<String>,
2107 pub text: String,
2109 pub uri: String,
2111}
2112
2113#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2115#[serde(rename_all = "camelCase")]
2116pub struct EmbeddedBlobResourceContents {
2117 pub blob: String,
2119 #[serde(skip_serializing_if = "Option::is_none")]
2121 pub mime_type: Option<String>,
2122 pub uri: String,
2124}
2125
2126#[derive(Debug, Clone, Serialize, Deserialize)]
2128#[serde(rename_all = "camelCase")]
2129pub struct ToolExecutionCompleteContentResource {
2130 pub resource: ToolExecutionCompleteContentResourceDetails,
2132 pub r#type: ToolExecutionCompleteContentResourceType,
2134}
2135
2136#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2138#[serde(rename_all = "camelCase")]
2139pub struct ToolExecutionCompleteUIResourceMetaUICsp {
2140 #[serde(skip_serializing_if = "Option::is_none")]
2141 pub base_uri_domains: Option<Vec<String>>,
2142 #[serde(skip_serializing_if = "Option::is_none")]
2143 pub connect_domains: Option<Vec<String>>,
2144 #[serde(skip_serializing_if = "Option::is_none")]
2145 pub frame_domains: Option<Vec<String>>,
2146 #[serde(skip_serializing_if = "Option::is_none")]
2147 pub resource_domains: Option<Vec<String>>,
2148}
2149
2150#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2152#[serde(rename_all = "camelCase")]
2153pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {}
2154
2155#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2157#[serde(rename_all = "camelCase")]
2158pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {}
2159
2160#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2162#[serde(rename_all = "camelCase")]
2163pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {}
2164
2165#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2167#[serde(rename_all = "camelCase")]
2168pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {}
2169
2170#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2172#[serde(rename_all = "camelCase")]
2173pub struct ToolExecutionCompleteUIResourceMetaUIPermissions {
2174 #[serde(skip_serializing_if = "Option::is_none")]
2176 pub camera: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsCamera>,
2177 #[serde(skip_serializing_if = "Option::is_none")]
2179 pub clipboard_write: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite>,
2180 #[serde(skip_serializing_if = "Option::is_none")]
2182 pub geolocation: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation>,
2183 #[serde(skip_serializing_if = "Option::is_none")]
2185 pub microphone: Option<ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone>,
2186}
2187
2188#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2190#[serde(rename_all = "camelCase")]
2191pub struct ToolExecutionCompleteUIResourceMetaUI {
2192 #[serde(skip_serializing_if = "Option::is_none")]
2194 pub csp: Option<ToolExecutionCompleteUIResourceMetaUICsp>,
2195 #[serde(skip_serializing_if = "Option::is_none")]
2196 pub domain: Option<String>,
2197 #[serde(skip_serializing_if = "Option::is_none")]
2199 pub permissions: Option<ToolExecutionCompleteUIResourceMetaUIPermissions>,
2200 #[serde(skip_serializing_if = "Option::is_none")]
2201 pub prefers_border: Option<bool>,
2202}
2203
2204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2206#[serde(rename_all = "camelCase")]
2207pub struct ToolExecutionCompleteUIResourceMeta {
2208 #[serde(skip_serializing_if = "Option::is_none")]
2210 pub ui: Option<ToolExecutionCompleteUIResourceMetaUI>,
2211}
2212
2213#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2215#[serde(rename_all = "camelCase")]
2216pub struct ToolExecutionCompleteUIResource {
2217 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2219 pub meta: Option<ToolExecutionCompleteUIResourceMeta>,
2220 #[serde(skip_serializing_if = "Option::is_none")]
2222 pub blob: Option<String>,
2223 pub mime_type: String,
2225 #[serde(skip_serializing_if = "Option::is_none")]
2227 pub text: Option<String>,
2228 pub uri: String,
2230}
2231
2232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2234#[serde(rename_all = "camelCase")]
2235pub struct ToolExecutionCompleteResult {
2236 #[serde(skip_serializing_if = "Option::is_none")]
2245 pub binary_results_for_llm: Option<Vec<serde_json::Value>>,
2246 #[serde(skip_serializing_if = "Option::is_none")]
2255 pub citable_sources: Option<Vec<CitableSource>>,
2256 pub content: String,
2258 #[serde(skip_serializing_if = "Option::is_none")]
2260 pub contents: Option<Vec<ToolExecutionCompleteContent>>,
2261 #[serde(skip_serializing_if = "Option::is_none")]
2263 pub detailed_content: Option<String>,
2264 #[serde(skip_serializing_if = "Option::is_none")]
2266 pub structured_content: Option<serde_json::Value>,
2267 #[serde(skip_serializing_if = "Option::is_none")]
2269 pub ui_resource: Option<ToolExecutionCompleteUIResource>,
2270}
2271
2272#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2274#[serde(rename_all = "camelCase")]
2275pub struct ToolExecutionCompleteToolDescriptionMetaUI {
2276 #[serde(skip_serializing_if = "Option::is_none")]
2278 pub resource_uri: Option<String>,
2279 #[serde(skip_serializing_if = "Option::is_none")]
2281 pub visibility: Option<Vec<ToolExecutionCompleteToolDescriptionMetaUIVisibility>>,
2282}
2283
2284#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2286#[serde(rename_all = "camelCase")]
2287pub struct ToolExecutionCompleteToolDescriptionMeta {
2288 #[serde(skip_serializing_if = "Option::is_none")]
2290 pub ui: Option<ToolExecutionCompleteToolDescriptionMetaUI>,
2291}
2292
2293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2295#[serde(rename_all = "camelCase")]
2296pub struct ToolExecutionCompleteToolDescription {
2297 #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
2299 pub meta: Option<ToolExecutionCompleteToolDescriptionMeta>,
2300 #[serde(skip_serializing_if = "Option::is_none")]
2302 pub description: Option<String>,
2303 pub name: String,
2305}
2306
2307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2309#[serde(rename_all = "camelCase")]
2310pub struct ToolExecutionCompleteData {
2311 #[serde(skip_serializing_if = "Option::is_none")]
2313 pub error: Option<ToolExecutionCompleteError>,
2314 #[serde(skip_serializing_if = "Option::is_none")]
2316 pub interaction_id: Option<String>,
2317 #[serde(skip_serializing_if = "Option::is_none")]
2319 pub is_user_requested: Option<bool>,
2320 #[serde(skip_serializing_if = "Option::is_none")]
2322 pub model: Option<String>,
2323 #[doc(hidden)]
2325 #[deprecated]
2326 #[serde(skip_serializing_if = "Option::is_none")]
2327 pub parent_tool_call_id: Option<String>,
2328 #[serde(skip_serializing_if = "Option::is_none")]
2330 pub result: Option<ToolExecutionCompleteResult>,
2331 #[serde(skip_serializing_if = "Option::is_none")]
2333 pub sandboxed: Option<bool>,
2334 pub success: bool,
2336 pub tool_call_id: String,
2338 #[serde(skip_serializing_if = "Option::is_none")]
2340 pub tool_description: Option<ToolExecutionCompleteToolDescription>,
2341 #[serde(skip_serializing_if = "Option::is_none")]
2343 pub tool_telemetry: Option<HashMap<String, serde_json::Value>>,
2344 #[serde(skip_serializing_if = "Option::is_none")]
2346 pub turn_id: Option<String>,
2347}
2348
2349#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2351#[serde(rename_all = "camelCase")]
2352pub struct SkillInvokedData {
2353 #[serde(skip_serializing_if = "Option::is_none")]
2355 pub allowed_tools: Option<Vec<String>>,
2356 pub content: String,
2358 #[serde(skip_serializing_if = "Option::is_none")]
2360 pub description: Option<String>,
2361 pub name: String,
2363 pub path: String,
2365 #[serde(skip_serializing_if = "Option::is_none")]
2367 pub plugin_name: Option<String>,
2368 #[serde(skip_serializing_if = "Option::is_none")]
2370 pub plugin_version: Option<String>,
2371 #[serde(skip_serializing_if = "Option::is_none")]
2373 pub source: Option<String>,
2374 #[serde(skip_serializing_if = "Option::is_none")]
2376 pub trigger: Option<SkillInvokedTrigger>,
2377}
2378
2379#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2381#[serde(rename_all = "camelCase")]
2382pub struct SubagentStartedData {
2383 pub agent_description: String,
2385 pub agent_display_name: String,
2387 pub agent_name: String,
2389 #[serde(skip_serializing_if = "Option::is_none")]
2391 pub model: Option<String>,
2392 pub tool_call_id: String,
2394}
2395
2396#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2398#[serde(rename_all = "camelCase")]
2399pub struct SubagentCompletedData {
2400 pub agent_display_name: String,
2402 pub agent_name: String,
2404 #[serde(skip_serializing_if = "Option::is_none")]
2406 pub duration_ms: Option<i64>,
2407 #[serde(skip_serializing_if = "Option::is_none")]
2409 pub model: Option<String>,
2410 pub tool_call_id: String,
2412 #[serde(skip_serializing_if = "Option::is_none")]
2414 pub total_tokens: Option<i64>,
2415 #[serde(skip_serializing_if = "Option::is_none")]
2417 pub total_tool_calls: Option<i64>,
2418}
2419
2420#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2422#[serde(rename_all = "camelCase")]
2423pub struct SubagentFailedData {
2424 pub agent_display_name: String,
2426 pub agent_name: String,
2428 #[serde(skip_serializing_if = "Option::is_none")]
2430 pub duration_ms: Option<i64>,
2431 pub error: String,
2433 #[serde(skip_serializing_if = "Option::is_none")]
2435 pub model: Option<String>,
2436 pub tool_call_id: String,
2438 #[serde(skip_serializing_if = "Option::is_none")]
2440 pub total_tokens: Option<i64>,
2441 #[serde(skip_serializing_if = "Option::is_none")]
2443 pub total_tool_calls: Option<i64>,
2444}
2445
2446#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2448#[serde(rename_all = "camelCase")]
2449pub struct SubagentSelectedData {
2450 pub agent_display_name: String,
2452 pub agent_name: String,
2454 pub tools: Option<Vec<String>>,
2456}
2457
2458#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2460#[serde(rename_all = "camelCase")]
2461pub struct SubagentDeselectedData {}
2462
2463#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2465#[serde(rename_all = "camelCase")]
2466pub struct HookStartData {
2467 pub hook_invocation_id: String,
2469 pub hook_type: String,
2471 #[serde(skip_serializing_if = "Option::is_none")]
2473 pub input: Option<serde_json::Value>,
2474}
2475
2476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2478#[serde(rename_all = "camelCase")]
2479pub struct HookEndError {
2480 pub message: String,
2482 #[serde(skip_serializing_if = "Option::is_none")]
2484 pub source: Option<String>,
2485 #[serde(skip_serializing_if = "Option::is_none")]
2487 pub stack: Option<String>,
2488}
2489
2490#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2492#[serde(rename_all = "camelCase")]
2493pub struct HookEndData {
2494 #[serde(skip_serializing_if = "Option::is_none")]
2496 pub error: Option<HookEndError>,
2497 pub hook_invocation_id: String,
2499 pub hook_type: String,
2501 #[serde(skip_serializing_if = "Option::is_none")]
2503 pub output: Option<serde_json::Value>,
2504 pub success: bool,
2506}
2507
2508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2510#[serde(rename_all = "camelCase")]
2511pub struct HookProgressData {
2512 pub message: String,
2514 #[serde(skip_serializing_if = "Option::is_none")]
2516 pub temporary: Option<bool>,
2517}
2518
2519#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2521#[serde(rename_all = "camelCase")]
2522pub struct SessionBinaryAssetData {
2523 pub asset_id: String,
2525 pub byte_length: i64,
2527 pub data: String,
2529 #[serde(skip_serializing_if = "Option::is_none")]
2531 pub description: Option<String>,
2532 #[serde(skip_serializing_if = "Option::is_none")]
2534 pub metadata: Option<HashMap<String, serde_json::Value>>,
2535 pub mime_type: String,
2537 pub r#type: BinaryAssetType,
2539}
2540
2541#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2543#[serde(rename_all = "camelCase")]
2544pub struct SystemMessageMetadata {
2545 #[serde(skip_serializing_if = "Option::is_none")]
2547 pub prompt_version: Option<String>,
2548 #[serde(skip_serializing_if = "Option::is_none")]
2550 pub variables: Option<HashMap<String, serde_json::Value>>,
2551}
2552
2553#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2555#[serde(rename_all = "camelCase")]
2556pub struct SystemMessageData {
2557 pub content: String,
2559 #[serde(skip_serializing_if = "Option::is_none")]
2561 pub metadata: Option<SystemMessageMetadata>,
2562 #[serde(skip_serializing_if = "Option::is_none")]
2564 pub name: Option<String>,
2565 pub role: SystemMessageRole,
2567}
2568
2569#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2571#[serde(rename_all = "camelCase")]
2572pub struct SystemNotificationData {
2573 pub content: String,
2575 pub kind: serde_json::Value,
2577}
2578
2579#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2581#[serde(rename_all = "camelCase")]
2582pub struct PermissionRequestShellCommand {
2583 pub identifier: String,
2585 pub read_only: bool,
2587}
2588
2589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2591#[serde(rename_all = "camelCase")]
2592pub struct PermissionRequestShellPossibleUrl {
2593 pub url: String,
2595}
2596
2597#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2599#[serde(rename_all = "camelCase")]
2600pub struct PermissionRequestShell {
2601 pub can_offer_session_approval: bool,
2603 pub commands: Vec<PermissionRequestShellCommand>,
2605 pub full_command_text: String,
2607 pub has_write_file_redirection: bool,
2609 pub intention: String,
2611 pub kind: PermissionRequestShellKind,
2613 pub possible_paths: Vec<String>,
2615 pub possible_urls: Vec<PermissionRequestShellPossibleUrl>,
2617 #[serde(skip_serializing_if = "Option::is_none")]
2619 pub request_sandbox_bypass: Option<bool>,
2620 #[serde(skip_serializing_if = "Option::is_none")]
2622 pub request_sandbox_bypass_reason: Option<String>,
2623 #[serde(skip_serializing_if = "Option::is_none")]
2625 pub tool_call_id: Option<String>,
2626 #[serde(skip_serializing_if = "Option::is_none")]
2628 pub warning: Option<String>,
2629}
2630
2631#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2633#[serde(rename_all = "camelCase")]
2634pub struct PermissionRequestWrite {
2635 pub can_offer_session_approval: bool,
2637 pub diff: String,
2639 pub file_name: String,
2641 pub intention: String,
2643 pub kind: PermissionRequestWriteKind,
2645 #[serde(skip_serializing_if = "Option::is_none")]
2647 pub new_file_contents: Option<String>,
2648 #[serde(skip_serializing_if = "Option::is_none")]
2650 pub tool_call_id: Option<String>,
2651}
2652
2653#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2655#[serde(rename_all = "camelCase")]
2656pub struct PermissionRequestRead {
2657 pub intention: String,
2659 pub kind: PermissionRequestReadKind,
2661 pub path: String,
2663 #[serde(skip_serializing_if = "Option::is_none")]
2665 pub tool_call_id: Option<String>,
2666}
2667
2668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2670#[serde(rename_all = "camelCase")]
2671pub struct PermissionRequestMcp {
2672 #[serde(skip_serializing_if = "Option::is_none")]
2674 pub args: Option<serde_json::Value>,
2675 pub kind: PermissionRequestMcpKind,
2677 pub read_only: bool,
2679 pub server_name: String,
2681 #[serde(skip_serializing_if = "Option::is_none")]
2683 pub tool_call_id: Option<String>,
2684 pub tool_name: String,
2686 pub tool_title: String,
2688}
2689
2690#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2692#[serde(rename_all = "camelCase")]
2693pub struct PermissionRequestUrl {
2694 pub intention: String,
2696 pub kind: PermissionRequestUrlKind,
2698 #[serde(skip_serializing_if = "Option::is_none")]
2700 pub tool_call_id: Option<String>,
2701 pub url: String,
2703}
2704
2705#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2707#[serde(rename_all = "camelCase")]
2708pub struct PermissionRequestMemory {
2709 #[serde(skip_serializing_if = "Option::is_none")]
2711 pub action: Option<PermissionRequestMemoryAction>,
2712 #[serde(skip_serializing_if = "Option::is_none")]
2714 pub citations: Option<String>,
2715 #[serde(skip_serializing_if = "Option::is_none")]
2717 pub direction: Option<PermissionRequestMemoryDirection>,
2718 pub fact: String,
2720 pub kind: PermissionRequestMemoryKind,
2722 #[serde(skip_serializing_if = "Option::is_none")]
2724 pub reason: Option<String>,
2725 #[serde(skip_serializing_if = "Option::is_none")]
2727 pub subject: Option<String>,
2728 #[serde(skip_serializing_if = "Option::is_none")]
2730 pub tool_call_id: Option<String>,
2731}
2732
2733#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2735#[serde(rename_all = "camelCase")]
2736pub struct PermissionRequestCustomTool {
2737 #[serde(skip_serializing_if = "Option::is_none")]
2739 pub args: Option<serde_json::Value>,
2740 pub kind: PermissionRequestCustomToolKind,
2742 #[serde(skip_serializing_if = "Option::is_none")]
2744 pub tool_call_id: Option<String>,
2745 pub tool_description: String,
2747 pub tool_name: String,
2749}
2750
2751#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2753#[serde(rename_all = "camelCase")]
2754pub struct PermissionRequestHook {
2755 #[serde(skip_serializing_if = "Option::is_none")]
2757 pub hook_message: Option<String>,
2758 pub kind: PermissionRequestHookKind,
2760 #[serde(skip_serializing_if = "Option::is_none")]
2762 pub tool_args: Option<serde_json::Value>,
2763 #[serde(skip_serializing_if = "Option::is_none")]
2765 pub tool_call_id: Option<String>,
2766 pub tool_name: String,
2768}
2769
2770#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2772#[serde(rename_all = "camelCase")]
2773pub struct PermissionRequestExtensionManagement {
2774 #[serde(skip_serializing_if = "Option::is_none")]
2776 pub extension_name: Option<String>,
2777 pub kind: PermissionRequestExtensionManagementKind,
2779 pub operation: String,
2781 #[serde(skip_serializing_if = "Option::is_none")]
2783 pub tool_call_id: Option<String>,
2784}
2785
2786#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2788#[serde(rename_all = "camelCase")]
2789pub struct PermissionRequestExtensionPermissionAccess {
2790 pub capabilities: Vec<String>,
2792 pub extension_name: String,
2794 pub kind: PermissionRequestExtensionPermissionAccessKind,
2796 #[serde(skip_serializing_if = "Option::is_none")]
2798 pub tool_call_id: Option<String>,
2799}
2800
2801#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2803#[serde(rename_all = "camelCase")]
2804pub struct PermissionPromptRequestCommands {
2805 pub can_offer_session_approval: bool,
2807 pub command_identifiers: Vec<String>,
2809 pub full_command_text: String,
2811 pub intention: String,
2813 pub kind: PermissionPromptRequestCommandsKind,
2815 #[serde(skip_serializing_if = "Option::is_none")]
2817 pub tool_call_id: Option<String>,
2818 #[serde(skip_serializing_if = "Option::is_none")]
2820 pub warning: Option<String>,
2821}
2822
2823#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2825#[serde(rename_all = "camelCase")]
2826pub struct PermissionPromptRequestWrite {
2827 pub can_offer_session_approval: bool,
2829 pub diff: String,
2831 pub file_name: String,
2833 pub intention: String,
2835 pub kind: PermissionPromptRequestWriteKind,
2837 #[serde(skip_serializing_if = "Option::is_none")]
2839 pub new_file_contents: Option<String>,
2840 #[serde(skip_serializing_if = "Option::is_none")]
2842 pub tool_call_id: Option<String>,
2843}
2844
2845#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2847#[serde(rename_all = "camelCase")]
2848pub struct PermissionPromptRequestRead {
2849 pub intention: String,
2851 pub kind: PermissionPromptRequestReadKind,
2853 pub path: String,
2855 #[serde(skip_serializing_if = "Option::is_none")]
2857 pub tool_call_id: Option<String>,
2858}
2859
2860#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2862#[serde(rename_all = "camelCase")]
2863pub struct PermissionPromptRequestMcp {
2864 #[serde(skip_serializing_if = "Option::is_none")]
2866 pub args: Option<serde_json::Value>,
2867 pub kind: PermissionPromptRequestMcpKind,
2869 pub server_name: String,
2871 #[serde(skip_serializing_if = "Option::is_none")]
2873 pub tool_call_id: Option<String>,
2874 pub tool_name: String,
2876 pub tool_title: String,
2878}
2879
2880#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2882#[serde(rename_all = "camelCase")]
2883pub struct PermissionPromptRequestUrl {
2884 pub intention: String,
2886 pub kind: PermissionPromptRequestUrlKind,
2888 #[serde(skip_serializing_if = "Option::is_none")]
2890 pub tool_call_id: Option<String>,
2891 pub url: String,
2893}
2894
2895#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2897#[serde(rename_all = "camelCase")]
2898pub struct PermissionPromptRequestMemory {
2899 #[serde(skip_serializing_if = "Option::is_none")]
2901 pub action: Option<PermissionRequestMemoryAction>,
2902 #[serde(skip_serializing_if = "Option::is_none")]
2904 pub citations: Option<String>,
2905 #[serde(skip_serializing_if = "Option::is_none")]
2907 pub direction: Option<PermissionRequestMemoryDirection>,
2908 pub fact: String,
2910 pub kind: PermissionPromptRequestMemoryKind,
2912 #[serde(skip_serializing_if = "Option::is_none")]
2914 pub reason: Option<String>,
2915 #[serde(skip_serializing_if = "Option::is_none")]
2917 pub subject: Option<String>,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2920 pub tool_call_id: Option<String>,
2921}
2922
2923#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2925#[serde(rename_all = "camelCase")]
2926pub struct PermissionPromptRequestCustomTool {
2927 #[serde(skip_serializing_if = "Option::is_none")]
2929 pub args: Option<serde_json::Value>,
2930 pub kind: PermissionPromptRequestCustomToolKind,
2932 #[serde(skip_serializing_if = "Option::is_none")]
2934 pub tool_call_id: Option<String>,
2935 pub tool_description: String,
2937 pub tool_name: String,
2939}
2940
2941#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2943#[serde(rename_all = "camelCase")]
2944pub struct PermissionPromptRequestPath {
2945 pub access_kind: PermissionPromptRequestPathAccessKind,
2947 pub kind: PermissionPromptRequestPathKind,
2949 pub paths: Vec<String>,
2951 #[serde(skip_serializing_if = "Option::is_none")]
2953 pub tool_call_id: Option<String>,
2954}
2955
2956#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2958#[serde(rename_all = "camelCase")]
2959pub struct PermissionPromptRequestHook {
2960 #[serde(skip_serializing_if = "Option::is_none")]
2962 pub hook_message: Option<String>,
2963 pub kind: PermissionPromptRequestHookKind,
2965 #[serde(skip_serializing_if = "Option::is_none")]
2967 pub tool_args: Option<serde_json::Value>,
2968 #[serde(skip_serializing_if = "Option::is_none")]
2970 pub tool_call_id: Option<String>,
2971 pub tool_name: String,
2973}
2974
2975#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2977#[serde(rename_all = "camelCase")]
2978pub struct PermissionPromptRequestExtensionManagement {
2979 #[serde(skip_serializing_if = "Option::is_none")]
2981 pub extension_name: Option<String>,
2982 pub kind: PermissionPromptRequestExtensionManagementKind,
2984 pub operation: String,
2986 #[serde(skip_serializing_if = "Option::is_none")]
2988 pub tool_call_id: Option<String>,
2989}
2990
2991#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2993#[serde(rename_all = "camelCase")]
2994pub struct PermissionPromptRequestExtensionPermissionAccess {
2995 pub capabilities: Vec<String>,
2997 pub extension_name: String,
2999 pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
3001 #[serde(skip_serializing_if = "Option::is_none")]
3003 pub tool_call_id: Option<String>,
3004}
3005
3006#[derive(Debug, Clone, Serialize, Deserialize)]
3008#[serde(rename_all = "camelCase")]
3009pub struct PermissionRequestedData {
3010 pub permission_request: PermissionRequest,
3012 #[serde(skip_serializing_if = "Option::is_none")]
3014 pub prompt_request: Option<PermissionPromptRequest>,
3015 pub request_id: RequestId,
3017 #[serde(skip_serializing_if = "Option::is_none")]
3019 pub resolved_by_hook: Option<bool>,
3020}
3021
3022#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3024#[serde(rename_all = "camelCase")]
3025pub struct PermissionApproved {
3026 pub kind: PermissionApprovedKind,
3028}
3029
3030#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3032#[serde(rename_all = "camelCase")]
3033pub struct UserToolSessionApprovalCommands {
3034 pub command_identifiers: Vec<String>,
3036 pub kind: UserToolSessionApprovalCommandsKind,
3038}
3039
3040#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3042#[serde(rename_all = "camelCase")]
3043pub struct UserToolSessionApprovalRead {
3044 pub kind: UserToolSessionApprovalReadKind,
3046}
3047
3048#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3050#[serde(rename_all = "camelCase")]
3051pub struct UserToolSessionApprovalWrite {
3052 pub kind: UserToolSessionApprovalWriteKind,
3054}
3055
3056#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3058#[serde(rename_all = "camelCase")]
3059pub struct UserToolSessionApprovalMcp {
3060 pub kind: UserToolSessionApprovalMcpKind,
3062 pub server_name: String,
3064 pub tool_name: Option<String>,
3066}
3067
3068#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3070#[serde(rename_all = "camelCase")]
3071pub struct UserToolSessionApprovalMemory {
3072 pub kind: UserToolSessionApprovalMemoryKind,
3074}
3075
3076#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3078#[serde(rename_all = "camelCase")]
3079pub struct UserToolSessionApprovalCustomTool {
3080 pub kind: UserToolSessionApprovalCustomToolKind,
3082 pub tool_name: String,
3084}
3085
3086#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3088#[serde(rename_all = "camelCase")]
3089pub struct UserToolSessionApprovalExtensionManagement {
3090 pub kind: UserToolSessionApprovalExtensionManagementKind,
3092 #[serde(skip_serializing_if = "Option::is_none")]
3094 pub operation: Option<String>,
3095}
3096
3097#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3099#[serde(rename_all = "camelCase")]
3100pub struct UserToolSessionApprovalExtensionPermissionAccess {
3101 pub extension_name: String,
3103 pub kind: UserToolSessionApprovalExtensionPermissionAccessKind,
3105}
3106
3107#[derive(Debug, Clone, Serialize, Deserialize)]
3109#[serde(rename_all = "camelCase")]
3110pub struct PermissionApprovedForSession {
3111 pub approval: UserToolSessionApproval,
3113 pub kind: PermissionApprovedForSessionKind,
3115}
3116
3117#[derive(Debug, Clone, Serialize, Deserialize)]
3119#[serde(rename_all = "camelCase")]
3120pub struct PermissionApprovedForLocation {
3121 pub approval: UserToolSessionApproval,
3123 pub kind: PermissionApprovedForLocationKind,
3125 pub location_key: String,
3127}
3128
3129#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3131#[serde(rename_all = "camelCase")]
3132pub struct PermissionCancelled {
3133 pub kind: PermissionCancelledKind,
3135 #[serde(skip_serializing_if = "Option::is_none")]
3137 pub reason: Option<String>,
3138}
3139
3140#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3142#[serde(rename_all = "camelCase")]
3143pub struct PermissionRule {
3144 pub argument: Option<String>,
3146 pub kind: String,
3148}
3149
3150#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3152#[serde(rename_all = "camelCase")]
3153pub struct PermissionDeniedByRules {
3154 pub kind: PermissionDeniedByRulesKind,
3156 pub rules: Vec<PermissionRule>,
3158}
3159
3160#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3162#[serde(rename_all = "camelCase")]
3163pub struct PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser {
3164 pub kind: PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind,
3166}
3167
3168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3170#[serde(rename_all = "camelCase")]
3171pub struct PermissionDeniedInteractivelyByUser {
3172 #[serde(skip_serializing_if = "Option::is_none")]
3174 pub feedback: Option<String>,
3175 #[serde(skip_serializing_if = "Option::is_none")]
3177 pub force_reject: Option<bool>,
3178 pub kind: PermissionDeniedInteractivelyByUserKind,
3180}
3181
3182#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3184#[serde(rename_all = "camelCase")]
3185pub struct PermissionDeniedByContentExclusionPolicy {
3186 pub kind: PermissionDeniedByContentExclusionPolicyKind,
3188 pub message: String,
3190 pub path: String,
3192}
3193
3194#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3196#[serde(rename_all = "camelCase")]
3197pub struct PermissionDeniedByPermissionRequestHook {
3198 #[serde(skip_serializing_if = "Option::is_none")]
3200 pub interrupt: Option<bool>,
3201 pub kind: PermissionDeniedByPermissionRequestHookKind,
3203 #[serde(skip_serializing_if = "Option::is_none")]
3205 pub message: Option<String>,
3206}
3207
3208#[derive(Debug, Clone, Serialize, Deserialize)]
3210#[serde(rename_all = "camelCase")]
3211pub struct PermissionCompletedData {
3212 pub request_id: RequestId,
3214 pub result: PermissionResult,
3216 #[serde(skip_serializing_if = "Option::is_none")]
3218 pub tool_call_id: Option<String>,
3219}
3220
3221#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3223#[serde(rename_all = "camelCase")]
3224pub struct UserInputRequestedData {
3225 #[serde(skip_serializing_if = "Option::is_none")]
3227 pub allow_freeform: Option<bool>,
3228 #[serde(skip_serializing_if = "Option::is_none")]
3230 pub choices: Option<Vec<String>>,
3231 pub question: String,
3233 pub request_id: RequestId,
3235 #[serde(skip_serializing_if = "Option::is_none")]
3237 pub tool_call_id: Option<String>,
3238}
3239
3240#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3242#[serde(rename_all = "camelCase")]
3243pub struct UserInputCompletedData {
3244 #[serde(skip_serializing_if = "Option::is_none")]
3246 pub answer: Option<String>,
3247 pub request_id: RequestId,
3249 #[serde(skip_serializing_if = "Option::is_none")]
3251 pub was_freeform: Option<bool>,
3252}
3253
3254#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3256#[serde(rename_all = "camelCase")]
3257pub struct ElicitationRequestedSchema {
3258 pub properties: HashMap<String, serde_json::Value>,
3260 #[serde(skip_serializing_if = "Option::is_none")]
3262 pub required: Option<Vec<String>>,
3263 pub r#type: ElicitationRequestedSchemaType,
3265}
3266
3267#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3269#[serde(rename_all = "camelCase")]
3270pub struct ElicitationRequestedData {
3271 #[serde(skip_serializing_if = "Option::is_none")]
3273 pub elicitation_source: Option<String>,
3274 pub message: String,
3276 #[serde(skip_serializing_if = "Option::is_none")]
3278 pub mode: Option<ElicitationRequestedMode>,
3279 #[serde(skip_serializing_if = "Option::is_none")]
3281 pub requested_schema: Option<ElicitationRequestedSchema>,
3282 pub request_id: RequestId,
3284 #[serde(skip_serializing_if = "Option::is_none")]
3286 pub tool_call_id: Option<String>,
3287 #[serde(skip_serializing_if = "Option::is_none")]
3289 pub url: Option<String>,
3290}
3291
3292#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3294#[serde(rename_all = "camelCase")]
3295pub struct ElicitationCompletedData {
3296 #[serde(skip_serializing_if = "Option::is_none")]
3298 pub action: Option<ElicitationCompletedAction>,
3299 #[serde(skip_serializing_if = "Option::is_none")]
3301 pub content: Option<HashMap<String, serde_json::Value>>,
3302 pub request_id: RequestId,
3304}
3305
3306#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3308#[serde(rename_all = "camelCase")]
3309pub struct SamplingRequestedData {
3310 pub mcp_request_id: serde_json::Value,
3312 pub request_id: RequestId,
3314 pub server_name: String,
3316}
3317
3318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3320#[serde(rename_all = "camelCase")]
3321pub struct SamplingCompletedData {
3322 pub request_id: RequestId,
3324}
3325
3326#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3328#[serde(rename_all = "camelCase")]
3329pub struct McpOauthRequiredStaticClientConfig {
3330 pub client_id: String,
3332 #[serde(skip_serializing_if = "Option::is_none")]
3334 pub client_secret: Option<String>,
3335 #[serde(skip_serializing_if = "Option::is_none")]
3337 pub grant_type: Option<McpOauthRequiredStaticClientConfigGrantType>,
3338 #[serde(skip_serializing_if = "Option::is_none")]
3340 pub public_client: Option<bool>,
3341}
3342
3343#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3345#[serde(rename_all = "camelCase")]
3346pub struct McpOauthWWWAuthenticateParams {
3347 #[serde(skip_serializing_if = "Option::is_none")]
3349 pub error: Option<String>,
3350 #[serde(skip_serializing_if = "Option::is_none")]
3352 pub resource_metadata_url: Option<String>,
3353 #[serde(skip_serializing_if = "Option::is_none")]
3355 pub scope: Option<String>,
3356}
3357
3358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3360#[serde(rename_all = "camelCase")]
3361pub struct McpOauthRequiredData {
3362 pub reason: McpOauthRequestReason,
3364 pub request_id: RequestId,
3366 #[serde(skip_serializing_if = "Option::is_none")]
3368 pub resource_metadata: Option<String>,
3369 pub server_name: String,
3371 pub server_url: String,
3373 #[serde(skip_serializing_if = "Option::is_none")]
3375 pub static_client_config: Option<McpOauthRequiredStaticClientConfig>,
3376 #[serde(skip_serializing_if = "Option::is_none")]
3378 pub www_authenticate_params: Option<McpOauthWWWAuthenticateParams>,
3379}
3380
3381#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3383#[serde(rename_all = "camelCase")]
3384pub struct McpOauthCompletedData {
3385 pub outcome: McpOauthCompletionOutcome,
3387 pub request_id: RequestId,
3389}
3390
3391#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3393#[serde(rename_all = "camelCase")]
3394pub struct McpHeadersRefreshRequiredData {
3395 pub reason: McpHeadersRefreshRequiredReason,
3397 pub request_id: RequestId,
3399 pub server_name: String,
3401 pub server_url: String,
3403}
3404
3405#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3407#[serde(rename_all = "camelCase")]
3408pub struct McpHeadersRefreshCompletedData {
3409 pub outcome: McpHeadersRefreshCompletedOutcome,
3411 pub request_id: RequestId,
3413}
3414
3415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3417#[serde(rename_all = "camelCase")]
3418pub struct SessionCustomNotificationData {
3419 pub name: String,
3421 pub payload: serde_json::Value,
3423 pub source: String,
3425 #[serde(skip_serializing_if = "Option::is_none")]
3427 pub subject: Option<HashMap<String, String>>,
3428 #[serde(skip_serializing_if = "Option::is_none")]
3430 pub version: Option<i64>,
3431}
3432
3433#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3435#[serde(rename_all = "camelCase")]
3436pub struct ExternalToolRequestedData {
3437 #[serde(skip_serializing_if = "Option::is_none")]
3439 pub arguments: Option<serde_json::Value>,
3440 pub request_id: RequestId,
3442 pub session_id: SessionId,
3444 pub tool_call_id: String,
3446 pub tool_name: String,
3448 #[serde(skip_serializing_if = "Option::is_none")]
3450 pub traceparent: Option<String>,
3451 #[serde(skip_serializing_if = "Option::is_none")]
3453 pub tracestate: Option<String>,
3454 #[serde(skip_serializing_if = "Option::is_none")]
3456 pub working_directory: Option<String>,
3457}
3458
3459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3461#[serde(rename_all = "camelCase")]
3462pub struct ExternalToolCompletedData {
3463 pub request_id: RequestId,
3465}
3466
3467#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3469#[serde(rename_all = "camelCase")]
3470pub struct CommandQueuedData {
3471 pub command: String,
3473 pub request_id: RequestId,
3475}
3476
3477#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3479#[serde(rename_all = "camelCase")]
3480pub struct CommandExecuteData {
3481 pub args: String,
3483 pub command: String,
3485 pub command_name: String,
3487 pub request_id: RequestId,
3489}
3490
3491#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3493#[serde(rename_all = "camelCase")]
3494pub struct CommandCompletedData {
3495 pub request_id: RequestId,
3497}
3498
3499#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3501#[serde(rename_all = "camelCase")]
3502pub struct AutoModeSwitchRequestedData {
3503 #[serde(skip_serializing_if = "Option::is_none")]
3505 pub error_code: Option<String>,
3506 pub request_id: RequestId,
3508 #[serde(skip_serializing_if = "Option::is_none")]
3510 pub retry_after_seconds: Option<i64>,
3511}
3512
3513#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3515#[serde(rename_all = "camelCase")]
3516pub struct AutoModeSwitchCompletedData {
3517 pub request_id: RequestId,
3519 pub response: AutoModeSwitchResponse,
3521}
3522
3523#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3525#[serde(rename_all = "camelCase")]
3526pub struct CommandsChangedCommand {
3527 #[serde(skip_serializing_if = "Option::is_none")]
3529 pub description: Option<String>,
3530 pub name: String,
3532}
3533
3534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3536#[serde(rename_all = "camelCase")]
3537pub struct CommandsChangedData {
3538 pub commands: Vec<CommandsChangedCommand>,
3540}
3541
3542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3544#[serde(rename_all = "camelCase")]
3545pub struct CapabilitiesChangedUI {
3546 #[serde(skip_serializing_if = "Option::is_none")]
3548 pub canvases: Option<bool>,
3549 #[serde(skip_serializing_if = "Option::is_none")]
3551 pub elicitation: Option<bool>,
3552 #[serde(skip_serializing_if = "Option::is_none")]
3554 pub mcp_apps: Option<bool>,
3555}
3556
3557#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3559#[serde(rename_all = "camelCase")]
3560pub struct CapabilitiesChangedData {
3561 #[serde(skip_serializing_if = "Option::is_none")]
3563 pub ui: Option<CapabilitiesChangedUI>,
3564}
3565
3566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3568#[serde(rename_all = "camelCase")]
3569pub struct ExitPlanModeRequestedData {
3570 pub actions: Vec<ExitPlanModeAction>,
3572 pub plan_content: String,
3574 pub recommended_action: ExitPlanModeAction,
3576 pub request_id: RequestId,
3578 pub summary: String,
3580}
3581
3582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3584#[serde(rename_all = "camelCase")]
3585pub struct ExitPlanModeCompletedData {
3586 #[serde(skip_serializing_if = "Option::is_none")]
3588 pub approved: Option<bool>,
3589 #[serde(skip_serializing_if = "Option::is_none")]
3591 pub auto_approve_edits: Option<bool>,
3592 #[serde(skip_serializing_if = "Option::is_none")]
3594 pub feedback: Option<String>,
3595 pub request_id: RequestId,
3597 #[serde(skip_serializing_if = "Option::is_none")]
3599 pub selected_action: Option<ExitPlanModeAction>,
3600}
3601
3602#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3604#[serde(rename_all = "camelCase")]
3605pub struct SessionToolsUpdatedData {
3606 pub model: String,
3608}
3609
3610#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3612#[serde(rename_all = "camelCase")]
3613pub struct SessionBackgroundTasksChangedData {}
3614
3615#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3617#[serde(rename_all = "camelCase")]
3618pub struct SkillsLoadedSkill {
3619 #[serde(skip_serializing_if = "Option::is_none")]
3621 pub argument_hint: Option<String>,
3622 pub description: String,
3624 pub enabled: bool,
3626 pub name: String,
3628 #[serde(skip_serializing_if = "Option::is_none")]
3630 pub path: Option<String>,
3631 pub source: SkillSource,
3633 pub user_invocable: bool,
3635}
3636
3637#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3639#[serde(rename_all = "camelCase")]
3640pub struct SessionSkillsLoadedData {
3641 pub skills: Vec<SkillsLoadedSkill>,
3643}
3644
3645#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3647#[serde(rename_all = "camelCase")]
3648pub struct CustomAgentsUpdatedAgent {
3649 pub description: String,
3651 pub display_name: String,
3653 pub id: String,
3655 #[serde(skip_serializing_if = "Option::is_none")]
3657 pub model: Option<String>,
3658 pub name: String,
3660 pub source: String,
3662 pub tools: Option<Vec<String>>,
3664 pub user_invocable: bool,
3666}
3667
3668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3670#[serde(rename_all = "camelCase")]
3671pub struct SessionCustomAgentsUpdatedData {
3672 pub agents: Vec<CustomAgentsUpdatedAgent>,
3674 pub errors: Vec<String>,
3676 pub warnings: Vec<String>,
3678}
3679
3680#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3682#[serde(rename_all = "camelCase")]
3683pub struct McpServersLoadedServer {
3684 #[serde(skip_serializing_if = "Option::is_none")]
3686 pub error: Option<String>,
3687 pub name: String,
3689 #[serde(skip_serializing_if = "Option::is_none")]
3691 pub plugin_name: Option<String>,
3692 #[serde(skip_serializing_if = "Option::is_none")]
3694 pub plugin_version: Option<String>,
3695 #[serde(skip_serializing_if = "Option::is_none")]
3697 pub source: Option<McpServerSource>,
3698 pub status: McpServerStatus,
3700 #[serde(skip_serializing_if = "Option::is_none")]
3702 pub transport: Option<McpServerTransport>,
3703}
3704
3705#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3707#[serde(rename_all = "camelCase")]
3708pub struct SessionMcpServersLoadedData {
3709 pub servers: Vec<McpServersLoadedServer>,
3711}
3712
3713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3715#[serde(rename_all = "camelCase")]
3716pub struct SessionMcpServerStatusChangedData {
3717 #[serde(skip_serializing_if = "Option::is_none")]
3719 pub error: Option<String>,
3720 pub server_name: String,
3722 pub status: McpServerStatus,
3724}
3725
3726#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3728#[serde(rename_all = "camelCase")]
3729pub struct ExtensionsLoadedExtension {
3730 pub id: String,
3732 pub name: String,
3734 pub source: ExtensionsLoadedExtensionSource,
3736 pub status: ExtensionsLoadedExtensionStatus,
3738}
3739
3740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3742#[serde(rename_all = "camelCase")]
3743pub struct SessionExtensionsLoadedData {
3744 pub extensions: Vec<ExtensionsLoadedExtension>,
3746}
3747
3748#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3757#[serde(rename_all = "camelCase")]
3758pub struct SessionCanvasOpenedData {
3759 pub canvas_id: String,
3761 pub extension_id: String,
3763 #[serde(skip_serializing_if = "Option::is_none")]
3765 pub extension_name: Option<String>,
3766 #[serde(skip_serializing_if = "Option::is_none")]
3768 pub input: Option<serde_json::Value>,
3769 pub instance_id: String,
3771 #[serde(skip_serializing_if = "Option::is_none")]
3773 pub status: Option<String>,
3774 #[serde(skip_serializing_if = "Option::is_none")]
3776 pub title: Option<String>,
3777 #[serde(skip_serializing_if = "Option::is_none")]
3779 pub url: Option<String>,
3780}
3781
3782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3791#[serde(rename_all = "camelCase")]
3792pub struct CanvasRegistryChangedCanvasAction {
3793 #[serde(skip_serializing_if = "Option::is_none")]
3795 pub description: Option<String>,
3796 #[serde(skip_serializing_if = "Option::is_none")]
3798 pub input_schema: Option<serde_json::Value>,
3799 pub name: String,
3801}
3802
3803#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3812#[serde(rename_all = "camelCase")]
3813pub struct CanvasRegistryChangedCanvas {
3814 #[serde(skip_serializing_if = "Option::is_none")]
3816 pub actions: Option<Vec<CanvasRegistryChangedCanvasAction>>,
3817 pub canvas_id: String,
3819 pub description: String,
3821 pub display_name: String,
3823 pub extension_id: String,
3825 #[serde(skip_serializing_if = "Option::is_none")]
3827 pub extension_name: Option<String>,
3828 #[serde(skip_serializing_if = "Option::is_none")]
3830 pub input_schema: Option<serde_json::Value>,
3831}
3832
3833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3842#[serde(rename_all = "camelCase")]
3843pub struct SessionCanvasRegistryChangedData {
3844 pub canvases: Vec<CanvasRegistryChangedCanvas>,
3846}
3847
3848#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3857#[serde(rename_all = "camelCase")]
3858pub struct SessionCanvasClosedData {
3859 pub canvas_id: String,
3861 pub extension_id: String,
3863 pub instance_id: String,
3865}
3866
3867#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3876#[serde(rename_all = "camelCase")]
3877pub struct SessionCanvasUnavailableData {
3878 pub canvas_id: String,
3880 pub extension_id: String,
3882 pub instance_id: String,
3884}
3885
3886#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3895#[serde(rename_all = "camelCase")]
3896pub struct SessionCanvasRecordedData {
3897 pub canvas_id: String,
3899 pub extension_id: String,
3901 #[serde(skip_serializing_if = "Option::is_none")]
3903 pub input: Option<serde_json::Value>,
3904 pub instance_id: String,
3906 #[serde(skip_serializing_if = "Option::is_none")]
3908 pub title: Option<String>,
3909}
3910
3911#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3920#[serde(rename_all = "camelCase")]
3921pub struct SessionCanvasRemovedData {
3922 pub canvas_id: String,
3924 pub extension_id: String,
3926 pub instance_id: String,
3928}
3929
3930#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3932#[serde(rename_all = "camelCase")]
3933pub struct SessionExtensionsAttachmentsPushedData {
3934 pub attachments: Vec<serde_json::Value>,
3936}
3937
3938#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3940#[serde(rename_all = "camelCase")]
3941pub struct McpAppToolCallCompleteError {
3942 pub message: String,
3944}
3945
3946#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3948#[serde(rename_all = "camelCase")]
3949pub struct McpAppToolCallCompleteToolMetaUI {
3950 #[serde(skip_serializing_if = "Option::is_none")]
3952 pub resource_uri: Option<String>,
3953 #[serde(skip_serializing_if = "Option::is_none")]
3955 pub visibility: Option<Vec<String>>,
3956}
3957
3958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3960#[serde(rename_all = "camelCase")]
3961pub struct McpAppToolCallCompleteToolMeta {
3962 #[serde(skip_serializing_if = "Option::is_none")]
3964 pub ui: Option<McpAppToolCallCompleteToolMetaUI>,
3965}
3966
3967#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3969#[serde(rename_all = "camelCase")]
3970pub struct McpAppToolCallCompleteData {
3971 #[serde(skip_serializing_if = "Option::is_none")]
3973 pub arguments: Option<HashMap<String, serde_json::Value>>,
3974 pub duration_ms: f64,
3976 #[serde(skip_serializing_if = "Option::is_none")]
3978 pub error: Option<McpAppToolCallCompleteError>,
3979 #[serde(skip_serializing_if = "Option::is_none")]
3981 pub result: Option<HashMap<String, serde_json::Value>>,
3982 pub server_name: String,
3984 pub success: bool,
3986 #[serde(skip_serializing_if = "Option::is_none")]
3988 pub tool_meta: Option<McpAppToolCallCompleteToolMeta>,
3989 pub tool_name: String,
3991}
3992
3993#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
3995pub enum WorkingDirectoryContextHostType {
3996 #[serde(rename = "github")]
3998 GitHub,
3999 #[serde(rename = "ado")]
4001 Ado,
4002 #[default]
4004 #[serde(other)]
4005 Unknown,
4006}
4007
4008#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4010pub enum ContextTier {
4011 #[serde(rename = "default")]
4013 Default,
4014 #[serde(rename = "long_context")]
4016 LongContext,
4017 #[default]
4019 #[serde(other)]
4020 Unknown,
4021}
4022
4023#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4025pub enum ReasoningSummary {
4026 #[serde(rename = "none")]
4028 None,
4029 #[serde(rename = "concise")]
4031 Concise,
4032 #[serde(rename = "detailed")]
4034 Detailed,
4035 #[default]
4037 #[serde(other)]
4038 Unknown,
4039}
4040
4041#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4043pub enum AutopilotObjectiveChangedOperation {
4044 #[serde(rename = "create")]
4046 Create,
4047 #[serde(rename = "update")]
4049 Update,
4050 #[serde(rename = "delete")]
4052 Delete,
4053 #[default]
4055 #[serde(other)]
4056 Unknown,
4057}
4058
4059#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4061pub enum AutopilotObjectiveChangedStatus {
4062 #[serde(rename = "active")]
4064 Active,
4065 #[serde(rename = "paused")]
4067 Paused,
4068 #[serde(rename = "cap_reached")]
4070 CapReached,
4071 #[serde(rename = "completed")]
4073 Completed,
4074 #[default]
4076 #[serde(other)]
4077 Unknown,
4078}
4079
4080#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4082pub enum SessionMode {
4083 #[serde(rename = "interactive")]
4085 Interactive,
4086 #[serde(rename = "plan")]
4088 Plan,
4089 #[serde(rename = "autopilot")]
4091 Autopilot,
4092 #[default]
4094 #[serde(other)]
4095 Unknown,
4096}
4097
4098#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4100pub enum PlanChangedOperation {
4101 #[serde(rename = "create")]
4103 Create,
4104 #[serde(rename = "update")]
4106 Update,
4107 #[serde(rename = "delete")]
4109 Delete,
4110 #[default]
4112 #[serde(other)]
4113 Unknown,
4114}
4115
4116#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4118pub enum WorkspaceFileChangedOperation {
4119 #[serde(rename = "create")]
4121 Create,
4122 #[serde(rename = "update")]
4124 Update,
4125 #[default]
4127 #[serde(other)]
4128 Unknown,
4129}
4130
4131#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4133pub enum HandoffSourceType {
4134 #[serde(rename = "remote")]
4136 Remote,
4137 #[serde(rename = "local")]
4139 Local,
4140 #[default]
4142 #[serde(other)]
4143 Unknown,
4144}
4145
4146#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4148pub enum ShutdownType {
4149 #[serde(rename = "routine")]
4151 Routine,
4152 #[serde(rename = "error")]
4154 Error,
4155 #[default]
4157 #[serde(other)]
4158 Unknown,
4159}
4160
4161#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4163pub enum UserMessageAgentMode {
4164 #[serde(rename = "interactive")]
4166 Interactive,
4167 #[serde(rename = "plan")]
4169 Plan,
4170 #[serde(rename = "autopilot")]
4172 Autopilot,
4173 #[serde(rename = "shell")]
4175 Shell,
4176 #[default]
4178 #[serde(other)]
4179 Unknown,
4180}
4181
4182#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4184pub enum UserMessageDelivery {
4185 #[serde(rename = "idle")]
4187 Idle,
4188 #[serde(rename = "steering")]
4190 Steering,
4191 #[serde(rename = "queued")]
4193 Queued,
4194 #[default]
4196 #[serde(other)]
4197 Unknown,
4198}
4199
4200#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4209pub enum CitationProvider {
4210 #[serde(rename = "anthropic")]
4212 Anthropic,
4213 #[serde(rename = "openai")]
4215 Openai,
4216 #[serde(rename = "client")]
4218 Client,
4219 #[default]
4221 #[serde(other)]
4222 Unknown,
4223}
4224
4225#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4227pub enum AssistantMessageToolRequestType {
4228 #[serde(rename = "function")]
4230 Function,
4231 #[serde(rename = "custom")]
4233 Custom,
4234 #[default]
4236 #[serde(other)]
4237 Unknown,
4238}
4239
4240#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4242pub enum AssistantUsageApiEndpoint {
4243 #[serde(rename = "/chat/completions")]
4245 ChatCompletions,
4246 #[serde(rename = "/v1/messages")]
4248 V1Messages,
4249 #[serde(rename = "/responses")]
4251 Responses,
4252 #[serde(rename = "ws:/responses")]
4254 WsResponses,
4255 #[default]
4257 #[serde(other)]
4258 Unknown,
4259}
4260
4261#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4263pub enum ModelCallFailureBadRequestKind {
4264 #[serde(rename = "bodyless")]
4266 Bodyless,
4267 #[serde(rename = "structured_error")]
4269 StructuredError,
4270 #[default]
4272 #[serde(other)]
4273 Unknown,
4274}
4275
4276#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4278pub enum ModelCallFailureSource {
4279 #[serde(rename = "top_level")]
4281 TopLevel,
4282 #[serde(rename = "subagent")]
4284 Subagent,
4285 #[serde(rename = "mcp_sampling")]
4287 McpSampling,
4288 #[default]
4290 #[serde(other)]
4291 Unknown,
4292}
4293
4294#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4296pub enum AbortReason {
4297 #[serde(rename = "user_initiated")]
4299 UserInitiated,
4300 #[serde(rename = "remote_command")]
4302 RemoteCommand,
4303 #[serde(rename = "user_abort")]
4305 UserAbort,
4306 #[default]
4308 #[serde(other)]
4309 Unknown,
4310}
4311
4312#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4314pub enum ToolExecutionStartToolDescriptionMetaUIVisibility {
4315 #[serde(rename = "model")]
4317 Model,
4318 #[serde(rename = "app")]
4320 App,
4321 #[default]
4323 #[serde(other)]
4324 Unknown,
4325}
4326
4327#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4329pub enum ToolExecutionCompleteContentTextType {
4330 #[serde(rename = "text")]
4331 #[default]
4332 Text,
4333}
4334
4335#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4337pub enum ToolExecutionCompleteContentTerminalType {
4338 #[serde(rename = "terminal")]
4339 #[default]
4340 Terminal,
4341}
4342
4343#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4345pub enum ToolExecutionCompleteContentImageType {
4346 #[serde(rename = "image")]
4347 #[default]
4348 Image,
4349}
4350
4351#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4353pub enum ToolExecutionCompleteContentAudioType {
4354 #[serde(rename = "audio")]
4355 #[default]
4356 Audio,
4357}
4358
4359#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4361pub enum ToolExecutionCompleteContentResourceLinkIconTheme {
4362 #[serde(rename = "light")]
4364 Light,
4365 #[serde(rename = "dark")]
4367 Dark,
4368 #[default]
4370 #[serde(other)]
4371 Unknown,
4372}
4373
4374#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4376pub enum ToolExecutionCompleteContentResourceLinkType {
4377 #[serde(rename = "resource_link")]
4378 #[default]
4379 ResourceLink,
4380}
4381
4382#[derive(Debug, Clone, Serialize, Deserialize)]
4384#[serde(untagged)]
4385pub enum ToolExecutionCompleteContentResourceDetails {
4386 EmbeddedTextResourceContents(EmbeddedTextResourceContents),
4387 EmbeddedBlobResourceContents(EmbeddedBlobResourceContents),
4388}
4389
4390#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4392pub enum ToolExecutionCompleteContentResourceType {
4393 #[serde(rename = "resource")]
4394 #[default]
4395 Resource,
4396}
4397
4398#[derive(Debug, Clone, Serialize, Deserialize)]
4400#[serde(untagged)]
4401pub enum ToolExecutionCompleteContent {
4402 Text(ToolExecutionCompleteContentText),
4403 Terminal(ToolExecutionCompleteContentTerminal),
4404 Image(ToolExecutionCompleteContentImage),
4405 Audio(ToolExecutionCompleteContentAudio),
4406 ResourceLink(ToolExecutionCompleteContentResourceLink),
4407 Resource(ToolExecutionCompleteContentResource),
4408}
4409
4410#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4412pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility {
4413 #[serde(rename = "model")]
4415 Model,
4416 #[serde(rename = "app")]
4418 App,
4419 #[default]
4421 #[serde(other)]
4422 Unknown,
4423}
4424
4425#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4427pub enum SkillInvokedTrigger {
4428 #[serde(rename = "user-invoked")]
4430 UserInvoked,
4431 #[serde(rename = "agent-invoked")]
4433 AgentInvoked,
4434 #[serde(rename = "context-load")]
4436 ContextLoad,
4437 #[default]
4439 #[serde(other)]
4440 Unknown,
4441}
4442
4443#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4445pub enum BinaryAssetType {
4446 #[serde(rename = "image")]
4448 Image,
4449 #[serde(rename = "resource")]
4451 Resource,
4452 #[default]
4454 #[serde(other)]
4455 Unknown,
4456}
4457
4458#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4460pub enum SystemMessageRole {
4461 #[serde(rename = "system")]
4463 System,
4464 #[serde(rename = "developer")]
4466 Developer,
4467 #[default]
4469 #[serde(other)]
4470 Unknown,
4471}
4472
4473#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4475pub enum PermissionRequestShellKind {
4476 #[serde(rename = "shell")]
4477 #[default]
4478 Shell,
4479}
4480
4481#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4483pub enum PermissionRequestWriteKind {
4484 #[serde(rename = "write")]
4485 #[default]
4486 Write,
4487}
4488
4489#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4491pub enum PermissionRequestReadKind {
4492 #[serde(rename = "read")]
4493 #[default]
4494 Read,
4495}
4496
4497#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4499pub enum PermissionRequestMcpKind {
4500 #[serde(rename = "mcp")]
4501 #[default]
4502 Mcp,
4503}
4504
4505#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4507pub enum PermissionRequestUrlKind {
4508 #[serde(rename = "url")]
4509 #[default]
4510 Url,
4511}
4512
4513#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4515pub enum PermissionRequestMemoryAction {
4516 #[serde(rename = "store")]
4518 Store,
4519 #[serde(rename = "vote")]
4521 Vote,
4522 #[default]
4524 #[serde(other)]
4525 Unknown,
4526}
4527
4528#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4530pub enum PermissionRequestMemoryDirection {
4531 #[serde(rename = "upvote")]
4533 Upvote,
4534 #[serde(rename = "downvote")]
4536 Downvote,
4537 #[default]
4539 #[serde(other)]
4540 Unknown,
4541}
4542
4543#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4545pub enum PermissionRequestMemoryKind {
4546 #[serde(rename = "memory")]
4547 #[default]
4548 Memory,
4549}
4550
4551#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4553pub enum PermissionRequestCustomToolKind {
4554 #[serde(rename = "custom-tool")]
4555 #[default]
4556 CustomTool,
4557}
4558
4559#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4561pub enum PermissionRequestHookKind {
4562 #[serde(rename = "hook")]
4563 #[default]
4564 Hook,
4565}
4566
4567#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4569pub enum PermissionRequestExtensionManagementKind {
4570 #[serde(rename = "extension-management")]
4571 #[default]
4572 ExtensionManagement,
4573}
4574
4575#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4577pub enum PermissionRequestExtensionPermissionAccessKind {
4578 #[serde(rename = "extension-permission-access")]
4579 #[default]
4580 ExtensionPermissionAccess,
4581}
4582
4583#[derive(Debug, Clone, Serialize, Deserialize)]
4585#[serde(untagged)]
4586pub enum PermissionRequest {
4587 Shell(PermissionRequestShell),
4588 Write(PermissionRequestWrite),
4589 Read(PermissionRequestRead),
4590 Mcp(PermissionRequestMcp),
4591 Url(PermissionRequestUrl),
4592 Memory(PermissionRequestMemory),
4593 CustomTool(PermissionRequestCustomTool),
4594 Hook(PermissionRequestHook),
4595 ExtensionManagement(PermissionRequestExtensionManagement),
4596 ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
4597}
4598
4599#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4601pub enum PermissionPromptRequestCommandsKind {
4602 #[serde(rename = "commands")]
4603 #[default]
4604 Commands,
4605}
4606
4607#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4609pub enum PermissionPromptRequestWriteKind {
4610 #[serde(rename = "write")]
4611 #[default]
4612 Write,
4613}
4614
4615#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4617pub enum PermissionPromptRequestReadKind {
4618 #[serde(rename = "read")]
4619 #[default]
4620 Read,
4621}
4622
4623#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4625pub enum PermissionPromptRequestMcpKind {
4626 #[serde(rename = "mcp")]
4627 #[default]
4628 Mcp,
4629}
4630
4631#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4633pub enum PermissionPromptRequestUrlKind {
4634 #[serde(rename = "url")]
4635 #[default]
4636 Url,
4637}
4638
4639#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4641pub enum PermissionPromptRequestMemoryKind {
4642 #[serde(rename = "memory")]
4643 #[default]
4644 Memory,
4645}
4646
4647#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4649pub enum PermissionPromptRequestCustomToolKind {
4650 #[serde(rename = "custom-tool")]
4651 #[default]
4652 CustomTool,
4653}
4654
4655#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4657pub enum PermissionPromptRequestPathAccessKind {
4658 #[serde(rename = "read")]
4660 Read,
4661 #[serde(rename = "shell")]
4663 Shell,
4664 #[serde(rename = "write")]
4666 Write,
4667 #[default]
4669 #[serde(other)]
4670 Unknown,
4671}
4672
4673#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4675pub enum PermissionPromptRequestPathKind {
4676 #[serde(rename = "path")]
4677 #[default]
4678 Path,
4679}
4680
4681#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4683pub enum PermissionPromptRequestHookKind {
4684 #[serde(rename = "hook")]
4685 #[default]
4686 Hook,
4687}
4688
4689#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4691pub enum PermissionPromptRequestExtensionManagementKind {
4692 #[serde(rename = "extension-management")]
4693 #[default]
4694 ExtensionManagement,
4695}
4696
4697#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4699pub enum PermissionPromptRequestExtensionPermissionAccessKind {
4700 #[serde(rename = "extension-permission-access")]
4701 #[default]
4702 ExtensionPermissionAccess,
4703}
4704
4705#[derive(Debug, Clone, Serialize, Deserialize)]
4707#[serde(untagged)]
4708pub enum PermissionPromptRequest {
4709 Commands(PermissionPromptRequestCommands),
4710 Write(PermissionPromptRequestWrite),
4711 Read(PermissionPromptRequestRead),
4712 Mcp(PermissionPromptRequestMcp),
4713 Url(PermissionPromptRequestUrl),
4714 Memory(PermissionPromptRequestMemory),
4715 CustomTool(PermissionPromptRequestCustomTool),
4716 Path(PermissionPromptRequestPath),
4717 Hook(PermissionPromptRequestHook),
4718 ExtensionManagement(PermissionPromptRequestExtensionManagement),
4719 ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
4720}
4721
4722#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4724pub enum PermissionApprovedKind {
4725 #[serde(rename = "approved")]
4726 #[default]
4727 Approved,
4728}
4729
4730#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4732pub enum UserToolSessionApprovalCommandsKind {
4733 #[serde(rename = "commands")]
4734 #[default]
4735 Commands,
4736}
4737
4738#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4740pub enum UserToolSessionApprovalReadKind {
4741 #[serde(rename = "read")]
4742 #[default]
4743 Read,
4744}
4745
4746#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4748pub enum UserToolSessionApprovalWriteKind {
4749 #[serde(rename = "write")]
4750 #[default]
4751 Write,
4752}
4753
4754#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4756pub enum UserToolSessionApprovalMcpKind {
4757 #[serde(rename = "mcp")]
4758 #[default]
4759 Mcp,
4760}
4761
4762#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4764pub enum UserToolSessionApprovalMemoryKind {
4765 #[serde(rename = "memory")]
4766 #[default]
4767 Memory,
4768}
4769
4770#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4772pub enum UserToolSessionApprovalCustomToolKind {
4773 #[serde(rename = "custom-tool")]
4774 #[default]
4775 CustomTool,
4776}
4777
4778#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4780pub enum UserToolSessionApprovalExtensionManagementKind {
4781 #[serde(rename = "extension-management")]
4782 #[default]
4783 ExtensionManagement,
4784}
4785
4786#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4788pub enum UserToolSessionApprovalExtensionPermissionAccessKind {
4789 #[serde(rename = "extension-permission-access")]
4790 #[default]
4791 ExtensionPermissionAccess,
4792}
4793
4794#[derive(Debug, Clone, Serialize, Deserialize)]
4796#[serde(untagged)]
4797pub enum UserToolSessionApproval {
4798 Commands(UserToolSessionApprovalCommands),
4799 Read(UserToolSessionApprovalRead),
4800 Write(UserToolSessionApprovalWrite),
4801 Mcp(UserToolSessionApprovalMcp),
4802 Memory(UserToolSessionApprovalMemory),
4803 CustomTool(UserToolSessionApprovalCustomTool),
4804 ExtensionManagement(UserToolSessionApprovalExtensionManagement),
4805 ExtensionPermissionAccess(UserToolSessionApprovalExtensionPermissionAccess),
4806}
4807
4808#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4810pub enum PermissionApprovedForSessionKind {
4811 #[serde(rename = "approved-for-session")]
4812 #[default]
4813 ApprovedForSession,
4814}
4815
4816#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4818pub enum PermissionApprovedForLocationKind {
4819 #[serde(rename = "approved-for-location")]
4820 #[default]
4821 ApprovedForLocation,
4822}
4823
4824#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4826pub enum PermissionCancelledKind {
4827 #[serde(rename = "cancelled")]
4828 #[default]
4829 Cancelled,
4830}
4831
4832#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4834pub enum PermissionDeniedByRulesKind {
4835 #[serde(rename = "denied-by-rules")]
4836 #[default]
4837 DeniedByRules,
4838}
4839
4840#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4842pub enum PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUserKind {
4843 #[serde(rename = "denied-no-approval-rule-and-could-not-request-from-user")]
4844 #[default]
4845 DeniedNoApprovalRuleAndCouldNotRequestFromUser,
4846}
4847
4848#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4850pub enum PermissionDeniedInteractivelyByUserKind {
4851 #[serde(rename = "denied-interactively-by-user")]
4852 #[default]
4853 DeniedInteractivelyByUser,
4854}
4855
4856#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4858pub enum PermissionDeniedByContentExclusionPolicyKind {
4859 #[serde(rename = "denied-by-content-exclusion-policy")]
4860 #[default]
4861 DeniedByContentExclusionPolicy,
4862}
4863
4864#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4866pub enum PermissionDeniedByPermissionRequestHookKind {
4867 #[serde(rename = "denied-by-permission-request-hook")]
4868 #[default]
4869 DeniedByPermissionRequestHook,
4870}
4871
4872#[derive(Debug, Clone, Serialize, Deserialize)]
4874#[serde(untagged)]
4875pub enum PermissionResult {
4876 Approved(PermissionApproved),
4877 ApprovedForSession(PermissionApprovedForSession),
4878 ApprovedForLocation(PermissionApprovedForLocation),
4879 Cancelled(PermissionCancelled),
4880 DeniedByRules(PermissionDeniedByRules),
4881 DeniedNoApprovalRuleAndCouldNotRequestFromUser(
4882 PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser,
4883 ),
4884 DeniedInteractivelyByUser(PermissionDeniedInteractivelyByUser),
4885 DeniedByContentExclusionPolicy(PermissionDeniedByContentExclusionPolicy),
4886 DeniedByPermissionRequestHook(PermissionDeniedByPermissionRequestHook),
4887}
4888
4889#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4891pub enum ElicitationRequestedMode {
4892 #[serde(rename = "form")]
4894 Form,
4895 #[serde(rename = "url")]
4897 Url,
4898 #[default]
4900 #[serde(other)]
4901 Unknown,
4902}
4903
4904#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4906pub enum ElicitationRequestedSchemaType {
4907 #[serde(rename = "object")]
4908 #[default]
4909 Object,
4910}
4911
4912#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4914pub enum ElicitationCompletedAction {
4915 #[serde(rename = "accept")]
4917 Accept,
4918 #[serde(rename = "decline")]
4920 Decline,
4921 #[serde(rename = "cancel")]
4923 Cancel,
4924 #[default]
4926 #[serde(other)]
4927 Unknown,
4928}
4929
4930#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4932pub enum McpOauthRequestReason {
4933 #[serde(rename = "initial")]
4935 Initial,
4936 #[serde(rename = "refresh")]
4938 Refresh,
4939 #[serde(rename = "reauth")]
4941 Reauth,
4942 #[serde(rename = "upscope")]
4944 Upscope,
4945 #[default]
4947 #[serde(other)]
4948 Unknown,
4949}
4950
4951#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4953pub enum McpOauthRequiredStaticClientConfigGrantType {
4954 #[serde(rename = "client_credentials")]
4955 #[default]
4956 ClientCredentials,
4957}
4958
4959#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4961pub enum McpOauthCompletionOutcome {
4962 #[serde(rename = "token")]
4964 Token,
4965 #[serde(rename = "cancelled")]
4967 Cancelled,
4968 #[default]
4970 #[serde(other)]
4971 Unknown,
4972}
4973
4974#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4976pub enum McpHeadersRefreshRequiredReason {
4977 #[serde(rename = "startup")]
4979 Startup,
4980 #[serde(rename = "ttl-expired")]
4982 TtlExpired,
4983 #[serde(rename = "auth-failed")]
4985 AuthFailed,
4986 #[default]
4988 #[serde(other)]
4989 Unknown,
4990}
4991
4992#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4994pub enum McpHeadersRefreshCompletedOutcome {
4995 #[serde(rename = "headers")]
4997 Headers,
4998 #[serde(rename = "none")]
5000 None,
5001 #[serde(rename = "timeout")]
5003 Timeout,
5004 #[default]
5006 #[serde(other)]
5007 Unknown,
5008}
5009
5010#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5012pub enum AutoModeSwitchResponse {
5013 #[serde(rename = "yes")]
5015 Yes,
5016 #[serde(rename = "yes_always")]
5018 YesAlways,
5019 #[serde(rename = "no")]
5021 No,
5022 #[default]
5024 #[serde(other)]
5025 Unknown,
5026}
5027
5028#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5030pub enum ExitPlanModeAction {
5031 #[serde(rename = "exit_only")]
5033 ExitOnly,
5034 #[serde(rename = "interactive")]
5036 Interactive,
5037 #[serde(rename = "autopilot")]
5039 Autopilot,
5040 #[serde(rename = "autopilot_fleet")]
5042 AutopilotFleet,
5043 #[default]
5045 #[serde(other)]
5046 Unknown,
5047}
5048
5049#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5051pub enum SkillSource {
5052 #[serde(rename = "project")]
5054 Project,
5055 #[serde(rename = "inherited")]
5057 Inherited,
5058 #[serde(rename = "personal-copilot")]
5060 PersonalCopilot,
5061 #[serde(rename = "personal-agents")]
5063 PersonalAgents,
5064 #[serde(rename = "plugin")]
5066 Plugin,
5067 #[serde(rename = "custom")]
5069 Custom,
5070 #[serde(rename = "builtin")]
5072 Builtin,
5073 #[default]
5075 #[serde(other)]
5076 Unknown,
5077}
5078
5079#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5081pub enum McpServerSource {
5082 #[serde(rename = "user")]
5084 User,
5085 #[serde(rename = "workspace")]
5087 Workspace,
5088 #[serde(rename = "plugin")]
5090 Plugin,
5091 #[serde(rename = "builtin")]
5093 Builtin,
5094 #[default]
5096 #[serde(other)]
5097 Unknown,
5098}
5099
5100#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5102pub enum McpServerStatus {
5103 #[serde(rename = "connected")]
5105 Connected,
5106 #[serde(rename = "failed")]
5108 Failed,
5109 #[serde(rename = "needs-auth")]
5111 NeedsAuth,
5112 #[serde(rename = "pending")]
5114 Pending,
5115 #[serde(rename = "disabled")]
5117 Disabled,
5118 #[serde(rename = "not_configured")]
5120 NotConfigured,
5121 #[default]
5123 #[serde(other)]
5124 Unknown,
5125}
5126
5127#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5129pub enum McpServerTransport {
5130 #[serde(rename = "stdio")]
5132 Stdio,
5133 #[serde(rename = "http")]
5135 Http,
5136 #[serde(rename = "sse")]
5138 Sse,
5139 #[serde(rename = "memory")]
5141 Memory,
5142 #[default]
5144 #[serde(other)]
5145 Unknown,
5146}
5147
5148#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5150pub enum ExtensionsLoadedExtensionSource {
5151 #[serde(rename = "project")]
5153 Project,
5154 #[serde(rename = "user")]
5156 User,
5157 #[serde(rename = "plugin")]
5159 Plugin,
5160 #[serde(rename = "session")]
5162 Session,
5163 #[default]
5165 #[serde(other)]
5166 Unknown,
5167}
5168
5169#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5171pub enum ExtensionsLoadedExtensionStatus {
5172 #[serde(rename = "running")]
5174 Running,
5175 #[serde(rename = "disabled")]
5177 Disabled,
5178 #[serde(rename = "failed")]
5180 Failed,
5181 #[serde(rename = "starting")]
5183 Starting,
5184 #[default]
5186 #[serde(other)]
5187 Unknown,
5188}