WorksheetIntent derives CommandTool, making each variant both a reduce command and an AI tool. Dispatch path:
session.dispatch(Command::Intent(SessionIntent::Modality(WorksheetIntent::...)));
| Intent | Parameters | Purpose |
|---|
ListProperties | — | List all properties with types and defaults |
AddProperty | name, property_type, description?, icon?, default_value? | Add a property to the schema |
UpdateProperty | key, name?, description?, icon?, default_value? | Update an existing property |
RemoveProperty | key | Remove a property |
Supported property_type values: text, number, boolean, color, date, url, json, select, cloze, formula.
| Intent | Parameters | Purpose |
|---|
ListPlacements | — | List all placements on the grid |
AddPlacement | component_id, layout?, bindings? | Add a component to the grid |
UpdatePlacement | id, layout?, bindings? | Update placement layout/bindings |
RemovePlacement | id | Remove a placement |
The layout parameter is an AutoGridNode — the worksheet’s grid layout system. When omitted, the placement uses default grid positioning.
| Intent | Parameters | Purpose |
|---|
UpdateBinding | placement_id, key, value | Update a single binding value on a placement |
| Intent | Parameters | Purpose |
|---|
UpdateGrid | rows?, columns? | Update worksheet grid dimensions |
| Intent | Purpose |
|---|
Recompile | Force recompilation of all placements |
Intent handlers emit the same structured output types as the whiteboard:
pub struct PropertyListOutput {
pub properties: Vec<PropertyInfo>,
pub struct MutationOutput {
pub message: Option<String>,
- Overview — struct, types, compilation flow
- Components — the
WorksheetComponent subtrait
Command — the universal envelope wrapping intents
Bridge — how intents become AI tools