Skip to main content

starweaver_model/adapter/
error.rs

1use serde_json::Value;
2use thiserror::Error;
3
4/// Model adapter error.
5#[derive(Debug, Error)]
6pub enum ModelError {
7    /// Canonical history cannot be mapped into a provider request.
8    #[error("message mapping failed: {0}")]
9    MessageMapping(String),
10    /// Provider response cannot be parsed into canonical response.
11    #[error("response parsing failed: {0}")]
12    ResponseParsing(String),
13    /// Transport failed.
14    #[error("transport failed: {0}")]
15    Transport(String),
16    /// A real HTTP model request was blocked by the global test guard.
17    #[error("real model request blocked for {url}")]
18    RealModelRequestBlocked {
19        /// Target request URL.
20        url: String,
21    },
22    /// Provider returned a non-success status.
23    #[error("provider status {status}: {body}")]
24    ProviderStatus {
25        /// HTTP status code.
26        status: u16,
27        /// Provider response body.
28        body: Value,
29        /// Whether retry policy may retry this status.
30        retryable: bool,
31    },
32    /// Retry attempts were exhausted.
33    #[error("retry attempts exhausted after {attempts} attempts: {source}")]
34    RetryExhausted {
35        /// Attempt count.
36        attempts: u32,
37        /// Last error.
38        source: Box<Self>,
39    },
40    /// Request or stream was cancelled by the runtime.
41    #[error("model request cancelled: {reason}")]
42    Cancelled {
43        /// Cancellation reason.
44        reason: String,
45    },
46    /// Provider returned an unsupported response shape.
47    #[error("unsupported provider response: {0}")]
48    UnsupportedResponse(String),
49}