(
state: State<'_, AppState>,
request: DeleteSubagentRequest,
)
| 127 | |
| 128 | #[tauri::command] |
| 129 | pub async fn delete_subagent( |
| 130 | state: State<'_, AppState>, |
| 131 | request: DeleteSubagentRequest, |
| 132 | ) -> Result<(), String> { |
| 133 | let subagent_id = request.subagent_id; |
| 134 | |
| 135 | let file_path = state |
| 136 | .agent_registry |
| 137 | .remove_subagent(&subagent_id) |
| 138 | .map_err(|e| e.to_string())?; |
| 139 | |
| 140 | if let Some(ref path) = file_path { |
| 141 | if let Err(e) = std::fs::remove_file(path) { |
| 142 | warn!("Failed to delete subagent file: path={}, error={}", path, e); |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | let config_service = &state.config_service; |
| 147 | let mut agent_models: HashMap<String, String> = config_service |
| 148 | .get_config(Some("ai.agent_models")) |
| 149 | .await |
| 150 | .unwrap_or_default(); |
| 151 | agent_models.remove(&subagent_id); |
| 152 | if let Err(e) = config_service |
| 153 | .set_config("ai.agent_models", &agent_models) |
| 154 | .await |
| 155 | { |
| 156 | warn!( |
| 157 | "Failed to clean up ai.agent_models: subagent_id={}, error={}", |
| 158 | subagent_id, e |
| 159 | ); |
| 160 | } |
| 161 | |
| 162 | if let Err(e) = bitfun_core::service::config::reload_global_config().await { |
| 163 | warn!( |
| 164 | "Failed to reload global config after subagent deletion: subagent_id={}, error={}", |
| 165 | subagent_id, e |
| 166 | ); |
| 167 | } |
| 168 | |
| 169 | Ok(()) |
| 170 | } |
| 171 | |
| 172 | #[derive(Debug, Clone, Deserialize)] |
| 173 | #[serde(rename_all = "camelCase")] |
nothing calls this directly
no test coverage detected