(
&self,
selected: &SkillItem,
enabled: bool,
chat_state: &mut ChatState,
rt_handle: &tokio::runtime::Handle,
)
| 3015 | } |
| 3016 | |
| 3017 | fn set_skill_enabled( |
| 3018 | &self, |
| 3019 | selected: &SkillItem, |
| 3020 | enabled: bool, |
| 3021 | chat_state: &mut ChatState, |
| 3022 | rt_handle: &tokio::runtime::Handle, |
| 3023 | ) { |
| 3024 | let workspace = self.agent.workspace_path_buf(); |
| 3025 | let mode_id = self.agent_type.clone(); |
| 3026 | let skill = selected.clone(); |
| 3027 | |
| 3028 | let result: Result<(), String> = tokio::task::block_in_place(|| { |
| 3029 | rt_handle.block_on(async { |
| 3030 | match skill.level.as_str() { |
| 3031 | "user" => { |
| 3032 | set_user_mode_skill_state( |
| 3033 | &mode_id, |
| 3034 | &skill.key, |
| 3035 | enabled, |
| 3036 | skill.default_enabled, |
| 3037 | ) |
| 3038 | .await |
| 3039 | .map_err(|error| error.to_string())?; |
| 3040 | } |
| 3041 | "project" => { |
| 3042 | let mut document = load_project_mode_skills_document_local(&workspace) |
| 3043 | .await |
| 3044 | .map_err(|error| error.to_string())?; |
| 3045 | set_mode_skill_disabled_in_document( |
| 3046 | &mut document, |
| 3047 | &mode_id, |
| 3048 | &skill.key, |
| 3049 | !enabled, |
| 3050 | ) |
| 3051 | .map_err(|error| error.to_string())?; |
| 3052 | save_project_mode_skills_document_local(&workspace, &document) |
| 3053 | .await |
| 3054 | .map_err(|error| error.to_string())?; |
| 3055 | } |
| 3056 | other => { |
| 3057 | return Err(format!("Unsupported skill level '{}'", other)); |
| 3058 | } |
| 3059 | } |
| 3060 | |
| 3061 | Ok(()) |
| 3062 | }) |
| 3063 | }); |
| 3064 | |
| 3065 | match result { |
| 3066 | Ok(()) => chat_state.add_system_message(format!( |
| 3067 | "Skill '{}' {} for mode '{}'.", |
| 3068 | selected.name, |
| 3069 | if enabled { "enabled" } else { "disabled" }, |
| 3070 | self.agent_type |
| 3071 | )), |
| 3072 | Err(error) => chat_state.add_system_message(format!( |
| 3073 | "Failed to update skill '{}': {}", |
| 3074 | selected.name, error |
no test coverage detected