pub struct TaskStateMachine { /* private fields */ }Expand description
A validating state machine for A2A task lifecycle transitions
(DW-114). Holds the current state; transition methods validate the
transition and return the new state, or an A2AError when the
transition is illegal.
The state machine is the in-process task tracker; it does NOT own
a network connection (the adapter intentionally does not own an
HTTP client — the transport is the agent’s upstream, driven from
dataplane::ai_proxy). The state machine is updated by the
dataplane as it observes task responses and events.
Implementations§
Source§impl TaskStateMachine
impl TaskStateMachine
Sourcepub fn from_state(state: TaskLifecycle) -> Self
pub fn from_state(state: TaskLifecycle) -> Self
Create a state machine at a specific state (used when reconstructing a task from a persisted or observed state).
Sourcepub fn state(&self) -> TaskLifecycle
pub fn state(&self) -> TaskLifecycle
The current state.
Sourcepub fn transition_to(
&mut self,
target: TaskLifecycle,
) -> Result<TaskLifecycle, A2AError>
pub fn transition_to( &mut self, target: TaskLifecycle, ) -> Result<TaskLifecycle, A2AError>
Transition to target, returning the new state on success or
an A2AError::IllegalTransition when the transition is not
legal from the current state.
Sourcepub fn start_work(&mut self) -> Result<TaskLifecycle, A2AError>
pub fn start_work(&mut self) -> Result<TaskLifecycle, A2AError>
Start processing the task (Submitted -> Working). Returns the new state or an error when the task is not in the Submitted state.
Sourcepub fn complete(&mut self) -> Result<TaskLifecycle, A2AError>
pub fn complete(&mut self) -> Result<TaskLifecycle, A2AError>
Mark the task as completed (Working -> Completed). Returns the new state or an error when the task is not in the Working state.
Sourcepub fn fail(&mut self) -> Result<TaskLifecycle, A2AError>
pub fn fail(&mut self) -> Result<TaskLifecycle, A2AError>
Mark the task as failed (Submitted|Working -> Failed). Returns the new state or an error when the task is in a terminal state.
Sourcepub fn cancel(&mut self) -> Result<TaskLifecycle, A2AError>
pub fn cancel(&mut self) -> Result<TaskLifecycle, A2AError>
Cancel the task (Submitted|Working -> Canceled). Returns the new state or an error when the task is in a terminal state.
Sourcepub fn is_terminal(&self) -> bool
pub fn is_terminal(&self) -> bool
Whether the task is in a terminal state (Completed, Failed, or Canceled — no further transitions are possible).
Trait Implementations§
Source§impl Clone for TaskStateMachine
impl Clone for TaskStateMachine
Source§fn clone(&self) -> TaskStateMachine
fn clone(&self) -> TaskStateMachine
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TaskStateMachine
impl Debug for TaskStateMachine
Auto Trait Implementations§
impl Freeze for TaskStateMachine
impl RefUnwindSafe for TaskStateMachine
impl Send for TaskStateMachine
impl Sync for TaskStateMachine
impl Unpin for TaskStateMachine
impl UnwindSafe for TaskStateMachine
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more