pub enum SubAgentFailure {
StreamTimeoutAfterRetry,
HallucinationLoop {
reads: usize,
file: String,
},
NoProgress {
idle_turns: usize,
},
BudgetExhaustedNoEdits,
SubAgentTimeout5min,
ProviderError(String),
JoinError(String),
Cancelled,
}Expand description
Structured reason a sub-agent ended in failure. Replaces the old
errors: Vec<String> so callers can match on discriminant instead
of substring-matching on free text.
Variants§
StreamTimeoutAfterRetry
Stream-timeout-class network failure that survived one in-loop retry.
HallucinationLoop
Model read the same file ≥ hallucination_read_threshold times
without producing a successful edit, AND the recovery turn after
the nudge also failed to edit.
NoProgress
no_edit_runs reached idle_kill_threshold. May or may not be
preceded by a hallucination nudge.
BudgetExhaustedNoEdits
Loop exited because turn budget was exhausted and zero edits had landed. (If edits landed, exit is treated as success.)
SubAgentTimeout5min
Pool wall-time wrapper (default 5min) tripped.
ProviderError(String)
Provider returned a non-timeout-class error (network, 4xx/5xx).
JoinError(String)
tokio::JoinSet reported the task panicked or was cancelled at
the runtime level.
Cancelled
User pressed Ctrl+C / cancellation token tripped.
Trait Implementations§
Source§impl Clone for SubAgentFailure
impl Clone for SubAgentFailure
Source§fn clone(&self) -> SubAgentFailure
fn clone(&self) -> SubAgentFailure
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SubAgentFailure
impl RefUnwindSafe for SubAgentFailure
impl Send for SubAgentFailure
impl Sync for SubAgentFailure
impl Unpin for SubAgentFailure
impl UnsafeUnpin for SubAgentFailure
impl UnwindSafe for SubAgentFailure
Blanket Implementations§
Source§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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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