plazbot-cli 0.2.2 → 0.2.4

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 (43) hide show
  1. package/dist/commands/agent/chat.js +1 -1
  2. package/dist/commands/agent/delete.js +1 -1
  3. package/dist/commands/agent/enable-widget.js +7 -11
  4. package/dist/commands/agent/get.js +1 -1
  5. package/dist/commands/agent/index.js +3 -1
  6. package/dist/commands/agent/list.js +1 -1
  7. package/dist/commands/agent/monitor.js +293 -0
  8. package/dist/commands/agent/on-message.js +10 -12
  9. package/dist/commands/agent/update.js +1 -1
  10. package/dist/commands/auth/login.js +13 -12
  11. package/dist/commands/portal/add-agent.js +5 -10
  12. package/dist/commands/portal/add-link.js +3 -2
  13. package/dist/commands/portal/clear-links.js +3 -2
  14. package/dist/commands/portal/create.js +3 -7
  15. package/dist/commands/portal/delete.js +5 -6
  16. package/dist/commands/portal/get.js +15 -17
  17. package/dist/commands/portal/list.js +15 -17
  18. package/dist/commands/portal/update.js +5 -6
  19. package/dist/commands/whatsapp/delete-webhook.js +3 -3
  20. package/dist/commands/whatsapp/register-webhook.js +4 -4
  21. package/dist/utils/logger.js +3 -3
  22. package/package.json +2 -1
  23. package/src/commands/agent/chat.ts +1 -1
  24. package/src/commands/agent/delete.ts +1 -1
  25. package/src/commands/agent/enable-widget.ts +8 -12
  26. package/src/commands/agent/get.ts +1 -1
  27. package/src/commands/agent/index.ts +3 -1
  28. package/src/commands/agent/list.ts +1 -1
  29. package/src/commands/agent/monitor.ts +346 -0
  30. package/src/commands/agent/on-message.ts +11 -13
  31. package/src/commands/agent/update.ts +1 -1
  32. package/src/commands/auth/login.ts +13 -12
  33. package/src/commands/portal/add-agent.ts +5 -11
  34. package/src/commands/portal/add-link.ts +2 -2
  35. package/src/commands/portal/clear-links.ts +3 -2
  36. package/src/commands/portal/create.ts +3 -8
  37. package/src/commands/portal/delete.ts +5 -6
  38. package/src/commands/portal/get.ts +16 -20
  39. package/src/commands/portal/list.ts +16 -19
  40. package/src/commands/portal/update.ts +5 -6
  41. package/src/commands/whatsapp/delete-webhook.ts +3 -3
  42. package/src/commands/whatsapp/register-webhook.ts +4 -4
  43. package/src/utils/logger.ts +3 -3
@@ -32,10 +32,10 @@ export const messageCommand = new Command('message')
32
32
  // Generar un sessionId si no se proporcionó uno
33
33
  const sessionId = options.sessionId || crypto.randomUUID();
34
34
 
35
- logger.info('\n🤖 Enviando mensaje al agente...');
36
- logger.info(`ID del agente: ${options.agentId}`);
37
- logger.info(`Pregunta: ${options.question}`);
38
- logger.info(`ID de sesión: ${sessionId}`);
35
+ logger.title('Enviando mensaje al agente');
36
+ logger.label('ID del agente', options.agentId);
37
+ logger.label('Pregunta', options.question);
38
+ logger.label('ID de sesion', sessionId);
39
39
  if (options.multipleAnswers) {
40
40
  logger.info('Modo: Múltiples respuestas');
41
41
  }
@@ -47,21 +47,19 @@ export const messageCommand = new Command('message')
47
47
  multipleAnswers: options.multipleAnswers
48
48
  }) as AgentResponse;
49
49
 
50
- logger.info('\n💬 Respuesta del Agente:');
51
- logger.divider();
50
+ logger.title('Respuesta del Agente');
52
51
  console.log(response.answer);
