use crate::budget::BudgetReport;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ExecResult {
pub command: String,
pub stdout: String,
pub stderr: String,
pub exit_code: i32,
pub duration_ms: u64,
pub cwd: String,
pub truncated: bool,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub budget: Option<BudgetReport>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ShellState {
pub cwd: String,
pub last_exit: i32,
}