const vscode = require('vscode'); class ApiResponseViewProvider { constructor() { this._view = undefined; this._response = ''; } resolveWebviewView(webviewView) { this._view = webviewView; webviewView.webview.options = { enableScripts: true }; this.updateContent(); } updateResponse(response) { this._response = response; this.updateContent(); } getResponse() { return this._response; } updateContent() { if (this._view) { this._view.webview.html = `
${this._response}
`; } } } function activate(context) { const apiResponseProvider = new ApiResponseViewProvider(); context.subscriptions.push( vscode.window.registerWebviewViewProvider('apiResponseView', apiResponseProvider) ); // Comando para enviar código a la API let sendToApiCommand = vscode.commands.registerCommand('code-api-integration.sendToApi', async () => { const editor = vscode.window.activeTextEditor; if (!editor) { vscode.window.showErrorMessage('No hay editor activo'); return; } const selection = editor.selection; const selectedText = editor.document.getText(selection); if (!selectedText) { vscode.window.showErrorMessage('No hay texto seleccionado'); return; } try { // Mostrar indicador de progreso vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: "Enviando código a la API...", cancellable: false }, async (progress) => { const response = await fetch('http://127.0.0.1:7869/api/v2/text/text', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify( {"server":"groq", "model":"deepseek-r1-distill-llama-70B", "system":"Te dare un codigo de python quiero que generes el docstring tomando el cuenta el codigo", "content":selectedText, "password": "1223Aer*", "userid": "Anon"} ) }); if (!response.ok) { throw new Error(`Error en la API: ${response.statusText}`); } const data = await response.json(); apiResponseProvider.updateResponse(JSON.stringify(data, null, 2)); // Notificar que la respuesta está lista para usar vscode.window.showInformationMessage('Respuesta de API guardada - usa el botón derecho para pegarla'); }); } catch (error) { vscode.window.showErrorMessage(`Error: ${error.message}`); } }); // Comando para pegar la última respuesta let pasteResponseCommand = vscode.commands.registerCommand('code-api-integration.pasteLastResponse', async () => { const editor = vscode.window.activeTextEditor; if (!editor) { vscode.window.showErrorMessage('No hay editor activo'); return; } const response = apiResponseProvider.getResponse(); if (!response) { vscode.window.showWarningMessage('No hay respuesta guardada de la API'); return; } editor.edit(editBuilder => { editBuilder.insert(editor.selection.active, response); }); }); context.subscriptions.push(sendToApiCommand, pasteResponseCommand); } function deactivate() {} module.exports = { activate, deactivate }