53
-
52
+
54
53
  if (response.sources && response.sources.length > 0) {
55
- logger.info('\n📚 Fuentes:');
56
- logger.divider();
54
+ logger.title('Fuentes');
57
55
  response.sources.forEach((source: AgentSource) => {
58
- logger.info(`- ${source.title || 'Sin título'}`);
59
- if (source.url) logger.info(` URL: ${source.url}`);
56
+ logger.label('Titulo', source.title || 'Sin titulo');
57
+ if (source.url) logger.label('URL', source.url);
60
58
  });
61
59
  }
62
60
 
63
- logger.info('\n🔑 ID de Sesión:');
64
- logger.info(sessionId);
61
+ logger.title('Sesion');
62
+ logger.label('ID', sessionId);
65
63
 
66
64
  if (options.dev) {
67
65
  logger.warning('\nAmbiente: desarrollo');
@@ -33,7 +33,7 @@ export const updateCommand = new Command('update')
33
33
  ...(options.dev && { customUrl: "http://localhost:5090" })
34
34
  });
35
35
 
36
- logger.info('\n🔄 Actualizando agente...');
36
+ logger.dim('Actualizando agente...');
37
37
 
38
38
  // Actualizar el agente
39
39
  const result = await agent.updateAgent(agentId, agentConfig);
@@ -20,10 +20,10 @@ export const loginCommand = new Command('init')
20
20
  logger.info('│' + ' Bienvenido a Plazbot CLI'.padEnd(69) + '│');
21
21
  logger.info('│' + ''.padEnd(69) + '│');
22
22
  logger.info('│' + ' Con esta herramienta podrás:'.padEnd(69) + '│');
23
- logger.info('│' + 'Crear y actualizar agentes'.padEnd(69) + '│');
24
- logger.info('│' + 'Gestionar configuraciones'.padEnd(69) + '│');
25
- logger.info('│' + 'Interactuar con tus agentes'.padEnd(69) + '│');
26
- logger.info('│' + 'Activar todas sus capacidades'.padEnd(69) + '│');
23
+ logger.info('│' + ' Crear y actualizar agentes'.padEnd(69) + '│');
24
+ logger.info('│' + ' Gestionar configuraciones'.padEnd(69) + '│');
25
+ logger.info('│' + ' Interactuar con tus agentes'.padEnd(69) + '│');
26
+ logger.info('│' + ' Activar todas sus capacidades'.padEnd(69) + '│');
27
27
  logger.info('└' + '─'.repeat(70) + '┘\n');
28
28
 
29
29
  await saveCredentials({
@@ -34,15 +34,16 @@ export const loginCommand = new Command('init')
34
34
  });
35
35
 
36
36
  logger.success('Configuración guardada exitosamente:');
37
- logger.info('Email: ' + options.email);
38
- logger.info('Workspace: ' + options.workspace);
39
- logger.info('Zona: ' + options.zone);
37
+ logger.label('Email', options.email);
38
+ logger.label('Workspace', options.workspace);
39
+ logger.label('Zona', options.zone);
40
40
 
41
- logger.info('\n🚀 Puedes comenzar usando los siguientes comandos:');
42
- logger.info('plazbot list-agents - Ver tus agentes');
43
- logger.info('plazbot create-agent - Crear un nuevo agente');
44
- logger.info('plazbot chat - Chatear con un agente');
45
- logger.info('plazbot --help - Ver todos los comandos\n');
41
+ logger.title('Puedes comenzar usando los siguientes comandos');
42
+ logger.dim('plazbot agent list - Ver tus agentes');
43
+ logger.dim('plazbot agent templates - Crear agente desde plantilla');
44
+ logger.dim('plazbot agent chat - Chatear con un agente');
45
+ logger.dim('plazbot --help - Ver todos los comandos');
46
+ console.log();
46
47
 
