systemprompt_extension/
error.rs1use 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}