#![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};
#[allow(unused_imports)]
use crate::actions::{ActionEnvelope, StateAction};
#[allow(unused_imports)]
use crate::state::{
AgentSelection, ContentRef, Message, MessageAttachment, ModelSelection, SessionActiveClient,
SessionConfigSchema, SessionSummary, Snapshot, SnapshotState, TelemetryCapabilities,
TerminalClaim, TextRange, Turn,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ReconnectResultType {
#[serde(rename = "replay")]
Replay,
#[serde(rename = "snapshot")]
Snapshot,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ContentEncoding {
#[serde(rename = "base64")]
Base64,
#[serde(rename = "utf-8")]
Utf8,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum CompletionItemKind {
#[serde(rename = "userMessage")]
UserMessage,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ResourceType {
#[serde(rename = "file")]
File,
#[serde(rename = "directory")]
Directory,
#[serde(rename = "symlink")]
Symlink,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ResourceWriteMode {
#[serde(rename = "truncate")]
Truncate,
#[serde(rename = "append")]
Append,
#[serde(rename = "insert")]
Insert,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InitializeParams {
pub channel: Uri,
pub protocol_versions: Vec<String>,
pub client_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_info: Option<Implementation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub initial_subscriptions: Option<Vec<Uri>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capabilities: Option<ClientCapabilities>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InitializeResult {
pub protocol_version: String,
pub server_seq: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub server_info: Option<Implementation>,
pub snapshots: Vec<Snapshot>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completion_trigger_characters: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terminal_command_prefix: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub telemetry: Option<TelemetryCapabilities>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClientCapabilities {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mcp_apps: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Implementation {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReconnectParams {
pub channel: Uri,
pub client_id: String,
pub last_seen_server_seq: i64,
pub subscriptions: Vec<Uri>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReconnectReplayResult {
pub actions: Vec<ActionEnvelope>,
pub missing: Vec<Uri>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReconnectSnapshotResult {
pub snapshots: Vec<Snapshot>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscribeParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub delivery: Option<SubscriptionDeliveryOptions>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub view: Option<SubscribeView>,
}
impl SubscribeParams {
pub fn new(channel: impl Into<Uri>) -> Self {
Self {
channel: channel.into(),
delivery: None,
view: None,
}
}
pub fn with_delivery(channel: impl Into<Uri>, delivery: SubscriptionDeliveryOptions) -> Self {
Self {
channel: channel.into(),
delivery: Some(delivery),
view: None,
}
}
pub fn with_view(channel: impl Into<Uri>, view: SubscribeView) -> Self {
Self {
channel: channel.into(),
delivery: None,
view: Some(view),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SubscribeView {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub turns: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionDeliveryOptions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_latency_ms: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SubscribeResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub snapshot: Option<Snapshot>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionForkSource {
pub session: Uri,
pub turn_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateSessionParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fork: Option<SessionForkSource>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<JsonObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_client: Option<SessionActiveClient>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub progress_token: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DisposeSessionParams {
pub channel: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChatForkSource {
pub chat: Uri,
pub turn_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateChatParams {
pub channel: Uri,
pub chat: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub initial_message: Option<Message>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<ChatForkSource>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DisposeChatParams {
pub channel: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListSessionsParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListSessionsResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub next_cursor: Option<String>,
pub items: Vec<SessionSummary>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceReadParams {
pub channel: Uri,
pub uri: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub encoding: Option<ContentEncoding>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceReadResult {
pub data: String,
pub encoding: ContentEncoding,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceWriteParams {
pub channel: Uri,
pub uri: Uri,
pub data: String,
pub encoding: ContentEncoding,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub create_only: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<ResourceWriteMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub if_match: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceWriteResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceListParams {
pub channel: Uri,
pub uri: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceListResult {
pub entries: Vec<DirectoryEntry>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DirectoryEntry {
pub name: String,
pub r#type: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceCopyParams {
pub channel: Uri,
pub source: Uri,
pub destination: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fail_if_exists: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceCopyResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceDeleteParams {
pub channel: Uri,
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recursive: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceDeleteResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceMoveParams {
pub channel: Uri,
pub source: Uri,
pub destination: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fail_if_exists: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceMoveResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceResolveParams {
pub channel: Uri,
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub follow_symlinks: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceResolveResult {
pub uri: Uri,
pub r#type: ResourceType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mtime: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ctime: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceMkdirParams {
pub channel: Uri,
pub uri: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceMkdirResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceRequestParams {
pub channel: Uri,
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResourceRequestResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateResourceWatchParams {
pub channel: Uri,
pub uri: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recursive: Option<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 CreateResourceWatchResult {
pub channel: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FetchTurnsParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FetchTurnsResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UnsubscribeParams {
pub channel: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DispatchActionParams {
pub channel: Uri,
pub client_seq: i64,
pub action: StateAction,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuthenticateParams {
pub channel: Uri,
pub resource: String,
pub token: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuthenticateResult {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateTerminalParams {
pub channel: Uri,
pub claim: TerminalClaim,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<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>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DisposeTerminalParams {
pub channel: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResolveSessionConfigParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResolveSessionConfigResult {
pub schema: SessionConfigSchema,
pub values: JsonObject,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigCompletionsParams {
pub channel: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub working_directory: Option<Uri>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<JsonObject>,
pub property: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigCompletionsResult {
pub items: Vec<SessionConfigValueItem>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigValueItem {
pub value: String,
pub label: 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 CompletionsParams {
pub channel: Uri,
pub kind: CompletionItemKind,
pub text: String,
pub offset: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompletionItem {
pub insert_text: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range_start: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range_end: Option<i64>,
pub attachment: MessageAttachment,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompletionsResult {
pub items: Vec<CompletionItem>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InvokeChangesetOperationParams {
pub channel: Uri,
pub operation_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<ChangesetOperationTarget>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct InvokeChangesetOperationResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub follow_up: Option<ChangesetOperationFollowUp>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChangesetOperationFollowUp {
pub content: ContentRef,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub external: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ReconnectResult {
#[serde(rename = "replay")]
Replay(ReconnectReplayResult),
#[serde(rename = "snapshot")]
Snapshot(ReconnectSnapshotResult),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum ChangesetOperationTarget {
#[serde(rename = "resource")]
Resource {
resource: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
side: Option<String>,
},
#[serde(rename = "range")]
Range {
resource: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
side: Option<String>,
range: TextRange,
},
}