47
48
  if (options.dev) {
48
49
  logger.warning('Ambiente: desarrollo');
@@ -35,17 +35,11 @@ export const addAgentCommand = new Command('add-agent-portal')
35
35
  // Obtener detalles del agente
36
36
  const agentDetails = await agent.getAgentById({ id: options.agentId });
37
37
 
38
- logger.info('\n📎 Detalles de la operación:');
39
- logger.divider();
40
- logger.info('Portal:');
41
- logger.info(` ID: ${portalDetails.portal?.id || options.portalId}`);
42
- logger.info(` Nombre: ${portalDetails.portal?.name || 'N/A'}`);
43
- logger.info('\nAgente:');
44
- logger.info(` ID: ${agentDetails.id}`);
45
- logger.info(` Nombre: ${agentDetails.name}`);
46
- logger.divider();
47
-
48
- logger.info('\n🔄 Agregando agente al portal...');
38
+ logger.title('Detalles de la operacion');
39
+ logger.label('Portal ID', portalDetails.portal?.id || options.portalId);
40
+ logger.label('Portal Nombre', portalDetails.portal?.name || 'N/A');
41
+ logger.label('Agente ID', agentDetails.id);
42
+ logger.label('Agente Nombre', agentDetails.name);
49
43
 
50
44
  await portal.addAgentToPortal({
51
45
  portalId: options.portalId,
@@ -31,9 +31,9 @@ export const addLinkCommand = new Command('add-link')
31
31
  url: options.url
32
32
  })
33
33
 
34
- console.log('Enlace agregado exitosamente')
34
+ logger.success('Enlace agregado exitosamente')
35
35
  } catch (error: unknown) {
36
- console.error('❌ Error al agregar el enlace:', (error as Error).message)
36
+ logger.error((error as Error).message)
37
37
  process.exit(1)
38
38
  }
39
39
  })
@@ -1,6 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import { Portal } from 'plazbot';
3
3
  import { getStoredCredentials } from '../../utils/credentials';
4
+ import { logger } from '../../utils/logger';
4
5
  import { BaseCommandOptions } from '../../types/common';
5
6
 
6
7
  export const clearLinksCommand = new Command('clear-links')
@@ -18,9 +19,9 @@ export const clearLinksCommand = new Command('clear-links')
18
19
  });
19
20
 
20
21
  await portal.clearLinks(portalId);
21
- console.log('Enlaces eliminados exitosamente');
22
+ logger.success('Enlaces eliminados exitosamente');
22
23
  } catch (error: unknown) {
23
- console.error('❌ Error al eliminar los enlaces:', (error as Error).message);
24
+ logger.error((error as Error).message);
24
25
  process.exit(1);
25
26
  }
26
27
  });
@@ -21,13 +21,10 @@ export const createCommand = new Command('create')
21
21
  ...(options.dev && { customUrl: "http://localhost:5090" })
22
22
  });
23
23
 
24
- logger.info('\n🚀 Creando portal...');
25
-
26
24
  const portalCreated = await portal.addPortal({
27
25
  name: options.name,
28
26
  title: options.title,
29
27
  zone: credentials.zone as "LA" | "EU",
30
- // Valores por defecto
31
28
  subtitle: "",
32
29
  logo: "",
33
30
  logodark: "",
@@ -37,11 +34,9 @@ export const createCommand = new Command('create')
37
34
  });
38
35
 
39
36
  logger.success('Portal creado exitosamente');
40
- logger.info('\n📋 Detalles del portal:');
41
- logger.divider();
42
- logger.info(`ID: ${portalCreated.id}`);
43
- logger.info(`URL: ${portalCreated.url}`);
44
- logger.divider();
37
+ logger.title('Detalles del portal');
38
+ logger.label('ID', portalCreated.id);
39
+ logger.label('URL', portalCreated.url);
45
40
 
