systemprompt_runtime/startup_validation/
files_validator.rs1use systemprompt_files::FilesConfig;
7use systemprompt_traits::validation_report::ValidationError;
8use systemprompt_traits::{ConfigProvider, ValidationReport};
9
10#[derive(Debug, Default, Clone, Copy)]
11pub struct FilesConfigValidator {
12 initialized: bool,
13}
14
15impl FilesConfigValidator {
16 pub fn new() -> Self {
17 Self::default()
18 }
19}
20
21impl systemprompt_traits::DomainConfig for FilesConfigValidator {
22 fn domain_id(&self) -> &'static str {
23 "files"
24 }
25
26 fn priority(&self) -> u32 {
27 5
28 }
29
30 fn load(
31 &mut self,
32 _config: &dyn ConfigProvider,
33 ) -> Result<(), systemprompt_traits::DomainConfigError> {
34 self.initialized = FilesConfig::get_optional().is_some();
35 Ok(())
36 }
37
38 fn validate(&self) -> Result<ValidationReport, systemprompt_traits::DomainConfigError> {
39 let mut report = ValidationReport::new("files");
40
41 let Some(files_config) = FilesConfig::get_optional() else {
42 return Ok(report);
43 };
44
45 let errors = files_config.ensure_storage_structure();
46 for error_msg in errors {
47 report.add_error(
48 ValidationError::new("storage", &error_msg)
49 .with_suggestion("Check filesystem permissions for storage directory"),
50 );
51 }
52
53 Ok(report)
54 }
55}