blackcoffee2 2.1.0 → 2.1.1

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/package.json +3 -2
  2. package/test-aplicacion.con-logisession/BlackCoffee.js +0 -226
  3. package/test-aplicacion.con-logisession/SSL_SETUP.md +0 -53
  4. package/test-aplicacion.con-logisession/certs/ca-certificate.pem +0 -32
  5. package/test-aplicacion.con-logisession/certs/ca-private-key.pem +0 -52
  6. package/test-aplicacion.con-logisession/certs/certificate-2048.pem +0 -22
  7. package/test-aplicacion.con-logisession/certs/certificate.pem +0 -32
  8. package/test-aplicacion.con-logisession/certs/private-key-2048.pem +0 -28
  9. package/test-aplicacion.con-logisession/certs/private-key.pem +0 -52
  10. package/test-aplicacion.con-logisession/config/iaQueueSetup.js +0 -84
  11. package/test-aplicacion.con-logisession/config/qwen-rules.json +0 -39
  12. package/test-aplicacion.con-logisession/controllers/analyticsController.js +0 -117
  13. package/test-aplicacion.con-logisession/controllers/auth/AdminAuthController.js +0 -142
  14. package/test-aplicacion.con-logisession/controllers/auth/AuthController.js +0 -439
  15. package/test-aplicacion.con-logisession/controllers/auth/AuthViewController.js +0 -223
  16. package/test-aplicacion.con-logisession/controllers/endpointController.js +0 -66
  17. package/test-aplicacion.con-logisession/controllers/example.js +0 -183
  18. package/test-aplicacion.con-logisession/controllers/iaQueueController.js +0 -367
  19. package/test-aplicacion.con-logisession/controllers/queueController.js +0 -206
  20. package/test-aplicacion.con-logisession/controllers/qwenQueueController.js +0 -197
  21. package/test-aplicacion.con-logisession/controllers/test.js +0 -0
  22. package/test-aplicacion.con-logisession/controllers/tracking/EventsNoFinishController.js +0 -78
  23. package/test-aplicacion.con-logisession/controllers/tracking/TrackingController.js +0 -412
  24. package/test-aplicacion.con-logisession/controllers/tracking/TrackingControllerWithLoadModel.js +0 -437
  25. package/test-aplicacion.con-logisession/hooks/admin-hooks.js +0 -20
  26. package/test-aplicacion.con-logisession/hooks/general-hooks.js +0 -97
  27. package/test-aplicacion.con-logisession/hooks/queue-hooks.js +0 -64
  28. package/test-aplicacion.con-logisession/hooks/route-directory-hooks.js +0 -38
  29. package/test-aplicacion.con-logisession/hooks/security-hooks.js +0 -24
  30. package/test-aplicacion.con-logisession/insitu-admin-client/README.md +0 -69
  31. package/test-aplicacion.con-logisession/insitu-admin-client/package.json +0 -23
  32. package/test-aplicacion.con-logisession/insitu-admin-client.js +0 -257
  33. package/test-aplicacion.con-logisession/models/ExampleModel.js +0 -88
  34. package/test-aplicacion.con-logisession/models/QueueJobModel.js +0 -263
  35. package/test-aplicacion.con-logisession/models/TokenModel.js +0 -207
  36. package/test-aplicacion.con-logisession/models/auth/AuthModel.js +0 -66
  37. package/test-aplicacion.con-logisession/models/auth/UserModel.js +0 -189
  38. package/test-aplicacion.con-logisession/models/tracking/CompletedCartModel.js +0 -213
  39. package/test-aplicacion.con-logisession/models/tracking/EventModel.js +0 -366
  40. package/test-aplicacion.con-logisession/models/tracking/EventsNoFinishModel.js +0 -131
  41. package/test-aplicacion.con-logisession/models/tracking/SessionModel.js +0 -360
  42. package/test-aplicacion.con-logisession/models/tracking/SiteFlowModel.js +0 -286
  43. package/test-aplicacion.con-logisession/models/tracking/TokenModel.js +0 -207
  44. package/test-aplicacion.con-logisession/package-lock.json +0 -3313
  45. package/test-aplicacion.con-logisession/package.json +0 -32
  46. package/test-aplicacion.con-logisession/public/blackcoffee-welcome/index.html +0 -1339
  47. package/test-aplicacion.con-logisession/public/css/style.css +0 -64
  48. package/test-aplicacion.con-logisession/public/ejemplo-estatica/index.html +0 -18
  49. package/test-aplicacion.con-logisession/public/ejemplo-estatica/script.js +0 -16
  50. package/test-aplicacion.con-logisession/public/ejemplo-estatica/styles.css +0 -43
  51. package/test-aplicacion.con-logisession/public/images/logo.svg +0 -7
  52. package/test-aplicacion.con-logisession/public/js/main.js +0 -67
  53. package/test-aplicacion.con-logisession/routes/analytics-routes.json +0 -8
  54. package/test-aplicacion.con-logisession/routes/auth-routes.json +0 -98
  55. package/test-aplicacion.con-logisession/routes/blackcoffee-welcome-routes.json +0 -20
  56. package/test-aplicacion.con-logisession/routes/duplicate-test-routes.json.disabled +0 -16
  57. package/test-aplicacion.con-logisession/routes/ejemplo-estatica-routes.json +0 -11
  58. package/test-aplicacion.con-logisession/routes/endpoints-routes.json +0 -8
  59. package/test-aplicacion.con-logisession/routes/ia-queue-routes.json +0 -26
  60. package/test-aplicacion.con-logisession/routes/product-routes.json.disabled +0 -20
  61. package/test-aplicacion.con-logisession/routes/queue-routes.json +0 -32
  62. package/test-aplicacion.con-logisession/routes/qwen-routes.json +0 -14
  63. package/test-aplicacion.con-logisession/routes/static-routes.json +0 -29
  64. package/test-aplicacion.con-logisession/routes/tracking-routes.json +0 -58
  65. package/test-aplicacion.con-logisession/routes/tracking-with-loadmodel-routes.json +0 -51
  66. package/test-aplicacion.con-logisession/utils/dbAdapter.js +0 -88
  67. package/test-aplicacion.con-logisession/utils/qbWrapper.js +0 -4
  68. package/test-aplicacion.con-logisession/utils/queueProcessor.js +0 -305
  69. package/test-aplicacion.con-logisession/utils/qwenRulesService.js +0 -131
  70. package/test-aplicacion.con-logisession/utils/tokenHelper.js +0 -22
  71. package/test-aplicacion.con-logisession/views/auth/dashboard.html +0 -443
  72. package/test-aplicacion.con-logisession/views/auth/forgot-password.html +0 -200
  73. package/test-aplicacion.con-logisession/views/auth/login.html +0 -213
  74. package/test-aplicacion.con-logisession/views/auth/register.html +0 -294
  75. package/test-aplicacion.con-logisession/views/contact/form.html +0 -47
  76. package/test-aplicacion.con-logisession/views/products/index.html +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blackcoffee2",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "A app server built with Insitu Framework",