46
41
  if (options.dev) {
47
42
  logger.warning('\nAmbiente: desarrollo');
@@ -25,11 +25,10 @@ export const deleteCommand = new Command('delete')
25
25
  // Obtener detalles del portal para mostrar qué se va a eliminar
26
26
  const portalDetails = await portal.getPortal(portalId) as PortalResponse;
27
27
 
28
- logger.info('\n🗑️ Portal a eliminar:');
29
- logger.divider();
30
- logger.info(`ID: ${portalDetails.portal.id}`);
31
- logger.info(`Nombre: ${portalDetails.portal.name}`);
32
- logger.info(`URL: ${portalDetails.portal.url}`);
28
+ logger.title('Portal a eliminar');
29
+ logger.label('ID', portalDetails.portal.id);
30
+ logger.label('Nombre', portalDetails.portal.name);
31
+ logger.label('URL', portalDetails.portal.url);
33
32
 
34
33
  if (!options.force) {
35
34
  const { confirm } = await inquirer.prompt([{
@@ -45,7 +44,7 @@ export const deleteCommand = new Command('delete')
45
44
  }
46
45
  }
47
46
 
48
- logger.info('\n🔄 Eliminando portal...');
47
+ logger.dim('Eliminando portal...');
49
48
 
50
49
  await portal.deletePortal(portalId);
51
50
 
@@ -20,46 +20,42 @@ export const getCommand = new Command('get')
20
20
  ...(options.dev && { customUrl: "http://localhost:5090" })
21
21
  });
22
22
 
23
- logger.info('\n🔄 Obteniendo detalles del portal...');
24
-
25
23
  const response = await portal.getPortal(portalId) as PortalResponse;
26
24
  const portalDetails = response.portal;
27
25
 
28
- logger.info('\n🌐 Detalles del portal:');
29
- logger.divider();
30
-
31
- logger.info(`ID: ${portalDetails.id}`);
32
- logger.info(`Nombre: ${portalDetails.name}`);
33
- logger.info(`URL: ${portalDetails.url}`);
34
- logger.info(`Acceso: ${portalDetails.access}`);
35
- logger.info(`Estado: ${portalDetails.disabled ? 'Deshabilitado' : 'Habilitado'}`);
36
-
26
+ logger.title('Detalles del portal');
27
+ logger.label('ID', portalDetails.id);
28
+ logger.label('Nombre', portalDetails.name);
29
+ logger.label('URL', portalDetails.url);
30
+ logger.label('Acceso', portalDetails.access);
31
+ logger.label('Estado', portalDetails.disabled ? 'Deshabilitado' : 'Habilitado');
32
+
37
33
  if (portalDetails.title) {
38
- logger.info(`Título: ${portalDetails.title}`);
34
+ logger.label('Titulo', portalDetails.title);
39
35
  }
40
36
  if (portalDetails.subtitle) {
41
- logger.info(`Subtítulo: ${portalDetails.subtitle}`);
37
+ logger.label('Subtitulo', portalDetails.subtitle);
42
38
  }
43
39
 
44
40
  if (portalDetails.logo) {
45
- logger.info(`\n🖼️ Recursos:`);
46
- logger.info(`Logo: ${portalDetails.logo}`);
41
+ logger.title('Recursos');
42
+ logger.label('Logo', portalDetails.logo);
47
43
  if (portalDetails.logodark) {
48
- logger.info(`Logo (modo oscuro): ${portalDetails.logodark}`);
44
+ logger.label('Logo (modo oscuro)', portalDetails.logodark);
49
45
  }
50
46
  }
51
47
 
52
48
  if (portalDetails.links && portalDetails.links.length > 0) {
53
- logger.info('\n🔗 Enlaces:');
49
+ logger.title('Enlaces');
54
50
  portalDetails.links.forEach((link: PortalLink) => {
55
- logger.info(`- ${link.value}: ${link.url}`);
51
+ logger.label(link.value, link.url);
56
52
  });
57
53
  }
58
54
 
59
55
  if (portalDetails.agents && portalDetails.agents.length > 0) {
60
- logger.info('\n🤖 Agentes asociados:');
56
+ logger.title('Agentes asociados');
61
57
  portalDetails.agents.forEach((agent: PortalAgent) => {
62
- logger.info(`- ${agent.name} (${agent.id})`);
58
+ logger.label(agent.name, agent.id);
63
59
  });
64
60
  }
65
61
 
@@ -19,46 +19,43 @@ export const listCommand = new Command('list')
19
19
  ...(options.dev && { customUrl: "http://localhost:5090" })
20
20
  });
