Skip to main content

ResumeEvent

Enum ResumeEvent 

Source
pub(super) enum ResumeEvent {
    SpawnedWithResume {
        generation: u64,
        attempted_sid: String,
        retry: RetryPayload,
    },
    SpawnedFresh {
        generation: u64,
    },
    SessionCaptured {
        generation: u64,
        sid: String,
        is_confirmed_success: bool,
    },
    MessageAppendedToRetryBatch {
        generation: u64,
        entry: QueuedRetryEntry,
    },
    ResumeUnreachable {
        generation: u64,
        sid: String,
    },
    ErrorResultLine {
        generation: u64,
        line: String,
    },
    ProcessExited {
        generation: u64,
    },
    StopRequested {
        generation: u64,
    },
}
Expand description

Events the stdin writer / stdout reader / stderr reader / process- waiter sensor tasks report. Each carries the exact spawn generation it was observed for.

Variants§

§

SpawnedWithResume

A fresh spawn attached --resume <attempted_sid>; generation is this spawn’s identity for the rest of its lifetime.

Fields

§generation: u64
§attempted_sid: String
§

SpawnedFresh

A fresh spawn did NOT attach --resume (no session id held yet). generation is this spawn’s identity, carried so NotTracking can tell a later, legitimate ProcessExited for THIS generation apart from a stale one for whatever generation it superseded.

Fields

§generation: u64
§

SessionCaptured

A session-id-bearing stdout frame arrived for this generation. sid is the id it carried; is_confirmed_success is true only when THIS exact frame is a terminal result with is_error:false — a fully-completed, genuinely successful turn.

reagentx P0 on PR #2371: the CLI echoes back whatever --resume sid it was given as its FIRST stdout line REGARDLESS of whether that resume goes on to succeed or fail — this is true even for a frame that isn’t itself an error (e.g. a “system”/init frame), and this first echo can arrive before the independently-scheduled stderr reader has had a chance to report “No conversation found” and poison it. So sid == attempted_sid alone is NOT proof of genuine progress — it’s ambiguous until EITHER a different sid appears (the CLI gave up and started fresh — unambiguous) OR a successful terminal result confirms the WHOLE turn actually completed (also unambiguous). Only those two cases resolve tracking; a same-sid echo on any other frame type is left untouched, giving ResumeUnreachable a real chance to promote the retry first if this turns out to be the doomed case.

Fields

§generation: u64
§is_confirmed_success: bool
§

MessageAppendedToRetryBatch

The drain appended another message to this generation’s retry batch before it was known to be doomed (or after it was confirmed doomed but before the process actually exited).

Fields

§generation: u64
§

ResumeUnreachable

stderr reader saw “No conversation found” for this exact sid.

Fields

§generation: u64
§

ErrorResultLine

stdout reader saw a terminal result/is_error:true line.

Fields

§generation: u64
§line: String
§

ProcessExited

The process actually exited.

Fields

§generation: u64
§

StopRequested

stop_process was called while this generation was live.

Fields

§generation: u64

Trait Implementations§

Source§

impl Clone for ResumeEvent

Source§

fn clone(&self) -> ResumeEvent

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 ResumeEvent

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

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn from_ref(input: &T) -> T

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

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

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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

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

§

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
§

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> 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 = 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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