nils_common/provider_runtime/
config.rs1use std::path::PathBuf;
2
3use crate::env as shared_env;
4
5use super::paths;
6use super::profile::ProviderProfile;
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct RuntimeConfig {
10 pub model: String,
11 pub reasoning: String,
12 pub allow_dangerous_enabled_raw: String,
13 pub secret_dir: Option<PathBuf>,
14 pub auth_file: Option<PathBuf>,
15 pub secret_cache_dir: Option<PathBuf>,
16 pub starship_enabled: String,
17 pub auto_refresh_enabled: String,
18 pub auto_refresh_min_days: String,
19}
20
21pub fn snapshot(profile: &ProviderProfile) -> RuntimeConfig {
22 RuntimeConfig {
23 model: shared_env::env_or_default(profile.env.model, profile.defaults.model),
24 reasoning: shared_env::env_or_default(profile.env.reasoning, profile.defaults.reasoning),
25 allow_dangerous_enabled_raw: std::env::var(profile.env.allow_dangerous_enabled)
26 .unwrap_or_default(),
27 secret_dir: paths::resolve_secret_dir(profile),
28 auth_file: paths::resolve_auth_file(profile),
29 secret_cache_dir: paths::resolve_secret_cache_dir(profile),
30 starship_enabled: shared_env::env_or_default(
31 profile.env.starship_enabled,
32 profile.defaults.starship_enabled,
33 ),
34 auto_refresh_enabled: shared_env::env_or_default(
35 profile.env.auto_refresh_enabled,
36 profile.defaults.auto_refresh_enabled,
37 ),
38 auto_refresh_min_days: shared_env::env_or_default(
39 profile.env.auto_refresh_min_days,
40 profile.defaults.auto_refresh_min_days,
41 ),
42 }
43}