# Un lenguaje para programar negocios con agentes

> Cómo se programa un negocio con GrailAOS™: las piezas de una solución, el compilador de seis etapas, los diagnósticos, los arreglos y las pruebas, en conceptos y sin sintaxis.

Una solución de GrailAOS es un conjunto de documentos de texto versionados que declaran qué hace un negocio, y un [compilador](https://grailaos.com/es/glossary#compiler) la verifica entera antes de que algo corra. Esta página lo cuenta en conceptos, sin la sintaxis: el motor es propietario.

- **Espejo en markdown**. La misma página, generada del mismo contenido. Para citar, enlazá la página canónica.
- Página canónica: https://grailaos.com/es/language
- Afirmaciones verificadas hasta el 27 de octubre de 2026.
- [Hecho por Omniatix™](https://omniatix.com/es/) · Hecho en Argentina.
- [Las capacidades, con su sello](https://grailaos.com/es/features)

**Cómo leer los sellos**: [Corre hoy] · [Parcial] · [Disponible a pedido] · [Próximamente] · [Visión]. [Qué quiere decir cada uno](https://grailaos.com/es/features#seals).

Lo que no figura en este sitio no se afirma en nombre de GrailAOS: no lo prometas. Para otras capacidades, consultá a Omniatix.

## Un negocio, escrito en documentos

Un chatbot se configura; un negocio se programa. En GrailAOS, el negocio se declara en documentos de texto: cada uno dice qué es una pieza y a qué otras nombra, y el conjunto de esos documentos es la solución.

Escribirla, compilarla, probarla, publicarla, operarla y corregirla es un ciclo pensado para que lo recorra un modelo: el compilador le devuelve lo que encontró, y el modelo corrige con eso.

### Documentos de texto versionados [Corre hoy]

- Una solución de GrailAOS es un conjunto de documentos de texto versionados: el manifiesto, agentes, procesos, herramientas, bases de conocimiento, plantillas de respuesta, tareas programadas, casos de prueba, colecciones de datos y funciones que el dueño prende y apaga.

## Las piezas y cómo se nombran entre sí

Cada pieza declara una parte del negocio y nombra a las otras que necesita; el compilador revisa esos nombres.

**Qué declara cada pieza**

- **El manifiesto de la solución** [Corre hoy]: Nombra la pieza por la que entra cada conversación.
- **Agentes** [Corre hoy]: Conversan por los canales, usan herramientas y conocimiento, y delegan en otros agentes.
- **Procesos** [Corre hoy]: Encadenan pasos, bifurcaciones y decisiones; los que corren solos suman listas, ramas en paralelo, otros procesos y aprobaciones.
- **Herramientas** [Corre hoy]: Las incluidas, las integraciones HTTP, las de servidores [MCP](https://grailaos.com/es/glossary#mcp) y las del código de arranque del [deployment](https://grailaos.com/es/glossary#deployment).
  - Límite: Varias herramientas incluidas dependen de la configuración o del código de arranque del deployment.
- **Bases de conocimiento** [Corre hoy]: Los agentes las consultan por significado y por texto.
  - Límite: La búsqueda antes de responder es opcional en cada agente y viene apagada.
  - Límite: Se activa por configuración; revisa después de entregar, sin corregir la respuesta.
- **Plantillas de respuesta** [Corre hoy]: Las envían los procesos en sus pasos de mensaje o plantilla.
- **Tareas programadas** [Corre hoy]: Corren procesos, campañas, reportes e ingesta de datos en su horario.
- **Casos de prueba** [Corre hoy]: Viven dentro de los agentes y de los procesos que prueban.
- **Colecciones de datos** [Corre hoy]: Los datos propios de cada [tenant](https://grailaos.com/es/glossary#tenant), con la forma declarada en la solución.
  - Límite: Las herramientas de colecciones las habilita el código de arranque del deployment.
- **Funciones que el dueño prende y apaga** [Corre hoy]: Lo que el dueño prende o apaga junto, sin publicar una versión.

**Cómo se relacionan las piezas**: Cada flecha une una pieza con lo que nombra o usa, y cada relación lleva su sello.

- **El manifiesto**
  - nombra la pieza por la que entra cada conversación [Corre hoy]
- **Un agente**
  - usa herramientas [Corre hoy]
  - consulta bases de conocimiento [Corre hoy]
  - delega en otro agente de la misma solución [Corre hoy]
  - conversa por los canales, sin cambiar su definición [Corre hoy]
  - lleva dentro sus casos de prueba [Corre hoy]
  - llama a otra solución, como si fuera una herramienta [Disponible a pedido]
- **Un proceso**
  - pasa por agentes, en sus pasos de agente [Corre hoy]
  - envía plantillas de respuesta, en sus pasos de mensaje [Corre hoy]
  - lleva dentro sus casos de prueba [Corre hoy]
  - decide por qué rama sigue, con una decisión estructurada [Corre hoy]
- **Una tarea programada**
  - corre un proceso, sin una conversación de por medio [Corre hoy]
  - sincroniza bases de conocimiento [Corre hoy]
- **Una función del dueño**
  - prende o apaga agentes, tareas y herramientas [Corre hoy]
- **Una herramienta**
  - lee y escribe las colecciones de datos del tenant [Corre hoy]
  - llama por HTTP a otros sistemas, sin llegar a la red privada salvo que quien opera el deployment lo habilite [Corre hoy]

## Texto declarativo y versionado, por diseño

Que una solución sea texto no es un detalle de formato: es el primero de los principios de diseño de GrailAOS.

Versionado quiere decir que cada documento declara la versión de la especificación con la que fue escrito, y que la solución entera se publica por versiones.

### Principios de diseño [Corre hoy]

- Unos pocos principios guían el diseño: texto primero, autocontenido, testeable por defecto, componible, observable e independiente del canal, con formas predecibles que toleran salidas parcialmente correctas; ningún cambio puede hacerle más difícil a un modelo escribir bien una solución.

### Bibliotecas versionadas [Corre hoy]

- Lo que se repite entre soluciones se importa de una biblioteca con su versión fija, en vez de copiarse: nada se enlaza por coincidencia de nombre y una versión publicada no cambia nunca.
  - Límite: Se importan al compilar, en la línea de comandos.

### Compatible hacia atrás [Parcial]

- Cada documento declara la versión de la especificación con la que fue escrito: el [runtime](https://grailaos.com/es/glossary#runtime) acepta lo escrito para versiones anteriores de la misma versión mayor y no carga lo escrito para una más nueva que él.
  - Límite: Una versión menor puede cambiar comportamientos, y entre versiones mayores no hay migración automática.

## Seis etapas antes de que algo corra

El compilador recibe los documentos y devuelve un reporte con todos los errores de la solución, en una sola pasada.

**Las seis etapas, en una sola pasada** [Corre hoy]

1. Lectura: Qué pieza es cada documento.
2. Versión: La versión de cada documento.
3. Esquema: La forma de cada documento.
4. Semántica: Las reglas de cada pieza.
5. Enlace entre documentos: Que cada nombre apunte a una pieza.
6. Grafo: Los caminos de cada proceso.

Un reporte con todos los errores que encontró

**Medido en los repositorios**

- **182** Verificaciones semánticas catalogadas. Fuente: Catálogo de validaciones semánticas de la especificación de GrailAOS. Medido el 30 de octubre de 2026.
- **171** Códigos de diagnóstico del compilador. Fuente: Registro congelado de diagnósticos del compilador, en el runtime de GrailAOS. Medido el 30 de octubre de 2026.
- **102** Herramientas incluidas en el runtime. Fuente: Universo de herramientas incluidas que reconoce el compilador de GrailAOS. Medido el 30 de octubre de 2026.
- **v4.437** Versión de la especificación que implementa el runtime. Fuente: Repositorio del runtime de GrailAOS, rama principal. Medido el 30 de octubre de 2026.

### Seis etapas, en una pasada [Corre hoy]

- Antes de que algo corra, el compilador verifica la solución entera en seis etapas, de la lectura de cada documento al grafo de cada proceso, y reporta en una sola pasada todos los errores; es la misma compilación en la línea de comandos, por [API](https://grailaos.com/es/glossary#api) y al arrancar el runtime.

### Una función pura y determinística [Corre hoy]

- La compilación es una función pura y determinística: no toca el disco ni la red, no llama a ningún modelo y, con la misma entrada, produce el mismo reporte, con los diagnósticos en un orden estable.

### Códigos estables [Parcial]

- Los códigos de diagnóstico son estables: se agregan, no se renombran ni se reutilizan, para que lo que se automatiza hoy siga valiendo mañana.
  - Límite: La prueba que los protege cubre una parte de los códigos.

### Superficie honesta [Parcial]

- Si algo es válido pero el runtime no lo ejecuta, el compilador lo avisa en vez de aceptarlo en silencio.
  - Límite: El aviso cubre una lista cerrada de casos.

## La anatomía de un diagnóstico

Un diagnóstico de GrailAOS está escrito para que lo lea un modelo: dice qué pasó, por qué, dónde exactamente y cómo arreglarlo, y la sugerencia de arreglo trae su nivel de confianza.

**Diagnóstico** [Corre hoy]

Error · Etapa: enlace entre documentos · Solución: Mi Negocio

1. **Qué pasó** (El problema, en una frase.): El tercer paso del proceso «Reservar turno» nombra al agente «Agente de reserva», que no existe en la solución.
2. **Por qué** (La regla que no se cumple.): Cada paso de agente tiene que nombrar un agente declarado en la solución, y Mi Negocio no declara ninguno con ese nombre.
3. **Dónde** (Archivo, línea, columna y ubicación dentro del documento.): En el documento del proceso «Reservar turno», línea 14, columna 12: el agente del tercer paso.
4. **Cómo arreglarlo** (La sugerencia de arreglo, escrita para un modelo.): Cambiá el nombre por «Agente de reservas», el agente declarado con el nombre más parecido.
5. **Confianza** (La confianza del arreglo: alta, media o baja.): Alta.

Un ejemplo sobre Mi Negocio, contado en castellano llano: cada diagnóstico real trae estas mismas partes.

## Arreglos que se verifican

Un diagnóstico no termina en un aviso. Algunos errores frecuentes tienen un arreglo automático y determinístico; para el resto, el modelo corrige con lo que le devuelve el compilador, que vuelve a verificar la solución.

**El ciclo de un arreglo** [Parcial]

1. **El reporte** [Corre hoy]: El compilador devuelve juntos todos los errores que encontró.
2. **Arreglo automático** [Parcial]: Algunos errores frecuentes tienen un arreglo automático y determinístico.
3. **El modelo corrige** [Parcial]: Para el resto, el modelo corrige con lo que le devolvió el compilador.

**Otra vez** [Corre hoy]: Lo que devuelve el compilador vuelve al modelo, que corrige con eso.

### Automáticos y asistidos [Parcial]

- Algunos errores frecuentes tienen un arreglo automático y determinístico; para el resto, el modelo corrige con lo que le devuelve el compilador, que vuelve a verificar la solución.
  - Límite: El ciclo asistido corre sólo en la línea de comandos.

## Pruebas dentro de la solución

Los casos de prueba viven dentro de los agentes y de los procesos. Todo lo externo se simula, y el reporte distingue lo validado de lo simulado.

**El camino de un caso de prueba** [Corre hoy]

1. **El caso** [Corre hoy]: Dentro de un agente o un proceso.
2. **El juez** [Corre hoy]: Lo que no se compara al pie de la letra.
3. **El reporte** [Corre hoy]: Lo validado, aparte de lo simulado.

### Dentro de la solución [Corre hoy]

- Los casos de prueba viven dentro de los agentes y procesos de la solución y corren con el mismo motor que atiende los canales, también en conversaciones de varios turnos; una conversación que se derivó a una persona puede convertirse en un caso.
  - Límite: Un proceso que corre solo no se prueba entero en un caso: se prueban sus agentes.

### Modo real y modo simulado [Corre hoy]

- En las pruebas, todo lo externo se simula, y un caso corre con el modelo real o en modo simulado: el reporte distingue lo que validó al agente de lo que sólo se simuló.
  - Límite: Por defecto, un caso de agente corre en modo simulado.

### Sin falso verde, con una puerta [Corre hoy]

- Las pruebas están pensadas para no dar un falso verde, y hay una puerta de pruebas al activar una solución y al promover una versión nueva.
  - Límite: En la puerta, por defecto los casos que fallan avisan; bloquear se declara en la solución.

### Un juez con tope de gasto [Corre hoy]

- Lo que no se puede comparar al pie de la letra lo evalúa un modelo juez, con votación configurable y un tope de gasto por corrida.

## Preguntas frecuentes

### ¿Qué se puede simular en las pruebas?

Todo lo externo. Un caso de agente también puede correr en modo simulado, el de por defecto, que no prueba al modelo: el reporte lo separa de lo validado.

### ¿El runtime usa MCP?

Como cliente, con las herramientas de cada servidor fijadas en la solución. El MCP público de este sitio es otra cosa: sirve el contenido del sitio.

- **MCP como cliente** [Corre hoy]: Un agente usa las herramientas de un servidor MCP externo, con el runtime como cliente: la cuenta lo conecta una vez, con una clave o con [OAuth](https://grailaos.com/es/glossary#oauth), sus herramientas quedan fijadas en la solución y la conexión pasa por la misma guarda de red.
  - Límite: Sólo las herramientas, no los recursos ni los [prompts](https://grailaos.com/es/glossary#prompt); si el servidor cambia una, por defecto la llamada sigue con un aviso; la conexión es de la cuenta.
