Lógica
Decisões, repetição e segurança: Se/Senão, Laço While, Aprovação do Usuário e Guardrails — condições, expressões e saídas.
Atualizado em 01 de set. de 2026
Os cards de lógica decidem por onde o fluxo segue. Se/Senão e While compartilham o mesmo motor de condições — modo simples (variável + operador + valor) ou modo expressão.
No modo expressão você escreve a condição completa, com variáveis entre {{ }}:
{{round}} <= 3 AND {{votos.culpado}} < 2 AND {{votos.inocente}} < 2
{{status}} == "aprovado" OR {{tentativas}} > 5
{{jogadores.* | alive=true | role=lobo}}.count >= 1
NOT {{terminou}}| Recurso | Sintaxe |
|---|---|
| Variável simples | {{round}}, {{status}} — ausente/vazia conta como 0 |
| Acesso a objeto | {{votos.culpado}} entra no dict pela chave |
| Coleção filtrada | {{colecao.* | campo=valor | campo2=valor2}} (filtros em E) |
| Contagem / existência | sufixo .count ou .exists após a coleção |
| Operadores | == != < <= > >= · AND OR NOT (maiúsculo ou minúsculo) |
if_else · bifurca o fluxoAvalia a condição uma vez e segue pela saída TRUE ou FALSE.
namestringpadrão: 'If/Else'Nome do nó.
conditionstring (expressão)Modo expressão — ver acima. Quando presente, ignora os campos do modo simples.
condition_typestringpadrão: containsModo simples: `contains`, `not_contains`, `equals`, `not_equals`, `starts_with`, `ends_with`, `greater_than`, `less_than`, `is_empty`, `is_not_empty`, `regex`.
condition_variablestringpadrão: last_responseO que testar: `last_response` (última resposta de agente) ou uma variável.
condition_valuestringO valor de comparação (não usado em `is_empty`/`is_not_empty`).
while · repete enquanto for verdadeReavalia a condição a cada volta: verdadeira → saída LOOP; falsa (ou teto de iterações) → saída EXIT. O último nó do corpo volta pela entrada loop-back da esquerda. Variáveis numéricas simples citadas na condição (ex.: {{round}}) são auto-incrementadas a cada iteração.
namestringpadrão: 'While Loop'Nome do nó.
loop_conditionstring (expressão)A condição de permanência no laço.
condition_type / condition_variable / condition_valuestringAlternativa no modo simples (mesmos operadores do Se/Senão).
max_iterationsnumberpadrão: 10Teto de voltas — proteção contra loop infinito.
clear_context_each_iterationbooleanpadrão: falseZera o contexto transitório a cada volta (a resposta anterior não vaza para a próxima).
user_approval · pausa e esperaPausa o workflow e espera o usuário. Segue por approved ou rejected conforme a resposta. No protocolo A2A a task fica em input-required; no widget aparece como pergunta com opções.
namestringpadrão: 'User Input'Nome do nó.
approval_messagestringobrigatórioA pergunta mostrada ao usuário. Aceita `{{variaveis}}`.
approval_optionsstring[]Opções de resposta (botões). Vazio = resposta livre; palavras negativas ("não", "cancelar"…) contam como rejeição.
approval_timeoutnumber (s)padrão: 0Tempo máximo de espera. `0` = espera para sempre.
auto_approvebooleanpadrão: falseNo timeout: `true` aprova e segue; `false` rejeita.
guardrails · inspeção com saídas pass/failO porteiro do fluxo: inspeciona um texto — a mensagem do usuário ou a última resposta — e sai por pass ou fail, como um Se/Senão de segurança. As checagens determinísticas (PII, lista de termos) rodam primeiro e custam zero; as de modelo (jailbreak, moderação, regra em linguagem natural) são combinadas numa única classificação.
config.targetinput | last_responsepadrão: inputO que inspecionar: a mensagem do usuário ou a última resposta gerada.
config.checks.piibooleanCPF, CNPJ, e-mail, telefone e cartão (com dígito de Luhn) por regex — determinístico, sem custo.
config.checks.blockliststring[]Termos/expressões proibidos — determinístico, sem custo.
config.checks.jailbreakbooleanClassificador por modelo para tentativa de burlar instruções.
config.checks.moderationbooleanClassificador por modelo para conteúdo nocivo.
config.checks.customstringRegra em linguagem natural ("rejeite se pedir X") — avaliada pelo modelo.
config.fail_messagestringRegistrada no evento e nas variáveis quando reprova.
config.on_errorpass | failpadrão: passO que fazer se o classificador falhar.
config.modelstringModelo das checagens de LLM (padrão: o do agente). Cobrado como qualquer inferência.
O resultado vira variável
guardrails_result e guardrails_reason ficam disponíveis para os nós seguintes — dá para logar, explicar ao usuário ou ramificar de novo. Exemplo completo no fluxo Identificação sem senha, onde o caminho fail cai num agente sem ferramentas que pede para não enviar o dado.

