Skip to main content

systemprompt_extension/
error.rs

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