Skip to main content

FlowgentraError

Enum FlowgentraError 

Source
#[non_exhaustive]
pub enum FlowgentraError {
Show 27 variants ConfigError(String), GraphError(String), NodeNotFound(String), InvalidEdge(String), RoutingError(String), CycleDetected, RecursionLimitExceeded { limit: usize, }, NoTerminationPath { nodes: String, }, NodeExecutionError(String), RuntimeError(String), InvalidStateTransition(String), ExecutionError(String), ExecutionAborted(String), TimeoutError, ExecutionTimeout(String), ParallelExecutionError(String), StateError(String), Context(String, Box<FlowgentraError>), LLMError(String), MCPError(String), MCPTransportError(String), MCPServerError(String), ToolError(String), ValidationError(String), SerializationError(Error), YamlError(String), IoError(Error),
}
Expand description

Comprehensive error enum covering all possible FlowgentraAI failures

Each variant is designed to provide context about what went wrong, making it easy to handle different error scenarios.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

ConfigError(String)

Invalid or malformed configuration

§

GraphError(String)

Issues with graph structure or operations

§

NodeNotFound(String)

Node not found in the graph

§

InvalidEdge(String)

Invalid edge definition

§

RoutingError(String)

Routing condition failed

§

CycleDetected

Cycle detected in acyclic graph

§

RecursionLimitExceeded

Recursion limit exceeded during graph execution

Fields

§limit: usize
§

NoTerminationPath

Cyclic graph has nodes with no path to END (infinite loop risk)

Fields

§nodes: String
§

NodeExecutionError(String)

Error during node execution

§

RuntimeError(String)

Runtime orchestration error

§

InvalidStateTransition(String)

Invalid state transition

§

ExecutionError(String)

Execution failed

§

ExecutionAborted(String)

Execution aborted by middleware

§

TimeoutError

Operation timed out

§

ExecutionTimeout(String)

Execution timeout

§

ParallelExecutionError(String)

Error during parallel execution

§

StateError(String)

Error with state management

§

Context(String, Box<FlowgentraError>)

Error context wrapper preserving the original error trace

§

LLMError(String)

LLM operation failed

§

MCPError(String)

MCP (Model Context Protocol) operation failed

§

MCPTransportError(String)

MCP transport-level error (connection refused, timeout, DNS failure). Safe to retry because the request never reached the server.

§

MCPServerError(String)

MCP server-side error (HTTP 5xx, tool execution failure). NOT safe to retry blindly — the tool may have executed.

§

ToolError(String)

Tool operation failed

§

ValidationError(String)

Validation error (e.g., schema validation)

§

SerializationError(Error)

JSON serialization/deserialization failed

§

YamlError(String)

YAML parsing failed

§

IoError(Error)

File I/O operation failed

Implementations§

Source§

impl FlowgentraError

Source

pub fn is_retryable(&self) -> bool

Returns true if this is a transport-level error safe to retry.

Source§

impl FlowgentraError

Source

pub fn context(self, msg: &str) -> Self

Add context to an error message

Useful for providing debugging information without re-wrapping the error.

§Example
use flowgentra_ai::core::error::FlowgentraError;

let err = FlowgentraError::ConfigError("invalid value".to_string());
let contextualized = err.context("while loading agent config from 'config.yaml'");
Source

pub fn is_timeout(&self) -> bool

Check if error is a timeout

Source

pub fn is_validation_error(&self) -> bool

Check if error is a validation error

Source

pub fn is_llm_error(&self) -> bool

Check if error is an LLM error

Source

pub fn is_state_error(&self) -> bool

Check if error is a state-related error

Source

pub fn hint(&self) -> Option<&'static str>

Get a hint for common error scenarios

Trait Implementations§

Source§

impl Debug for FlowgentraError

Source§

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

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

impl Display for FlowgentraError

Source§

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

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

impl Error for FlowgentraError

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 FlowgentraError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for FlowgentraError

Source§

fn from(source: Error) -> 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 = 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<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,