@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 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) <year> <name of author>
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
  [![Licencia AGPL-3.0](https://img.shields.io/badge/licencia-AGPL--3.0-blue.svg)](LICENSE)
4
4
  [![Estándar AUM-IC 7:2026](https://img.shields.io/badge/est%C3%A1ndar-AUM--IC%207%3A2026-gold.svg)](https://github.com/ingcrea/aum-ic)
5
- [![npm version](https://img.shields.io/badge/npm-v3.3.0-cb3837.svg)](https://www.npmjs.com/package/@ingcrea/aumic-puf)
5
+ [![npm version](https://img.shields.io/badge/npm-v3.4.0-cb3837.svg)](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.3.0
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
  [![AGPL-3.0 License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
4
4
  [![AUM-IC 7:2026 Standard](https://img.shields.io/badge/standard-AUM--IC%207%3A2026-gold.svg)](https://github.com/ingcrea/aum-ic)
5
- [![npm version](https://img.shields.io/badge/npm-v3.3.0-cb3837.svg)](https://www.npmjs.com/package/@ingcrea/aumic-puf)
5
+ [![npm version](https://img.shields.io/badge/npm-v3.4.0-cb3837.svg)](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.3.0
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).
@@ -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 concurrente para `puf` / `aumic-puf`.
5
- * Soporta selector de compuerta única (-g / --gate), generación de reporte HTML forense
6
- * e integración diagnóstica con aumic-sanitizer (G0).
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 concurrente para `puf` / `aumic-puf`.
6
- * Soporta selector de compuerta única (-g / --gate), generación de reporte HTML forense
7
- * e integración diagnóstica con aumic-sanitizer (G0).
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.3.0');
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-15';
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-15]: Inicializando incidente ' + idIncidente + '...');
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-15]: Solicitando reversion atomica G3...');
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-15]: Instalando interceptor forense Git...');
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-15 DENEGO EL COMMIT AGPL-3.0]:');
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 iniciar <ID-INCIDENTE> [DESCRIPCION] [ARCHIVOS...] Genera andamio test (G2) y checkpoints (G3)\n' +
246
- ' puf auditar [ID-INCIDENTE] [ARCHIVOS...] [--profile=mvp] Evalua la suite (--profile=mvp|dev|security|enterprise)\n' +
247
- ' puf revertir <ID-INCIDENTE> <ARCHIVO> Restaura atomicamente el archivo previo al fallo\n' +
248
- ' puf instalar-hook Instala el guardian de Git en .git/hooks/pre-commit\n' +
249
- ' puf guard Valida que los cambios en staged no violen G4 o G7\n' +
250
- ' puf -v, --version Muestra la version actual instalada\n');
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-15 ERROR FATAL]: ' + error.message);
297
+ console.error('[PUF ERROR FATAL]: ' + error.message);
257
298
  process.exit(1);
258
299
  });
259
300
  //# sourceMappingURL=index.js.map
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingcrea/aumic-puf",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "Orquestador Determinista del Protocolo Universal contra Fallos (PUF) — Estándar AUM-IC 7:2026",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",