plazbot-cli
Version:
CLI para Plazbot SDK
108 lines (107 loc) • 5.15 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.aiConfigCommand = void 0;
const commander_1 = require("commander");
const plazbot_1 = require("plazbot");
const inquirer_1 = __importDefault(require("inquirer"));
const credentials_1 = require("../../utils/credentials");
const logger_1 = require("../../utils/logger");
const ui_1 = require("../../utils/ui");
const MODELS = {
openai: ['gpt-4o', 'gpt-4', 'gpt-3.5-turbo', 'o1-preview', 'o1-mini'],
claude: ['claude-3-5-sonnet-20241022', 'claude-3-opus-20240229', 'claude-3-haiku-20240307'],
gemini: ['gemini-2.0-flash', 'gemini-1.5-pro', 'gemini-1.5-flash'],
};
exports.aiConfigCommand = new commander_1.Command('ai-config')
.description('Configurar proveedor de IA del agente')
.argument('<agentId>', 'ID del agente')
.option('--dev', 'Usar ambiente de desarrollo', false)
.action(async (agentId, options) => {
try {
const credentials = await (0, credentials_1.getStoredCredentials)();
const agent = new plazbot_1.Agent({
workspaceId: credentials.workspace,
apiKey: credentials.apiKey,
zone: credentials.zone,
...(options.dev && { customUrl: "http://localhost:5090" })
});
const spinner = (0, ui_1.createSpinner)('Cargando agente...');
spinner.start();
const agentData = await agent.getAgentById({ id: agentId });
spinner.stop();
console.log((0, ui_1.section)('Configuracion de IA - ' + (agentData.name || agentId)));
const currentProviders = agentData.aiProviders || [];
if (currentProviders.length > 0 && agentData.customAIConfig) {
console.log(ui_1.theme.bold('\n Configuracion actual:'));
currentProviders.forEach((p) => {
console.log((0, ui_1.kvPair)(' Proveedor', p.provider));
console.log((0, ui_1.kvPair)(' Modelo', p.model));
console.log((0, ui_1.kvPair)(' Temperatura', String(p.temperature)));
console.log((0, ui_1.kvPair)(' Max Tokens', String(p.maxTokens)));
console.log((0, ui_1.kvPair)(' Default', p.isDefault ? 'Si' : 'No'));
});
}
else {
console.log(ui_1.theme.muted('\n Usando configuracion de IA por defecto (Plazbot)'));
}
const { action } = await inquirer_1.default.prompt([{
type: 'list',
name: 'action',
message: 'Que deseas hacer?',
choices: [
{ name: 'Configurar nuevo proveedor', value: 'set' },
{ name: 'Usar configuracion por defecto', value: 'reset' },
{ name: 'Salir', value: 'exit' },
],
}]);
if (action === 'exit')
return;
if (action === 'reset') {
const resetConfig = { ...agentData, customAIConfig: false, aiProviders: [] };
delete resetConfig.id;
delete resetConfig._id;
const resetSpinner = (0, ui_1.createSpinner)('Reseteando configuracion...');
resetSpinner.start();
await agent.updateAgent(agentId, resetConfig);
resetSpinner.succeed('Usando configuracion por defecto');
return;
}
// Configurar nuevo proveedor
const ai = await inquirer_1.default.prompt([
{ type: 'list', name: 'provider', message: 'Proveedor:', choices: ['openai', 'claude', 'gemini'] },
]);
const models = MODELS[ai.provider] || MODELS.openai;
const config = await inquirer_1.default.prompt([
{ type: 'list', name: 'model', message: 'Modelo:', choices: models },
{ type: 'password', name: 'apiToken', message: 'API Token:', mask: '*', validate: (v) => v.length > 0 || 'Requerido' },
{ type: 'number', name: 'temperature', message: 'Temperatura (0-2):', default: 0.7 },
{ type: 'number', name: 'maxTokens', message: 'Max tokens (1024-16384):', default: 4096 },
]);
const updatedConfig = {
...agentData,
customAIConfig: true,
aiProviders: [{
provider: ai.provider,
model: config.model,
apiToken: config.apiToken,
temperature: config.temperature,
maxTokens: config.maxTokens,
isDefault: true,
}],
};
delete updatedConfig.id;
delete updatedConfig._id;
const updateSpinner = (0, ui_1.createSpinner)('Guardando configuracion...');
updateSpinner.start();
await agent.updateAgent(agentId, updatedConfig);
updateSpinner.succeed(`Proveedor configurado: ${ai.provider} / ${config.model}`);
}
catch (error) {
const message = error instanceof Error ? error.message : 'Error desconocido';
logger_1.logger.error(message);
process.exit(1);
}
});