@slexkit/mcp 0.4.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,301 +1,3 @@
1
- # SlexKit ToolHost for LLMs
1
+ # ToolHost
2
2
 
3
- ToolHost is the structured-input path for confirmations, choices, and forms. Do not use it for ordinary display-only UI.
4
-
5
- ## ToolHost
6
-
7
- Raw Markdown: /docs/reference/toolhost.md
8
-
9
- ---
10
- title: ToolHost
11
- category: Reference
12
- status: ready
13
- order: 70
14
- summary: "Structured user-input UI for confirmations, choices, forms, and templates."
15
- slexkitRenderMode: component
16
- ---
17
-
18
- # ToolHost
19
-
20
- ToolHost bridges tool calls to interactive UI. When a model asks for confirmation, a choice, or form input, ToolHost renders the structured UI in the browser and returns the user's response as a `ToolResult`.
21
-
22
- ## Concepts
23
-
24
- When a model emits a tool call such as `confirm-action` or `fill-form`, ToolHost compiles it into a standard `SlexExpression` and mounts it using the core runtime. The mounted UI uses `submit:actions` to submit the user's input and settle a Promise.
25
-
26
- ToolHost is **separate from display-oriented `slex` fences**. Display components render information; ToolHost components collect structured user input and return it programmatically.
27
-
28
- ### Submit
29
-
30
- `submit:actions` reads the fields listed in `returnKeys`, calls the ToolHost runtime, and resolves the `ToolRenderHandle.promise` with a `ToolResult`.
31
-
32
- Do not use `submit` in display fences or component demos. Use `button` for ordinary interactions; use `submit:actions` only when the host is waiting for a structured tool result.
33
-
34
- ## Public API
35
-
36
- ### `renderToolCall(call, container) → ToolRenderHandle`
37
-
38
- Compiles a tool call into a SlexExpression, mounts it, and returns a handle.
39
-
40
- ```ts
41
- function renderToolCall(call: ToolCall, container: HTMLElement): ToolRenderHandle;
42
- ```
43
-
44
- ```ts
45
- type ToolRenderHandle = {
46
- promise: Promise<ToolResult>; // Resolves when user submits or ignores
47
- dispose: () => void; // Clean up the rendered UI
48
- };
49
-
50
- type ToolResult =
51
- | { toolCallId?: string; toolName: string; status: "submitted"; value: Record<string, unknown> }
52
- | { toolCallId?: string; toolName: string; status: "ignored"; value: null };
53
- ```
54
-
55
- **Usage:**
56
-
57
- ```js
58
- import { renderToolCall } from "slexkit";
59
-
60
- const handle = renderToolCall(
61
- {
62
- id: "call_001",
63
- name: "confirm-action",
64
- arguments: {
65
- title: "Delete file?",
66
- description: "This action cannot be undone.",
67
- confirmLabel: "Delete",
68
- requireReason: true,
69
- },
70
- },
71
- document.getElementById("tool-container"),
72
- );
73
-
74
- handle.promise.then((result) => {
75
- console.log(result.status); // "submitted" or "ignored"
76
- console.log(result.value); // { confirmed: true, reason: "Obsolete file" }
77
- handle.dispose();
78
- });
79
- ```
80
-
81
- ### `registerToolTemplate(name, compiler)`
82
-
83
- Register a custom tool template. The compiler function receives the tool arguments and returns a `SlexExpression`.
84
-
85
- ```ts
86
- function registerToolTemplate(name: string, compiler: ToolTemplateCompiler): void;
87
-
88
- type ToolTemplateCompiler<TArgs = Record<string, unknown>> = (
89
- args: TArgs,
90
- runtime: ToolRuntime,
91
- call: ToolCall,
92
- ) => SlexExpression;
93
-
94
- type ToolRuntime = {
95
- submit: (value: Record<string, unknown>) => void;
96
- ignore: () => void;
97
- };
98
- ```
99
-
100
- ## Built-in templates
101
-
102
- ### `confirm-action`
103
-
104
- Yes/no confirmation dialog. Supports an optional reason field.
105
-
106
- **Arguments (`ConfirmActionArguments`):**
107
-
108
- | Field | Type | Default | Description |
109
- |-------|------|---------|-------------|
110
- | `title` | `string` | `"Confirm action"` | Dialog title |
111
- | `description` | `string` | — | Optional explanation text |
112
- | `confirmLabel` | `string` | `"Confirm"` | Submit button label |
113
- | `ignoreLabel` | `string` | `"Ignore"` | Cancel button label |
114
- | `requireReason` | `boolean` | `false` | Show a reason text input |
115
- | `reasonLabel` | `string` | `"Reason"` | Label for the reason input |
116
- | `reasonPlaceholder` | `string` | `"Add a reason"` | Placeholder for the reason input |
117
-
118
- **Result value:**
119
-
120
- | Key | Type | Description |
121
- |-----|------|-------------|
122
- | `confirmed` | `boolean` | Always `true` when submitted |
123
- | `reason` | `string` | User's reason text (only if `requireReason: true`) |
124
-
125
- **Example:**
126
-
127
- ```js
128
- renderToolCall({
129
- name: "confirm-action",
130
- arguments: {
131
- title: "Delete project?",
132
- description: "This will permanently delete all files.",
133
- confirmLabel: "Delete",
134
- requireReason: true,
135
- },
136
- }, container);
137
- ```
138
-
139
- ### `choose-options` / `option-list`
140
-
141
- Single or multi-select option list. `option-list` is an alias for `choose-options` — behavior is identical.
142
-
143
- **Arguments (`ChooseOptionsArguments` / `OptionListArguments`):**
144
-
145
- | Field | Type | Default | Description |
146
- |-------|------|---------|-------------|
147
- | `title` | `string` | `"Choose options"` | Dialog title |
148
- | `description` | `string` | — | Optional explanation text |
149
- | `options` / `items` | `OptionListItem[]` | `[]` | List of selectable items |
150
- | `multiple` | `boolean` | `true` | Allow multiple selection |
151
- | `selected` | `string[]` | auto | Pre-selected item IDs |
152
- | `minSelected` | `number` | `0` | Minimum required selections |
153
- | `maxSelected` | `number` | `Infinity` | Maximum allowed selections |
154
- | `submitLabel` | `string` | `"Submit"` | Submit button label |
155
- | `ignoreLabel` | `string` | `"Ignore"` | Cancel button label |
156
-
157
- **OptionListItem:**
158
-
159
- | Field | Type | Description |
160
- |-------|------|-------------|
161
- | `label` | `string` | Display text (required) |
162
- | `id` | `string` | Unique identifier (defaults to `value` or index) |
163
- | `value` | `string` | Submitted value (defaults to `id`) |
164
- | `description` | `string` | Secondary text shown after label |
165
- | `selected` | `boolean` | Pre-selected state |
166
- | `disabled` | `boolean` | Disabled state |
167
-
168
- **Rendering:**
169
- - When `multiple: true` (default): renders **checkboxes**
170
- - When `multiple: false`: renders a **radio group**
171
-
172
- **Result value:**
173
-
174
- | Key | Type | Description |
175
- |-----|------|-------------|
176
- | `selected` | `string[]` | IDs of selected items |
177
-
178
- **Example:**
179
-
180
- ```js
181
- renderToolCall({
182
- name: "choose-options",
183
- arguments: {
184
- title: "Select dependencies",
185
- options: [
186
- { id: "react", label: "React", description: "UI library" },
187
- { id: "vue", label: "Vue", description: "Progressive framework" },
188
- { id: "svelte", label: "Svelte", description: "Compiled framework", selected: true },
189
- ],
190
- multiple: true,
191
- minSelected: 1,
192
- maxSelected: 2,
193
- },
194
- }, container);
195
- ```
196
-
197
- ### `fill-form`
198
-
199
- Multi-field form with various field types.
200
-
201
- **Arguments (`FillFormArguments`):**
202
-
203
- | Field | Type | Default | Description |
204
- |-------|------|---------|-------------|
205
- | `title` | `string` | `"Fill form"` | Form title |
206
- | `description` | `string` | — | Optional explanation text |
207
- | `fields` | `FormField[]` | `[]` | Form field definitions |
208
- | `values` | `Record<string, unknown>` | — | Initial field values |
209
- | `submitLabel` | `string` | `"Submit"` | Submit button label |
210
- | `ignoreLabel` | `string` | `"Ignore"` | Cancel button label |
211
-
212
- **FormField:**
213
-
214
- | Field | Type | Default | Description |
215
- |-------|------|---------|-------------|
216
- | `name` | `string` | (required) | Field name (used as key in result value) |
217
- | `type` | `FormFieldType` | `"text"` | Field type |
218
- | `label` | `string` | `name` | Display label |
219
- | `description` | `string` | — | Help text below the field |
220
- | `placeholder` | `string` | — | Input placeholder |
221
- | `required` | `boolean` | `false` | Require non-empty value to submit |
222
- | `disabled` | `boolean` | `false` | Disable the field |
223
- | `value` | `unknown` | — | Initial value |
224
- | `options` | `Array<{label, value}>` | — | Options for `select` type |
225
-
226
- **FormFieldType:**
227
-
228
- | Type | Renders | Description |
229
- |------|---------|-------------|
230
- | `text` | `<input>` | Free-form text |
231
- | `number` | `<input type="number">` | Numeric input, value is `number \| null` |
232
- | `engineering` | `<input>` with SI prefix parsing | Accepts values like `"10kΩ"`, `"100nF"`, `"1.5MegHz"`. Parsed with `parseEngineeringNumber()`. State includes `raw`, `number`, `valid`, `prefix`, `unit`, `normalized` |
233
- | `select` | `<select>` | Dropdown from `options` array |
234
- | `checkbox` | Checkbox | Boolean toggle |
235
- | `switch` | Switch toggle | Boolean toggle (switch style) |
236
-
237
- **Result value:**
238
-
239
- An object with a key for each field name, containing the submitted value. For `engineering` fields, the raw input string is submitted. For `checkbox`/`switch` fields, a boolean is submitted. For `number` fields, a number or `null` is submitted.
240
-
241
- **Example:**
242
-
243
- ```js
244
- renderToolCall({
245
- name: "fill-form",
246
- arguments: {
247
- title: "New project",
248
- fields: [
249
- { name: "name", type: "text", label: "Project name", required: true },
250
- { name: "framework", type: "select", label: "Framework", options: [
251
- { label: "React", value: "react" },
252
- { label: "Svelte", value: "svelte" },
253
- ]},
254
- { name: "resistance", type: "engineering", label: "Target resistance", placeholder: "e.g. 10kΩ" },
255
- { name: "typescript", type: "checkbox", label: "Use TypeScript", value: true },
256
- ],
257
- },
258
- }, container);
259
- ```
260
-
261
- ## Writing a custom template
262
-
263
- Implement the `ToolTemplateCompiler` function and register it:
264
-
265
- ```js
266
- import { registerToolTemplate, renderToolCall } from "slexkit";
267
-
268
- registerToolTemplate("greet-user", (args, runtime, call) => ({
269
- namespace: `tool_greet_${Date.now()}`,
270
- g: {
271
- __slexkitTool: runtime,
272
- name: args.name || "World",
273
- },
274
- layout: {
275
- "card:tool": {
276
- title: "Greeting",
277
- "text:message": { "$content": "'Hello, ' + g.name + '!'" },
278
- "submit:actions": {
279
- returnKeys: ["name"],
280
- submitLabel: args.submitLabel || "OK",
281
- ignoreLabel: args.ignoreLabel || "Cancel",
282
- },
283
- },
284
- },
285
- }));
286
-
287
- renderToolCall(
288
- { name: "greet-user", arguments: { name: "Alice" } },
289
- container,
290
- );
291
- ```
292
-
293
- ### Key patterns
294
-
295
- 1. **`__slexkitTool`** — Set `g.__slexkitTool = runtime` to give expressions access to `submit()` and `ignore()`
296
- 2. **`submit:actions`** — Always include a `submit:actions` component to submit the result. Set `returnKeys` to the property names that should be included in the result value
297
- 3. **`canSubmit`** — Add a `g.canSubmit()` method to control the submit button's disabled state
298
- 4. **Unique namespace** — Use a timestamp-based namespace to avoid collisions with other tool calls
299
- 5. **Validation** — Implement validation logic in `g` methods and wire `$disabled` on the submit button
300
-
301
- ---
3
+ ToolHost renders structured tool requests such as confirmation, option selection, and form filling. It is a host-controlled workflow and remains separate from ordinary display-oriented `slex` HTML. Tool results cross an explicit submit/ignore boundary; do not imitate tool submission with arbitrary artifact code.
@@ -1,96 +1,101 @@
1
1
  # SlexKit > Markdown-friendly reactive UI runtime for AI output
