systemprompt_models/profile/gateway/
error.rs1use 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>;