use anyhow::Result;
use std::path::Path;
pub async fn load_role(agent_name: &str) -> Result<String> {
let config = clawgarden_proto::AppConfig::load();
let path = Path::new(&config.agents_dir())
.join(agent_name)
.join("role.md");
match tokio::fs::read_to_string(&path).await {
Ok(content) => {
log::info!(
"Loaded role for agent '{}' from {}",
agent_name,
path.display()
);
Ok(content)
}
Err(e) => {
log::warn!(
"Role file not found for agent '{}' at {}: {}",
agent_name,
path.display(),
e
);
Ok(String::new())
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_load_role_missing_file() {
let result = load_role("nonexistent_agent").await;
assert!(result.is_ok());
assert!(result.unwrap().is_empty());
}
}