Un módulo es un archivo.
Un módulo es una función nueva para MADRE, escrita en un solo archivo. No hay que compilar, instalar paquetes ni registrarse: escribes un .mjs —o se lo pides a tu IA—, lo copias a una carpeta y aparece en MADRE con su interruptor.
Empezar
De cero a tu comando, en tres pasos.
Copia el archivo
A
~/.pulse/modules/para todas tus salas, o a.madre/modules/dentro de un proyecto para ese proyecto nada más.Recarga
En la sala, MODULES → RELOAD MODULES. Si algo falla, la tarjeta dice el archivo y la línea exacta.
Úsalo
Enciéndelo con su interruptor y escribe
/tu-comando. Cambias el archivo, recargas y listo: sin reiniciar la sala.
export default {
id: 'hello', // kebab-case
name: 'HELLO',
summary: 'Qué hace, en una frase.',
settings: { enabled: false, greeting: 'hola' },
async status(ctx) {
return { status: { installed: Boolean(ctx.settings.enabled), detail: ctx.settings.enabled ? 'on' : 'off' } };
},
slash: [{
name: 'hello',
usage: '/hello [name]',
summary: 'Saluda.',
async execute(ctx, args) {
return { ok: true, title: 'HELLO', text: `${ctx.settings.greeting}, ${args[0] ?? 'crew'}` };
},
}],
};
/hello. El ejemplo entero, comentado, está en el repositorio. Ver hello-module.mjsCapacidades
Lo que un módulo puede hacer.
Declaras lo que necesitas y MADRE se encarga del resto.
Comandos en la sala. Tus comandos con
/corren en el servidor y responden como tarjeta, que leen tú y los agentes.Herramientas para los agentes. Dale a un agente herramientas extra (servidores MCP) solo durante su turno, aisladas del resto, y MADRE le explica qué recibió.
Ajustes sin dibujar nada. Declara selectores, interruptores y campos: MADRE los pinta en la ficha y los guarda en tu configuración.
Direcciones propias. Tu módulo puede responder en sus propias direcciones web (rutas HTTP), siempre bajo
/api/x/tu-módulo/.Escuchar la sala. Se entera de todo lo que pasa en la sala —cada mensaje, cada turno— y puede reaccionar.
Versiones al día. Si tu módulo usa un programa externo, MADRE vigila su versión y te muestra el comando para actualizarlo antes de ejecutarlo.
Diagnóstico. Enseña a MU/TH/UR a reconocer problemas nuevos y cómo resolverlos en cada sistema.
Compartirlo. Publica tu archivo: quien lo use recibe GET A NEWER FILE, y MADRE verifica la copia nueva antes de reemplazar la instalada.
La ficha
Tú declaras; MADRE arma la tarjeta.
Todas las fichas de MODULES tienen las mismas cinco partes, en el mismo orden. Por eso la de tu módulo se lee igual que las de los que vienen con MADRE.
Quién es
Nombre, estado ON u OFF, autor, versión y el botón para buscar una más nueva.
Qué hace
Una frase. No tres.
Qué toca
Lo que escribe y lo que necesita, plegado, con su número al lado.
Ajustes
Tus selectores, interruptores y campos.
El interruptor
Instalar, encender o apagar. Solo, y siempre abajo.
Con tu IA
Que la sala construya su propio módulo.
Con el permiso #2 CREATE o uno mayor, pídele a un agente el módulo que necesitas. Él lo escribe; tú decides si se instala.
Lo pides
«Crea un módulo que prepare mis correos para revisarlos.» El agente ya sabe dónde están la guía y el ejemplo.
Lo escribe
Un solo archivo,
<id>.module.mjs, en su carpeta de borrador. Nunca en tus carpetas de módulos.Lo revisas
MADRE lo reconoce y pone una tarjeta en la sala: INSTALL FOR EVERY ROOM o INSTALL FOR THIS PROJECT.
Lo instalas
Un clic. MADRE lo valida en una copia aparte y aparece en MODULES con la etiqueta DEV.
Reglas de la casa
Lo que hace a un buen módulo.
Nada sale solo. Si tu módulo habla con un servicio, lo dice en su ficha y lo hace solo cuando la persona lo pide.
Sin credenciales. Usa las sesiones que ya viven en la máquina; no guarda llaves.
No escribe en el proyecto. Para eso están los modos de los agentes. Si instala algo, enseña el comando antes de correrlo.
Falla suave. Un error nunca rompe el turno de un agente: la tarjeta lo dice y la sala sigue.
Habla como MADRE. Rótulos cortos en mayúsculas y notas que dicen qué no sale de la máquina.
Se quita igual de fácil. Un módulo tuyo se quita desde su tarjeta y se borra su archivo. Los que vienen con MADRE se apagan.
Dicho claro
Un módulo corre con tus permisos.
MADRE comprueba que cargue y que no se salga de su corral. Lo que el código pretende, solo lo puedes comprobar tú: instala solo lo que leíste.
- Sus rutas viven bajo /api/x/<id>/.
- Uno que intente otra no carga: ninguno suplanta una ruta de MADRE.
- No toma el id de otro.
- Ni de un módulo integrado ni de uno ya cargado.
- No fabrica turnos ni mensajes.
- El registro rechaza los tipos de evento reservados.
- No recibe credenciales.
- Igual que MADRE, usa las sesiones de la máquina.