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    #[error(
38        "Extension '{extension}' (weight {extension_weight}) depends on '{dependency}' (weight \
39         {dependency_weight}); a dependency must have a lower migration_weight than its dependent"
40    )]
41    InvalidDependencyOrdering {
42        extension: String,
43        extension_weight: u32,
44        dependency: String,
45        dependency_weight: u32,
46    },
47}
48
49#[derive(Debug, Error)]
50pub enum ConfigError {
51    #[error("Configuration key '{0}' not found")]
52    NotFound(String),
53
54    #[error("Invalid configuration value for '{key}': {message}")]
55    InvalidValue { key: String, message: String },
56
57    #[error("Failed to parse configuration: {0}")]
58    ParseError(String),
59
60    #[error("Schema validation failed: {0}")]
61    SchemaValidation(String),
62}