#![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};
use crate::state::{
AgentInfo, ConfirmationOption, ErrorInfo, FileEdit, ModelSelection, PendingMessageKind,
ResponsePart, SessionActiveClient, SessionCustomization, SessionInputAnswer,
SessionInputRequest, SessionInputResponseKind, TerminalClaim, TerminalInfo,
ToolCallCancellationReason, ToolCallConfirmationReason, ToolCallResult, ToolDefinition,
ToolResultContent, UsageInfo, UserMessage,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ActionType {
#[serde(rename = "root/agentsChanged")]
RootAgentsChanged,
#[serde(rename = "root/activeSessionsChanged")]
RootActiveSessionsChanged,
#[serde(rename = "session/ready")]
SessionReady,
#[serde(rename = "session/creationFailed")]
SessionCreationFailed,
#[serde(rename = "session/turnStarted")]
SessionTurnStarted,
#[serde(rename = "session/delta")]
SessionDelta,
#[serde(rename = "session/responsePart")]
SessionResponsePart,
#[serde(rename = "session/toolCallStart")]
SessionToolCallStart,
#[serde(rename = "session/toolCallDelta")]
SessionToolCallDelta,
#[serde(rename = "session/toolCallReady")]
SessionToolCallReady,
#[serde(rename = "session/toolCallConfirmed")]
SessionToolCallConfirmed,
#[serde(rename = "session/toolCallComplete")]
SessionToolCallComplete,
#[serde(rename = "session/toolCallResultConfirmed")]
SessionToolCallResultConfirmed,
#[serde(rename = "session/toolCallContentChanged")]
SessionToolCallContentChanged,
#[serde(rename = "session/turnComplete")]
SessionTurnComplete,
#[serde(rename = "session/turnCancelled")]
SessionTurnCancelled,
#[serde(rename = "session/error")]
SessionError,
#[serde(rename = "session/titleChanged")]
SessionTitleChanged,
#[serde(rename = "session/usage")]
SessionUsage,
#[serde(rename = "session/reasoning")]
SessionReasoning,
#[serde(rename = "session/modelChanged")]
SessionModelChanged,
#[serde(rename = "session/serverToolsChanged")]
SessionServerToolsChanged,
#[serde(rename = "session/activeClientChanged")]
SessionActiveClientChanged,
#[serde(rename = "session/activeClientToolsChanged")]
SessionActiveClientToolsChanged,
#[serde(rename = "session/pendingMessageSet")]
SessionPendingMessageSet,
#[serde(rename = "session/pendingMessageRemoved")]
SessionPendingMessageRemoved,
#[serde(rename = "session/queuedMessagesReordered")]
SessionQueuedMessagesReordered,
#[serde(rename = "session/inputRequested")]
SessionInputRequested,
#[serde(rename = "session/inputAnswerChanged")]
SessionInputAnswerChanged,
#[serde(rename = "session/inputCompleted")]
SessionInputCompleted,
#[serde(rename = "session/customizationsChanged")]
SessionCustomizationsChanged,
#[serde(rename = "session/customizationToggled")]
SessionCustomizationToggled,
#[serde(rename = "session/truncated")]
SessionTruncated,
#[serde(rename = "session/isReadChanged")]
SessionIsReadChanged,
#[serde(rename = "session/isArchivedChanged")]
SessionIsArchivedChanged,
#[serde(rename = "session/activityChanged")]
SessionActivityChanged,
#[serde(rename = "session/diffsChanged")]
SessionDiffsChanged,
#[serde(rename = "session/configChanged")]
SessionConfigChanged,
#[serde(rename = "session/metaChanged")]
SessionMetaChanged,
#[serde(rename = "root/terminalsChanged")]
RootTerminalsChanged,
#[serde(rename = "root/configChanged")]
RootConfigChanged,
#[serde(rename = "terminal/data")]
TerminalData,
#[serde(rename = "terminal/input")]
TerminalInput,
#[serde(rename = "terminal/resized")]
TerminalResized,
#[serde(rename = "terminal/claimed")]
TerminalClaimed,
#[serde(rename = "terminal/titleChanged")]
TerminalTitleChanged,
#[serde(rename = "terminal/cwdChanged")]
TerminalCwdChanged,
#[serde(rename = "terminal/exited")]
TerminalExited,
#[serde(rename = "terminal/cleared")]
TerminalCleared,
#[serde(rename = "terminal/commandDetectionAvailable")]
TerminalCommandDetectionAvailable,
#[serde(rename = "terminal/commandExecuted")]
TerminalCommandExecuted,
#[serde(rename = "terminal/commandFinished")]
TerminalCommandFinished,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActionOrigin {
pub client_id: String,
pub client_seq: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActionEnvelope {
pub action: StateAction,
pub server_seq: u64,
pub origin: Option<ActionOrigin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rejection_reason: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootAgentsChangedAction {
pub agents: Vec<AgentInfo>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootActiveSessionsChangedAction {
pub active_sessions: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootConfigChangedAction {
pub config: JsonObject,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replace: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionReadyAction {
pub session: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionCreationFailedAction {
pub session: Uri,
pub error: ErrorInfo,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTurnStartedAction {
pub session: Uri,
pub turn_id: String,
pub user_message: UserMessage,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub queued_message_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionDeltaAction {
pub session: Uri,
pub turn_id: String,
pub part_id: String,
pub content: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionResponsePartAction {
pub session: Uri,
pub turn_id: String,
pub part: ResponsePart,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallStartAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub tool_name: String,
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_client_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallDeltaAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub content: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub invocation_message: Option<StringOrMarkdown>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallReadyAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub invocation_message: StringOrMarkdown,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_input: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmation_title: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub edits: Option<AnyValue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub editable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmed: Option<ToolCallConfirmationReason>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<ConfirmationOption>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallConfirmedAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub approved: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmed: Option<ToolCallConfirmationReason>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<ToolCallCancellationReason>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub edited_tool_input: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_suggestion: Option<UserMessage>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason_message: Option<StringOrMarkdown>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selected_option_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallCompleteAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub result: ToolCallResult,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub requires_result_confirmation: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallResultConfirmedAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub approved: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTurnCompleteAction {
pub session: Uri,
pub turn_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTurnCancelledAction {
pub session: Uri,
pub turn_id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionErrorAction {
pub session: Uri,
pub turn_id: String,
pub error: ErrorInfo,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTitleChangedAction {
pub session: Uri,
pub title: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionUsageAction {
pub session: Uri,
pub turn_id: String,
pub usage: UsageInfo,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionReasoningAction {
pub session: Uri,
pub turn_id: String,
pub part_id: String,
pub content: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionModelChangedAction {
pub session: Uri,
pub model: ModelSelection,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionIsReadChangedAction {
pub session: Uri,
pub is_read: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionIsArchivedChangedAction {
pub session: Uri,
pub is_archived: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionActivityChangedAction {
pub session: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub activity: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionServerToolsChangedAction {
pub session: Uri,
pub tools: Vec<ToolDefinition>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionActiveClientChangedAction {
pub session: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_client: Option<SessionActiveClient>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionActiveClientToolsChangedAction {
pub session: Uri,
pub tools: Vec<ToolDefinition>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPendingMessageSetAction {
pub session: Uri,
pub kind: PendingMessageKind,
pub id: String,
pub user_message: UserMessage,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionPendingMessageRemovedAction {
pub session: Uri,
pub kind: PendingMessageKind,
pub id: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionQueuedMessagesReorderedAction {
pub session: Uri,
pub order: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionInputRequestedAction {
pub session: Uri,
pub request: SessionInputRequest,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionInputAnswerChangedAction {
pub session: Uri,
pub request_id: String,
pub question_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub answer: Option<SessionInputAnswer>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionInputCompletedAction {
pub session: Uri,
pub request_id: String,
pub response: SessionInputResponseKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub answers: Option<std::collections::HashMap<String, SessionInputAnswer>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionCustomizationsChangedAction {
pub session: Uri,
pub customizations: Vec<SessionCustomization>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionCustomizationToggledAction {
pub session: Uri,
pub uri: Uri,
pub enabled: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionTruncatedAction {
pub session: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub turn_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionDiffsChangedAction {
pub session: Uri,
pub diffs: Vec<FileEdit>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionConfigChangedAction {
pub session: Uri,
pub config: JsonObject,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replace: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionMetaChangedAction {
pub session: Uri,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionToolCallContentChangedAction {
pub session: Uri,
pub turn_id: String,
pub tool_call_id: String,
#[serde(rename = "_meta", default, skip_serializing_if = "Option::is_none")]
pub meta: Option<JsonObject>,
pub content: Vec<ToolResultContent>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RootTerminalsChangedAction {
pub terminals: Vec<TerminalInfo>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalDataAction {
pub terminal: Uri,
pub data: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalInputAction {
pub terminal: Uri,
pub data: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalResizedAction {
pub terminal: Uri,
pub cols: i64,
pub rows: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalClaimedAction {
pub terminal: Uri,
pub claim: TerminalClaim,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalTitleChangedAction {
pub terminal: Uri,
pub title: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalCwdChangedAction {
pub terminal: Uri,
pub cwd: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalExitedAction {
pub terminal: Uri,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalClearedAction {
pub terminal: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalCommandDetectionAvailableAction {
pub terminal: Uri,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalCommandExecutedAction {
pub terminal: Uri,
pub command_id: String,
pub command_line: String,
pub timestamp: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TerminalCommandFinishedAction {
pub terminal: Uri,
pub command_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exit_code: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_ms: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum StateAction {
#[serde(rename = "root/agentsChanged")]
RootAgentsChanged(RootAgentsChangedAction),
#[serde(rename = "root/activeSessionsChanged")]
RootActiveSessionsChanged(RootActiveSessionsChangedAction),
#[serde(rename = "root/configChanged")]
RootConfigChanged(RootConfigChangedAction),
#[serde(rename = "session/ready")]
SessionReady(SessionReadyAction),
#[serde(rename = "session/creationFailed")]
SessionCreationFailed(SessionCreationFailedAction),
#[serde(rename = "session/turnStarted")]
SessionTurnStarted(SessionTurnStartedAction),
#[serde(rename = "session/delta")]
SessionDelta(SessionDeltaAction),
#[serde(rename = "session/responsePart")]
SessionResponsePart(SessionResponsePartAction),
#[serde(rename = "session/toolCallStart")]
SessionToolCallStart(SessionToolCallStartAction),
#[serde(rename = "session/toolCallDelta")]
SessionToolCallDelta(SessionToolCallDeltaAction),
#[serde(rename = "session/toolCallReady")]
SessionToolCallReady(SessionToolCallReadyAction),
#[serde(rename = "session/toolCallConfirmed")]
SessionToolCallConfirmed(SessionToolCallConfirmedAction),
#[serde(rename = "session/toolCallComplete")]
SessionToolCallComplete(SessionToolCallCompleteAction),
#[serde(rename = "session/toolCallResultConfirmed")]
SessionToolCallResultConfirmed(SessionToolCallResultConfirmedAction),
#[serde(rename = "session/turnComplete")]
SessionTurnComplete(SessionTurnCompleteAction),
#[serde(rename = "session/turnCancelled")]
SessionTurnCancelled(SessionTurnCancelledAction),
#[serde(rename = "session/error")]
SessionError(SessionErrorAction),
#[serde(rename = "session/titleChanged")]
SessionTitleChanged(SessionTitleChangedAction),
#[serde(rename = "session/usage")]
SessionUsage(SessionUsageAction),
#[serde(rename = "session/reasoning")]
SessionReasoning(SessionReasoningAction),
#[serde(rename = "session/modelChanged")]
SessionModelChanged(SessionModelChangedAction),
#[serde(rename = "session/isReadChanged")]
SessionIsReadChanged(SessionIsReadChangedAction),
#[serde(rename = "session/isArchivedChanged")]
SessionIsArchivedChanged(SessionIsArchivedChangedAction),
#[serde(rename = "session/activityChanged")]
SessionActivityChanged(SessionActivityChangedAction),
#[serde(rename = "session/serverToolsChanged")]
SessionServerToolsChanged(SessionServerToolsChangedAction),
#[serde(rename = "session/activeClientChanged")]
SessionActiveClientChanged(SessionActiveClientChangedAction),
#[serde(rename = "session/activeClientToolsChanged")]
SessionActiveClientToolsChanged(SessionActiveClientToolsChangedAction),
#[serde(rename = "session/pendingMessageSet")]
SessionPendingMessageSet(SessionPendingMessageSetAction),
#[serde(rename = "session/pendingMessageRemoved")]
SessionPendingMessageRemoved(SessionPendingMessageRemovedAction),
#[serde(rename = "session/queuedMessagesReordered")]
SessionQueuedMessagesReordered(SessionQueuedMessagesReorderedAction),
#[serde(rename = "session/inputRequested")]
SessionInputRequested(SessionInputRequestedAction),
#[serde(rename = "session/inputAnswerChanged")]
SessionInputAnswerChanged(SessionInputAnswerChangedAction),
#[serde(rename = "session/inputCompleted")]
SessionInputCompleted(SessionInputCompletedAction),
#[serde(rename = "session/customizationsChanged")]
SessionCustomizationsChanged(SessionCustomizationsChangedAction),
#[serde(rename = "session/customizationToggled")]
SessionCustomizationToggled(SessionCustomizationToggledAction),
#[serde(rename = "session/truncated")]
SessionTruncated(SessionTruncatedAction),
#[serde(rename = "session/diffsChanged")]
SessionDiffsChanged(SessionDiffsChangedAction),
#[serde(rename = "session/configChanged")]
SessionConfigChanged(SessionConfigChangedAction),
#[serde(rename = "session/metaChanged")]
SessionMetaChanged(SessionMetaChangedAction),
#[serde(rename = "session/toolCallContentChanged")]
SessionToolCallContentChanged(SessionToolCallContentChangedAction),
#[serde(rename = "root/terminalsChanged")]
RootTerminalsChanged(RootTerminalsChangedAction),
#[serde(rename = "terminal/data")]
TerminalData(TerminalDataAction),
#[serde(rename = "terminal/input")]
TerminalInput(TerminalInputAction),
#[serde(rename = "terminal/resized")]
TerminalResized(TerminalResizedAction),
#[serde(rename = "terminal/claimed")]
TerminalClaimed(TerminalClaimedAction),
#[serde(rename = "terminal/titleChanged")]
TerminalTitleChanged(TerminalTitleChangedAction),
#[serde(rename = "terminal/cwdChanged")]
TerminalCwdChanged(TerminalCwdChangedAction),
#[serde(rename = "terminal/exited")]
TerminalExited(TerminalExitedAction),
#[serde(rename = "terminal/cleared")]
TerminalCleared(TerminalClearedAction),
#[serde(rename = "terminal/commandDetectionAvailable")]
TerminalCommandDetectionAvailable(TerminalCommandDetectionAvailableAction),
#[serde(rename = "terminal/commandExecuted")]
TerminalCommandExecuted(TerminalCommandExecutedAction),
#[serde(rename = "terminal/commandFinished")]
TerminalCommandFinished(TerminalCommandFinishedAction),
#[serde(untagged)]
Unknown(serde_json::Value),
}