Skip to main content

PeError

Enum PeError 

Source
#[non_exhaustive]
pub enum PeError {
Show 54 variants GraphRecursion { limit: u32, }, GraphInterrupt { reason: String, }, NodeInterrupt { reason: String, }, InvalidUpdate { details: String, }, EmptyChannel { channel: String, }, GraphValue { details: String, }, UnreachableNode { node: String, }, EmptyInput, MultipleSubgraphs { details: String, }, AgentNotFound { agent_id: String, }, AgentUnreachable { agent_id: String, reason: String, }, HandoffCycle { path: String, }, MaxHandoffs { max: u32, }, PermissionDenied { action: String, }, ToolDenied { tool: String, reason: String, }, CommunicationBlocked { target: String, }, ApprovalDenied { action: String, reason: String, }, ApprovalRequired { action: String, }, GuardrailViolation { guardrail: String, details: String, }, WriteGovernanceViolation { destination: String, reason: String, }, InspectionDenied { root: String, reason: String, }, InspectionFailed { path: String, reason: String, }, ToolExecution { tool: String, reason: String, }, ToolNotFound { tool: String, }, ToolAlreadyRegistered { tool: String, }, LlmProvider { details: String, }, LlmAuth { details: String, }, LlmRateLimit { details: String, }, LlmEmpty, MockProviderExhausted, EmbeddingDimension { expected: usize, actual: usize, }, StructuredOutput { details: String, }, Storage { details: String, }, CheckpointNotFound { thread_id: String, }, BusError { details: String, }, NegotiationFailed { reason: String, }, NegotiationInterrupted { reason: String, }, Timeout { seconds: f64, }, BudgetExceeded { budget_type: String, }, InvalidAgent(String), ManifestLoad(String), ManifestParse(String), CyclicDelegation { chain: Vec<String>, attempted: String, }, ResumePointMismatch { expected: String, actual: String, }, MissingHumanInput, MatrixDimensionMismatch { expected: usize, actual: usize, }, NodeNotFound { node: String, }, ConstraintViolation { constraint: String, detail: String, }, CompositionError { reason: String, }, InvalidPayload { reason: String, }, CognitiveBudgetExhausted { agent_id: String, tokens_used: u32, limit: u32, }, CognitiveSignalVeto { agent_id: String, lobe: String, reason: String, }, LobeActivationFailed { lobe: String, reason: String, }, Internal { details: String, },
}

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

GraphRecursion

Fields

§limit: u32
§

GraphInterrupt

Fields

§reason: String
§

NodeInterrupt

Fields

§reason: String
§

InvalidUpdate

Fields

§details: String
§

EmptyChannel

Fields

§channel: String
§

GraphValue

Fields

§details: String
§

UnreachableNode

Fields

§node: String
§

EmptyInput

§

MultipleSubgraphs

Fields

§details: String
§

AgentNotFound

Fields

§agent_id: String
§

AgentUnreachable

Fields

§agent_id: String
§reason: String
§

HandoffCycle

Fields

§path: String
§

MaxHandoffs

Fields

§max: u32
§

PermissionDenied

Fields

§action: String
§

ToolDenied

Fields

§tool: String
§reason: String
§

CommunicationBlocked

Fields

§target: String
§

ApprovalDenied

Fields

§action: String
§reason: String
§

ApprovalRequired

Fields

§action: String
§

GuardrailViolation

Fields

§guardrail: String
§details: String
§

WriteGovernanceViolation

Fields

§destination: String
§reason: String
§

InspectionDenied

Fields

§root: String
§reason: String
§

InspectionFailed

Fields

§path: String
§reason: String
§

ToolExecution

Fields

§tool: String
§reason: String
§

ToolNotFound

Fields

§tool: String
§

ToolAlreadyRegistered

Fields

§tool: String
§

LlmProvider

Fields

§details: String
§

LlmAuth

Authentication/authorization failed (HTTP 401/403). NOT retryable — a bad API key will never succeed on retry.

Fields

§details: String
§

LlmRateLimit

Rate limited by the provider (HTTP 429). Retryable with backoff.

Fields

§details: String
§

LlmEmpty

§

MockProviderExhausted

§

EmbeddingDimension

Fields

§expected: usize
§actual: usize
§

StructuredOutput

Fields

§details: String
§

Storage

Fields

§details: String
§

CheckpointNotFound

Fields

§thread_id: String
§

BusError

Fields

§details: String
§

NegotiationFailed

Fields

§reason: String
§

NegotiationInterrupted

Fields

§reason: String
§

Timeout

Fields

§seconds: f64
§

BudgetExceeded

Fields

§budget_type: String
§

InvalidAgent(String)

§

ManifestLoad(String)

§

ManifestParse(String)

§

CyclicDelegation

Fields

§chain: Vec<String>
§attempted: String
§

ResumePointMismatch

Resume point mismatch between checkpoint and command.

Fields

§expected: String

The resume point stored in the checkpoint.

§actual: String

The resume point provided by the caller.

§

MissingHumanInput

Node expected human input on resume but none was provided.

§

MatrixDimensionMismatch

Fields

§expected: usize
§actual: usize
§

NodeNotFound

Fields

§node: String
§

ConstraintViolation

Fields

§constraint: String
§detail: String
§

CompositionError

Fields

§reason: String
§

InvalidPayload

Fields

§reason: String
§

CognitiveBudgetExhausted

Cognitive budget exhausted — lobes consumed all allocated tokens/time.

Fields

§agent_id: String
§tokens_used: u32
§limit: u32
§

CognitiveSignalVeto

A lobe vetoed the output — blocks execution.

Fields

§agent_id: String
§lobe: String
§reason: String
§

LobeActivationFailed

A lobe failed to activate or process.

This is a structural failure (not transient). Transient failures (e.g., model unavailable) should be reported as PeError::LlmProvider or PeError::Timeout by the lobe itself before returning this error.

Fields

§lobe: String
§reason: String
§

Internal

Fields

§details: String

Implementations§

Source§

impl PeError

Source

pub fn is_retryable(&self) -> bool

Whether this error is retryable by a retry policy.

Transient failures (timeouts, LLM provider errors, tool execution errors) are retryable. Structural errors (invalid graph, permission denied, missing input) are not.

Source

pub fn is_transient(&self) -> bool

Whether this error represents a transient condition that may resolve later.

Transient errors are temporary — the same operation might succeed on retry or after a delay. Permanent errors indicate structural problems that will never resolve without code/config changes.

is_retryable() is a subset of is_transient(): all retryable errors are transient, but some transient errors (like BusError) may not benefit from immediate retry.

Trait Implementations§

Source§

impl Clone for PeError

Source§

fn clone(&self) -> PeError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PeError

Source§

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

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

impl Display for PeError

Source§

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

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

impl Error for PeError

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§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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, 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.