( provider: ClineProvider, message: WebviewMessage, )
| 145 | * Handles the updateSkillModes message - updates the mode associations for a skill |
| 146 | */ |
| 147 | export async function handleUpdateSkillModes( |
| 148 | provider: ClineProvider, |
| 149 | message: WebviewMessage, |
| 150 | ): Promise<SkillMetadata[] | undefined> { |
| 151 | try { |
| 152 | const skillName = message.skillName |
| 153 | const source = message.source as SkillSource |
| 154 | const newModeSlugs = message.newSkillModeSlugs |
| 155 | |
| 156 | if (!skillName || !source) { |
| 157 | throw new Error(t("skills:errors.missing_update_modes_fields")) |
| 158 | } |
| 159 | |
| 160 | const skillsManager = provider.getSkillsManager() |
| 161 | if (!skillsManager) { |
| 162 | throw new Error(t("skills:errors.manager_unavailable")) |
| 163 | } |
| 164 | |
| 165 | await skillsManager.updateSkillModes(skillName, source, newModeSlugs) |
| 166 | |
| 167 | // Send updated skills list |
| 168 | const skills = skillsManager.getSkillsMetadata() |
| 169 | await provider.postMessageToWebview({ type: "skills", skills }) |
| 170 | return skills |
| 171 | } catch (error) { |
| 172 | const errorMessage = error instanceof Error ? error.message : String(error) |
| 173 | provider.log(`Error updating skill modes: ${errorMessage}`) |
| 174 | vscode.window.showErrorMessage(`Failed to update skill modes: ${errorMessage}`) |
| 175 | return undefined |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | /** |
| 180 | * Handles the openSkillFile message - opens a skill file in the editor |
no test coverage detected