2
2
 
3
- ## LLM Documentation Files
3
+ Version: 0.5.2
4
4
 
5
- - [Full documentation](/llms-full.txt): all canonical English docs pages in one text file.
6
- - [Component reference](/llms-components.txt): component docs index plus generated props/state reference.
7
- - [Runtime docs](/llms-runtime.txt): runtime, host integration, and secure rendering docs.
8
- - [Capabilities](/llms-capabilities.txt): expression context, `std.*` standard library, and policy-gated `api.*`.
9
- - [ToolHost docs](/llms-toolhost.txt): structured user-input UI docs.
10
- - [Authoring rules](/llms-authoring.txt): concise rules for Markdown `slex` fences.
11
- - [AI manifest](/slexkit-ai-manifest.json): structured page, component, and hash metadata.
12
- - [Standard manifest](/standard/slex-standard-manifest.json): schema, component catalog, logic profile, capabilities, and conformance metadata.
13
- - [Logic profile](/standard/slex-logic-profile.json): `$` read-pipes, `on*` write-pipes, directives, context, and secure-mode guidance.
14
- - [Component catalog](/standard/slex-component-catalog.json): public component props, state modes, children, examples, docs, and hashes.
5
+ ## Machine-readable documentation
15
6
 
16
- SlexKit raw docs are Markdown (`.md`) with explicit `slex` fences. The interactive layer is the fenced `slex` source inside each Markdown page.
17
-
18
- Version: 0.4.0
19
-
20
- ## Table of Contents
7
+ - [Complete documentation](/llms-full.txt)
8
+ - [Custom-element catalog and examples](/llms-components.txt)
9
+ - [Runtime reference](/llms-runtime.txt)
10
+ - [Sandbox SDK and capabilities](/llms-capabilities.txt)
11
+ - [ToolHost reference](/llms-toolhost.txt)
12
+ - [HTML authoring rules](/llms-authoring.txt)
13
+ - [AI documentation manifest](/slexkit-ai-manifest.json)
14
+ - [Standard manifest](/standard/slex-standard-manifest.json)
15
+ - [HTML profile](/standard/slex-html-profile.json)
16
+ - [Custom-element catalog](/standard/slex-custom-elements.catalog.json)
17
+ - [Sandbox SDK](/standard/slex-sandbox-sdk.json)
18
+ - [Static policy](/standard/slex-static-policy.json)
19
+ - [HTML conformance fixtures](/standard/slex-html-conformance.json)
21
20
 
