Saltar al contenido principal

Automatizaciones — Referencia Técnica

Referencia para lectores con perfil técnico. Guías en lenguaje sencillo: comienza por el resumen.

Modelo

Una automatización es un grafo dirigido de pasos tipados representado en un lienzo. El disparador es el paso 0; todos los demás pasos declaran a qué paso(s) siguen. Existen dos familias de pasos:

  • Pasos de IAagent y router. Cada uno ejecuta un turno completo de agente (herramientas, archivos, razonamiento) y se factura en créditos. El agente se selecciona por paso; un paso solo puede ejecutar un agente al que el propietario de la automatización tenga acceso.
  • Pasos deterministascondition, filter, switch, tool, database, code, for_each, loop. Ejecución puramente basada en reglas, nunca facturada. for_each y loop solo aceptan sub-pasos deterministas — esa restricción es lo que hace posible su garantía de costo.

Los datos pasan entre pasos como listas de elementos JSON. Las variables ({{trigger.*}}, {{steps.N.output.*}}, {{item.*}}, {{loop.*}}) se resuelven contra esas salidas en tiempo de ejecución; una expresión que ocupa el campo completo se resuelve al valor nativo (lista, objeto, número), mientras que una expresión incrustada en texto se interpola como cadena.

Modelo de condiciones

Los filtros de eventos y los pasos de condición/filtro/selector/bucle comparten un único motor de condiciones: un combinador (and/or) sobre comparaciones tipadas — cadena (igual, contiene, empieza/termina con, regex, comprobaciones de vacío), número (igualdad y orden), booleano, fecha-hora (antes/después), lista (contiene, longitud), objeto (existe, vacío). La sensibilidad a mayúsculas y la verificación de tipos laxa/estricta son opciones. Las reglas de coincidencia del paso de base de datos son independientes y más simples: columna / operación / valor contra las columnas reales de la base de datos seleccionada.

Disparadores

ModoEntrega
ManualIniciado desde la UI, por agentes o vía Nirvai Connect; entrada JSON opcional, sobreescribible por ejecución
HorarioBasado en cron
WebhookUna dirección HTTPS por automatización asegurada con una cabecera de clave privada
Disparador de appPlantillas declarativas por proveedor: suscripción automática de webhook, sondeo periódico con semántica de cursor + deduplicación, o registro de pegar-la-URL

Los eventos de app entrantes pasan por una tubería fija: verificación de firma → coincidencia de evento (exacta, lista separada por comas, *, comodín de prefijo) → normalización en elementos → el filtro de eventos. Un fallo en cualquier etapa confirma la entrega y la descarta en silencio — nunca se devuelve una respuesta de error a los proveedores, y los eventos descartados nunca crean una ejecución ni facturan nada. Las entregas en lote se comparan elemento por elemento.

Ejecución

El runtime calcula oleadas de pasos cuyas dependencias están satisfechas y ejecuta cada oleada en paralelo. Los pasos de ramificación toman decisiones vinculantes: la clausura descendente de la rama no tomada se marca como omitida con un motivo. Un paso fallido hace fallar la ejecución y omite su clausura descendente; las ramas independientes aun así terminan. Las pasadas de bucle se ejecutan secuencialmente (cada pasada puede depender de la anterior); las iteraciones de bucle sobre elementos se ejecutan con concurrencia acotada.

Cada ejecución se registra paso a paso: estado, tiempos, entradas, salidas, detalle por tipo (conteos de entrada/salida del filtro, coincidencia del selector, filas de la base de datos, stdout del código, pasadas del bucle) y advertencias — incluidas las expresiones de variable sin resolver en pasos de herramienta/base de datos.

El reintento desde un paso crea una nueva ejecución que reutiliza literalmente las entradas de la ejecución original y todos los resultados previos — los pasos de agente previos no se vuelven a ejecutar ni a facturar — y re-ejecuta únicamente la clausura descendente del paso elegido.

Versiones y concurrencia

Las versiones son instantáneas explícitas e inmutables con alias opcionales, guardadas bajo demanda. Restaurar reemplaza el borrador (sin eliminar nunca versiones más recientes); los pasos de cada versión pueden validarse contra los agentes, herramientas y bases de datos existentes actualmente. Los guardados del editor usan concurrencia optimista: un guardado que lleva un token obsoleto se rechaza y se presenta como un diálogo de conflicto en lugar de sobrescribir.

Límites y garantías

Límite / garantíaValor
Pasos deterministas facturadosNunca, incluidos los contenedores de bucle sobre elementos/bucle y los eventos filtrados
Pasadas de bucleLimitadas a 100; alcanzar el límite termina el bucle como una finalización normal, marcada en los resultados
Lectura de base de datosHasta 500 filas por lectura
Actualización/eliminación en base de datosRequieren reglas de coincidencia no vacías
Variables sin resolverNunca hacen fallar una ejecución; se reportan como advertencias, excluidas de las escrituras en base de datos
Retrocompatibilidad de webhooksLas direcciones de webhook preexistentes y las automatizaciones programadas siguen funcionando sin cambios

Qué sigue