terminal-info 1.4.3

An extensible terminal information CLI and developer toolbox
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum AgentState {
    Running,
    Waiting,
    Idle,
    Error,
    Paused,
}

#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum AgentTaskState {
    Pending,
    Running,
    Done,
    Failed,
}

#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum ApprovalState {
    Pending,
    Approved,
    Denied,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AgentTask {
    pub id: String,
    pub description: String,
    pub source: String,
    pub state: AgentTaskState,
    pub created_at: u64,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AgentSession {
    pub id: String,
    pub adapter_type: String,
    pub display_name: String,
    pub command: String,
    pub args: Vec<String>,
    pub cwd: Option<String>,
    pub auto_start: bool,
    pub state: AgentState,
    pub pid: Option<u32>,
    pub current_session_id: Option<String>,
    pub current_task: Option<AgentTask>,
    pub pending_approval_action: Option<String>,
    pub last_output: Option<String>,
    pub last_error: Option<String>,
    pub last_event_at: u64,
}

#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ApprovalKind {
    ShellCommand,
    FileWrite,
    NetworkCall,
    PackageInstall,
    Other,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct ApprovalRequest {
    pub id: String,
    pub agent_id: String,
    pub kind: ApprovalKind,
    pub action: String,
    pub details: Option<String>,
    pub state: ApprovalState,
    pub created_at: u64,
    pub resolved_at: Option<u64>,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AgentLogEntry {
    pub timestamp: u64,
    pub agent_id: String,
    pub level: String,
    pub message: String,
}