22
21
  ### Guides
23
- - [README](/README.md): Root package overview and installation matrix.
24
- - [SlexKit Introduction](/docs/guides/intro.md): What SlexKit is and where it fits.
25
- - [Quick Start](/docs/guides/quick-start.md): Install SlexKit and render a first Markdown-friendly Slex source.
26
- - [Integration](/docs/guides/integration.md): Streamdown, Tiptap, Obsidian, and custom Markdown hosts for explicit Slex fences.
27
- - [Design Guidelines](/docs/guides/design.md): Design and authoring guidelines for SlexKit components and docs.
28
- - [Secure Runtime Setup](/docs/guides/security-runtime.md): Decision and setup guide for rendering untrusted or agent-generated Slex source.
22
+
29
23
  - [AI / Agents](/docs/guides/ai-agents.md): LLM docs, MCP server, skills, and authoring rules for SlexKit agents.
24
+ - [Design Philosophy](/docs/guides/design.md): Design principles for live Markdown, components, and agent-generated UI.
25
+ - [Getting Started](/docs/guides/quick-start.md): Install SlexKit, mount a first fragment, and keep readable Markdown fallback.
26
+ - [Integration](/docs/guides/integration.md): Connect SlexKit to assistant-ui, Streamdown, Tiptap, Obsidian, or a custom Markdown renderer.
27
+ - [Secure Runtime Setup](/docs/guides/security-runtime.md): Run unreviewed user input, third-party Markdown, or agent output in the isolated HTML document host.
28
+ - [SlexKit Introduction](/docs/guides/intro.md): Markdown-friendly reactive UI runtime for explicit slex fences.
30
29
 
