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.
- package/agent.config.json +21 -0
- package/dist/cli.js +22 -0
- package/dist/commands/agent/chat.js +92 -0
- package/dist/commands/agent/create.js +52 -0
- package/dist/commands/agent/delete.js +61 -0
- package/dist/commands/agent/enable-widget.js +55 -0
- package/dist/commands/agent/get.js +161 -0
- package/dist/commands/agent/index.js +22 -0
- package/dist/commands/agent/list.js +47 -0
- package/dist/commands/agent/on-message.js +67 -0
- package/dist/commands/agent/update.js +52 -0
- package/dist/commands/auth/index.js +9 -0
- package/dist/commands/auth/login.js +52 -0
- package/dist/commands/auth/logout.js +23 -0
- package/dist/commands/message/delete-webhook.js +39 -0
- package/dist/commands/message/index.js +14 -0
- package/dist/commands/message/register-webhook.js +42 -0
- package/dist/commands/message/send-template.js +42 -0
- package/dist/commands/message/send.js +42 -0
- package/dist/commands/portal/add-agent.js +58 -0
- package/dist/commands/portal/add-link.js +33 -0
- package/dist/commands/portal/clear-links.js +27 -0
- package/dist/commands/portal/create.js +51 -0
- package/dist/commands/portal/delete.js +58 -0
- package/dist/commands/portal/get.js +66 -0
- package/dist/commands/portal/index.js +22 -0
- package/dist/commands/portal/list.js +65 -0
- package/dist/commands/portal/update.js +79 -0
- package/dist/commands/whatsapp/delete-webhook.js +32 -0
- package/dist/commands/whatsapp/index.js +14 -0
- package/dist/commands/whatsapp/register-webhook.js +35 -0
- package/dist/commands/whatsapp/send-template.js +41 -0
- package/dist/commands/whatsapp/send.js +42 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/common.js +2 -0
- package/dist/types/message.js +2 -0
- package/dist/types/portal.js +2 -0
- package/dist/utils/credentials.js +33 -0
- package/dist/utils/logger.js +24 -0
- package/package.json +47 -0
- package/src/cli.ts +26 -0
- package/src/commands/agent/chat.ts +103 -0
- package/src/commands/agent/create.ts +53 -0
- package/src/commands/agent/delete.ts +64 -0
- package/src/commands/agent/enable-widget.ts +62 -0
- package/src/commands/agent/get.ts +175 -0
- package/src/commands/agent/index.ts +20 -0
- package/src/commands/agent/list.ts +52 -0
- package/src/commands/agent/on-message.ts +75 -0
- package/src/commands/agent/update.ts +53 -0
- package/src/commands/auth/index.ts +8 -0
- package/src/commands/auth/login.ts +56 -0
- package/src/commands/auth/logout.ts +22 -0
- package/src/commands/portal/add-agent.ts +66 -0
- package/src/commands/portal/add-link.ts +39 -0
- package/src/commands/portal/clear-links.ts +26 -0
- package/src/commands/portal/create.ts +55 -0
- package/src/commands/portal/delete.ts +63 -0
- package/src/commands/portal/get.ts +75 -0
- package/src/commands/portal/index.ts +20 -0
- package/src/commands/portal/list.ts +73 -0
- package/src/commands/portal/update.ts +82 -0
- package/src/commands/whatsapp/delete-webhook.ts +37 -0
- package/src/commands/whatsapp/index.ts +12 -0
- package/src/commands/whatsapp/register-webhook.ts +41 -0
- package/src/commands/whatsapp/send-template.ts +44 -0
- package/src/commands/whatsapp/send.ts +46 -0
- package/src/types/agent.ts +63 -0
- package/src/types/auth.ts +8 -0
- package/src/types/common.ts +10 -0
- package/src/types/message.ts +34 -0
- package/src/types/portal.ts +56 -0
- package/src/utils/credentials.ts +37 -0
- package/src/utils/logger.ts +21 -0
- 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
|
+
});
|