Skip to main content

AgentLoopError

Enum AgentLoopError 

Source
pub enum AgentLoopError {
Show 16 variants Llm(LlmError), RequestTooLarge(String), ModelNotAvailable(String), ModelNotConfigured, ToolExecution(String), MessageStore(String), EventEmission(String), Configuration(String), MaxIterationsReached(usize), Cancelled, NoMessages, AgentNotFound(AgentId), HarnessNotFound(HarnessId), SessionNotFound(SessionId), Internal(Error), DriverNotRegistered(String),
}
Expand description

Errors that can occur during agent loop execution

Variants§

§

Llm(LlmError)

LLM provider error

§

RequestTooLarge(String)

Request too large error (context length exceeded, token limits, etc.) Contains the original error message for logging

§

ModelNotAvailable(String)

Model not available (404, model not found, access denied for model) Contains the model_id string that was requested

§

ModelNotConfigured

No explicit, snapshot, or system-default model could be resolved.

§

ToolExecution(String)

Tool execution error

§

MessageStore(String)

Message store error

§

EventEmission(String)

Event emission error

§

Configuration(String)

Configuration error

§

MaxIterationsReached(usize)

Loop terminated due to max iterations

§

Cancelled

Loop was cancelled

§

NoMessages

No messages to process

§

AgentNotFound(AgentId)

Agent not found

§

HarnessNotFound(HarnessId)

Harness not found

§

SessionNotFound(SessionId)

Session not found

§

Internal(Error)

Internal error

§

DriverNotRegistered(String)

Driver not registered for provider type

Implementations§

Source§

impl AgentLoopError

Source

pub fn with_provider(self, provider: &str) -> Self

Prefix provider-bound messages without changing structured identifiers.

Source

pub fn llm(msg: impl Into<String>) -> Self

Create an LLM error with no semantic kind (falls back to string classification downstream).

Source

pub fn llm_kind(kind: LlmErrorKind, msg: impl Into<String>) -> Self

Create an LLM error with a semantic kind assigned at the driver boundary.

Source

pub fn llm_http(status: u16, body: &str, msg: impl Into<String>) -> Self

Create an LLM error from an HTTP failure, classifying it and keeping the status.

This is the constructor HTTP drivers reach for: it is the one place that both classifies (via LlmErrorKind::from_provider_status) and preserves the status a consumer would otherwise have to parse back out of the message.

Source

pub fn llm_http_kind( kind: LlmErrorKind, status: u16, body: &str, msg: impl Into<String>, ) -> Self

Create an LLM error from an HTTP failure a driver has already classified, keeping the status and the provider’s error code.

The counterpart to llm_http for drivers whose protocol extension classifies more precisely than status and body alone allow.

Source

pub fn provider_capability_rejected( capability: RejectedProviderCapability, status: u16, body: &str, msg: impl Into<String>, ) -> Self

Create a structured pre-stream provider capability rejection.

Source

pub fn rejected_provider_capability( &self, capability: RejectedProviderCapability, ) -> bool

Whether this error rejects the specified provider capability.

Source

pub fn with_status(self, status: u16) -> Self

Attach the HTTP status to an LLM error that was classified elsewhere.

No-op on non-LLM variants, whose status is implied by the variant and reported by http_status.

Source

pub fn with_retry_after_secs(self, secs: u64) -> Self

Attach the delay the provider asked for before another attempt.

Source

pub fn http_status(&self) -> Option<u16>

The HTTP status this failure corresponds to, if any.

Reports the recorded status for Llm, and the status the variant itself stands for where Everruns classified the failure semantically instead of carrying one: ModelNotAvailable is 404 and RequestTooLarge is 413. Everything else is None — a caller putting an API in front of Everruns picks its own status rather than being handed a guess.

Source

pub fn provider_error_code(&self) -> Option<&str>

The provider’s own machine-readable error code, if one was preserved.

Source

pub fn retry_after_secs(&self) -> Option<u64>

The delay the provider asked for before another attempt, in seconds.

Reads the recorded Retry-After first, then the delay LlmErrorKind::BillingPressure carries.

Source

pub fn with_retry_metadata(self, metadata: &RetryMetadata) -> Self

Attach retries already consumed by a lower provider layer. The reason loop uses this to avoid multiplying attempt budgets across layers.

Source

pub fn llm_retry_attempts(&self) -> u32

Number of lower-layer retries already consumed by this failure.

Source

pub fn llm_retry_handled(&self) -> bool

Whether a lower provider layer already exhausted or rejected recovery.

Source

pub fn llm_error_kind(&self) -> Option<LlmErrorKind>

Get the semantic LLM error kind, if this is an LLM error.

Source

pub fn tool(msg: impl Into<String>) -> Self

Create a tool execution error

Source

pub fn store(msg: impl Into<String>) -> Self

Create a message store error

Source

pub fn event(msg: impl Into<String>) -> Self

Create an event emission error

Source

pub fn config(msg: impl Into<String>) -> Self

Create a configuration error

Source

pub fn agent_not_found(agent_id: AgentId) -> Self

Create an agent not found error

Source

pub fn harness_not_found(harness_id: HarnessId) -> Self

Create a harness not found error

Source

pub fn session_not_found(session_id: SessionId) -> Self

Create a session not found error

Source

pub fn driver_not_registered(provider_type: impl Into<String>) -> Self

Create a driver not registered error

Source

pub fn request_too_large(msg: impl Into<String>) -> Self

Create a request too large error

Source

pub fn model_not_available(model_id: impl Into<String>) -> Self

Create a model not available error

Source

pub fn model_not_configured() -> Self

Create a missing-model configuration error.

Source

pub fn is_request_too_large(&self) -> bool

Check if this is a request-too-large error

Source

pub fn is_model_not_available(&self) -> bool

Check if this is a model-not-available error

Source

pub fn model_not_available_id(&self) -> Option<&str>

Get the model ID if this is a model-not-available error

Source

pub fn is_rate_limited(&self) -> bool

Check if this is a rate-limit error (semantic kind, or HTTP 429 / rate-limit keywords for untyped errors)

Source

pub fn is_auth_error(&self) -> bool

Check if this is an authentication/authorization error (HTTP 401/403)

Source

pub fn is_server_error(&self) -> bool

Check if this is a server error (HTTP 5xx or transient provider issue)

Source

pub fn is_transient_llm_error(&self) -> bool

Check whether an LLM failure is safe to retry.

Semantic driver classification is authoritative. Untyped legacy errors retain the message-based fallback until all drivers preserve structure.

Source

pub fn is_non_retryable(&self) -> bool

Check if this error is deterministic and should never be retried.

Non-retryable errors reference data that is permanently gone (e.g. a deleted message, a missing agent). Retrying will never succeed and only burns attempts while keeping the workflow stuck.

Note: the durable worker currently uses string-matching via is_non_retryable_task_error because task errors arrive as strings. This method provides the typed equivalent for callers that have access to a structured AgentLoopError.

Source

pub fn user_facing_message(&self) -> String

Get user-facing error message based on error classification

Source

pub fn user_facing_error( &self, context: UserFacingErrorContext, ) -> UserFacingError

Get structured user-facing error metadata based on error classification.

Trait Implementations§

Source§

impl Debug for AgentLoopError

Source§

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

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

impl Display for AgentLoopError

Source§

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

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

impl Error for AgentLoopError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for AgentLoopError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<OpenAiWireError> for AgentLoopError

Source§

fn from(error: OpenAiWireError) -> Self

Converts to this type from the input type.

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

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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, !>

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