31
30
  ### Examples
32
- - [第一个 SlexKit 卡片](/zh-CN/examples/hello-slexkit.md): 静态 SlexKit 卡片示例,使用 section、grid、stat、table 和 callout 组织内容。
33
- - [第一个交互:滑块操控数据](/zh-CN/examples/first-interaction.md): 在 SlexKit 卡片中加入 g 对象、滑块输入和响应式表达式。
34
- - [多输入协同:两个滑块联动](/zh-CN/examples/multi-input-coordination.md): 两个 slider 相互影响,引入 g 方法、formula 组件和条件渲染。
35
- - [分支与切换:模式选择器](/zh-CN/examples/tabs-and-branching.md): 用 select 切换 mode 状态,并根据当前模式渲染不同输入和结果。
36
- - [五险一金计算器](/zh-CN/examples/salary-calculator.md): 输入工资基数和城市,计算五险一金明细,显示个人缴纳、单位缴纳和总计。
37
- - [软件项目成本估算器](/zh-CN/examples/project-cost-estimator.md): 输入团队规模、开发周期和人员成本,计算项目总成本和人均成本。
38
- - [分压器计算器](/zh-CN/examples/voltage-divider.md): 输入电压和两个电阻值,计算分压输出,并评估负载效应带来的误差。
39
- - [RC 低通滤波器](/zh-CN/examples/rc-low-pass-filter.md): 用电阻和电容搭建的频率选择电路,计算截止频率和任意频率下的增益衰减。
40
- - [波特率误差计算器](/zh-CN/examples/baud-rate-calculator.md): 输入晶振频率和目标波特率,计算 UART 波特率误差百分比,判断通信可靠性。
41
- - [搜索与过滤表格](/zh-CN/examples/search-filter-table.md): 搜索输入框实时过滤表格行,并用 collapsible 展开行详情。
42
- - [项目仪表盘](/zh-CN/examples/project-dashboard.md): 用 section + grid 搭建信息仪表盘,覆盖 Sprint 进度、质量指标和团队健康度的多卡片联动。
43
- - [ToolHost 表单提问](/zh-CN/examples/form-wizard-steps.md): ToolHost 在对话中渲染表单卡片,收集项目信息并提交结构化结果。
44
- - [ToolHost 工具调用 UI](/zh-CN/examples/toolhost-demo.md): 把 function_call 渲染成对话内工具卡片,再把提交结果写回 function_call_output。
45
- - [技术选型评估](/zh-CN/examples/tech-selection-evaluator.md): 评估不同技术方案的优劣,通过跨 fence 联动实现参数选择、评分分析和结论推荐。
46
- - [自建还是外购决策](/zh-CN/examples/roi-estimator.md): 自建还是外购决策矩阵——功能覆盖、成本对比、时间线、风险四维度评估,自动推荐方案。
47
- - [跨文档状态实验室](/zh-CN/examples/cross-doc-state-lab.md): 多块 `slex` 代码使用同一个 namespace,共享同一份响应式 `g` 状态。
48
- - [JSONPlaceholder 网络请求实验台](/zh-CN/examples/network-policy-fetch-card.md): 用 JSONPlaceholder 演示 secure runtime 如何把用户触发的网络请求交给 host policy 审核和代理。
49
- - [assistant-ui 接入](/zh-CN/examples/assistant-ui-host.md): 在 assistant-ui 的 Streamdown text message parts 中渲染显式 slex fences。
50
- - [Streamdown 接入](/zh-CN/examples/streamdown-host.md): React/Streamdown 适配器示例,在 Markdown 页面中渲染显式 `slex` 代码块。
51
- - [Tiptap 编辑器接入](/zh-CN/examples/tiptap-host.md): Tiptap CodeBlock 适配器:只把显式 slex 代码块渲染为预览,普通代码块和 Markdown 导入/导出保持 Tiptap 行为。
31
+
32
+ - [Artifact Shared State Lab](/docs/examples/cross-doc-state-lab.md): Synchronize JSON state between three independent fences in the same artifact.
33
+ - [assistant-ui Integration](/docs/examples/assistant-ui-host.md): assistant-ui adapter for rendering explicit slex fences inside Streamdown text message parts.
34
+ - [Baud Rate Error Calculator](/docs/examples/baud-rate-calculator.md): Enter crystal frequency and target baud rate to calculate UART baud rate error percentage and judge communication reliability.
35
+ - [Branching: Mode Selector](/docs/examples/tabs-and-branching.md): Use select to switch the mode state and render different inputs and results.
36
+ - [Build vs Buy Decision](/docs/examples/roi-estimator.md): A build-vs-buy decision matrix — four-dimension evaluation across feature coverage, cost, timeline, and risk with automatic recommendation.
37
+ - [First Interaction: Button Counter](/docs/examples/first-interaction.md): A button updates a stat through native click handling and live component properties.
38
+ - [First SlexKit Card](/docs/examples/hello-slexkit.md): A static card with text and badge custom elements; no script is required.
39
+ - [JSONPlaceholder Network Request Lab](/docs/examples/network-policy-fetch-card.md): Uses JSONPlaceholder to demonstrate how the secure runtime delegates user-triggered network requests to host policy for review and proxying.
40
+ - [Multi-Input Coordination](/docs/examples/multi-input-coordination.md): An input and slider feed one JavaScript calculation through native input events.
41
+ - [Project Dashboard](/docs/examples/project-dashboard.md): Build an information dashboard with section + grid — covering Sprint progress, quality metrics, and team health with multi-card coordination.
42
+ - [RC Low-Pass Filter](/docs/examples/rc-low-pass-filter.md): A frequency-selective circuit built with a resistor and capacitor — calculate cutoff frequency and gain attenuation at any frequency.
43
+ - [Search and Filter Table](/docs/examples/search-filter-table.md): A search input filters table rows in real time and uses collapsible for row details.
44
+ - [Social Insurance Calculator](/docs/examples/salary-calculator.md): Enter a salary and city to calculate China's social insurance breakdown — showing personal contributions, employer contributions, and take-home pay.
45
+ - [Software Project Cost Estimator](/docs/examples/project-cost-estimator.md): Enter team size, development timeline, and per-person cost to calculate total project cost and monthly burn rate.
46
+ - [Streamdown Integration](/docs/examples/streamdown-host.md): A React/Streamdown adapter that takes over explicit slex fences and leaves ordinary Markdown and code blocks to Streamdown.
47
+ - [Technology Selection Evaluator](/docs/examples/tech-selection-evaluator.md): Compare example technology scores across performance, ecosystem, learning, and maintenance.
48
+ - [Tiptap Editor Integration](/docs/examples/tiptap-host.md): A Tiptap CodeBlock adapter that previews explicit slex blocks while preserving ordinary code blocks and Markdown import/export.
49
+ - [ToolHost Form Question](/docs/examples/form-wizard-steps.md): ToolHost renders a form card during a conversation, collects project fields, and submits structured results.
50
+ - [ToolHost Tool Call UI](/docs/examples/toolhost-demo.md): Render a function_call as an inline tool card, then write the submitted result back as function_call_output.
51
+ - [Voltage Divider Calculator](/docs/examples/voltage-divider.md): Enter input voltage and two resistor values to calculate divider output voltage and evaluate load effect error.
52
52
 
