aura-gui 0.2.1

UI nativa acelerada por GPU para escritorio, Android e iOS, en un solo crate: estilo tipo Tailwind, componentes, sombras, animaciones y agentes de IA. Reposo a cero. Licencia AGPL-3.0 o comercial.
//! Dónde buscar programas externos (agentes ACP, servidores MCP, CLIs de inicio de sesión).
//!
//! Una app abierta desde el Finder hereda un `PATH` mínimo, sin `~/.local/bin`, Homebrew ni nvm: aquí se completa.

use crate::core::platform;
use std::ffi::OsString;
use std::path::PathBuf;

/// Directorios de búsqueda: el `PATH` heredado primero y después los lugares habituales del sistema.
pub fn search_dirs() -> Vec<PathBuf> {
    platform::tool_dirs()
}

/// Ruta completa del programa: tal cual si ya es una ruta; si no, el primero que exista en `search_dirs`.
pub fn resolve(command: &str) -> PathBuf {
    platform::find_program(command)
}

/// `PATH` para el proceso hijo: así `npx` encuentra `node` aunque la app no heredara su directorio.
pub fn child_path() -> OsString {
    platform::path_for_child()
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn delega_en_la_capa_de_sistema() {
        assert_eq!(resolve("/opt/mi/agente"), PathBuf::from("/opt/mi/agente"));
        assert_eq!(resolve("no-existe-aura-xyz"), PathBuf::from("no-existe-aura-xyz"));
        assert!(!child_path().is_empty() && !search_dirs().is_empty());
    }
}