( provider: ClineProvider, message: WebviewMessage, )
| 109 | * Handles the moveSkill message - moves a skill to a different mode |
| 110 | */ |
| 111 | export async function handleMoveSkill( |
| 112 | provider: ClineProvider, |
| 113 | message: WebviewMessage, |
| 114 | ): Promise<SkillMetadata[] | undefined> { |
| 115 | try { |
| 116 | const skillName = message.skillName |
| 117 | const source = message.source as SkillSource |
| 118 | const currentMode = message.skillMode |
| 119 | const newMode = message.newSkillMode |
| 120 | |
| 121 | if (!skillName || !source) { |
| 122 | throw new Error(t("skills:errors.missing_move_fields")) |
| 123 | } |
| 124 | |
| 125 | const skillsManager = provider.getSkillsManager() |
| 126 | if (!skillsManager) { |
| 127 | throw new Error(t("skills:errors.manager_unavailable")) |
| 128 | } |
| 129 | |
| 130 | await skillsManager.moveSkill(skillName, source, currentMode, newMode) |
| 131 | |
| 132 | // Send updated skills list |
| 133 | const skills = skillsManager.getSkillsMetadata() |
| 134 | await provider.postMessageToWebview({ type: "skills", skills }) |
| 135 | return skills |
| 136 | } catch (error) { |
| 137 | const errorMessage = error instanceof Error ? error.message : String(error) |
| 138 | provider.log(`Error moving skill: ${errorMessage}`) |
| 139 | vscode.window.showErrorMessage(`Failed to move skill: ${errorMessage}`) |
| 140 | return undefined |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | /** |
| 145 | * Handles the updateSkillModes message - updates the mode associations for a skill |
no test coverage detected