@ade-dev/chat-ui renders an agent conversation for your users. There are no lanes, projects, repos, or worktrees in any prop or any string it can display.
^18 or ^19). @ade-dev/sdk is an optional peer used for types only.
<AdeChat> is transcript above, composer with the model rail below. No header bar. Changing threadKey opens a different conversation.
adaptSdkClient maps a real @ade-dev/sdk client onto the view contract. Any SDK-shaped proxy works — for example a renderer that talks to main over a WebSocket.
Activity labels
Tool names stay in the agent transcript. Your users should see a sentence.resolve() → exact key → longest wildcard prefix → * → the raw tool name. A bare string labels the running phase only, so a finished chip never keeps saying “Searching…”.
Theming
CSS custom properties only. No Tailwind, no class overrides.createTheme({ accent, background, foreground, muted, danger, success, radius, fontFamily, monoFontFamily, fontSize, space, scheme }) returns the full token set. Light/dark is inferred from background luminance unless you set scheme.
Pass
disableStyles if you inject the stylesheet yourself.
Standalone components
Every piece is importable without<AdeChat>:
Composer rule: submitting during a running turn dispatches
onSteer, never a second onSend. A failed send restores the draft.
Next
Runtime
What the sidecar actually is, and what
doctor() checks.