MCPcopy Create free account
hub / github.com/GCWing/BitFun / show_model_selector

Method show_model_selector

src/apps/cli/src/ui/startup.rs:1270–1312  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

1268 }
1269
1270 fn show_model_selector(&mut self) {
1271 self.push_current_popup_to_stack();
1272
1273 let agent_type = self.agent_type.clone();
1274 let result = tokio::task::block_in_place(|| {
1275 tokio::runtime::Handle::current().block_on(async {
1276 let config_service = GlobalConfigManager::get_service().await.ok()?;
1277 let models: Vec<bitfun_core::service::config::AIModelConfig> =
1278 config_service.get_ai_models().await.ok()?;
1279 let global_config: bitfun_core::service::config::GlobalConfig =
1280 config_service.get_config(None).await.ok()?;
1281
1282 let current_model_id = global_config
1283 .ai
1284 .agent_models
1285 .get(&agent_type)
1286 .cloned()
1287 .or_else(|| global_config.ai.default_models.primary.clone());
1288
1289 let model_items: Vec<ModelItem> = models
1290 .into_iter()
1291 .filter(|m| m.enabled)
1292 .map(|m| ModelItem {
1293 id: m.id,
1294 name: m.name,
1295 provider: m.provider,
1296 model_name: m.model_name,
1297 })
1298 .collect();
1299
1300 Some((model_items, current_model_id))
1301 })
1302 });
1303
1304 match result {
1305 Some((models, current_id)) if !models.is_empty() => {
1306 self.model_selector.show(models, current_id);
1307 }
1308 _ => {
1309 self.status = Some("No available models found.".to_string());
1310 }
1311 }
1312 }
1313
1314 fn apply_model_selection(&mut self, selected: &ModelItem) {
1315 let selected_id = selected.id.clone();

Callers 2

handle_palette_actionMethod · 0.45
handle_commandMethod · 0.45

Calls 9

get_ai_modelsMethod · 0.80
collectMethod · 0.80
cloneMethod · 0.45
okMethod · 0.45
get_configMethod · 0.45
getMethod · 0.45
is_emptyMethod · 0.45
showMethod · 0.45

Tested by

no test coverage detected