Skip to main content

Error

Enum Error 

Source
pub enum Error {
    Config(String),
    Provider {
        status: Option<u16>,
        message: String,
    },
    Unsupported,
    LowConfidence {
        best_guess: Value,
        confidence: f64,
    },
    Deserialization(String),
    SchemaError(String),
    ToolIterationLimit(u32),
    ToolNotFound(String),
    Timeout,
    StoreError(String),
    Sqlx(String),
}
Expand description

Errors that can occur in ferro-ai operations.

Variants§

§

Config(String)

Configuration error (missing env var or invalid value).

§

Provider

HTTP provider error with optional status code for retry logic.

The message field carries only provider response text. It MUST NOT contain the API key or auth header.

Fields

§status: Option<u16>

HTTP status code if the failure carried one. Network errors have None.

§message: String

Provider-supplied error message. Must not contain the API key or auth header.

§

Unsupported

This provider does not implement the requested capability.

Returned by capability methods a provider lacks (e.g. AnthropicClient::embed()). Never panics — callers check for this variant to implement fallback behavior.

§

LowConfidence

Classification returned confidence below the configured threshold.

Fields

§best_guess: Value

The best guess returned by the provider.

§confidence: f64

The confidence score (0.0–1.0).

§

Deserialization(String)

Failed to deserialize the provider response into the target type.

§

SchemaError(String)

Schema normalization failed (malformed schemars output or unexpected structure).

§

ToolIterationLimit(u32)

Tool dispatch loop exceeded the configured max_iterations without finishing.

§

ToolNotFound(String)

A tool name referenced in a provider response is not registered.

Not currently constructed by ToolRegistry::dispatch. The dispatch loop intentionally surfaces unknown tool names to the LLM as a [ToolError] message (model-recoverable, per D-13/SC#6) rather than aborting the loop. This variant is reserved for future direct-dispatch helpers (e.g. a dispatch_single that calls one tool by name and must distinguish “not registered” from handler errors). Callers pattern-matching on Error should not expect this variant to be reachable from dispatch in the current implementation.

§

Timeout

Request timed out after all retries were exhausted.

§

StoreError(String)

Confirmation store operation failed.

§

Sqlx(String)

sqlx database error from the pgvector store.

Only reachable when the pgvector feature is enabled and PgVectorStore::store or PgVectorStore::nearest is called. The message is sqlx::Error::to_string() — it does not contain embedding data (f32 arrays are not included in sqlx error messages).

Implementations§

Source§

impl Error

Source

pub fn is_retryable(&self) -> bool

Returns true for errors that should trigger a retry.

Permanent HTTP errors (400, 401, 403, 404, 422) are not retried. Transient errors (429, 500, 503, 529) and network errors (status: None) are retried. All non-Provider variants (including Unsupported and Timeout) return false.

Trait Implementations§

Source§

impl Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Error for Error

1.30.0 · 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

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

§

impl UnwindSafe for Error

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> PolicyExt for T
where T: ?Sized,

Source§

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

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> 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> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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