Files
tolaria/src-tauri/src/kiro_discovery.rs
lucaronin efd3cd4f27 Merge pull request #572 from oksusucha/feat/add-kiro-cli-agent
feat: add Kiro CLI as AI agent

Co-authored-by: oksusucha <sol4877@gmail.com>
2026-05-18 13:55:43 +02:00

60 lines
1.7 KiB
Rust

use crate::ai_agents::AiAgentAvailability;
use std::path::{Path, PathBuf};
pub(crate) fn check_cli() -> AiAgentAvailability {
crate::cli_agent_runtime::check_cli_availability(find_binary)
}
pub(crate) fn find_binary() -> Result<PathBuf, String> {
crate::cli_agent_runtime::find_cli_binary(
"kiro-cli",
kiro_binary_candidates(),
"Kiro CLI",
"https://kiro.dev/docs/cli",
)
}
fn kiro_binary_candidates() -> Vec<PathBuf> {
dirs::home_dir()
.map(|home| kiro_binary_candidates_for_home(&home))
.unwrap_or_default()
}
fn kiro_binary_candidates_for_home(home: &Path) -> Vec<PathBuf> {
vec![
home.join(".local/bin/kiro-cli"),
home.join(".kiro/bin/kiro-cli"),
home.join(".local/share/mise/shims/kiro-cli"),
home.join(".asdf/shims/kiro-cli"),
home.join(".npm-global/bin/kiro-cli"),
home.join(".npm/bin/kiro-cli"),
home.join(".bun/bin/kiro-cli"),
PathBuf::from("/usr/local/bin/kiro-cli"),
PathBuf::from("/opt/homebrew/bin/kiro-cli"),
]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn binary_candidates_include_supported_installs() {
let home = PathBuf::from("/Users/alex");
let candidates = kiro_binary_candidates_for_home(&home);
let expected = [
home.join(".local/bin/kiro-cli"),
home.join(".kiro/bin/kiro-cli"),
home.join(".npm-global/bin/kiro-cli"),
PathBuf::from("/opt/homebrew/bin/kiro-cli"),
];
for candidate in expected {
assert!(
candidates.contains(&candidate),
"missing {}",
candidate.display()
);
}
}
}