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

Method apply_model_selection

src/apps/cli/src/modes/chat.rs:2142–2198  ·  view source on GitHub ↗

Apply model selection: update global config and chat state

(
        &self,
        selected: &ModelItem,
        _chat_view: &mut ChatView,
        chat_state: &mut ChatState,
        rt_handle: &tokio::runtime::Handle,
    )

Source from the content-addressed store, hash-verified

2140
2141 /// Apply model selection: update global config and chat state
2142 fn apply_model_selection(
2143 &self,
2144 selected: &ModelItem,
2145 _chat_view: &mut ChatView,
2146 chat_state: &mut ChatState,
2147 rt_handle: &tokio::runtime::Handle,
2148 ) {
2149 let selected_id = selected.id.clone();
2150 let selected_display_name = format!("{} / {}", selected.model_name, selected.name);
2151 let modes = self.get_mode_agents(rt_handle);
2152
2153 let success = tokio::task::block_in_place(|| {
2154 rt_handle.block_on(async {
2155 let config_service = match GlobalConfigManager::get_service().await {
2156 Ok(s) => s,
2157 Err(e) => {
2158 tracing::error!("Failed to get config service: {}", e);
2159 return false;
2160 }
2161 };
2162
2163 // Update default primary model
2164 if let Err(e) = config_service
2165 .set_config("ai.default_models.primary", &selected_id)
2166 .await
2167 {
2168 tracing::error!("Failed to set default primary model: {}", e);
2169 return false;
2170 }
2171
2172 // Update agent_models for all modes
2173 for mode in &modes {
2174 let path = format!("ai.agent_models.{}", mode.id);
2175 if let Err(e) = config_service.set_config(&path, &selected_id).await {
2176 tracing::error!("Failed to set model for mode '{}': {}", mode.id, e);
2177 }
2178 }
2179
2180 true
2181 })
2182 });
2183
2184 if success {
2185 chat_state.current_model_name = selected_display_name.clone();
2186 tracing::info!(
2187 "Model switched to: {} ({})",
2188 selected_display_name,
2189 selected_id
2190 );
2191 } else {
2192 tracing::error!(
2193 "Failed to switch model: {} ({})",
2194 selected_display_name,
2195 selected_id
2196 );
2197 }
2198 }
2199

Callers 1

handle_key_eventMethod · 0.45

Calls 3

set_configMethod · 0.80
cloneMethod · 0.45
get_mode_agentsMethod · 0.45

Tested by

no test coverage detected