first commit
This commit is contained in:
commit
01d4fab793
|
@ -0,0 +1,3 @@
|
||||||
|
/.vscode
|
||||||
|
/.vscode-test.mjs
|
||||||
|
/node_modules
|
|
@ -0,0 +1,10 @@
|
||||||
|
.vscode/**
|
||||||
|
.vscode-test/**
|
||||||
|
test/**
|
||||||
|
.gitignore
|
||||||
|
.yarnrc
|
||||||
|
vsc-extension-quickstart.md
|
||||||
|
**/jsconfig.json
|
||||||
|
**/*.map
|
||||||
|
**/eslint.config.mjs
|
||||||
|
**/.vscode-test.*
|
|
@ -0,0 +1,128 @@
|
||||||
|
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 = `
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>${this._response}</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"name": "basic-ai",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "basic-ai",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^22.13.5",
|
||||||
|
"@types/vscode": "^1.97.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "22.13.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz",
|
||||||
|
"integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/vscode": {
|
||||||
|
"version": "1.97.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.97.0.tgz",
|
||||||
|
"integrity": "sha512-ueE73loeOTe7olaVyqP9mrRI54kVPJifUPjblZo9fYcv1CuVLPOEKEkqW0GkqPC454+nCEoigLWnC2Pp7prZ9w=="
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.20.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
|
||||||
|
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"name": "code-api-integration",
|
||||||
|
"displayName": "Code API Integration",
|
||||||
|
"description": "Send selected code to API and display response",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"engines": {
|
||||||
|
"vscode": "^1.80.0"
|
||||||
|
},
|
||||||
|
"categories": ["Other"],
|
||||||
|
"activationEvents": [],
|
||||||
|
"main": "./extension.js",
|
||||||
|
"contributes": {
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"command": "code-api-integration.sendToApi",
|
||||||
|
"title": "Send Code to API"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "code-api-integration.pasteLastResponse",
|
||||||
|
"title": "Paste API Response"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"views": {
|
||||||
|
"explorer": [
|
||||||
|
{
|
||||||
|
"id": "apiResponseView",
|
||||||
|
"name": "API Response"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"menus": {
|
||||||
|
"editor/context": [
|
||||||
|
{
|
||||||
|
"command": "code-api-integration.pasteLastResponse",
|
||||||
|
"group": "navigation"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue