Узел condition¶
Развилка с двумя выходами, решаемая CEL-выражением по фрейму.
{
"id": "confident",
"type": "condition",
"condition": "vars.score > 0.7 && vars.topic != 'billing'",
"then": "answer",
"else": "escalate"
}

- Выражение вычисляется по текущему фрейму и приводится к булеву, так что
пустая строка,
0и пустой список уводят исполнение вelseтак же надёжно, какfalse. thenобязателен.else— нет.- Узел ничего не пишет во фрейм, он только выбирает. Чтобы протащить дальше
вычисленное значение, запишите его стадией до развилки или через
expose. - Событие
condition_evaluatedфиксирует решение:{"result": true, "next": "answer"}.
В редакторе переменные, которые читает выражение, становятся портами данных карточки — условие не выглядит на канвасе чёрным ящиком:

Когда дорога кончается¶
Если условие ложно, а else нет — идти некуда, и прогон просто
заканчивается: terminal не достигнут, поэтому сессия
возвращает result = null и ни одного артефакта.
Иногда это и требуется («дальше делать нечего»), но гораздо чаще это забытая
ветка. Когда конец дороги задуман, скажите это через terminal — тогда
результат говорит, какой именно это был конец.