Skip to main content

TaskResumeContext

Struct TaskResumeContext 

Source
#[non_exhaustive]
pub struct TaskResumeContext { pub tool_name: String, pub arguments: Value, pub input_responses: InputResponses, pub cancellation_token: Option<CancellationToken>, }
Expand description

What a resumed task needs to run its handler again.

The client answers a task through tasks/update, not by retrying tools/call, so the server re-invokes the handler itself and must supply what the client would otherwise have resent.

The handler runs from the top rather than continuing where it stopped, so the arguments are the original ones, unmodified, and input_responses accumulates across every round rather than holding only the latest answer.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§tool_name: String

Tool to re-invoke.

§arguments: Value

The original call arguments, unchanged.

§input_responses: InputResponses

Every answer accumulated so far, keyed as the requests were issued.

§cancellation_token: Option<CancellationToken>

Cancellation and expiry signal for the resumed execution, when the store attached one.

External stores should provide a clone of the token returned by TaskStore::create_task, or another token wired to the same durable cancellation and expiry source, via with_cancellation_token. The router fails the replay loudly when this is None, because a disconnected handler could otherwise run beyond the task deadline.

Implementations§

Source§

impl TaskResumeContext

Source

pub fn new( tool_name: impl Into<String>, arguments: Value, input_responses: InputResponses, ) -> Self

Create the context needed to resume a task handler.

External TaskStore implementations use this when reconstructing a task from durable state in TaskStore::resume_context. This keeps the original three-argument constructor source-compatible, but leaves cancellation_token as None; attach the task’s lifecycle token with with_cancellation_token before returning it to the router.

§Example
use tower_mcp::async_task::TaskResumeContext;

let resume = TaskResumeContext::new(
    "build_report",
    serde_json::json!({"format": "pdf"}),
    Default::default(),
);

assert_eq!(resume.tool_name, "build_report");
Source

pub fn with_cancellation_token(self, token: CancellationToken) -> Self

Attach the cancellation and expiry signal for replayed execution.

Self::new intentionally keeps its original three arguments for source compatibility. Stores that support resumption should call this builder with the token associated with the task so expiry can stop a replayed handler even when that handler does not poll cooperatively.

Trait Implementations§

Source§

impl Clone for TaskResumeContext

Source§

fn clone(&self) -> TaskResumeContext

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TaskResumeContext

Source§

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

Formats the value using the given formatter. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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