5
5
  "main": "server.js",
6
6
  "author": "Benjamin Sanchez Cardenas <bytedogssyndicate@gmail.com>",
@@ -40,6 +40,7 @@
40
40
  "backend",
41
41
  "framework",
42
42
  "microservices",
43
- "api-server"
43
+ "api-server",
44
+ "mvc"
44
45
  ]
45
46
  }
@@ -1,226 +0,0 @@
1
- #!/bin/node
2
- /**
3
- * Aplicación BlackCoffee con insitu-js
4
- * Servidor backend para construir aplicaciones web
5
- */
6
-
7
- // Cargar variables de entorno desde archivo .env
8
- require('dotenv').config();
9
-
10
- const jerk = require('insitu-js');
11
- const {
12
- APIServer,
13
- Logger,
14
- RouteLoader,
15
- RouteDirectoryLoader,
16
- Firewall, // Importar el Firewall
17
- hooks
18
- } = jerk;
19
-
20
- // Importar los módulos de hooks
21
- const { registerGeneralHooks } = require('./hooks/general-hooks');
22
- const { registerSecurityHooks } = require('./hooks/security-hooks');
23
- const { registerQueueHooks } = require('./hooks/queue-hooks');
24
- const { registerRouteDirectoryHooks } = require('./hooks/route-directory-hooks');
25
- const { registerAdminHooks } = require('./hooks/admin-hooks');
26
-
27
- // Importar el procesador de colas
28
- const { queueProcessor } = require('./utils/queueProcessor');
29
-
30
- // Importar y configurar el sistema de colas global
31
- const { QueueIntegration } = require('insitu-js');
32
- const globalQueueIntegration = new QueueIntegration();
33
-
34
- // Crear instancia del logger
35
- const logger = new Logger({ level: 'debug' });
36
-
37
- // Crear instancia del Firewall con opciones personalizadas
38
- const firewall = new Firewall({
39
- maxAttempts: 5, // Máximo de intentos fallidos antes de bloquear
40
- blockDuration: 900000, // Duración del bloqueo en ms (15 minutos)
41
- whitelist: ['127.0.0.1'], // IPs que no deben ser bloqueadas
42
- blacklist: [], // IPs que siempre deben ser bloqueadas
43
- logger: logger // Instancia de logger para eventos de seguridad
44
- });
45
-
46
- // Array para almacenar los controladores disponibles
47
- let availableControllers = [];
48
-
49
- // Instancia del cargador de rutas desde directorio
50
- let routeDirectoryLoader = null;
51
-
52
- // Registrar todos los hooks
53
- registerGeneralHooks(hooks, logger, availableControllers);
54
- registerSecurityHooks(hooks, logger);
55
- registerQueueHooks(hooks, logger);
56
- registerRouteDirectoryHooks(hooks, logger);
57
- registerAdminHooks(hooks);
58
-
59
- async function startApp() {
60
- // Configurar opciones del servidor
61
- const serverOptions = {
62
- port: parseInt(process.env.PORT) || 3000,
63
- host: '0.0.0.0',
64
- requestTimeout: parseInt(process.env.REQUEST_TIMEOUT) || 300000, // 5 minutos por defecto (era 2 minutos)
65
- connectionTimeout: parseInt(process.env.CONNECTION_TIMEOUT) || 300000 // 5 minutos por defecto (era 2 minutos)
66
- };
67
-
68
- // Agregar soporte para SSL basado en variables de entorno
69
- if (process.env.ENABLE_SSL === 'true') {
70
- serverOptions.https = true;
71
-
72
- if (process.env.SSL_KEY_PATH && process.env.SSL_CERT_PATH) {
73
- serverOptions.key = process.env.SSL_KEY_PATH;
74
- serverOptions.cert = process.env.SSL_CERT_PATH;
75
-
76
- // Opcional: soporte para certificado CA
77
- if (process.env.SSL_CA_PATH) {
78
- serverOptions.ca = process.env.SSL_CA_PATH;
79
- }
80
- } else {
81
- console.error('ERROR: ENABLE_SSL está activado pero faltan las variables SSL_KEY_PATH o SSL_CERT_PATH');
82
- process.exit(1);
83
- }
84
- }
85
-
86
- // Crear instancia del servidor
87
- const server = new APIServer(serverOptions);
88
-
89
- // Exponer el servidor y el sistema de colas globalmente para que otros módulos puedan acceder a ellos
90
- global.apiServer = server;
91
- global.queueIntegration = globalQueueIntegration;
92
-
93
- try {
94
- // Aplicar middleware del Firewall ANTES de cualquier otro middleware
95
- server.use(firewall.middleware());
96
-
97
- // Inicializar SessionManager
98
- const { SessionManager } = require('insitu-js');
99
- const sessionManager = new SessionManager({
100
- cookieName: 'blackcoffee_session',
101
- secret: process.env.SESSION_SECRET || 'blackcoffee-session-secret-change-in-production',
102
- timeout: 3600000 // 1 hora por defecto
103
- });
104
-
105
- // Aplicar middleware de sesión
106
- server.use(sessionManager.middleware());
107
- server.sessionManager = sessionManager;
108
-
109
- // Middleware para capturar inicio de solicitudes
110
- server.use((req, res, next) => {
111
- // Disparar hook de solicitud recibida
112
- hooks.doAction('request_received', req, res);
113
-
114
- // Guardar la función original de res.end
115
- const originalEnd = res.end;
116
-
117
- // Sobrescribir res.end para capturar cuando se completa la solicitud
118
- res.end = function(chunk, encoding, callback) {
119
- // Llamar a la función original
120
- const result = originalEnd.call(this, chunk, encoding, callback);
121
-
122
- // Disparar hook de solicitud completada
123
- hooks.doAction('request_completed', req, res);
124
-
125
- return result;
126
- };
127
-
128
- next();
129
- });
130
-
131
- // Determinar si se deben cargar rutas desde archivo o directorio
132
- // Si la variable de entorno USE_FILE_ROUTES está definida como 'true', se usa el archivo en lugar del directorio
133
- if (process.env.USE_FILE_ROUTES === 'true') {
134
- // Determinar qué archivo de rutas usar basado en variables de entorno
135
- // Prioridad: CUSTOM_ROUTES_PATH > USE_DEFAULT_ROUTES > routes.json por defecto
136
- let routesFilePath = './routes.json'; // Valor por defecto
137
-
138
- if (process.env.CUSTOM_ROUTES_PATH) {
139
- routesFilePath = process.env.CUSTOM_ROUTES_PATH;
140
- logger.info(`Usando ruta personalizada para rutas: ${routesFilePath}`);
141
- } else if (process.env.USE_DEFAULT_ROUTES === 'true') {
142
- routesFilePath = './routes-default.json';
143
- logger.info(`Usando rutas por defecto: ${routesFilePath}`);
144
- } else {
145
- logger.info(`Usando rutas estándar: ${routesFilePath}`);
146
- }
147
-
148
- // Cargar rutas desde archivo JSON
149
- const routeLoader = new RouteLoader();
150
- await routeLoader.loadRoutes(server, routesFilePath);
151
- } else {
152
- logger.info('Usando carga de rutas desde directorio (modo predeterminado)');
153
-
154
- // Crear instancia del cargador de rutas desde directorio
155
- routeDirectoryLoader = new RouteDirectoryLoader();
156
-
157
- // Directorio que contiene los archivos JSON de rutas
158
- const routesDirectory = process.env.ROUTES_DIRECTORY || './routes';
159
- logger.info(`Cargando rutas desde directorio: ${routesDirectory}`);
160
-
161
- // Cargar rutas desde el directorio
162
- const loadedRoutes = await routeDirectoryLoader.loadRoutesFromDirectory(server, routesDirectory);
163
- logger.info(`${loadedRoutes.length} rutas cargadas exitosamente desde el directorio`);
164
- }
165
-
166
- // Mostrar los controladores disponibles (usando hooks)
167
- logger.info('\n=== CONTROLADORES DISPONIBLES ===');
168
- availableControllers.forEach((controller, index) => {
169
- // logger.info(`[[CONTROLLER ${index + 1}]] - Nombre: ${controller.name}`);
170
- // logger.info(`[[PATH]] - Ruta: ${controller.path}`);
171
- // logger.info(`[[HANDLERS]] - Funciones: ${controller.handlers.join(', ')}`);
172
- // logger.info('---');
173
- });
174
-
175
-
176
- // Iniciar el servidor
177
- server.start();
178
-
179
- // Mostrar el protocolo correcto según si está usando SSL o no
180
- const protocol = (process.env.ENABLE_SSL === 'true') ? 'https' : 'http';
181
- const host = process.env.HOST || 'localhost';
182
- const port = process.env.PORT || '9791'; // Usar el puerto predeterminado 9791
183
- logger.info(`\nServidor BlackCoffee iniciado en ${protocol}://${host}:${server.port}`);
184
- logger.info('La aplicación está lista para servir peticiones web');
185
-
186
- // Disparar hook antes de iniciar el procesador de colas
187
- hooks.doAction('queue_processor_before_start');
188
-
189
- // Iniciar el sistema de colas global
190
- global.queueIntegration.start();
191
- logger.info('Sistema de colas global iniciado');
192
-
193
- // Configurar las colas de IA después de iniciar el sistema de colas
194
- require('./config/iaQueueSetup.js');
195
-
196
- // Iniciar el procesador de colas
197
- queueProcessor.start();
198
- logger.info('Procesador de colas iniciado');
199
-
200
- // Disparar hook después de iniciar el procesador de colas
201
- hooks.doAction('queue_processor_after_start');
202
-
203
- } catch (error) {
204
- logger.error('Error iniciando la aplicación:', error.message);
205
- logger.error('Stack trace:', error.stack);
206
-
207
- // Disparar hook antes de detener el procesador de colas en caso de error
208
- hooks.doAction('queue_processor_before_stop_on_error');
209
-
210
- // Asegurarse de detener el procesador de colas en caso de error
211
- try {
212
- queueProcessor.stop();
213
- } catch (stopError) {
214
- logger.error('Error deteniendo el procesador de colas:', stopError.message);
215
- }
216
-
217
- // Disparar hook después de detener el procesador de colas en caso de error
218
- hooks.doAction('queue_processor_after_stop_on_error');
219
-
220
- process.exit(1);
221
- }
222
- }
223
-
224
- startApp();
225
-
226
- module.exports = { startApp };
@@ -1,53 +0,0 @@
1
- # Configuración SSL para BlackCoffee
2
-
3
- Este documento explica cómo configurar BlackCoffee para que funcione con SSL/TLS.
4
-
5
- ## Variables de Entorno
6
-
7
- Para habilitar SSL en BlackCoffee, configure las siguientes variables de entorno:
8
-
9
- - `ENABLE_SSL`: Establezca en `true` para habilitar SSL (por defecto es `false`)
10
- - `SSL_KEY_PATH`: Ruta al archivo de clave privada SSL
11
- - `SSL_CERT_PATH`: Ruta al archivo de certificado SSL
12
- - `SSL_CA_PATH`: (Opcional) Ruta al archivo de certificado de autoridad (CA)
13
-
14
- ## Configuración de Ejemplo
15
-
16
- En su archivo `.env`, puede configurar SSL de la siguiente manera:
17
-
18
- ```env
19
- # Deshabilitar SSL (por defecto)
20
- ENABLE_SSL=false
21
-
22
- # O habilitar SSL
23
- ENABLE_SSL=true
24
- SSL_KEY_PATH=./certs/private-key.pem
25
- SSL_CERT_PATH=./certs/certificate.pem
26
- SSL_CA_PATH=./certs/ca-certificate.pem
27
- ```
28
-
29
- ## Generación de Certificados
30
-
31
- Si necesita certificados autofirmados para desarrollo, puede generarlos con OpenSSL:
32
-
33
- ```bash
34
- # Crear directorio para certificados
35
- mkdir -p certs
36
-
37
- # Generar clave privada y certificado autofirmado
38
- openssl req -x509 -newkey rsa:4096 -keyout certs/private-key.pem -out certs/certificate.pem -days 365 -nodes -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"
39
- ```
40
-
41
- ## Producción
42
-
43
- Para entornos de producción, asegúrese de:
44
-
45
- 1. Utilizar certificados válidos emitidos por una Autoridad de Certificación (CA) confiable
46
- 2. Proteger adecuadamente los archivos de clave privada
47
- 3. Mantener actualizados los certificados antes de su vencimiento
48
-
49
- ## Notas Adicionales
50
-
51
- - Cuando SSL está habilitado, el servidor escuchará en el puerto configurado usando HTTPS
52
- - El valor predeterminado sigue siendo HTTP para compatibilidad hacia atrás
53
- - Si `ENABLE_SSL` está establecido en `true` pero faltan `SSL_KEY_PATH` o `SSL_CERT_PATH`, el servidor mostrará un error y se cerrará
@@ -1,32 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 2c34VLxF7RyupehcUAjn+aZXhX09H6Wynh5v6fRPWymwLQp5TxbyaIbL+ZHKnCBr
19
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
32
- -----END CERTIFICATE-----
@@ -1,52 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- n2x1NECwe8teuUSvOL6aV9pupUCXKBogV4W9hmKTanxh5fRstmNgcPx0Sv9RfwA/
10
- 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
- QUaMkwI1gMfvIiiPPAttGfTpdZGHfylx43ZwRb+7CrjY/OjMc62sJrY8fIe8WnnH
12
- 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
- 6fRPWymwLQp5TxbyaIbL+ZHKnCBrDwIDAQABAoICACn5JkPovFgwX+vhH666+cKD
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 6tLOlpGEfnSmYyUNxW3Am5UDtkh82x1Moet1HkvzxMxerJ5NUSGzgF3yEjtqwyJe
23
- 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
- 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
- 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
- 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
- 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
- 0cTee8qkEsISlE/9OusVYh/gKvvDxq5d5OJ7uojupnfftUH/3AA75B15w0z/WIYs
29
- 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
- 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
- 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
- XwQCSvgUWmreaUpayDqNTdVXBo8je8nZa0Hl8lNljy3QiueZIZF2E0coph+KL84q
33
- /1i8D8RPHbzdWkBt05Uofqm7t4n7op/rhKOGoOicAzz6pEtH1VQt7wLGGWLJtNRk
34
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- miBJFyHefvd1al/grAAzct/UX5cwNbCFj6+NB39EcyLkHgVh2MRdakTA6G/yC8DS
42
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
51
- n3kP2JSr6Y7hpD0t/0f75+RdnCog+GQ=
52
- -----END PRIVATE KEY-----
@@ -1,22 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDjzCCAnegAwIBAgIUTuUu2F+FkfM5v+yLPfKvNZzLz+YwDQYJKoZIhvcNAQEL
3
- BQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
4
- MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0y
5
- NjAyMTQwMDIzMDRaFw0yNzAyMTQwMDIzMDRaMFcxCzAJBgNVBAYTAlVTMQ4wDAYD
6
- VQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UECgwMT3JnYW5pemF0aW9u
7
- MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
8
- AoIBAQC8q2hknxipLvS7uSsLURP3vUxg+TACP4g0WVjyk2eTLK7NX+JmA5dv+AaN
9
- P4ZBOnAV2/QwR+BlrlxH2mRPUJcRk3dK7jKfgidbSm7sqXZxav1Ej59ph9vjqBdb
10
- X7NfpKfh+AEnWmi8C3VIyAOFb60y9SjuUlUzzBeToPh3iJ0gw0zT84XdLl+wnV47
11
- KjzsLHqRAmBSUct1XGCej0WLeqLwm8i+6685VY2yH4LrYUCmAUV9fxrPGJSkgPgT
12
- faMK/5bC3TytzVSU9iUTP0OiEhJOrJcZMG2ybGPdpSlgp4v5eZA96TFqsKO/TJoy
13
- VzGmRqSqtStmV86accmPsvlCt2RhAgMBAAGjUzBRMB0GA1UdDgQWBBSf/HSRcBqE
14
- Oi9zeDmu0BE8w/M6MzAfBgNVHSMEGDAWgBSf/HSRcBqEOi9zeDmu0BE8w/M6MzAP
15
- BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQC0mfIAGGA1XaKrLIpK
16
- A+sWqmcyI4dwVyP00CRVy3M9jnwNIOnw3YxdSfKeClX93yRYrRpjPRRqH8JA4ys2
17
- NS8kyvkH899urPU2hZXnuzEk/FHM+0ETxo/qBxavMbzLoDPj+pEj8emI9muoAzBR
18
- wlyD0wbRgvspC2A4lZ+AUIqZHU86u+yrPWPon/y0U6W3h03NA3Xej7pE++wTN9xT
19
- /RHrmJWzSQzPXhxMSX0m9hL6WQvv+3kh9KneXt33xJ4YCAj1ogje/nMzU6yaAXXV
20
- bAJlngUgodn6dEKd3eGbfQBR095/CMk7kjHbnrr/MIrXjoMCIBxzVebVHX/5yIdT
21
- agQm
22
- -----END CERTIFICATE-----
@@ -1,32 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- NjAyMTMyMzM4NDNaFw0yNzAyMTMyMzM4NDNaMFcxCzAJBgNVBAYTAlVTMQ4wDAYD
6
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
32
- -----END CERTIFICATE-----
@@ -1,28 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8q2hknxipLvS7
3
- uSsLURP3vUxg+TACP4g0WVjyk2eTLK7NX+JmA5dv+AaNP4ZBOnAV2/QwR+BlrlxH
4
- 2mRPUJcRk3dK7jKfgidbSm7sqXZxav1Ej59ph9vjqBdbX7NfpKfh+AEnWmi8C3VI
5
- yAOFb60y9SjuUlUzzBeToPh3iJ0gw0zT84XdLl+wnV47KjzsLHqRAmBSUct1XGCe
6
- j0WLeqLwm8i+6685VY2yH4LrYUCmAUV9fxrPGJSkgPgTfaMK/5bC3TytzVSU9iUT
7
- P0OiEhJOrJcZMG2ybGPdpSlgp4v5eZA96TFqsKO/TJoyVzGmRqSqtStmV86accmP
8
- svlCt2RhAgMBAAECggEAHI3pqQ7uJc7iQdYaxmXxOnW3LVcRdcmlRNz/6gi2rI7e
9
- 7tzT8EIbZZoZbb+/QziDtb86JCOAugrrUwGh3GIzVvjlXV0TItKJP9cSVjWopC4/
10
- 4iRFiWyDMl+il1Ty2icatIe7LvhPMSSfzdHdvJCEG1oA5Z7m38XEDLcYW8j8lPRP
11
- RT7OIbE2BhDEZHdnubvSTjM2pISxJxKMWnbiMK0byvVwUsldmN9ZuMPDzwv9Y5qp
12
- MbLC1TTjv2irSkV3yggqjZjIG5rzdoVYNxOYT7RLjwSui0bR1wGtS4ZFnUaE6bAU
13
- FZ7TnHo+Y6xQ3Bdzv4VSUGgRLn+9l5TmNvIe3i7DRQKBgQDsZEDHeq5kMm2YeMIv
14
- F1O0OmSIbkoK1n9Gu4vkAJfqkCNfyVEYeC4X4fQ+sK/PkCwDV+H4Qfx0qaSMtPI6
15
- DKbfqs0yKlYS6JvxCk8z/bTalELTqmvD/WopKUYMF+DMiAvXfH2+L7DH73MMr5Qo
16
- vDykLwjri+IP+8xgb6gsGJ46FQKBgQDMUchmtZKQ9nIkqyaTiPcMbI3o7pwt+3uq
17
- OiqdPsp5CcAOkWfc59TSUZD5Zh3gXISgrBIT80CiSREKTpgOKamvPA79kQIKPb5O
18
- ep8ZVRLv4Pd1As9LI2ptnzZZ0DJJGam1lraiXtiu1Y4O/NB5EIUAlj87wR3nxyKl
19
- A533emOQHQKBgQCiew4jjmmLqTW3VVlzcL8x4+jx9YyjAmgdQA+ZOecxbL1Du2Yo
20
- QYK9G6v74woUyu3VpnRFZWWW8nuN01mjGMsidY3w6zSabpOxC/sAq2PB0aJVRpAn
21
- +GkdvabN7SOwsdoh1QnAzZre8fDMSWq2zRuJZmLlNBLAFbyWlGitVoZ7OQKBgHID
22
- tRuzeO1RyNIze5xaktmo/eucsyRpsFGGkd8beerfCQBYHahE6hrPD2JMnKFln1D1
23
- lETzuf6VXV/uCaXlk93IWukecQ/78mViwcNmGOIpHI18GuboBWzUqoSlzFnEa1J8
24
- nr+uw6WUX+h3JXJZSI7SSMj0c9ax5eBFS3IdJs/1AoGAOEsheOU783soNhLYbsNz
25
- g+WuWYFm33aaDcAB0Bwr0FQt4nXAdaAJW7JouyTtnsmYq0DTz2RBouxpiigt5qg1
26
- qE1HETdfdO282QiI2IkxH5c7gTrvc0XrxKYCpUuOnobABVsQeRiitTHQvp3FcwQW
27
- Kkl1ouq9cAlbKAJ1VTEHVsk=
28
- -----END PRIVATE KEY-----
@@ -1,52 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- f5u0tVUOhYVPgB2JQ9OXzw+WRlzLYR70CvglqieVpIzvDfBFMr+yPltOTEOcD9BT
9
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- x6gd3CyVmP25SkNpNGbtws0Xk0P1ymtKYAtAk4vAcbLJuRqw792L3D0Vfvjc9+Bu
23
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- EhKVoIFvhrsL03YbmAycdGl0oDjSAUUN56jpwFeml2DtJy/Xlq+4Bt9JZxG4ml77
34
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- kkflVz1GbHl4hbACZCAJyc19k8ZD1mus5qE/NCOzmTJiSt/tIKFjhCzzMBR+cF2r
50
- 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
51
- wAaKuo3SY0hW6Y3Jc8hf3Xz8qfSbXA==
52
- -----END PRIVATE KEY-----
@@ -1,84 +0,0 @@
1
- // Configuración del sistema de colas de IA siguiendo el patrón del ejemplo test-app
2
-
3
- const { HookSystem } = require('insitu-js');
4
-
5
- // Verificar que el sistema de colas global esté disponible
6
- if (global.queueIntegration) {
7
- // Crear sistema de hooks para la cola de IA
8
- const iaHooks = new HookSystem();
9
-
10
- // Hook para personalizar la lógica de procesamiento
11
- iaHooks.addAction('queue_execute_task', (task, queueName, taskObj) => {
12
- console.log(`[IA_QUEUE] Preparando para procesar tarea: ${taskObj.id}`);
13
-
14
- // Envolver la tarea original con lógica adicional
15
- const wrappedTask = async (datos, taskObj) => {
16
- console.log(`[IA_QUEUE] Iniciando procesamiento de IA: ${taskObj.id}`);
17
- try {
18
- const result = await task(datos, taskObj);
19
- console.log(`[IA_QUEUE] Procesamiento completado: ${taskObj.id}`);
20
- return result;
21
- } catch (error) {
22
- console.log(`[IA_QUEUE] Error procesando tarea: ${taskObj.id} - ${error.message}`);
23
- throw error;
24
- }
25
- };
26
-
27
- return wrappedTask;
28
- });
29
-
30
- // Hook para manejar la lógica de fallback
31
- iaHooks.addAction('queue_task_fallback', (queueName, task, error) => {
32
- console.log(`[IA_QUEUE] Ejecutando fallback para tarea:`, error.message);
33
- // Lógica personalizada para manejar tareas que fallan definitivamente
34
- });
35
-
36
- // Hook para registrar tareas completadas
37
- iaHooks.addAction('queue_task_completed', async (queueName, task) => {
38
- // El hook queue_task_completed se llama con (queueName, task) según el código del sistema de colas
39
- // El resultado no se pasa directamente en este hook, sino que se maneja de otra manera
40
- console.log(`[IA_QUEUE] Hook queue_task_completed recibió:`, { queueName, task });
41
-
42
- // Extraer el ID de la tarea del objeto
43
- let taskId;
44
- if (task && typeof task === 'object' && task.id) {
45
- taskId = task.id;
46
- } else if (typeof task === 'string') {
47
- taskId = task; // Si es un string, asumimos que es el ID
48
- } else {
49
- console.error(`[IA_QUEUE] No se pudo obtener ID de la tarea completada:`, { task });
50
- return;
51
- }
52
-
53
- console.log(`[IA_QUEUE] Tarea completada en cola ${queueName}:`, taskId);
54
-
55
- // En este hook no tenemos acceso directo al resultado de la tarea
56
- // El resultado debe ser manejado de otra manera, posiblemente almacenado temporalmente
57
- // durante la ejecución de la tarea y luego recuperado aquí
58
-
59
- // Para este ejemplo, vamos a asumir que el resultado ya está disponible en algún lugar
60
- // o que se manejará de forma diferente
61
- console.log(`[IA_QUEUE] Tarea ${taskId} completada, pero el resultado debe manejarse de otra manera`);
62
- });
63
-
64
- // Hook para registrar tareas fallidas
65
- iaHooks.addAction('queue_task_failed', (queueName, taskObj, error) => {
66
- if (!taskObj || !taskObj.id) {
67
- console.error(`[IA_QUEUE] Tarea fallida sin ID válido:`, { taskObj, error });
68
- return;
69
- }
70
-
71
- console.log(`[IA_QUEUE] Tarea fallida en cola ${queueName}:`, taskObj.id, error.message);
72
- });
73
-
74
- // Crear la cola de IA con hooks personalizados
75
- global.queueIntegration.createQueue('ia-processing', {
76
- concurrency: 2, // Máximo 2 tareas de IA ejecutándose simultáneamente
77
- retryAttempts: 3, // Reintentar hasta 3 veces si falla
78
- retryDelay: 2000 // Esperar 2 segundos entre reintentos
79
- }, iaHooks);
80
-
81
- console.log('[IA_QUEUE] Cola de IA configurada correctamente');
82
- } else {
83
- console.error('[IA_QUEUE] El sistema de colas global no está disponible');
84
- }
@@ -1,39 +0,0 @@
1
- {
2
- "qwenRules": {
3
- "restrictSystemInfo": true,
4
- "preventDataLeakage": true,
5
- "allowExternalContext": false,
6
- "maxResponseTokens": 2000,
7
- "responseFormat": "json",
8
- "prohibitedTopics": [
9
- "sistema de archivos",
10
- "estructura de directorios",
11
- "archivos del sistema",
12
- "información interna",
13
- "código fuente del sistema",
14
- "configuración interna"
15
- ],
16
- "requiredTopics": [
17
- "datos proporcionados",
18
- "análisis de información",
19
- "recomendaciones basadas en datos"
20
- ],
21
- "customInstructions": [
22
- "Solo responde sobre los datos que se te proporcionan explícitamente",
23
- "No hagas suposiciones sobre la estructura interna del sistema",
24
- "Si se te pregunta sobre archivos o estructura del sistema, redirige a los datos proporcionados",
25
- "Mantén el enfoque en el análisis de los datos proporcionados"
26
- ]
27
- },
28
- "queueSettings": {
29
- "defaultPriority": 0,
30
- "maxRetries": 3,
31
- "processingTimeout": 60000,
32
- "maxPayloadSize": 1048576
33
- },
34
- "security": {
35
- "sanitizeInputs": true,
36
- "validateOutputs": true,
37
- "blockSuspiciousPatterns": true
38
- }
39
- }