(provider: ClineProvider, message: WebviewMessage)
| 180 | * Handles the openSkillFile message - opens a skill file in the editor |
| 181 | */ |
| 182 | export async function handleOpenSkillFile(provider: ClineProvider, message: WebviewMessage): Promise<void> { |
| 183 | try { |
| 184 | const skillName = message.skillName |
| 185 | const source = message.source as SkillSource |
| 186 | |
| 187 | if (!skillName || !source) { |
| 188 | throw new Error(t("skills:errors.missing_delete_fields")) |
| 189 | } |
| 190 | |
| 191 | const skillsManager = provider.getSkillsManager() |
| 192 | if (!skillsManager) { |
| 193 | throw new Error(t("skills:errors.manager_unavailable")) |
| 194 | } |
| 195 | |
| 196 | // Find skill by name and source (skills may have modeSlugs arrays now) |
| 197 | const skill = skillsManager.findSkillByNameAndSource(skillName, source) |
| 198 | if (!skill) { |
| 199 | throw new Error(t("skills:errors.skill_not_found", { name: skillName })) |
| 200 | } |
| 201 | |
| 202 | openFile(skill.path) |
| 203 | } catch (error) { |
| 204 | const errorMessage = error instanceof Error ? error.message : String(error) |
| 205 | provider.log(`Error opening skill file: ${errorMessage}`) |
| 206 | vscode.window.showErrorMessage(`Failed to open skill file: ${errorMessage}`) |
| 207 | } |
| 208 | } |
no test coverage detected