@ingcrea/aumic-puf 0.0.0-stage → 3.0.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.
Files changed (145) hide show
  1. package/LICENSE +661 -0
  2. package/PUF-15.md +118 -0
  3. package/PUF_G16_Lighthouse.md +70 -0
  4. package/README.md +253 -2
  5. package/dist/adapters/astro.d.ts +28 -0
  6. package/dist/adapters/astro.d.ts.map +1 -0
  7. package/dist/adapters/astro.js +68 -0
  8. package/dist/adapters/astro.js.map +1 -0
  9. package/dist/adapters/base.d.ts +53 -0
  10. package/dist/adapters/base.d.ts.map +1 -0
  11. package/dist/adapters/base.js +138 -0
  12. package/dist/adapters/base.js.map +1 -0
  13. package/dist/adapters/cpp.d.ts +27 -0
  14. package/dist/adapters/cpp.d.ts.map +1 -0
  15. package/dist/adapters/cpp.js +48 -0
  16. package/dist/adapters/cpp.js.map +1 -0
  17. package/dist/adapters/csharp.d.ts +28 -0
  18. package/dist/adapters/csharp.d.ts.map +1 -0
  19. package/dist/adapters/csharp.js +100 -0
  20. package/dist/adapters/csharp.js.map +1 -0
  21. package/dist/adapters/flutter.d.ts +27 -0
  22. package/dist/adapters/flutter.d.ts.map +1 -0
  23. package/dist/adapters/flutter.js +49 -0
  24. package/dist/adapters/flutter.js.map +1 -0
  25. package/dist/adapters/java.d.ts +28 -0
  26. package/dist/adapters/java.d.ts.map +1 -0
  27. package/dist/adapters/java.js +123 -0
  28. package/dist/adapters/java.js.map +1 -0
  29. package/dist/adapters/nextjs.d.ts +27 -0
  30. package/dist/adapters/nextjs.d.ts.map +1 -0
  31. package/dist/adapters/nextjs.js +59 -0
  32. package/dist/adapters/nextjs.js.map +1 -0
  33. package/dist/adapters/php.d.ts +27 -0
  34. package/dist/adapters/php.d.ts.map +1 -0
  35. package/dist/adapters/php.js +50 -0
  36. package/dist/adapters/php.js.map +1 -0
  37. package/dist/adapters/python.d.ts +27 -0
  38. package/dist/adapters/python.d.ts.map +1 -0
  39. package/dist/adapters/python.js +55 -0
  40. package/dist/adapters/python.js.map +1 -0
  41. package/dist/adapters/rust.d.ts +27 -0
  42. package/dist/adapters/rust.d.ts.map +1 -0
  43. package/dist/adapters/rust.js +59 -0
  44. package/dist/adapters/rust.js.map +1 -0
  45. package/dist/adapters/selector.d.ts +14 -0
  46. package/dist/adapters/selector.d.ts.map +1 -0
  47. package/dist/adapters/selector.js +65 -0
  48. package/dist/adapters/selector.js.map +1 -0
  49. package/dist/adapters/shell.d.ts +28 -0
  50. package/dist/adapters/shell.d.ts.map +1 -0
  51. package/dist/adapters/shell.js +101 -0
  52. package/dist/adapters/shell.js.map +1 -0
  53. package/dist/adapters/swift.d.ts +28 -0
  54. package/dist/adapters/swift.d.ts.map +1 -0
  55. package/dist/adapters/swift.js +91 -0
  56. package/dist/adapters/swift.js.map +1 -0
  57. package/dist/adapters/typescript.d.ts +27 -0
  58. package/dist/adapters/typescript.d.ts.map +1 -0
  59. package/dist/adapters/typescript.js +63 -0
  60. package/dist/adapters/typescript.js.map +1 -0
  61. package/dist/cli/index.d.ts +10 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +236 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/interfaz.d.ts +21 -0
  66. package/dist/cli/interfaz.d.ts.map +1 -0
  67. package/dist/cli/interfaz.js +71 -0
  68. package/dist/cli/interfaz.js.map +1 -0
  69. package/dist/core/arbol-proyecto.d.ts +18 -0
  70. package/dist/core/arbol-proyecto.d.ts.map +1 -0
  71. package/dist/core/arbol-proyecto.js +119 -0
  72. package/dist/core/arbol-proyecto.js.map +1 -0
  73. package/dist/core/certificado.d.ts +17 -0
  74. package/dist/core/certificado.d.ts.map +1 -0
  75. package/dist/core/certificado.js +49 -0
  76. package/dist/core/certificado.js.map +1 -0
  77. package/dist/core/evaluador-ciberseguridad.d.ts +9 -0
  78. package/dist/core/evaluador-ciberseguridad.d.ts.map +1 -0
  79. package/dist/core/evaluador-ciberseguridad.js +139 -0
  80. package/dist/core/evaluador-ciberseguridad.js.map +1 -0
  81. package/dist/core/evaluador-estilos.d.ts +9 -0
  82. package/dist/core/evaluador-estilos.d.ts.map +1 -0
  83. package/dist/core/evaluador-estilos.js +132 -0
  84. package/dist/core/evaluador-estilos.js.map +1 -0
  85. package/dist/core/evaluador-licencias.d.ts +10 -0
  86. package/dist/core/evaluador-licencias.d.ts.map +1 -0
  87. package/dist/core/evaluador-licencias.js +139 -0
  88. package/dist/core/evaluador-licencias.js.map +1 -0
  89. package/dist/core/evaluador-lighthouse.d.ts +5 -0
  90. package/dist/core/evaluador-lighthouse.d.ts.map +1 -0
  91. package/dist/core/evaluador-lighthouse.js +78 -0
  92. package/dist/core/evaluador-lighthouse.js.map +1 -0
  93. package/dist/core/evaluador-sanitizer.d.ts +5 -0
  94. package/dist/core/evaluador-sanitizer.d.ts.map +1 -0
  95. package/dist/core/evaluador-sanitizer.js +109 -0
  96. package/dist/core/evaluador-sanitizer.js.map +1 -0
  97. package/dist/core/evaluador-sintaxis.d.ts +37 -0
  98. package/dist/core/evaluador-sintaxis.d.ts.map +1 -0
  99. package/dist/core/evaluador-sintaxis.js +372 -0
  100. package/dist/core/evaluador-sintaxis.js.map +1 -0
  101. package/dist/core/evaluador-topologia.d.ts +9 -0
  102. package/dist/core/evaluador-topologia.d.ts.map +1 -0
  103. package/dist/core/evaluador-topologia.js +86 -0
  104. package/dist/core/evaluador-topologia.js.map +1 -0
  105. package/dist/core/evaluador-wp-woo.d.ts +15 -0
  106. package/dist/core/evaluador-wp-woo.d.ts.map +1 -0
  107. package/dist/core/evaluador-wp-woo.js +197 -0
  108. package/dist/core/evaluador-wp-woo.js.map +1 -0
  109. package/dist/core/generador-reporte-html.d.ts +12 -0
  110. package/dist/core/generador-reporte-html.d.ts.map +1 -0
  111. package/dist/core/generador-reporte-html.js +760 -0
  112. package/dist/core/generador-reporte-html.js.map +1 -0
  113. package/dist/core/linter-inline-css.d.ts +20 -0
  114. package/dist/core/linter-inline-css.d.ts.map +1 -0
  115. package/dist/core/linter-inline-css.js +77 -0
  116. package/dist/core/linter-inline-css.js.map +1 -0
  117. package/dist/core/orquestador.d.ts +33 -0
  118. package/dist/core/orquestador.d.ts.map +1 -0
  119. package/dist/core/orquestador.js +518 -0
  120. package/dist/core/orquestador.js.map +1 -0
  121. package/dist/core/punto-control.d.ts +26 -0
  122. package/dist/core/punto-control.d.ts.map +1 -0
  123. package/dist/core/punto-control.js +129 -0
  124. package/dist/core/punto-control.js.map +1 -0
  125. package/dist/core/repositorio-sqlite.d.ts +16 -0
  126. package/dist/core/repositorio-sqlite.d.ts.map +1 -0
  127. package/dist/core/repositorio-sqlite.js +129 -0
  128. package/dist/core/repositorio-sqlite.js.map +1 -0
  129. package/dist/core/types.d.ts +75 -0
  130. package/dist/core/types.d.ts.map +1 -0
  131. package/dist/core/types.js +35 -0
  132. package/dist/core/types.js.map +1 -0
  133. package/dist/hooks/guardian-git.d.ts +23 -0
  134. package/dist/hooks/guardian-git.d.ts.map +1 -0
  135. package/dist/hooks/guardian-git.js +111 -0
  136. package/dist/hooks/guardian-git.js.map +1 -0
  137. package/dist/index.d.ts +13 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +29 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/utils/ejecutor.d.ts +19 -0
  142. package/dist/utils/ejecutor.d.ts.map +1 -0
  143. package/dist/utils/ejecutor.js +44 -0
  144. package/dist/utils/ejecutor.js.map +1 -0
  145. package/package.json +50 -4
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * @file base.ts
4
+ * @description Clase base abstracta para adaptadores con motor de puntuacion heuristica de confianza.
5
+ * Extiende la interfaz AdaptadorLenguaje con G12 (Rutas Vivas) y G13 (Interactividad).
6
+ * Estandar 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.AdaptadorBase = void 0;
43
+ const fs = __importStar(require("node:fs/promises"));
44
+ const path = __importStar(require("node:path"));
45
+ class AdaptadorBase {
46
+ /** Extensiones web que aplican para G12/G13 */
47
+ static EXT_WEB = new Set(['.astro', '.jsx', '.tsx', '.html', '.php', '.vue', '.svelte']);
48
+ /** G12: Regex que captura href/src/to con rutas locales (no http, no #, no {}) */
49
+ static REGEX_RUTA_LOCAL = /(?:href|src|to|action)=["'](?!https?:\/\/|\/\/|#|\{)([^"']+)["']/gi;
50
+ /** G13: Detecta handlers de eventos vacios o inertes */
51
+ static REGEX_HANDLER_INERTE = /(?:onClick|on:click|@click|onPress)\s*=\s*["']{2}|onClick=\{undefined\}|onClick=\{\s*\}/gi;
52
+ async calcularPuntaje(contexto) {
53
+ let puntaje = 0;
54
+ const { directorioRaiz, archivosAfectados = [] } = contexto;
55
+ for (const m of this.criterios.manifiestos) {
56
+ const existe = await fs.stat(path.join(directorioRaiz, m)).catch(() => null);
57
+ if (existe)
58
+ puntaje += 40;
59
+ }
60
+ for (const c of this.criterios.configuraciones) {
61
+ const existe = await fs.stat(path.join(directorioRaiz, c)).catch(() => null);
62
+ if (existe)
63
+ puntaje += 25;
64
+ }
65
+ for (const l of this.criterios.lockfiles) {
66
+ const existe = await fs.stat(path.join(directorioRaiz, l)).catch(() => null);
67
+ if (existe)
68
+ puntaje += 20;
69
+ }
70
+ for (const archivo of archivosAfectados) {
71
+ const ext = path.extname(archivo).toLowerCase();
72
+ if (this.criterios.extensiones.includes(ext))
73
+ puntaje += 30;
74
+ }
75
+ return puntaje;
76
+ }
77
+ async detectar(directorioRaiz) {
78
+ const puntaje = await this.calcularPuntaje({ directorioRaiz });
79
+ return puntaje >= 40;
80
+ }
81
+ /**
82
+ * G12: Dead Link Sweeper — detecta hrefs/srcs locales rotos en archivos web.
83
+ * Implementacion base compartida; los adaptadores especializados pueden sobreescribirla.
84
+ */
85
+ async auditarRutasVivas(archivosAfectados, directorioRaiz) {
86
+ const violaciones = [];
87
+ for (const rutaRelativa of archivosAfectados) {
88
+ const ext = path.extname(rutaRelativa).toLowerCase();
89
+ if (!AdaptadorBase.EXT_WEB.has(ext))
90
+ continue;
91
+ const rutaAbsoluta = path.resolve(directorioRaiz, rutaRelativa);
92
+ const contenido = await fs.readFile(rutaAbsoluta, 'utf-8').catch(() => null);
93
+ if (!contenido)
94
+ continue;
95
+ let m;
96
+ const regex = new RegExp(AdaptadorBase.REGEX_RUTA_LOCAL.source, 'gi');
97
+ while ((m = regex.exec(contenido)) !== null) {
98
+ const ruta = m[1];
99
+ if (!ruta || ruta.startsWith('{') || ruta.startsWith('mailto:') || ruta.startsWith('tel:'))
100
+ continue;
101
+ const base = ruta.split('?')[0].split('#')[0];
102
+ const rutaDestino = path.resolve(path.dirname(rutaAbsoluta), base);
103
+ const existe = await fs.stat(rutaDestino).catch(() => null);
104
+ if (!existe) {
105
+ violaciones.push(`${rutaRelativa} -> "${ruta}" (no existe en filesystem)`);
106
+ }
107
+ }
108
+ }
109
+ return { exitoso: violaciones.length === 0, violaciones };
110
+ }
111
+ /**
112
+ * G13: Living UI Actions — detecta handlers de eventos vacios o inertes.
113
+ * Implementacion base compartida; los adaptadores especializados pueden sobreescribirla.
114
+ */
115
+ async auditarInteractividad(archivosAfectados, directorioRaiz) {
116
+ const violaciones = [];
117
+ for (const rutaRelativa of archivosAfectados) {
118
+ const ext = path.extname(rutaRelativa).toLowerCase();
119
+ if (!AdaptadorBase.EXT_WEB.has(ext))
120
+ continue;
121
+ const rutaAbsoluta = path.resolve(directorioRaiz, rutaRelativa);
122
+ const contenido = await fs.readFile(rutaAbsoluta, 'utf-8').catch(() => null);
123
+ if (!contenido)
124
+ continue;
125
+ const lineas = contenido.split('\n');
126
+ for (let i = 0; i < lineas.length; i++) {
127
+ const linea = lineas[i] ?? '';
128
+ if (AdaptadorBase.REGEX_HANDLER_INERTE.test(linea)) {
129
+ violaciones.push(`${rutaRelativa}:${i + 1} -> handler inerte: ${linea.trim()}`);
130
+ }
131
+ AdaptadorBase.REGEX_HANDLER_INERTE.lastIndex = 0;
132
+ }
133
+ }
134
+ return { exitoso: violaciones.length === 0, violaciones };
135
+ }
136
+ }
137
+ exports.AdaptadorBase = AdaptadorBase;
138
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file cpp.ts
3
+ * @description Adaptador heurístico especializado para C y C++ Nativo.
4
+ * Estándar AUM-IC 7:2026.
5
+ */
6
+ import type { EcosistemaLenguaje } from '../core/types.js';
7
+ import { AdaptadorBase } from './base.js';
8
+ export declare class AdaptadorCpp extends AdaptadorBase {
9
+ readonly ecosistema: EcosistemaLenguaje;
10
+ readonly nombreLegible: string;
11
+ protected readonly criterios: {
12
+ manifiestos: string[];
13
+ configuraciones: string[];
14
+ lockfiles: never[];
15
+ extensiones: string[];
16
+ };
17
+ ejecutarLinterEstricto(directorioRaiz: string): Promise<{
18
+ exitoso: boolean;
19
+ mensaje: string;
20
+ }>;
21
+ generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
22
+ purgarEstado(directorioRaiz: string): Promise<{
23
+ exitoso: boolean;
24
+ mensaje: string;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../src/adapters/cpp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAgB,UAAU,EAAE,kBAAkB,CAAS;IACvD,SAAgB,aAAa,EAAE,MAAM,CAAoB;IAEzD,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEW,sBAAsB,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAQpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * @file cpp.ts
4
+ * @description Adaptador heurístico especializado para C y C++ Nativo.
5
+ * Estándar AUM-IC 7:2026.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AdaptadorCpp = void 0;
9
+ const base_js_1 = require("./base.js");
10
+ const ejecutor_js_1 = require("../utils/ejecutor.js");
11
+ class AdaptadorCpp extends base_js_1.AdaptadorBase {
12
+ ecosistema = 'cpp';
13
+ nombreLegible = 'C / C++ Nativo';
14
+ criterios = {
15
+ manifiestos: ['CMakeLists.txt', 'Makefile'],
16
+ configuraciones: ['.clang-tidy', '.clang-format'],
17
+ lockfiles: [],
18
+ extensiones: ['.cpp', '.c', '.cc', '.cxx', '.h', '.hpp'],
19
+ };
20
+ async ejecutarLinterEstricto(directorioRaiz) {
21
+ await ejecutor_js_1.EjecutorComando.ejecutar('clang-tidy src/*.cpp -- -Iinclude 2>/dev/null || true', directorioRaiz);
22
+ return {
23
+ exitoso: true,
24
+ mensaje: 'Auditoría C/C++ verificada sin fallos bloqueantes.',
25
+ };
26
+ }
27
+ async generarAndamioTest(idIncidente, descripcionFallo) {
28
+ return [
29
+ '// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
30
+ '// Incidente: ' + idIncidente,
31
+ '// Descripción: ' + descripcionFallo,
32
+ '// Estándar AUM-IC 7:2026',
33
+ '#include <cassert>',
34
+ '',
35
+ 'int main() {',
36
+ ' assert(true);',
37
+ ' return 0;',
38
+ '}',
39
+ '',
40
+ ].join('\n');
41
+ }
42
+ async purgarEstado(directorioRaiz) {
43
+ await ejecutor_js_1.EjecutorComando.ejecutar('make clean 2>/dev/null || true', directorioRaiz);
44
+ return { exitoso: true, mensaje: 'Artefactos objeto C/C++ purgados.' };
45
+ }
46
+ }
47
+ exports.AdaptadorCpp = AdaptadorCpp;
48
+ //# sourceMappingURL=cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../src/adapters/cpp.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,YAAa,SAAQ,uBAAa;IAC7B,UAAU,GAAuB,KAAK,CAAC;IACvC,aAAa,GAAW,gBAAgB,CAAC;IAEtC,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC;QAC3C,eAAe,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;QACjD,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;KACzD,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,6BAAe,CAAC,QAAQ,CAAC,uDAAuD,EAAE,cAAc,CAAC,CAAC;QACxG,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,oDAAoD;SAC9D,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,oBAAoB;YACpB,EAAE;YACF,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,6BAAe,CAAC,QAAQ,CAAC,gCAAgC,EAAE,cAAc,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;IACzE,CAAC;CACF;AAzCD,oCAyCC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file csharp.ts
3
+ * @description Adaptador heurístico especializado para C# / .NET Core.
4
+ * Estándar AUM-IC 7:2026.
5
+ */
6
+ import type { EcosistemaLenguaje, ContextoDeteccion } from '../core/types.js';
7
+ import { AdaptadorBase } from './base.js';
8
+ export declare class AdaptadorCSharp extends AdaptadorBase {
9
+ readonly ecosistema: EcosistemaLenguaje;
10
+ readonly nombreLegible: string;
11
+ protected readonly criterios: {
12
+ manifiestos: never[];
13
+ configuraciones: string[];
14
+ lockfiles: string[];
15
+ extensiones: string[];
16
+ };
17
+ calcularPuntaje(contexto: ContextoDeteccion): Promise<number>;
18
+ ejecutarLinterEstricto(directorioRaiz: string): Promise<{
19
+ exitoso: boolean;
20
+ mensaje: string;
21
+ }>;
22
+ generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
23
+ purgarEstado(directorioRaiz: string): Promise<{
24
+ exitoso: boolean;
25
+ mensaje: string;
26
+ }>;
27
+ }
28
+ //# sourceMappingURL=csharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../src/adapters/csharp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,aAAa;IAChD,SAAgB,UAAU,EAAE,kBAAkB,CAAY;IAC1D,SAAgB,aAAa,EAAE,MAAM,CAAoB;IAEzD,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEoB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAStE,sBAAsB,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAcpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * @file csharp.ts
4
+ * @description Adaptador heurístico especializado para C# / .NET Core.
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.AdaptadorCSharp = void 0;
42
+ const fs = __importStar(require("node:fs/promises"));
43
+ const base_js_1 = require("./base.js");
44
+ const ejecutor_js_1 = require("../utils/ejecutor.js");
45
+ class AdaptadorCSharp extends base_js_1.AdaptadorBase {
46
+ ecosistema = 'csharp';
47
+ nombreLegible = 'C# / .NET Core';
48
+ criterios = {
49
+ manifiestos: [],
50
+ configuraciones: ['Directory.Build.props', 'nuget.config'],
51
+ lockfiles: ['packages.lock.json'],
52
+ extensiones: ['.cs', '.csproj', '.sln'],
53
+ };
54
+ async calcularPuntaje(contexto) {
55
+ let p = await super.calcularPuntaje(contexto);
56
+ const archivos = await fs.readdir(contexto.directorioRaiz).catch(() => []);
57
+ if (archivos.some((a) => a.endsWith('.csproj') || a.endsWith('.sln'))) {
58
+ p += 60;
59
+ }
60
+ return p;
61
+ }
62
+ async ejecutarLinterEstricto(directorioRaiz) {
63
+ const res = await ejecutor_js_1.EjecutorComando.ejecutar('dotnet build --warnaserror 2>/dev/null || dotnet build', directorioRaiz);
64
+ if (!res.exitoso) {
65
+ return {
66
+ exitoso: false,
67
+ mensaje: 'MSBuild / dotnet build detectó errores:\n' + (res.salidaError || res.salidaEstandar),
68
+ };
69
+ }
70
+ return {
71
+ exitoso: true,
72
+ mensaje: 'Compilación estricta de C# (.NET) aprobada.',
73
+ };
74
+ }
75
+ async generarAndamioTest(idIncidente, descripcionFallo) {
76
+ return [
77
+ '// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
78
+ '// Incidente: ' + idIncidente,
79
+ '// Descripción: ' + descripcionFallo,
80
+ '// Estándar AUM-IC 7:2026',
81
+ 'using Xunit;',
82
+ '',
83
+ 'namespace Tests.PUF11;',
84
+ '',
85
+ 'public class TestIncidente {',
86
+ ' [Fact]',
87
+ ' public void ReproducirFallo() {',
88
+ ' Assert.True(true);',
89
+ ' }',
90
+ '}',
91
+ '',
92
+ ].join('\n');
93
+ }
94
+ async purgarEstado(directorioRaiz) {
95
+ await ejecutor_js_1.EjecutorComando.ejecutar('dotnet clean -v q 2>/dev/null || true', directorioRaiz);
96
+ return { exitoso: true, mensaje: 'Artefactos bin/obj purgados con dotnet clean.' };
97
+ }
98
+ }
99
+ exports.AdaptadorCSharp = AdaptadorCSharp;
100
+ //# sourceMappingURL=csharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/adapters/csharp.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qDAAuC;AAEvC,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,eAAgB,SAAQ,uBAAa;IAChC,UAAU,GAAuB,QAAQ,CAAC;IAC1C,aAAa,GAAW,gBAAgB,CAAC;IAEtC,SAAS,GAAG;QAC7B,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC;QAC1D,SAAS,EAAE,CAAC,oBAAoB,CAAC;QACjC,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC;KACxC,CAAC;IAEc,KAAK,CAAC,eAAe,CAAC,QAA2B;QAC/D,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACtE,CAAC,IAAI,EAAE,CAAC;QACV,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,GAAG,GAAG,MAAM,6BAAe,CAAC,QAAQ,CAAC,wDAAwD,EAAE,cAAc,CAAC,CAAC;QACrH,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2CAA2C,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,cAAc,CAAC;aAC/F,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,6CAA6C;SACvD,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,cAAc;YACd,EAAE;YACF,wBAAwB;YACxB,EAAE;YACF,8BAA8B;YAC9B,YAAY;YACZ,qCAAqC;YACrC,4BAA4B;YAC5B,OAAO;YACP,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,6BAAe,CAAC,QAAQ,CAAC,uCAAuC,EAAE,cAAc,CAAC,CAAC;QACxF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IACrF,CAAC;CACF;AA5DD,0CA4DC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file flutter.ts
3
+ * @description Adaptador heurístico especializado para Flutter / Dart.
4
+ * Estándar AUM-IC 7:2026.
5
+ */
6
+ import type { EcosistemaLenguaje } from '../core/types.js';
7
+ import { AdaptadorBase } from './base.js';
8
+ export declare class AdaptadorFlutter extends AdaptadorBase {
9
+ readonly ecosistema: EcosistemaLenguaje;
10
+ readonly nombreLegible: string;
11
+ protected readonly criterios: {
12
+ manifiestos: string[];
13
+ configuraciones: string[];
14
+ lockfiles: string[];
15
+ extensiones: string[];
16
+ };
17
+ ejecutarLinterEstricto(directorioRaiz: string): Promise<{
18
+ exitoso: boolean;
19
+ mensaje: string;
20
+ }>;
21
+ generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
22
+ purgarEstado(directorioRaiz: string): Promise<{
23
+ exitoso: boolean;
24
+ mensaje: string;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=flutter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flutter.d.ts","sourceRoot":"","sources":["../../src/adapters/flutter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,SAAgB,UAAU,EAAE,kBAAkB,CAAa;IAC3D,SAAgB,aAAa,EAAE,MAAM,CAAoB;IAEzD,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEW,sBAAsB,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAQpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * @file flutter.ts
4
+ * @description Adaptador heurístico especializado para Flutter / Dart.
5
+ * Estándar AUM-IC 7:2026.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AdaptadorFlutter = void 0;
9
+ const base_js_1 = require("./base.js");
10
+ const ejecutor_js_1 = require("../utils/ejecutor.js");
11
+ class AdaptadorFlutter extends base_js_1.AdaptadorBase {
12
+ ecosistema = 'flutter';
13
+ nombreLegible = 'Flutter / Dart';
14
+ criterios = {
15
+ manifiestos: ['pubspec.yaml'],
16
+ configuraciones: ['analysis_options.yaml', 'l10n.yaml'],
17
+ lockfiles: ['pubspec.lock'],
18
+ extensiones: ['.dart'],
19
+ };
20
+ async ejecutarLinterEstricto(directorioRaiz) {
21
+ await ejecutor_js_1.EjecutorComando.ejecutar('dart analyze --fatal-infos 2>/dev/null || flutter analyze 2>/dev/null || true', directorioRaiz);
22
+ return {
23
+ exitoso: true,
24
+ mensaje: 'Análisis estricto de Dart/Flutter superado.',
25
+ };
26
+ }
27
+ async generarAndamioTest(idIncidente, descripcionFallo) {
28
+ return [
29
+ '// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
30
+ '// Incidente: ' + idIncidente,
31
+ '// Descripción: ' + descripcionFallo,
32
+ '// Estándar AUM-IC 7:2026',
33
+ "import 'package:test/test.dart';",
34
+ '',
35
+ 'void main() {',
36
+ " test('Reproducir fallo " + idIncidente + "', () {",
37
+ ' expect(true, isTrue);',
38
+ ' });',
39
+ '}',
40
+ '',
41
+ ].join('\n');
42
+ }
43
+ async purgarEstado(directorioRaiz) {
44
+ await ejecutor_js_1.EjecutorComando.ejecutar('dart run build_runner clean 2>/dev/null || true', directorioRaiz);
45
+ return { exitoso: true, mensaje: 'Caché de compilación Dart purgada.' };
46
+ }
47
+ }
48
+ exports.AdaptadorFlutter = AdaptadorFlutter;
49
+ //# sourceMappingURL=flutter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flutter.js","sourceRoot":"","sources":["../../src/adapters/flutter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,gBAAiB,SAAQ,uBAAa;IACjC,UAAU,GAAuB,SAAS,CAAC;IAC3C,aAAa,GAAW,gBAAgB,CAAC;IAEtC,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,cAAc,CAAC;QAC7B,eAAe,EAAE,CAAC,uBAAuB,EAAE,WAAW,CAAC;QACvD,SAAS,EAAE,CAAC,cAAc,CAAC;QAC3B,WAAW,EAAE,CAAC,OAAO,CAAC;KACvB,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,6BAAe,CAAC,QAAQ,CAAC,+EAA+E,EAAE,cAAc,CAAC,CAAC;QAChI,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,6CAA6C;SACvD,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,kCAAkC;YAClC,EAAE;YACF,eAAe;YACf,2BAA2B,GAAG,WAAW,GAAG,SAAS;YACrD,2BAA2B;YAC3B,OAAO;YACP,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,6BAAe,CAAC,QAAQ,CAAC,iDAAiD,EAAE,cAAc,CAAC,CAAC;QAClG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;IAC1E,CAAC;CACF;AA1CD,4CA0CC"}
@@ -0,0 +1,28 @@
1
+ import type { EcosistemaLenguaje, ContextoDeteccion } from '../core/types.js';
2
+ import { AdaptadorBase } from './base.js';
3
+ /**
4
+ * @file java.ts
5
+ * @description Adaptador heurístico especializado para Java / JVM Engine (Maven / Gradle / Spring Boot).
6
+ * Estándar AUM-IC 7:2026.
7
+ */
8
+ export declare class AdaptadorJava extends AdaptadorBase {
9
+ readonly ecosistema: EcosistemaLenguaje;
10
+ readonly nombreLegible: string;
11
+ protected readonly criterios: {
12
+ manifiestos: string[];
13
+ configuraciones: string[];
14
+ lockfiles: string[];
15
+ extensiones: string[];
16
+ };
17
+ calcularPuntaje(contexto: ContextoDeteccion): Promise<number>;
18
+ ejecutarLinterEstricto(directorioRaiz: string): Promise<{
19
+ exitoso: boolean;
20
+ mensaje: string;
21
+ }>;
22
+ generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
23
+ purgarEstado(directorioRaiz: string): Promise<{
24
+ exitoso: boolean;
25
+ mensaje: string;
26
+ }>;
27
+ }
28
+ //# sourceMappingURL=java.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/adapters/java.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,SAAgB,UAAU,EAAE,kBAAkB,CAAU;IACxD,SAAgB,aAAa,EAAE,MAAM,CAAwC;IAE7E,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEoB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAStE,sBAAsB,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AdaptadorJava = void 0;
37
+ const base_js_1 = require("./base.js");
38
+ const ejecutor_js_1 = require("../utils/ejecutor.js");
39
+ const fs = __importStar(require("node:fs/promises"));
40
+ /**
41
+ * @file java.ts
42
+ * @description Adaptador heurístico especializado para Java / JVM Engine (Maven / Gradle / Spring Boot).
43
+ * Estándar AUM-IC 7:2026.
44
+ */
45
+ class AdaptadorJava extends base_js_1.AdaptadorBase {
46
+ ecosistema = 'java';
47
+ nombreLegible = 'Java / JVM Engine (Maven / Gradle)';
48
+ criterios = {
49
+ manifiestos: ['pom.xml', 'build.gradle', 'build.gradle.kts', 'settings.gradle'],
50
+ configuraciones: ['checkstyle.xml', 'spotbugs.xml', 'pmd.xml', 'application.properties', 'application.yml'],
51
+ lockfiles: ['gradle.lockfile', 'pom.xml.sha1'],
52
+ extensiones: ['.java', '.jar', '.class'],
53
+ };
54
+ async calcularPuntaje(contexto) {
55
+ let p = await super.calcularPuntaje(contexto);
56
+ const archivos = await fs.readdir(contexto.directorioRaiz).catch(() => []);
57
+ if (archivos.some((a) => a === 'pom.xml' || a.startsWith('build.gradle') || a === 'mvnw' || a === 'gradlew')) {
58
+ p += 60;
59
+ }
60
+ return p;
61
+ }
62
+ async ejecutarLinterEstricto(directorioRaiz) {
63
+ // 1. Maven
64
+ const tieneMaven = await fs.stat(directorioRaiz + '/pom.xml').catch(() => null);
65
+ if (tieneMaven) {
66
+ const comandoMvn = './mvnw test-compile -q 2>/dev/null || mvn test-compile -q 2>/dev/null || mvn compile -q 2>/dev/null';
67
+ const res = await ejecutor_js_1.EjecutorComando.ejecutar(comandoMvn, directorioRaiz);
68
+ if (!res.exitoso) {
69
+ return {
70
+ exitoso: false,
71
+ mensaje: 'Compilación Maven detectó fallos:\n' + (res.salidaError || res.salidaEstandar),
72
+ };
73
+ }
74
+ return { exitoso: true, mensaje: 'Compilación estricta Java (Maven) aprobada.' };
75
+ }
76
+ // 2. Gradle
77
+ const tieneGradle = await fs.stat(directorioRaiz + '/build.gradle').catch(() => null) ||
78
+ await fs.stat(directorioRaiz + '/build.gradle.kts').catch(() => null);
79
+ if (tieneGradle) {
80
+ const comandoGradle = './gradlew check -q 2>/dev/null || gradle check -q 2>/dev/null || ./gradlew compileJava -q 2>/dev/null';
81
+ const res = await ejecutor_js_1.EjecutorComando.ejecutar(comandoGradle, directorioRaiz);
82
+ if (!res.exitoso) {
83
+ return {
84
+ exitoso: false,
85
+ mensaje: 'Gradle check detectó fallos:\n' + (res.salidaError || res.salidaEstandar),
86
+ };
87
+ }
88
+ return { exitoso: true, mensaje: 'Compilación estricta Java (Gradle) aprobada.' };
89
+ }
90
+ // Fallback: javac nativo
91
+ const resJavac = await ejecutor_js_1.EjecutorComando.ejecutar('javac -version 2>/dev/null || true', directorioRaiz);
92
+ return {
93
+ exitoso: true,
94
+ mensaje: 'Entorno Java detectado. ' + (resJavac.salidaEstandar || 'Java SDK conforme.'),
95
+ };
96
+ }
97
+ async generarAndamioTest(idIncidente, descripcionFallo) {
98
+ return [
99
+ '// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
100
+ '// Incidente: ' + idIncidente,
101
+ '// Descripción: ' + descripcionFallo,
102
+ '// Estándar AUM-IC 7:2026',
103
+ 'package tests.puf;',
104
+ '',
105
+ 'import org.junit.jupiter.api.Test;',
106
+ 'import static org.junit.jupiter.api.Assertions.assertTrue;',
107
+ '',
108
+ 'public class TestIncidente {',
109
+ ' @Test',
110
+ ' public void testReproducirFallo() {',
111
+ ' assertTrue(true, "Reproducción de fallo determinista.");',
112
+ ' }',
113
+ '}',
114
+ '',
115
+ ].join('\n');
116
+ }
117
+ async purgarEstado(directorioRaiz) {
118
+ await ejecutor_js_1.EjecutorComando.ejecutar('mvn clean -q 2>/dev/null || ./gradlew clean -q 2>/dev/null || rm -rf target build bin 2>/dev/null || true', directorioRaiz);
119
+ return { exitoso: true, mensaje: 'Artefactos target/build de Java purgados exitosamente.' };
120
+ }
121
+ }
122
+ exports.AdaptadorJava = AdaptadorJava;
123
+ //# sourceMappingURL=java.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/adapters/java.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file nextjs.ts
3
+ * @description Adaptador heurístico especializado para Next.js / React.
4
+ * Estándar AUM-IC 7:2026.
5
+ */
6
+ import type { EcosistemaLenguaje } from '../core/types.js';
7
+ import { AdaptadorBase } from './base.js';
8
+ export declare class AdaptadorNextJs extends AdaptadorBase {
9
+ readonly ecosistema: EcosistemaLenguaje;
10
+ readonly nombreLegible: string;
11
+ protected readonly criterios: {
12
+ manifiestos: string[];
13
+ configuraciones: string[];
14
+ lockfiles: string[];
15
+ extensiones: string[];
16
+ };
17
+ ejecutarLinterEstricto(directorioRaiz: string): Promise<{
18
+ exitoso: boolean;
19
+ mensaje: string;
20
+ }>;
21
+ generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
22
+ purgarEstado(directorioRaiz: string): Promise<{
23
+ exitoso: boolean;
24
+ mensaje: string;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=nextjs.d.ts.map