ai-agent 0.13.4

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

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FpsMetrics {
    pub fps: f64,
    pub frame_time_ms: f64,
    pub last_update: i64,
}

impl FpsMetrics {
    pub fn new() -> Self {
        Self {
            fps: 0.0,
            frame_time_ms: 0.0,
            last_update: chrono::Utc::now().timestamp_millis(),
        }
    }

    pub fn update(&mut self, delta_time_ms: f64) {
        if delta_time_ms > 0.0 {
            self.frame_time_ms = delta_time_ms;
            self.fps = 1000.0 / delta_time_ms;
        }
        self.last_update = chrono::Utc::now().timestamp_millis();
    }

    pub fn is_stale(&self) -> bool {
        let now = chrono::Utc::now().timestamp_millis();
        now - self.last_update > 1000
    }
}

impl Default for FpsMetrics {
    fn default() -> Self {
        Self::new()
    }
}