macro_rules! check_abort {
($io:expr, $phase:expr) => {{
let io = &$io;
let phase: $crate::agent::agent_turn::errors::AgentTurnSubPhase = $phase;
if $crate::agent::agent_turn::execute_tools::sse_sender_closed(io.control.out) {
return Err(
$crate::agent::agent_turn::errors::RunAgentTurnError::TurnAborted {
phase,
reason: $crate::agent::agent_turn::errors::TurnAbortReason::SseDisconnected,
},
);
}
if io
.cancel
.as_ref()
.is_some_and(|c| c.load(std::sync::atomic::Ordering::SeqCst))
{
return Err(
$crate::agent::agent_turn::errors::RunAgentTurnError::TurnAborted {
phase,
reason: $crate::agent::agent_turn::errors::TurnAbortReason::UserCancelled,
},
);
}
}};
}
pub(crate) use check_abort;