@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,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file punto-control.ts
|
|
4
|
+
* @description Gestor atómico de respaldos inmutables (Compuerta G3) y reversión determinista.
|
|
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.GestorPuntoControl = void 0;
|
|
42
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
43
|
+
const path = __importStar(require("node:path"));
|
|
44
|
+
const crypto = __importStar(require("node:crypto"));
|
|
45
|
+
class GestorPuntoControl {
|
|
46
|
+
directorioCheckpoints;
|
|
47
|
+
constructor(directorioRaiz) {
|
|
48
|
+
this.directorioCheckpoints = path.join(directorioRaiz, 'checkpoints');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calcula el hash SHA-256 de un archivo de manera síncrona/buffer
|
|
52
|
+
*/
|
|
53
|
+
static async calcularHashSha256(rutaArchivo) {
|
|
54
|
+
const contenido = await fs.readFile(rutaArchivo);
|
|
55
|
+
return crypto.createHash('sha256').update(contenido).digest('hex');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Crea un respaldo inmutable de un archivo con metadatos de auditoría
|
|
59
|
+
*/
|
|
60
|
+
async respaldarArchivo(idIncidente, rutaArchivoRelativa, directorioRaiz) {
|
|
61
|
+
const rutaAbsoluta = path.resolve(directorioRaiz, rutaArchivoRelativa);
|
|
62
|
+
const existe = await fs.stat(rutaAbsoluta).catch(() => null);
|
|
63
|
+
if (!existe || !existe.isFile()) {
|
|
64
|
+
throw new Error(`El archivo a respaldar no existe o no es válido: ${rutaAbsoluta}`);
|
|
65
|
+
}
|
|
66
|
+
const contenido = await fs.readFile(rutaAbsoluta);
|
|
67
|
+
const hashOriginal = crypto.createHash('sha256').update(contenido).digest('hex');
|
|
68
|
+
const marcaTiempo = new Date();
|
|
69
|
+
const timestampCadena = marcaTiempo.toISOString().replace(/[-:T.]/g, '').slice(0, 14);
|
|
70
|
+
const carpetaIncidente = path.join(this.directorioCheckpoints, idIncidente);
|
|
71
|
+
await fs.mkdir(carpetaIncidente, { recursive: true });
|
|
72
|
+
const nombreBase = path.basename(rutaAbsoluta);
|
|
73
|
+
const nombreRespaldo = `${nombreBase}.bak_${timestampCadena}`;
|
|
74
|
+
const rutaRespaldo = path.join(carpetaIncidente, nombreRespaldo);
|
|
75
|
+
await fs.writeFile(rutaRespaldo, contenido);
|
|
76
|
+
const metadatos = {
|
|
77
|
+
idIncidente,
|
|
78
|
+
rutaArchivoOriginal: rutaArchivoRelativa,
|
|
79
|
+
rutaRespaldo: path.relative(directorioRaiz, rutaRespaldo).replace(/\\/g, '/'),
|
|
80
|
+
hashSha256Original: hashOriginal,
|
|
81
|
+
marcaTiempoIso: marcaTiempo.toISOString(),
|
|
82
|
+
tamanoBytes: existe.size,
|
|
83
|
+
};
|
|
84
|
+
const rutaMetadatos = path.join(carpetaIncidente, `${nombreRespaldo}.meta.json`);
|
|
85
|
+
await fs.writeFile(rutaMetadatos, JSON.stringify(metadatos, null, 2), 'utf-8');
|
|
86
|
+
return metadatos;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Revierte un archivo a su estado original verificado por hash SHA-256
|
|
90
|
+
*/
|
|
91
|
+
async revertirArchivo(idIncidente, nombreArchivo, directorioRaiz) {
|
|
92
|
+
const carpetaIncidente = path.join(this.directorioCheckpoints, idIncidente);
|
|
93
|
+
const archivos = await fs.readdir(carpetaIncidente).catch(() => []);
|
|
94
|
+
const metaArchivos = archivos.filter((a) => a.startsWith(nombreArchivo) && a.endsWith('.meta.json'));
|
|
95
|
+
if (metaArchivos.length === 0) {
|
|
96
|
+
return {
|
|
97
|
+
exitoso: false,
|
|
98
|
+
mensaje: `No se encontraron puntos de control para '${nombreArchivo}' en el incidente '${idIncidente}'.`,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Tomar el más reciente
|
|
102
|
+
const ultimoMeta = metaArchivos.sort().reverse()[0];
|
|
103
|
+
if (!ultimoMeta) {
|
|
104
|
+
return { exitoso: false, mensaje: 'Error al resolver el metadato del respaldo.' };
|
|
105
|
+
}
|
|
106
|
+
const contenidoMeta = await fs.readFile(path.join(carpetaIncidente, ultimoMeta), 'utf-8');
|
|
107
|
+
const metadatos = JSON.parse(contenidoMeta);
|
|
108
|
+
const rutaAbsolutaOriginal = path.resolve(directorioRaiz, metadatos.rutaArchivoOriginal);
|
|
109
|
+
const rutaAbsolutaRespaldo = path.resolve(directorioRaiz, metadatos.rutaRespaldo);
|
|
110
|
+
const contenidoRespaldo = await fs.readFile(rutaAbsolutaRespaldo);
|
|
111
|
+
const hashVerificacion = crypto
|
|
112
|
+
.createHash('sha256')
|
|
113
|
+
.update(contenidoRespaldo)
|
|
114
|
+
.digest('hex');
|
|
115
|
+
if (hashVerificacion !== metadatos.hashSha256Original) {
|
|
116
|
+
return {
|
|
117
|
+
exitoso: false,
|
|
118
|
+
mensaje: `ALERTA DE CORRUPCIÓN: El hash del respaldo (${hashVerificacion}) no coincide con el original (${metadatos.hashSha256Original}). Reversión abortada.`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
await fs.writeFile(rutaAbsolutaOriginal, contenidoRespaldo);
|
|
122
|
+
return {
|
|
123
|
+
exitoso: true,
|
|
124
|
+
mensaje: `Reversión atómica exitosa para '${metadatos.rutaArchivoOriginal}'. SHA-256 verificado: ${hashVerificacion.slice(0, 12)}...`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.GestorPuntoControl = GestorPuntoControl;
|
|
129
|
+
//# sourceMappingURL=punto-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"punto-control.js","sourceRoot":"","sources":["../../src/core/punto-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ResultadoAuditoria } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* RepositorioSqliteAudit
|
|
4
|
+
* Motor de persistencia y trazabilidad forense ultrarrápido con SQLite nativo.
|
|
5
|
+
* Evita la sobrecarga de leer y parsear JSON gigantescos. Permite consultas SQL
|
|
6
|
+
* indexadas por ID de incidente, compuerta o estado en microsegundos.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RepositorioSqliteAudit {
|
|
9
|
+
private db;
|
|
10
|
+
constructor(directorioRaiz: string);
|
|
11
|
+
private inicializarEsquema;
|
|
12
|
+
guardarAuditoria(resultado: ResultadoAuditoria, tiempoTotalMs: number): void;
|
|
13
|
+
obtenerAuditoria(idIncidente: string): any;
|
|
14
|
+
consultarFallosRecientes(limite?: number): any[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=repositorio-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositorio-sqlite.d.ts","sourceRoot":"","sources":["../../src/core/repositorio-sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,EAAE,CAAe;gBAEb,cAAc,EAAE,MAAM;IAYlC,OAAO,CAAC,kBAAkB;IA2BnB,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAgC5E,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG;IAoB1C,wBAAwB,CAAC,MAAM,SAAK,GAAG,GAAG,EAAE;CAWpD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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.RepositorioSqliteAudit = void 0;
|
|
37
|
+
const node_sqlite_1 = require("node:sqlite");
|
|
38
|
+
const path = __importStar(require("node:path"));
|
|
39
|
+
/**
|
|
40
|
+
* RepositorioSqliteAudit
|
|
41
|
+
* Motor de persistencia y trazabilidad forense ultrarrápido con SQLite nativo.
|
|
42
|
+
* Evita la sobrecarga de leer y parsear JSON gigantescos. Permite consultas SQL
|
|
43
|
+
* indexadas por ID de incidente, compuerta o estado en microsegundos.
|
|
44
|
+
*/
|
|
45
|
+
class RepositorioSqliteAudit {
|
|
46
|
+
db;
|
|
47
|
+
constructor(directorioRaiz) {
|
|
48
|
+
const carpetaAumic = path.join(directorioRaiz, '.aumic');
|
|
49
|
+
// Asegurar directorio .aumic sincrónicamente o vía path
|
|
50
|
+
try {
|
|
51
|
+
require('node:fs').mkdirSync(carpetaAumic, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
const rutaDb = path.join(carpetaAumic, 'puf_audit.sqlite');
|
|
55
|
+
this.db = new node_sqlite_1.DatabaseSync(rutaDb);
|
|
56
|
+
this.inicializarEsquema();
|
|
57
|
+
}
|
|
58
|
+
inicializarEsquema() {
|
|
59
|
+
this.db.exec(`
|
|
60
|
+
CREATE TABLE IF NOT EXISTS auditorias (
|
|
61
|
+
id TEXT PRIMARY KEY,
|
|
62
|
+
fecha_registro TEXT NOT NULL,
|
|
63
|
+
ecosistema TEXT NOT NULL,
|
|
64
|
+
todas_aprobadas INTEGER NOT NULL,
|
|
65
|
+
tiempo_total_ms INTEGER DEFAULT 0
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
CREATE TABLE IF NOT EXISTS compuertas_log (
|
|
69
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
70
|
+
id_auditoria TEXT NOT NULL,
|
|
71
|
+
compuerta_id TEXT NOT NULL,
|
|
72
|
+
nombre TEXT NOT NULL,
|
|
73
|
+
estado TEXT NOT NULL,
|
|
74
|
+
detalle TEXT,
|
|
75
|
+
evidencia TEXT,
|
|
76
|
+
tiempo_ejecucion_ms INTEGER,
|
|
77
|
+
FOREIGN KEY (id_auditoria) REFERENCES auditorias(id) ON DELETE CASCADE
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_compuertas_auditoria ON compuertas_log(id_auditoria);
|
|
81
|
+
CREATE INDEX IF NOT EXISTS idx_compuertas_estado ON compuertas_log(compuerta_id, estado);
|
|
82
|
+
`);
|
|
83
|
+
}
|
|
84
|
+
guardarAuditoria(resultado, tiempoTotalMs) {
|
|
85
|
+
const stmtAudit = this.db.prepare(`
|
|
86
|
+
INSERT OR REPLACE INTO auditorias (id, fecha_registro, ecosistema, todas_aprobadas, tiempo_total_ms)
|
|
87
|
+
VALUES (?, ?, ?, ?, ?)
|
|
88
|
+
`);
|
|
89
|
+
stmtAudit.run(resultado.idIncidente, resultado.fechaRegistro, resultado.lenguajeDetectado, resultado.todasAprobadas ? 1 : 0, tiempoTotalMs);
|
|
90
|
+
const stmtLog = this.db.prepare(`
|
|
91
|
+
INSERT INTO compuertas_log (id_auditoria, compuerta_id, nombre, estado, detalle, evidencia, tiempo_ejecucion_ms)
|
|
92
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
93
|
+
`);
|
|
94
|
+
for (const c of resultado.compuertas) {
|
|
95
|
+
stmtLog.run(resultado.idIncidente, c.id, c.nombre, c.estado, c.detalle, c.evidencia, c.tiempoEjecucionMs);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
obtenerAuditoria(idIncidente) {
|
|
99
|
+
const stmt = this.db.prepare(`
|
|
100
|
+
SELECT * FROM auditorias WHERE id = ?
|
|
101
|
+
`);
|
|
102
|
+
const auditoria = stmt.get(idIncidente);
|
|
103
|
+
if (!auditoria)
|
|
104
|
+
return null;
|
|
105
|
+
const stmtLogs = this.db.prepare(`
|
|
106
|
+
SELECT compuerta_id as id, nombre, estado, detalle, evidencia, tiempo_ejecucion_ms as tiempoEjecucionMs
|
|
107
|
+
FROM compuertas_log WHERE id_auditoria = ? ORDER BY id ASC
|
|
108
|
+
`);
|
|
109
|
+
const compuertas = stmtLogs.all(idIncidente);
|
|
110
|
+
return {
|
|
111
|
+
...auditoria,
|
|
112
|
+
todasAprobadas: Boolean(auditoria.todas_aprobadas),
|
|
113
|
+
compuertas,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
consultarFallosRecientes(limite = 10) {
|
|
117
|
+
const stmt = this.db.prepare(`
|
|
118
|
+
SELECT c.compuerta_id, c.nombre, c.detalle, c.evidencia, a.fecha_registro, a.id as id_incidente
|
|
119
|
+
FROM compuertas_log c
|
|
120
|
+
JOIN auditorias a ON a.id = c.id_auditoria
|
|
121
|
+
WHERE c.estado = 'rechazada'
|
|
122
|
+
ORDER BY c.id DESC
|
|
123
|
+
LIMIT ?
|
|
124
|
+
`);
|
|
125
|
+
return stmt.all(limite);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.RepositorioSqliteAudit = RepositorioSqliteAudit;
|
|
129
|
+
//# sourceMappingURL=repositorio-sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositorio-sqlite.js","sourceRoot":"","sources":["../../src/core/repositorio-sqlite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,gDAAkC;AAGlC;;;;;GAKG;AACH,MAAa,sBAAsB;IACzB,EAAE,CAAe;IAEzB,YAAY,cAAsB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACzD,wDAAwD;QACxD,IAAI,CAAC;YACH,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,0BAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;KAuBZ,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,SAA6B,EAAE,aAAqB;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGjC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,CACX,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,aAAa,EACvB,SAAS,CAAC,iBAAiB,EAC3B,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,aAAa,CACd,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG/B,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,SAAS,CAAC,WAAW,EACrB,CAAC,CAAC,EAAE,EACJ,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,OAAO,EACT,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,iBAAiB,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGhC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE7C,OAAO;YACL,GAAG,SAAS;YACZ,cAAc,EAAE,OAAO,CAAE,SAAiB,CAAC,eAAe,CAAC;YAC3D,UAAU;SACX,CAAC;IACJ,CAAC;IAEM,wBAAwB,CAAC,MAAM,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAO5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF;AAzGD,wDAyGC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file types.ts
|
|
3
|
+
* @description Definiciones de tipos estrictos en español para el Protocolo Universal contra Fallos (PUF-15).
|
|
4
|
+
* Estándar AUM-IC 7:2026.
|
|
5
|
+
*/
|
|
6
|
+
export type IdentificadorCompuerta = 'G0' | 'G1' | 'G2' | 'G3' | 'G4' | 'G5' | 'G6' | 'G7' | 'G8' | 'G9' | 'G10' | 'G11' | 'G12' | 'G13' | 'G14' | 'G15' | 'G16' | 'G17' | 'G18' | 'G19' | 'G20' | 'G21' | 'G22';
|
|
7
|
+
export declare const COMPUERTAS_REGISTRADAS: readonly ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "G13", "G14", "G15", "G16", "G17", "G18", "G19", "G20", "G21", "G22"];
|
|
8
|
+
export declare const TOTAL_COMPUERTAS_PUF: 23;
|
|
9
|
+
export type EstadoCompuerta = 'pendiente' | 'aprobada' | 'rechazada' | 'omitida';
|
|
10
|
+
export type EcosistemaLenguaje = 'php' | 'python' | 'astro' | 'rust' | 'typescript' | 'nextjs' | 'java' | 'csharp' | 'cpp' | 'flutter' | 'swift' | 'shell' | 'desconocido';
|
|
11
|
+
export interface CasoDeBorde {
|
|
12
|
+
readonly descripcion: string;
|
|
13
|
+
readonly valorEntrada: string;
|
|
14
|
+
readonly resultadoEsperado: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RegistroCompuerta {
|
|
17
|
+
readonly id: IdentificadorCompuerta;
|
|
18
|
+
readonly nombre: string;
|
|
19
|
+
readonly estado: EstadoCompuerta;
|
|
20
|
+
readonly detalle: string;
|
|
21
|
+
readonly evidencia: string;
|
|
22
|
+
readonly tiempoEjecucionMs: number;
|
|
23
|
+
}
|
|
24
|
+
export interface MetadatosPuntoControl {
|
|
25
|
+
readonly idIncidente: string;
|
|
26
|
+
readonly rutaArchivoOriginal: string;
|
|
27
|
+
readonly rutaRespaldo: string;
|
|
28
|
+
readonly hashSha256Original: string;
|
|
29
|
+
readonly marcaTiempoIso: string;
|
|
30
|
+
readonly tamanoBytes: number;
|
|
31
|
+
}
|
|
32
|
+
export interface OpcionesInicializacion {
|
|
33
|
+
readonly idIncidente: string;
|
|
34
|
+
readonly descripcionFallo: string;
|
|
35
|
+
readonly archivosAfectados: readonly string[];
|
|
36
|
+
readonly lenguaje?: EcosistemaLenguaje;
|
|
37
|
+
}
|
|
38
|
+
export interface ResultadoAuditoria {
|
|
39
|
+
readonly idIncidente: string;
|
|
40
|
+
readonly fechaRegistro: string;
|
|
41
|
+
readonly lenguajeDetectado: EcosistemaLenguaje;
|
|
42
|
+
readonly todasAprobadas: boolean;
|
|
43
|
+
readonly compuertas: readonly RegistroCompuerta[];
|
|
44
|
+
readonly reporteMarkdown: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ContextoDeteccion {
|
|
47
|
+
readonly directorioRaiz: string;
|
|
48
|
+
readonly archivosAfectados?: readonly string[];
|
|
49
|
+
}
|
|
50
|
+
export interface AdaptadorLenguaje {
|
|
51
|
+
readonly ecosistema: EcosistemaLenguaje;
|
|
52
|
+
readonly nombreLegible: string;
|
|
53
|
+
calcularPuntaje(contexto: ContextoDeteccion): Promise<number>;
|
|
54
|
+
detectar(directorioRaiz: string): Promise<boolean>;
|
|
55
|
+
ejecutarLinterEstricto(directorioRaiz: string): Promise<{
|
|
56
|
+
exitoso: boolean;
|
|
57
|
+
mensaje: string;
|
|
58
|
+
}>;
|
|
59
|
+
generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
|
|
60
|
+
purgarEstado(directorioRaiz: string): Promise<{
|
|
61
|
+
exitoso: boolean;
|
|
62
|
+
mensaje: string;
|
|
63
|
+
}>;
|
|
64
|
+
/** G12: Detecta rutas rotas en HTML/JSX/Astro de los archivos afectados */
|
|
65
|
+
auditarRutasVivas(archivosAfectados: readonly string[], directorioRaiz: string): Promise<{
|
|
66
|
+
exitoso: boolean;
|
|
67
|
+
violaciones: readonly string[];
|
|
68
|
+
}>;
|
|
69
|
+
/** G13: Detecta acciones de UI inertes (botones/handlers sin conectar) */
|
|
70
|
+
auditarInteractividad(archivosAfectados: readonly string[], directorioRaiz: string): Promise<{
|
|
71
|
+
exitoso: boolean;
|
|
72
|
+
violaciones: readonly string[];
|
|
73
|
+
}>;
|
|
74
|
+
}
|
|
75
|
+
export type PerfilAuditoria = 'enterprise' | 'mvp' | 'dev' | 'security';
|
|
76
|
+
export declare const COMPUERTAS_POR_PERFIL: Record<PerfilAuditoria, readonly IdentificadorCompuerta[]>;
|
|
77
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file types.ts
|
|
4
|
+
* @description Definiciones de tipos estrictos en español para el Protocolo Universal contra Fallos (PUF-15).
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.COMPUERTAS_POR_PERFIL = exports.TOTAL_COMPUERTAS_PUF = exports.COMPUERTAS_REGISTRADAS = void 0;
|
|
9
|
+
exports.COMPUERTAS_REGISTRADAS = [
|
|
10
|
+
'G0',
|
|
11
|
+
'G1',
|
|
12
|
+
'G2',
|
|
13
|
+
'G3',
|
|
14
|
+
'G4',
|
|
15
|
+
'G5',
|
|
16
|
+
'G6',
|
|
17
|
+
'G7',
|
|
18
|
+
'G8',
|
|
19
|
+
'G9',
|
|
20
|
+
'G10',
|
|
21
|
+
'G11',
|
|
22
|
+
'G12',
|
|
23
|
+
'G13',
|
|
24
|
+
'G14',
|
|
25
|
+
'G15',
|
|
26
|
+
'G16',
|
|
27
|
+
'G17',
|
|
28
|
+
'G18',
|
|
29
|
+
'G19',
|
|
30
|
+
'G20',
|
|
31
|
+
'G21',
|
|
32
|
+
'G22',
|
|
33
|
+
];
|
|
34
|
+
exports.TOTAL_COMPUERTAS_PUF = exports.COMPUERTAS_REGISTRADAS.length;
|
|
35
|
+
exports.COMPUERTAS_POR_PERFIL = {
|
|
36
|
+
enterprise: exports.COMPUERTAS_REGISTRADAS,
|
|
37
|
+
mvp: ['G0', 'G4', 'G6', 'G8', 'G22'],
|
|
38
|
+
dev: ['G0', 'G4', 'G6', 'G8', 'G22'],
|
|
39
|
+
security: ['G0', 'G8', 'G9', 'G17', 'G19', 'G20']
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA2BU,QAAA,sBAAsB,GAAG;IACpC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACG,CAAC;AAEE,QAAA,oBAAoB,GAAG,8BAAsB,CAAC,MAAM,CAAC;AAiFrD,QAAA,qBAAqB,GAA+D;IAC/F,UAAU,EAAE,8BAAsB;IAClC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IACpC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;CAClD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file guardian-git.ts
|
|
3
|
+
* @description Guardian Forense Git Hook para pre-commit / pre-push.
|
|
4
|
+
* Intercepta y bloquea commits que violen la integridad de PUF-15.
|
|
5
|
+
* Estandar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
export declare class GuardianGitHook {
|
|
8
|
+
/**
|
|
9
|
+
* Instala los interceptores pre-commit en .git/hooks
|
|
10
|
+
*/
|
|
11
|
+
static instalar(directorioRaiz: string): Promise<{
|
|
12
|
+
exitoso: boolean;
|
|
13
|
+
mensaje: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Verifica los archivos en el staged area de git antes de permitir la confirmacion
|
|
17
|
+
*/
|
|
18
|
+
static verificarStaged(directorioRaiz: string): Promise<{
|
|
19
|
+
exitoso: boolean;
|
|
20
|
+
errores: readonly string[];
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=guardian-git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian-git.d.ts","sourceRoot":"","sources":["../../src/hooks/guardian-git.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,qBAAa,eAAe;IAC1B;;OAEG;WACiB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA+BpG;;OAEG;WACiB,eAAe,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CA6C7D"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file guardian-git.ts
|
|
4
|
+
* @description Guardian Forense Git Hook para pre-commit / pre-push.
|
|
5
|
+
* Intercepta y bloquea commits que violen la integridad de PUF-15.
|
|
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.GuardianGitHook = void 0;
|
|
43
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
44
|
+
const path = __importStar(require("node:path"));
|
|
45
|
+
const linter_inline_css_js_1 = require("../core/linter-inline-css.js");
|
|
46
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
47
|
+
class GuardianGitHook {
|
|
48
|
+
/**
|
|
49
|
+
* Instala los interceptores pre-commit en .git/hooks
|
|
50
|
+
*/
|
|
51
|
+
static async instalar(directorioRaiz) {
|
|
52
|
+
const carpetaHooks = path.join(directorioRaiz, '.git', 'hooks');
|
|
53
|
+
const existeGit = await fs.stat(carpetaHooks).catch(() => null);
|
|
54
|
+
if (!existeGit) {
|
|
55
|
+
return {
|
|
56
|
+
exitoso: false,
|
|
57
|
+
mensaje: 'No se detecto un repositorio Git valido en el directorio especificado.',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const scriptHook = [
|
|
61
|
+
'#!/usr/bin/env bash',
|
|
62
|
+
'# Interceptor Forense PUF-15 (AUM-IC 7:2026)',
|
|
63
|
+
'# Bloquea commits con estilos inline, falta de registro ADR, rutas rotas o handlers inertes',
|
|
64
|
+
'set -e',
|
|
65
|
+
'',
|
|
66
|
+
'echo "[PUF-15 GUARD]: Ejecutando verificacion de compuertas pre-commit..."',
|
|
67
|
+
'npx aumic-puf guard || puf guard',
|
|
68
|
+
'',
|
|
69
|
+
].join('\n');
|
|
70
|
+
const rutaPreCommit = path.join(carpetaHooks, 'pre-commit');
|
|
71
|
+
await fs.writeFile(rutaPreCommit, scriptHook, { mode: 0o755 });
|
|
72
|
+
return {
|
|
73
|
+
exitoso: true,
|
|
74
|
+
mensaje: 'Interceptor pre-commit de PUF-15 instalado con permisos de ejecucion (0755).',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Verifica los archivos en el staged area de git antes de permitir la confirmacion
|
|
79
|
+
*/
|
|
80
|
+
static async verificarStaged(directorioRaiz) {
|
|
81
|
+
const errores = [];
|
|
82
|
+
const resGit = await ejecutor_js_1.EjecutorComando.ejecutar('git diff --cached --name-only --diff-filter=ACM', directorioRaiz);
|
|
83
|
+
if (!resGit.exitoso || !resGit.salidaEstandar) {
|
|
84
|
+
return { exitoso: true, errores: [] };
|
|
85
|
+
}
|
|
86
|
+
const archivosStaged = resGit.salidaEstandar
|
|
87
|
+
.split('\n')
|
|
88
|
+
.map((s) => s.trim())
|
|
89
|
+
.filter(Boolean);
|
|
90
|
+
// G4: CSS inline
|
|
91
|
+
const violacionesCss = await linter_inline_css_js_1.LinterCssInline.auditar(archivosStaged, directorioRaiz);
|
|
92
|
+
if (violacionesCss.length > 0) {
|
|
93
|
+
errores.push(`[COMPUERTA G4 VIOLADA]: Se encontraron ${violacionesCss.length} atributos 'style="..."' inline en archivos staged:\n` +
|
|
94
|
+
violacionesCss
|
|
95
|
+
.map((v) => ` - ${v.rutaArchivo}:${v.numeroLinea} -> ${v.contenidoLinea}`)
|
|
96
|
+
.join('\n'));
|
|
97
|
+
}
|
|
98
|
+
// G7: BITACORA.md actualizado si hay cambios de logica
|
|
99
|
+
const tieneArchivosLogica = archivosStaged.some((a) => a.endsWith('.php') || a.endsWith('.py') || a.endsWith('.ts') || a.endsWith('.rs') || a.endsWith('.astro'));
|
|
100
|
+
const bitacoraModificada = archivosStaged.some((a) => a.includes('BITACORA.md'));
|
|
101
|
+
if (tieneArchivosLogica && !bitacoraModificada) {
|
|
102
|
+
errores.push(`[COMPUERTA G7 VIOLADA]: Modificaste archivos de logica pero no incluiste la actualizacion de 'BITACORA.md' en este commit.`);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
exitoso: errores.length === 0,
|
|
106
|
+
errores,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.GuardianGitHook = GuardianGitHook;
|
|
111
|
+
//# sourceMappingURL=guardian-git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian-git.js","sourceRoot":"","sources":["../../src/hooks/guardian-git.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file index.ts
|
|
3
|
+
* @description Exportacion principal del paquete `aumic-puf`.
|
|
4
|
+
* Estandar AUM-IC 7:2026.
|
|
5
|
+
*/
|
|
6
|
+
export * from './core/types.js';
|
|
7
|
+
export * from './core/orquestador.js';
|
|
8
|
+
export * from './core/punto-control.js';
|
|
9
|
+
export * from './core/certificado.js';
|
|
10
|
+
export * from './core/linter-inline-css.js';
|
|
11
|
+
export * from './adapters/selector.js';
|
|
12
|
+
export * from './hooks/guardian-git.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file index.ts
|
|
4
|
+
* @description Exportacion principal del paquete `aumic-puf`.
|
|
5
|
+
* Estandar 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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./core/types.js"), exports);
|
|
23
|
+
__exportStar(require("./core/orquestador.js"), exports);
|
|
24
|
+
__exportStar(require("./core/punto-control.js"), exports);
|
|
25
|
+
__exportStar(require("./core/certificado.js"), exports);
|
|
26
|
+
__exportStar(require("./core/linter-inline-css.js"), exports);
|
|
27
|
+
__exportStar(require("./adapters/selector.js"), exports);
|
|
28
|
+
__exportStar(require("./hooks/guardian-git.js"), exports);
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,wDAAsC;AACtC,0DAAwC;AACxC,wDAAsC;AACtC,8DAA4C;AAC5C,yDAAuC;AACvC,0DAAwC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file ejecutor.ts
|
|
3
|
+
* @description Motor de ejecución segura de comandos de terminal POSIX con límites estrictos.
|
|
4
|
+
* Estándar AUM-IC 7:2026.
|
|
5
|
+
*/
|
|
6
|
+
export interface ResultadoComando {
|
|
7
|
+
readonly exitoso: boolean;
|
|
8
|
+
readonly codigoSalida: number;
|
|
9
|
+
readonly salidaEstandar: string;
|
|
10
|
+
readonly salidaError: string;
|
|
11
|
+
readonly duracionMs: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class EjecutorComando {
|
|
14
|
+
/**
|
|
15
|
+
* Ejecuta un comando en shell con captura de salida y temporizador
|
|
16
|
+
*/
|
|
17
|
+
static ejecutar(comando: string, directorioTrabajo: string, tiempoLimiteMs?: number): Promise<ResultadoComando>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ejecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ejecutor.d.ts","sourceRoot":"","sources":["../../src/utils/ejecutor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,eAAe;IAC1B;;OAEG;WACiB,QAAQ,CAC1B,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EACzB,cAAc,GAAE,MAAc,GAC7B,OAAO,CAAC,gBAAgB,CAAC;CA0B7B"}
|