UNPKG

plazbot-cli

Version:
93 lines (92 loc) 4.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.chatCommand = void 0; const commander_1 = require("commander"); const plazbot_1 = require("plazbot"); const credentials_1 = require("../../utils/credentials"); const crypto_1 = __importDefault(require("crypto")); const readline_1 = __importDefault(require("readline")); exports.chatCommand = new commander_1.Command('chat') .description('Inicia una sesión de chat interactiva con un agente') .requiredOption('-a, --agent-id <id>', 'ID del agente') .option('-s, --session-id <id>', 'ID de sesión (opcional)') .option('-m, --multiple-answers', 'Permitir múltiples respuestas', false) .option('--dev', 'Usar ambiente de desarrollo', false) .action(async (options) => { try { // Obtener credenciales guardadas 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" }) }); // Generar un sessionId si no se proporcionó uno const sessionId = options.sessionId || crypto_1.default.randomUUID(); // Crear interfaz de readline const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout }); // Limpiar la pantalla console.clear(); // Mostrar encabezado console.log('Chat session initialized\n'); console.log('┌' + '─'.repeat(60) + '┐'); console.log('│' + ' Plazbot Agent Chat'.padEnd(59) + '│'); console.log('│' + ''.padEnd(59) + '│'); console.log('│' + ' Type your messages and press Enter to send.'.padEnd(59) + '│'); console.log('│' + ' Type "/exit" or press Ctrl+C to end the conversation.'.padEnd(59) + '│'); console.log('└' + '─'.repeat(60) + '┘\n'); console.log('Session ID:', sessionId, '\n'); // Función para preguntar const askQuestion = () => { rl.question('You: ', async (question) => { if (question.toLowerCase() === '/exit') { console.log('\nChat session ended.'); rl.close(); return; } try { console.log('⋮ Waiting for response...'); const response = await agent.onMessage({ agentId: options.agentId, question, sessionId, multipleAnswers: options.multipleAnswers }); console.log('\nAssistant:'); console.log(' ' + response.answer); console.log(); // Línea en blanco para separar mensajes // Si hay fuentes, mostrarlas if (response.sources && response.sources.length > 0) { console.log('Sources:'); response.sources.forEach((source) => { console.log(` - ${source.title || 'Untitled'}`); if (source.url) console.log(` ${source.url}`); }); console.log(); // Línea en blanco después de las fuentes } askQuestion(); // Continuar el ciclo de preguntas } catch (error) { const message = error instanceof Error ? error.message : 'Error desconocido'; console.error('\n❌ Error:', message); askQuestion(); // Continuar a pesar del error } }); }; // Iniciar el ciclo de preguntas askQuestion(); } catch (error) { const message = error instanceof Error ? error.message : 'Error desconocido'; console.error('\n❌ Error:', message); process.exit(1); } });