From 1969c9f867e171be637eeacfe4df506f9cc5f9aa Mon Sep 17 00:00:00 2001 From: ErickHub192 Date: Wed, 12 Aug 2026 23:04:59 -0600 Subject: [PATCH] Las apps de la sala pueden guardar datos Multi hacia fronts bonitos y nada mas: en cuanto alguien queria guardar algo, el agente lo resolvia con datos quemados en el codigo. Ahora sabe que si la app necesita una base, use una LOCAL en un archivo del proyecto. Sin credenciales ni servicios en la nube, a proposito: quien esta en la sala quiere ver su app funcionando, no darse de alta en algun lado y volver con una cadena de conexion. Con Node ya trae node:sqlite, asi que no instala nada. El archivo de la base NO entra al historial. Los datos de aqui son de prueba, y quien se lleva la app la quiere publicar con su base vacia, no con lo que se tecleo probando. Ademas es un binario que cambia entero en cada turno, y regresar a un punto anterior tiraria los datos de hoy junto con el codigo de ayer: el scrubber ya avisa que los datos NO vuelven, y hasta ahora esa promesa no tenia nada detras. Si alguien da credenciales de una base externa, van al .env del workspace y el agente las usa. Eso hara falta de verdad cuando se pueda publicar la app: una base en un contenedor efimero no sobrevive a un deploy. Co-Authored-By: Claude Opus 5 --- server/src/agent/loop.ts | 11 +++++++++++ server/src/engine/workspace.ts | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/server/src/agent/loop.ts b/server/src/agent/loop.ts index f01b976..f6b8e49 100644 --- a/server/src/agent/loop.ts +++ b/server/src/agent/loop.ts @@ -78,6 +78,17 @@ créalo con bash: es tu trabajo, no preguntes por dónde empezar. - El proyecto vive en un volumen montado, donde los eventos de archivo del sistema no cruzan. Configura el watcher de tu stack por SONDEO (polling) o los cambios no se verán en vivo y la sala se quedará mirando una pantalla congelada. +- Si la app necesita guardar datos, usa una base de datos LOCAL, en un archivo dentro + del proyecto (SQLite y equivalentes). No pidas credenciales ni servicios en la nube. + Con Node tienes node:sqlite sin instalar nada. + Por qué: quien está en la sala quiere ver su app funcionando, no darse de alta en un + servicio y volver con una cadena de conexión. Un archivo se crea solo y arranca al + instante. + El archivo de la base NO entra al historial (está en el .gitignore): lo de aquí son + datos de prueba. Deja el esquema en el código o en una migración, para que la app + arranque sola en una base vacía. + Si te dan credenciales de una base externa, úsalas: estarán en el .env. Léelo antes + de asumir que no hay ninguna. diff --git a/server/src/engine/workspace.ts b/server/src/engine/workspace.ts index 9d40adf..5b702af 100644 --- a/server/src/engine/workspace.ts +++ b/server/src/engine/workspace.ts @@ -88,6 +88,17 @@ async function ensureGitignore(dir: string): Promise { "# se descarga.", ".multi-home/", "", + "# La base de datos del proyecto. Los datos de aquí son de prueba: quien se", + "# lleva la app la quiere publicar con su base vacía, no con lo que se tecleó", + "# probando. Y en el historial estorban: es un binario que cambia entero en", + "# cada turno, y regresar a un punto anterior tiraría los datos de hoy junto", + "# con el código de ayer (el scrubber ya avisa que los datos NO vuelven).", + "*.db", + "*.sqlite", + "*.sqlite3", + "*.db-shm", + "*.db-wal", + "", ]; await writeFile(path, lineas.join("\n"), "utf8"); }