53
53
  ### Components
54
- - [Accordion](/docs/components/accordion.md): Expandable grouped panels.
54
+
55
+ - [Accordion](/docs/components/accordion.md): Multi-panel collapse for FAQs or grouped details.
55
56
  - [Badge](/docs/components/badge.md): Compact label for status or classification.
56
- - [Button](/docs/components/button.md): Action trigger.
57
- - [Callout](/docs/components/callout.md): Highlighted contextual message.
57
+ - [Button](/docs/components/button.md): Action trigger button.
58
+ - [Callout](/docs/components/callout.md): Highlighted contextual message for notes, warnings, and tips.
58
59
  - [Card](/docs/components/card.md): Grouping container for related content.
59
- - [Checkbox](/docs/components/checkbox.md): Boolean checkbox input.
60
- - [Code Block](/docs/components/code-block.md): Formatted code or log block.
61
- - [Collapsible](/docs/components/collapsible.md): Single expandable region.
62
- - [Column](/docs/components/column.md): Vertical layout container.
63
- - [Divider](/docs/components/divider.md): Visual separator.
60
+ - [Checkbox](/docs/components/checkbox.md): Boolean checkbox for confirmations and multi-select.
61
+ - [Code Block](/docs/components/code-block.md): Code or configuration snippet display.
62
+ - [Collapsible](/docs/components/collapsible.md): Single expandable content area.
63
+ - [Column](/docs/components/column.md): Vertical layout container for forms, text, and control groups.
64
+ - [Divider](/docs/components/divider.md): Separator line, optionally with label.
64
65
  - [Formula](/docs/components/formula.md): Reactive KaTeX formula display.
