> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryhamsa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# UI Components & Validation

> Variables panel, inputs, builders, and validation

## User Interface Components

### Variables Panel

**Location**: Right sidebar in the flow builder

**Shows:**

* System variables (15+)
* Custom variables
* Summary count of extracted variables by node

**Actions:** Add, edit, delete custom variables; view details and defaults.

**Does not show:** Per-node extracted/static variables (those appear in node context and node config).

### Variable Input Components

Used when editing text fields in the flow builder.

**Shows:** Variables that are valid in the current context (system, custom, and for flow agents: extracted/static from predecessor nodes).

**Features:** Context-aware list, search/filter, categories, type hints, click to insert `{{variable_name}}`.

### Variable Selection Modal

**Features:**

* Filtered by context (only variables available at the current node)
* Suggestions by node type
* Tabs by category (system, custom, extracted, static)
* Search and preview
* Validation of references

### Variable Builder (Extraction)

Used in conversation and tool nodes to define extracted variables.

**Features:** Add/edit/delete extracted variables, extraction prompts (AI), JSONPath (toolpath), data types, required flag, enums, nested objects/arrays.

### Static Variables Builder

Used in nodes to define static variables.

**Features:** Add/edit/delete static variables, all data types, template support, JSON editor for objects/arrays, validation, duplicate checks.

## Validation System

### Name Validation

* **Format**: snake\_case
* **Uniqueness**: No duplicate names in the same scope
* **Reserved**: No system variable names
* **Length**: 1–50 characters

### Reference Validation

* **Existence**: Referenced variable exists
* **Availability**: Variable is available at the current node
* **Syntax**: Valid `{{variable_name}}` form
* **Circular references**: Detected and reported

### Type Validation

* **Data type**: Value matches declared type
* **Enum**: Value is one of the allowed options when enum is used
* **Required**: Required variables must have values

### Extraction Validation

* **AI**: Extraction prompt present
* **Toolpath**: Valid JSONPath
* **DTMF**: No conflicting DTMF transitions

Validation runs in the background, updates as you edit, and suggests fixes where possible.

## Performance

* **Node availability cache**: Cached per node; invalidated on flow or variable changes
* **Lookups**: Map-based (e.g. name → variable, node → available variables)
* **Batching**: Recalculation and validation are batched
* **Flow–variables bridge**: Keeps flow and variable stores in sync without circular dependencies

See [Advanced Features](./advanced) for technical details and [Troubleshooting](./troubleshooting) for common validation issues.
