systemprompt-runtime 0.1.22

Application runtime context and module registry for systemprompt.io
Documentation
use systemprompt_files::FilesConfig;
use systemprompt_traits::validation_report::ValidationError;
use systemprompt_traits::{ConfigProvider, ValidationReport};

#[derive(Debug, Default, Clone, Copy)]
pub struct FilesConfigValidator {
    initialized: bool,
}

impl FilesConfigValidator {
    pub fn new() -> Self {
        Self::default()
    }
}

impl systemprompt_traits::DomainConfig for FilesConfigValidator {
    fn domain_id(&self) -> &'static str {
        "files"
    }

    fn priority(&self) -> u32 {
        5
    }

    fn load(
        &mut self,
        _config: &dyn ConfigProvider,
    ) -> Result<(), systemprompt_traits::DomainConfigError> {
        self.initialized = FilesConfig::get_optional().is_some();
        Ok(())
    }

    fn validate(&self) -> Result<ValidationReport, systemprompt_traits::DomainConfigError> {
        let mut report = ValidationReport::new("files");

        let Some(files_config) = FilesConfig::get_optional() else {
            return Ok(report);
        };

        let errors = files_config.ensure_storage_structure();
        for error_msg in errors {
            report.add_error(
                ValidationError::new("storage", &error_msg)
                    .with_suggestion("Check filesystem permissions for storage directory"),
            );
        }

        Ok(report)
    }
}