mod defaults;
pub mod file;
mod types;
mod validation;
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, 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,
};
#[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")
}