plazbot-cli 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/agent.config.json +21 -0
  2. package/dist/cli.js +22 -0
  3. package/dist/commands/agent/chat.js +92 -0
  4. package/dist/commands/agent/create.js +52 -0
  5. package/dist/commands/agent/delete.js +61 -0
  6. package/dist/commands/agent/enable-widget.js +55 -0
  7. package/dist/commands/agent/get.js +161 -0
  8. package/dist/commands/agent/index.js +22 -0
  9. package/dist/commands/agent/list.js +47 -0
  10. package/dist/commands/agent/on-message.js +67 -0
  11. package/dist/commands/agent/update.js +52 -0
  12. package/dist/commands/auth/index.js +9 -0
  13. package/dist/commands/auth/login.js +52 -0
  14. package/dist/commands/auth/logout.js +23 -0
  15. package/dist/commands/message/delete-webhook.js +39 -0
  16. package/dist/commands/message/index.js +14 -0
  17. package/dist/commands/message/register-webhook.js +42 -0
  18. package/dist/commands/message/send-template.js +42 -0
  19. package/dist/commands/message/send.js +42 -0
  20. package/dist/commands/portal/add-agent.js +58 -0
  21. package/dist/commands/portal/add-link.js +33 -0
  22. package/dist/commands/portal/clear-links.js +27 -0
  23. package/dist/commands/portal/create.js +51 -0
  24. package/dist/commands/portal/delete.js +58 -0
  25. package/dist/commands/portal/get.js +66 -0
  26. package/dist/commands/portal/index.js +22 -0
  27. package/dist/commands/portal/list.js +65 -0
  28. package/dist/commands/portal/update.js +79 -0
  29. package/dist/commands/whatsapp/delete-webhook.js +32 -0
  30. package/dist/commands/whatsapp/index.js +14 -0
  31. package/dist/commands/whatsapp/register-webhook.js +35 -0
  32. package/dist/commands/whatsapp/send-template.js +41 -0
  33. package/dist/commands/whatsapp/send.js +42 -0
  34. package/dist/types/agent.js +2 -0
  35. package/dist/types/auth.js +2 -0
  36. package/dist/types/common.js +2 -0
  37. package/dist/types/message.js +2 -0
  38. package/dist/types/portal.js +2 -0
  39. package/dist/utils/credentials.js +33 -0
  40. package/dist/utils/logger.js +24 -0
  41. package/package.json +47 -0
  42. package/src/cli.ts +26 -0
  43. package/src/commands/agent/chat.ts +103 -0
  44. package/src/commands/agent/create.ts +53 -0
  45. package/src/commands/agent/delete.ts +64 -0
  46. package/src/commands/agent/enable-widget.ts +62 -0
  47. package/src/commands/agent/get.ts +175 -0
  48. package/src/commands/agent/index.ts +20 -0
  49. package/src/commands/agent/list.ts +52 -0
  50. package/src/commands/agent/on-message.ts +75 -0
  51. package/src/commands/agent/update.ts +53 -0
  52. package/src/commands/auth/index.ts +8 -0
  53. package/src/commands/auth/login.ts +56 -0
  54. package/src/commands/auth/logout.ts +22 -0
  55. package/src/commands/portal/add-agent.ts +66 -0
  56. package/src/commands/portal/add-link.ts +39 -0
  57. package/src/commands/portal/clear-links.ts +26 -0
  58. package/src/commands/portal/create.ts +55 -0
  59. package/src/commands/portal/delete.ts +63 -0
  60. package/src/commands/portal/get.ts +75 -0
  61. package/src/commands/portal/index.ts +20 -0
  62. package/src/commands/portal/list.ts +73 -0
  63. package/src/commands/portal/update.ts +82 -0
  64. package/src/commands/whatsapp/delete-webhook.ts +37 -0
  65. package/src/commands/whatsapp/index.ts +12 -0
  66. package/src/commands/whatsapp/register-webhook.ts +41 -0
  67. package/src/commands/whatsapp/send-template.ts +44 -0
  68. package/src/commands/whatsapp/send.ts +46 -0
  69. package/src/types/agent.ts +63 -0
  70. package/src/types/auth.ts +8 -0
  71. package/src/types/common.ts +10 -0
  72. package/src/types/message.ts +34 -0
  73. package/src/types/portal.ts +56 -0
  74. package/src/utils/credentials.ts +37 -0
  75. package/src/utils/logger.ts +21 -0
  76. package/tsconfig.json +15 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "agente-1",
