feat: add requires_auth flag for custom providers without authentication (#6705)

Signed-off-by: rabi <ramishra@redhat.com>
This commit is contained in:
Rabi Mishra
2026-01-28 22:34:12 +05:30
committed by GitHub
parent 5b757c7f72
commit 2673e8acca
13 changed files with 250 additions and 153 deletions
@@ -93,6 +93,12 @@ pub struct UpdateCustomProviderRequest {
pub models: Vec<String>,
pub supports_streaming: Option<bool>,
pub headers: Option<std::collections::HashMap<String, String>>,
#[serde(default = "default_requires_auth")]
pub requires_auth: bool,
}
fn default_requires_auth() -> bool {
true
}
#[derive(Deserialize, ToSchema)]
@@ -699,13 +705,16 @@ pub async fn create_custom_provider(
Json(request): Json<UpdateCustomProviderRequest>,
) -> Result<Json<String>, StatusCode> {
let config = goose::config::declarative_providers::create_custom_provider(
&request.engine,
request.display_name,
request.api_url,
request.api_key,
request.models,
request.supports_streaming,
request.headers,
goose::config::declarative_providers::CreateCustomProviderParams {
engine: request.engine,
display_name: request.display_name,
api_url: request.api_url,
api_key: request.api_key,
models: request.models,
supports_streaming: request.supports_streaming,
headers: request.headers,
requires_auth: request.requires_auth,
},
)
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
@@ -769,13 +778,17 @@ pub async fn update_custom_provider(
Json(request): Json<UpdateCustomProviderRequest>,
) -> Result<Json<String>, StatusCode> {
goose::config::declarative_providers::update_custom_provider(
&id,
&request.engine,
request.display_name,
request.api_url,
request.api_key,
request.models,
request.supports_streaming,
goose::config::declarative_providers::UpdateCustomProviderParams {
id: id.clone(),
engine: request.engine,
display_name: request.display_name,
api_url: request.api_url,
api_key: request.api_key,
models: request.models,
supports_streaming: request.supports_streaming,
headers: request.headers,
requires_auth: request.requires_auth,
},
)
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
+14 -3
View File
@@ -96,9 +96,20 @@ pub fn check_provider_configured(metadata: &ProviderMetadata, provider_type: Pro
if provider_type == ProviderType::Custom || provider_type == ProviderType::Declarative {
if let Ok(loaded_provider) = load_provider(metadata.name.as_str()) {
return config
.get_secret::<String>(&loaded_provider.config.api_key_env)
.is_ok();
if !loaded_provider.config.requires_auth {
return true;
}
if !loaded_provider.config.api_key_env.is_empty() {
let api_key_result =
config.get_secret::<String>(&loaded_provider.config.api_key_env);
if api_key_result.is_ok() {
return true;
}
}
// Custom providers with config files are intentionally created
return provider_type == ProviderType::Custom;
}
}