use super::*;
pub(crate) fn model_defaults(config: &Config) -> ModelDefaults {
ModelDefaults {
provider: config.default_provider.clone(),
model: config.default_model.clone(),
fallback_order: parse_fallback_order(&config.providers.fallback_order),
}
}
pub(super) fn shell_env_policy(config: &Config) -> leviath_tools::ShellEnvPolicy {
leviath_tools::ShellEnvPolicy {
mode: config.security.shell_env,
allow_env_vars: config.security.allow_env_vars.clone(),
withhold: config.security.shell_env_withhold.clone(),
}
}
pub(super) fn parse_fallback_order(entries: &[String]) -> Vec<leviath_core::blueprint::ModelEntry> {
entries
.iter()
.filter_map(|raw| match raw.split_once('/') {
Some((provider, model)) if !provider.is_empty() && !model.is_empty() => Some(
leviath_core::blueprint::ModelEntry::new(provider.to_string(), model.to_string()),
),
_ => {
tracing::warn!(
entry = %raw,
"ignoring [providers] fallback_order entry: expected \"provider/model\""
);
None
}
})
.collect()
}