Skip to main content

DSL Semantics

This page explains how the platform interprets the DSL at runtime.

1. Journey Ordering

The journey array is the default execution path. A step runs, then the next step runs unless a branch or jump changes the path.

2. Continue vs Targets

Some steps return outcomes that point to targets:

  • continue means go to the next step in the journey
  • done ends the conversation successfully
  • escalate hands off to a human
  • goto jumps to a named step

3. Interactive vs Instant Steps

Interactive steps wait for user input:

  • collect, choice, confirm, guide

Instant steps execute immediately:

  • action, investigate, set, if

4. Naming And Goto

A step can include name, which creates a slug used by goto.

- collect:
name: Ask Again
fields: [order_id]

- goto: ask-again

5. Variables And Data Flow

  • collect stores values in variables
  • action results are stored in variables using as:
  • set writes computed values into variables

Use {{variables.*}} to interpolate values in messages. Use $variables.* in expressions.

6. Triggers And Routing

The router matches a user message to a capability using:

  • trigger.goal
  • trigger.examples
  • optional trigger.priority
  • optional trigger.requires

7. Knowledge Usage

A capability may attach knowledge collections. When knowledge is available, the system retrieves relevant chunks and grounds responses.

8. Fallback Behavior

If a journey cannot continue, the capability fallback is used. If not set, the platform escalates to the default queue.

9. Auditable Execution

The platform records routing, step transitions, and action calls in audit logs. This makes execution traceable without granting the LLM control over decisions.