pub mod antigravity;
pub mod bundles;
pub mod claude;
pub mod codex;
pub mod copilot;
pub mod cursor;
pub mod gemini;
pub mod kimi;
pub mod registry;
pub mod score;
mod fs_util;
use std::path::{Path, PathBuf};
use chrono::{DateTime, Utc};
use serde::Serialize;
pub use registry::{detect_all, detect_all_with_home};
pub use score::{compute_score, pick_primary};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum InstallStatus {
Yes,
No,
Unknown,
}
#[derive(Debug, Clone, Serialize)]
pub struct AgentSnapshot {
pub id: &'static str,
pub display_name: &'static str,
pub status: InstallStatus,
pub sessions: Option<u64>,
pub last_used: Option<DateTime<Utc>>,
pub score: f64,
pub paths_checked: Vec<PathBuf>,
}
pub trait AgentDetector: Send + Sync {
fn id(&self) -> &'static str;
fn display_name(&self) -> &'static str;
fn detect(&self, home: &Path) -> AgentSnapshot;
}