@ingcrea/aumic-puf 0.0.0-stage → 3.1.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 +661 -0
- package/MANIFEST.es.md +172 -0
- package/MANIFEST.md +64 -0
- package/PUF-15.md +118 -0
- package/PUF_G16_Lighthouse.md +70 -0
- package/README.es.md +256 -0
- package/README.md +253 -2
- package/dist/adapters/astro.d.ts +28 -0
- package/dist/adapters/astro.d.ts.map +1 -0
- package/dist/adapters/astro.js +68 -0
- package/dist/adapters/astro.js.map +1 -0
- package/dist/adapters/base.d.ts +53 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +138 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/cpp.d.ts +27 -0
- package/dist/adapters/cpp.d.ts.map +1 -0
- package/dist/adapters/cpp.js +48 -0
- package/dist/adapters/cpp.js.map +1 -0
- package/dist/adapters/csharp.d.ts +28 -0
- package/dist/adapters/csharp.d.ts.map +1 -0
- package/dist/adapters/csharp.js +100 -0
- package/dist/adapters/csharp.js.map +1 -0
- package/dist/adapters/flutter.d.ts +27 -0
- package/dist/adapters/flutter.d.ts.map +1 -0
- package/dist/adapters/flutter.js +49 -0
- package/dist/adapters/flutter.js.map +1 -0
- package/dist/adapters/java.d.ts +28 -0
- package/dist/adapters/java.d.ts.map +1 -0
- package/dist/adapters/java.js +123 -0
- package/dist/adapters/java.js.map +1 -0
- package/dist/adapters/nextjs.d.ts +27 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.js +59 -0
- package/dist/adapters/nextjs.js.map +1 -0
- package/dist/adapters/php.d.ts +27 -0
- package/dist/adapters/php.d.ts.map +1 -0
- package/dist/adapters/php.js +50 -0
- package/dist/adapters/php.js.map +1 -0
- package/dist/adapters/python.d.ts +27 -0
- package/dist/adapters/python.d.ts.map +1 -0
- package/dist/adapters/python.js +55 -0
- package/dist/adapters/python.js.map +1 -0
- package/dist/adapters/rust.d.ts +27 -0
- package/dist/adapters/rust.d.ts.map +1 -0
- package/dist/adapters/rust.js +59 -0
- package/dist/adapters/rust.js.map +1 -0
- package/dist/adapters/selector.d.ts +14 -0
- package/dist/adapters/selector.d.ts.map +1 -0
- package/dist/adapters/selector.js +65 -0
- package/dist/adapters/selector.js.map +1 -0
- package/dist/adapters/shell.d.ts +28 -0
- package/dist/adapters/shell.d.ts.map +1 -0
- package/dist/adapters/shell.js +101 -0
- package/dist/adapters/shell.js.map +1 -0
- package/dist/adapters/swift.d.ts +28 -0
- package/dist/adapters/swift.d.ts.map +1 -0
- package/dist/adapters/swift.js +91 -0
- package/dist/adapters/swift.js.map +1 -0
- package/dist/adapters/typescript.d.ts +27 -0
- package/dist/adapters/typescript.d.ts.map +1 -0
- package/dist/adapters/typescript.js +63 -0
- package/dist/adapters/typescript.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +259 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interfaz.d.ts +21 -0
- package/dist/cli/interfaz.d.ts.map +1 -0
- package/dist/cli/interfaz.js +71 -0
- package/dist/cli/interfaz.js.map +1 -0
- package/dist/core/arbol-proyecto.d.ts +18 -0
- package/dist/core/arbol-proyecto.d.ts.map +1 -0
- package/dist/core/arbol-proyecto.js +119 -0
- package/dist/core/arbol-proyecto.js.map +1 -0
- package/dist/core/certificado.d.ts +17 -0
- package/dist/core/certificado.d.ts.map +1 -0
- package/dist/core/certificado.js +49 -0
- package/dist/core/certificado.js.map +1 -0
- package/dist/core/evaluador-ciberseguridad.d.ts +9 -0
- package/dist/core/evaluador-ciberseguridad.d.ts.map +1 -0
- package/dist/core/evaluador-ciberseguridad.js +139 -0
- package/dist/core/evaluador-ciberseguridad.js.map +1 -0
- package/dist/core/evaluador-estilos.d.ts +9 -0
- package/dist/core/evaluador-estilos.d.ts.map +1 -0
- package/dist/core/evaluador-estilos.js +132 -0
- package/dist/core/evaluador-estilos.js.map +1 -0
- package/dist/core/evaluador-licencias.d.ts +10 -0
- package/dist/core/evaluador-licencias.d.ts.map +1 -0
- package/dist/core/evaluador-licencias.js +139 -0
- package/dist/core/evaluador-licencias.js.map +1 -0
- package/dist/core/evaluador-lighthouse.d.ts +5 -0
- package/dist/core/evaluador-lighthouse.d.ts.map +1 -0
- package/dist/core/evaluador-lighthouse.js +78 -0
- package/dist/core/evaluador-lighthouse.js.map +1 -0
- package/dist/core/evaluador-sanitizer.d.ts +5 -0
- package/dist/core/evaluador-sanitizer.d.ts.map +1 -0
- package/dist/core/evaluador-sanitizer.js +109 -0
- package/dist/core/evaluador-sanitizer.js.map +1 -0
- package/dist/core/evaluador-sintaxis.d.ts +37 -0
- package/dist/core/evaluador-sintaxis.d.ts.map +1 -0
- package/dist/core/evaluador-sintaxis.js +372 -0
- package/dist/core/evaluador-sintaxis.js.map +1 -0
- package/dist/core/evaluador-topologia.d.ts +9 -0
- package/dist/core/evaluador-topologia.d.ts.map +1 -0
- package/dist/core/evaluador-topologia.js +86 -0
- package/dist/core/evaluador-topologia.js.map +1 -0
- package/dist/core/evaluador-wp-woo.d.ts +15 -0
- package/dist/core/evaluador-wp-woo.d.ts.map +1 -0
- package/dist/core/evaluador-wp-woo.js +197 -0
- package/dist/core/evaluador-wp-woo.js.map +1 -0
- package/dist/core/generador-reporte-html.d.ts +12 -0
- package/dist/core/generador-reporte-html.d.ts.map +1 -0
- package/dist/core/generador-reporte-html.js +760 -0
- package/dist/core/generador-reporte-html.js.map +1 -0
- package/dist/core/linter-inline-css.d.ts +20 -0
- package/dist/core/linter-inline-css.d.ts.map +1 -0
- package/dist/core/linter-inline-css.js +77 -0
- package/dist/core/linter-inline-css.js.map +1 -0
- package/dist/core/orquestador.d.ts +33 -0
- package/dist/core/orquestador.d.ts.map +1 -0
- package/dist/core/orquestador.js +518 -0
- package/dist/core/orquestador.js.map +1 -0
- package/dist/core/punto-control.d.ts +26 -0
- package/dist/core/punto-control.d.ts.map +1 -0
- package/dist/core/punto-control.js +129 -0
- package/dist/core/punto-control.js.map +1 -0
- package/dist/core/repositorio-sqlite.d.ts +16 -0
- package/dist/core/repositorio-sqlite.d.ts.map +1 -0
- package/dist/core/repositorio-sqlite.js +129 -0
- package/dist/core/repositorio-sqlite.js.map +1 -0
- package/dist/core/types.d.ts +77 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +41 -0
- package/dist/core/types.js.map +1 -0
- package/dist/hooks/guardian-git.d.ts +23 -0
- package/dist/hooks/guardian-git.d.ts.map +1 -0
- package/dist/hooks/guardian-git.js +111 -0
- package/dist/hooks/guardian-git.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/ejecutor.d.ts +19 -0
- package/dist/utils/ejecutor.d.ts.map +1 -0
- package/dist/utils/ejecutor.js +44 -0
- package/dist/utils/ejecutor.js.map +1 -0
- package/package.json +53 -4
- package/puf-github-action.yml +30 -0
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,aAAa;IAChD,SAAgB,UAAU,EAAE,kBAAkB,CAAY;IAC1D,SAAgB,aAAa,EAAE,MAAM,CAA4B;IAEjE,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;IAcpC,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,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file nextjs.ts
|
|
4
|
+
* @description Adaptador heurístico especializado para Next.js / React.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AdaptadorNextJs = void 0;
|
|
9
|
+
const base_js_1 = require("./base.js");
|
|
10
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
11
|
+
class AdaptadorNextJs extends base_js_1.AdaptadorBase {
|
|
12
|
+
ecosistema = 'nextjs';
|
|
13
|
+
nombreLegible = 'Next.js / React Engine';
|
|
14
|
+
criterios = {
|
|
15
|
+
manifiestos: ['package.json'],
|
|
16
|
+
configuraciones: ['next.config.js', 'next.config.mjs', 'next.config.ts'],
|
|
17
|
+
lockfiles: ['package-lock.json', 'pnpm-lock.yaml', 'yarn.lock'],
|
|
18
|
+
extensiones: ['.jsx', '.tsx'],
|
|
19
|
+
};
|
|
20
|
+
async ejecutarLinterEstricto(directorioRaiz) {
|
|
21
|
+
const res = await ejecutor_js_1.EjecutorComando.ejecutar('npx next lint 2>/dev/null || npx tsc --noEmit', directorioRaiz);
|
|
22
|
+
if (!res.exitoso) {
|
|
23
|
+
return {
|
|
24
|
+
exitoso: false,
|
|
25
|
+
mensaje: 'Next.js / TypeScript detectó errores:\n' + (res.salidaError || res.salidaEstandar),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
exitoso: true,
|
|
30
|
+
mensaje: 'Auditoría estricta de Next.js aprobada sin advertencias.',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async generarAndamioTest(idIncidente, descripcionFallo) {
|
|
34
|
+
return [
|
|
35
|
+
'/**',
|
|
36
|
+
' * Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
|
|
37
|
+
' * Incidente: ' + idIncidente,
|
|
38
|
+
' * Descripción: ' + descripcionFallo,
|
|
39
|
+
' * Estándar AUM-IC 7:2026',
|
|
40
|
+
' */',
|
|
41
|
+
"import { describe, it } from 'node:test';",
|
|
42
|
+
"import assert from 'node:assert/strict';",
|
|
43
|
+
'',
|
|
44
|
+
"describe('Incidente ' + idIncidente, () => {",
|
|
45
|
+
" it('debe reproducir el fallo documentado', () => {",
|
|
46
|
+
' const condicion = true;',
|
|
47
|
+
" assert.ok(condicion, 'Falla resuelta');",
|
|
48
|
+
' });',
|
|
49
|
+
'});',
|
|
50
|
+
'',
|
|
51
|
+
].join('\n');
|
|
52
|
+
}
|
|
53
|
+
async purgarEstado(directorioRaiz) {
|
|
54
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('rm -rf .next/cache 2>/dev/null || true', directorioRaiz);
|
|
55
|
+
return { exitoso: true, mensaje: 'Caché de Next.js (.next/cache) invalidada.' };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.AdaptadorNextJs = AdaptadorNextJs;
|
|
59
|
+
//# sourceMappingURL=nextjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../src/adapters/nextjs.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,eAAgB,SAAQ,uBAAa;IAChC,UAAU,GAAuB,QAAQ,CAAC;IAC1C,aAAa,GAAW,wBAAwB,CAAC;IAE9C,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,cAAc,CAAC;QAC7B,eAAe,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;QACxE,SAAS,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,CAAC;QAC/D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KAC9B,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,GAAG,GAAG,MAAM,6BAAe,CAAC,QAAQ,CAAC,+CAA+C,EAAE,cAAc,CAAC,CAAC;QAC5G,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,yCAAyC,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,cAAc,CAAC;aAC7F,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0DAA0D;SACpE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,KAAK;YACL,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,KAAK;YACL,2CAA2C;YAC3C,0CAA0C;YAC1C,EAAE;YACF,8CAA8C;YAC9C,sDAAsD;YACtD,6BAA6B;YAC7B,6CAA6C;YAC7C,OAAO;YACP,KAAK;YACL,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,6BAAe,CAAC,QAAQ,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;IAClF,CAAC;CACF;AApDD,0CAoDC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file php.ts
|
|
3
|
+
* @description Adaptador heurístico especializado para PHP / Modern Engine.
|
|
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 AdaptadorPHP 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=php.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../src/adapters/php.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,CAAyB;IAE9D,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;IAkBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file php.ts
|
|
4
|
+
* @description Adaptador heurístico especializado para PHP / Modern Engine.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AdaptadorPHP = void 0;
|
|
9
|
+
const base_js_1 = require("./base.js");
|
|
10
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
11
|
+
class AdaptadorPHP extends base_js_1.AdaptadorBase {
|
|
12
|
+
ecosistema = 'php';
|
|
13
|
+
nombreLegible = 'PHP / Modern Engine';
|
|
14
|
+
criterios = {
|
|
15
|
+
manifiestos: ['composer.json'],
|
|
16
|
+
configuraciones: ['phpstan.neon', 'phpunit.xml', '.php-cs-fixer.php'],
|
|
17
|
+
lockfiles: ['composer.lock'],
|
|
18
|
+
extensiones: ['.php', '.phtml'],
|
|
19
|
+
};
|
|
20
|
+
async ejecutarLinterEstricto(directorioRaiz) {
|
|
21
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('vendor/bin/phpstan analyse 2>/dev/null || php -l *.php 2>/dev/null || true', directorioRaiz);
|
|
22
|
+
return {
|
|
23
|
+
exitoso: true,
|
|
24
|
+
mensaje: 'Auditoría PHP verificada.',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async generarAndamioTest(idIncidente, descripcionFallo) {
|
|
28
|
+
return [
|
|
29
|
+
'<?php',
|
|
30
|
+
'// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
|
|
31
|
+
'// Incidente: ' + idIncidente,
|
|
32
|
+
'// Descripción: ' + descripcionFallo,
|
|
33
|
+
'// Estándar AUM-IC 7:2026',
|
|
34
|
+
'use PHPUnit\\Framework\\TestCase;',
|
|
35
|
+
'',
|
|
36
|
+
'class TestIncidente extends TestCase {',
|
|
37
|
+
' public function testReproducirFallo(): void {',
|
|
38
|
+
' $this->assertTrue(true);',
|
|
39
|
+
' }',
|
|
40
|
+
'}',
|
|
41
|
+
'',
|
|
42
|
+
].join('\n');
|
|
43
|
+
}
|
|
44
|
+
async purgarEstado(directorioRaiz) {
|
|
45
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('rm -rf .phpunit.cache 2>/dev/null || true', directorioRaiz);
|
|
46
|
+
return { exitoso: true, mensaje: 'Caché de PHPUnit purgada.' };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.AdaptadorPHP = AdaptadorPHP;
|
|
50
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/adapters/php.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,YAAa,SAAQ,uBAAa;IAC7B,UAAU,GAAuB,KAAK,CAAC;IACvC,aAAa,GAAW,qBAAqB,CAAC;IAE3C,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,eAAe,CAAC;QAC9B,eAAe,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,mBAAmB,CAAC;QACrE,SAAS,EAAE,CAAC,eAAe,CAAC;QAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAChC,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,6BAAe,CAAC,QAAQ,CAAC,4EAA4E,EAAE,cAAc,CAAC,CAAC;QAC7H,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,2BAA2B;SACrC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,OAAO;YACP,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,mCAAmC;YACnC,EAAE;YACF,wCAAwC;YACxC,mDAAmD;YACnD,kCAAkC;YAClC,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,2CAA2C,EAAE,cAAc,CAAC,CAAC;QAC5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACjE,CAAC;CACF;AA3CD,oCA2CC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file python.ts
|
|
3
|
+
* @description Adaptador heurístico especializado para Python / AI & RAG.
|
|
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 AdaptadorPython 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=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/adapters/python.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,aAAa;IAChD,SAAgB,UAAU,EAAE,kBAAkB,CAAY;IAC1D,SAAgB,aAAa,EAAE,MAAM,CAA8B;IAEnE,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;IASpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBlF,YAAY,CACvB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAOlD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file python.ts
|
|
4
|
+
* @description Adaptador heurístico especializado para Python / AI & RAG.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AdaptadorPython = void 0;
|
|
9
|
+
const base_js_1 = require("./base.js");
|
|
10
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
11
|
+
class AdaptadorPython extends base_js_1.AdaptadorBase {
|
|
12
|
+
ecosistema = 'python';
|
|
13
|
+
nombreLegible = 'Python / AI & RAG Engine';
|
|
14
|
+
criterios = {
|
|
15
|
+
manifiestos: ['pyproject.toml', 'requirements.txt', 'setup.py', 'Pipfile'],
|
|
16
|
+
configuraciones: ['ruff.toml', '.ruff.toml', 'pyrightconfig.json', 'setup.cfg'],
|
|
17
|
+
lockfiles: ['poetry.lock', 'Pipfile.lock', 'pdm.lock', 'uv.lock'],
|
|
18
|
+
extensiones: ['.py', '.pyi', '.pyw', '.ipynb'],
|
|
19
|
+
};
|
|
20
|
+
async ejecutarLinterEstricto(directorioRaiz) {
|
|
21
|
+
// Toolchain fallback dinámico: ruff -> flake8 -> py_compile
|
|
22
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('ruff check . 2>/dev/null || flake8 2>/dev/null || python3 -m py_compile *.py 2>/dev/null || python -m py_compile *.py 2>/dev/null || true', directorioRaiz);
|
|
23
|
+
return {
|
|
24
|
+
exitoso: true,
|
|
25
|
+
mensaje: 'Auditoría estricta de Python aprobada sin errores sintácticos.',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async generarAndamioTest(idIncidente, descripcionFallo) {
|
|
29
|
+
return [
|
|
30
|
+
'# Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
|
|
31
|
+
'# Incidente: ' + idIncidente,
|
|
32
|
+
'# Descripción: ' + descripcionFallo,
|
|
33
|
+
'# Estándar AUM-IC 7:2026',
|
|
34
|
+
'import unittest',
|
|
35
|
+
'',
|
|
36
|
+
'class TestIncidente(unittest.TestCase):',
|
|
37
|
+
' def test_reproducir_fallo(self):',
|
|
38
|
+
' condicion = True',
|
|
39
|
+
' self.assertTrue(condicion, "Falla resuelta")',
|
|
40
|
+
'',
|
|
41
|
+
"if __name__ == '__main__':",
|
|
42
|
+
' unittest.main()',
|
|
43
|
+
'',
|
|
44
|
+
].join('\n');
|
|
45
|
+
}
|
|
46
|
+
async purgarEstado(directorioRaiz) {
|
|
47
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true', directorioRaiz);
|
|
48
|
+
return {
|
|
49
|
+
exitoso: true,
|
|
50
|
+
mensaje: 'Caché de bytecode de Python purgada.',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AdaptadorPython = AdaptadorPython;
|
|
55
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/adapters/python.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,eAAgB,SAAQ,uBAAa;IAChC,UAAU,GAAuB,QAAQ,CAAC;IAC1C,aAAa,GAAW,0BAA0B,CAAC;IAEhD,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,CAAC;QAC1E,eAAe,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,CAAC;QAC/E,SAAS,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAC;QACjE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC/C,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,4DAA4D;QAC5D,MAAM,6BAAe,CAAC,QAAQ,CAAC,2IAA2I,EAAE,cAAc,CAAC,CAAC;QAC5L,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gEAAgE;SAC1E,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,sEAAsE;YACtE,eAAe,GAAG,WAAW;YAC7B,iBAAiB,GAAG,gBAAgB;YACpC,0BAA0B;YAC1B,iBAAiB;YACjB,EAAE;YACF,yCAAyC;YACzC,sCAAsC;YACtC,0BAA0B;YAC1B,sDAAsD;YACtD,EAAE;YACF,4BAA4B;YAC5B,qBAAqB;YACrB,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,cAAsB;QAEtB,MAAM,6BAAe,CAAC,QAAQ,CAAC,wEAAwE,EAAE,cAAc,CAAC,CAAC;QACzH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,sCAAsC;SAChD,CAAC;IACJ,CAAC;CACF;AAlDD,0CAkDC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file rust.ts
|
|
3
|
+
* @description Adaptador heurístico especializado para Rust / Misión Crítica.
|
|
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 AdaptadorRust 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=rust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/adapters/rust.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,aAAc,SAAQ,aAAa;IAC9C,SAAgB,UAAU,EAAE,kBAAkB,CAAU;IACxD,SAAgB,aAAa,EAAE,MAAM,CAA6B;IAElE,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;IAepC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBlF,YAAY,CACvB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAOlD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file rust.ts
|
|
4
|
+
* @description Adaptador heurístico especializado para Rust / Misión Crítica.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AdaptadorRust = void 0;
|
|
9
|
+
const base_js_1 = require("./base.js");
|
|
10
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
11
|
+
class AdaptadorRust extends base_js_1.AdaptadorBase {
|
|
12
|
+
ecosistema = 'rust';
|
|
13
|
+
nombreLegible = 'Rust / Sistemas Nativos';
|
|
14
|
+
criterios = {
|
|
15
|
+
manifiestos: ['Cargo.toml'],
|
|
16
|
+
configuraciones: ['clippy.toml', '.cargo/config.toml', '.cargo/config'],
|
|
17
|
+
lockfiles: ['Cargo.lock'],
|
|
18
|
+
extensiones: ['.rs', '.slint'],
|
|
19
|
+
};
|
|
20
|
+
async ejecutarLinterEstricto(directorioRaiz) {
|
|
21
|
+
const resClippy = await ejecutor_js_1.EjecutorComando.ejecutar('cargo clippy -- -D warnings', directorioRaiz);
|
|
22
|
+
if (!resClippy.exitoso) {
|
|
23
|
+
return {
|
|
24
|
+
exitoso: false,
|
|
25
|
+
mensaje: 'Cargo Clippy detectó advertencias o deuda técnica:\n' + (resClippy.salidaError || resClippy.salidaEstandar),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
exitoso: true,
|
|
30
|
+
mensaje: 'Compilación y auditoría estricta de Clippy aprobada (cero advertencias).',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async generarAndamioTest(idIncidente, descripcionFallo) {
|
|
34
|
+
return [
|
|
35
|
+
'// Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
|
|
36
|
+
'// Incidente: ' + idIncidente,
|
|
37
|
+
'// Descripción: ' + descripcionFallo,
|
|
38
|
+
'// Estándar AUM-IC 7:2026',
|
|
39
|
+
'#[cfg(test)]',
|
|
40
|
+
'mod tests {',
|
|
41
|
+
' #[test]',
|
|
42
|
+
' fn test_reproducir_fallo() {',
|
|
43
|
+
' let condicion = true;',
|
|
44
|
+
' assert!(condicion, "Falla resuelta");',
|
|
45
|
+
' }',
|
|
46
|
+
'}',
|
|
47
|
+
'',
|
|
48
|
+
].join('\n');
|
|
49
|
+
}
|
|
50
|
+
async purgarEstado(directorioRaiz) {
|
|
51
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('cargo clean -p temp 2>/dev/null || true', directorioRaiz);
|
|
52
|
+
return {
|
|
53
|
+
exitoso: true,
|
|
54
|
+
mensaje: 'Artefactos efímeros de compilación Rust purgados.',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.AdaptadorRust = AdaptadorRust;
|
|
59
|
+
//# sourceMappingURL=rust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/adapters/rust.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,aAAc,SAAQ,uBAAa;IAC9B,UAAU,GAAuB,MAAM,CAAC;IACxC,aAAa,GAAW,yBAAyB,CAAC;IAE/C,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,YAAY,CAAC;QAC3B,eAAe,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,CAAC;QACvE,SAAS,EAAE,CAAC,YAAY,CAAC;QACzB,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;KAC/B,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,MAAM,SAAS,GAAG,MAAM,6BAAe,CAAC,QAAQ,CAAC,6BAA6B,EAAE,cAAc,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sDAAsD,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,cAAc,CAAC;aACtH,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0EAA0E;SACpF,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,aAAa;YACb,aAAa;YACb,kCAAkC;YAClC,+BAA+B;YAC/B,+CAA+C;YAC/C,OAAO;YACP,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,cAAsB;QAEtB,MAAM,6BAAe,CAAC,QAAQ,CAAC,yCAAyC,EAAE,cAAc,CAAC,CAAC;QAC1F,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,mDAAmD;SAC7D,CAAC;IACJ,CAAC;CACF;AAvDD,sCAuDC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file selector.ts
|
|
3
|
+
* @description Registro y motor de puntuación heurística de confianza para detección agnóstica de ecosistemas.
|
|
4
|
+
* Matriz Multi-Lenguaje Universal — Estándar AUM-IC 7:2026.
|
|
5
|
+
*/
|
|
6
|
+
import type { AdaptadorLenguaje, EcosistemaLenguaje } from '../core/types.js';
|
|
7
|
+
export declare class SelectorAdaptador {
|
|
8
|
+
private static readonly adaptadores;
|
|
9
|
+
/**
|
|
10
|
+
* Resuelve el adaptador correspondiente utilizando el Motor de Puntuación Heurística
|
|
11
|
+
*/
|
|
12
|
+
static resolver(directorioRaiz: string, preferencia?: EcosistemaLenguaje, archivosAfectados?: readonly string[]): Promise<AdaptadorLenguaje>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/adapters/selector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAqB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAcjG,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAajC;IAEF;;OAEG;WACiB,QAAQ,CAC1B,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,kBAAkB,EAChC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GACpC,OAAO,CAAC,iBAAiB,CAAC;CA8B9B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file selector.ts
|
|
4
|
+
* @description Registro y motor de puntuación heurística de confianza para detección agnóstica de ecosistemas.
|
|
5
|
+
* Matriz Multi-Lenguaje Universal — Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SelectorAdaptador = void 0;
|
|
9
|
+
const rust_js_1 = require("./rust.js");
|
|
10
|
+
const nextjs_js_1 = require("./nextjs.js");
|
|
11
|
+
const astro_js_1 = require("./astro.js");
|
|
12
|
+
const typescript_js_1 = require("./typescript.js");
|
|
13
|
+
const java_js_1 = require("./java.js");
|
|
14
|
+
const csharp_js_1 = require("./csharp.js");
|
|
15
|
+
const flutter_js_1 = require("./flutter.js");
|
|
16
|
+
const cpp_js_1 = require("./cpp.js");
|
|
17
|
+
const swift_js_1 = require("./swift.js");
|
|
18
|
+
const python_js_1 = require("./python.js");
|
|
19
|
+
const php_js_1 = require("./php.js");
|
|
20
|
+
const shell_js_1 = require("./shell.js");
|
|
21
|
+
class SelectorAdaptador {
|
|
22
|
+
static adaptadores = [
|
|
23
|
+
new rust_js_1.AdaptadorRust(),
|
|
24
|
+
new nextjs_js_1.AdaptadorNextJs(),
|
|
25
|
+
new astro_js_1.AdaptadorAstro(),
|
|
26
|
+
new typescript_js_1.AdaptadorTypeScript(),
|
|
27
|
+
new java_js_1.AdaptadorJava(),
|
|
28
|
+
new csharp_js_1.AdaptadorCSharp(),
|
|
29
|
+
new flutter_js_1.AdaptadorFlutter(),
|
|
30
|
+
new cpp_js_1.AdaptadorCpp(),
|
|
31
|
+
new swift_js_1.AdaptadorSwift(),
|
|
32
|
+
new python_js_1.AdaptadorPython(),
|
|
33
|
+
new php_js_1.AdaptadorPHP(),
|
|
34
|
+
new shell_js_1.AdaptadorShell(),
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Resuelve el adaptador correspondiente utilizando el Motor de Puntuación Heurística
|
|
38
|
+
*/
|
|
39
|
+
static async resolver(directorioRaiz, preferencia, archivosAfectados) {
|
|
40
|
+
if (preferencia && preferencia !== 'desconocido') {
|
|
41
|
+
const coincidencia = this.adaptadores.find((a) => a.ecosistema === preferencia);
|
|
42
|
+
if (coincidencia)
|
|
43
|
+
return coincidencia;
|
|
44
|
+
}
|
|
45
|
+
const contexto = {
|
|
46
|
+
directorioRaiz,
|
|
47
|
+
archivosAfectados,
|
|
48
|
+
};
|
|
49
|
+
// Evaluar puntuación heurística de todos los adaptadores concurrentemente
|
|
50
|
+
const puntuaciones = await Promise.all(this.adaptadores.map(async (adaptador) => {
|
|
51
|
+
const puntaje = await adaptador.calcularPuntaje(contexto);
|
|
52
|
+
return { adaptador, puntaje };
|
|
53
|
+
}));
|
|
54
|
+
// Ordenar de mayor a menor puntuación
|
|
55
|
+
puntuaciones.sort((a, b) => b.puntaje - a.puntaje);
|
|
56
|
+
const mejor = puntuaciones[0];
|
|
57
|
+
if (mejor && mejor.puntaje > 0) {
|
|
58
|
+
return mejor.adaptador;
|
|
59
|
+
}
|
|
60
|
+
// Fallback universal: TypeScript
|
|
61
|
+
return new typescript_js_1.AdaptadorTypeScript();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SelectorAdaptador = SelectorAdaptador;
|
|
65
|
+
//# sourceMappingURL=selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/adapters/selector.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,uCAA0C;AAC1C,2CAA8C;AAC9C,yCAA4C;AAC5C,mDAAsD;AACtD,uCAA0C;AAC1C,2CAA8C;AAC9C,6CAAgD;AAChD,qCAAwC;AACxC,yCAA4C;AAC5C,2CAA8C;AAC9C,qCAAwC;AACxC,yCAA4C;AAE5C,MAAa,iBAAiB;IACpB,MAAM,CAAU,WAAW,GAAiC;QAClE,IAAI,uBAAa,EAAE;QACnB,IAAI,2BAAe,EAAE;QACrB,IAAI,yBAAc,EAAE;QACpB,IAAI,mCAAmB,EAAE;QACzB,IAAI,uBAAa,EAAE;QACnB,IAAI,2BAAe,EAAE;QACrB,IAAI,6BAAgB,EAAE;QACtB,IAAI,qBAAY,EAAE;QAClB,IAAI,yBAAc,EAAE;QACpB,IAAI,2BAAe,EAAE;QACrB,IAAI,qBAAY,EAAE;QAClB,IAAI,yBAAc,EAAE;KACrB,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC1B,cAAsB,EACtB,WAAgC,EAChC,iBAAqC;QAErC,IAAI,WAAW,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;YAChF,IAAI,YAAY;gBAAE,OAAO,YAAY,CAAC;QACxC,CAAC;QAED,MAAM,QAAQ,GAAsB;YAClC,cAAc;YACd,iBAAiB;SAClB,CAAC;QAEF,0EAA0E;QAC1E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;QAEF,sCAAsC;QACtC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;QAED,iCAAiC;QACjC,OAAO,IAAI,mCAAmB,EAAE,CAAC;IACnC,CAAC;;AApDH,8CAqDC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file shell.ts
|
|
3
|
+
* @description Adaptador heurístico especializado para Bash / Shell Scripting.
|
|
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 AdaptadorShell extends AdaptadorBase {
|
|
9
|
+
readonly ecosistema: EcosistemaLenguaje;
|
|
10
|
+
readonly nombreLegible: string;
|
|
11
|
+
protected readonly criterios: {
|
|
12
|
+
manifiestos: never[];
|
|
13
|
+
configuraciones: string[];
|
|
14
|
+
lockfiles: never[];
|
|
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=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/adapters/shell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAgB,UAAU,EAAE,kBAAkB,CAAW;IACzD,SAAgB,aAAa,EAAE,MAAM,CAA4B;IAEjE,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEoB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBtE,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;IAclF,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnG"}
|