diff --git a/src/sidebarProvider.ts b/src/sidebarProvider.ts index 83e6ea8..e83fc72 100644 --- a/src/sidebarProvider.ts +++ b/src/sidebarProvider.ts @@ -130,6 +130,12 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn case 'setBrainProfile': await this._setActiveBrainProfile(data.id); break; + case 'getAgentContent': + await this._sendAgentContent(data.path); + break; + case 'updateAgent': + await this._updateAgent(data.path, data.content); + break; case 'refreshModels': await this._sendModels(); break; @@ -622,6 +628,24 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn await this._sendAgentsList(); } + private async _sendAgentContent(agentPath: string) { + if (!this._view || !agentPath || agentPath === 'none') return; + if (fs.existsSync(agentPath)) { + const content = fs.readFileSync(agentPath, 'utf8'); + this._view.webview.postMessage({ type: 'agentContent', value: content }); + } + } + + private async _updateAgent(agentPath: string, content: string) { + if (!agentPath || agentPath === 'none') return; + try { + fs.writeFileSync(agentPath, content, 'utf8'); + vscode.window.showInformationMessage('Agent skill updated successfully.'); + } catch (err: any) { + vscode.window.showErrorMessage(`Failed to update agent: ${err.message}`); + } + } + private async _handlePrompt(data: any) { if (!this._view) return; @@ -1001,8 +1025,14 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn