Routing Behavior¶
Per-chip Outputs¶
Each chip you configure gets its own output on the Chat Input component, named Chip: <label>. The component also keeps its regular Chat Message output for the unchipped case.
flowchart LR
CI["Chat Input"] -->|selected| T["Chip: Translate → translate branch"]
CI -.->|stopped| S["Chip: Summarize"]
CI -.->|stopped| E["Chip: Explain"]
CI -.->|stopped| M["Chat Message"]
All chip outputs render simultaneously on the canvas — there is no dropdown-style output selector — so the branching is visible at a glance.
What Happens When a Chip Is Selected¶
- The matching
Chip: <label>output emits aDatawith the user's selection (see Chip Rendering) and the message text. - Every other chip output is stopped.
- The regular
Chat Messageoutput is also stopped, because the user's intent has been captured by the chip rather than by a free-form message.
The net effect is that exactly one downstream branch executes per user turn.
What Happens When No Chip Is Selected¶
- The
Chat Messageoutput runs normally with the user's message. - All chip outputs are stopped.
This means a chip-enabled Chat Input behaves identically to a plain Chat Input when the user just sends text.
Why per-chip Outputs¶
The per-chip output approach was chosen over alternatives (such as a single output with conditional routing downstream) because it:
- Keeps flow logic visually explicit on the canvas — you can see exactly which path each chip triggers.
- Avoids the need for separate router or conditional components.
- Aligns with the visual flow-based paradigm where connections represent execution paths.