65
- - [Grid](/docs/components/grid.md): Responsive grid container.
66
- - [Icon](/docs/components/icon.md): Shared icon field capability.
67
- - [Input](/docs/components/input.md): Text or engineering-value input.
68
- - [Link](/docs/components/link.md): Inline navigation link.
69
- - [Playground](/docs/components/playground.md): Interactive source preview.
66
+ - [Grid](/docs/components/grid.md): Responsive equal-width grid for sibling cards, metrics, and field groups.
67
+ - [Icon](/docs/components/icon.md): Shared icon field capability used by all icon-supporting components.
68
+ - [Input](/docs/components/input.md): Single-line text or engineering value input.
69
+ - [Link](/docs/components/link.md): Navigation or lightweight jump action.
70
+ - [Playground](/docs/components/playground.md): Optional HTML editor and isolated preview registered explicitly from slexkit/tooling.
70
71
  - [Progress](/docs/components/progress.md): Progress bar.
71
- - [Radio Group](/docs/components/radio-group.md): Single-choice option group.
72
- - [Row](/docs/components/row.md): Horizontal layout container.
73
- - [Section](/docs/components/section.md): Page section with optional heading chrome.
74
- - [Select](/docs/components/select.md): Dropdown selection input.
72
+ - [Radio Group](/docs/components/radio-group.md): Mutually exclusive radio selection.
73
+ - [Row](/docs/components/row.md): Horizontal layout container for toolbars, status lines, and button groups.
74
+ - [Section](/docs/components/section.md): Page section with title, subtitle, optional action, and content area.
75
+ - [Select](/docs/components/select.md): Single-select dropdown.
75
76
  - [Slider](/docs/components/slider.md): Numeric range input.
