use anyhow::Result;
use super::react::{ReActConfig, ReActResponse};
use super::providers::ProviderAgent;
pub struct ReActExecutor;
impl ReActExecutor {
pub async fn execute(
agent: &ProviderAgent,
user_prompt: &str,
config: &ReActConfig,
model_name: &str,
) -> Result<ReActResponse> {
if config.verbose {
println!(
" ♻️ Activating Agent mode (model: {})",
model_name
);
}
match agent.prompt(user_prompt).await {
Ok(response) => {
if config.verbose {
println!(" ✅ Agent task completed");
}
Ok(ReActResponse::success(response, config.max_iterations))
}
Err(e) => {
if config.verbose {
println!(" ❌ Agent error: {:?}", e);
}
Err(anyhow::anyhow!("Agent task execution failed (model: {}): {}", model_name, e))
}
}
}
}