//! Shared abort-flag checks. //! //! The two variants (Option> and bare AtomicBool) are //! used across the agent runtime, subagent, workflow engine, and provider. use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; /// Check whether an optional abort flag has been signalled. pub fn is_aborted(flag: &Option>) -> bool { flag.as_ref().is_some_and(|f| f.load(Ordering::SeqCst)) } /// Check whether a bare abort flag has been signalled. pub fn is_aborted_direct(flag: &AtomicBool) -> bool { flag.load(Ordering::SeqCst) } /// Check whether an optional borrowed abort flag has been signalled. /// /// This variant handles the `Option<&AtomicBool>` pattern used in /// service/provider.rs where the flag is passed as a by-value optional /// reference rather than an `Arc`. pub fn is_aborted_ref(flag: Option<&AtomicBool>) -> bool { flag.is_some_and(|f| f.load(Ordering::SeqCst)) }