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)
    } derive(
    Debug
    )

    impl Show for AgentError

    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.

    CompositionError

    pub(all) suberror CompositionError {
    ToolCollision(String, String, manifests~ : Array[String])
    CommandCollision(String, manifests~ : Array[String])
    MissingModel
    MultipleModels(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.

    MemoryError

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

    impl Show for MemoryError

    ModelError

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

    impl Show for ModelError

    RuntimeError

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

    RuntimeError::to_string

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

    SessionError

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

    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

    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.