Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion crates/goose/src/providers/base.rs
Original file line number Diff line number Diff line change
Expand Up @@ -603,10 +603,19 @@ pub trait Provider: Send + Sync {
let provider_name = self.get_name();

// Get all text-capable models with their release dates
// Models that can't be mapped to a canonical ID are still included
// (without a release date) so users can select newly released models.
let mut models_with_dates: Vec<(String, Option<String>)> = all_models
.iter()
.filter_map(|model| {
let canonical_id = map_to_canonical_model(provider_name, model, registry)?;
let canonical_id = match map_to_canonical_model(provider_name, model, registry) {
Some(id) => id,
None => {
// Unmapped model — include it anyway so new/unknown models
// are available in the UI dropdown.
return Some((model.clone(), None));
}
Comment on lines +613 to +617
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve capability checks for unmapped models

Returning Some((model.clone(), None)) here causes unmapped models to skip the later text-modality and tool-callability filters, so they are treated as recommended even when they are not usable for Goose chat/tool flows. This is a regression for providers that list mixed model types from their catalog endpoints (for example, google.rs fetches all v1beta/models entries, and openai.rs collects every /v1/models id): previously those unmapped entries were excluded when mapped usable models existed, but now unsupported image/audio/video models can appear in the dropdown and fail with 4xx when selected for normal chat requests.

Useful? React with 👍 / 👎.

};

let (provider, model_name) = canonical_id.split_once('/')?;
let canonical_model = registry.get(provider, model_name)?;
Expand Down
Loading