76
- - [Stat](/docs/components/stat.md): Metric display.
77
- - [Switch](/docs/components/switch.md): Boolean switch input.
78
- - [Table](/docs/components/table.md): Simple data table.
77
+ - [Stat](/docs/components/stat.md): Metric display with label, value, unit, and semantic tone.
78
+ - [Submit](/docs/components/submit.md): ToolHost-only submit action that returns current selection or form values to the host.
79
+ - [Switch](/docs/components/switch.md): Boolean toggle input for instant settings.
80
+ - [Table](/docs/components/table.md): Structured table with columns and rows.
79
81
  - [Tabs](/docs/components/tabs.md): Tabbed view switcher.
80
- - [Text](/docs/components/text.md): Plain text display.
81
- - [Toast](/docs/components/toast.md): Transient notification.
82
+ - [Text](/docs/components/text.md): Short text output for status, description, and results.
83
+ - [Toast](/docs/components/toast.md): Transient notification with semantic type.
84
+ - [ToolHost Step](/docs/components/step.md): ToolHost-only step page for collecting multiple human inputs inside one function call.
82
85
 
83
86
  ### Reference
84
- - [Slex Specification](/docs/reference/spec.md): Public Slex expression envelope, component keys, props, directives, and lifecycle.
85
- - [Slex Usage Reference](/docs/reference/usage.md): Slex source structure, props, directives, events, theming, custom components, and ToolHost boundaries.
86
- - [Runtime Model](/docs/reference/runtime.md): Mounting, ingestion, boot, namespace store, lifecycle, and runtime APIs.
87
- - [Host Integration](/docs/reference/integration.md): Markdown renderers, Svelte custom hosts, Streamdown, Tiptap, Obsidian, and artifact lifecycle.
88
- - [Security Runtime](/docs/reference/security.md): Threat model, sandbox iframe, postMessage bridge, policy, and fail-closed behavior.
89
- - [Packages](/docs/reference/packages.md): Package roles, installation matrix, and packaging strategy.
90
- - [Slex Standard Artifacts](/docs/reference/standard.md): JSON Schema, component catalog, logic profile, capabilities catalog, conformance fixtures, and manifest.
91
- - [ToolHost](/docs/reference/toolhost.md): Tool call rendering, built-in templates, custom templates, and submit boundaries.
92
- - [Icon System](/docs/reference/icons.md): Phosphor icons, custom icon registration, Iconify fallback, and API reference.
93
- - [Design Rationale](/docs/reference/rationale.md): Why SlexKit uses object literals, expressions, explicit fences, and secure/trusted modes.
87
+
88
+ - [Design Rationale](/docs/reference/rationale.md): Why SlexKit uses standards-based HTML/JavaScript with an isolated document lifecycle.
89
+ - [Host Integration](/docs/reference/integration.md): HTML document host integration for Streamdown, assistant-ui, Tiptap, note hosts, and custom adapters.
90
+ - [Icon System](/docs/reference/icons.md): Phosphor icons, custom icon registration, Iconify fallback, and component icon usage.
91
+ - [Packages](/docs/reference/packages.md): SlexKit npm package roles, install combinations, publish contents, and release checks.
92
+ - [Runtime Model](/docs/reference/runtime.md): HTML mounting, artifact updates, isolated lifecycle hooks, snapshots, shared JSON state, and static inspection.
93
+ - [Security Runtime Contract](/docs/reference/security.md): Threat model, sandbox iframe deployment, host policy, postMessage bridge, and fail-closed behavior.
94
+ - [Slex HTML Profile html-1](/docs/reference/spec.md): HTML source profile, sandbox SDK, update identity, lifecycle, and static inspection contract.
95
+ - [Slex Standard Artifacts](/docs/reference/standard.md): Generated metadata for the html-1 profile, custom elements, sandbox SDK, static policy, conformance fixtures, and hashes.
96
+ - [Slex Usage Reference](/docs/reference/usage.md): HTML source structure, attributes, live properties, native events, slots, theming, and lifecycle hooks.
97
+ - [ToolHost](/docs/reference/toolhost.md): Structured user-input UI for confirmations, choices, forms, and templates.
94
98
 
95
99
  ### Releases
100
+
96
101
  - [Changelog](/docs/releases/changelog.md): Release notes and notable changes for SlexKit.