(
&self,
selected: &SubagentItem,
enabled: bool,
chat_state: &mut ChatState,
rt_handle: &tokio::runtime::Handle,
)
| 3216 | } |
| 3217 | |
| 3218 | fn set_subagent_enabled( |
| 3219 | &self, |
| 3220 | selected: &SubagentItem, |
| 3221 | enabled: bool, |
| 3222 | chat_state: &mut ChatState, |
| 3223 | rt_handle: &tokio::runtime::Handle, |
| 3224 | ) { |
| 3225 | let registry = get_agent_registry(); |
| 3226 | let workspace = self.agent.workspace_path_buf(); |
| 3227 | let mode_id = self.agent_type.clone(); |
| 3228 | let subagent = selected.clone(); |
| 3229 | |
| 3230 | let result: Result<(), String> = tokio::task::block_in_place(|| { |
| 3231 | rt_handle.block_on(async { |
| 3232 | registry |
| 3233 | .update_subagent_override( |
| 3234 | &mode_id, |
| 3235 | &subagent.id, |
| 3236 | enabled, |
| 3237 | Some(workspace.as_path()), |
| 3238 | ) |
| 3239 | .await |
| 3240 | .map_err(|error| error.to_string()) |
| 3241 | }) |
| 3242 | }); |
| 3243 | |
| 3244 | match result { |
| 3245 | Ok(()) => chat_state.add_system_message(format!( |
| 3246 | "Subagent '{}' {} for mode '{}'.", |
| 3247 | selected.name, |
| 3248 | if enabled { "enabled" } else { "disabled" }, |
| 3249 | self.agent_type |
| 3250 | )), |
| 3251 | Err(error) => chat_state.add_system_message(format!( |
| 3252 | "Failed to update subagent '{}': {}", |
| 3253 | selected.name, error |
| 3254 | )), |
| 3255 | } |
| 3256 | } |
| 3257 | |
| 3258 | fn subagent_item_from_info(info: AgentInfo) -> SubagentItem { |
| 3259 | let source = match info.subagent_source { |
no test coverage detected