# Kinds and generated controls

Block kinds and the generated manifest.ui controls, generated from the SDK validator.

## Kinds
| Kind | Behaviour |
| --- | --- |
| `task` | A Project Type Step. Its primary input and output connect automatically to neighbouring Steps. Use this for almost every Block. |
| `workspace` | A complete project workspace that owns a project document (like Shots or the Editor). Never connected automatically: neighbours only reach it through project context or explicit connections. |
| `editor-extension` | Accepted by the validator; no host behaviour depends on it today. Use `task`. |
| `composite` | Accepted by the validator; no host behaviour depends on it today. Use `task`. |

## Generated controls
`manifest.ui` binds generated controls to inputs. A custom view replaces them in the interface, but keep them as the fallback schema.

| Control | Use |
| --- | --- |
| `text` | Single- or multi-line text for a `text`-like input. |
| `number` | A number field for `number`/`integer` inputs. |
| `slider` | A range slider for a bounded number input. |
| `checkbox` | A toggle for a `boolean` input. |
| `asset` | A media picker for `image`, `video`, `audio` or `asset` inputs. |
| `select` | One choice from a list. |
| `multiselect` | Several choices from a list. |
| `file` | An upload for a `file` or `file[]` input: PDF, TXT, CSV, Markdown, JSON or ZIP, checked by type and bytes before the Block sees a saved reference. |
| `date` | A date picker for a `date` input; add `time: true` for a date and time. |
| `color` | A color picker with a hex field for a `color` input. |
| `url` | A web address field for a `url` input (http or https). |
| `richtext` | A Markdown editor with a preview for a `document` input, or a `text` input written in Markdown. |
| `list` | An item-by-item editor for `text[]`, `number[]`, `integer[]`, `url[]`, `date[]` or `color[]` inputs. |
| `grid` | A grid editor for a `table` input, with add and remove rows and columns and CSV paste. |
| `gallery` | Presents an `image[]` output as a gallery. |
| `before-after` | Compares an `image` output with a declared `image` input. |
| `table` | Presents a `table` output as a paged table with a CSV download. |
| `document` | Presents a `document` or Markdown `text` output as formatted text. |
| `chart` | Draws a `table` (optional `x` and `y` column names) or `number[]` output as a `bar` or `line` chart (`chart`). |
| `code` | Presents a `text`, `json` or `object` output as code with a copy button (optional `language`). |
| `player` | Plays an `audio` or `video` output (or a list of them). |
| `download` | Offers a `file`, `file[]` or `file-bundle` output as a download through the host export policy. |
