wacht 0.1.0-beta.5

Official Rust SDK for the Wacht platform, providing type-safe API client and authentication middleware
Documentation
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileData {
    pub filename: String,
    pub mime_type: String,
    pub data: String,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NewMessageRequest {
    pub message: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub files: Option<Vec<FileData>>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ToolApprovalSelection {
    pub tool_name: String,
    pub mode: String,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ApprovalResponseRequest {
    pub request_message_id: String,
    pub approvals: Vec<ToolApprovalSelection>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CancelRequest {}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExecuteAgentRequestType {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub new_message: Option<NewMessageRequest>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub approval_response: Option<ApprovalResponseRequest>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cancel: Option<CancelRequest>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExecuteAgentRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub agent_id: Option<String>,
    pub execution_type: ExecuteAgentRequestType,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExecuteAgentResponse {
    pub status: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub conversation_id: Option<String>,
}