Compare commits

...

10 Commits

Author SHA1 Message Date
Kazuhiro Sera
dd84d618fb Merge branch 'main' into issue-2257-oss-config 2025-09-25 15:43:16 +09:00
Kazuhiro Sera
61294c9d2d Merge branch 'main' into issue-2257-oss-config 2025-09-23 12:56:12 +09:00
Kazuhiro Sera
0c184a8464 Merge branch 'main' into issue-2257-oss-config 2025-09-16 22:17:03 +09:00
Kazuhiro Sera
742430fde2 Merge branch 'main' into issue-2257-oss-config 2025-09-12 17:47:55 +09:00
Kazuhiro Sera
47ab7c8d08 Merge branch 'main' into issue-2257-oss-config 2025-09-09 10:18:42 +09:00
Kazuhiro Sera
d81252a837 Merge branch 'main' into issue-2257-oss-config 2025-08-19 07:50:58 +09:00
Kazuhiro Sera
5bdce60af0 Update codex-rs/core/src/config.rs
Co-authored-by: Michael Bolin <mbolin@openai.com>
2025-08-19 07:50:52 +09:00
Kazuhiro Sera
d938bb7db5 fix 2025-08-18 19:51:53 +09:00
Kazuhiro Sera
1e25efc8e7 fix 2025-08-18 19:37:38 +09:00
Kazuhiro Sera
5daa485eea Fix #2257 by allowing users to configure oss provider in config.toml 2025-08-18 19:25:49 +09:00
2 changed files with 53 additions and 1 deletions

View File

@@ -896,7 +896,8 @@ impl Config {
let mut model_providers = built_in_model_providers();
// Merge user-defined providers into the built-in list.
for (key, provider) in cfg.model_providers.into_iter() {
model_providers.entry(key).or_insert(provider);
// Override the built-in provider if the same key is present in config.toml
model_providers.insert(key, provider);
}
let model_provider_id = model_provider

View File

@@ -0,0 +1,51 @@
use std::collections::HashMap;
use codex_core::ModelProviderInfo;
use codex_core::WireApi;
use codex_core::config::Config;
use codex_core::config::ConfigOverrides;
use codex_core::config::ConfigToml;
use tempfile::TempDir;
#[test]
fn user_defined_provider_overrides_builtin() {
let tmp = TempDir::new().unwrap();
let mut providers = HashMap::new();
providers.insert(
"oss".to_string(),
ModelProviderInfo {
name: "Custom".into(),
base_url: Some("https://example.com/v1".into()),
env_key: None,
env_key_instructions: None,
wire_api: WireApi::Chat,
query_params: None,
http_headers: None,
env_http_headers: None,
request_max_retries: None,
stream_max_retries: None,
stream_idle_timeout_ms: None,
requires_openai_auth: false,
},
);
let cfg = ConfigToml {
model_provider: Some("oss".to_string()),
model: Some("gpt-oss:20b".to_string()),
model_providers: providers,
..Default::default()
};
let config = Config::load_from_base_config_with_overrides(
cfg,
ConfigOverrides::default(),
tmp.path().to_path_buf(),
)
.unwrap();
assert_eq!(config.model_provider.name, "Custom");
assert_eq!(
config.model_provider.base_url.as_deref(),
Some("https://example.com/v1")
);
}