Skip to content

🏗️ Arquitectura de Microkernel Reactivo

Firefly JS se basa en una arquitectura de microkernel altamente desacoplada y reactiva. Imagina que el sistema es como un estudio de grabación: el Kernel es la mesa de mezclas, los Plugins son los micrófonos y sensores, y las Tools son los ingenieros que deciden qué hacer con el sonido.

Se compone de cuatro pilares fundamentales:

🧭 Los 4 Pilares del Orquestador

1. Config (firefly.config.ts) 📋

Es la declaración de intenciones. Es el único lugar donde le dices a Firefly qué quieres que haga. Define qué piezas existen y con qué parámetros operan. El Kernel no adivina; lee este archivo para saber qué cargar y cómo configurarlo.

2. Bootstrap 🚀

Es el director de escena. Su única misión es despertar a las piezas en el orden correcto y decidir cuánto tiempo debe estar encendido el sistema:

  • Modo Run: Como una "foto"; ejecuta las tareas y apaga el sistema al terminar. Ideal para chequear errores antes de subir código.
  • Modo Watch: Como un "video en vivo"; mantiene el Kernel encendido para reaccionar a cambios en tiempo real mientras programas.

3. Kernel (Cerebro Reactivo) 🧠

Es el "aire" que respiran las piezas. No tiene lógica de negocio propia (no sabe qué es un archivo o un contrato). Solo ofrece:

  • Registro: Una lista de quién está conectado.
  • Bus de Eventos: Un canal de radio donde las piezas gritan lo que pasa ("¡He terminado de leer!") y otras escuchan para actuar.

4. Plugins vs Tools 🔌🛠️

Esta es la distinción más importante:

  • Plugins (Capacidades): Son los que "dan" información. Por ejemplo, leer el disco o conectarse a una IA.
  • Tools (Acciones): Son las que "hacen" algo con esa información. Por ejemplo, pintar el árbol en consola o avisarte si rompiste una regla.

🔄 Dinámica Reactiva: Drivers vs Procesos

Diferenciamos cómo actúan los componentes para que el sistema sea eficiente:

🧩 Plugins de Ejecución (Procesos)

Hacen una tarea y devuelven un resultado. Son como pedir una pizza: haces el pedido (await plugin.process()) y esperas a que llegue.

📡 Plugins de Mensajería (Drivers)

Están siempre encendidos. Son como un sensor de movimiento: se quedan vigilando y, cuando pasa algo, avisan al Bus de Eventos sin que nadie se lo pida explícitamente.

🛠️ Tools Orquestadoras

Son el pegamento. Pueden pedirle datos a un Plugin de proceso y luego quedarse escuchando a un Driver para actualizar el resultado automáticamente.


📊 Ciclo de Vida y Flujo (Bootstrap)

  1. Carga: El sistema lee tu configuración personalizada.
  2. Registro Secuencial: Se encienden los componentes uno por uno. Si un componente es un Driver, el sistema lo considera listo en cuanto abre su canal de escucha.
  3. Ejecución Inicial: Se disparan las herramientas para procesar el estado actual del proyecto.
  4. Vida en Memoria:
    • En RUN: Al terminar las tareas, el sistema se apaga solo.
    • En WATCH: El sistema se queda "despierto" esperando que los Drivers detecten cambios (ej: editaste un archivo) para avisar a las herramientas.