Bases de datos de Workspace
Guarde registros estructurados, aplique reglas de negocio y use vistas en directo en el chat. Comparta bases y limite el acceso de los agentes.
También en Sluis Workspace: la presentación de Workspace y Correo y calendario.
Qué son las bases de datos
Una base contiene tablas, campos tipados y registros duraderos, como expedientes, contratos o tareas. Requiere una descripción en texto sin formato, en una línea de 1 a 280 caracteres, que explique su contenido y usuarios.
Abra Bases de datos en la barra lateral, en /workspace/databases. Una base nueva es privada. No hay pantallas de aplicación personalizadas, constructor de interfaz, modo Editar, Pantalla completa ni manejadores ejecutables de vistas. Las aplicaciones Sluis Workspace de escritorio y móvil son independientes.
Crear y modificar
Pida una base o un cambio de esquema a cualquier modelo del chat. Este pasa la solicitud al constructor sluis/code, que debe permitir la política de su organización. Solo ese constructor o un Agente configurado con el grupo de herramientas databases escribe esquemas y reglas. Los modelos normales trabajan con registros y solicitan cambios de esquema.
La fuente es JSON por líneas: cabecera database, líneas collection, funciones script opcionales, líneas trigger y view fijadas. El bloque se llama sluis-database. No admite componentes ni manejadores. Una Skill puede incluir una plantilla database.sluis en la raíz de su archivo.
Instale la plantilla de una Skill mediante POST /chat/skills/{skill_id}/install-database con su sesión de miembro.
Las versiones conservan autor y fecha. Administrar permite publicar y restaurar esquemas. Restaurar crea una nueva versión actual, no borra el historial ni restaura datos antiguos de los registros.
Vistas en directo y fijadas
Pida una tabla, tablero, gráfico, calendario, cronología, total, formulario o registro individual. Un bloque sluis-view describe la vista sin copiar los datos. Cada lector carga datos actuales con sus propios permisos; los cambios compartidos actualizan la vista.
Administrar permite fijar vistas encima de los datos o retirarlas. Filtros, orden y paginación se ejecutan en el servidor. Los formularios siguen los campos y reglas de la tabla; los calculados son de solo lectura. Las vistas no evitan las reglas de acceso o escritura.
```sluis-view
{"database":"<database UUID>","table":"contracts","view":"table","columns":["title","expiry"],"order":"expiry"}
```Registros y reglas
Tipos: texto, número, bool, fecha, JSON, archivo, persona y referencia a otra tabla. Personas y referencias muestran nombres o etiquetas. El historial muestra cambios de campos y autor. Los registros están cifrados; índices con clave permiten búsquedas por igualdad y prefijo de palabra en etiquetas y campos de texto buscables, sin guardar su texto plano. Resultados y etiquetas respetan la visibilidad.
La búsqueda indexada combina todos los prefijos, sin distinguir mayúsculas, con al menos dos caracteres alfanuméricos por palabra. No busca subcadenas arbitrarias. El texto libre devuelve hasta 200 resultados e indica truncamiento. Más de 25.000 candidatos residuales o 500 identificadores de etiqueta devuelven 422: añada un filtro indexado. Un índice ausente o antiguo debe reconstruirse antes de reanudar lecturas.
- Reglas: required, unique, min/max, options, default y pattern. El patrón es una máscara completa: # dígito, A mayúscula, a minúscula, * cualquier carácter. No es una expresión regular.
- Los campos calculados usan Rhai en una sandbox, se recalculan y guardan al escribir y no pueden ser fijados por quien llama.
- Las reglas de estado definen estados, estado inicial y transiciones, con campos obligatorios y nivel mínimo Registros, Todos los datos o Administrar.
- Los disparadores del servidor actúan al crear, actualizar o eliminar. Insertan, actualizan o eliminan registros de la misma base, rechazan la escritura o notifican a un miembro. Sus cambios usan los derechos del autor y la misma transacción. Un rechazo revierte todo. No activan otros disparadores del servidor; las notificaciones siguen a la confirmación.
- Formularios, edición de datos, herramientas de chat, importación, webhooks, IA por lotes y automatizaciones siguen las mismas reglas. Un rechazo devuelve 422 con razones por campo.
Importe CSV o Excel con correspondencia de columnas y vista previa, hasta 20.000 filas. Una fila inválida cancela todo. Todos los datos permite exportar CSV, Excel o JSON. Los archivos de hasta 25 MiB se analizan contra malware y cifran: PDF, Word, Excel, PowerPoint, texto, Markdown, CSV, JSON, PNG y JPEG. Sus permisos siguen al registro y se eliminan con él. databases.file_text extrae texto, incluidos escaneos mediante Sluis OCR, con los derechos del lector.
Compartir y visibilidad
Comparta como Privado, Personas concretas u Organización. Registros permite añadir y cambiar o borrar los registros propios visibles. Todos los datos también ve y modifica todos los registros y exporta. Administrar añade publicación de esquemas, reglas y vistas fijadas. Compartir, eliminar y los ajustes administrativos siguen reservados al propietario o administradores de una base de organización; Administrar no otorga propiedad.
Para Registros, cada tabla muestra todo, solo registros propios, ninguno o los que nombran al miembro en un campo persona. Todos los datos y Administrar ven todo. Las versiones no restablecen la visibilidad guardada. Retirar el acceso termina también el acceso en directo.
Acceso del chat y los agentes
Las herramientas del chat listan, buscan y leen bases accesibles, leen archivos adjuntos y muestran vistas. Mencione una base con @ o active su descubrimiento en el chat para incluir descripción y tablas en el contexto. Esto no concede derechos. La herramienta de lista está disponible incluso sin bases creadas.
agent_write vale ask por defecto: cada creación, cambio o eliminación espera una tarjeta de confirmación. allow actúa sin tarjeta; read_only rechaza. Aprobar no amplía permisos. Si cambian los datos, el esquema o la política, puede ser necesaria una nueva solicitud.
Asocie bases concretas a un Agente con permisos read o write. Cada llamada cruza el permiso actual con los derechos del miembro ejecutor. El grupo databases añade herramientas de esquema, no acceso a todas las bases. Las ejecuciones desatendidas no pueden confirmar tarjetas: escribir exige write y la política allow.
La IA por lotes rellena campos elegidos de los registros coincidentes, hasta 200 por tarea, con progreso, errores y cancelación. Usa los derechos del iniciador y la política, protección de datos y presupuesto de tokens habituales. El texto del registro son datos, no instrucciones. Las vistas no llaman a Conocimiento, documentos, grabaciones o conectores como funciones de interfaz; use Agentes o automatizaciones configurados.
Automatizaciones y webhooks
Las automatizaciones reaccionan a creación, cambios en campos elegidos o transiciones de estado. Los horarios permiten intervalos de al menos 15 minutos, diarios, semanales o antes de una fecha, con zona horaria. Las acciones ejecutan un Agente, notifican a miembros o llaman a un conector MCP aprobado. Las ejecuciones muestran resultado y coste; la activación muestra una estimación y pide confirmación desde 5 € al mes.
La automatización actúa como su propietario configurado, limitada a su base y permisos actuales del Agente. Miembros, webhooks y otros agentes pueden iniciarla, pero no su propia ejecución. Una cadena no vuelve a visitar una automatización. Importación e IA por lotes no inician automatizaciones de registros. Máximo 200 ejecuciones en cola por base y día. Las notificaciones usan Workspace, push y la preferencia de correo, hasta 20 por miembro y día.
Los webhooks entrantes están desactivados hasta que un propietario o administrador los habilite. Administrar permite un endpoint por tabla: POST /hooks/databases/{database}/{collection}, sin sesión ni token bearer. El secreto whsec_ se muestra solo al crear o rotar. La lista IP opcional admite 20 direcciones o rangos CIDR.
Envíe un objeto JSON de hasta 16 KiB. Se eliminan campos desconocidos e ignoran archivos; se aplican todas las reglas. Firme los bytes exactos con HMAC-SHA256: X-Sluis-Timestamp contiene segundos Unix dentro de cinco minutos; X-Sluis-Signature es sha256= más el hexadecimal minúsculo de marca temporal, punto y cuerpo. No se reutiliza una firma aceptada. Reintente 402, 429 o 5xx solo dentro de la ventana; 429 incluye Retry-After. Sin Redis se rechaza con 503.
Respuestas: 201 creado; 400 objeto inválido; 401 firma incorrecta, caducada o repetida; 402 crédito bloqueado; 403 IP rechazada; 404 endpoint o función desconocido o desactivado; 413 límite de cuerpo o almacenamiento; 422 registro inválido; 429 límite de velocidad; 503 no disponible. Los fallos de reglas incluyen error e issues con field, rule y message; otras respuestas no tienen cuerpo. Límites: 120 entregas por minuto y endpoint, 600 por organización y un límite por remitente. La auditoría muestrea rechazos ante abuso; la gestión muestra las últimas 20 entregas. Siguen ejemplos de firma.
SECRET='whsec_...' # shown once when the endpoint is created or rotated
URL='https://gateway.sluis.ai/hooks/databases/DATABASE_ID/COLLECTION'
BODY='{"title":"Printer jammed","priority":"high"}'
TS=$(date +%s)
# HMAC-SHA256 over "<timestamp>.<exact body bytes>", lowercase hex
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')
curl -i -X POST "$URL" \
-H 'Content-Type: application/json' \
-H "X-Sluis-Timestamp: $TS" \
-H "X-Sluis-Signature: sha256=$SIG" \
--data-binary "$BODY"import { createHmac } from "node:crypto";
const body = JSON.stringify({ title: "Printer jammed", priority: "high" });
const ts = String(Math.floor(Date.now() / 1000));
const sig = createHmac("sha256", process.env.SLUIS_WEBHOOK_SECRET)
.update(`${ts}.${body}`)
.digest("hex");
const res = await fetch("https://gateway.sluis.ai/hooks/databases/DATABASE_ID/COLLECTION", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Sluis-Timestamp": ts,
"X-Sluis-Signature": `sha256=${sig}`,
},
body, // send exactly the string you signed
});
console.log(res.status); // 201 when the record was createdLímites y facturación
Límites: 256 KiB de fuente, 20 tablas, 100 campos por tabla y 16 KiB por registro. Las reglas usan una sandbox limitada sin red ni acceso libre a archivos. Propietarios y administradores pueden desactivar Bases de datos en la consola sin borrarlas.
Desde la fecha de facturación anunciada siete días antes, el almacenamiento cuesta 5,15 € por GB al mes para texto y datos y 0,0803 € para archivos, adjuntos y grabaciones (1 GB = 1.000.000.000 bytes). Agentes y automatizaciones desatendidos cuestan 0,005 € por minuto, por segundo iniciado; los chats interactivos no pagan duración. Los tokens de IA se miden aparte.
Límite de almacenamiento: 100 GB o 5.000.000 de objetos por organización raíz de facturación, incluidas suborganizaciones. Se puede fijar un tope mensual. Un saldo vacío pausa escrituras que añaden almacenamiento y trabajo desatendido, no lectura, descarga, exportación ni eliminación. Los datos existentes permanecen. Esquema, compartir y administración se auditan; el historial de registros es independiente.
Un rechazo por almacenamiento en sesión devuelve HTTP 413 con error.code storage_full; una solicitud demasiado grande no lleva ese código. PUT /chat/settings conserva database_webhooks_enabled si se omite o es null. Envíe true o false para cambiarlo; el valor inicial es desactivado.