use async_trait::async_trait;
use bamboo_agent_core::tools::ToolCall;
use bamboo_agent_core::{AgentError, Session};
#[derive(Debug, Clone)]
pub struct MiniLoopDecision {
pub answer: String,
pub prompt_tokens: u64,
pub completion_tokens: u64,
}
#[async_trait]
pub trait MiniLoopExecutor: Send + Sync {
async fn decide(
&self,
session: &Session,
prompt: &str,
context: &str,
) -> Result<MiniLoopDecision, AgentError>;
async fn evaluate_task(
&self,
session: &Session,
tool_calls: &[ToolCall],
round: usize,
) -> Result<MiniLoopDecision, AgentError>;
}