Skip to main content

systemprompt_extension/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum LoaderError {
5    #[error("Extension '{extension}' requires dependency '{dependency}' which is not registered")]
6    MissingDependency {
7        extension: String,
8        dependency: String,
9    },
10
11    #[error("Extension with ID '{0}' is already registered")]
12    DuplicateExtension(String),
13
14    #[error("Failed to initialize extension '{extension}': {message}")]
15    InitializationFailed { extension: String, message: String },
16
17    #[error("Failed to install schema for extension '{extension}': {message}")]
18    SchemaInstallationFailed { extension: String, message: String },
19
20    #[error("Migration failed for extension '{extension}': {message}")]
21    MigrationFailed { extension: String, message: String },
22
23    #[error("Configuration validation failed for extension '{extension}': {message}")]
24    ConfigValidationFailed { extension: String, message: String },
25
26    #[error("Extension '{extension}' uses reserved API path '{path}'")]
27    ReservedPathCollision { extension: String, path: String },
28
29    #[error("Extension '{extension}' has invalid base path '{path}': must start with /api/")]
30    InvalidBasePath { extension: String, path: String },
31
32    #[error("Circular dependency detected: {chain}")]
33    CircularDependency { chain: String },
34}
35
36#[derive(Debug, Error)]
37pub enum ConfigError {
38    #[error("Configuration key '{0}' not found")]
39    NotFound(String),
40
41    #[error("Invalid configuration value for '{key}': {message}")]
42    InvalidValue { key: String, message: String },
43
44    #[error("Failed to parse configuration: {0}")]
45    ParseError(String),
46
47    #[error("Schema validation failed: {0}")]
48    SchemaValidation(String),
49}