3
+ "description": "Asistente que ayuda a resolver preguntas de la empresa",
4
+ "prompt": "Vas a ayudar a las personas a poder resolver sus preguntas de la empresa como informacion de contacto, horarios de atencion, etc. Nuestro horario de atencion es de 9:00 a 18:00 y trabajamos en Peru, España y Colombia.",
5
+ "zone": "LA",
6
+ "buffer": 5,
7
+ "color": "blue",
8
+ "question": "Como te podemos ayudar?",
9
+ "timezone": "America/Lima",
10
+ "showInChat": false,
11
+ "examples": [
12
+ { "value": "quiero informacion de contacto", "color": "green" },
13
+ { "value": "horarios de atencion", "color": "orange" }
14
+ ],
15
+ "person": {
16
+ "name": "Leandro",
17
+ "role": "Asistente de Atencion al Cliente",
18
+ "speaksInFirstPerson": true,
19
+ "isHuman": false
20
+ }
21
+ }
package/dist/cli.js ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const portal_1 = require("./commands/portal");
6
+ const auth_1 = require("./commands/auth");
7
+ const agent_1 = require("./commands/agent");
8
+ const whatsapp_1 = require("./commands/whatsapp");
9
+ // Configuración básica del CLI
10
+ commander_1.program
11
+ .name('plazbot')
12
+ .description('CLI para manejar agentes Plazbot')
13
+ .version('0.1.0');
14
+ // Registrar todos los comandos de autenticación
15
+ auth_1.authCommands.forEach(cmd => commander_1.program.addCommand(cmd));
16
+ // Registrar todos los comandos de agente
17
+ commander_1.program.addCommand(agent_1.agentCommands);
18
+ // Registrar todos los comandos de portal
19
+ commander_1.program.addCommand(portal_1.portalCommands);
20
+ // Registrar todos los comandos de WhatsApp
21
+ commander_1.program.addCommand(whatsapp_1.whatsappCommands);
22
+ commander_1.program.parse(process.argv);
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.chatCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const plazbot_1 = require("plazbot");
9
+ const credentials_1 = require("../../utils/credentials");
10
+ const crypto_1 = __importDefault(require("crypto"));
11
+ const readline_1 = __importDefault(require("readline"));
12
+ exports.chatCommand = new commander_1.Command('chat')
13
+ .description('Inicia una sesión de chat interactiva con un agente')
14
+ .requiredOption('-a, --agent-id <id>', 'ID del agente')
15
+ .option('-s, --session-id <id>', 'ID de sesión (opcional)')
16
+ .option('-m, --multiple-answers', 'Permitir múltiples respuestas', false)
17
+ .option('--dev', 'Usar ambiente de desarrollo', false)
18
+ .action(async (options) => {
19
+ try {
20
+ // Obtener credenciales guardadas
21
+ const credentials = await (0, credentials_1.getStoredCredentials)();
22
+ const agent = new plazbot_1.Agent({
23
+ workspaceId: credentials.workspace,
24
+ apiKey: credentials.apiKey,
25
+ zone: credentials.zone,
26
+ ...(options.dev && { customUrl: "http://localhost:5090" })
27
+ });
28
+ // Generar un sessionId si no se proporcionó uno
29
+ const sessionId = options.sessionId || crypto_1.default.randomUUID();
30
+ // Crear interfaz de readline
31
+ const rl = readline_1.default.createInterface({
32
+ input: process.stdin,
33
+ output: process.stdout
34
+ });
35
+ // Limpiar la pantalla
36
+ console.clear();
37
+ // Mostrar encabezado
38
+ console.log('Chat session initialized\n');
39
+ console.log('┌' + '─'.repeat(60) + '┐');
40
+ console.log('│' + ' Plazbot Agent Chat'.padEnd(59) + '│');
41
+ console.log('│' + ''.padEnd(59) + '│');
42
+ console.log('│' + ' Type your messages and press Enter to send.'.padEnd(59) + '│');
43
+ console.log('│' + ' Type "/exit" or press Ctrl+C to end the conversation.'.padEnd(59) + '│');
44
+ console.log('└' + '─'.repeat(60) + '┘\n');
45
+ console.log('Session ID:', sessionId, '\n');
46
+ // Función para preguntar
47
+ const askQuestion = () => {
48
+ rl.question('You: ', async (question) => {
49
+ if (question.toLowerCase() === '/exit') {
50
+ console.log('\nChat session ended.');
51
+ rl.close();
52
+ return;
53
+ }
54
+ try {
55
+ console.log('⋮ Waiting for response...');
56
+ const response = await agent.onMessage({
57
+ agentId: options.agentId,
58
+ question,
59
+ sessionId,
60
+ multipleAnswers: options.multipleAnswers
61
+ });
62
+ console.log('\nAssistant:');
63
+ console.log(' ' + response.answer);
64
+ console.log(); // Línea en blanco para separar mensajes
65
+ // Si hay fuentes, mostrarlas
66
+ if (response.sources && response.sources.length > 0) {
67
+ console.log('Sources:');
68
+ response.sources.forEach((source) => {
69
+ console.log(` - ${source.title || 'Untitled'}`);
70
+ if (source.url)
71
+ console.log(` ${source.url}`);
72
+ });
73
+ console.log(); // Línea en blanco después de las fuentes
74
+ }
75
+ askQuestion(); // Continuar el ciclo de preguntas
76
+ }
77
+ catch (error) {
78
+ const message = error instanceof Error ? error.message : 'Error desconocido';
79
+ console.error('\n❌ Error:', message);
80
+ askQuestion(); // Continuar a pesar del error
81
+ }
82
+ });
83
+ };
84
+ // Iniciar el ciclo de preguntas
85
+ askQuestion();
86
+ }
87
+ catch (error) {
88
+ const message = error instanceof Error ? error.message : 'Error desconocido';
89
+ console.error('\n❌ Error:', message);
90
+ process.exit(1);
91
+ }
92
+ });
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const plazbot_1 = require("plazbot");
9
+ const credentials_1 = require("../../utils/credentials");
10
+ const logger_1 = require("../../utils/logger");
11
+ const promises_1 = __importDefault(require("fs/promises"));
12
+ exports.createCommand = new commander_1.Command('create')
13
+ .description('Crea un nuevo agente en Plazbot usando el archivo de configuración')
14
+ .argument('<configPath>', 'Ruta al archivo de configuración JSON')
15
+ .option('--dev', 'Usar ambiente de desarrollo', false)
16
+ .action(async (configPath, options) => {
17
+ try {
18
+ // Obtener credenciales guardadas
19
+ const credentials = await (0, credentials_1.getStoredCredentials)();
20
+ const agent = new plazbot_1.Agent({
21
+ workspaceId: credentials.workspace,
22
+ apiKey: credentials.apiKey,
23
+ zone: credentials.zone,
24
+ ...(options.dev && { customUrl: "http://localhost:5090" })
25
+ });
26
+ // Leer archivo de configuración
27
+ let agentConfig;
28
+ try {
29
+ const fileContent = await promises_1.default.readFile(configPath, 'utf-8');
30
+ agentConfig = JSON.parse(fileContent);
31
+ }
32
+ catch (error) {
33
+ const errorMessage = error instanceof Error ? error.message : 'Error desconocido';
34
+ throw new Error(`Error al leer el archivo de configuración: ${errorMessage}`);
35
+ }
36
+ logger_1.logger.info('\n🤖 Creando nuevo agente...');
37
+ logger_1.logger.info('Configuración:');
38
+ logger_1.logger.info(JSON.stringify(agentConfig, null, 2));
39
+ const result = await agent.addAgent(agentConfig);
40
+ logger_1.logger.success('Agente creado exitosamente');
41
+ logger_1.logger.info('\n📋 Detalles del agente:');
42
+ logger_1.logger.info(JSON.stringify(result, null, 2));
43
+ if (options.dev) {
44
+ logger_1.logger.warning('\nAmbiente: desarrollo');
45
+ }
46
+ }
47
+ catch (error) {
48
+ const message = error instanceof Error ? error.message : 'Error desconocido al crear el agente';
49
+ logger_1.logger.error(message);
50
+ process.exit(1);
51
+ }
52
+ });
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deleteCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const plazbot_1 = require("plazbot");
9
+ const credentials_1 = require("../../utils/credentials");
10
+ const logger_1 = require("../../utils/logger");
11
+ const readline_1 = __importDefault(require("readline"));
12
+ exports.deleteCommand = new commander_1.Command('delete')
13
+ .description('Elimina un agente existente')
14
+ .argument('<agentId>', 'ID del agente a eliminar')
15
+ .option('--dev', 'Usar ambiente de desarrollo', false)
16
+ .action(async (agentId, options) => {
17
+ try {
18
+ // Obtener credenciales guardadas
19
+ const credentials = await (0, credentials_1.getStoredCredentials)();
20
+ const agent = new plazbot_1.Agent({
21
+ workspaceId: credentials.workspace,
22
+ apiKey: credentials.apiKey,
23
+ zone: credentials.zone,
24
+ ...(options.dev && { customUrl: "http://localhost:5090" })
25
+ });
26
+ // Obtener detalles del agente para mostrar información
27
+ const agentDetails = await agent.getAgentById({ id: agentId });
28
+ logger_1.logger.warning('\nVas a eliminar el siguiente agente:');
29
+ logger_1.logger.divider();
30
+ logger_1.logger.info(`ID: ${agentDetails.agent.id}`);
31
+ logger_1.logger.info(`Nombre: ${agentDetails.agent.name}`);
32
+ logger_1.logger.info(`Descripción: ${agentDetails.agent.description}`);
33
+ logger_1.logger.divider();
34
+ // Crear interfaz para confirmación
35
+ const rl = readline_1.default.createInterface({
36
+ input: process.stdin,
37
+ output: process.stdout
38
+ });
39
+ // Preguntar por confirmación
40
+ rl.question('\n❗ ¿Estás seguro que deseas eliminar este agente? (y/N): ', async (answer) => {
41
+ if (answer.toLowerCase() === 'y') {
42
+ await agent.deleteAgent({
43
+ id: agentId
44
+ });
45
+ logger_1.logger.success('Agente eliminado exitosamente');
46
+ if (options.dev) {
47
+ logger_1.logger.warning('Ambiente: desarrollo');
48
+ }
49
+ }
50
+ else {
51
+ logger_1.logger.error('Operación cancelada');
52
+ }
53
+ rl.close();
54
+ });
55
+ }
56
+ catch (error) {
57
+ const message = error instanceof Error ? error.message : 'Error desconocido al eliminar el agente';
58
+ logger_1.logger.error(message);
59
+ process.exit(1);
60
+ }
61
+ });
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enableCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const plazbot_1 = require("plazbot");
6
+ const credentials_1 = require("../../utils/credentials");
7
+ const logger_1 = require("../../utils/logger");
8
+ exports.enableCommand = new commander_1.Command('enable-widget')
9
+ .description('Habilita o deshabilita el widget de un agente')
10
+ .argument('<agentId>', 'ID del agente')
11
+ .option('-d, --disable', 'Deshabilitar el widget en lugar de habilitarlo')
12
+ .option('--dev', 'Usar ambiente de desarrollo', false)
13
+ .action(async (agentId, options) => {
14
+ try {
15
+ // Obtener credenciales guardadas
16
+ const credentials = await (0, credentials_1.getStoredCredentials)();
17
+ const agent = new plazbot_1.Agent({
18
+ workspaceId: credentials.workspace,
19
+ apiKey: credentials.apiKey,
20
+ zone: credentials.zone,
21
+ ...(options.dev && { customUrl: "http://localhost:5090" })
22
+ });
23
+ // Obtener estado actual del agente
24
+ const agentDetails = await agent.getAgentById({ id: agentId });
25
+ logger_1.logger.info('\n🔧 Estado actual del widget:');
26
+ logger_1.logger.divider();
27
+ logger_1.logger.info(`Agente: ${agentDetails.agent.name}`);
28
+ logger_1.logger.divider();
29
+ // Cambiar estado
30
+ const newState = !options.disable; // Si --disable está presente, newState será false
31
+ const result = await agent.enableWidget({
32
+ id: agentId,
33
+ enable: newState
34
+ });
35
+ logger_1.logger.success(`Widget ${newState ? 'habilitado' : 'deshabilitado'} exitosamente`);
36
+ logger_1.logger.info('\n🔧 Respuesta del servidor:');
37
+ logger_1.logger.divider();
38
+ logger_1.logger.info(`Estado: ${result.success ? '✅ Exitoso' : '❌ Fallido'}`);
39
+ logger_1.logger.info(`Mensaje: ${result.message}`);
40
+ if (newState && result.script) {
41
+ logger_1.logger.info('\n📝 Instrucciones de instalación:');
42
+ logger_1.logger.divider();
43
+ logger_1.logger.info('Coloca este script debajo de la etiqueta <HEAD> en tu sitio web:');
44
+ logger_1.logger.info('\n' + result.script);
45
+ }
46
+ if (options.dev) {
47
+ logger_1.logger.warning('Ambiente: desarrollo');
48
+ }
49
+ }
50
+ catch (error) {
51
+ const message = error instanceof Error ? error.message : 'Error desconocido al modificar el widget';
52
+ logger_1.logger.error(message);
53
+ process.exit(1);
54
+ }
55
+ });
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const plazbot_1 = require("plazbot");
6
+ const credentials_1 = require("../../utils/credentials");
7
+ const logger_1 = require("../../utils/logger");
8
+ exports.getCommand = new commander_1.Command('get')
9
+ .description('Obtiene información detallada de un agente específico')
10
+ .argument('<agentId>', 'ID del agente a consultar')
11
+ .option('--dev', 'Usar ambiente de desarrollo', false)
12
+ .action(async (agentId, options) => {
13
+ try {
14
+ // Obtener credenciales guardadas
15
+ const credentials = await (0, credentials_1.getStoredCredentials)();
16
+ // Crear instancia del agente con las credenciales guardadas
17
+ const agent = new plazbot_1.Agent({
18
+ workspaceId: credentials.workspace,
19
+ apiKey: credentials.apiKey,
20
+ zone: credentials.zone,
21
+ ...(options.dev && { customUrl: "http://localhost:5090" })
22
+ });
23
+ // Obtener detalles del agente
24
+ const agentDetails = await agent.getAgentById({ id: agentId });
25
+ const agentData = agentDetails.agent;
26
+ logger_1.logger.info('\nDetalles del Agente:');
27
+ logger_1.logger.doubleDivider();
28
+ // Información básica
29
+ logger_1.logger.info('Información Básica:');
30
+ logger_1.logger.divider();
31
+ logger_1.logger.info(`ID: ${agentData.id}`);
32
+ logger_1.logger.info(`Nombre: ${agentData.name}`);
33
+ logger_1.logger.info(`Descripción: ${agentData.description}`);
34
+ logger_1.logger.info(`Estado: ${agentData.enable ? '✅ Activo' : '❌ Inactivo'}`);
35
+ logger_1.logger.info(`Zona: ${agentData.zone}`);
36
+ logger_1.logger.info(`Buffer: ${agentData.buffer}`);
37
+ logger_1.logger.info(`Color: ${agentData.color}`);
38
+ logger_1.logger.info(`Pregunta inicial: ${agentData.question}`);
39
+ logger_1.logger.info(`Zona horaria: ${agentData.timezone}`);
40
+ logger_1.logger.info(`Mostrar en chat: ${agentData.showInChat ? 'Sí' : 'No'}`);
41
+ // Tags
42
+ if (agentData.tags && agentData.tags.length > 0) {
43
+ logger_1.logger.info(`\nTags: ${agentData.tags.join(', ')}`);
44
+ }
45
+ // Ejemplos
46
+ if (agentData.examples && agentData.examples.length > 0) {
47
+ logger_1.logger.info('\nEjemplos:');
48
+ logger_1.logger.divider();
49
+ agentData.examples.forEach((example) => {
50
+ logger_1.logger.info(`- ${example.value} (${example.color})`);
51
+ });
52
+ }
53
+ // Instrucciones
54
+ if (agentData.instructions) {
55
+ logger_1.logger.info('\nInstrucciones:');
56
+ logger_1.logger.divider();
57
+ const instructions = agentData.instructions;
58
+ logger_1.logger.info(`Tono: ${instructions.tone}`);
59
+ logger_1.logger.info(`Estilo: ${instructions.style}`);
60
+ logger_1.logger.info(`Personalidad: ${instructions.personality}`);
61
+ logger_1.logger.info(`Objetivo: ${instructions.objective}`);
62
+ logger_1.logger.info(`Idioma: ${instructions.language}`);
63
+ logger_1.logger.info(`Emojis: ${instructions.emojis ? 'Sí' : 'No'}`);
64
+ logger_1.logger.info(`Formato preferido: ${instructions.preferredFormat}`);
65
+ logger_1.logger.info(`Máximo de palabras: ${instructions.maxWords}`);
66
+ if (instructions.avoidTopics) {
67
+ logger_1.logger.info(`Temas a evitar: ${instructions.avoidTopics.join(', ')}`);
68
+ }
69
+ logger_1.logger.info(`Responder solo si sabe: ${instructions.respondOnlyIfKnows ? 'Sí' : 'No'}`);
70
+ logger_1.logger.info(`Mantener tono entre mensajes: ${instructions.maintainToneBetweenMessages ? 'Sí' : 'No'}`);
71
+ logger_1.logger.info(`Saludo: ${instructions.greeting}`);
72
+ }
73
+ // Persona
74
+ if (agentData.person) {
75
+ logger_1.logger.info('\nPersona:');
76
+ logger_1.logger.divider();
77
+ const person = agentData.person;
78
+ logger_1.logger.info(`Nombre: ${person.name}`);
79
+ logger_1.logger.info(`Rol: ${person.role}`);
80
+ logger_1.logger.info(`Habla en primera persona: ${person.speaksInFirstPerson ? 'Sí' : 'No'}`);
81
+ logger_1.logger.info(`Es humano: ${person.isHuman ? 'Sí' : 'No'}`);
82
+ }
83
+ // Fallbacks
84
+ if (agentData.fallbacks) {
85
+ logger_1.logger.info('\nFallbacks:');
86
+ logger_1.logger.divider();
87
+ const fallbacks = agentData.fallbacks;
88
+ logger_1.logger.info(`Sin respuesta: ${fallbacks.noAnswer}`);
89
+ logger_1.logger.info(`Error de servicio: ${fallbacks.serviceError}`);
90
+ logger_1.logger.info(`No entiende: ${fallbacks.doNotUnderstand}`);
91
+ }
92
+ // Reglas
93
+ if (agentData.rules) {
94
+ logger_1.logger.info('\nReglas:');
95
+ logger_1.logger.divider();
96
+ const rules = agentData.rules;
97
+ logger_1.logger.info(`No mencionar precios: ${rules.doNotMentionPrices ? 'Sí' : 'No'}`);
98
+ logger_1.logger.info(`No diagnosticar: ${rules.doNotDiagnose ? 'Sí' : 'No'}`);
99
+ if (rules.doNotRespondOutsideHours) {
100
+ logger_1.logger.info(`Horario de atención: ${rules.doNotRespondOutsideHours}`);
101
+ }
102
+ }
103
+ // Servicios
104
+ if (agentData.services && agentData.services.length > 0) {
105
+ logger_1.logger.info('\nServicios:');
106
+ logger_1.logger.divider();
107
+ agentData.services.forEach((service, index) => {
108
+ logger_1.logger.info(`\nServicio ${index + 1}:`);
109
+ logger_1.logger.info(`Intent: ${service.intent}`);
110
+ logger_1.logger.info(`Referencia: ${service.reference}`);
111
+ logger_1.logger.info(`Habilitado: ${service.enabled ? 'Sí' : 'No'}`);
112
+ logger_1.logger.info(`Método: ${service.method}`);
113
+ logger_1.logger.info(`Endpoint: ${service.endpoint}`);
114
+ if (service.requiredFields) {
115
+ logger_1.logger.info('Campos requeridos:');
116
+ service.requiredFields.forEach((field) => {
117
+ logger_1.logger.info(` - ${field.name} (${field.type}): ${field.description}`);
118
+ });
119
+ }
120
+ });
121
+ }
122
+ // Acciones
123
+ if (agentData.actions && agentData.actions.length > 0) {
124
+ logger_1.logger.info('\nAcciones:');
125
+ logger_1.logger.divider();
126
+ agentData.actions.forEach((action, index) => {
127
+ logger_1.logger.info(`\nAcción ${index + 1}:`);
128
+ logger_1.logger.info(`Intent: ${action.intent}`);
129
+ logger_1.logger.info(`Referencia: ${action.reference}`);
130
+ logger_1.logger.info(`Habilitado: ${action.enabled ? 'Sí' : 'No'}`);
131
+ if (action.tags) {
132
+ logger_1.logger.info(`Tags: ${action.tags.join(', ')}`);
133
+ }
134
+ logger_1.logger.info(`Mensaje de respuesta: ${action.responseMessage}`);
135
+ if (action.action) {
136
+ logger_1.logger.info('Sub-acciones:');
137
+ action.action.forEach((subAction) => {
138
+ logger_1.logger.info(` - ${subAction.type}: ${subAction.value}`);
139
+ });
140
+ }
141
+ });
142
+ }
143
+ // Canales
144
+ if (agentData.channels && agentData.channels.length > 0) {
145
+ logger_1.logger.info('\nCanales:');
146
+ logger_1.logger.divider();
147
+ agentData.channels.forEach((channel) => {
148
+ logger_1.logger.info(`${channel.channel}: ${channel.key}`);
149
+ });
150
+ }
151
+ logger_1.logger.doubleDivider();
152
+ if (options.dev) {
153
+ logger_1.logger.warning('Ambiente: desarrollo');
154
+ }
155
+ }
156
+ catch (error) {
157
+ const message = error instanceof Error ? error.message : 'Error desconocido al obtener el agente';
158
+ logger_1.logger.error(message);
159
+ process.exit(1);
160
+ }
161
+ });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentCommands = void 0;
4
+ const commander_1 = require("commander");
5
+ const list_1 = require("./list");
6
+ const get_1 = require("./get");
7
+ const delete_1 = require("./delete");
8
+ const create_1 = require("./create");
9
+ const update_1 = require("./update");
10
+ const enable_widget_1 = require("./enable-widget");
11
+ const chat_1 = require("./chat");
12
+ const on_message_1 = require("./on-message");
13
+ exports.agentCommands = new commander_1.Command('agent')
14
+ .description('Comandos relacionados con agentes')
15
+ .addCommand(list_1.listCommand)
16
+ .addCommand(get_1.getCommand)
17
+ .addCommand(delete_1.deleteCommand)
18
+ .addCommand(create_1.createCommand)
19
+ .addCommand(update_1.updateCommand)
20
+ .addCommand(enable_widget_1.enableCommand)
21
+ .addCommand(chat_1.chatCommand)
22
+ .addCommand(on_message_1.messageCommand);
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const plazbot_1 = require("plazbot");
6
+ const credentials_1 = require("../../utils/credentials");
7
+ const logger_1 = require("../../utils/logger");
8
+ exports.listCommand = new commander_1.Command('list')
9
+ .description('Lista todos los agentes del workspace')
10
+ .option('--dev', 'Usar ambiente de desarrollo', false)
11
+ .action(async (options) => {
12
+ try {
13
+ // Obtener credenciales guardadas
14
+ const credentials = await (0, credentials_1.getStoredCredentials)();
15
+ // Crear instancia del agente con las credenciales guardadas
16
+ const agent = new plazbot_1.Agent({
17
+ workspaceId: credentials.workspace,
18
+ apiKey: credentials.apiKey,
19
+ zone: credentials.zone,
20
+ ...(options.dev && { customUrl: "http://localhost:5090" })
21
+ });
22
+ // Obtener lista de agentes
23
+ const agents = await agent.getAgents();
24
+ if (agents.length === 0) {
25
+ logger_1.logger.info('No se encontraron agentes en este workspace');
26
+ return;
27
+ }
28
+ logger_1.logger.info('\nLista de Agentes:');
29
+ logger_1.logger.doubleDivider();
30
+ agents.forEach((agent, index) => {
31
+ logger_1.logger.info(`${index + 1}. ID: ${agent.id}`);
32
+ logger_1.logger.info(` Nombre: ${agent.name}`);
33
+ logger_1.logger.info(` Estado: ${agent.enable ? '✅ Activo' : '❌ Inactivo'}`);
34
+ logger_1.logger.info(` Descripción: ${agent.description}`);
35
+ logger_1.logger.info(` Creado: ${new Date(agent.createdAt).toLocaleString()}`);
36
+ logger_1.logger.divider();
37
+ });
38
+ if (options.dev) {
39
+ logger_1.logger.warning('Ambiente: desarrollo');
40
+ }
41
+ }
42
+ catch (error) {
43
+ const message = error instanceof Error ? error.message : 'Error desconocido al listar agentes';
44
+ logger_1.logger.error(message);
45
+ process.exit(1);
46
+ }
47
+ });
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.messageCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const plazbot_1 = require("plazbot");
9
+ const credentials_1 = require("../../utils/credentials");
10
+ const logger_1 = require("../../utils/logger");
11
+ const crypto_1 = __importDefault(require("crypto"));
12
+ exports.messageCommand = new commander_1.Command('message')
13
+ .description('Envía un mensaje a un agente y obtiene su respuesta')
14
+ .requiredOption('-a, --agent-id <id>', 'ID del agente')
15
+ .requiredOption('-q, --question <text>', 'Mensaje o pregunta para el agente')
16
+ .option('-s, --session-id <id>', 'ID de sesión (opcional)')
17
+ .option('-m, --multiple-answers', 'Permitir múltiples respuestas', false)
18
+ .option('--dev', 'Usar ambiente de desarrollo', false)
19
+ .action(async (options) => {
20
+ try {
21
+ // Obtener credenciales guardadas
22
+ const credentials = await (0, credentials_1.getStoredCredentials)();
23
+ const agent = new plazbot_1.Agent({
24
+ workspaceId: credentials.workspace,
25
+ apiKey: credentials.apiKey,
26
+ zone: credentials.zone,
27
+ ...(options.dev && { customUrl: "http://localhost:5090" })
28
+ });
29
+ // Generar un sessionId si no se proporcionó uno
30
+ const sessionId = options.sessionId || crypto_1.default.randomUUID();
31
+ logger_1.logger.info('\n🤖 Enviando mensaje al agente...');
32
+ logger_1.logger.info(`ID del agente: ${options.agentId}`);
33
+ logger_1.logger.info(`Pregunta: ${options.question}`);
34
+ logger_1.logger.info(`ID de sesión: ${sessionId}`);
35
+ if (options.multipleAnswers) {
36
+ logger_1.logger.info('Modo: Múltiples respuestas');
37
+ }
38
+ const response = await agent.onMessage({
39
+ agentId: options.agentId,
40
+ question: options.question,
41
+ sessionId,
42
+ multipleAnswers: options.multipleAnswers
43
+ });
44
+ logger_1.logger.info('\n💬 Respuesta del Agente:');
45
+ logger_1.logger.divider();
46
+ console.log(response.answer);
47
+ if (response.sources && response.sources.length > 0) {
48
+ logger_1.logger.info('\n📚 Fuentes:');
49
+ logger_1.logger.divider();
50
+ response.sources.forEach((source) => {
51
+ logger_1.logger.info(`- ${source.title || 'Sin título'}`);
52
+ if (source.url)
53
+ logger_1.logger.info(` URL: ${source.url}`);
54
+ });
55
+ }
56
+ logger_1.logger.info('\n🔑 ID de Sesión:');
57
+ logger_1.logger.info(sessionId);
58
+ if (options.dev) {
59
+ logger_1.logger.warning('\nAmbiente: desarrollo');
60
+ }
61
+ }
62
+ catch (error) {
63
+ const message = error instanceof Error ? error.message : 'Error desconocido al enviar el mensaje';
64
+ logger_1.logger.error(message);
65
+ process.exit(1);
66
+ }
67
+ });
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.updateCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const plazbot_1 = require("plazbot");
9
+ const credentials_1 = require("../../utils/credentials");
10
+ const logger_1 = require("../../utils/logger");
11
+ const promises_1 = __importDefault(require("fs/promises"));
12
+ exports.updateCommand = new commander_1.Command('update')
13
+ .description('Actualiza un agente existente en Plazbot')
14
+ .argument('<agentId>', 'ID del agente a actualizar')
15
+ .argument('<configPath>', 'Ruta al archivo de configuración JSON del agente')
16
+ .option('--dev', 'Usar ambiente de desarrollo', false)
17
+ .action(async (agentId, configPath, options) => {
18
+ try {
19
+ // Obtener credenciales guardadas
20
+ const credentials = await (0, credentials_1.getStoredCredentials)();
21
+ // Leer archivo de configuración del agente
22
+ let agentConfig;
23
+ try {
24
+ const fileContent = await promises_1.default.readFile(configPath, 'utf-8');
25
+ agentConfig = JSON.parse(fileContent);
26
+ }
27
+ catch (error) {
28
+ const errorMessage = error instanceof Error ? error.message : 'Error desconocido';
29
+ throw new Error(`Error al leer el archivo de configuración: ${errorMessage}`);
30
+ }
31
+ // Crear instancia del agente con las credenciales guardadas
32
+ const agent = new plazbot_1.Agent({
33
+ workspaceId: credentials.workspace,
34
+ apiKey: credentials.apiKey,
35
+ zone: credentials.zone,
36
+ ...(options.dev && { customUrl: "http://localhost:5090" })
37
+ });
38
+ logger_1.logger.info('\n🔄 Actualizando agente...');
39
+ // Actualizar el agente
40
+ const result = await agent.updateAgent(agentId, agentConfig);
41
+ logger_1.logger.success('Agente actualizado exitosamente');
42
+ logger_1.logger.info(`Mensaje: ${result.message}`);
43
+ if (options.dev) {
44
+ logger_1.logger.warning('Ambiente: desarrollo');
45
+ }
46
+ }
47
+ catch (error) {
48
+ const message = error instanceof Error ? error.message : 'Error desconocido al actualizar el agente';
49
+ logger_1.logger.error(message);
50
+ process.exit(1);
51
+ }
52
+ });