Skip to main content

systemprompt_models/profile/gateway/
error.rs

1use std::path::PathBuf;
2
3use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum GatewayProfileError {
7    #[error("Failed to read gateway catalog {path}: {source}")]
8    CatalogRead {
9        path: PathBuf,
10        #[source]
11        source: std::io::Error,
12    },
13
14    #[error("Failed to parse gateway catalog {path}: {source}")]
15    CatalogParse {
16        path: PathBuf,
17        #[source]
18        source: serde_yaml::Error,
19    },
20
21    #[error("Invalid gateway catalog {path}: {source}")]
22    CatalogInvalid {
23        path: PathBuf,
24        #[source]
25        source: Box<Self>,
26    },
27
28    #[error("gateway catalog model has empty id")]
29    ModelEmptyId,
30
31    #[error("gateway catalog model '{model}' references unknown provider '{provider}'")]
32    UnknownProvider { model: String, provider: String },
33
34    #[error("gateway catalog provider has empty name")]
35    ProviderEmptyName,
36
37    #[error("gateway catalog provider '{name}' has empty endpoint")]
38    ProviderEmptyEndpoint { name: String },
39
40    #[error("gateway {label} endpoint '{endpoint}' is not permitted: {reason}")]
41    BlockedEndpoint {
42        label: String,
43        endpoint: String,
44        reason: String,
45    },
46
47    #[error(
48        "gateway route '{route}' provider '{provider}' is not declared in the catalog providers"
49    )]
50    RouteProviderNotInCatalog { route: String, provider: String },
51
52    #[error(
53        "gateway route '{route}' endpoint '{route_endpoint}' disagrees with catalog provider \
54         '{provider}' endpoint '{catalog_endpoint}'"
55    )]
56    RouteEndpointMismatch {
57        route: String,
58        provider: String,
59        route_endpoint: String,
60        catalog_endpoint: String,
61    },
62
63    #[error("gateway catalog model id or alias '{id}' is declared more than once")]
64    DuplicateModelId { id: String },
65
66    #[error("gateway route id '{id}' is declared more than once")]
67    DuplicateRouteId { id: String },
68
69    #[error("gateway catalog model '{model}' has no route whose pattern matches its id")]
70    UnreachableModel { model: String },
71}
72
73pub type GatewayResult<T> = Result<T, GatewayProfileError>;