#[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
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
NoTerminationPath
Cyclic graph has nodes with no path to END (infinite loop risk)
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
impl FlowgentraError
Sourcepub fn is_retryable(&self) -> bool
pub fn is_retryable(&self) -> bool
Returns true if this is a transport-level error safe to retry.
Source§impl FlowgentraError
impl FlowgentraError
Sourcepub fn context(self, msg: &str) -> Self
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'");Sourcepub fn is_timeout(&self) -> bool
pub fn is_timeout(&self) -> bool
Check if error is a timeout
Sourcepub fn is_validation_error(&self) -> bool
pub fn is_validation_error(&self) -> bool
Check if error is a validation error
Sourcepub fn is_llm_error(&self) -> bool
pub fn is_llm_error(&self) -> bool
Check if error is an LLM error
Sourcepub fn is_state_error(&self) -> bool
pub fn is_state_error(&self) -> bool
Check if error is a state-related error
Trait Implementations§
Source§impl Debug for FlowgentraError
impl Debug for FlowgentraError
Source§impl Display for FlowgentraError
impl Display for FlowgentraError
Source§impl Error for FlowgentraError
impl Error for FlowgentraError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()