Skip to content

Commit 896ac38

Browse files
committed
with_canonical_limits refactor
1 parent 31ca8ab commit 896ac38

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+151
-125
lines changed

crates/goose-acp/src/server.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,8 @@ impl GooseAcpAgent {
740740
let provider_name = config
741741
.get_goose_provider()
742742
.map_err(|_| anyhow::anyhow!("No provider configured"))?;
743-
goose::model::ModelConfig::new(&model_id, &provider_name)?
743+
goose::model::ModelConfig::new(&model_id)?
744+
.with_canonical_limits(&provider_name)
744745
}
745746
};
746747
let provider = (self.provider_factory)(model_config).await?;
@@ -966,9 +967,11 @@ impl GooseAcpAgent {
966967
sacp::Error::internal_error().data("No provider configured".to_string())
967968
})?;
968969
let model_config =
969-
goose::model::ModelConfig::new(model_id, &provider_name).map_err(|e| {
970-
sacp::Error::invalid_params().data(format!("Invalid model config: {}", e))
971-
})?;
970+
goose::model::ModelConfig::new(model_id)
971+
.map_err(|e| {
972+
sacp::Error::invalid_params().data(format!("Invalid model config: {}", e))
973+
})?
974+
.with_canonical_limits(&provider_name);
972975
let provider = (self.provider_factory)(model_config).await.map_err(|e| {
973976
sacp::Error::internal_error().data(format!("Failed to create provider: {}", e))
974977
})?;
@@ -1305,7 +1308,7 @@ print(\"hello, world\")
13051308
}
13061309

13071310
fn get_model_config(&self) -> goose::model::ModelConfig {
1308-
goose::model::ModelConfig::new_or_fail("unused", "test")
1311+
goose::model::ModelConfig::new_or_fail("unused")
13091312
}
13101313

13111314
async fn fetch_recommended_models(&self) -> Result<Vec<String>, ProviderError> {

crates/goose-cli/src/commands/configure.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ async fn handle_oauth_configuration(provider_name: &str, key_name: &str) -> anyh
327327
));
328328

