(&mut self)
| 1773 | } |
| 1774 | |
| 1775 | fn show_skill_config_selector(&mut self) { |
| 1776 | let skills = tokio::task::block_in_place(|| { |
| 1777 | let workspace = self.workspace_path_buf(); |
| 1778 | let agent_type = self.agent_type.clone(); |
| 1779 | tokio::runtime::Handle::current().block_on(async { |
| 1780 | let registry = SkillRegistry::global(); |
| 1781 | registry |
| 1782 | .get_mode_skill_infos_for_workspace(Some(workspace.as_path()), &agent_type) |
| 1783 | .await |
| 1784 | }) |
| 1785 | }); |
| 1786 | |
| 1787 | let skill_items: Vec<SkillItem> = skills |
| 1788 | .into_iter() |
| 1789 | .map(Self::skill_item_from_mode_info) |
| 1790 | .collect(); |
| 1791 | |
| 1792 | if skill_items.is_empty() { |
| 1793 | self.status = Some("No skills found.".to_string()); |
| 1794 | return; |
| 1795 | } |
| 1796 | |
| 1797 | self.skill_selector.show_config(skill_items); |
| 1798 | } |
| 1799 | |
| 1800 | fn handle_skill_selector_action(&mut self, action: SkillSelectorAction) { |
| 1801 | match action { |
no test coverage detected