@buildautomaton/ui-runtime

The UI runtime is the other small runtime, for the app screen. It does not ship as a finished app. You pass in UI plugins and get a composed React app.

The ready-made UI host uses this. Apps always use the sidebar shell: the app in main, widgets in sidebar.

Your host (Vite app, or pages the runtime serves)
  → createUi({ plugins })
  → sidebar layout
  → app in main, widgets in sidebar
import { createUi, layoutPlugin } from '@buildautomaton/ui-runtime';

const { App } = createUi({ plugins: [layoutPlugin('sidebar')] });
KindRole
providerShared React context (work client, theme, …)
surfaceA view in a named panel
layoutWhich shell to use; the last one wins
themeOptional; tokens live in src/design/tokens.css
LayoutPanelsWhen to use
sidebarnav, sidebar, mainApps. Main is the app; sidebar is the widget.
master-detailnav, master, detailCustom two-pane tools
columnsnav, column, headerCustom boards — not the buildautomaton

Shared pieces like Column, PromptComposer, and NumberedQuestion live in @buildautomaton/ui-runtime/design.

A package can ship UI plugins only, or pair them with runtime plugins. Buildautomaton is the sidebar widget.