plazbot-cli
Version:
CLI para Plazbot SDK
75 lines (65 loc) • 2.71 kB
text/typescript
import { Command } from 'commander';
import { Agent } from 'plazbot';
import { getStoredCredentials } from '../../utils/credentials';
import { logger } from '../../utils/logger';
import { AgentCommandOptions, AgentResponse, AgentSource } from '../../types/agent';
import crypto from 'crypto';
export const messageCommand = new Command('message')
.description('Envía un mensaje a un agente y obtiene su respuesta')
.requiredOption('-a, --agent-id <id>', 'ID del agente')
.requiredOption('-q, --question <text>', 'Mensaje o pregunta para el 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: AgentCommandOptions & {
agentId: string;
question: string;
sessionId?: string;
multipleAnswers?: boolean;
}) => {
try {
// Obtener credenciales guardadas
const credentials = await getStoredCredentials();
const agent = new 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.randomUUID();
logger.info('\n🤖 Enviando mensaje al agente...');
logger.info(`ID del agente: ${options.agentId}`);
logger.info(`Pregunta: ${options.question}`);
logger.info(`ID de sesión: ${sessionId}`);
if (options.multipleAnswers) {
logger.info('Modo: Múltiples respuestas');
}
const response = await agent.onMessage({
agentId: options.agentId,
question: options.question,
sessionId,
multipleAnswers: options.multipleAnswers
}) as AgentResponse;
logger.info('\n💬 Respuesta del Agente:');
logger.divider();
console.log(response.answer);
if (response.sources && response.sources.length > 0) {
logger.info('\n📚 Fuentes:');
logger.divider();
response.sources.forEach((source: AgentSource) => {
logger.info(`- ${source.title || 'Sin título'}`);
if (source.url) logger.info(` URL: ${source.url}`);
});
}
logger.info('\n🔑 ID de Sesión:');
logger.info(sessionId);
if (options.dev) {
logger.warning('\nAmbiente: desarrollo');
}
} catch (error) {
const message = error instanceof Error ? error.message : 'Error desconocido al enviar el mensaje';
logger.error(message);
process.exit(1);
}
});