(&mut self)
| 2494 | } |
| 2495 | |
| 2496 | fn refresh_agent_dialog(&mut self) { |
| 2497 | let Some(client) = self.context.get_api_client() else { |
| 2498 | return; |
| 2499 | }; |
| 2500 | |
| 2501 | let Ok(agents) = client.list_agents() else { |
| 2502 | return; |
| 2503 | }; |
| 2504 | |
| 2505 | if agents.is_empty() { |
| 2506 | return; |
| 2507 | } |
| 2508 | |
| 2509 | let theme = self.context.theme.read().clone(); |
| 2510 | let mut agent_names = Vec::new(); |
| 2511 | let mapped = agents |
| 2512 | .into_iter() |
| 2513 | .enumerate() |
| 2514 | .map(|(idx, agent)| { |
| 2515 | agent_names.push(agent.id.clone()); |
| 2516 | Agent { |
| 2517 | name: agent.id, |
| 2518 | description: agent |
| 2519 | .description |
| 2520 | .unwrap_or_else(|| "No description".to_string()), |
| 2521 | color: theme.agent_color(idx), |
| 2522 | } |
| 2523 | }) |
| 2524 | .collect::<Vec<_>>(); |
| 2525 | self.agent_select.set_agents(mapped); |
| 2526 | let current = self.context.current_agent.read().clone(); |
| 2527 | if !agent_names.iter().any(|name| name == ¤t) { |
| 2528 | if let Some(first) = agent_names.first() { |
| 2529 | self.context.set_agent(first.clone()); |
| 2530 | self.sync_prompt_spinner_style(); |
| 2531 | } |
| 2532 | } |
| 2533 | self.prompt.set_agent_suggestions(agent_names); |
| 2534 | } |
| 2535 | |
| 2536 | fn cycle_agent(&mut self, direction: i8) { |
| 2537 | self.refresh_agent_dialog(); |
no test coverage detected