feat(cybersecurity): auto-commit con 48 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-04 23:44:39 +02:00
parent efc9911925
commit 729921e16e
48 changed files with 3765 additions and 8 deletions
+55
View File
@@ -0,0 +1,55 @@
---
name: strip_ansi
kind: function
lang: go
domain: core
version: "1.0.0"
purity: pure
signature: "func StripANSI(s string) string"
description: "Elimina secuencias de escape ANSI/VT100 de un string y filtra caracteres de control no imprimibles, preservando \\n, \\t y \\r."
tags: ["terminal", "ansi", "string", "sanitize", "terminal-capture"]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["regexp", "strings"]
params:
- name: s
desc: "String que puede contener secuencias de escape de terminal (CSI, OSC, escapes simples) y/o caracteres de control."
output: "String limpio: sin secuencias ANSI ni caracteres de control, preservando saltos de línea (\\n), tabulaciones (\\t) y retornos de carro (\\r)."
tested: true
tests:
- "golden: color SGR codes"
- "edge OSC titulo de ventana"
- "edge movimientos de cursor"
- "edge string sin escapes preserva saltos de linea"
- "edge string vacio"
- "edge preserva tabs"
test_file_path: "functions/core/strip_ansi_test.go"
file_path: "functions/core/strip_ansi.go"
---
## Ejemplo
```go
// Limpiar output de terminal con color rojo
raw := "\x1b[31mError:\x1b[0m archivo no encontrado"
clean := core.StripANSI(raw)
// clean == "Error: archivo no encontrado"
// Limpiar título de ventana OSC
raw2 := "\x1b]0;mi titulo\x07contenido real"
clean2 := core.StripANSI(raw2)
// clean2 == "contenido real"
```
## Cuando usarla
Cuando captures output de un PTY/TUI/subprocess y necesites texto plano: antes de indexar logs con ANSI en un buscador, antes de difar output de terminal, o cuando muestres salida de comando en un contexto sin soporte de escape (UI web, archivo, base de datos).
## Gotchas
- Preserva `\n`, `\t` y `\r` a propósito: el output de terminales suele tener CRLF y tabulaciones con semántica propia.
- Cubre CSI, OSC y escapes simples de dos caracteres. Secuencias DCS o PM (rarísimas) no se eliminan; si las necesitas, añade una regex adicional antes de llamar a esta función.
- Las regexes están precompiladas a nivel de paquete: no hay coste de compilación por llamada.