[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.

This commit is contained in:
Ricardo Monla
2026-03-19 09:52:29 -03:00
parent 183dbf6fb6
commit 5aa37e7221
138 changed files with 8777 additions and 464 deletions
+292 -174
View File
@@ -1,186 +1,304 @@
# frozen_string_literal: true
require_relative '../core/colores'
require_relative '../core/help_formatter'
class SubcomandoAyuda
def initialize(args, logger)
@args = args
@logger = logger
end
def ejecutar
if @args.empty?
mostrar_ayuda_principal
else
mostrar_ayuda_subcomando(@args[0])
module ADN
class SubcomandoAyuda
def initialize(args, logger)
@args = args
@logger = logger
end
end
private
def ejecutar
if @args.empty?
mostrar_ayuda_principal
else
mostrar_ayuda_subcomando(@args[0])
end
end
def mostrar_ayuda_principal
puts <<~AYUDA_PRINCIPAL
#{Color::CYAN}🔧 Herramienta ADN - Interfaz de línea de comandos unificada#{Color::RESET}
#{Color::DIM}Versión: Fase 1 (Núcleo Autónomo)#{Color::RESET}
private
#{Color::GREEN}Uso:#{Color::RESET} ./adn/tools/run <subcomando> [opciones] [argumentos]
def mostrar_ayuda_principal
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Herramienta ADN - Interfaz de línea de comandos unificada",
descripcion: "Versión: Fase 1 (Núcleo Autónomo)",
uso: "./adn/tools/run <subcomando> [opciones] [argumentos]",
opciones: [
{ names: ['validador [--watch] [--fix]'], desc: "Validar cumplimiento del ADN en bitácoras" },
{ names: ['contexto <nodo> [--cmd]'], desc: "Obtener contexto topológico de un nodo" },
{ names: ['nodos <acción> [opciones]'], desc: "Gestión de nodos (agrupar, listar, buscar)" },
{ names: ['jornada <acción> [modo] [hora] [opciones]'], desc: "Gestión de jornada (iniciar, cerrar, estado)" },
{ names: ['salud [--dashboard] [--json]'], desc: "Ver salud general del sistema ADN" },
{ names: ['generar bitacora [fecha]'], desc: "Generar nueva bitácora (fecha: YYYY-MM-DD)" },
{ names: ['generar nodo <nombre>'], desc: "Generar ficha de nodo" },
{ names: ['msp <subcomando>'], desc: "Gestión de MSPs NotebookLM (auditar, listar, registrar)" },
{ names: ['generar proyecto <código>'], desc: "Generar manifiesto de proyecto" },
{ names: ['tailscale <acción>'], desc: "Gestión de identidades Tailscale" },
{ names: ['backup <nodo> [--mode MODO]'], desc: "Ejecutar backup seguro de un nodo" },
{ names: ['db <subcomando>'], desc: "Operaciones de base de datos" },
{ names: ['triggers [opciones]'], desc: "Gestión del motor de triggers" },
{ names: ['plan [subcomando]'], desc: "Gestión de planes y progreso" },
{ names: ['proceso <nombre>'], desc: "Ejecutar procesos técnicos automatizados" },
{ names: ['estados'], desc: "Listar tareas en proceso (⏳)" },
{ names: ['conocimiento <subcomando>'], desc: "Gestión de Base de Conocimiento" },
{ names: ['ayuda [subcomando]'], desc: "Mostrar esta ayuda o ayuda específica" }
],
ejemplos: [
{ cmd: "./adn/tools/run ayuda jornada", desc: "Ver ayuda detallada del subcomando jornada" },
{ cmd: "./adn/tools/run ayuda nodos", desc: "Ver ayuda detallada del subcomando nodos" }
]
)
puts ayuda
puts ""
puts "#{Color::DIM}Subcomandos en desarrollo (Fases futuras):#{Color::RESET}"
puts " evolucion <propuesta.md> Gestionar propuesta de evolución del ADN"
puts " triggers [--test] [--force] Ejecutar triggers de sincronización"
puts ""
puts "#{Color::DIM}Para ayuda detallada de un subcomando:#{Color::RESET}"
puts " ./adn/tools/run ayuda <subcomando>"
puts ""
puts "#{Color::DIM}Documentación completa:#{Color::RESET} docs/plan/260307-1400_Plan_Mejoras_ADN.md"
end
#{Color::YELLOW}Subcomandos disponibles:#{Color::RESET}
validador [--watch] [--fix] Validar cumplimiento del ADN en bitácoras
contexto <nodo> [--cmd] Obtener contexto topológico de un nodo
nodos <acción> [opciones] Gestión de nodos (agrupar, listar, buscar)
jornada <acción> [modo] [hora] Gestión de jornada (iniciar, cerrar, estado)
salud [--dashboard] [--json] Ver salud general del sistema ADN
generar bitacora [fecha] Generar nueva bitácora (fecha: YYYY-MM-DD)
generar nodo <nombre> Generar ficha de nodo
msp <subcomando> Gestión de MSPs NotebookLM (auditar, listar, registrar)
#{Color::YELLOW}generar proyecto <código>#{Color::RESET} Generar manifiesto de proyecto
#{Color::YELLOW}tailscale <acción>#{Color::RESET} Gestión de identidades Tailscale
#{Color::YELLOW}backup <nodo> [--mode MODO]#{Color::RESET} Ejecutar backup seguro de un nodo
#{Color::YELLOW}db <subcomando>#{Color::RESET} Operaciones de base de datos
#{Color::YELLOW}triggers [opciones]#{Color::RESET} Gestión del motor de triggers
#{Color::YELLOW}plan [subcomando]#{Color::RESET} Gestión de planes y progreso
#{Color::YELLOW}proceso <nombre>#{Color::RESET} Ejecutar procesos técnicos automatizados
#{Color::YELLOW}estados#{Color::RESET} Listar tareas en proceso (⏳)
#{Color::YELLOW}ayuda [subcomando]#{Color::RESET} Mostrar esta ayuda o ayuda específica
#{Color::YELLOW}Subcomandos en desarrollo (Fases futuras):#{Color::RESET}
evolucion <propuesta.md> Gestionar propuesta de evolución del ADN
triggers [--test] [--force] Ejecutar triggers de sincronización
#{Color::DIM}Para ayuda detallada de un subcomando:#{Color::RESET}
./adn/tools/run ayuda <subcomando>
#{Color::DIM}Documentación completa:#{Color::RESET} docs/plan/260307-1400_Plan_Mejoras_ADN.md
AYUDA_PRINCIPAL
end
def mostrar_ayuda_subcomando(subcomando)
case subcomando.downcase
when 'validador'
puts "Uso: ./adn/tools/run validador [--watch] [--fix]"
puts ""
puts "Valida el cumplimiento del ADN en las bitácoras:"
puts " • Formato de tiempo (HH:MM, sin \"hs\")"
puts " • Iconografía de estados y semántica correcta"
puts " • Presencia de métricas híbridas ([Físico/Remoto:])"
puts " • Referencias bidireccionales en rollovers"
puts "Estructura de tablas en bitácoras"
puts ""
puts "Opciones:"
puts " --watch Monitorizar cambios en tiempo real (Fase 1 completa)"
puts " --fix Intentar corregir errores automáticamente"
puts ""
puts "Ejemplo:"
puts " ./adn/tools/run validador"
puts " ./adn/tools/run validador --fix"
when 'contexto'
puts "Uso: ./adn/tools/run contexto <nombre-nodo> [--cmd]"
puts ""
puts "Obtiene información contextual de un nodo:"
puts " • IP y configuración de red"
puts " • Rol en la topología"
puts " • Comandos SSH sugeridos"
puts ""
puts "Ejemplo:"
puts " ./adn/tools/run contexto srv-pmox1"
puts " ./adn/tools/run contexto srvv-fenix --cmd"
when 'nodos'
puts "Uso: ./adn/tools/run nodos <acción> [opciones]"
puts ""
puts "Gestión y consulta de nodos de infraestructura:"
puts " • agrupar [--servidor SRV] Agrupar VMs por servidor anfitrión"
puts " • listar [--tipo TIPO] Listar fichas de nodos (.md)"
puts " • buscar <término> Buscar nodos por nombre o contenido"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run nodos agrupar"
puts " ./adn/tools/run nodos agrupar --servidor srv-pmox1"
puts " ./adn/tools/run nodos listar --tipo srvv"
puts " ./adn/tools/run nodos buscar dasuten"
when 'jornada'
puts "Uso: ./adn/tools/run jornada <acción> [modo] [hora] [opciones]"
puts ""
puts "Gestión de jornada laboral:"
puts " iniciar [presencial|remoto] [HH:MM] Registrar inicio"
puts " • cerrar [presencial|remoto] [HH:MM] Registrar cierre"
puts " • estado Ver estado actual"
puts ""
puts "Opciones:"
puts " --nodo NOMBRE Nodo a registrar (default: dtic-DIIAA)"
puts " --fecha YYYY-MM-DD Fecha de la bitácora (default: hoy)"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run jornada iniciar presencial 08:00"
puts " ./adn/tools/run jornada cerrar remoto 23:00"
puts " ./adn/tools/run jornada estado"
when 'salud'
puts "Uso: ./adn/tools/run salud [--dashboard] [--json]"
puts ""
puts "Muestra métricas de salud del sistema ADN:"
puts " • Cantidad de hebras, bitácoras, nodos, proyectos"
puts " • Errores recientes en logs"
puts ""
puts "Ejemplo:"
puts " ./adn/tools/run salud"
puts " ./adn/tools/run salud --json"
when 'generar'
puts "Uso: ./adn/tools/run generar <tipo> [argumentos]"
puts ""
puts "Tipos disponibles:"
puts " bitacora [fecha] - Crea nueva bitácora (fecha: YYYY-MM-DD, default: hoy)"
puts " nodo <nombre> - Crea ficha de nodo"
puts " proyecto <código> - Crea manifiesto de proyecto"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run generar bitacora"
puts " ./adn/tools/run generar bitacora 2026-03-08"
puts " ./adn/tools/run generar nodo srv-nuevo"
puts " ./adn/tools/run generar proyecto P2604"
when 'proceso'
puts "Uso: ./adn/tools/run proceso <nombre_proceso> [argumentos]"
puts ""
puts "Ejecuta procesos técnicos automatizados sobre la infraestructura:"
puts " • nodos:actualizar_so <nodo> Actualiza paquetes y parches de seguridad"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run proceso nodos:actualizar_so srv-ns8"
puts " ./adn/tools/run proceso nodos:actualizar_so srv-dasu"
when 'estados'
puts "Uso: ./adn/tools/run estados"
puts ""
puts "Consulta la bitácora web para listar todos los items con estado ⏳ (En proceso)."
puts "Ideal para monitorear procesos automatizados o jornadas abiertas."
when 'tailscale', 'ts'
puts "Uso: ./adn/tools/run tailscale <acción> [perfil]"
puts ""
puts "Gestión de identidades y perfiles de Tailscale:"
puts " • switch <perfil> Alternar entre cuentas (dasuten, personal)"
puts " • status Ver estado y cuenta activa"
puts " • list Listar perfiles en caché local"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run tailscale switch dasuten"
puts " ./adn/tools/run tailscale status"
when 'msp'
puts "Uso: ./adn/tools/run msp <subcomando> [opciones]"
puts ""
puts "Gestión de MSPs (Markdown Style Papers) de NotebookLM:"
puts " • auditar Verificar estado de conexión MCP y NotebookLM"
puts " • listar Listar MSPs disponibles en el sistema"
puts " • registrar Registrar un MSP descargado"
puts ""
puts "Opciones:"
puts " --archivo RUTA Ruta al archivo MSP (para registrar)"
puts " --titulo TITULO Título del MSP (opcional)"
puts ""
puts "Ejemplos:"
puts " ./adn/tools/run msp auditar"
puts " ./adn/tools/run msp listar"
puts " ./adn/tools/run msp registrar --archivo docs/mcps/mi-msp.md"
else
puts "#{Color::RED}✗ Subcomando desconocido: #{subcomando}#{Color::RESET}"
puts "Usa './adn/tools/run ayuda' para ver la lista de subcomandos."
def mostrar_ayuda_subcomando(subcomando)
case subcomando.downcase
when 'validador'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Validador de ADN",
descripcion: "Valida el cumplimiento del ADN en las bitácoras",
uso: "./adn/tools/run validador [--watch] [--fix]",
opciones: [
{ names: ['--watch'], desc: "Monitorizar cambios en tiempo real (Fase 1 completa)" },
{ names: ['--fix'], desc: "Intentar corregir errores automáticamente" }
],
ejemplos: [
{ cmd: "./adn/tools/run validador", desc: "Ejecutar validador estándar" },
{ cmd: "./adn/tools/run validador --fix", desc: "Ejecutar validador con corrección automática" }
]
)
puts ayuda
puts ""
puts "El validador verifica:"
puts " • Formato de tiempo (HH:MM, sin \"hs\")"
puts " • Iconografía de estados y semántica correcta"
puts " • Presencia de métricas híbridas ([Físico/Remoto:])"
puts " • Referencias bidireccionales en rollovers"
puts " • Estructura de tablas en bitácoras"
when 'contexto'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Contexto de Nodo",
descripcion: "Obtiene información contextual de un nodo",
uso: "./adn/tools/run contexto <nombre-nodo> [--cmd]",
ejemplos: [
{ cmd: "./adn/tools/run contexto srv-pmox1", desc: "Obtener contexto del nodo srv-pmox1" },
{ cmd: "./adn/tools/run contexto srvv-fenix --cmd", desc: "Obtener contexto con comandos SSH sugeridos" }
]
)
puts ayuda
puts ""
puts "Información que proporciona:"
puts "IP y configuración de red"
puts " • Rol en la topología"
puts " • Comandos SSH sugeridos"
when 'nodos'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de Nodos",
descripcion: "Gestión y consulta de nodos de infraestructura",
uso: "./adn/tools/run nodos <acción> [opciones]",
opciones: [
{ names: ['agrupar [--servidor SRV]'], desc: "Agrupar VMs por servidor anfitrión" },
{ names: ['listar [--tipo TIPO]'], desc: "Listar fichas de nodos (.md)" },
{ names: ['buscar <término>'], desc: "Buscar nodos por nombre o contenido" }
],
ejemplos: [
{ cmd: "./adn/tools/run nodos agrupar", desc: "Agrupar todos los VMs por servidor" },
{ cmd: "./adn/tools/run nodos agrupar --servidor srv-pmox1", desc: "Agrupar VMs del servidor srv-pmox1" },
{ cmd: "./adn/tools/run nodos listar --tipo srvv", desc: "Listar nodos de tipo srvv" },
{ cmd: "./adn/tools/run nodos buscar dasuten", desc: "Buscar nodos relacionados con dasuten" }
]
)
puts ayuda
when 'jornada'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de Jornada Laboral",
descripcion: "Registro y control de jornada laboral",
uso: "./adn/tools/run jornada <acción> [modo] [hora] [opciones]",
opciones: [
{ names: ['iniciar [presencial|remoto] [HH:MM]'], desc: "Registrar inicio de jornada" },
{ names: ['cerrar [presencial|remoto] [HH:MM]'], desc: "Registrar cierre de jornada" },
{ names: ['estado'], desc: "Ver estado de la jornada actual" },
{ names: ['--nodo NOMBRE'], desc: "Nodo a registrar (default: dtic-DIIAA)" },
{ names: ['--fecha YYYY-MM-DD'], desc: "Fecha de la bitácora (default: hoy)" }
],
ejemplos: [
{ cmd: "./adn/tools/run jornada iniciar presencial 08:00", desc: "Iniciar jornada presencial a las 08:00" },
{ cmd: "./adn/tools/run jornada cerrar remoto 23:00", desc: "Cerrar jornada remota a las 23:00" },
{ cmd: "./adn/tools/run jornada estado", desc: "Ver estado actual de la jornada" }
]
)
puts ayuda
when 'salud'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Salud del Sistema ADN",
descripcion: "Muestra métricas de salud del sistema ADN",
uso: "./adn/tools/run salud [--dashboard] [--json]",
opciones: [
{ names: ['--dashboard'], desc: "Mostrar dashboard de salud (por implementar)" },
{ names: ['--json'], desc: "Salida en formato JSON" }
],
ejemplos: [
{ cmd: "./adn/tools/run salud", desc: "Mostrar reporte de salud estándar" },
{ cmd: "./adn/tools/run salud --json", desc: "Mostrar reporte de salud en formato JSON" }
]
)
puts ayuda
puts ""
puts "Métricas mostradas:"
puts " • Cantidad de hebras, bitácoras, nodos, proyectos"
puts " • Errores recientes en logs"
when 'generar'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Generador de Componentes ADN",
descripcion: "Genera nuevos componentes en el ecosistema ADN",
uso: "./adn/tools/run generar <tipo> [argumentos]",
opciones: [
{ names: ['bitacora [fecha]'], desc: "Crea nueva bitácora (fecha: YYYY-MM-DD, default: hoy)" },
{ names: ['nodo <nombre>'], desc: "Crea ficha de nodo" },
{ names: ['proyecto <código>'], desc: "Crea manifiesto de proyecto" }
],
ejemplos: [
{ cmd: "./adn/tools/run generar bitacora", desc: "Crear bitácora para hoy" },
{ cmd: "./adn/tools/run generar bitacora 2026-03-08", desc: "Crear bitácora para el 8 de marzo de 2026" },
{ cmd: "./adn/tools/run generar nodo srv-nuevo", desc: "Crear ficha para el nodo srv-nuevo" },
{ cmd: "./adn/tools/run generar proyecto P2604", desc: "Crear manifiesto para el proyecto P2604" }
]
)
puts ayuda
when 'proceso'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Procesos Automatizados ADN",
descripcion: "Ejecuta procesos técnicos automatizados sobre la infraestructura",
uso: "./adn/tools/run proceso <nombre_proceso> [argumentos]",
opciones: [
{ names: ['nodos:actualizar_so <nodo>'], desc: "Actualiza paquetes y parches de seguridad" }
],
ejemplos: [
{ cmd: "./adn/tools/run proceso nodos:actualizar_so srv-ns8", desc: "Actualizar SO en el nodo srv-ns8" },
{ cmd: "./adn/tools/run proceso nodos:actualizar_so srv-dasu", desc: "Actualizar SO en el nodo srv-dasu" }
]
)
puts ayuda
when 'triggers'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de Triggers ADN",
descripcion: "Gestiona el sistema de triggers para sincronización automática del ADN",
uso: "./adn/tools/run triggers [OPCIONES]",
opciones: [
{ names: ['--test [TRIGGER_ID]'], desc: "Probar un trigger específico (modo simulación)" },
{ names: ['--forzar'], desc: "Ejecutar triggers incluso si sistema deshabilitado" },
{ names: ['--listar'], desc: "Listar todos los triggers configurados" },
{ names: ['--registrar'], desc: "Registrar triggers en el bus de eventos" },
{ names: ['--limpiar'], desc: "Limpiar todos los triggers registrados" },
{ names: ['-h', '--help'], desc: "Mostrar esta ayuda" }
],
ejemplos: [
{ cmd: "./adn/tools/run triggers --listar", desc: "Listar todos los triggers configurados" },
{ cmd: "./adn/tools/run triggers --registrar", desc: "Registrar triggers en el bus de eventos" },
{ cmd: "./adn/tools/run triggers --test bitacoras_0", desc: "Probar trigger bitacoras_0 (modo simulación)" },
{ cmd: "./adn/tools/run triggers --forzar", desc: "Forzar ejecución de triggers" },
{ cmd: "./adn/tools/run triggers --limpiar", desc: "Limpiar todos los triggers registrados" }
]
)
puts ayuda
when 'estados'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Listado de Tareas en Proceso",
descripcion: "Consulta la bitácora web para listar todos los items con estado ⏳ (En proceso)",
uso: "./adn/tools/run estados",
descripcion_adicional: "Ideal para monitorear procesos automatizados o jornadas abiertas."
)
puts ayuda
when 'tailscale', 'ts'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de Identidades Tailscale",
descripcion: "Gestión de identidades y perfiles de Tailscale",
uso: "./adn/tools/run tailscale <acción> [perfil]",
opciones: [
{ names: ['switch <perfil>'], desc: "Alternar entre cuentas (dasuten, personal)" },
{ names: ['status'], desc: "Ver estado y cuenta activa" },
{ names: ['list'], desc: "Listar perfiles en caché local" }
],
ejemplos: [
{ cmd: "./adn/tools/run tailscale switch dasuten", desc: "Cambiar a la cuenta dasuten" },
{ cmd: "./adn/tools/run tailscale status", desc: "Ver estado actual de Tailscale" }
]
)
puts ayuda
puts ""
puts "Perfiles disponibles:"
puts " • dasuten: Ecosistema DASUTEN (pcdasu0@frlr.utn.edu.ar)"
puts " • personal: Otros ecosistemas (rmonla@gmail.com)"
when 'msp'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de MSPs - NotebookLM",
descripcion: "Herramientas para auditar, registrar y listar MSPs (Markdown Style Papers)",
uso: "./adn/tools/run msp <subcomando> [opciones]",
opciones: [
{ names: ['auditar'], desc: "Verificar estado de conexión MCP y NotebookLM" },
{ names: ['registrar'], desc: "Registrar un MSP descargado en la base de conocimiento", default: "--archivo <ruta>" },
{ names: ['listar'], desc: "Listar MSPs disponibles en el sistema" }
],
ejemplos: [
{ cmd: "./adn/tools/run msp auditar", desc: "Verificar estado de MCP y NotebookLM" },
{ cmd: "./adn/tools/run msp listar", desc: "Listar MSPs disponibles" },
{ cmd: "./adn/tools/run msp registrar --archivo /ruta/msp.md", desc: "Registrar un MSP" }
]
)
puts ayuda
when 'conocimiento'
ayuda = ADN::HelpFormatter.generar_help(
titulo: "Gestión de Base de Conocimiento",
descripcion: "Permite inyectar, organizar e indexar nueva documentación en el motor autónomo.",
uso: "./adn/tools/run conocimiento <subcomando> [opciones]",
opciones: [
{ names: ['asimilar <archivo.md>'], desc: "Ingiere un documento Markdown a la base cognitiva del ADN." }
],
ejemplos: [
{ cmd: "./adn/tools/run conocimiento asimilar docs/configuracion_bd.md", desc: "Asimilar documentación de configuración de BD" }
]
)
puts ayuda
else
puts "#{Color::RED}✗ Subcomando desconocido: #{subcomando}#{Color::RESET}"
puts "Usa './adn/tools/run ayuda' para ver la lista de subcomandos."
end
end
end
end