21
21
 
22
- logger.info('\n🔍 Buscando portal del workspace...');
23
-
24
22
  const response = await portal.getExistsPortal();
25
23
  const portalDetails = response.portal;
26
24
 
27
- logger.info('\n🌐 Portal encontrado:');
28
- logger.divider();
29
- logger.info(`ID: ${portalDetails.id}`);
30
- logger.info(`Nombre: ${portalDetails.name}`);
31
- logger.info(`URL: ${portalDetails.url}`);
32
- logger.info(`Acceso: ${portalDetails.access}`);
33
- logger.info(`Estado: ${portalDetails.disabled ? 'Deshabilitado' : 'Habilitado'}`);
34
-
25
+ logger.title('Portal encontrado');
26
+ logger.label('ID', portalDetails.id);
27
+ logger.label('Nombre', portalDetails.name);
28
+ logger.label('URL', portalDetails.url);
29
+ logger.label('Acceso', portalDetails.access || 'N/A');
30
+ logger.label('Estado', portalDetails.disabled ? 'Deshabilitado' : 'Habilitado');
31
+
35
32
  if (portalDetails.title) {
36
- logger.info(`Título: ${portalDetails.title}`);
33
+ logger.label('Titulo', portalDetails.title);
37
34
  }
38
35
  if (portalDetails.subtitle) {
39
- logger.info(`Subtítulo: ${portalDetails.subtitle}`);
36
+ logger.label('Subtitulo', portalDetails.subtitle);
40
37
  }
41
38
 
42
39
  if (portalDetails.logo) {
43
- logger.info('\n🖼️ Recursos:');
44
- logger.info(`Logo: ${portalDetails.logo}`);
40
+ logger.title('Recursos');
41
+ logger.label('Logo', portalDetails.logo);
45
42
  if (portalDetails.logodark) {
46
- logger.info(`Logo (modo oscuro): ${portalDetails.logodark}`);
43
+ logger.label('Logo (modo oscuro)', portalDetails.logodark);
47
44
  }
48
45
  }
49
46
 
50
47
  const portalAny = portalDetails as any;
51
48
  if (portalAny.links && portalAny.links.length > 0) {
52
- logger.info('\n🔗 Enlaces:');
49
+ logger.title('Enlaces');
53
50
  portalAny.links.forEach((link: { value: string; url: string }) => {
54
- logger.info(`- ${link.value}: ${link.url}`);
51
+ logger.label(link.value, link.url);
55
52
  });
56
53
  }
57
54
 
58
55
  if (portalAny.agents && portalAny.agents.length > 0) {
59
- logger.info('\n🤖 Agentes asociados:');
56
+ logger.title('Agentes asociados');
60
57
  portalAny.agents.forEach((agent: { name: string; id: string }) => {
61
- logger.info(`- ${agent.name} (${agent.id})`);
58
+ logger.label(agent.name, agent.id);
62
59
  });
63
60
  }
64
61
 
@@ -31,9 +31,8 @@ export const updateCommand = new Command('update')
31
31
  // Obtener detalles actuales del portal
32
32
  const currentPortal = await portal.getPortal(portalId);
33
33
 
34
- logger.info('\n🌐 Actualizando portal...');
35
- logger.info('Portal actual:');
36
- logger.info(JSON.stringify(currentPortal.portal, null, 2));
34
+ logger.title('Portal actual');
35
+ logger.json(currentPortal.portal);
37
36
 
