mod defaults;
pub mod file;
mod types;
mod validation;
#[cfg(feature = "cli")]
pub use crate::watch::WatchConfig;
pub use defaults::{
ConfigPreset, DEFAULT_CLUSTER_THRESHOLD, DEFAULT_ENRICHMENT_CACHE_TTL,
DEFAULT_ENRICHMENT_MAX_CONCURRENT, DEFAULT_MATCHING_THRESHOLD,
};
pub use types::{
AppConfig, AppConfigBuilder, BehaviorConfig, ComplianceConfig, DiffConfig, DiffConfigBuilder,
DiffPaths, EcosystemRulesConfig, EnrichmentConfig, FilterConfig, FuzzyPreset,
GraphAwareDiffConfig, MatchingConfig, MatchingRulesPathConfig, MatrixConfig, MultiDiffConfig,
OutputConfig, QueryConfig, StreamingConfig, ThemeName, TimelineConfig, TuiConfig,
TuiPreferences, VexConfig, ViewConfig,
};
pub use validation::{ConfigError, Validatable};
pub use file::{
ConfigFileError, discover_config_file, generate_example_config, generate_full_example_config,
load_config_file, load_or_default, load_strict,
};
#[must_use]
pub fn generate_json_schema() -> String {
let schema = schemars::schema_for!(AppConfig);
serde_json::to_string_pretty(&schema).expect("schema serialization should not fail")
}