You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make /model searchable across providers without reintroducing ambiguous naked model selection.
This issue owns the cross-provider search UX. #3383 owns provider-scoped model candidates. Both surfaces must return explicit provider-scoped references and apply selections through #3384.
Architecture Contract
Search rows are route rows, not bare model strings.
A cross-provider result must visibly carry:
provider display name;
canonical/logical model when known;
provider wire model id;
readiness/auth state;
capability summary;
pricing/provenance summary when known;
selection effect, such as KeepsCurrentProvider, SwitchesProvider, or SelectsCustomModelForProvider.
Selecting any row should produce a provider-scoped route reference and let #3384 resolve/validate it before UI/config/engine state changes.
Custom model ids are allowed only as explicit provider-scoped custom rows. Do not infer provider switching from the typed model string.
Desired User Flow
Run /model.
Type a query such as kimi, qwen, glm, gpt, codex, trinity, claude, ollama, or a custom model id.
See matching rows grouped/labeled by provider.
Select a row to switch both provider and model in one route action.
If no catalog match exists, choose Use "<query>" with <provider> as an explicit provider-scoped custom route.
cargo test -p codewhale-tui model_picker --locked
cargo test -p codewhale-tui model_metadata --locked
cargo test -p codewhale-tui route_resolver --locked
cargo test -p codewhale-tui config --locked
Manual smoke:
/model kimi
/model qwen
/model openrouter qwen
/model ollama qwen
Expected: matching rows are clearly provider-scoped, selecting a different-provider row applies a route switch through #3384, and no custom string silently switches provider.
Goal
Make
/modelsearchable across providers without reintroducing ambiguous naked model selection.This issue owns the cross-provider search UX. #3383 owns provider-scoped model candidates. Both surfaces must return explicit provider-scoped references and apply selections through #3384.
Architecture Contract
Search rows are route rows, not bare model strings.
A cross-provider result must visibly carry:
KeepsCurrentProvider,SwitchesProvider, orSelectsCustomModelForProvider.Selecting any row should produce a provider-scoped route reference and let #3384 resolve/validate it before UI/config/engine state changes.
Custom model ids are allowed only as explicit provider-scoped custom rows. Do not infer provider switching from the typed model string.
Desired User Flow
/model.kimi,qwen,glm,gpt,codex,trinity,claude,ollama, or a custom model id.Use "<query>" with <provider>as an explicit provider-scoped custom route.UX Requirements
Switch routesection or mode.autoremains available but does not dominate search results.Implementation Notes
Acceptance Criteria
/modellets users type a search query and filters rows live.autoand thinking/reasoning behavior remains available.Verification
Manual smoke:
Expected: matching rows are clearly provider-scoped, selecting a different-provider row applies a route switch through #3384, and no custom string silently switches provider.
Related