ai-agent 0.88.0

Idiomatic agent sdk inspired by the claude code source leak
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VoiceState {
    pub enabled: bool,
    pub mode: VoiceMode,
    pub input_device: Option<String>,
    pub output_device: Option<String>,
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum VoiceMode {
    PushToTalk,
    VoiceActivity,
    Continuous,
}

impl Default for VoiceState {
    fn default() -> Self {
        Self {
            enabled: false,
            mode: VoiceMode::PushToTalk,
            input_device: None,
            output_device: None,
        }
    }
}

impl VoiceState {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn enable(&mut self) {
        self.enabled = true;
    }

    pub fn disable(&mut self) {
        self.enabled = false;
    }

    pub fn set_mode(&mut self, mode: VoiceMode) {
        self.mode = mode;
    }

    pub fn set_input_device(&mut self, device: String) {
        self.input_device = Some(device);
    }

    pub fn set_output_device(&mut self, device: String) {
        self.output_device = Some(device);
    }
}