38
37
  // Construir objeto de actualización solo con los campos proporcionados
39
38
  const updateData: any = { id: portalId };
@@ -62,13 +61,13 @@ export const updateCommand = new Command('update')
62
61
  updateData.brandOff = options.brandOff === 'true';
63
62
  }
64
63
 
65
- logger.info('\nCambios a aplicar:');
66
- logger.info(JSON.stringify(updateData, null, 2));
64
+ logger.title('Cambios a aplicar');
65
+ logger.json(updateData);
67
66
 
68
67
  const result = await portal.updatePortal(updateData);
69
68
 
70
69
  logger.success('Portal actualizado exitosamente');
71
- logger.info(`Mensaje: ${result.message}`);
70
+ logger.label('Mensaje', result.message);
72
71
 
73
72
  if (options.dev) {
74
73
  logger.warning('\nAmbiente: desarrollo');
@@ -22,8 +22,8 @@ export const deleteWebhookCommand = new Command('delete-webhook')
22
22
  ...(options.dev && { customUrl: "http://localhost:5090" })
23
23
  });
24
24
 
25
- logger.info('\n🗑️ Eliminando webhook de WhatsApp...');
26
- logger.info(`Número: ${options.number}`);
25
+ logger.title('Eliminando webhook de WhatsApp');
26
+ logger.label('Numero', options.number);
27
27
 
28
28
  await messageClient.deleteWebhook({
29
29
  number: options.number
@@ -31,7 +31,7 @@ export const deleteWebhookCommand = new Command('delete-webhook')
31
31
 
32
32
  logger.success('Webhook eliminado exitosamente');
33
33
  } catch (error: unknown) {
34
- logger.error(`❌ Error al eliminar webhook: ${(error as Error).message}`);
34
+ logger.error((error as Error).message);
35
35
  process.exit(1);
36
36
  }
37
37
  });
@@ -24,9 +24,9 @@ export const registerWebhookCommand = new Command('register-webhook')
24
24
  ...(options.dev && { customUrl: "http://localhost:5090" })
25
25
  });
26
26
 
27
- logger.info('\n🔗 Registrando webhook de WhatsApp...');
28
- logger.info(`Número: ${options.number}`);
29
- logger.info(`URL: ${options.url}`);
27
+ logger.title('Registrando webhook de WhatsApp');
28
+ logger.label('Numero', options.number);
29
+ logger.label('URL', options.url);
30
30
 
31
31
  await messageClient.registerWebhook({
32
32
  number: options.number,
@@ -35,7 +35,7 @@ export const registerWebhookCommand = new Command('register-webhook')
35
35
 
36
36
  logger.success('Webhook registrado exitosamente');
37
37
  } catch (error: unknown) {
38
- logger.error(`❌ Error al registrar webhook: ${(error as Error).message}`);
38
+ logger.error((error as Error).message);
39
39
  process.exit(1);
40
40
  }
41
41
  });
@@ -5,14 +5,14 @@ export const logger = {
5
5
  console.log(chalk.white(message));
6
6
  },
7
7
  success: (message: string) => {
8
- console.log(chalk.hex('#66BB6A')(`\n ${message}`));
8
+ console.log(chalk.hex('#66BB6A')(`\n ${message}`));
9
9
  },
10
10
  warning: (message: string) => {
11
- console.log(chalk.hex('#FFA726')(`\n ${message}`));
11
+ console.log(chalk.hex('#FFA726')(`\n ${message}`));
12
12
  },
13
13
  error: (error: Error | string) => {
14
14
  const message = error instanceof Error ? error.message : error;
15
- console.error(chalk.hex('#EF5350')(`\n Error: ${message}`));
15
+ console.error(chalk.hex('#EF5350')(`\n Error: ${message}`));
16
16
  },
17
17
  divider: (length: number = 50) => {
18
18
  console.log(chalk.gray('─'.repeat(length)));