move global config access out of ModelConfig, and move ModelConfig into goose_providers (#9769)

This commit is contained in:
Jack Amadeo
2026-06-18 12:33:19 -04:00
committed by GitHub
parent 4c64375de7
commit 80eaf8fa44
92 changed files with 843 additions and 1027 deletions
+1 -1
View File
@@ -5,10 +5,10 @@ use goose::config::permission::PermissionLevel;
use goose::config::ExtensionEntry;
use goose::conversation::Conversation;
use goose::download_manager::{DownloadProgress, DownloadStatus};
use goose::model::ModelConfig;
use goose::permission::permission_confirmation::{Permission, PrincipalType};
use goose::providers::base::{ConfigKey, ModelInfo, ProviderMetadata, ProviderType};
use goose::session::{Session, SessionType, SystemInfo};
use goose_providers::model::ModelConfig;
use goose_providers::thinking::ThinkingEffort;
use rmcp::model::{
Annotations, Content, EmbeddedResource, Icon, IconTheme, ImageContent, JsonObject,
+12 -11
View File
@@ -19,7 +19,6 @@ use goose::agents::reply_parts::is_tool_visible_to_app;
use goose::agents::ExtensionConfig;
use goose::config::resolve_extensions_for_new_session;
use goose::config::{Config, GooseMode};
use goose::model::ModelConfig;
use goose::providers::create;
use goose::recipe::Recipe;
use goose::recipe_deeplink;
@@ -303,7 +302,9 @@ async fn start_agent(
update = update.provider_name(provider);
if let Some(ref model) = settings.goose_model {
if let Ok(model_config) = ModelConfig::new(model) {
if let Ok(model_config) =
goose::model_config::model_config_from_user_config(provider, model)
{
update = update.model_config(model_config);
}
}
@@ -637,15 +638,15 @@ async fn update_agent_provider(
}
};
let mut model_config = ModelConfig::new(&model)
.map_err(|e| {
(
StatusCode::BAD_REQUEST,
format!("Invalid model config: {}", e),
)
})?
.with_canonical_limits(&payload.provider)
.with_context_limit(payload.context_limit);
let mut model_config =
goose::model_config::model_config_from_user_config(&payload.provider, &model)
.map_err(|e| {
(
StatusCode::BAD_REQUEST,
format!("Invalid model config: {}", e),
)
})?
.with_context_limit(payload.context_limit);
if let Some(request_params) = payload.request_params {
model_config = model_config.with_merged_request_params(request_params);
@@ -13,7 +13,6 @@ use goose::config::paths::Paths;
use goose::config::ExtensionEntry;
use goose::config::{Config, ConfigError};
use goose::custom_requests::SourceType;
use goose::model::ModelConfig;
use goose::providers::base::{ModelInfo, ProviderMetadata, ProviderType};
use goose::providers::canonical::maybe_get_canonical_model;
use goose::providers::catalog::{
@@ -27,6 +26,7 @@ use goose::{
agents::execute_commands, agents::ExtensionConfig, config::permission::PermissionLevel,
slash_commands::recipe_slash_command,
};
use goose_providers::model::ModelConfig;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use serde_yaml;
@@ -937,7 +937,8 @@ pub async fn get_provider_models(
)));
}
let model_config = ModelConfig::new(&metadata.default_model)?.with_canonical_limits(&name);
let model_config =
goose::model_config::model_config_from_user_config(&name, &metadata.default_model)?;
let provider = goose::providers::create(&name, model_config, Vec::new()).await?;
let models_result = provider.fetch_recommended_model_info().await;
@@ -971,7 +972,7 @@ pub async fn resolve_provider_model_info(
)));
}
let model_config = ModelConfig::new(model)?.with_canonical_limits(name);
let model_config = goose::model_config::model_config_from_user_config(name, model)?;
let provider = goose::providers::create(name, model_config.clone(), Vec::new()).await?;
match provider.fetch_model_info(model).await {
Ok(info) => Ok(info),
@@ -1419,7 +1420,6 @@ pub async fn get_provider_catalog_template(
pub async fn configure_provider_oauth(
Path(provider_name): Path<String>,
) -> Result<Json<String>, ErrorResponse> {
use goose::model::ModelConfig;
use goose::providers::create;
if !is_valid_provider_name(&provider_name) {
@@ -1440,11 +1440,10 @@ pub async fn configure_provider_oauth(
return Ok(Json("OAuth configuration completed".to_string()));
}
let temp_model = ModelConfig::new("temp")
let temp_model = goose::model_config::model_config_from_user_config(&provider_name, "temp")
.map_err(|e| {
ErrorResponse::bad_request(format!("Failed to create temporary model config: {}", e))
})?
.with_canonical_limits(&provider_name);
})?;
// OAuth configuration does not use extensions.
let provider = create(&provider_name, temp_model, Vec::new())
+1 -1
View File
@@ -4,8 +4,8 @@ use axum::{
Json,
};
use goose::config::ConfigError;
use goose::model::ConfigError as ModelConfigError;
use goose_providers::errors::ProviderError;
use goose_providers::model::ConfigError as ModelConfigError;
use serde::Serialize;
use utoipa::ToSchema;