Command Center / Vault está construido siguiendo un patrón de diseño arquitectónico en 3 Capas Estrictas (Separation of Concerns - SoC) sobre Vanilla JavaScript moderno (ES Modules) y Vite 8.
La arquitectura elimina la complejidad y el peso de frameworks pesados para ofrecer un tiempo de carga y ejecución en milisegundos, al tiempo que mantiene una estructura modular de nivel empresarial para gestionar el estado, la interfaz y las integraciones de Inteligencia Artificial.
[ Eventos del DOM / Usuario ]
│
▼
┌──────────────────────────┐
│ Controllers Layer │ (Event Binding & Dispatching)
│ src/controllers/*.js │
└─────────────┬────────────┘
│ Delegación de Estado y Negocio
▼
┌──────────────────────────┐
│ Services Layer │ (Lógica de Negocio Pura)
│ src/services/*.js │
└─────────────┬────────────┘
│ Resultado / Cambio de Estado
┌───────────┴───────────┐
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ UI Layer │ │ AI Adapters │
│ src/ui/*.ui.js │ │ src/services/ai │
└─────────────────┘ └─────────────────┘
Los archivos en controllers/ actúan exclusivamente como coordinadores entre la interfaz del usuario y los servicios:
- Capturan eventos del DOM (clics, ingresos de texto, arrastre de elementos).
- Extraen parámetros e invocan métodos del servicio correspondiente.
- Instruyen a la capa
ui/sobre cuándo actualizar la vista o emitir notificaciones (Toasts). - Regla estricta: Ningún controlador manipula directamente el almacenamiento local ni realiza cálculos de validación.
Contiene el núcleo de reglas de negocio y transacciones de estado de la aplicación:
vault/vault-crud.service.js: Gestión inmutable del alta, edición y baja de baúles y comandos personalizados.vault/vault-drag-drop.service.js: Lógica matemática de reordenamiento de elementos.vault/vault-import-export.service.js: Validación de esquemas JSON, mezcla de datos importados y generación del archivo de rescate (rollbackData).git.service.js: Validación de convenciones de ramas de Git.
Responsable de manipular el árbol DOM y renderizar componentes visuales:
- Renderiza tarjetas de comandos, modales, barras de búsqueda y menús.
- No almacena estado de negocio.
Para integrar asistencia de Inteligencia Artificial sin acoplar el código a una API externa, el sistema implementa un Patrón Adaptador / Factory:
graph TD
Client[AI Factory / Orquestador] --> Ollama[OllamaService (Local AI)]
Client --> OpenAI[OpenAIService (Cloud AI)]
Client --> Gemini[GeminiService (Cloud AI)]
ai.service.js: Actúa como Factory, determinando en tiempo de ejecución qué proveedor usar según la configuración del usuario.- Adaptadores Intercambiables: Cada servicio de IA implementa el mismo contrato de entrada/salida, permitiendo cambiar de un modelo local privado en Ollama a un modelo cloud como Gemini de forma transparente.