Skip to main content

TaskEndVariant

Enum TaskEndVariant 

Source
pub enum TaskEndVariant {
    Success,
    Unable,
    Failed,
    Unknown,
}
Expand description

Discriminator for EngineEvent::TaskEnd that tells consumers how a task finished without having to introspect the value payload. Extracted in #206 (Stream 4 follow-up): before this, a caller had to inspect the value for a Value::Unable envelope to distinguish “the agent said I can’t” from a well-typed successful return. Serde-tagged on a "variant" field so new arms ship without wire-shape churn.

#[serde(other)] on TaskEndVariant::Unknown preserves forward-compat: a future engine that adds e.g. Partial (#205) still deserializes on older SDKs — the unknown variant surfaces as Unknown and the stream keeps flowing. Do not match without a wildcard on this enum.

Variants§

§

Success

The task produced a well-typed value that passed every stage of the parse → schema → custom validation pipeline. This is the pre-#206 default and the variant carried when #[serde(default)] fires on payloads that omit the field entirely (older servers).

§

Unable

The task’s declared return type was T | Unable and the agent emitted a canonical {"unable": {...}} envelope. The value field on EngineEvent::TaskEnd carries the full Value::Unable record so consumers can render reason/missing/category without re-parsing.

§

Failed

The task ended with a dispatch-level failure — provider error, sandbox timeout, OOM kill, schema-validation budget exhausted, or any other path where the value on EngineEvent::TaskEnd is a Value::FatalError. Consumers grouping by task can use this to render a failure UI without inspecting value. Emitted from the runtime dispatch path; LLM tasks may also adopt it in a follow-up. Older SDKs that don’t know this variant will see it as Unknown via #[serde(other)] and behave as today.

§

Unknown

Catch-all for future variants the SDK doesn’t know yet. #[serde(other)] routes unknown discriminants here so consumers never crash on a newer engine — e.g. Partial lands in #205 and an older SDK will see it as Unknown until its own upgrade.

Trait Implementations§

Source§

impl Clone for TaskEndVariant

Source§

fn clone(&self) -> TaskEndVariant

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 TaskEndVariant

Source§

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

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

impl Default for TaskEndVariant

Source§

fn default() -> TaskEndVariant

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

impl<'de> Deserialize<'de> for TaskEndVariant

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for TaskEndVariant

Source§

fn eq(&self, other: &TaskEndVariant) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for TaskEndVariant

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for TaskEndVariant

Source§

impl Eq for TaskEndVariant

Source§

impl StructuralPartialEq for TaskEndVariant

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<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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,