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

Method save_new_model

src/apps/cli/src/ui/startup.rs:1372–1478  ·  view source on GitHub ↗

Save new model to global config

(&mut self, result: ModelFormResult)

Source from the content-addressed store, hash-verified

1370
1371 /// Save new model to global config
1372 fn save_new_model(&mut self, result: ModelFormResult) {
1373 let model_id = format!(
1374 "model_{}",
1375 std::time::SystemTime::now()
1376 .duration_since(std::time::UNIX_EPOCH)
1377 .unwrap_or_default()
1378 .as_millis()
1379 );
1380
1381 let custom_headers: Option<std::collections::HashMap<String, String>> =
1382 if result.custom_headers.is_empty() {
1383 None
1384 } else {
1385 serde_json::from_str(&result.custom_headers).ok()
1386 };
1387
1388 let custom_request_body: Option<String> = if result.custom_request_body.is_empty() {
1389 None
1390 } else {
1391 Some(result.custom_request_body.clone())
1392 };
1393
1394 let model_config = bitfun_core::service::config::AIModelConfig {
1395 id: model_id.clone(),
1396 name: result.name.clone(),
1397 provider: result.provider_format.clone(),
1398 model_name: result.model_name.clone(),
1399 base_url: result.base_url.clone(),
1400 api_key: result.api_key.clone(),
1401 context_window: Some(result.context_window),
1402 max_tokens: Some(result.max_tokens),
1403 enabled: true,
1404 enable_thinking_process: result.enable_thinking || result.support_preserved_thinking,
1405 skip_ssl_verify: result.skip_ssl_verify,
1406 custom_headers,
1407 custom_headers_mode: if result.custom_headers_mode.is_empty()
1408 || result.custom_headers_mode == "merge"
1409 {
1410 None
1411 } else {
1412 Some(result.custom_headers_mode.clone())
1413 },
1414 custom_request_body,
1415 ..Default::default()
1416 };
1417
1418 let result_name = result.name.clone();
1419 let result_model_display = format!("{} / {}", result.model_name, result.name);
1420
1421 let success = tokio::task::block_in_place(|| {
1422 tokio::runtime::Handle::current().block_on(async {
1423 let config_service = match GlobalConfigManager::get_service().await {
1424 Ok(s) => s,
1425 Err(e) => {
1426 tracing::error!("Failed to get config service: {}", e);
1427 return false;
1428 }
1429 };

Callers 1

handle_keyMethod · 0.45

Calls 6

add_ai_modelMethod · 0.80
set_configMethod · 0.80
is_emptyMethod · 0.45
okMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected