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