# frozen_string_literal: true require_relative '../core/colores' require_relative '../core/help_formatter' module ADN 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]) end end private 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 [opciones] [argumentos]", opciones: [ { names: ['validador [--watch] [--fix]'], desc: "Validar cumplimiento del ADN en bitácoras" }, { names: ['contexto [--cmd]'], desc: "Obtener contexto topológico de un nodo" }, { names: ['nodos [opciones]'], desc: "Gestión de nodos (agrupar, listar, buscar)" }, { names: ['jornada [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 '], desc: "Generar ficha de nodo" }, { names: ['msp '], desc: "Gestión de MSPs NotebookLM (auditar, listar, registrar)" }, { names: ['generar proyecto '], desc: "Generar manifiesto de proyecto" }, { names: ['tailscale '], desc: "Gestión de identidades Tailscale" }, { names: ['backup [--mode MODO]'], desc: "Ejecutar backup seguro de un nodo" }, { names: ['db '], 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 '], desc: "Ejecutar procesos técnicos automatizados" }, { names: ['estados'], desc: "Listar tareas en proceso (⏳)" }, { names: ['conocimiento '], 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 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 " puts "" puts "#{Color::DIM}Documentación completa:#{Color::RESET} docs/plan/260307-1400_Plan_Mejoras_ADN.md" end 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 [--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 [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 '], 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 [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 [argumentos]", opciones: [ { names: ['bitacora [fecha]'], desc: "Crea nueva bitácora (fecha: YYYY-MM-DD, default: hoy)" }, { names: ['nodo '], desc: "Crea ficha de nodo" }, { names: ['proyecto '], 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 [argumentos]", opciones: [ { names: ['nodos:actualizar_so '], 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 [perfil]", opciones: [ { names: ['switch '], 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 [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 " }, { 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 [opciones]", opciones: [ { names: ['asimilar '], 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