use crate::types::{AgentError, AgentResult, SessionId};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ToolErrorAction {
Stop,
Retry,
}
pub trait ToolErrorRecovery: Send + Sync {
fn on_error(
&self,
_session_id: &SessionId,
_tool_names: &[String],
_error: &AgentError,
) -> AgentResult<ToolErrorAction>;
}
pub struct StopOnError;
impl ToolErrorRecovery for StopOnError {
fn on_error(
&self,
_session_id: &SessionId,
_tool_names: &[String],
_error: &AgentError,
) -> AgentResult<ToolErrorAction> {
Ok(ToolErrorAction::Stop)
}
}
pub struct RetryOnError;
impl ToolErrorRecovery for RetryOnError {
fn on_error(
&self,
_session_id: &SessionId,
_tool_names: &[String],
_error: &AgentError,
) -> AgentResult<ToolErrorAction> {
Ok(ToolErrorAction::Retry)
}
}