#![allow(clippy::large_enum_variant)]
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::types::{RequestId, SessionId};
pub mod rpc_methods {
pub const PING: &str = "ping";
pub const CONNECT: &str = "connect";
pub const MODELS_LIST: &str = "models.list";
pub const TOOLS_LIST: &str = "tools.list";
pub const ACCOUNT_GETQUOTA: &str = "account.getQuota";
pub const MCP_CONFIG_LIST: &str = "mcp.config.list";
pub const MCP_CONFIG_ADD: &str = "mcp.config.add";
pub const MCP_CONFIG_UPDATE: &str = "mcp.config.update";
pub const MCP_CONFIG_REMOVE: &str = "mcp.config.remove";
pub const MCP_CONFIG_ENABLE: &str = "mcp.config.enable";
pub const MCP_CONFIG_DISABLE: &str = "mcp.config.disable";
pub const MCP_DISCOVER: &str = "mcp.discover";
pub const SKILLS_CONFIG_SETDISABLEDSKILLS: &str = "skills.config.setDisabledSkills";
pub const SKILLS_DISCOVER: &str = "skills.discover";
pub const SESSIONFS_SETPROVIDER: &str = "sessionFs.setProvider";
pub const SESSIONS_FORK: &str = "sessions.fork";
pub const SESSION_SUSPEND: &str = "session.suspend";
pub const SESSION_AUTH_GETSTATUS: &str = "session.auth.getStatus";
pub const SESSION_MODEL_GETCURRENT: &str = "session.model.getCurrent";
pub const SESSION_MODEL_SWITCHTO: &str = "session.model.switchTo";
pub const SESSION_MODE_GET: &str = "session.mode.get";
pub const SESSION_MODE_SET: &str = "session.mode.set";
pub const SESSION_NAME_GET: &str = "session.name.get";
pub const SESSION_NAME_SET: &str = "session.name.set";
pub const SESSION_PLAN_READ: &str = "session.plan.read";
pub const SESSION_PLAN_UPDATE: &str = "session.plan.update";
pub const SESSION_PLAN_DELETE: &str = "session.plan.delete";
pub const SESSION_WORKSPACES_GETWORKSPACE: &str = "session.workspaces.getWorkspace";
pub const SESSION_WORKSPACES_LISTFILES: &str = "session.workspaces.listFiles";
pub const SESSION_WORKSPACES_READFILE: &str = "session.workspaces.readFile";
pub const SESSION_WORKSPACES_CREATEFILE: &str = "session.workspaces.createFile";
pub const SESSION_INSTRUCTIONS_GETSOURCES: &str = "session.instructions.getSources";
pub const SESSION_FLEET_START: &str = "session.fleet.start";
pub const SESSION_AGENT_LIST: &str = "session.agent.list";
pub const SESSION_AGENT_GETCURRENT: &str = "session.agent.getCurrent";
pub const SESSION_AGENT_SELECT: &str = "session.agent.select";
pub const SESSION_AGENT_DESELECT: &str = "session.agent.deselect";
pub const SESSION_AGENT_RELOAD: &str = "session.agent.reload";
pub const SESSION_TASKS_STARTAGENT: &str = "session.tasks.startAgent";
pub const SESSION_TASKS_LIST: &str = "session.tasks.list";
pub const SESSION_TASKS_PROMOTETOBACKGROUND: &str = "session.tasks.promoteToBackground";
pub const SESSION_TASKS_CANCEL: &str = "session.tasks.cancel";
pub const SESSION_TASKS_REMOVE: &str = "session.tasks.remove";
pub const SESSION_SKILLS_LIST: &str = "session.skills.list";
pub const SESSION_SKILLS_ENABLE: &str = "session.skills.enable";
pub const SESSION_SKILLS_DISABLE: &str = "session.skills.disable";
pub const SESSION_SKILLS_RELOAD: &str = "session.skills.reload";
pub const SESSION_MCP_LIST: &str = "session.mcp.list";
pub const SESSION_MCP_ENABLE: &str = "session.mcp.enable";
pub const SESSION_MCP_DISABLE: &str = "session.mcp.disable";
pub const SESSION_MCP_RELOAD: &str = "session.mcp.reload";
pub const SESSION_MCP_OAUTH_LOGIN: &str = "session.mcp.oauth.login";
pub const SESSION_PLUGINS_LIST: &str = "session.plugins.list";
pub const SESSION_EXTENSIONS_LIST: &str = "session.extensions.list";
pub const SESSION_EXTENSIONS_ENABLE: &str = "session.extensions.enable";
pub const SESSION_EXTENSIONS_DISABLE: &str = "session.extensions.disable";
pub const SESSION_EXTENSIONS_RELOAD: &str = "session.extensions.reload";
pub const SESSION_TOOLS_HANDLEPENDINGTOOLCALL: &str = "session.tools.handlePendingToolCall";
pub const SESSION_COMMANDS_HANDLEPENDINGCOMMAND: &str = "session.commands.handlePendingCommand";
pub const SESSION_UI_ELICITATION: &str = "session.ui.elicitation";
pub const SESSION_UI_HANDLEPENDINGELICITATION: &str = "session.ui.handlePendingElicitation";
pub const SESSION_PERMISSIONS_HANDLEPENDINGPERMISSIONREQUEST: &str =
"session.permissions.handlePendingPermissionRequest";
pub const SESSION_PERMISSIONS_SETAPPROVEALL: &str = "session.permissions.setApproveAll";
pub const SESSION_PERMISSIONS_RESETSESSIONAPPROVALS: &str =
"session.permissions.resetSessionApprovals";
pub const SESSION_LOG: &str = "session.log";
pub const SESSION_SHELL_EXEC: &str = "session.shell.exec";
pub const SESSION_SHELL_KILL: &str = "session.shell.kill";
pub const SESSION_HISTORY_COMPACT: &str = "session.history.compact";
pub const SESSION_HISTORY_TRUNCATE: &str = "session.history.truncate";
pub const SESSION_USAGE_GETMETRICS: &str = "session.usage.getMetrics";
pub const SESSIONFS_READFILE: &str = "sessionFs.readFile";
pub const SESSIONFS_WRITEFILE: &str = "sessionFs.writeFile";
pub const SESSIONFS_APPENDFILE: &str = "sessionFs.appendFile";
pub const SESSIONFS_EXISTS: &str = "sessionFs.exists";
pub const SESSIONFS_STAT: &str = "sessionFs.stat";
pub const SESSIONFS_MKDIR: &str = "sessionFs.mkdir";
pub const SESSIONFS_READDIR: &str = "sessionFs.readdir";
pub const SESSIONFS_READDIRWITHTYPES: &str = "sessionFs.readdirWithTypes";
pub const SESSIONFS_RM: &str = "sessionFs.rm";
pub const SESSIONFS_RENAME: &str = "sessionFs.rename";
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountGetQuotaRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub git_hub_token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountQuotaSnapshot {
pub entitlement_requests: i64,
pub is_unlimited_entitlement: bool,
pub overage: f64,
pub overage_allowed_with_exhausted_quota: bool,
pub remaining_percentage: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub reset_date: Option<String>,
pub usage_allowed_with_exhausted_quota: bool,
pub used_requests: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountGetQuotaResult {
pub quota_snapshots: HashMap<String, AccountQuotaSnapshot>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentInfo {
pub description: String,
pub display_name: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentGetCurrentResult {
pub agent: AgentInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentList {
pub agents: Vec<AgentInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentReloadResult {
pub agents: Vec<AgentInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentSelectRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AgentSelectResult {
pub agent: AgentInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CommandsHandlePendingCommandRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub request_id: RequestId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CommandsHandlePendingCommandResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConnectRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConnectResult {
pub ok: bool,
pub protocol_version: i64,
pub version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CurrentModel {
#[serde(skip_serializing_if = "Option::is_none")]
pub model_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DiscoveredMcpServer {
pub enabled: bool,
pub name: String,
pub source: DiscoveredMcpServerSource,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<DiscoveredMcpServerType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EmbeddedBlobResourceContents {
pub blob: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EmbeddedTextResourceContents {
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
pub text: String,
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Extension {
pub id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub pid: Option<i64>,
pub source: ExtensionSource,
pub status: ExtensionStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExtensionList {
pub extensions: Vec<Extension>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExtensionsDisableRequest {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExtensionsEnableRequest {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlm {
#[serde(default)]
pub contents: Vec<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub result_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_log: Option<String>,
pub text_result_for_llm: String,
#[serde(default)]
pub tool_telemetry: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentAudio {
pub data: String,
pub mime_type: String,
pub r#type: ExternalToolTextResultForLlmContentAudioType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentImage {
pub data: String,
pub mime_type: String,
pub r#type: ExternalToolTextResultForLlmContentImageType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentResource {
pub resource: serde_json::Value,
pub r#type: ExternalToolTextResultForLlmContentResourceType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentResourceLinkIcon {
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default)]
pub sizes: Vec<String>,
pub src: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub theme: Option<ExternalToolTextResultForLlmContentResourceLinkIconTheme>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentResourceLink {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default)]
pub icons: Vec<ExternalToolTextResultForLlmContentResourceLinkIcon>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: ExternalToolTextResultForLlmContentResourceLinkType,
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentTerminal {
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exit_code: Option<f64>,
pub text: String,
pub r#type: ExternalToolTextResultForLlmContentTerminalType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalToolTextResultForLlmContentText {
pub text: String,
pub r#type: ExternalToolTextResultForLlmContentTextType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FleetStartRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FleetStartResult {
pub started: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HandlePendingToolCallRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub request_id: RequestId,
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HandlePendingToolCallResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HistoryCompactContextWindow {
#[serde(skip_serializing_if = "Option::is_none")]
pub conversation_tokens: Option<i64>,
pub current_tokens: i64,
pub messages_length: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_tokens: Option<i64>,
pub token_limit: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_definitions_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HistoryCompactResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub context_window: Option<HistoryCompactContextWindow>,
pub messages_removed: i64,
pub success: bool,
pub tokens_removed: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HistoryTruncateRequest {
pub event_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HistoryTruncateResult {
pub events_removed: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstructionsSources {
#[serde(skip_serializing_if = "Option::is_none")]
pub apply_to: Option<String>,
pub content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub id: String,
pub label: String,
pub location: InstructionsSourcesLocation,
pub source_path: String,
pub r#type: InstructionsSourcesType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstructionsGetSourcesResult {
pub sources: Vec<InstructionsSources>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LogRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub ephemeral: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub level: Option<SessionLogLevel>,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LogResult {
pub event_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigAddRequest {
pub config: serde_json::Value,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigDisableRequest {
pub names: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigEnableRequest {
pub names: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigList {
pub servers: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigRemoveRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigUpdateRequest {
pub config: serde_json::Value,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpDisableRequest {
pub server_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpDiscoverRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub working_directory: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpDiscoverResult {
pub servers: Vec<DiscoveredMcpServer>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpEnableRequest {
pub server_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpOauthLoginRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub callback_success_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub force_reauth: Option<bool>,
pub server_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpOauthLoginResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub authorization_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServer {
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<McpServerSource>,
pub status: McpServerStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerConfigHttp {
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_mapping: Option<serde_json::Value>,
#[serde(default)]
pub headers: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_default_server: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oauth_client_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oauth_grant_type: Option<McpServerConfigHttpOauthGrantType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oauth_public_client: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<i64>,
#[serde(default)]
pub tools: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<McpServerConfigHttpType>,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerConfigLocal {
pub args: Vec<String>,
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(default)]
pub env: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_mapping: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_default_server: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<i64>,
#[serde(default)]
pub tools: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<McpServerConfigLocalType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpServerList {
pub servers: Vec<McpServer>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelBilling {
pub multiplier: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesLimitsVision {
#[serde(rename = "max_prompt_image_size")]
pub max_prompt_image_size: i64,
#[serde(rename = "max_prompt_images")]
pub max_prompt_images: i64,
#[serde(rename = "supported_media_types")]
pub supported_media_types: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesLimits {
#[serde(
rename = "max_context_window_tokens",
skip_serializing_if = "Option::is_none"
)]
pub max_context_window_tokens: Option<i64>,
#[serde(rename = "max_output_tokens", skip_serializing_if = "Option::is_none")]
pub max_output_tokens: Option<i64>,
#[serde(rename = "max_prompt_tokens", skip_serializing_if = "Option::is_none")]
pub max_prompt_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vision: Option<ModelCapabilitiesLimitsVision>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesSupports {
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_effort: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vision: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub limits: Option<ModelCapabilitiesLimits>,
#[serde(skip_serializing_if = "Option::is_none")]
pub supports: Option<ModelCapabilitiesSupports>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelPolicy {
pub state: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub terms: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Model {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing: Option<ModelBilling>,
pub capabilities: ModelCapabilities,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_reasoning_effort: Option<String>,
pub id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub policy: Option<ModelPolicy>,
#[serde(default)]
pub supported_reasoning_efforts: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesOverrideLimitsVision {
#[serde(
rename = "max_prompt_image_size",
skip_serializing_if = "Option::is_none"
)]
pub max_prompt_image_size: Option<i64>,
#[serde(rename = "max_prompt_images", skip_serializing_if = "Option::is_none")]
pub max_prompt_images: Option<i64>,
#[serde(rename = "supported_media_types", default)]
pub supported_media_types: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesOverrideLimits {
#[serde(
rename = "max_context_window_tokens",
skip_serializing_if = "Option::is_none"
)]
pub max_context_window_tokens: Option<i64>,
#[serde(rename = "max_output_tokens", skip_serializing_if = "Option::is_none")]
pub max_output_tokens: Option<i64>,
#[serde(rename = "max_prompt_tokens", skip_serializing_if = "Option::is_none")]
pub max_prompt_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vision: Option<ModelCapabilitiesOverrideLimitsVision>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesOverrideSupports {
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_effort: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vision: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelCapabilitiesOverride {
#[serde(skip_serializing_if = "Option::is_none")]
pub limits: Option<ModelCapabilitiesOverrideLimits>,
#[serde(skip_serializing_if = "Option::is_none")]
pub supports: Option<ModelCapabilitiesOverrideSupports>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelList {
pub models: Vec<Model>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelsListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub git_hub_token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelSwitchToRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub model_capabilities: Option<ModelCapabilitiesOverride>,
pub model_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_effort: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelSwitchToResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub model_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModeSetRequest {
pub mode: SessionMode,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NameGetResult {
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NameSetRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalCommands {
pub command_identifiers: Vec<String>,
pub kind: PermissionDecisionApproveForLocationApprovalCommandsKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalRead {
pub kind: PermissionDecisionApproveForLocationApprovalReadKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalWrite {
pub kind: PermissionDecisionApproveForLocationApprovalWriteKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalMcp {
pub kind: PermissionDecisionApproveForLocationApprovalMcpKind,
pub server_name: String,
pub tool_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalMcpSampling {
pub kind: PermissionDecisionApproveForLocationApprovalMcpSamplingKind,
pub server_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalMemory {
pub kind: PermissionDecisionApproveForLocationApprovalMemoryKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocationApprovalCustomTool {
pub kind: PermissionDecisionApproveForLocationApprovalCustomToolKind,
pub tool_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForLocation {
pub approval: PermissionDecisionApproveForLocationApproval,
pub kind: PermissionDecisionApproveForLocationKind,
pub location_key: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalCommands {
pub command_identifiers: Vec<String>,
pub kind: PermissionDecisionApproveForSessionApprovalCommandsKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalRead {
pub kind: PermissionDecisionApproveForSessionApprovalReadKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalWrite {
pub kind: PermissionDecisionApproveForSessionApprovalWriteKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalMcp {
pub kind: PermissionDecisionApproveForSessionApprovalMcpKind,
pub server_name: String,
pub tool_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalMcpSampling {
pub kind: PermissionDecisionApproveForSessionApprovalMcpSamplingKind,
pub server_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalMemory {
pub kind: PermissionDecisionApproveForSessionApprovalMemoryKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSessionApprovalCustomTool {
pub kind: PermissionDecisionApproveForSessionApprovalCustomToolKind,
pub tool_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveForSession {
#[serde(skip_serializing_if = "Option::is_none")]
pub approval: Option<PermissionDecisionApproveForSessionApproval>,
#[serde(skip_serializing_if = "Option::is_none")]
pub domain: Option<String>,
pub kind: PermissionDecisionApproveForSessionKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApproveOnce {
pub kind: PermissionDecisionApproveOnceKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionApprovePermanently {
pub domain: String,
pub kind: PermissionDecisionApprovePermanentlyKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionReject {
#[serde(skip_serializing_if = "Option::is_none")]
pub feedback: Option<String>,
pub kind: PermissionDecisionRejectKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionUserNotAvailable {
pub kind: PermissionDecisionUserNotAvailableKind,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDecisionRequest {
pub request_id: RequestId,
pub result: PermissionDecision,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionRequestResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionsResetSessionApprovalsRequest {}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionsResetSessionApprovalsResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionsSetApproveAllRequest {
pub enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionsSetApproveAllResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PingRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PingResult {
pub message: String,
pub protocol_version: i64,
pub timestamp: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlanReadResult {
pub content: Option<String>,
pub exists: bool,
pub path: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlanUpdateRequest {
pub content: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Plugin {
pub enabled: bool,
pub marketplace: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginList {
pub plugins: Vec<Plugin>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServerSkill {
pub description: String,
pub enabled: bool,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub project_path: Option<String>,
pub source: String,
pub user_invocable: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ServerSkillList {
pub skills: Vec<ServerSkill>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAuthStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub auth_type: Option<AuthInfoType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub copilot_plan: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub host: Option<String>,
pub is_authenticated: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_message: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsAppendFileRequest {
pub content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<i64>,
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsError {
pub code: SessionFsErrorCode,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsExistsRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsExistsResult {
pub exists: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsMkdirRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<i64>,
pub path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub recursive: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReaddirRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReaddirResult {
pub entries: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<SessionFsError>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReaddirWithTypesEntry {
pub name: String,
pub r#type: SessionFsReaddirWithTypesEntryType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReaddirWithTypesRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReaddirWithTypesResult {
pub entries: Vec<SessionFsReaddirWithTypesEntry>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<SessionFsError>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReadFileRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsReadFileResult {
pub content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<SessionFsError>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsRenameRequest {
pub dest: String,
pub src: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsRmRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
pub path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub recursive: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsSetProviderRequest {
pub conventions: SessionFsSetProviderConventions,
pub initial_cwd: String,
pub session_state_path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsSetProviderResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsStatRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsStatResult {
pub birthtime: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<SessionFsError>,
pub is_directory: bool,
pub is_file: bool,
pub mtime: String,
pub size: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFsWriteFileRequest {
pub content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<i64>,
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionsForkRequest {
pub session_id: SessionId,
#[serde(skip_serializing_if = "Option::is_none")]
pub to_event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionsForkResult {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ShellExecRequest {
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ShellExecResult {
pub process_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ShellKillRequest {
pub process_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub signal: Option<ShellKillSignal>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ShellKillResult {
pub killed: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Skill {
pub description: String,
pub enabled: bool,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
pub source: String,
pub user_invocable: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillList {
pub skills: Vec<Skill>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillsConfigSetDisabledSkillsRequest {
pub disabled_skills: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillsDisableRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillsDiscoverRequest {
#[serde(default)]
pub project_paths: Vec<String>,
#[serde(default)]
pub skill_directories: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillsEnableRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TaskAgentInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub active_started_at: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_time_ms: Option<i64>,
pub agent_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_promote_to_background: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<String>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution_mode: Option<TaskAgentInfoExecutionMode>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub idle_since: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latest_response: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
pub prompt: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<String>,
pub started_at: String,
pub status: TaskAgentInfoStatus,
pub tool_call_id: String,
pub r#type: TaskAgentInfoType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TaskList {
pub tasks: Vec<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksCancelRequest {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksCancelResult {
pub cancelled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TaskShellInfo {
pub attachment_mode: TaskShellInfoAttachmentMode,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_promote_to_background: Option<bool>,
pub command: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<String>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution_mode: Option<TaskShellInfoExecutionMode>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub log_path: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pid: Option<i64>,
pub started_at: String,
pub status: TaskShellInfoStatus,
pub r#type: TaskShellInfoType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksPromoteToBackgroundRequest {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksPromoteToBackgroundResult {
pub promoted: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksRemoveRequest {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksRemoveResult {
pub removed: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksStartAgentRequest {
pub agent_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
pub name: String,
pub prompt: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TasksStartAgentResult {
pub agent_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Tool {
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructions: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespaced_name: Option<String>,
#[serde(default)]
pub parameters: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolList {
pub tools: Vec<Tool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolsListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationArrayAnyOfFieldItemsAnyOf {
pub r#const: String,
pub title: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationArrayAnyOfFieldItems {
pub any_of: Vec<UIElicitationArrayAnyOfFieldItemsAnyOf>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationArrayAnyOfField {
#[serde(default)]
pub default: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub items: UIElicitationArrayAnyOfFieldItems,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_items: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_items: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationArrayAnyOfFieldType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationArrayEnumFieldItems {
pub r#enum: Vec<String>,
pub r#type: UIElicitationArrayEnumFieldItemsType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationArrayEnumField {
#[serde(default)]
pub default: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub items: UIElicitationArrayEnumFieldItems,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_items: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_items: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationArrayEnumFieldType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationSchema {
pub properties: HashMap<String, serde_json::Value>,
#[serde(default)]
pub required: Vec<String>,
pub r#type: UIElicitationSchemaType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationRequest {
pub message: String,
pub requested_schema: UIElicitationSchema,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationResponse {
pub action: UIElicitationResponseAction,
#[serde(default)]
pub content: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationSchemaPropertyBoolean {
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationSchemaPropertyBooleanType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationSchemaPropertyNumber {
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maximum: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minimum: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationSchemaPropertyNumberType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationSchemaPropertyString {
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<UIElicitationSchemaPropertyStringFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationSchemaPropertyStringType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationStringEnumField {
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub r#enum: Vec<String>,
#[serde(default)]
pub enum_names: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationStringEnumFieldType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationStringOneOfFieldOneOf {
pub r#const: String,
pub title: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIElicitationStringOneOfField {
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub one_of: Vec<UIElicitationStringOneOfFieldOneOf>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: UIElicitationStringOneOfFieldType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UIHandlePendingElicitationRequest {
pub request_id: RequestId,
pub result: UIElicitationResponse,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsCodeChanges {
pub files_modified_count: i64,
pub lines_added: i64,
pub lines_removed: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsModelMetricRequests {
pub cost: f64,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsModelMetricTokenDetail {
pub token_count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsModelMetricUsage {
pub cache_read_tokens: i64,
pub cache_write_tokens: i64,
pub input_tokens: i64,
pub output_tokens: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsModelMetric {
pub requests: UsageMetricsModelMetricRequests,
#[serde(default)]
pub token_details: HashMap<String, UsageMetricsModelMetricTokenDetail>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_nano_aiu: Option<i64>,
pub usage: UsageMetricsModelMetricUsage,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageMetricsTokenDetail {
pub token_count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UsageGetMetricsResult {
pub code_changes: UsageMetricsCodeChanges,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_model: Option<String>,
pub last_call_input_tokens: i64,
pub last_call_output_tokens: i64,
pub model_metrics: HashMap<String, UsageMetricsModelMetric>,
pub session_start_time: i64,
#[serde(default)]
pub token_details: HashMap<String, UsageMetricsTokenDetail>,
pub total_api_duration_ms: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_nano_aiu: Option<i64>,
pub total_premium_request_cost: f64,
pub total_user_requests: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesCreateFileRequest {
pub content: String,
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesGetWorkspaceResultWorkspace {
#[serde(skip_serializing_if = "Option::is_none")]
pub branch: Option<String>,
#[serde(
rename = "chronicle_sync_dismissed",
skip_serializing_if = "Option::is_none"
)]
pub chronicle_sync_dismissed: Option<bool>,
#[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(rename = "git_root", skip_serializing_if = "Option::is_none")]
pub git_root: Option<String>,
#[serde(rename = "host_type", skip_serializing_if = "Option::is_none")]
pub host_type: Option<WorkspacesGetWorkspaceResultWorkspaceHostType>,
pub id: String,
#[serde(rename = "mc_last_event_id", skip_serializing_if = "Option::is_none")]
pub mc_last_event_id: Option<String>,
#[serde(rename = "mc_session_id", skip_serializing_if = "Option::is_none")]
pub mc_session_id: Option<String>,
#[serde(rename = "mc_task_id", skip_serializing_if = "Option::is_none")]
pub mc_task_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "remote_steerable", skip_serializing_if = "Option::is_none")]
pub remote_steerable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository: Option<String>,
#[serde(rename = "session_sync_level", skip_serializing_if = "Option::is_none")]
pub session_sync_level: Option<WorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(rename = "summary_count", skip_serializing_if = "Option::is_none")]
pub summary_count: Option<i64>,
#[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(rename = "user_named", skip_serializing_if = "Option::is_none")]
pub user_named: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesGetWorkspaceResult {
pub workspace: Option<WorkspacesGetWorkspaceResultWorkspace>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesListFilesResult {
pub files: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesReadFileRequest {
pub path: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WorkspacesReadFileResult {
pub content: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ModelsListResult {
pub models: Vec<Model>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ToolsListResult {
pub tools: Vec<Tool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpConfigListResult {
pub servers: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SkillsDiscoverResult {
pub skills: Vec<ServerSkill>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSuspendParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAuthGetStatusParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAuthGetStatusResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub auth_type: Option<AuthInfoType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub copilot_plan: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub host: Option<String>,
pub is_authenticated: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub login: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_message: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModelGetCurrentParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModelGetCurrentResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub model_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModelSwitchToResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub model_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModeGetParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionNameGetParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionNameGetResult {
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPlanReadParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPlanReadResult {
pub content: Option<String>,
pub exists: bool,
pub path: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPlanDeleteParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesGetWorkspaceParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesGetWorkspaceResultWorkspace {
#[serde(skip_serializing_if = "Option::is_none")]
pub branch: Option<String>,
#[serde(
rename = "chronicle_sync_dismissed",
skip_serializing_if = "Option::is_none"
)]
pub chronicle_sync_dismissed: Option<bool>,
#[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(rename = "git_root", skip_serializing_if = "Option::is_none")]
pub git_root: Option<String>,
#[serde(rename = "host_type", skip_serializing_if = "Option::is_none")]
pub host_type: Option<SessionWorkspacesGetWorkspaceResultWorkspaceHostType>,
pub id: String,
#[serde(rename = "mc_last_event_id", skip_serializing_if = "Option::is_none")]
pub mc_last_event_id: Option<String>,
#[serde(rename = "mc_session_id", skip_serializing_if = "Option::is_none")]
pub mc_session_id: Option<String>,
#[serde(rename = "mc_task_id", skip_serializing_if = "Option::is_none")]
pub mc_task_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "remote_steerable", skip_serializing_if = "Option::is_none")]
pub remote_steerable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository: Option<String>,
#[serde(rename = "session_sync_level", skip_serializing_if = "Option::is_none")]
pub session_sync_level: Option<SessionWorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(rename = "summary_count", skip_serializing_if = "Option::is_none")]
pub summary_count: Option<i64>,
#[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(rename = "user_named", skip_serializing_if = "Option::is_none")]
pub user_named: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesGetWorkspaceResult {
pub workspace: Option<SessionWorkspacesGetWorkspaceResultWorkspace>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesListFilesParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesListFilesResult {
pub files: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionWorkspacesReadFileResult {
pub content: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionInstructionsGetSourcesParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionInstructionsGetSourcesResult {
pub sources: Vec<InstructionsSources>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionFleetStartResult {
pub started: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentListResult {
pub agents: Vec<AgentInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentGetCurrentParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentGetCurrentResult {
pub agent: AgentInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentSelectResult {
pub agent: AgentInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentDeselectParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentReloadParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionAgentReloadResult {
pub agents: Vec<AgentInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksStartAgentResult {
pub agent_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksListResult {
pub tasks: Vec<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksPromoteToBackgroundResult {
pub promoted: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksCancelResult {
pub cancelled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTasksRemoveResult {
pub removed: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSkillsListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSkillsListResult {
pub skills: Vec<Skill>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSkillsReloadParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionMcpListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionMcpListResult {
pub servers: Vec<McpServer>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionMcpReloadParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionMcpOauthLoginResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub authorization_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPluginsListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPluginsListResult {
pub plugins: Vec<Plugin>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionExtensionsListParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionExtensionsListResult {
pub extensions: Vec<Extension>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionExtensionsReloadParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolsHandlePendingToolCallResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionCommandsHandlePendingCommandResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionUiElicitationResult {
pub action: UIElicitationResponseAction,
#[serde(default)]
pub content: HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionUiHandlePendingElicitationResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPermissionsHandlePendingPermissionRequestResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPermissionsSetApproveAllResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPermissionsResetSessionApprovalsResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionLogResult {
pub event_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionShellExecResult {
pub process_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionShellKillResult {
pub killed: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionHistoryCompactParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionHistoryCompactResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub context_window: Option<HistoryCompactContextWindow>,
pub messages_removed: i64,
pub success: bool,
pub tokens_removed: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionHistoryTruncateResult {
pub events_removed: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionUsageGetMetricsParams {
pub session_id: SessionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionUsageGetMetricsResult {
pub code_changes: UsageMetricsCodeChanges,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_model: Option<String>,
pub last_call_input_tokens: i64,
pub last_call_output_tokens: i64,
pub model_metrics: HashMap<String, UsageMetricsModelMetric>,
pub session_start_time: i64,
#[serde(default)]
pub token_details: HashMap<String, UsageMetricsTokenDetail>,
pub total_api_duration_ms: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_nano_aiu: Option<i64>,
pub total_premium_request_cost: f64,
pub total_user_requests: i64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AuthInfoType {
#[serde(rename = "hmac")]
Hmac,
#[serde(rename = "env")]
Env,
#[serde(rename = "user")]
User,
#[serde(rename = "gh-cli")]
GhCli,
#[serde(rename = "api-key")]
ApiKey,
#[serde(rename = "token")]
Token,
#[serde(rename = "copilot-api-token")]
CopilotApiToken,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DiscoveredMcpServerSource {
#[serde(rename = "user")]
User,
#[serde(rename = "workspace")]
Workspace,
#[serde(rename = "plugin")]
Plugin,
#[serde(rename = "builtin")]
Builtin,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DiscoveredMcpServerType {
#[serde(rename = "stdio")]
Stdio,
#[serde(rename = "http")]
Http,
#[serde(rename = "sse")]
Sse,
#[serde(rename = "memory")]
Memory,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExtensionSource {
#[serde(rename = "project")]
Project,
#[serde(rename = "user")]
User,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExtensionStatus {
#[serde(rename = "running")]
Running,
#[serde(rename = "disabled")]
Disabled,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "starting")]
Starting,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentAudioType {
#[serde(rename = "audio")]
Audio,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentImageType {
#[serde(rename = "image")]
Image,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentResourceType {
#[serde(rename = "resource")]
Resource,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentResourceLinkIconTheme {
#[serde(rename = "light")]
Light,
#[serde(rename = "dark")]
Dark,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentResourceLinkType {
#[serde(rename = "resource_link")]
ResourceLink,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentTerminalType {
#[serde(rename = "terminal")]
Terminal,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExternalToolTextResultForLlmContentTextType {
#[serde(rename = "text")]
Text,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FilterMappingString {
#[serde(rename = "none")]
None,
#[serde(rename = "markdown")]
Markdown,
#[serde(rename = "hidden_characters")]
HiddenCharacters,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FilterMappingValue {
#[serde(rename = "none")]
None,
#[serde(rename = "markdown")]
Markdown,
#[serde(rename = "hidden_characters")]
HiddenCharacters,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum InstructionsSourcesLocation {
#[serde(rename = "user")]
User,
#[serde(rename = "repository")]
Repository,
#[serde(rename = "working-directory")]
WorkingDirectory,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum InstructionsSourcesType {
#[serde(rename = "home")]
Home,
#[serde(rename = "repo")]
Repo,
#[serde(rename = "model")]
Model,
#[serde(rename = "vscode")]
Vscode,
#[serde(rename = "nested-agents")]
NestedAgents,
#[serde(rename = "child-instructions")]
ChildInstructions,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionLogLevel {
#[serde(rename = "info")]
Info,
#[serde(rename = "warning")]
Warning,
#[serde(rename = "error")]
Error,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerSource {
#[serde(rename = "user")]
User,
#[serde(rename = "workspace")]
Workspace,
#[serde(rename = "plugin")]
Plugin,
#[serde(rename = "builtin")]
Builtin,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerStatus {
#[serde(rename = "connected")]
Connected,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "needs-auth")]
NeedsAuth,
#[serde(rename = "pending")]
Pending,
#[serde(rename = "disabled")]
Disabled,
#[serde(rename = "not_configured")]
NotConfigured,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerConfigHttpOauthGrantType {
#[serde(rename = "authorization_code")]
AuthorizationCode,
#[serde(rename = "client_credentials")]
ClientCredentials,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerConfigHttpType {
#[serde(rename = "http")]
Http,
#[serde(rename = "sse")]
Sse,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerConfigLocalType {
#[serde(rename = "local")]
Local,
#[serde(rename = "stdio")]
Stdio,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionMode {
#[serde(rename = "interactive")]
Interactive,
#[serde(rename = "plan")]
Plan,
#[serde(rename = "autopilot")]
Autopilot,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalCommandsKind {
#[serde(rename = "commands")]
Commands,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalReadKind {
#[serde(rename = "read")]
Read,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalWriteKind {
#[serde(rename = "write")]
Write,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalMcpKind {
#[serde(rename = "mcp")]
Mcp,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalMcpSamplingKind {
#[serde(rename = "mcp-sampling")]
McpSampling,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalMemoryKind {
#[serde(rename = "memory")]
Memory,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationApprovalCustomToolKind {
#[serde(rename = "custom-tool")]
CustomTool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PermissionDecisionApproveForLocationApproval {
Commands(PermissionDecisionApproveForLocationApprovalCommands),
Read(PermissionDecisionApproveForLocationApprovalRead),
Write(PermissionDecisionApproveForLocationApprovalWrite),
Mcp(PermissionDecisionApproveForLocationApprovalMcp),
McpSampling(PermissionDecisionApproveForLocationApprovalMcpSampling),
Memory(PermissionDecisionApproveForLocationApprovalMemory),
CustomTool(PermissionDecisionApproveForLocationApprovalCustomTool),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForLocationKind {
#[serde(rename = "approve-for-location")]
ApproveForLocation,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalCommandsKind {
#[serde(rename = "commands")]
Commands,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalReadKind {
#[serde(rename = "read")]
Read,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalWriteKind {
#[serde(rename = "write")]
Write,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalMcpKind {
#[serde(rename = "mcp")]
Mcp,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalMcpSamplingKind {
#[serde(rename = "mcp-sampling")]
McpSampling,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalMemoryKind {
#[serde(rename = "memory")]
Memory,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionApprovalCustomToolKind {
#[serde(rename = "custom-tool")]
CustomTool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PermissionDecisionApproveForSessionApproval {
Commands(PermissionDecisionApproveForSessionApprovalCommands),
Read(PermissionDecisionApproveForSessionApprovalRead),
Write(PermissionDecisionApproveForSessionApprovalWrite),
Mcp(PermissionDecisionApproveForSessionApprovalMcp),
McpSampling(PermissionDecisionApproveForSessionApprovalMcpSampling),
Memory(PermissionDecisionApproveForSessionApprovalMemory),
CustomTool(PermissionDecisionApproveForSessionApprovalCustomTool),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveForSessionKind {
#[serde(rename = "approve-for-session")]
ApproveForSession,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApproveOnceKind {
#[serde(rename = "approve-once")]
ApproveOnce,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionApprovePermanentlyKind {
#[serde(rename = "approve-permanently")]
ApprovePermanently,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionRejectKind {
#[serde(rename = "reject")]
Reject,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionDecisionUserNotAvailableKind {
#[serde(rename = "user-not-available")]
UserNotAvailable,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PermissionDecision {
ApproveOnce(PermissionDecisionApproveOnce),
ApproveForSession(PermissionDecisionApproveForSession),
ApproveForLocation(PermissionDecisionApproveForLocation),
ApprovePermanently(PermissionDecisionApprovePermanently),
Reject(PermissionDecisionReject),
UserNotAvailable(PermissionDecisionUserNotAvailable),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionFsErrorCode {
ENOENT,
UNKNOWN,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionFsReaddirWithTypesEntryType {
#[serde(rename = "file")]
File,
#[serde(rename = "directory")]
Directory,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionFsSetProviderConventions {
#[serde(rename = "windows")]
Windows,
#[serde(rename = "posix")]
Posix,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ShellKillSignal {
SIGTERM,
SIGKILL,
SIGINT,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskAgentInfoExecutionMode {
#[serde(rename = "sync")]
Sync,
#[serde(rename = "background")]
Background,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskAgentInfoStatus {
#[serde(rename = "running")]
Running,
#[serde(rename = "idle")]
Idle,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskAgentInfoType {
#[serde(rename = "agent")]
Agent,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskShellInfoAttachmentMode {
#[serde(rename = "attached")]
Attached,
#[serde(rename = "detached")]
Detached,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskShellInfoExecutionMode {
#[serde(rename = "sync")]
Sync,
#[serde(rename = "background")]
Background,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskShellInfoStatus {
#[serde(rename = "running")]
Running,
#[serde(rename = "idle")]
Idle,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskShellInfoType {
#[serde(rename = "shell")]
Shell,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationArrayAnyOfFieldType {
#[serde(rename = "array")]
Array,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationArrayEnumFieldItemsType {
#[serde(rename = "string")]
String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationArrayEnumFieldType {
#[serde(rename = "array")]
Array,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationSchemaType {
#[serde(rename = "object")]
Object,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationResponseAction {
#[serde(rename = "accept")]
Accept,
#[serde(rename = "decline")]
Decline,
#[serde(rename = "cancel")]
Cancel,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationSchemaPropertyBooleanType {
#[serde(rename = "boolean")]
Boolean,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationSchemaPropertyNumberType {
#[serde(rename = "number")]
Number,
#[serde(rename = "integer")]
Integer,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationSchemaPropertyStringFormat {
#[serde(rename = "email")]
Email,
#[serde(rename = "uri")]
Uri,
#[serde(rename = "date")]
Date,
#[serde(rename = "date-time")]
DateTime,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationSchemaPropertyStringType {
#[serde(rename = "string")]
String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationStringEnumFieldType {
#[serde(rename = "string")]
String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UIElicitationStringOneOfFieldType {
#[serde(rename = "string")]
String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum WorkspacesGetWorkspaceResultWorkspaceHostType {
#[serde(rename = "github")]
Github,
#[serde(rename = "ado")]
Ado,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum WorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel {
#[serde(rename = "local")]
Local,
#[serde(rename = "user")]
User,
#[serde(rename = "repo_and_user")]
RepoAndUser,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionWorkspacesGetWorkspaceResultWorkspaceHostType {
#[serde(rename = "github")]
Github,
#[serde(rename = "ado")]
Ado,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionWorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel {
#[serde(rename = "local")]
Local,
#[serde(rename = "user")]
User,
#[serde(rename = "repo_and_user")]
RepoAndUser,
#[serde(other)]
Unknown,
}