pub enum WorkflowRuntimeError {
Show 41 variants
Validation(ValidationErrors),
MissingStartNode,
NodeNotFound {
node_id: String,
},
StepLimitExceeded {
max_steps: usize,
},
Cancelled,
Llm {
node_id: String,
source: LlmExecutionError,
},
Tool {
node_id: String,
source: ToolExecutionError,
},
LlmRetryExhausted {
node_id: String,
attempts: usize,
last_error: LlmExecutionError,
},
ToolRetryExhausted {
node_id: String,
attempts: usize,
last_error: ToolExecutionError,
},
LlmTimeout {
node_id: String,
timeout_ms: u128,
attempts: usize,
},
ToolTimeout {
node_id: String,
timeout_ms: u128,
attempts: usize,
},
MissingToolExecutor {
node_id: String,
},
MissingNextEdge {
node_id: String,
},
InvalidCondition {
node_id: String,
expression: String,
reason: String,
},
InvalidLoopCondition {
node_id: String,
expression: String,
reason: String,
},
LoopIterationLimitExceeded {
node_id: String,
max_iterations: u32,
},
MissingNextTransition {
node_id: String,
},
ScopeAccess {
node_id: String,
source: ScopeAccessError,
},
TraceRecording(TraceRecordError),
Replay(ReplayError),
ReplayRequiresTraceRecording,
ParallelBranchUnsupported {
node_id: String,
branch_id: String,
reason: String,
},
MissingMergeSource {
node_id: String,
source_id: String,
},
MergeQuorumNotMet {
node_id: String,
required: usize,
resolved: usize,
},
MapItemsNotArray {
node_id: String,
items_path: String,
},
InvalidReduceInput {
node_id: String,
source_node: String,
reason: String,
},
SubgraphNotFound {
node_id: String,
graph: String,
},
BatchItemsNotArray {
node_id: String,
items_path: String,
},
FilterItemsNotArray {
node_id: String,
items_path: String,
},
InvalidFilterExpression {
node_id: String,
expression: String,
reason: String,
},
ExpressionScopeLimitExceeded {
node_id: String,
actual_bytes: usize,
limit_bytes: usize,
},
ParallelBranchLimitExceeded {
node_id: String,
actual_branches: usize,
max_branches: usize,
},
MapItemLimitExceeded {
node_id: String,
actual_items: usize,
max_items: usize,
},
FilterItemLimitExceeded {
node_id: String,
actual_items: usize,
max_items: usize,
},
MissingPath {
node_id: String,
path: String,
},
CacheKeyNotString {
node_id: String,
path: String,
},
InvalidHumanDecision {
node_id: String,
path: String,
value: String,
},
InvalidEventValue {
node_id: String,
path: String,
},
InvalidRouterExpression {
node_id: String,
expression: String,
reason: String,
},
InvalidTransformExpression {
node_id: String,
expression: String,
reason: String,
},
RetryCompensateFailed {
node_id: String,
attempts: usize,
compensation_error: ToolExecutionError,
},
}Expand description
Runtime failures.
Variants§
Validation(ValidationErrors)
Workflow failed structural validation.
MissingStartNode
Workflow has no start node.
NodeNotFound
Current node id not found in node index.
StepLimitExceeded
Loop protection guard triggered.
Cancelled
Execution cancelled by caller.
Llm
LLM node failed.
Tool
Tool node failed.
LlmRetryExhausted
LLM node exhausted all retry attempts.
Fields
last_error: LlmExecutionErrorLast attempt error.
ToolRetryExhausted
Tool node exhausted all retry attempts.
Fields
last_error: ToolExecutionErrorLast attempt error.
LlmTimeout
LLM node timed out across all attempts.
Fields
ToolTimeout
Tool node timed out across all attempts.
Fields
MissingToolExecutor
Tool node reached without an executor.
MissingNextEdge
LLM/tool node missing its next edge.
InvalidCondition
Condition expression could not be evaluated.
Fields
InvalidLoopCondition
Loop condition expression could not be evaluated.
Fields
LoopIterationLimitExceeded
Loop exceeded configured max iterations.
MissingNextTransition
Non-terminal node did not return a next transition.
ScopeAccess
Scoped state boundary check failed.
TraceRecording(TraceRecordError)
Trace recorder operation failed.
Replay(ReplayError)
Replay trace validation failed.
ReplayRequiresTraceRecording
Replay mode requested without trace recording.
ParallelBranchUnsupported
Parallel branch references unsupported node kind.
Fields
MissingMergeSource
Merge node cannot resolve one or more sources.
MergeQuorumNotMet
Merge quorum policy could not be satisfied.
Fields
MapItemsNotArray
Map node items path did not resolve to an array.
InvalidReduceInput
Reduce node source value is not reducible.
Fields
SubgraphNotFound
Subgraph registry key not found.
BatchItemsNotArray
Batch source path did not resolve to an array.
FilterItemsNotArray
Filter source path did not resolve to an array.
InvalidFilterExpression
Filter expression failed while evaluating one item.
ExpressionScopeLimitExceeded
Serialized expression scope exceeded configured runtime limit.
ParallelBranchLimitExceeded
Parallel branch fan-out exceeded configured runtime limit.
MapItemLimitExceeded
Map item count exceeded configured runtime limit.
FilterItemLimitExceeded
Filter item count exceeded configured runtime limit.
MissingPath
A node-required path could not be resolved.
CacheKeyNotString
A cache key path did not resolve to a string.
InvalidHumanDecision
Human decision value is unsupported.
InvalidEventValue
Event value did not resolve to a string.
InvalidRouterExpression
Router expression evaluation failed.
InvalidTransformExpression
Transform expression evaluation failed.
RetryCompensateFailed
Explicit retry/compensate node exhausted primary and compensation failed.
Trait Implementations§
Source§impl Debug for WorkflowRuntimeError
impl Debug for WorkflowRuntimeError
Source§impl Display for WorkflowRuntimeError
impl Display for WorkflowRuntimeError
Source§impl Error for WorkflowRuntimeError
impl Error for WorkflowRuntimeError
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()
Source§impl From<ReplayError> for WorkflowRuntimeError
impl From<ReplayError> for WorkflowRuntimeError
Source§fn from(source: ReplayError) -> Self
fn from(source: ReplayError) -> Self
Source§impl From<TraceRecordError> for WorkflowRuntimeError
impl From<TraceRecordError> for WorkflowRuntimeError
Source§fn from(source: TraceRecordError) -> Self
fn from(source: TraceRecordError) -> Self
Source§impl From<ValidationErrors> for WorkflowRuntimeError
impl From<ValidationErrors> for WorkflowRuntimeError
Source§fn from(source: ValidationErrors) -> Self
fn from(source: ValidationErrors) -> Self
Auto Trait Implementations§
impl Freeze for WorkflowRuntimeError
impl RefUnwindSafe for WorkflowRuntimeError
impl Send for WorkflowRuntimeError
impl Sync for WorkflowRuntimeError
impl Unpin for WorkflowRuntimeError
impl UnsafeUnpin for WorkflowRuntimeError
impl UnwindSafe for WorkflowRuntimeError
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.