fix(config): align ollama cloud defaults with upstream
This commit is contained in:
@@ -23,15 +23,15 @@ pub const OLLAMA_MODE_KEY: &str = "ollama_mode";
|
||||
/// Extra config key storing the preferred Ollama Cloud endpoint.
|
||||
pub const OLLAMA_CLOUD_ENDPOINT_KEY: &str = "cloud_endpoint";
|
||||
/// Canonical Ollama Cloud base URL.
|
||||
pub const OLLAMA_CLOUD_BASE_URL: &str = "https://api.ollama.com";
|
||||
pub const OLLAMA_CLOUD_BASE_URL: &str = "https://ollama.com";
|
||||
/// Legacy Ollama Cloud base URL (accepted for backward compatibility).
|
||||
pub const LEGACY_OLLAMA_CLOUD_BASE_URL: &str = "https://ollama.com";
|
||||
pub const LEGACY_OLLAMA_CLOUD_BASE_URL: &str = "https://api.ollama.com";
|
||||
/// Preferred environment variable used for Ollama Cloud authentication.
|
||||
pub const OWLEN_OLLAMA_CLOUD_API_KEY_ENV: &str = "OWLEN_OLLAMA_CLOUD_API_KEY";
|
||||
pub const OLLAMA_API_KEY_ENV: &str = "OLLAMA_API_KEY";
|
||||
/// Legacy environment variable accepted for backward compatibility.
|
||||
pub const LEGACY_OLLEN_OLLAMA_CLOUD_API_KEY_ENV: &str = "OLLEN_OLLAMA_CLOUD_API_KEY";
|
||||
/// Legacy environment variable still accepted for Ollama Cloud authentication.
|
||||
pub const OLLAMA_CLOUD_API_KEY_ENV: &str = "OLLAMA_CLOUD_API_KEY";
|
||||
pub const LEGACY_OLLAMA_CLOUD_API_KEY_ENV: &str = "OLLAMA_CLOUD_API_KEY";
|
||||
/// Legacy environment variable used by earlier Owlen releases.
|
||||
pub const LEGACY_OWLEN_OLLAMA_CLOUD_API_KEY_ENV: &str = "OWLEN_OLLAMA_CLOUD_API_KEY";
|
||||
/// Default base URL for local Ollama daemons.
|
||||
pub const OLLAMA_LOCAL_BASE_URL: &str = "http://localhost:11434";
|
||||
/// Default OpenAI API base URL.
|
||||
@@ -645,6 +645,49 @@ impl Config {
|
||||
}
|
||||
|
||||
self.providers = migrated;
|
||||
|
||||
// If the legacy local provider was configured with the hosted base URL, promote the
|
||||
// settings to the cloud provider for backward compatibility.
|
||||
let enable_cloud_from_local = self
|
||||
.providers
|
||||
.get("ollama_local")
|
||||
.and_then(|cfg| cfg.base_url.as_ref())
|
||||
.map(|base| is_cloud_base_url(Some(base)))
|
||||
.unwrap_or(false);
|
||||
|
||||
if enable_cloud_from_local {
|
||||
let mut local_api_key = None;
|
||||
let mut local_api_key_env = None;
|
||||
if let Some(local) = self.providers.get_mut("ollama_local") {
|
||||
local_api_key = local.api_key.take();
|
||||
local_api_key_env = local.api_key_env.take();
|
||||
local.enabled = false;
|
||||
}
|
||||
|
||||
if let Some(cloud) = self.providers.get_mut("ollama_cloud") {
|
||||
if cloud.api_key.is_none() {
|
||||
cloud.api_key = local_api_key;
|
||||
}
|
||||
if cloud.api_key_env.is_none() {
|
||||
cloud.api_key_env = local_api_key_env;
|
||||
}
|
||||
|
||||
if cloud.base_url.is_none() {
|
||||
cloud.base_url = Some(OLLAMA_CLOUD_BASE_URL.to_string());
|
||||
}
|
||||
let update_api_key_env = match cloud.api_key_env.as_deref() {
|
||||
None => true,
|
||||
Some(value) => {
|
||||
value.eq_ignore_ascii_case(LEGACY_OLLAMA_CLOUD_API_KEY_ENV)
|
||||
|| value.eq_ignore_ascii_case(LEGACY_OWLEN_OLLAMA_CLOUD_API_KEY_ENV)
|
||||
}
|
||||
};
|
||||
if update_api_key_env {
|
||||
cloud.api_key_env = Some(OLLAMA_API_KEY_ENV.to_string());
|
||||
}
|
||||
cloud.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn merge_legacy_ollama_provider(
|
||||
@@ -687,13 +730,15 @@ impl Config {
|
||||
if cloud.base_url.is_none() {
|
||||
cloud.base_url = Some(OLLAMA_CLOUD_BASE_URL.to_string());
|
||||
}
|
||||
if cloud.api_key_env.is_none()
|
||||
|| cloud
|
||||
.api_key_env
|
||||
.as_deref()
|
||||
.is_some_and(|value| value == LEGACY_OLLEN_OLLAMA_CLOUD_API_KEY_ENV)
|
||||
{
|
||||
cloud.api_key_env = Some(OWLEN_OLLAMA_CLOUD_API_KEY_ENV.to_string());
|
||||
let update_api_key_env = match cloud.api_key_env.as_deref() {
|
||||
None => true,
|
||||
Some(value) => {
|
||||
value.eq_ignore_ascii_case(LEGACY_OLLAMA_CLOUD_API_KEY_ENV)
|
||||
|| value.eq_ignore_ascii_case(LEGACY_OWLEN_OLLAMA_CLOUD_API_KEY_ENV)
|
||||
}
|
||||
};
|
||||
if update_api_key_env {
|
||||
cloud.api_key_env = Some(OLLAMA_API_KEY_ENV.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -841,7 +886,7 @@ fn default_ollama_cloud_config() -> ProviderConfig {
|
||||
provider_type: canonical_provider_type("ollama_cloud"),
|
||||
base_url: Some(OLLAMA_CLOUD_BASE_URL.to_string()),
|
||||
api_key: None,
|
||||
api_key_env: Some(OWLEN_OLLAMA_CLOUD_API_KEY_ENV.to_string()),
|
||||
api_key_env: Some(OLLAMA_API_KEY_ENV.to_string()),
|
||||
extra,
|
||||
}
|
||||
}
|
||||
@@ -2013,7 +2058,7 @@ mod tests {
|
||||
.get("ollama_cloud")
|
||||
.expect("default cloud provider");
|
||||
assert!(!cloud.enabled);
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_CLOUD_API_KEY_ENV));
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_API_KEY_ENV));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -2023,7 +2068,7 @@ mod tests {
|
||||
let cloud = ensure_provider_config(&mut config, "ollama-cloud");
|
||||
assert_eq!(cloud.provider_type, "ollama_cloud");
|
||||
assert_eq!(cloud.base_url.as_deref(), Some(OLLAMA_CLOUD_BASE_URL));
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_CLOUD_API_KEY_ENV));
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_API_KEY_ENV));
|
||||
assert!(config.providers.contains_key("ollama_cloud"));
|
||||
assert!(!config.providers.contains_key("ollama-cloud"));
|
||||
}
|
||||
@@ -2072,7 +2117,7 @@ mod tests {
|
||||
.expect("cloud provider created");
|
||||
assert!(cloud.enabled);
|
||||
assert_eq!(cloud.base_url.as_deref(), Some(OLLAMA_CLOUD_BASE_URL));
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_CLOUD_API_KEY_ENV));
|
||||
assert_eq!(cloud.api_key_env.as_deref(), Some(OLLAMA_API_KEY_ENV));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user