diff --git a/adn/README.md b/adn/README.md index c540db55..eb0f103e 100644 --- a/adn/README.md +++ b/adn/README.md @@ -139,9 +139,10 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir. | `jornada cerrar [modo] [HH:MM]` | Registrar cierre de jornada laboral en DB | DB-First | | `jornada estado` | Ver estado de la jornada actual desde DB | DB-First | | `contexto [--cmd]` | Obtener contexto topológico y SSH de un nodo | Consulta DB | -| `nodos agrupar [--servidor SRV]` | Agrupar VMs por servidor anfitrión | Consulta DB | -| `nodos listar [--tipo TIPO]` | Listar nodos desde base de datos | DB-First | -| `nodos buscar ` | Buscar nodos en base de datos | DB-First | +| `nodos info ` | Mostrar metadata completa de un nodo (IP, SSH, auth) | Consulta Fichas | +| `nodos agrupar [--servidor SRV]` | Agrupar VMs por servidor anfitrión | Consulta Fichas | +| `nodos listar [--tipo TIPO]` | Listar nodos desde fichas | Consulta Fichas | +| `nodos buscar ` | Buscar nodos por nombre o contenido | Consulta Fichas | | `salud [--dashboard] [--json]` | Ver salud general del sistema ADN | Incluye DB | | `backup [--mode MODO]` | Ejecutar backup seguro de un nodo | Registra en DB | | `triggers [--listar/--registrar]` | Gestión del motor de triggers | Sincroniza DB | @@ -153,7 +154,8 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir. | `generar proyecto ` | Generar manifiesto de proyecto en DB | DB-First | | `conocimiento asimilar ` | Asimilar documentación al ADN | Almacena en DB | | `msp ` | Gestión de MSPs NotebookLM (auditar, registrar, listar) | Integración MCP | -| `ssh ` | Ejecución remota segura via SSH + Candados | Registra en DB | +| `ssh ` | Ejecución remota segura via SSH + Candados (lee fichas) | Via NodosInfo | +| `ssh --listar` | Listar nodos con SSH configurado | Consulta Fichas | | `ayuda [subcomando]` | Mostrar ayuda detallada | - | | `validador [--watch] [--fix]` | ⚠️ **OBSOLETO** - Validación MD-First antigua | MD-First (evitar) | @@ -232,7 +234,7 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir. 2. **Usar subcomandos `db`**: Para cualquier operación CRUD, usar `./adn/tools/run db `. 3. **Auto-Registro en DB**: Toda acción autónoma de la IA DEBE registrarse como entrada en la bitácora del día usando `db evento:crear`. 4. **Ruby como lenguaje de desarrollo**: Todos los componentes nuevos deben escribirse en Ruby, siguiendo principios "Menos es Más" (atómicos, reutilizables). -5. **Reutilizar módulos core**: Antes de crear nueva lógica, verificar si existe módulo en `core/` (ej: `NodosInfo`, `HelpFormatter`, `ErrorHandler`). Duplicar código está prohibido. +5. **Reutilizar submódulos CLI**: Antes de crear nueva lógica, verificar si existe submódulo en `cli//` (ej: `nodos/info.rb`, `ssh/ejecutor.rb`). Duplicar código está prohibido. Infraestructura genuina vive en `core/` (colores, constants, logger, error_handler). 6. **Validador obsoleto**: NO usar `validador` (orientado a MD-First). En su lugar, validar coherencia mediante consultas a la base de datos. 6. **Secretos en bóveda**: NUNCA exponer contraseñas en texto plano. Usar `candados` (`eval $(ruby adn/tools/seguridad/candados.rb load )`). 7. **Topología primero**: Antes de conectarte a un nodo, consultar `./adn/tools/run contexto ` para entender su ubicación en la red. @@ -247,33 +249,37 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir. ``` adn/tools/ ├── run ← Entry point CLI (ejecutable Ruby) -├── cli/ ← Subcomandos CLI (1 archivo por subcomando) +├── cli/ ← Subcomandos CLI (1 archivo + submódulos por comando) │ ├── ayuda.rb ← Documentación interna de la herramienta │ ├── backup.rb ← Backup seguro de nodos -│ ├── cierre.rb ← Cierre de jornada (DB-First) +│ │ └── backup/configurador.rb ← Carga de configuración YAML │ ├── conocimiento.rb ← Asimilación de documentación -│ ├── contexto.rb ← Contexto topológico de nodos (usa NodosInfo) +│ ├── contexto.rb ← Contexto topológico de nodos (usa nodos/info) │ ├── db.rb ← Dispatcher de subcomandos DB -│ ├── db/ ← Subcomandos específicos de DB (evento, bitacora, nodo, etc.) +│ │ └── db/ ← Subcomandos DB (evento, bitacora, nodo, etc.) +│ ├── estados.rb ← Tareas en proceso (⏳) desde DB │ ├── generar.rb ← Generación de bitácoras, nodos y proyectos -│ ├── inicio.rb ← Inicio de jornada (DB-First) +│ ├── jornada.rb ← Inicio/cierre de jornada (DB-First) │ ├── msp.rb ← Gestión de MSPs NotebookLM -│ ├── nodos.rb ← Agrupación de nodos por servidor (usa NodosInfo) +│ ├── nodos.rb ← Gestión de nodos (info, listar, agrupar, buscar) +│ │ └── nodos/info.rb ← Extracción de metadata de fichas .md │ ├── plan.rb ← Gestión de planes y progreso +│ ├── proceso.rb ← Procesos técnicos automatizados │ ├── salud.rb ← Métricas de salud del ADN +│ ├── ssh.rb ← Ejecución remota segura via SSH + Candados +│ │ └── ssh/ejecutor.rb ← Abstracción de ejecución remota +│ ├── tailscale.rb ← Gestión de Tailscale (nodos, status) │ ├── triggers.rb ← Gestión del motor de triggers -│ └── validador.rb ← Validación de cumplimiento ADN -├── core/ ← Módulos centrales reutilizables +│ │ ├── triggers/motor.rb ← Motor de triggers (reacción automática) +│ │ └── triggers/eventos.rb ← Bus de eventos (pub/sub desacoplado) +│ └── validador.rb ← ⚠️ OBSOLETO (MD-First) +├── core/ ← Infraestructura genuina (solo utilidades compartidas) │ ├── colores.rb ← Constantes de color para terminal │ ├── conciliador.rb ← Saneamiento preventivo de pendientes -│ ├── configurador.rb ← Carga de configuración YAML +│ ├── constants.rb ← Constantes globales (rutas, estados) │ ├── error_handler.rb ← Helper para mensajes de error estandarizados -│ ├── eventos.rb ← Bus de eventos (pub/sub desacoplado) -│ ├── help_formatter.rb ← Formateador de ayuda estandarizado -│ ├── logger.rb ← Logger estructurado (JSON) -│ ├── nodos_info.rb ← Utilidades para extracción de metadatos de fichas -│ ├── triggers.rb ← Motor de triggers (reacción automática) -│ └── validador.rb ← Validador de formato ADN +│ ├── help_formatter.rb ← Formateador de ayuda estandarizado +│ └── logger.rb ← Logger estructurado (JSON) ├── db/ ← Capa de acceso a datos (PostgreSQL) │ ├── core/ ← bitacora_db.rb (CRUD principal), buscadores │ ├── cli/ ← Scripts CLI para exportación masiva diff --git a/adn/tools/cli/salud.rb b/adn/tools/cli/salud.rb index 7fb138b2..0d4f954c 100644 --- a/adn/tools/cli/salud.rb +++ b/adn/tools/cli/salud.rb @@ -4,7 +4,8 @@ require 'optparse' require 'json' require_relative '../core/colores' -class SubcomandoSalud +module ADN + class SubcomandoSalud def initialize(args, logger) @args = args @logger = logger @@ -119,3 +120,4 @@ class SubcomandoSalud errores end end +end diff --git a/adn/tools/run b/adn/tools/run index 07be1d21..44dc6df4 100755 --- a/adn/tools/run +++ b/adn/tools/run @@ -95,7 +95,7 @@ class ADNCLI when 'contexto' SubcomandoContexto.new(args, @logger).ejecutar when 'salud' - SubcomandoSalud.new(args, @logger).ejecutar + ADN::SubcomandoSalud.new(args, @logger).ejecutar when 'generar' SubcomandoGenerar.new(args, @logger).ejecutar when 'nodos' diff --git a/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md b/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md index 13e7838c..e08bbd88 100644 --- a/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md +++ b/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md @@ -152,11 +152,12 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez. | S7 | Corregir referencia a plan obsoleto en `run` | Fix | ✅ | | S8 | Dejar de cargar `core/validador.rb` obsoleto en `run` | Limpieza | ✅ | | S9 | Limpiar progreso duplicado en este plan | Doc | ✅ | -| S10 | Migrar `SubcomandoSalud` al namespace `ADN::` | Refactor | ⏳ | +| S10 | Migrar `SubcomandoSalud` al namespace `ADN::` | Refactor | ✅ | | S11 | Crear CLI `ssh` — ejecución remota reutilizable via `candados` + `EjecutorRemoto` | Herramienta | ✅ | | S12 | Refactorizar `ssh.rb` — leer datos de fichas via `NodosInfo`, eliminar hash hardcodeado | Refactor | ✅ | | S13 | Consolidar `core/` — mover lógica de dominio a submódulos CLI (`nodos_info`→`nodos/`, etc.) | Arquitectura | ✅ | | S14 | Agregar subcomando `nodos info ` — exponer metadata de fichas como herramienta CLI | Herramienta | ✅ | +| S15 | Actualizar `README.md` — estructura real de tools/, nuevos subcomandos, directiva submódulos | Doc | ✅ | --- @@ -172,7 +173,7 @@ Fase 6: ██████████ 100% (H1: HelpFormatter) Fase 7: ██████████ 100% (DOC1-DOC3: docs/tecnica/) Fase 8: ██████████ 100% (CI1-CI2: GitHub Actions) Fase 9: ██████████ 100% (M1-M5: MSP CLI) -Fase 10: █████████░ 90% (S1-S9,S11-S12 done, S10 pendiente) +Fase 10: ██████████ 100% (S1-S15 done ✔) ``` ---