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

Function initialize_ai

src/apps/desktop/src/api/commands.rs:1093–1136  ·  view source on GitHub ↗
(state: State<'_, AppState>)

Source from the content-addressed store, hash-verified

1091
1092#[tauri::command]
1093pub async fn initialize_ai(state: State<'_, AppState>) -> Result<String, String> {
1094 let config_service = &state.config_service;
1095 let global_config: bitfun_core::service::config::GlobalConfig = config_service
1096 .get_config(None)
1097 .await
1098 .map_err(|e| format!("Failed to get configuration: {}", e))?;
1099 let primary_model_id = global_config
1100 .ai
1101 .default_models
1102 .primary
1103 .clone()
1104 .ok_or_else(|| {
1105 "Primary model not configured, please configure it in settings".to_string()
1106 })?;
1107 let model_config = global_config
1108 .ai
1109 .models
1110 .iter()
1111 .find(|m| m.id == primary_model_id)
1112 .ok_or_else(|| format!("Primary model '{}' does not exist", primary_model_id))?;
1113 let stream_options = bitfun_core::infrastructure::ai::build_stream_options_for_model(
1114 &global_config.ai,
1115 Some(model_config),
1116 );
1117
1118 let ai_config = bitfun_core::util::types::AIConfig::try_from(model_config.clone())
1119 .map_err(|e| format!("Failed to convert AI configuration: {}", e))?;
1120 let ai_client = bitfun_core::infrastructure::ai::AIClient::new_with_runtime_options(
1121 ai_config,
1122 None,
1123 stream_options,
1124 );
1125
1126 {
1127 let mut ai_client_guard = state.ai_client.write().await;
1128 *ai_client_guard = Some(ai_client);
1129 }
1130
1131 info!("AI client initialized: model={}", model_config.name);
1132 Ok(format!(
1133 "AI client initialized successfully: {}",
1134 model_config.name
1135 ))
1136}
1137
1138async fn create_transient_ai_client_for_config(
1139 state: &State<'_, AppState>,

Callers

nothing calls this directly

Calls 5

iterMethod · 0.80
get_configMethod · 0.45
cloneMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected