use std::path::PathBuf;
use std::sync::LazyLock;
pub static CONFIG_DIR: LazyLock<PathBuf> = LazyLock::new(|| {
dirs::home_dir()
.expect("no home directory")
.join(".crabtalk")
});
pub static RUN_DIR: LazyLock<PathBuf> = LazyLock::new(|| CONFIG_DIR.join("run"));
#[cfg(unix)]
pub static SOCKET_PATH: LazyLock<PathBuf> = LazyLock::new(|| RUN_DIR.join("crabtalk.sock"));
pub static TCP_PORT_FILE: LazyLock<PathBuf> = LazyLock::new(|| RUN_DIR.join("crabtalk.port"));
pub static LOGS_DIR: LazyLock<PathBuf> = LazyLock::new(|| CONFIG_DIR.join("logs"));
pub const CONFIG_FILE: &str = "config.toml";
pub const LOCAL_DIR: &str = "local";
pub const PLUGINS_DIR: &str = "plugins";
pub const AGENTS_DIR: &str = "local/agents";
pub const SKILLS_DIR: &str = "local/skills";
pub static CONVERSATIONS_DIR: LazyLock<PathBuf> = LazyLock::new(|| CONFIG_DIR.join("sessions"));
pub static TOKENS_DIR: LazyLock<PathBuf> = LazyLock::new(|| CONFIG_DIR.join("tokens"));
pub const DEFAULT_AGENT: &str = "crab";
pub fn service_port_file(name: &str) -> PathBuf {
RUN_DIR.join(format!("{name}.port"))
}
pub fn service_log_path(name: &str) -> PathBuf {
LOGS_DIR.join(format!("{name}.log"))
}