329329
// Create a temporary provider instance to handle OAuth
330-
let temp_model = ModelConfig::new("temp", provider_name)?;
330+
let temp_model = ModelConfig::new("temp")?.with_canonical_limits(provider_name);
331331
match create(provider_name, temp_model).await {
332332
Ok(provider) => match provider.configure_oauth().await {
333333
Ok(_) => {
@@ -682,7 +682,8 @@ pub async fn configure_provider_dialog() -> anyhow::Result<bool> {
682682
let spin = spinner();
683683
spin.start("Attempting to fetch supported models...");
684684
let models_res = {
685-
let temp_model_config = ModelConfig::new(&provider_meta.default_model, provider_name)?;
685+
let temp_model_config =
686+
ModelConfig::new(&provider_meta.default_model)?.with_canonical_limits(provider_name);
686687
let temp_provider = create(provider_name, temp_model_config).await?;
687688
retry_operation(&RetryConfig::default(), || async {
688689
temp_provider.fetch_recommended_models().await
@@ -1442,7 +1443,7 @@ pub async fn configure_tool_permissions_dialog() -> anyhow::Result<()> {
14421443
let model: String = config
14431444
.get_goose_model()
14441445
.expect("No model configured. Please set model first");
1445-
let model_config = ModelConfig::new(&model, &provider_name)?;
1446+
let model_config = ModelConfig::new(&model)?.with_canonical_limits(&provider_name);
14461447

14471448
let agent = Agent::new();
14481449
let new_provider = create(&provider_name, model_config).await?;
@@ -1658,8 +1659,8 @@ pub async fn handle_openrouter_auth() -> anyhow::Result<()> {
16581659
// Test configuration - get the model that was configured
16591660
println!("\nTesting configuration...");
16601661
let configured_model: String = config.get_goose_model()?;
1661-
let model_config = match goose::model::ModelConfig::new(&configured_model, "openrouter") {
1662-
Ok(config) => config,
1662+
let model_config = match goose::model::ModelConfig::new(&configured_model) {
1663+
Ok(config) => config.with_canonical_limits("openrouter"),
16631664
Err(e) => {
16641665
eprintln!("⚠️ Invalid model configuration: {}", e);
16651666
eprintln!("Your settings have been saved. Please check your model configuration.");
@@ -1738,8 +1739,8 @@ pub async fn handle_tetrate_auth() -> anyhow::Result<()> {
17381739
// Test configuration
17391740
println!("\nTesting configuration...");
17401741
let configured_model: String = config.get_goose_model()?;
1741-
let model_config = match goose::model::ModelConfig::new(&configured_model, "tetrate") {
1742-
Ok(config) => config,
1742+
let model_config = match goose::model::ModelConfig::new(&configured_model) {
1743+
Ok(config) => config.with_canonical_limits("tetrate"),
17431744
Err(e) => {
17441745
eprintln!("⚠️ Invalid model configuration: {}", e);
17451746
eprintln!("Your settings have been saved. Please check your model configuration.");

crates/goose-cli/src/commands/term.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,9 @@ pub async fn handle_term_info() -> Result<()> {
293293
.ok()
294294
.and_then(|model_name| {
295295
config.get_goose_provider().ok().and_then(|provider_name| {
296-
goose::model::ModelConfig::new(&model_name, &provider_name).ok()
296+
goose::model::ModelConfig::new(&model_name)
297+
.ok()
298+
.map(|c| c.with_canonical_limits(&provider_name))
297299
})
298300
})
299301
.map(|mc| mc.context_limit())

crates/goose-cli/src/commands/web.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ fn get_provider_and_model() -> (String, String) {
168168
}
169169

170170
async fn create_agent(provider_name: &str, model: &str) -> Result<Agent> {
171-
let model_config = goose::model::ModelConfig::new(model, provider_name)?;
171+
let model_config =
172+
goose::model::ModelConfig::new(model)?.with_canonical_limits(provider_name);
172173

173174
let agent = Agent::new();
174175

crates/goose-cli/src/scenario_tests/scenario_runner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ where
189189

190190
let inner_provider = create(
191191
&factory_name,
192-
ModelConfig::new(config.model_name, &factory_name)?,
192+
ModelConfig::new(config.model_name)?.with_canonical_limits(&factory_name),
193193
)
194194
.await?;
195195

crates/goose-cli/src/session/builder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,11 +382,12 @@ fn resolve_provider_and_model(
382382
config
383383
} else {
384384
let temperature = recipe_settings.and_then(|s| s.temperature);
385-
goose::model::ModelConfig::new(&model_name, &provider_name)
385+
goose::model::ModelConfig::new(&model_name)
386386
.unwrap_or_else(|e| {
387387
output::render_error(&format!("Failed to create model configuration: {}", e));
388388
process::exit(1);
389389
})
390+
.with_canonical_limits(&provider_name)
390391
.with_temperature(temperature)
391392
};
392393

crates/goose-server/src/routes/agent.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,13 +534,14 @@ async fn update_agent_provider(
534534
}
535535
};
536536

537-
let model_config = ModelConfig::new(&model, &payload.provider)
537+
let model_config = ModelConfig::new(&model)
538538
.map_err(|e| {
539539
(
540540
StatusCode::BAD_REQUEST,
541541
format!("Invalid model config: {}", e),
542542
)
543543
})?
544+
.with_canonical_limits(&payload.provider)
544545
.with_context_limit(payload.context_limit)
545546
.with_request_params(payload.request_params);
546547

crates/goose-server/src/routes/config_management.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ pub async fn get_provider_models(
380380
)));
381381
}
382382

383-
let model_config = ModelConfig::new(&metadata.default_model, &name)?;
383+
let model_config = ModelConfig::new(&metadata.default_model)?.with_canonical_limits(&name);
384384
let provider = goose::providers::create(&name, model_config).await?;
385385

386386
let models_result = provider.fetch_recommended_models().await;
@@ -796,9 +796,11 @@ pub async fn configure_provider_oauth(
796796
)));
797797
}
798798

799-
let temp_model = ModelConfig::new("temp", &provider_name).map_err(|e| {
800-
ErrorResponse::bad_request(format!("Failed to create temporary model config: {}", e))
801-
})?;
799+
let temp_model = ModelConfig::new("temp")
800+
.map_err(|e| {
801+
ErrorResponse::bad_request(format!("Failed to create temporary model config: {}", e))
802+
})?
803+
.with_canonical_limits(&provider_name);
802804

803805
let provider = create(&provider_name, temp_model).await.map_err(|e| {
804806
ErrorResponse::bad_request(format!(

crates/goose/src/agents/agent.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1578,8 +1578,9 @@ impl Agent {
15781578
let model_name = config
15791579
.get_goose_model()
15801580
.map_err(|_| anyhow!("Could not configure agent: missing model"))?;
1581-
crate::model::ModelConfig::new(&model_name, &provider_name)
1581+
crate::model::ModelConfig::new(&model_name)
15821582
.map_err(|e| anyhow!("Could not configure agent: invalid model {}", e))?
1583+
.with_canonical_limits(&provider_name)
15831584
}
15841585
};
15851586

crates/goose/src/agents/reply_parts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ mod tests {
491491
)
492492
.await?;
493493

494-
let model_config = ModelConfig::new("test-model", "test").unwrap();
494+
let model_config = ModelConfig::new("test-model").unwrap();
495495
let provider = std::sync::Arc::new(MockProvider { model_config });
496496
agent.update_provider(provider, &session.id).await?;
497497

0 commit comments

Comments
 (0)