mod claude;
mod codex;
mod common;
pub use claude::ClaudeAdapter;
pub use codex::CodexAdapter;
use anyhow::{anyhow, Result};
use super::adapter::{AgentAdapter, SupportedAgent};
use crate::config::AiConfig;
pub fn create_adapter(name: &str, config: &AiConfig) -> Result<Box<dyn AgentAdapter>> {
let agent = SupportedAgent::from_name(name)
.ok_or_else(|| anyhow!("Unsupported agent: {}. Supported: claude, codex", name))?;
match agent {
SupportedAgent::Claude => Ok(Box::new(ClaudeAdapter::new(config))),
SupportedAgent::Codex => Ok(Box::new(CodexAdapter::new())),
}
}