Skip to main content

InterruptToken

Struct InterruptToken 

Source
pub struct InterruptToken { /* private fields */ }
Expand description

Async-safe cancellation token shared across all components of a run.

§Usage

let token = InterruptToken::new();
let child = token.clone();

// In the agent thread
if child.is_requested() {
    // bail out
}

// In the UI thread on ESC
token.request();

Implementations§

Source§

impl InterruptToken

Source

pub fn new() -> Self

Create a new un-triggered token.

Source

pub fn request(&self)

Signal that the user wants to cancel the current operation.

This is cheap and idempotent — calling it multiple times is fine.

Source

pub fn force_interrupt(&self)

Force-interrupt the current operation.

In the Rust implementation this is identical to request() since we rely on cooperative cancellation via the CancellationToken rather than injecting async exceptions into threads (which is a CPython-specific trick).

Source

pub fn request_background(&self)

Request that the current operation be moved to the background.

This cancels the CancellationToken to immediately interrupt any in-flight async operation (LLM streaming, tool execution), but does NOT set the hard interrupt flag. The react loop distinguishes background from hard interrupt by checking is_background_requested().

Source

pub fn is_background_requested(&self) -> bool

Check whether backgrounding has been requested.

Source

pub fn is_requested(&self) -> bool

Check whether cancellation has been requested.

This is a cheap atomic load suitable for hot polling loops.

Source

pub fn throw_if_requested(&self) -> Result<(), InterruptedError>

Return an error if cancellation was requested.

Source

pub async fn cancelled(&self)

Wait until cancellation is requested.

This is the primary async integration point — select! against this alongside your actual work future.

Source

pub fn cancellation_token(&self) -> &CancellationToken

Get the underlying tokio_util::sync::CancellationToken.

Useful when you need to pass a token to lower-level async code or create child tokens.

Source

pub fn child_token(&self) -> CancellationToken

Create a child token that is cancelled when the parent is cancelled.

Source

pub fn reset(&self)

Clear the cancellation signal (use with care — mainly for token reuse across multiple agent runs).

Source

pub fn should_interrupt(&self) -> bool

Alias for is_requested() — TaskMonitor compatibility.

Source

pub fn request_interrupt(&self)

Alias for request() — TaskMonitor compatibility.

Trait Implementations§

Source§

impl Clone for InterruptToken

Source§

fn clone(&self) -> InterruptToken

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for InterruptToken

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for InterruptToken

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more