colmugx/posoco/error does not have a README file

    AgentError

    pub(all) suberror AgentError {
    Model(String)
    Session(SessionError)
    Runtime(RuntimeError)
    ToolLoopExceeded(consumed~ : Int, limit~ : Int)
    PipelineAborted(String)
    Cancelled(String)
    AutoCompactFailed(String)
    } derive(
    Debug
    )

    impl Show for AgentError

    AgentError::output

    fn AgentError::output(self : AgentError, logger : &Logger) -> Unit

    AgentError::to_string

    fn AgentError::to_string(self : AgentError) -> String

    CommandError

    pub(all) suberror CommandError {
    NotFound(String)
    InvalidArgs(reason~ : String)
    ExecutionFailed(String)
    } derive(
    Debug
    )

    Errors raised by CommandPort.invoke: unknown command id, invalid args, or execution failure.

    CommandError::output

    fn CommandError::output(self : CommandError, logger : &Logger) -> Unit

    CommandError::to_string

    fn CommandError::to_string(self : CommandError) -> String

    CompositionError

    pub(all) suberror CompositionError {
    ToolCollision(String, String, manifests~ : Array[String])
    CommandCollision(String, manifests~ : Array[String])
    MissingModel
    MultipleModels(manifests~ : Array[String])
    MultipleDecisions(manifests~ : Array[String])
    MultipleLogs(manifests~ : Array[String])
    EmptyManifests
    ManifestSchemaError(manifest_id~ : String, detail~ : String)
    EmptyPort(String)
    ExtensionComposeFailed(manifest_id~ : String, detail~ : String)
    } derive(
    Debug
    )

    Composition errors raised during Agent::new (manifest aggregation failures).

    Every variant that involves a specific extension carries manifest_id so callers can locate the offending extension without guessing. Multi-party collisions carry the list of involved manifest ids.

    CompositionError::output

    fn CompositionError::output(self : CompositionError, logger : &Logger) -> Unit

    CompositionError::to_string

    fn CompositionError::to_string(self : CompositionError) -> String

    DecisionError

    pub(all) suberror DecisionError {
    InvalidRequest(String)
    RequestBuild(String)
    Transport(String)
    ResponseParse(String)
    RateLimited(RateLimitInfo)
    } derive(
    Debug
    )

    Errors raised by DecisionPort::evaluate. Provider adapters normalize transport/protocol failures into this bounded provider-neutral surface.

    DecisionError::output

    fn DecisionError::output(self : DecisionError, logger : &Logger) -> Unit

    DecisionError::to_string

    fn DecisionError::to_string(self : DecisionError) -> String

    LogError

    pub(all) suberror LogError {
    InvalidRecord(String)
    Write(String)
    Flush(String)
    Unavailable(String)
    } derive(
    Debug
    )

    Errors raised by LogPort implementations. Logging failures stay explicit: each consumer decides whether a failed write is best-effort or fatal.
    impl Show for LogError

    LogError::output

    fn LogError::output(self : LogError, logger : &Logger) -> Unit

    LogError::to_repr

    LogError::to_string

    fn LogError::to_string(self : LogError) -> String

    MemoryError

    pub(all) suberror MemoryError {
    Inbound(String)
    Store(String)
    Search(String)
    Delete(String)
    } derive(
    Debug
    )

    impl Show for MemoryError

    MemoryError::output

    fn MemoryError::output(self : MemoryError, logger : &Logger) -> Unit

    MemoryError::to_string

    fn MemoryError::to_string(self : MemoryError) -> String

    ModelError

    pub(all) suberror ModelError {
    RequestBuild(String)
    Transport(String)
    ResponseParse(String)
    RateLimited(RateLimitInfo)
    } derive(
    Debug
    )

    impl Show for ModelError

    ModelError::output

    fn ModelError::output(self : ModelError, logger : &Logger) -> Unit

    ModelError::to_string

    fn ModelError::to_string(self : ModelError) -> String

    RuntimeError

    pub(all) suberror RuntimeError {
    UnknownTool(String)
    InvocationFailed(String)
    Transport(String)
    ToolAlreadyRegistered(String)
    } derive(
    Debug
    )

    RuntimeError::output

    fn RuntimeError::output(self : RuntimeError, logger : &Logger) -> Unit

    RuntimeError::to_string

    fn RuntimeError::to_string(self : RuntimeError) -> String

    SessionError

    pub(all) suberror SessionError {
    Load(String)
    Save(String)
    Conflict(String)
    } derive(
    Debug
    )

    SessionError::output

    fn SessionError::output(self : SessionError, logger : &Logger) -> Unit

    SessionError::to_string

    fn SessionError::to_string(self : SessionError) -> String

    UiError

    pub(all) suberror UiError {
    Unsupported(detail~ : String)
    Cancelled
    InvalidRequest(detail~ : String)
    IoFailure(detail~ : String)
    } derive(
    Debug
    )

    Errors raised by UiPort implementations. UiPort::request MUST raise one of these typed variants instead of an untyped error, so that callers can distinguish "user cancelled" from "this UI doesn't support requests".
    impl Show for UiError

    UiError::output

    fn UiError::output(self : UiError, logger : &Logger) -> Unit

    UiError::to_repr

    UiError::to_string

    fn UiError::to_string(self : UiError) -> String

    RateLimitInfo

    pub(all) struct RateLimitInfo {
    message : String
    reset_at_ms : Int64?
    provider_code : String?
    } derive(Eq,
    Debug
    )

    Structured quota/rate-limit verdict returned by a provider. Raised as ModelError::RateLimited instead of Transport so hosts can schedule recovery from typed data instead of parsing strings. Providers disagree on the carrier (HTTP 429, Kimi's 403, gateway JSON fields, free text), so the verdict deliberately carries no status code — only scheduling semantics.

    reset_at_ms is the Unix epoch in milliseconds at which the provider stated the quota window frees; None means no explicit reset time was stated, so waiting is not schedulable and the caller should treat the verdict as terminal for this turn. provider_code is the provider's own machine code for the verdict when available (for example z.ai "1308", OpenAI "usage_limit_reached"). message is a bounded excerpt of the provider message, safe to display.

    RateLimitInfo::equal

    RateLimitInfo::not_equal

    fn RateLimitInfo::not_equal(x : RateLimitInfo, y : RateLimitInfo) -> Bool