mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-03-29 19:51:39 +00:00
added a toc to the docs
This commit is contained in:
parent
e68a839619
commit
4a905cf3d2
@ -3,11 +3,48 @@
|
|||||||
This folder keeps the Lua manifest (`plugin.lua`) that defines a custom assistant. Treat it as the single source of truth for how AI Studio renders your assistant UI and builds the submitted prompt.
|
This folder keeps the Lua manifest (`plugin.lua`) that defines a custom assistant. Treat it as the single source of truth for how AI Studio renders your assistant UI and builds the submitted prompt.
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
- [Assistant Plugin Reference](#assistant-plugin-reference)
|
||||||
|
- [How to Use This Documentation](#how-to-use-this-documentation)
|
||||||
|
- [Directory Structure](#directory-structure)
|
||||||
|
- [Structure](#structure)
|
||||||
|
- [Supported types (matching the Blazor UI components):](#supported-types-matching-the-blazor-ui-components)
|
||||||
|
- [Component References](#component-references)
|
||||||
|
- [`TEXT_AREA` reference](#text_area-reference)
|
||||||
|
- [`BUTTON` reference](#button-reference)
|
||||||
|
- [`Action(input)` interface](#actioninput-interface)
|
||||||
|
- [`BUTTON_GROUP` reference](#button_group-reference)
|
||||||
|
- [`SWITCH` reference](#switch-reference)
|
||||||
|
- [`COLOR_PICKER` reference](#color_picker-reference)
|
||||||
|
- [Prompt Assembly - UserPrompt Property](#prompt-assembly---userprompt-property)
|
||||||
|
- [Advanced Prompt Assembly - BuildPrompt()](#advanced-prompt-assembly---buildprompt)
|
||||||
|
- [Interface](#interface)
|
||||||
|
- [`input` table shape](#input-table-shape)
|
||||||
|
- [Using `meta` inside BuildPrompt](#using-meta-inside-buildprompt)
|
||||||
|
- [Example: iterate all fields with labels and include their values](#example-iterate-all-fields-with-labels-and-include-their-values)
|
||||||
|
- [Example: handle types differently](#example-handle-types-differently)
|
||||||
|
- [Using `profile` inside BuildPrompt](#using-profile-inside-buildprompt)
|
||||||
|
- [Example: Add user profile context to the prompt](#example-add-user-profile-context-to-the-prompt)
|
||||||
|
- [Advanced Layout Options](#advanced-layout-options)
|
||||||
|
- [`LAYOUT_GRID` reference](#layout_grid-reference)
|
||||||
|
- [`LAYOUT_ITEM` reference](#layout_item-reference)
|
||||||
|
- [`LAYOUT_PAPER` reference](#layout_paper-reference)
|
||||||
|
- [`LAYOUT_STACK` reference](#layout_stack-reference)
|
||||||
|
- [Useful Lua Functions](#useful-lua-functions)
|
||||||
|
- [Included lua libraries](#included-lua-libraries)
|
||||||
|
- [Logging helpers](#logging-helpers)
|
||||||
|
- [Example: Use Logging in lua functions](#example-use-logging-in-lua-functions)
|
||||||
|
- [Date/time helpers (assistant plugins only)](#datetime-helpers-assistant-plugins-only)
|
||||||
|
- [Example: Use Logging in lua functions](#example-use-logging-in-lua-functions)
|
||||||
|
- [General Tips](#general-tips)
|
||||||
|
- [Useful Resources](#useful-resources)
|
||||||
|
|
||||||
## How to use this Documention
|
## How to Use This Documentation
|
||||||
Fill our here
|
Use this README in layers. The early sections are a quick reference for the overall assistant manifest shape and the available component types, while the later `... reference` sections are the full detail for each component and advanced behavior.
|
||||||
|
|
||||||
|
When you build a plugin, start with the directory layout and the `Structure` section, then jump to the component references you actually use. The resource links at the end are the primary sources for Lua and MudBlazor behavior, and the `General Tips` section collects the practical rules and gotchas that matter most while authoring `plugin.lua`.
|
||||||
|
|
||||||
## Directory Structure
|
## Directory Structure
|
||||||
|
Each assistant plugin lives in its own directory under the assistants plugin root. In practice, you usually keep the manifest in `plugin.lua`, optional icon rendering in `icon.lua`, and any bundled media in `assets/`.
|
||||||
|
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
@ -72,7 +109,7 @@ More information on rendered components can be found [here](https://www.mudblazo
|
|||||||
- `ReadOnly`: defaults to `false`; disables editing.
|
- `ReadOnly`: defaults to `false`; disables editing.
|
||||||
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
||||||
|
|
||||||
#### Example:
|
#### Example Textarea component
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "TEXT_AREA",
|
["Type"] = "TEXT_AREA",
|
||||||
@ -121,7 +158,7 @@ More information on rendered components can be found [here](https://www.mudblazo
|
|||||||
- `SWITCH`: boolean values
|
- `SWITCH`: boolean values
|
||||||
- Unknown field names and wrong value types are ignored and logged.
|
- Unknown field names and wrong value types are ignored and logged.
|
||||||
|
|
||||||
#### Example:
|
#### Example Button component
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "BUTTON",
|
["Type"] = "BUTTON",
|
||||||
@ -172,7 +209,7 @@ More information on rendered components can be found [here](https://www.mudblazo
|
|||||||
- `Class`, `Style`: forwarded to the rendered `MudButtonGroup` for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered `MudButtonGroup` for layout/styling.
|
||||||
- Child buttons use the existing `BUTTON` props and behavior, including Lua `Action(input)`.
|
- Child buttons use the existing `BUTTON` props and behavior, including Lua `Action(input)`.
|
||||||
|
|
||||||
#### Example:
|
#### Example Button-Group component
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "BUTTON_GROUP",
|
["Type"] = "BUTTON_GROUP",
|
||||||
@ -235,7 +272,7 @@ More information on rendered components can be found [here](https://www.mudblazo
|
|||||||
- `UncheckedColor`: color used when the switch state is `false`; omitted values default to `Inherit`.
|
- `UncheckedColor`: color used when the switch state is `false`; omitted values default to `Inherit`.
|
||||||
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
||||||
|
|
||||||
#### Example:
|
#### Example Switch component
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "SWITCH",
|
["Type"] = "SWITCH",
|
||||||
@ -272,7 +309,7 @@ More information on rendered components can be found [here](https://www.mudblazo
|
|||||||
- `UserPrompt`: prompt context text for the selected color.
|
- `UserPrompt`: prompt context text for the selected color.
|
||||||
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered component for layout/styling.
|
||||||
|
|
||||||
#### Example:
|
#### Example Colorpicker component
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "COLOR_PICKER",
|
["Type"] = "COLOR_PICKER",
|
||||||
@ -388,7 +425,7 @@ end
|
|||||||
### Using `profile` inside BuildPrompt
|
### Using `profile` inside BuildPrompt
|
||||||
Profiles are optional user context (e.g., "NeedToKnow" and "Actions"). You can inject this directly into the user prompt if you want the LLM to always see it.
|
Profiles are optional user context (e.g., "NeedToKnow" and "Actions"). You can inject this directly into the user prompt if you want the LLM to always see it.
|
||||||
|
|
||||||
#### Example:
|
#### Example: Add user profile context to the prompt
|
||||||
```lua
|
```lua
|
||||||
ASSISTANT.BuildPrompt = function(input)
|
ASSISTANT.BuildPrompt = function(input)
|
||||||
local parts = {}
|
local parts = {}
|
||||||
@ -404,6 +441,22 @@ end
|
|||||||
## Advanced Layout Options
|
## Advanced Layout Options
|
||||||
|
|
||||||
### `LAYOUT_GRID` reference
|
### `LAYOUT_GRID` reference
|
||||||
|
A 12-column grid system for organizing content with responsive breakpoints for different screen sizes.
|
||||||
|
```
|
||||||
|
+------------------------------------------------------------+
|
||||||
|
| 12 |
|
||||||
|
+------------------------------------------------------------+
|
||||||
|
|
||||||
|
+----------------------------+ +----------------------------+
|
||||||
|
| 6 | | 6 |
|
||||||
|
+----------------------------+ +----------------------------+
|
||||||
|
|
||||||
|
+------------+ +------------+ +-----------+ +-------------+
|
||||||
|
| 3 | | 3 | | 3 | | 3 |
|
||||||
|
+------------+ +------------+ +-----------+ +-------------+
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
- Use `Type = "LAYOUT_GRID"` to render a MudBlazor grid container.
|
- Use `Type = "LAYOUT_GRID"` to render a MudBlazor grid container.
|
||||||
- Required props:
|
- Required props:
|
||||||
- `Name`: unique identifier for the layout node.
|
- `Name`: unique identifier for the layout node.
|
||||||
@ -414,7 +467,7 @@ end
|
|||||||
- `Spacing`: integer spacing between grid items; omitted values fall back to `6`.
|
- `Spacing`: integer spacing between grid items; omitted values fall back to `6`.
|
||||||
- `Class`, `Style`: forwarded to the rendered `MudGrid` for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered `MudGrid` for layout/styling.
|
||||||
|
|
||||||
Example:
|
#### Example: How to define a flexible grid
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "LAYOUT_GRID",
|
["Type"] = "LAYOUT_GRID",
|
||||||
@ -452,9 +505,15 @@ Example:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
For a visual example and a full explanation look [here](https://www.mudblazor.com/components/grid#spacing)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `LAYOUT_ITEM` reference
|
### `LAYOUT_ITEM` reference
|
||||||
|
`LAYOUT_ITEM` is used to wrap children components to use them into a grid.
|
||||||
|
The Breakpoints define how many columns the wrapped components take up in a 12-column grid.
|
||||||
|
Read more about breakpoint [here](https://www.mudblazor.com/features/breakpoints#breakpoints).
|
||||||
|
|
||||||
- Use `Type = "LAYOUT_ITEM"` to render a MudBlazor grid item.
|
- Use `Type = "LAYOUT_ITEM"` to render a MudBlazor grid item.
|
||||||
- Required props:
|
- Required props:
|
||||||
- `Name`: unique identifier for the layout node.
|
- `Name`: unique identifier for the layout node.
|
||||||
@ -465,7 +524,7 @@ Example:
|
|||||||
- `Class`, `Style`: forwarded to the rendered `MudItem` for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered `MudItem` for layout/styling.
|
||||||
- `Children` may contain any other assistant components you want to place inside the item.
|
- `Children` may contain any other assistant components you want to place inside the item.
|
||||||
|
|
||||||
Example:
|
#### Example: How to wrap a child component and define its breakpoints
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "LAYOUT_ITEM",
|
["Type"] = "LAYOUT_ITEM",
|
||||||
@ -478,11 +537,12 @@ Example:
|
|||||||
{
|
{
|
||||||
["Type"] = "<TEXT_AREA|BUTTON|BUTTON_GROUP|SWITCH|PROVIDER_SELECTION|...>",
|
["Type"] = "<TEXT_AREA|BUTTON|BUTTON_GROUP|SWITCH|PROVIDER_SELECTION|...>",
|
||||||
["Props"] = {...},
|
["Props"] = {...},
|
||||||
},
|
}
|
||||||
...
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
For a full explanation look [here](https://www.mudblazor.com/api/MudItem#pages)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `LAYOUT_PAPER` reference
|
### `LAYOUT_PAPER` reference
|
||||||
@ -497,7 +557,7 @@ Example:
|
|||||||
- `Class`, `Style`: forwarded to the rendered `MudPaper` for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered `MudPaper` for layout/styling.
|
||||||
- `Children` may contain any other assistant components you want to wrap.
|
- `Children` may contain any other assistant components you want to wrap.
|
||||||
|
|
||||||
Example:
|
#### Example: How to define a MudPaper wrapping child components
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "LAYOUT_PAPER",
|
["Type"] = "LAYOUT_PAPER",
|
||||||
@ -516,6 +576,8 @@ Example:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
For a visual example and a full explanation look [here](https://www.mudblazor.com/components/paper#material-design)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `LAYOUT_STACK` reference
|
### `LAYOUT_STACK` reference
|
||||||
@ -534,7 +596,7 @@ Example:
|
|||||||
- `Class`, `Style`: forwarded to the rendered `MudStack` for layout/styling.
|
- `Class`, `Style`: forwarded to the rendered `MudStack` for layout/styling.
|
||||||
- `Children` may contain any other assistant components you want to arrange.
|
- `Children` may contain any other assistant components you want to arrange.
|
||||||
|
|
||||||
Example:
|
#### Example: Define a stack of children components
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
["Type"] = "LAYOUT_STACK",
|
["Type"] = "LAYOUT_STACK",
|
||||||
@ -544,11 +606,19 @@ Example:
|
|||||||
["Align"] = "Center",
|
["Align"] = "Center",
|
||||||
["Justify"] = "SpaceBetween",
|
["Justify"] = "SpaceBetween",
|
||||||
["Spacing"] = 2
|
["Spacing"] = 2
|
||||||
|
},
|
||||||
|
["Children"] = {
|
||||||
|
{
|
||||||
|
["Type"] = "<TEXT_AREA|BUTTON|BUTTON_GROUP|SWITCH|PROVIDER_SELECTION|...>",
|
||||||
|
["Props"] = {...},
|
||||||
|
},
|
||||||
|
...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
For a visual example and a full explanation look [here](https://www.mudblazor.com/components/stack#basic-usage)
|
||||||
|
|
||||||
## Useful Functions
|
## Useful Lua Functions
|
||||||
### Included lua libraries
|
### Included lua libraries
|
||||||
- [Basic Functions Library](https://www.lua.org/manual/5.2/manual.html#6.1)
|
- [Basic Functions Library](https://www.lua.org/manual/5.2/manual.html#6.1)
|
||||||
- [Coroutine Manipulation Library](https://www.lua.org/manual/5.2/manual.html#6.2)
|
- [Coroutine Manipulation Library](https://www.lua.org/manual/5.2/manual.html#6.2)
|
||||||
@ -566,7 +636,7 @@ The assistant runtime exposes basic logging helpers to Lua. Use them to debug cu
|
|||||||
- `LogWarn(message)`
|
- `LogWarn(message)`
|
||||||
- `LogError(message)`
|
- `LogError(message)`
|
||||||
|
|
||||||
#### Example:
|
#### Example: Use Logging in lua functions
|
||||||
```lua
|
```lua
|
||||||
ASSISTANT.BuildPrompt = function(input)
|
ASSISTANT.BuildPrompt = function(input)
|
||||||
LogInfo("BuildPrompt called")
|
LogInfo("BuildPrompt called")
|
||||||
@ -584,7 +654,7 @@ Use these when you need timestamps inside Lua.
|
|||||||
- Members: `year`, `month`, `day`, `hour`, `minute`, `second`, `millisecond`, `formatted`.
|
- Members: `year`, `month`, `day`, `hour`, `minute`, `second`, `millisecond`, `formatted`.
|
||||||
- `Timestamp()` returns a UTC timestamp in ISO-8601 format (`O` / round-trip), e.g. `2026-03-02T21:15:30.1234567Z`.
|
- `Timestamp()` returns a UTC timestamp in ISO-8601 format (`O` / round-trip), e.g. `2026-03-02T21:15:30.1234567Z`.
|
||||||
|
|
||||||
#### Example:
|
#### Example: Use the datetime functions in lua
|
||||||
```lua
|
```lua
|
||||||
local dt = DateTime("yyyy-MM-dd HH:mm:ss")
|
local dt = DateTime("yyyy-MM-dd HH:mm:ss")
|
||||||
LogInfo(dt.formatted)
|
LogInfo(dt.formatted)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user