#![allow(missing_docs)]
#[allow(unused_imports)]
use crate::common::{AnyValue, JsonObject, StringOrMarkdown, Uri};
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[allow(unused_imports)]
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PolicyState {
#[serde(rename = "enabled")]
Enabled,
#[serde(rename = "disabled")]
Disabled,
#[serde(rename = "unconfigured")]
Unconfigured,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PendingMessageKind {
#[serde(rename = "steering")]
Steering,
#[serde(rename = "queued")]
Queued,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum SessionLifecycle {
#[serde(rename = "creating")]
Creating,
#[serde(rename = "ready")]
Ready,
#[serde(rename = "creationFailed")]
CreationFailed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
#[serde(transparent)]
pub struct SessionStatus(pub u32);
#[allow(non_upper_case_globals)]
impl SessionStatus {
pub const Idle: SessionStatus = SessionStatus(1);
pub const Error: SessionStatus = SessionStatus(2);
pub const InProgress: SessionStatus = SessionStatus(8);
pub const InputNeeded: SessionStatus = SessionStatus(24);
pub const IsRead: SessionStatus = SessionStatus(32);
pub const IsArchived: SessionStatus = SessionStatus(64);
#[inline]
pub const fn bits(self) -> u32 {
self.0
}
#[inline]
pub const fn from_bits(bits: u32) -> Self {
SessionStatus(bits)
}
#[inline]
pub const fn contains(self, other: SessionStatus) -> bool {
(self.0 & other.0) == other.0
}
}
impl From<u32> for SessionStatus {
#[inline]
fn from(value: u32) -> Self {
SessionStatus(value)
}
}
impl From<SessionStatus> for u32 {
#[inline]
fn from(value: SessionStatus) -> Self {
value.0
}
}
impl std::ops::BitOr for SessionStatus {
type Output = SessionStatus;
#[inline]
fn bitor(self, rhs: SessionStatus) -> SessionStatus {
SessionStatus(self.0 | rhs.0)
}
}
impl std::ops::BitOrAssign for SessionStatus {
#[inline]
fn bitor_assign(&mut self, rhs: SessionStatus) {
self.0 |= rhs.0;
}
}
impl std::ops::BitAnd for SessionStatus {
type Output = SessionStatus;
#[inline]
fn bitand(self, rhs: SessionStatus) -> SessionStatus {
SessionStatus(self.0 & rhs.0)
}
}
impl std::ops::Not for SessionStatus {
type Output = SessionStatus;
#[inline]
fn not(self) -> SessionStatus {
SessionStatus(!self.0)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatOriginKind {
#[serde(rename = "user")]
User,
#[serde(rename = "fork")]
Fork,
#[serde(rename = "tool")]
Tool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatInteractivity {
#[serde(rename = "full")]
Full,
#[serde(rename = "read-only")]
ReadOnly,
#[serde(rename = "hidden")]
Hidden,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatInputAnswerState {
#[serde(rename = "draft")]
Draft,
#[serde(rename = "submitted")]
Submitted,
#[serde(rename = "skipped")]
Skipped,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatInputAnswerValueKind {
#[serde(rename = "text")]
Text,
#[serde(rename = "number")]
Number,
#[serde(rename = "boolean")]
Boolean,
#[serde(rename = "selected")]
Selected,
#[serde(rename = "selected-many")]
SelectedMany,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatInputQuestionKind {
#[serde(rename = "text")]
Text,
#[serde(rename = "number")]
Number,
#[serde(rename = "integer")]
Integer,
#[serde(rename = "boolean")]
Boolean,
#[serde(rename = "single-select")]
SingleSelect,
#[serde(rename = "multi-select")]
MultiSelect,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChatInputResponseKind {
#[serde(rename = "accept")]
Accept,
#[serde(rename = "decline")]
Decline,
#[serde(rename = "cancel")]
Cancel,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum SessionInputRequestKind {
#[serde(rename = "chatInput")]
ChatInput,
#[serde(rename = "toolConfirmation")]
ToolConfirmation,
#[serde(rename = "toolClientExecution")]
ToolClientExecution,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TurnState {
#[serde(rename = "complete")]
Complete,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "error")]
Error,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum MessageKind {
#[serde(rename = "user")]
User,
#[serde(rename = "agent")]
Agent,
#[serde(rename = "tool")]
Tool,
#[serde(rename = "systemNotification")]
SystemNotification,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum MessageAttachmentKind {
#[serde(rename = "simple")]
Simple,
#[serde(rename = "embeddedResource")]
EmbeddedResource,
#[serde(rename = "resource")]
Resource,
#[serde(rename = "annotations")]
Annotations,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ResponsePartKind {
#[serde(rename = "markdown")]
Markdown,
#[serde(rename = "contentRef")]
ContentRef,
#[serde(rename = "toolCall")]
ToolCall,
#[serde(rename = "reasoning")]
Reasoning,
#[serde(rename = "systemNotification")]
SystemNotification,
#[serde(rename = "inputRequest")]
InputRequest,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ToolCallStatus {
#[serde(rename = "streaming")]
Streaming,
#[serde(rename = "pending-confirmation")]
PendingConfirmation,
#[serde(rename = "running")]
Running,
#[serde(rename = "pending-result-confirmation")]
PendingResultConfirmation,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "cancelled")]
Cancelled,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ToolCallConfirmationReason {
#[serde(rename = "not-needed")]
NotNeeded,
#[serde(rename = "user-action")]
UserAction,
#[serde(rename = "setting")]
Setting,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ToolCallCancellationReason {
#[serde(rename = "denied")]
Denied,
#[serde(rename = "skipped")]
Skipped,
#[serde(rename = "result-denied")]
ResultDenied,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ConfirmationOptionKind {
#[serde(rename = "approve")]
Approve,
#[serde(rename = "deny")]
Deny,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ToolCallContributorKind {
#[serde(rename = "client")]
Client,
#[serde(rename = "mcp")]
MCP,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ToolResultContentType {
#[serde(rename = "text")]
Text,
#[serde(rename = "embeddedResource")]
EmbeddedResource,
#[serde(rename = "resource")]
Resource,
#[serde(rename = "fileEdit")]
FileEdit,
#[serde(rename = "terminal")]
Terminal,
#[serde(rename = "terminalComplete")]
TerminalComplete,
#[serde(rename = "subagent")]
Subagent,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum CustomizationType {
#[serde(rename = "plugin")]
Plugin,
#[serde(rename = "directory")]
Directory,
#[serde(rename = "agent")]
Agent,
#[serde(rename = "skill")]
Skill,
#[serde(rename = "prompt")]
Prompt,
#[serde(rename = "rule")]
Rule,
#[serde(rename = "hook")]
Hook,
#[serde(rename = "mcpServer")]
McpServer,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum CustomizationLoadStatus {
#[serde(rename = "loading")]
Loading,
#[serde(rename = "loaded")]
Loaded,
#[serde(rename = "degraded")]
Degraded,
#[serde(rename = "error")]
Error,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TerminalClaimKind {
#[serde(rename = "client")]
Client,
#[serde(rename = "session")]
Session,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum McpServerStatus {
#[serde(rename = "starting")]
Starting,
#[serde(rename = "ready")]
Ready,
#[serde(rename = "authRequired")]
AuthRequired,
#[serde(rename = "error")]
Error,
#[serde(rename = "stopped")]
Stopped,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum McpAuthRequiredReason {
#[serde(rename = "required")]
Required,
#[serde(rename = "expired")]
Expired,
#[serde(rename = "insufficientScope")]
InsufficientScope,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChangesetStatus {
#[serde(rename = "computing")]
Computing,
#[serde(rename = "ready")]
Ready,
#[serde(rename = "error")]
Error,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChangesetOperationStatus {
#[serde(rename = "idle")]
Idle,
#[serde(rename = "running")]
Running,
#[serde(rename = "error")]
Error,
#[serde(rename = "disabled")]
Disabled,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ChangesetOperationScope {
#[serde(rename = "changeset")]
Changeset,
#[serde(rename = "resource")]
Resource,
#[serde(rename = "range")]
Range,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ResourceChangeType {
#[serde(rename = "added")]
Added,
#[serde(rename = "updated")]
Updated,
#[serde(rename = "deleted")]
Deleted,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Icon {
pub src: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sizes: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub theme: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ProtectedResourceMetadata {
pub resource: String,
#[serde(
rename = "resource_name",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_name: Option<String>,
#[serde(
rename = "authorization_servers",
default,
skip_serializing_if = "Option::is_none"
)]
pub authorization_servers: Option<Vec<String>>,
#[serde(rename = "jwks_uri", default, skip_serializing_if = "Option::is_none")]
pub jwks_uri: Option<String>,
#[serde(
rename = "scopes_supported",
default,
skip_serializing_if = "Option::is_none"
)]
pub scopes_supported: Option<Vec<String>>,
#[serde(
rename = "bearer_methods_supported",
default,
skip_serializing_if = "Option::is_none"
)]
pub bearer_methods_supported: Option<Vec<String>>,
#[serde(
rename = "resource_signing_alg_values_supported",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_signing_alg_values_supported: Option<Vec<String>>,
#[serde(
rename = "resource_encryption_alg_values_supported",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_encryption_alg_values_supported: Option<Vec<String>>,
#[serde(
rename = "resource_encryption_enc_values_supported",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_encryption_enc_values_supported: Option<Vec<String>>,
#[serde(
rename = "resource_documentation",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_documentation: Option<String>,
#[serde(
rename = "resource_policy_uri",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_policy_uri: Option<String>,
#[serde(
rename = "resource_tos_uri",
default,
skip_serializing_if = "Option::is_none"
)]
pub resource_tos_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootState {
pub agents: Vec<AgentInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_sessions: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terminals: Option<Vec<TerminalInfo>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<RootConfigState>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootConfigState {
pub schema: ConfigSchema,
pub values: JsonObject,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentInfo {
pub provider: String,
pub display_name: String,
pub description: String,
pub models: Vec<SessionModelInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub protected_resources: Option<Vec<ProtectedResourceMetadata>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub customizations: Option<Vec<Customization>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capabilities: Option<AgentCapabilities>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AgentCapabilities {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub multiple_chats: Option<MultipleChatsCapability>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct MultipleChatsCapability {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fork: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModelInfo {
pub id: String,
pub provider: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_context_window: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_output_tokens: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_prompt_tokens: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supports_vision: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub policy_state: Option<PolicyState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config_schema: Option<ConfigSchema>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelSelection {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<std::collections::HashMap<String, AnyValue>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentSelection {
pub uri: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigPropertySchema {
pub r#type: String,
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#enum: Option<Vec<AnyValue>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enum_labels: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enum_descriptions: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub items: Option<Box<ConfigPropertySchema>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<std::collections::HashMap<String, Box<ConfigPropertySchema>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub additional_properties: Option<Box<ConfigPropertySchema>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigSchema {
pub r#type: String,
pub properties: std::collections::HashMap<String, ConfigPropertySchema>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PendingMessage {
pub id: String,
pub message: Message,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatState {
pub resource: Uri,
pub title: String,
pub status: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub activity: Option<String>,
pub modified_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub origin: Option<ChatOrigin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interactivity: Option<ChatInteractivity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
pub turns: Vec<Turn>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub turns_next_cursor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_turn: Option<ActiveTurn>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub steering_message: Option<PendingMessage>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub queued_messages: Option<Vec<PendingMessage>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_requests: Option<Vec<ChatInputRequest>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub draft: Option<Message>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatSummary {
pub resource: Uri,
pub title: String,
pub status: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub activity: Option<String>,
pub modified_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub origin: Option<ChatOrigin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interactivity: Option<ChatInteractivity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionState {
pub provider: String,
pub title: String,
pub status: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub activity: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub project: Option<ProjectInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<AnnotationsSummary>,
pub lifecycle: SessionLifecycle,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub creation_error: Option<ErrorInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub server_tools: Option<Vec<ToolDefinition>>,
pub active_clients: Vec<SessionActiveClient>,
pub chats: Vec<ChatSummary>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_chat: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<SessionConfigState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub customizations: Option<Vec<Customization>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub changesets: Option<Vec<Changeset>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_needed: Option<Vec<SessionInputRequest>>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionActiveClient {
pub client_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
pub tools: Vec<ToolDefinition>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub customizations: Option<Vec<ClientPluginCustomization>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionChatInputRequest {
pub id: String,
pub chat: Uri,
pub request: ChatInputRequest,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolConfirmationRequest {
pub id: String,
pub chat: Uri,
pub turn_id: String,
pub tool_call: ToolCallConfirmationState,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolClientExecutionRequest {
pub id: String,
pub chat: Uri,
pub turn_id: String,
pub client_id: String,
pub tool_call: ToolCallState,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSummary {
pub provider: String,
pub title: String,
pub status: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub activity: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub project: Option<ProjectInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<AnnotationsSummary>,
pub resource: Uri,
pub created_at: String,
pub modified_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub changes: Option<ChangesSummary>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ChangesSummary {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub additions: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deletions: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub files: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ProjectInfo {
pub uri: Uri,
pub display_name: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigPropertySchema {
pub r#type: String,
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#enum: Option<Vec<AnyValue>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enum_labels: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enum_descriptions: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub items: Option<ConfigPropertySchema>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<std::collections::HashMap<String, ConfigPropertySchema>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub additional_properties: Option<ConfigPropertySchema>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enum_dynamic: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub session_mutable: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigSchema {
pub r#type: String,
pub properties: std::collections::HashMap<String, SessionConfigPropertySchema>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigState {
pub schema: SessionConfigSchema,
pub values: JsonObject,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Turn {
pub id: String,
pub message: Message,
pub response_parts: Vec<ResponsePart>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub usage: Option<UsageInfo>,
pub state: TurnState,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<ErrorInfo>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActiveTurn {
pub id: String,
pub message: Message,
pub response_parts: Vec<ResponsePart>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub usage: Option<UsageInfo>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Message {
pub text: String,
pub origin: MessageOrigin,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attachments: Option<Vec<MessageAttachment>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<ModelSelection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<AgentSelection>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessageOrigin {
pub kind: MessageKind,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputOption {
pub id: String,
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recommended: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputTextAnswerValue {
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputNumberAnswerValue {
pub value: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputBooleanAnswerValue {
pub value: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputSelectedAnswerValue {
pub value: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub freeform_values: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputSelectedManyAnswerValue {
pub value: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub freeform_values: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputAnswered {
pub value: ChatInputAnswerValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputSkipped {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub freeform_values: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputTextQuestion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputNumberQuestion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputBooleanQuestion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputSingleSelectQuestion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
pub options: Vec<ChatInputOption>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allow_freeform_input: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputMultiSelectQuestion {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
pub options: Vec<ChatInputOption>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allow_freeform_input: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatInputRequest {
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub questions: Option<Vec<ChatInputQuestion>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub answers: Option<std::collections::HashMap<String, ChatInputAnswer>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextPosition {
pub line: i64,
pub character: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextRange {
pub start: TextPosition,
pub end: TextPosition,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextSelection {
pub range: TextRange,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SimpleMessageAttachment {
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_kind: Option<String>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model_representation: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessageEmbeddedResourceAttachment {
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_kind: Option<String>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub data: String,
pub content_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selection: Option<TextSelection>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessageResourceAttachment {
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_kind: Option<String>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_hint: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selection: Option<TextSelection>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessageAnnotationsAttachment {
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_kind: Option<String>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub resource: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotation_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarkdownResponsePart {
pub id: String,
pub content: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContentRef {
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_hint: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceResponsePart {
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_hint: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallResponsePart {
pub tool_call: ToolCallState,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReasoningResponsePart {
pub id: String,
pub content: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SystemNotificationResponsePart {
pub content: StringOrMarkdown,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InputRequestResponsePart {
pub request: ChatInputRequest,
pub response: ChatInputResponseKind,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallResult {
pub success: bool,
pub past_tense_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<Vec<ToolResultContent>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub structured_content: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfirmationOption {
pub id: String,
pub label: String,
pub kind: ConfirmationOptionKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallStreamingState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub partial_input: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub invocation_message: Option<StringOrMarkdown>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallPendingConfirmationState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmation_title: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub edits: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub editable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<ConfirmationOption>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallRunningState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
pub confirmed: ToolCallConfirmationReason,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_option: Option<ConfirmationOption>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<Vec<ToolResultContent>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallPendingResultConfirmationState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
pub success: bool,
pub past_tense_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<Vec<ToolResultContent>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub structured_content: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<AnyValue>,
pub confirmed: ToolCallConfirmationReason,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_option: Option<ConfirmationOption>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallCompletedState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
pub success: bool,
pub past_tense_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<Vec<ToolResultContent>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub structured_content: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<AnyValue>,
pub confirmed: ToolCallConfirmationReason,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_option: Option<ConfirmationOption>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallCancelledState {
pub tool_call_id: String,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub intention: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contributor: Option<ToolCallContributor>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
pub reason: ToolCallCancellationReason,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason_message: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_suggestion: Option<Message>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_option: Option<ConfirmationOption>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolDefinition {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_schema: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output_schema: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<ToolAnnotations>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ToolAnnotations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read_only_hint: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub destructive_hint: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub idempotent_hint: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub open_world_hint: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultTextContent {
pub text: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultEmbeddedResourceContent {
pub data: String,
pub content_type: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultResourceContent {
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_hint: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultFileEditContent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub before: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub diff: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultTerminalContent {
pub resource: Uri,
pub title: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultTerminalCompleteContent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cwd: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub preview: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub truncated: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolResultSubagentContent {
pub resource: Uri,
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CustomizationLoadingState {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CustomizationLoadedState {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CustomizationDegradedState {
pub message: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CustomizationErrorState {
pub message: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub load: Option<CustomizationLoadState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<ChildCustomization>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ClientPluginCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub load: Option<CustomizationLoadState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<ChildCustomization>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DirectoryCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub load: Option<CustomizationLoadState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub children: Option<Vec<ChildCustomization>>,
pub contents: CustomizationType,
pub writable: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disable_model_invocation: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disable_user_invocation: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disable_model_invocation: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disable_user_invocation: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PromptCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RuleCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub always_apply: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub globs: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HookCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerCustomization {
pub id: String,
pub uri: Uri,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub enabled: bool,
pub state: McpServerState,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub channel: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mcp_app: Option<McpServerCustomizationApps>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerCustomizationApps {
pub capabilities: AhpMcpUiHostCapabilities,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AhpMcpUiHostCapabilities {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub server_tools: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub server_resources: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logging: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sampling: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerStartingState {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerReadyState {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerAuthRequiredState {
pub reason: McpAuthRequiredReason,
pub resource: ProtectedResourceMetadata,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required_scopes: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerErrorState {
pub error: ErrorInfo,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerStoppedState {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallClientContributor {
pub client_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolCallMcpContributor {
pub customization_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct FileEdit {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub before: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub diff: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalInfo {
pub resource: Uri,
pub title: String,
pub claim: TerminalClaim,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalClientClaim {
pub client_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalSessionClaim {
pub session: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub turn_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_call_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalState {
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cwd: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cols: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rows: Option<i64>,
pub content: Vec<TerminalContentPart>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
pub claim: TerminalClaim,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supports_command_detection: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalUnclassifiedPart {
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalCommandPart {
pub command_id: String,
pub command_line: String,
pub output: String,
pub timestamp: i64,
pub is_complete: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_ms: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UsageInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_tokens: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output_tokens: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cache_read_tokens: Option<i64>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ErrorInfo {
pub error_type: String,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stack: Option<String>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Snapshot {
pub resource: Uri,
pub state: SnapshotState,
pub from_seq: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Changeset {
pub label: String,
pub uri_template: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub change_kind: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChangesetState {
pub status: ChangesetStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<ErrorInfo>,
pub files: Vec<ChangesetFile>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operations: Option<Vec<ChangesetOperation>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChangesetFile {
pub id: String,
pub edit: FileEdit,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reviewed: Option<bool>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChangesetOperation {
pub id: String,
pub label: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub scopes: Vec<ChangesetOperationScope>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmation: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
pub status: ChangesetOperationStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<ErrorInfo>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnotationsSummary {
pub resource: Uri,
pub annotation_count: i64,
pub entry_count: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnotationsState {
pub annotations: Vec<Annotation>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Annotation {
pub id: String,
pub turn_id: String,
pub resource: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<TextRange>,
pub resolved: bool,
pub entries: Vec<AnnotationEntry>,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnnotationEntry {
pub id: String,
pub text: StringOrMarkdown,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct TelemetryCapabilities {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logs: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub traces: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metrics: Option<Uri>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceWatchState {
pub root: Uri,
pub recursive: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub excludes: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub includes: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceChange {
pub uri: Uri,
pub r#type: ResourceChangeType,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ChatOrigin {
#[serde(rename = "user")]
User,
#[serde(rename = "fork")]
Fork {
chat: Uri,
#[serde(rename = "turnId")]
turn_id: String,
},
#[serde(rename = "tool")]
Tool {
chat: Uri,
#[serde(rename = "toolCallId")]
tool_call_id: String,
},
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ResponsePart {
#[serde(rename = "markdown")]
Markdown(MarkdownResponsePart),
#[serde(rename = "contentRef")]
ContentRef(ResourceResponsePart),
#[serde(rename = "toolCall")]
ToolCall(Box<ToolCallResponsePart>),
#[serde(rename = "reasoning")]
Reasoning(ReasoningResponsePart),
#[serde(rename = "systemNotification")]
SystemNotification(SystemNotificationResponsePart),
#[serde(rename = "inputRequest")]
InputRequest(InputRequestResponsePart),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "status")]
pub enum ToolCallState {
#[serde(rename = "streaming")]
Streaming(ToolCallStreamingState),
#[serde(rename = "pending-confirmation")]
PendingConfirmation(ToolCallPendingConfirmationState),
#[serde(rename = "running")]
Running(ToolCallRunningState),
#[serde(rename = "pending-result-confirmation")]
PendingResultConfirmation(ToolCallPendingResultConfirmationState),
#[serde(rename = "completed")]
Completed(ToolCallCompletedState),
#[serde(rename = "cancelled")]
Cancelled(ToolCallCancelledState),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "status")]
pub enum ToolCallConfirmationState {
#[serde(rename = "pending-confirmation")]
PendingConfirmation(ToolCallPendingConfirmationState),
#[serde(rename = "pending-result-confirmation")]
PendingResultConfirmation(ToolCallPendingResultConfirmationState),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum TerminalClaim {
#[serde(rename = "client")]
Client(TerminalClientClaim),
#[serde(rename = "session")]
Session(TerminalSessionClaim),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TerminalContentPart {
#[serde(rename = "unclassified")]
Unclassified(TerminalUnclassifiedPart),
#[serde(rename = "command")]
Command(TerminalCommandPart),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ChatInputQuestion {
#[serde(rename = "text")]
Text(ChatInputTextQuestion),
#[serde(rename = "number")]
Number(ChatInputNumberQuestion),
#[serde(rename = "integer")]
Integer(ChatInputNumberQuestion),
#[serde(rename = "boolean")]
Boolean(ChatInputBooleanQuestion),
#[serde(rename = "single-select")]
SingleSelect(ChatInputSingleSelectQuestion),
#[serde(rename = "multi-select")]
MultiSelect(ChatInputMultiSelectQuestion),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ChatInputAnswerValue {
#[serde(rename = "text")]
Text(ChatInputTextAnswerValue),
#[serde(rename = "number")]
Number(ChatInputNumberAnswerValue),
#[serde(rename = "boolean")]
Boolean(ChatInputBooleanAnswerValue),
#[serde(rename = "selected")]
Selected(ChatInputSelectedAnswerValue),
#[serde(rename = "selected-many")]
SelectedMany(ChatInputSelectedManyAnswerValue),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "state")]
pub enum ChatInputAnswer {
#[serde(rename = "draft")]
Draft(ChatInputAnswered),
#[serde(rename = "submitted")]
Submitted(ChatInputAnswered),
#[serde(rename = "skipped")]
Skipped(ChatInputSkipped),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ToolResultContent {
#[serde(rename = "text")]
Text(ToolResultTextContent),
#[serde(rename = "embeddedResource")]
EmbeddedResource(ToolResultEmbeddedResourceContent),
#[serde(rename = "resource")]
Resource(ToolResultResourceContent),
#[serde(rename = "fileEdit")]
FileEdit(ToolResultFileEditContent),
#[serde(rename = "terminal")]
Terminal(ToolResultTerminalContent),
#[serde(rename = "terminalComplete")]
TerminalComplete(ToolResultTerminalCompleteContent),
#[serde(rename = "subagent")]
Subagent(ToolResultSubagentContent),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum MessageAttachment {
#[serde(rename = "simple")]
Simple(SimpleMessageAttachment),
#[serde(rename = "embeddedResource")]
EmbeddedResource(MessageEmbeddedResourceAttachment),
#[serde(rename = "resource")]
Resource(MessageResourceAttachment),
#[serde(rename = "annotations")]
Annotations(MessageAnnotationsAttachment),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Customization {
#[serde(rename = "plugin")]
Plugin(PluginCustomization),
#[serde(rename = "directory")]
Directory(DirectoryCustomization),
#[serde(rename = "mcpServer")]
McpServer(Box<McpServerCustomization>),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChildCustomization {
#[serde(rename = "agent")]
Agent(AgentCustomization),
#[serde(rename = "skill")]
Skill(SkillCustomization),
#[serde(rename = "prompt")]
Prompt(PromptCustomization),
#[serde(rename = "rule")]
Rule(RuleCustomization),
#[serde(rename = "hook")]
Hook(HookCustomization),
#[serde(rename = "mcpServer")]
McpServer(Box<McpServerCustomization>),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum CustomizationLoadState {
#[serde(rename = "loading")]
Loading(CustomizationLoadingState),
#[serde(rename = "loaded")]
Loaded(CustomizationLoadedState),
#[serde(rename = "degraded")]
Degraded(CustomizationDegradedState),
#[serde(rename = "error")]
Error(CustomizationErrorState),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum McpServerState {
#[serde(rename = "starting")]
Starting(McpServerStartingState),
#[serde(rename = "ready")]
Ready(McpServerReadyState),
#[serde(rename = "authRequired")]
AuthRequired(Box<McpServerAuthRequiredState>),
#[serde(rename = "error")]
Error(McpServerErrorState),
#[serde(rename = "stopped")]
Stopped(McpServerStoppedState),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ToolCallContributor {
#[serde(rename = "client")]
Client(ToolCallClientContributor),
#[serde(rename = "mcp")]
Mcp(ToolCallMcpContributor),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum SessionInputRequest {
#[serde(rename = "chatInput")]
ChatInput(SessionChatInputRequest),
#[serde(rename = "toolConfirmation")]
ToolConfirmation(SessionToolConfirmationRequest),
#[serde(rename = "toolClientExecution")]
ToolClientExecution(SessionToolClientExecutionRequest),
#[serde(untagged)]
Unknown(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SnapshotState {
Session(Box<SessionState>),
Chat(Box<ChatState>),
Terminal(Box<TerminalState>),
Changeset(Box<ChangesetState>),
ResourceWatch(Box<ResourceWatchState>),
Annotations(Box<AnnotationsState>),
Root(Box<RootState>),
}