move global config access out of ModelConfig, and move ModelConfig into goose_providers (#9769)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user