# Widget spec — `picsart_film_setup`

The film setup locks genre, tone, colour scheme and hue, frame, duration,
camera and lens family. It uses the connected MCP console and the host
integration rules in `../../skills/film/SKILL.md`.

## Input

Pass `film` and `world` (`main` for one world). Seed inferred values through
`suggested: {selections, why}`; reopen with `current: {selections, stylePrefix}`.
Current values win over suggestions. `paletteHint` is optional display text;
preselect colour using `scheme` and `hue`, not a palette id.

```json
{
  "genre": "drama", "tone": "auto", "palette": "auto",
  "scheme": "analogous", "hue": "amber", "hueDegrees": 60,
  "ratio": "169", "duration": "90", "camera": "35mm", "lens": "ana"
}
```

With colour Auto, omit scheme and both hue fields. A selected scheme can also
have no selected hue. Preserve `hueDegrees` from feedback exactly when present.
The default duration is 90 seconds; the skill preselects the user's requested
duration and frame. Frame ids are `169`, `43`, `sq`, `34`, `vert`; words and
ratio labels also seed them. Lens means glass family, not focal length.

Custom genre uses `genre: "custom"` plus `customGenre`; custom tone uses
`tone: "custom"` plus `customTone`. The scene compiler omits the custom genre
id and receives only its wording. Consult its schema for the compile call.

## Controls and feedback

The console has Frame and Duration, Genre/Tone/Colour tabs, and Camera/Lens.
Colour offers Auto, monochromatic, analogous, complementary and triadic,
with a hue wheel. A tone seeds only camera and lens. Editing either rig value
resets tone; changing colour preserves it. There are no palette presets,
focal-length, aperture or Handles controls on this console.

Lock submits `film_setup_feedback` version 3, with `world`, `selections`,
`stylePrefix`, `summary` and `verdict: "locked"`. Its full contract, handling
of older setups, and field mappings for both compilers are in
`../../skills/film/references/WIDGET-FEEDBACK.md`.

The style line is compiled server-side through `picsart_film_compile_prompt`.
If it is empty because the widget could not obtain it, the assistant compiles
the accepted ids; it does not invent the wording. Initial tool responses and
silent browsing state are previews, never approval. If the host cannot show
the widget or deliver its submission, use the skill's text-choice fallback.
