@ingcrea/aumic-puf 3.3.0 → 3.4.0
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/LICENSE +1 -1
- package/README.es.md +5 -2
- package/README.md +5 -2
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +62 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/core/auto-sanador.d.ts +34 -0
- package/dist/core/auto-sanador.d.ts.map +1 -0
- package/dist/core/auto-sanador.js +257 -0
- package/dist/core/auto-sanador.js.map +1 -0
- package/dist/core/centinela-watch.d.ts +20 -0
- package/dist/core/centinela-watch.d.ts.map +1 -0
- package/dist/core/centinela-watch.js +168 -0
- package/dist/core/centinela-watch.js.map +1 -0
- package/dist/core/servidor-mcp.d.ts +13 -0
- package/dist/core/servidor-mcp.d.ts.map +1 -0
- package/dist/core/servidor-mcp.js +192 -0
- package/dist/core/servidor-mcp.js.map +1 -0
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -630,7 +630,7 @@ state the exclusion of warranty; and each file should have at least
|
|
|
630
630
|
the "copyright" line and a pointer to where the full notice is found.
|
|
631
631
|
|
|
632
632
|
<one line to give the program's name and a brief idea of what it does.>
|
|
633
|
-
Copyright (C)
|
|
633
|
+
Copyright (C) 2026 Ingeniería Creativa
|
|
634
634
|
|
|
635
635
|
This program is free software: you can redistribute it and/or modify
|
|
636
636
|
it under the terms of the GNU Affero General Public License as published
|
package/README.es.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://github.com/ingcrea/aum-ic)
|
|
5
|
-
[](https://www.npmjs.com/package/@ingcrea/aumic-puf)
|
|
6
6
|
|
|
7
7
|
> 🌐 **Navegación:** 🇲🇽 [Leer en Español](./README.es.md) | 🇺🇸 [Read in English](./README.md) | 📜 [Manifiesto (ES)](./MANIFEST.es.md) | 📜 [Manifesto (EN)](./MANIFEST.md) | 🌌 [Estándar AUM-IC 7](https://github.com/ingcrea/aum-ic)
|
|
8
8
|
|
|
@@ -16,8 +16,11 @@ El Protocolo Universal contra Fallos (PUF) no es un linter superficial ni una co
|
|
|
16
16
|
|
|
17
17
|
Opera de forma agnóstica a través de adaptadores especializados para **Rust, TypeScript/JavaScript, Astro, Next.js, Python, PHP, Java/JVM, C#, C/C++, Flutter/Dart y Shell**, garantizando cumplimiento riguroso con normativas internacionales de fiabilidad (**ISO/IEC 25010**), seguridad de la información (**ISO 27001**) y testabilidad (**ISO 29119**).
|
|
18
18
|
|
|
19
|
-
### Características Clave del Motor v3.
|
|
19
|
+
### Características Clave del Motor v3.4.0
|
|
20
20
|
|
|
21
|
+
* **Auto-Sanador Quirúrgico (`puf sanar` / `puf fix`):** Remediación determinista automatizada de anomalías en G0, G8, G17, G20 y G22, asegurando respaldos inmutables G3 previos con hash SHA-256 antes de cada mutación.
|
|
22
|
+
* **Modo Centinela Dual (`puf watch`):** Vigilancia reactiva en caliente que reporta en consola ANSI y despacha notificaciones Toast nativas en el sistema operativo sin robar foco de ventana (cumplimiento ergonómico G11).
|
|
23
|
+
* **Servidor MCP Nativo (`puf serve` / `puf mcp`):** Protocolo Model Context Protocol por stdio (JSON-RPC) para integración directa con asistentes de IA (Antigravity, Claude, Cursor) sin latencia de subprocesos.
|
|
21
24
|
* **Snapshot VFS en Memoria (`LectorArbolProyecto`):** Mapeo virtual del sistema de archivos con caché volátil estructurado. Permite que las 25 compuertas analicen el repositorio de forma concurrente sin provocar saturación de I/O en disco.
|
|
22
25
|
* **Persistencia Forense Indexada (`RepositorioSqliteAudit`):** Almacenamiento nativo en SQLite (`.aumic/puf_audit.sqlite`) de cada ejecución, registrando métricas de latencia, violaciones detectadas y telemetría histórica con tiempos de consulta inferiores a 20 ms.
|
|
23
26
|
* **Testing Avanzado Integrado:** Incorpora pruebas de resistencia a mutaciones (G23) e inyección de caos con validación de disyuntores de red (G24).
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://github.com/ingcrea/aum-ic)
|
|
5
|
-
[](https://www.npmjs.com/package/@ingcrea/aumic-puf)
|
|
6
6
|
|
|
7
7
|
> 🌐 **Navigation:** 🇺🇸 [Read in English](./README.md) | 🇲🇽 [Leer en Español](./README.es.md) | 📜 [Manifesto (EN)](./MANIFEST.md) | 📜 [Manifiesto (ES)](./MANIFEST.es.md) | 🌌 [AUM-IC 7 Standard](https://github.com/ingcrea/aum-ic)
|
|
8
8
|
|
|
@@ -16,8 +16,11 @@ The Universal Failure Prevention Protocol (PUF) is not a surface-level linter or
|
|
|
16
16
|
|
|
17
17
|
Operating agnostically via specialized language adapters for **Rust, TypeScript/JavaScript, Astro, Next.js, Python, PHP, Java/JVM, C#, C/C++, Flutter/Dart, and Shell**, it enforces compliance with international reliability (**ISO/IEC 25010**), information security (**ISO 27001**), and testability (**ISO 29119**) benchmarks.
|
|
18
18
|
|
|
19
|
-
### Key Engine Features in v3.
|
|
19
|
+
### Key Engine Features in v3.4.0
|
|
20
20
|
|
|
21
|
+
* **Deterministic Surgical Auto-Fix (`puf sanar` / `puf fix`):** Automated deterministic resolution for G0, G8, G17, G20, and G22 violations, creating immutable G3 checkpoints with SHA-256 hashes prior to mutating files.
|
|
22
|
+
* **Dual Watch Sentinel (`puf watch`):** Reactive filesystem listener reporting both in ANSI terminal and native non-intrusive OS toast notifications (G11 ergonomic compliance).
|
|
23
|
+
* **Native MCP Server (`puf serve` / `puf mcp`):** Built-in Model Context Protocol server over stdio (JSON-RPC) enabling seamless, zero-latency integration with AI agents (Antigravity, Claude, Cursor).
|
|
21
24
|
* **In-Memory VFS Snapshot (`LectorArbolProyecto`):** Structured volatile filesystem snapshot caching. Enables all 25 gates to evaluate project structure and code concurrently with zero disk I/O bottleneck.
|
|
22
25
|
* **Indexed Forensic Persistence (`RepositorioSqliteAudit`):** Native SQLite engine persistence (`.aumic/puf_audit.sqlite`) recording execution latency, identified infractions, and historical audit telemetry with sub-20ms query overhead.
|
|
23
26
|
* **Integrated Advanced Testing:** Incorporates Mutation Resilience Verification (G23) and Chaos Fault Injection with Circuit Breaker inspection (G24).
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* @file index.ts
|
|
4
|
-
* @description Punto de entrada CLI interactivo y
|
|
5
|
-
* Soporta selector de compuerta única (-g / --gate), generación de reporte HTML forense
|
|
6
|
-
*
|
|
4
|
+
* @description Punto de entrada CLI interactivo, centinela y servidor MCP para `puf` / `aumic-puf`.
|
|
5
|
+
* Soporta selector de compuerta única (-g / --gate), perfiles, generación de reporte HTML forense,
|
|
6
|
+
* modo de vigilancia reactiva (watch), auto-remediación (sanar/fix) y servidor MCP nativo.
|
|
7
7
|
* Estándar AUM-IC 7:2026.
|
|
8
8
|
*/
|
|
9
9
|
export {};
|
package/dist/cli/index.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
4
|
* @file index.ts
|
|
5
|
-
* @description Punto de entrada CLI interactivo y
|
|
6
|
-
* Soporta selector de compuerta única (-g / --gate), generación de reporte HTML forense
|
|
7
|
-
*
|
|
5
|
+
* @description Punto de entrada CLI interactivo, centinela y servidor MCP para `puf` / `aumic-puf`.
|
|
6
|
+
* Soporta selector de compuerta única (-g / --gate), perfiles, generación de reporte HTML forense,
|
|
7
|
+
* modo de vigilancia reactiva (watch), auto-remediación (sanar/fix) y servidor MCP nativo.
|
|
8
8
|
* Estándar AUM-IC 7:2026.
|
|
9
9
|
*/
|
|
10
10
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
@@ -47,27 +47,35 @@ const guardian_git_js_1 = require("../hooks/guardian-git.js");
|
|
|
47
47
|
const generador_reporte_html_js_1 = require("../core/generador-reporte-html.js");
|
|
48
48
|
const interfaz_js_1 = require("./interfaz.js");
|
|
49
49
|
const types_js_1 = require("../core/types.js");
|
|
50
|
+
const auto_sanador_js_1 = require("../core/auto-sanador.js");
|
|
51
|
+
const centinela_watch_js_1 = require("../core/centinela-watch.js");
|
|
52
|
+
const servidor_mcp_js_1 = require("../core/servidor-mcp.js");
|
|
50
53
|
async function main() {
|
|
51
54
|
const argumentos = process.argv.slice(2);
|
|
52
55
|
const comando = argumentos[0]?.toLowerCase();
|
|
53
56
|
const directorioActual = process.env['PUF_TARGET_DIR'] || process.cwd();
|
|
54
57
|
const orquestador = new orquestador_js_1.OrquestadorPUF15(directorioActual);
|
|
55
58
|
if (comando === '-v' || comando === '--version' || comando === 'version') {
|
|
56
|
-
console.log('v3.
|
|
59
|
+
console.log('v3.4.0');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Subcomando de Servidor MCP Nativo (stdio)
|
|
63
|
+
if (comando === 'serve' || comando === 'mcp' || argumentos.includes('--mcp')) {
|
|
64
|
+
servidor_mcp_js_1.ServidorMcpPuf.iniciar(directorioActual);
|
|
57
65
|
return;
|
|
58
66
|
}
|
|
59
67
|
switch (comando) {
|
|
60
68
|
case 'iniciar':
|
|
61
69
|
case 'init': {
|
|
62
70
|
const idIncidente = argumentos[1];
|
|
63
|
-
const descripcion = argumentos[2] || 'Resolucion metodica de fallo bajo PUF-
|
|
71
|
+
const descripcion = argumentos[2] || 'Resolucion metodica de fallo bajo PUF-25';
|
|
64
72
|
const archivos = argumentos.slice(3).filter((a) => typeof a === 'string');
|
|
65
73
|
if (!idIncidente) {
|
|
66
74
|
console.error('Uso: puf iniciar <ID-INCIDENTE> [DESCRIPCION] [ARCHIVOS...]');
|
|
67
75
|
process.exit(1);
|
|
68
76
|
}
|
|
69
77
|
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
70
|
-
console.log('[PUF-
|
|
78
|
+
console.log('[PUF-25]: Inicializando incidente ' + idIncidente + '...');
|
|
71
79
|
const res = await orquestador.inicializarIncidente({
|
|
72
80
|
idIncidente,
|
|
73
81
|
descripcionFallo: descripcion,
|
|
@@ -78,15 +86,48 @@ async function main() {
|
|
|
78
86
|
res.respaldosCreados.forEach((r) => console.log(' - ' + r));
|
|
79
87
|
break;
|
|
80
88
|
}
|
|
89
|
+
case 'sanar':
|
|
90
|
+
case 'fix': {
|
|
91
|
+
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
92
|
+
const compuertasArgs = argumentos.slice(1).map(c => c.toUpperCase().replace(/^--?G?/, 'G'));
|
|
93
|
+
console.log(`\x1b[36m⚡ [AUTO-SANADOR DETERMINISTA]:\x1b[0m Iniciando protocolo de reparación quirúrgica...`);
|
|
94
|
+
const sanaciones = await auto_sanador_js_1.AutoSanador.sanar(directorioActual, compuertasArgs.length > 0 ? compuertasArgs : undefined);
|
|
95
|
+
let totalReparaciones = 0;
|
|
96
|
+
sanaciones.forEach(s => {
|
|
97
|
+
totalReparaciones += s.reparacionesAplicadas;
|
|
98
|
+
const color = s.reparacionesAplicadas > 0 ? '\x1b[32m✔' : '\x1b[90m-';
|
|
99
|
+
console.log(`${color} [${s.compuerta}]:\x1b[0m ${s.detalle}`);
|
|
100
|
+
if (s.archivosModificados.length > 0) {
|
|
101
|
+
s.archivosModificados.forEach(a => console.log(` \x1b[33m↳ modificado:\x1b[0m ${a}`));
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
console.log(`\n\x1b[32m✔ Sanación completada:\x1b[0m ${totalReparaciones} anomalías corregidas con respaldos G3 atómicos.\n`);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'watch':
|
|
108
|
+
case 'centinela': {
|
|
109
|
+
let perfilWatch = 'dev';
|
|
110
|
+
let usarToast = true;
|
|
111
|
+
for (const arg of argumentos.slice(1)) {
|
|
112
|
+
if (arg.startsWith('--profile=')) {
|
|
113
|
+
const p = arg.split('=')[1]?.toLowerCase();
|
|
114
|
+
if (types_js_1.COMPUERTAS_POR_PERFIL[p])
|
|
115
|
+
perfilWatch = p;
|
|
116
|
+
}
|
|
117
|
+
else if (arg === '--no-toast') {
|
|
118
|
+
usarToast = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
centinela_watch_js_1.CentinelaWatch.iniciar(directorioActual, perfilWatch, usarToast);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
81
124
|
case 'auditar':
|
|
82
125
|
case 'verificar':
|
|
83
126
|
case 'audit':
|
|
84
127
|
case 'verify': {
|
|
85
128
|
const failFast = argumentos.includes('--fast') || argumentos.includes('--fail-fast');
|
|
86
129
|
const sinReporte = argumentos.includes('--no-html');
|
|
87
|
-
// Extracción de compuertas específicas con -g o --gate
|
|
88
130
|
const compuertasAFiltrar = [];
|
|
89
|
-
// Extraccion de perfil con --profile=<mvp|dev|security|enterprise>
|
|
90
131
|
let perfilSeleccionado = 'enterprise';
|
|
91
132
|
for (let i = 0; i < argumentos.length; i++) {
|
|
92
133
|
const arg = argumentos[i];
|
|
@@ -133,7 +174,6 @@ async function main() {
|
|
|
133
174
|
});
|
|
134
175
|
}
|
|
135
176
|
}
|
|
136
|
-
// Parsea ruta de reporte HTML si se especifica con --html o --reporte
|
|
137
177
|
let rutaReportePersonalizada;
|
|
138
178
|
for (let i = 0; i < argumentos.length; i++) {
|
|
139
179
|
const arg = argumentos[i];
|
|
@@ -147,7 +187,6 @@ async function main() {
|
|
|
147
187
|
rutaReportePersonalizada = arg.split('=')[1];
|
|
148
188
|
}
|
|
149
189
|
}
|
|
150
|
-
// Filtra banderas para obtener idIncidente y archivos
|
|
151
190
|
const argumentosLimpios = argumentos.filter((a, idx) => {
|
|
152
191
|
if (!a)
|
|
153
192
|
return false;
|
|
@@ -183,7 +222,6 @@ async function main() {
|
|
|
183
222
|
},
|
|
184
223
|
});
|
|
185
224
|
interfaz_js_1.InterfazConsola.renderizarResultado(resultado);
|
|
186
|
-
// Generación automática del reporte HTML forense salvo que se use --no-html
|
|
187
225
|
if (!sinReporte) {
|
|
188
226
|
try {
|
|
189
227
|
const rutaHtml = rutaReportePersonalizada || path.join(directorioActual, 'puf-report.html');
|
|
@@ -208,7 +246,7 @@ async function main() {
|
|
|
208
246
|
process.exit(1);
|
|
209
247
|
}
|
|
210
248
|
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
211
|
-
console.log('[PUF-
|
|
249
|
+
console.log('[PUF-25]: Solicitando reversion atomica G3...');
|
|
212
250
|
const resRollback = await orquestador.revertir(idIncidente, nombreArchivo);
|
|
213
251
|
if (!resRollback.exitoso) {
|
|
214
252
|
console.error('✗ ' + resRollback.mensaje);
|
|
@@ -220,7 +258,7 @@ async function main() {
|
|
|
220
258
|
case 'hook':
|
|
221
259
|
case 'instalar-hook': {
|
|
222
260
|
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
223
|
-
console.log('[PUF-
|
|
261
|
+
console.log('[PUF-25]: Instalando interceptor forense Git...');
|
|
224
262
|
const resHook = await guardian_git_js_1.GuardianGitHook.instalar(directorioActual);
|
|
225
263
|
if (!resHook.exitoso) {
|
|
226
264
|
console.error('✗ ' + resHook.mensaje);
|
|
@@ -232,7 +270,7 @@ async function main() {
|
|
|
232
270
|
case 'guard': {
|
|
233
271
|
const resGuard = await guardian_git_js_1.GuardianGitHook.verificarStaged(directorioActual);
|
|
234
272
|
if (!resGuard.exitoso) {
|
|
235
|
-
console.error('✗ [INTERCEPTOR PUF-
|
|
273
|
+
console.error('✗ [INTERCEPTOR PUF-25 DENEGO EL COMMIT AGPL-3.0]:');
|
|
236
274
|
resGuard.errores.forEach((e) => console.error(e));
|
|
237
275
|
process.exit(1);
|
|
238
276
|
}
|
|
@@ -242,18 +280,21 @@ async function main() {
|
|
|
242
280
|
default: {
|
|
243
281
|
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
244
282
|
console.log('Uso:\n' +
|
|
245
|
-
' puf
|
|
246
|
-
' puf
|
|
247
|
-
' puf
|
|
248
|
-
' puf
|
|
249
|
-
' puf
|
|
250
|
-
' puf -
|
|
283
|
+
' puf auditar [ID-INCIDENTE] [--profile=mvp] Evalua la suite (--profile=mvp|dev|security|enterprise)\n' +
|
|
284
|
+
' puf sanar [COMPUERTAS...] Ejecuta auto-remediacion quirurgica (alias: puf fix)\n' +
|
|
285
|
+
' puf watch [--profile=dev] [--no-toast] Modo centinela con notificacion dual consola + Toast SO\n' +
|
|
286
|
+
' puf serve Inicia el servidor MCP nativo (Model Context Protocol stdio)\n' +
|
|
287
|
+
' puf iniciar <ID-INCIDENTE> [DESCRIPCION] [ARCHIVOS...] Genera andamio test (G2) y checkpoints (G3)\n' +
|
|
288
|
+
' puf revertir <ID-INCIDENTE> <ARCHIVO> Restaura atomicamente el archivo previo al fallo\n' +
|
|
289
|
+
' puf instalar-hook Instala el guardian de Git en .git/hooks/pre-commit\n' +
|
|
290
|
+
' puf guard Valida que los cambios en staged no violen G4 o G7\n' +
|
|
291
|
+
' puf -v, --version Muestra la version actual instalada\n');
|
|
251
292
|
break;
|
|
252
293
|
}
|
|
253
294
|
}
|
|
254
295
|
}
|
|
255
296
|
main().catch((error) => {
|
|
256
|
-
console.error('[PUF
|
|
297
|
+
console.error('[PUF ERROR FATAL]: ' + error.message);
|
|
257
298
|
process.exit(1);
|
|
258
299
|
});
|
|
259
300
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file auto-sanador.ts
|
|
3
|
+
* @description Módulo de remediación quirúrgica determinista para PUF (puf sanar / puf fix).
|
|
4
|
+
* Estándar AUM-IC 7:2026.
|
|
5
|
+
*/
|
|
6
|
+
export interface ResultadoSanacion {
|
|
7
|
+
readonly compuerta: string;
|
|
8
|
+
readonly archivosModificados: string[];
|
|
9
|
+
readonly reparacionesAplicadas: number;
|
|
10
|
+
readonly detalle: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class AutoSanador {
|
|
13
|
+
/**
|
|
14
|
+
* Ejecuta la auto-remediación determinista sobre una compuerta o todas las sanables.
|
|
15
|
+
*/
|
|
16
|
+
static sanar(directorioRaiz: string, compuertasObjetivo?: readonly string[]): Promise<ResultadoSanacion[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Sanación de G0 y G8: Purgar BOM, normalizar a UTF-8 y forzar LF (\n).
|
|
19
|
+
*/
|
|
20
|
+
private static sanarG0G8;
|
|
21
|
+
/**
|
|
22
|
+
* Sanación de G17: Sustituir placeholders comunes (<year>, <owner>, etc.) en LICENSE
|
|
23
|
+
*/
|
|
24
|
+
private static sanarG17;
|
|
25
|
+
/**
|
|
26
|
+
* Sanación de G20: Reemplazar http://localhost o 127.0.0.1 por fallbacks de env.
|
|
27
|
+
*/
|
|
28
|
+
private static sanarG20;
|
|
29
|
+
/**
|
|
30
|
+
* Sanación de G22: Inyección de punto y coma faltante en CSS/SCSS.
|
|
31
|
+
*/
|
|
32
|
+
private static sanarG22;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=auto-sanador.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-sanador.d.ts","sourceRoot":"","sources":["../../src/core/auto-sanador.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IACtB;;OAEG;WACiB,KAAK,CACvB,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,GACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoC/B;;OAEG;mBACkB,SAAS;IAuD9B;;OAEG;mBACkB,QAAQ;IA0C7B;;OAEG;mBACkB,QAAQ;IAqC7B;;OAEG;mBACkB,QAAQ;CAkD9B"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file auto-sanador.ts
|
|
4
|
+
* @description Módulo de remediación quirúrgica determinista para PUF (puf sanar / puf fix).
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.AutoSanador = void 0;
|
|
42
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
43
|
+
const path = __importStar(require("node:path"));
|
|
44
|
+
const arbol_proyecto_js_1 = require("./arbol-proyecto.js");
|
|
45
|
+
const punto_control_js_1 = require("./punto-control.js");
|
|
46
|
+
class AutoSanador {
|
|
47
|
+
/**
|
|
48
|
+
* Ejecuta la auto-remediación determinista sobre una compuerta o todas las sanables.
|
|
49
|
+
*/
|
|
50
|
+
static async sanar(directorioRaiz, compuertasObjetivo) {
|
|
51
|
+
const resultados = [];
|
|
52
|
+
const compuertas = compuertasObjetivo && compuertasObjetivo.length > 0
|
|
53
|
+
? compuertasObjetivo.map(c => c.toUpperCase().trim())
|
|
54
|
+
: ['G0', 'G8', 'G17', 'G20', 'G22'];
|
|
55
|
+
const snapshot = await arbol_proyecto_js_1.LectorArbolProyecto.obtenerSnapshot(directorioRaiz);
|
|
56
|
+
const gestorCheckpoint = new punto_control_js_1.GestorPuntoControl(directorioRaiz);
|
|
57
|
+
// 1. Sanar G0 y G8 (Higiene Forense, Mojibake, BOM y saltos LF)
|
|
58
|
+
if (compuertas.includes('G0') || compuertas.includes('G8')) {
|
|
59
|
+
const resG0G8 = await this.sanarG0G8(directorioRaiz, snapshot, gestorCheckpoint);
|
|
60
|
+
resultados.push(resG0G8);
|
|
61
|
+
}
|
|
62
|
+
// 2. Sanar G17 (Placeholders en Archivos de Licencia)
|
|
63
|
+
if (compuertas.includes('G17')) {
|
|
64
|
+
const resG17 = await this.sanarG17(directorioRaiz, gestorCheckpoint);
|
|
65
|
+
if (resG17)
|
|
66
|
+
resultados.push(resG17);
|
|
67
|
+
}
|
|
68
|
+
// 3. Sanar G20 (Localhost a variables de entorno en producción)
|
|
69
|
+
if (compuertas.includes('G20')) {
|
|
70
|
+
const resG20 = await this.sanarG20(directorioRaiz, snapshot, gestorCheckpoint);
|
|
71
|
+
if (resG20)
|
|
72
|
+
resultados.push(resG20);
|
|
73
|
+
}
|
|
74
|
+
// 4. Sanar G22 (Puntos y comas faltantes en CSS/SCSS y PHP)
|
|
75
|
+
if (compuertas.includes('G22')) {
|
|
76
|
+
const resG22 = await this.sanarG22(directorioRaiz, snapshot, gestorCheckpoint);
|
|
77
|
+
if (resG22)
|
|
78
|
+
resultados.push(resG22);
|
|
79
|
+
}
|
|
80
|
+
return resultados;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Sanación de G0 y G8: Purgar BOM, normalizar a UTF-8 y forzar LF (\n).
|
|
84
|
+
*/
|
|
85
|
+
static async sanarG0G8(directorioRaiz, snapshot, gestorCheckpoint) {
|
|
86
|
+
const modificados = [];
|
|
87
|
+
let arreglos = 0;
|
|
88
|
+
const extensionesTexto = new Set([
|
|
89
|
+
'.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
|
|
90
|
+
'.json', '.css', '.scss', '.html', '.astro',
|
|
91
|
+
'.php', '.py', '.rs', '.java', '.cs', '.cpp',
|
|
92
|
+
'.md', '.yml', '.yaml', '.sh'
|
|
93
|
+
]);
|
|
94
|
+
for (const arch of snapshot) {
|
|
95
|
+
if (!extensionesTexto.has(arch.extension))
|
|
96
|
+
continue;
|
|
97
|
+
const r = arch.rutaRelativa;
|
|
98
|
+
if (r.includes('node_modules/') || r.includes('vendor/') || r.includes('.git/') || r.includes('dist/'))
|
|
99
|
+
continue;
|
|
100
|
+
try {
|
|
101
|
+
const buf = await fs.readFile(arch.rutaAbsoluta);
|
|
102
|
+
let texto = buf.toString('utf8');
|
|
103
|
+
let modificado = false;
|
|
104
|
+
// Purgar BOM (\uFEFF)
|
|
105
|
+
if (texto.charCodeAt(0) === 0xFEFF) {
|
|
106
|
+
texto = texto.slice(1);
|
|
107
|
+
modificado = true;
|
|
108
|
+
arreglos++;
|
|
109
|
+
}
|
|
110
|
+
// Normalizar CRLF (\r\n) a LF (\n)
|
|
111
|
+
if (texto.includes('\r\n')) {
|
|
112
|
+
texto = texto.replace(/\r\n/g, '\n');
|
|
113
|
+
modificado = true;
|
|
114
|
+
arreglos++;
|
|
115
|
+
}
|
|
116
|
+
if (modificado) {
|
|
117
|
+
await gestorCheckpoint.respaldarArchivo('AUTO_FIX_G0_G8', arch.rutaRelativa, directorioRaiz);
|
|
118
|
+
await fs.writeFile(arch.rutaAbsoluta, texto, 'utf8');
|
|
119
|
+
modificados.push(arch.rutaRelativa);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch { }
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
compuerta: 'G0/G8',
|
|
126
|
+
archivosModificados: modificados,
|
|
127
|
+
reparacionesAplicadas: arreglos,
|
|
128
|
+
detalle: `Normalizados ${modificados.length} archivos a UTF-8 puro sin BOM y saltos Unix LF.`
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Sanación de G17: Sustituir placeholders comunes (<year>, <owner>, etc.) en LICENSE
|
|
133
|
+
*/
|
|
134
|
+
static async sanarG17(directorioRaiz, gestorCheckpoint) {
|
|
135
|
+
const nombres = ['LICENSE', 'LICENSE.md', 'LICENSE.txt'];
|
|
136
|
+
for (const n of nombres) {
|
|
137
|
+
const ruta = path.join(directorioRaiz, n);
|
|
138
|
+
try {
|
|
139
|
+
let contenido = await fs.readFile(ruta, 'utf8');
|
|
140
|
+
const anio = new Date().getFullYear().toString();
|
|
141
|
+
let autor = 'Ingeniería Creativa';
|
|
142
|
+
try {
|
|
143
|
+
const pkg = JSON.parse(await fs.readFile(path.join(directorioRaiz, 'package.json'), 'utf8'));
|
|
144
|
+
if (pkg.author)
|
|
145
|
+
autor = typeof pkg.author === 'string' ? pkg.author.split('<')[0].trim() : pkg.author.name || autor;
|
|
146
|
+
}
|
|
147
|
+
catch { }
|
|
148
|
+
let modificado = false;
|
|
149
|
+
if (/<year>|\[year\]/i.test(contenido)) {
|
|
150
|
+
contenido = contenido.replace(/<year>|\[year\]/gi, anio);
|
|
151
|
+
modificado = true;
|
|
152
|
+
}
|
|
153
|
+
if (/<owner>|\[fullname\]|<name of author>/i.test(contenido)) {
|
|
154
|
+
contenido = contenido.replace(/<owner>|\[fullname\]|<name of author>/gi, autor);
|
|
155
|
+
modificado = true;
|
|
156
|
+
}
|
|
157
|
+
if (modificado) {
|
|
158
|
+
await gestorCheckpoint.respaldarArchivo('AUTO_FIX_G17', n, directorioRaiz);
|
|
159
|
+
await fs.writeFile(ruta, contenido, 'utf8');
|
|
160
|
+
return {
|
|
161
|
+
compuerta: 'G17',
|
|
162
|
+
archivosModificados: [n],
|
|
163
|
+
reparacionesAplicadas: 1,
|
|
164
|
+
detalle: `Actualizados placeholders de copyright en ${n} con el año ${anio} y titular "${autor}".`
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch { }
|
|
169
|
+
}
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Sanación de G20: Reemplazar http://localhost o 127.0.0.1 por fallbacks de env.
|
|
174
|
+
*/
|
|
175
|
+
static async sanarG20(directorioRaiz, snapshot, gestorCheckpoint) {
|
|
176
|
+
const extensiones = new Set(['.ts', '.js', '.astro', '.tsx', '.jsx', '.php']);
|
|
177
|
+
const modificados = [];
|
|
178
|
+
let arreglos = 0;
|
|
179
|
+
for (const arch of snapshot) {
|
|
180
|
+
if (!extensiones.has(arch.extension))
|
|
181
|
+
continue;
|
|
182
|
+
const r = arch.rutaRelativa;
|
|
183
|
+
if (r.includes('node_modules/') || r.includes('test') || r.includes('spec') || r.includes('evaluador') || r.includes('vite.config'))
|
|
184
|
+
continue;
|
|
185
|
+
try {
|
|
186
|
+
let texto = await fs.readFile(arch.rutaAbsoluta, 'utf8');
|
|
187
|
+
const regex = /["']https?:\/\/(localhost|127\.0\.0\.1):[0-9]+["']/g;
|
|
188
|
+
if (regex.test(texto)) {
|
|
189
|
+
await gestorCheckpoint.respaldarArchivo('AUTO_FIX_G20', arch.rutaRelativa, directorioRaiz);
|
|
190
|
+
texto = texto.replace(regex, '(process.env.API_URL || "https://api.ingcrea.com")');
|
|
191
|
+
await fs.writeFile(arch.rutaAbsoluta, texto, 'utf8');
|
|
192
|
+
modificados.push(arch.rutaRelativa);
|
|
193
|
+
arreglos++;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch { }
|
|
197
|
+
}
|
|
198
|
+
if (modificados.length === 0)
|
|
199
|
+
return null;
|
|
200
|
+
return {
|
|
201
|
+
compuerta: 'G20',
|
|
202
|
+
archivosModificados: modificados,
|
|
203
|
+
reparacionesAplicadas: arreglos,
|
|
204
|
+
detalle: `Parametrizadas ${arreglos} referencias hardcodeadas a localhost en ${modificados.length} archivos.`
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sanación de G22: Inyección de punto y coma faltante en CSS/SCSS.
|
|
209
|
+
*/
|
|
210
|
+
static async sanarG22(directorioRaiz, snapshot, gestorCheckpoint) {
|
|
211
|
+
const extensiones = new Set(['.css', '.scss']);
|
|
212
|
+
const modificados = [];
|
|
213
|
+
let arreglos = 0;
|
|
214
|
+
for (const arch of snapshot) {
|
|
215
|
+
if (!extensiones.has(arch.extension))
|
|
216
|
+
continue;
|
|
217
|
+
const r = arch.rutaRelativa;
|
|
218
|
+
if (r.includes('node_modules/') || r.includes('dist/'))
|
|
219
|
+
continue;
|
|
220
|
+
try {
|
|
221
|
+
const lineas = (await fs.readFile(arch.rutaAbsoluta, 'utf8')).split('\n');
|
|
222
|
+
let modificado = false;
|
|
223
|
+
for (let i = 0; i < lineas.length; i++) {
|
|
224
|
+
const l = lineas[i];
|
|
225
|
+
if (!l)
|
|
226
|
+
continue;
|
|
227
|
+
const limpia = l.trim();
|
|
228
|
+
// Patrón propiedad CSS: valor sin ';' y siguiente línea no es cierre '}'
|
|
229
|
+
if (/^[a-zA-Z\-]+:\s*[^;{}]+$/.test(limpia)) {
|
|
230
|
+
const sig = lineas[i + 1]?.trim();
|
|
231
|
+
if (sig && sig !== '}') {
|
|
232
|
+
lineas[i] = l + ';';
|
|
233
|
+
modificado = true;
|
|
234
|
+
arreglos++;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (modificado) {
|
|
239
|
+
await gestorCheckpoint.respaldarArchivo('AUTO_FIX_G22', arch.rutaRelativa, directorioRaiz);
|
|
240
|
+
await fs.writeFile(arch.rutaAbsoluta, lineas.join('\n'), 'utf8');
|
|
241
|
+
modificados.push(arch.rutaRelativa);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch { }
|
|
245
|
+
}
|
|
246
|
+
if (modificados.length === 0)
|
|
247
|
+
return null;
|
|
248
|
+
return {
|
|
249
|
+
compuerta: 'G22',
|
|
250
|
+
archivosModificados: modificados,
|
|
251
|
+
reparacionesAplicadas: arreglos,
|
|
252
|
+
detalle: `Inyectados ${arreglos} delimitadores de punto y coma en ${modificados.length} hojas de estilo.`
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.AutoSanador = AutoSanador;
|
|
257
|
+
//# sourceMappingURL=auto-sanador.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-sanador.js","sourceRoot":"","sources":["../../src/core/auto-sanador.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file centinela-watch.ts
|
|
3
|
+
* @description Vigilancia en caliente (Watch Mode) con notificación dual (Consola ANSI + Toast nativo del SO).
|
|
4
|
+
* Blindaje ergonómico G11 (Zero-Focus Stealing / Subprocesos sin ventana).
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
import { PerfilAuditoria } from './types.js';
|
|
8
|
+
export declare class CentinelaWatch {
|
|
9
|
+
private static temporizadorDebounce;
|
|
10
|
+
private static enEjecucion;
|
|
11
|
+
/**
|
|
12
|
+
* Dispara una notificación Toast en el sistema operativo sin robar foco (G11 compliance).
|
|
13
|
+
*/
|
|
14
|
+
static dispararToast(titulo: string, mensaje: string, exitoso: boolean): void;
|
|
15
|
+
/**
|
|
16
|
+
* Inicia el bucle de centinela observando el directorio raíz.
|
|
17
|
+
*/
|
|
18
|
+
static iniciar(directorioRaiz: string, perfil?: PerfilAuditoria, usarToast?: boolean): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=centinela-watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centinela-watch.d.ts","sourceRoot":"","sources":["../../src/core/centinela-watch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAyB,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA+B;IAClE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC;;OAEG;WACW,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAqCpF;;OAEG;WACW,OAAO,CACnB,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,eAAuB,EAC/B,SAAS,GAAE,OAAc,GACxB,IAAI;CA+ER"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file centinela-watch.ts
|
|
4
|
+
* @description Vigilancia en caliente (Watch Mode) con notificación dual (Consola ANSI + Toast nativo del SO).
|
|
5
|
+
* Blindaje ergonómico G11 (Zero-Focus Stealing / Subprocesos sin ventana).
|
|
6
|
+
* Estándar AUM-IC 7:2026.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.CentinelaWatch = void 0;
|
|
43
|
+
const fs = __importStar(require("node:fs"));
|
|
44
|
+
const node_child_process_1 = require("node:child_process");
|
|
45
|
+
const orquestador_js_1 = require("./orquestador.js");
|
|
46
|
+
const interfaz_js_1 = require("../cli/interfaz.js");
|
|
47
|
+
const types_js_1 = require("./types.js");
|
|
48
|
+
class CentinelaWatch {
|
|
49
|
+
static temporizadorDebounce = null;
|
|
50
|
+
static enEjecucion = false;
|
|
51
|
+
/**
|
|
52
|
+
* Dispara una notificación Toast en el sistema operativo sin robar foco (G11 compliance).
|
|
53
|
+
*/
|
|
54
|
+
static dispararToast(titulo, mensaje, exitoso) {
|
|
55
|
+
const esWindows = process.platform === 'win32';
|
|
56
|
+
const esLinux = process.platform === 'linux';
|
|
57
|
+
if (esWindows) {
|
|
58
|
+
// Notificación Toast en Windows vía PowerShell sin ventana (CREATE_NO_WINDOW: 0x08000000)
|
|
59
|
+
const psScript = `
|
|
60
|
+
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
|
|
61
|
+
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
|
|
62
|
+
$textNodes = $template.GetElementsByTagName("text")
|
|
63
|
+
$textNodes.Item(0).AppendChild($template.CreateTextNode("${titulo.replace(/"/g, '`"')}")) > $null
|
|
64
|
+
$textNodes.Item(1).AppendChild($template.CreateTextNode("${mensaje.replace(/"/g, '`"')}")) > $null
|
|
65
|
+
$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("AUM-IC PUF")
|
|
66
|
+
$notification = [Windows.UI.Notifications.ToastNotification]::new($template)
|
|
67
|
+
$notifier.Show($notification)
|
|
68
|
+
`.trim();
|
|
69
|
+
try {
|
|
70
|
+
const sub = (0, node_child_process_1.spawn)('powershell.exe', ['-NoProfile', '-NonInteractive', '-WindowStyle', 'Hidden', '-Command', psScript], {
|
|
71
|
+
windowsHide: true,
|
|
72
|
+
stdio: 'ignore',
|
|
73
|
+
detached: true
|
|
74
|
+
});
|
|
75
|
+
sub.unref();
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
}
|
|
79
|
+
else if (esLinux) {
|
|
80
|
+
try {
|
|
81
|
+
const urgencia = exitoso ? 'normal' : 'critical';
|
|
82
|
+
const sub = (0, node_child_process_1.spawn)('notify-send', ['-u', urgencia, '-a', 'AUM-IC PUF', titulo, mensaje], {
|
|
83
|
+
stdio: 'ignore',
|
|
84
|
+
detached: true
|
|
85
|
+
});
|
|
86
|
+
sub.unref();
|
|
87
|
+
}
|
|
88
|
+
catch { }
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Inicia el bucle de centinela observando el directorio raíz.
|
|
93
|
+
*/
|
|
94
|
+
static iniciar(directorioRaiz, perfil = 'dev', usarToast = true) {
|
|
95
|
+
interfaz_js_1.InterfazConsola.mostrarBanner();
|
|
96
|
+
console.log(`\x1b[36m⚡ [CENTINELA PUF EN VIVO]:\x1b[0m Vigilando cambios en ${directorioRaiz}`);
|
|
97
|
+
console.log(`\x1b[90m Perfil activo: ${perfil.toUpperCase()} | Notificaciones Toast: ${usarToast ? 'Activadas' : 'Desactivadas'}\x1b[0m\n`);
|
|
98
|
+
const orquestador = new orquestador_js_1.OrquestadorPUF15(directorioRaiz);
|
|
99
|
+
const compuertasAFiltrar = types_js_1.COMPUERTAS_POR_PERFIL[perfil];
|
|
100
|
+
const ejecutarCiclo = async (archivoCambiado) => {
|
|
101
|
+
if (this.enEjecucion)
|
|
102
|
+
return;
|
|
103
|
+
this.enEjecucion = true;
|
|
104
|
+
const tInicio = Date.now();
|
|
105
|
+
console.log(`\n\x1b[33m⚡ Cambio detectado: ${archivoCambiado || 'archivo'}\x1b[0m -> Auditando ${perfil}...`);
|
|
106
|
+
try {
|
|
107
|
+
const resultado = await orquestador.auditar('WATCH_' + Date.now().toString().slice(-4), archivoCambiado ? [archivoCambiado] : [], [], {
|
|
108
|
+
failFast: true,
|
|
109
|
+
compuertasAFiltrar,
|
|
110
|
+
onProgreso: (c) => {
|
|
111
|
+
const color = c.estado === 'aprobada' ? '\x1b[32m' : c.estado === 'rechazada' ? '\x1b[31m' : '\x1b[33m';
|
|
112
|
+
console.log(` ${color}[${c.estado.toUpperCase()}]\x1b[0m ${c.id}: ${c.nombre} (${c.tiempoEjecucionMs}ms)`);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const duracion = Date.now() - tInicio;
|
|
116
|
+
if (resultado.todasAprobadas) {
|
|
117
|
+
console.log(`\x1b[32m✔ [CERTIFICACIÓN LIMPIA]:\x1b[0m Todas las compuertas aprobadas (${duracion}ms)`);
|
|
118
|
+
if (usarToast) {
|
|
119
|
+
this.dispararToast('AUM-IC PUF — Verificación Exitosa', `Código conforme bajo perfil ${perfil} (${duracion}ms)`, true);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const fallida = resultado.compuertas.find(c => c.estado === 'rechazada');
|
|
124
|
+
const errorMsg = fallida ? `${fallida.id}: ${fallida.detalle}` : 'Violación de compuertas detectada';
|
|
125
|
+
console.log(`\x1b[31m✗ [FALLO DE AUDITORÍA]:\x1b[0m ${errorMsg}`);
|
|
126
|
+
if (usarToast) {
|
|
127
|
+
this.dispararToast('AUM-IC PUF — Fallo Detectado', errorMsg, false);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
console.error(`\x1b[31mError durante el ciclo watch:\x1b[0m ${err.message}`);
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
this.enEjecucion = false;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
// Vigilancia recursiva nativa con debounce
|
|
139
|
+
try {
|
|
140
|
+
fs.watch(directorioRaiz, { recursive: true }, (_eventType, filename) => {
|
|
141
|
+
if (!filename)
|
|
142
|
+
return;
|
|
143
|
+
const fn = filename.toString();
|
|
144
|
+
// Ignorar artefactos efímeros
|
|
145
|
+
if (fn.includes('node_modules') ||
|
|
146
|
+
fn.includes('.git') ||
|
|
147
|
+
fn.includes('dist') ||
|
|
148
|
+
fn.includes('checkpoints') ||
|
|
149
|
+
fn.includes('.aumic') ||
|
|
150
|
+
fn.includes('puf-report.html') ||
|
|
151
|
+
fn.endsWith('.log') ||
|
|
152
|
+
fn.endsWith('.sqlite')) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (this.temporizadorDebounce)
|
|
156
|
+
clearTimeout(this.temporizadorDebounce);
|
|
157
|
+
this.temporizadorDebounce = setTimeout(() => {
|
|
158
|
+
ejecutarCiclo(fn);
|
|
159
|
+
}, 150);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.error(`No se pudo iniciar fs.watch recursivo: ${e.message}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.CentinelaWatch = CentinelaWatch;
|
|
168
|
+
//# sourceMappingURL=centinela-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centinela-watch.js","sourceRoot":"","sources":["../../src/core/centinela-watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file servidor-mcp.ts
|
|
3
|
+
* @description Servidor MCP nativo (Model Context Protocol) por stdio para PUF.
|
|
4
|
+
* Permite que asistentes de IA (Antigravity, Claude, Cursor) invoquen auditorías y correcciones sin latencia.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ServidorMcpPuf {
|
|
8
|
+
static iniciar(directorioRaiz: string): void;
|
|
9
|
+
private static manejarMensaje;
|
|
10
|
+
private static responderExito;
|
|
11
|
+
private static responderError;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=servidor-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servidor-mcp.d.ts","sourceRoot":"","sources":["../../src/core/servidor-mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,qBAAa,cAAc;WACX,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;mBAyB9B,cAAc;IAuJnC,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,OAAO,CAAC,MAAM,CAAC,cAAc;CAQ9B"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file servidor-mcp.ts
|
|
4
|
+
* @description Servidor MCP nativo (Model Context Protocol) por stdio para PUF.
|
|
5
|
+
* Permite que asistentes de IA (Antigravity, Claude, Cursor) invoquen auditorías y correcciones sin latencia.
|
|
6
|
+
* Estándar AUM-IC 7:2026.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ServidorMcpPuf = void 0;
|
|
10
|
+
const orquestador_js_1 = require("./orquestador.js");
|
|
11
|
+
const auto_sanador_js_1 = require("./auto-sanador.js");
|
|
12
|
+
const types_js_1 = require("./types.js");
|
|
13
|
+
class ServidorMcpPuf {
|
|
14
|
+
static iniciar(directorioRaiz) {
|
|
15
|
+
const orquestador = new orquestador_js_1.OrquestadorPUF15(directorioRaiz);
|
|
16
|
+
process.stdin.setEncoding('utf8');
|
|
17
|
+
let bufferEntrada = '';
|
|
18
|
+
process.stdin.on('data', async (chunk) => {
|
|
19
|
+
bufferEntrada += chunk.toString();
|
|
20
|
+
const lineas = bufferEntrada.split('\n');
|
|
21
|
+
bufferEntrada = lineas.pop() || '';
|
|
22
|
+
for (const linea of lineas) {
|
|
23
|
+
const limpia = linea.trim();
|
|
24
|
+
if (!limpia)
|
|
25
|
+
continue;
|
|
26
|
+
try {
|
|
27
|
+
const mensaje = JSON.parse(limpia);
|
|
28
|
+
await this.manejarMensaje(mensaje, orquestador, directorioRaiz);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
this.responderError(null, -32700, 'Parse error: ' + e.message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
static async manejarMensaje(req, orquestador, directorioRaiz) {
|
|
37
|
+
const { id, method, params } = req;
|
|
38
|
+
switch (method) {
|
|
39
|
+
case 'initialize': {
|
|
40
|
+
this.responderExito(id, {
|
|
41
|
+
protocolVersion: '2024-11-05',
|
|
42
|
+
capabilities: {
|
|
43
|
+
tools: {}
|
|
44
|
+
},
|
|
45
|
+
serverInfo: {
|
|
46
|
+
name: 'aumic-puf-mcp',
|
|
47
|
+
version: '3.4.0'
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'tools/list': {
|
|
53
|
+
this.responderExito(id, {
|
|
54
|
+
tools: [
|
|
55
|
+
{
|
|
56
|
+
name: 'puf_auditar',
|
|
57
|
+
description: 'Ejecuta la auditoría del Protocolo Universal contra Fallos (PUF-25) sobre el repositorio.',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
perfil: {
|
|
62
|
+
type: 'string',
|
|
63
|
+
enum: ['enterprise', 'mvp', 'dev', 'security'],
|
|
64
|
+
description: 'Perfil de auditoría dinámico.'
|
|
65
|
+
},
|
|
66
|
+
compuertas: {
|
|
67
|
+
type: 'array',
|
|
68
|
+
items: { type: 'string' },
|
|
69
|
+
description: 'Lista específica de compuertas (ej. ["G0", "G4", "G22"]).'
|
|
70
|
+
},
|
|
71
|
+
failFast: {
|
|
72
|
+
type: 'boolean',
|
|
73
|
+
description: 'Si aborta al primer fallo detectado.'
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'puf_sanar',
|
|
80
|
+
description: 'Ejecuta la auto-remediación determinista (puf fix/sanar) para resolver violaciones de G0, G8, G17, G20 y G22.',
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: 'object',
|
|
83
|
+
properties: {
|
|
84
|
+
compuertas: {
|
|
85
|
+
type: 'array',
|
|
86
|
+
items: { type: 'string' },
|
|
87
|
+
description: 'Compuertas a sanar (omite para sanar todas las disponibles).'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'puf_listar_compuertas',
|
|
94
|
+
description: 'Devuelve el listado completo de las 25 compuertas de calidad de PUF-25 y los perfiles disponibles.',
|
|
95
|
+
inputSchema: { type: 'object', properties: {} }
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
});
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case 'tools/call': {
|
|
102
|
+
const nombreHerramienta = params?.name;
|
|
103
|
+
const args = params?.arguments || {};
|
|
104
|
+
if (nombreHerramienta === 'puf_listar_compuertas') {
|
|
105
|
+
this.responderExito(id, {
|
|
106
|
+
content: [
|
|
107
|
+
{
|
|
108
|
+
type: 'text',
|
|
109
|
+
text: JSON.stringify({
|
|
110
|
+
total: types_js_1.COMPUERTAS_REGISTRADAS.length,
|
|
111
|
+
compuertas: types_js_1.COMPUERTAS_REGISTRADAS,
|
|
112
|
+
perfiles: types_js_1.COMPUERTAS_POR_PERFIL
|
|
113
|
+
}, null, 2)
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (nombreHerramienta === 'puf_sanar') {
|
|
120
|
+
const compuertas = args.compuertas;
|
|
121
|
+
const resultadoSanacion = await auto_sanador_js_1.AutoSanador.sanar(directorioRaiz, compuertas);
|
|
122
|
+
this.responderExito(id, {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: 'text',
|
|
126
|
+
text: JSON.stringify(resultadoSanacion, null, 2)
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
});
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (nombreHerramienta === 'puf_auditar') {
|
|
133
|
+
const perfil = (args.perfil || 'dev');
|
|
134
|
+
const failFast = Boolean(args.failFast);
|
|
135
|
+
const compuertasAFiltrar = args.compuertas && args.compuertas.length > 0
|
|
136
|
+
? args.compuertas
|
|
137
|
+
: types_js_1.COMPUERTAS_POR_PERFIL[perfil];
|
|
138
|
+
const res = await orquestador.auditar('MCP_AUDIT', [], [], {
|
|
139
|
+
failFast,
|
|
140
|
+
compuertasAFiltrar
|
|
141
|
+
});
|
|
142
|
+
this.responderExito(id, {
|
|
143
|
+
content: [
|
|
144
|
+
{
|
|
145
|
+
type: 'text',
|
|
146
|
+
text: JSON.stringify({
|
|
147
|
+
idIncidente: res.idIncidente,
|
|
148
|
+
todasAprobadas: res.todasAprobadas,
|
|
149
|
+
lenguajeDetectado: res.lenguajeDetectado,
|
|
150
|
+
compuertas: res.compuertas.map(c => ({
|
|
151
|
+
id: c.id,
|
|
152
|
+
nombre: c.nombre,
|
|
153
|
+
estado: c.estado,
|
|
154
|
+
detalle: c.detalle,
|
|
155
|
+
tiempoMs: c.tiempoEjecucionMs
|
|
156
|
+
}))
|
|
157
|
+
}, null, 2)
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.responderError(id, -32601, `Herramienta desconocida: ${nombreHerramienta}`);
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
default: {
|
|
167
|
+
this.responderError(id, -32601, `Método no soportado: ${method}`);
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
static responderExito(id, result) {
|
|
173
|
+
if (id === undefined)
|
|
174
|
+
return;
|
|
175
|
+
const respuesta = {
|
|
176
|
+
jsonrpc: '2.0',
|
|
177
|
+
id,
|
|
178
|
+
result
|
|
179
|
+
};
|
|
180
|
+
process.stdout.write(JSON.stringify(respuesta) + '\n');
|
|
181
|
+
}
|
|
182
|
+
static responderError(id, code, message) {
|
|
183
|
+
const respuesta = {
|
|
184
|
+
jsonrpc: '2.0',
|
|
185
|
+
id: id ?? null,
|
|
186
|
+
error: { code, message }
|
|
187
|
+
};
|
|
188
|
+
process.stdout.write(JSON.stringify(respuesta) + '\n');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.ServidorMcpPuf = ServidorMcpPuf;
|
|
192
|
+
//# sourceMappingURL=servidor-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servidor-mcp.js","sourceRoot":"","sources":["../../src/core/servidor-mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED