Sessions & history
Per-session JSONL files, the history drawer, search and filters.
The Blueprint AI panel is a dockable tab inside the Unreal Editor. It hosts the AI chat, an embedded terminal, attachment chips, and a live context-usage ring.
Open it from Window → Blueprint AI and dock it anywhere a standard tab fits — alongside your viewport, on a second monitor, or as a floating window. Spawn more than one panel tab if you want parallel conversations: each holds its own active session, but they share the on-disk session store (see Sessions & history for the details).
The panel switches between three top-level layouts depending on context.
+------------------------------------------------------------------+| TopBar [History] "Session Name" [+ New Session] |+------------------------------------------------------------------+| Banner (conditional setup notice) |+------------------------------------------------------------------+| || MessageList || User bubble "Create BP_Pickup..." || Assistant "I'll do that." || ToolUse create_blueprint { name: "BP_Pickup" } || PermissionCard "delete_asset" [Allow] [Always] [Deny] || QuestionCard "Which approach?" ( )( )( ) [Submit] || |+------------------------------------------------------------------+| InputBar || [chip x] [chip x] || Type a message... || [+] [/] (ring) | (eye) sel ~~~ [mode v] [> send] |+------------------------------------------------------------------+When a session has no messages, MessageList is replaced by EmptyState — a centered logo and a one-line hint.
Toggling the slash button switches MessageList for an embedded xterm.js terminal:
| $ python cli.py apply spec.json || > Validating operations... || > OK |The InputBar collapses to just the slash button so you can flip back to chat without leaving the keyboard.
You’ll see these names throughout the rest of the docs.
| Term | What it is |
|---|---|
| Panel | Root widget |
| TopBar | Header: session name + history + new-session button |
| Banner | Dismissible setup-notice strip at the top of the panel — clicking Setup runs the corresponding fix, Dismiss hides it for the session |
| MessageList | Scrollable list of chat bubbles |
| Message | One bubble — user or assistant |
| ToolUse | Collapsible block showing a tool call inside a Message (op name, JSON args, pending → executing → completed/failed status, scrollable result) |
| ThinkingIndicator | Animated thinking... label during generation |
| PermissionCard | Approve/deny card for an unauthorized tool call — Allow permits the single call, Always permits every future call of that op with the same params, Deny refuses and tells the AI to change course. Blocking, no auto-timeout. |
| QuestionCard | Inline follow-up question with radio choices; Submit sends your pick as a normal user message |
| InputBar | Bottom composition area |
| AttachmentBar | Row of attachment chips above the input field |
| InputField | Multi-line text input |
| ActionRow | Button strip at the bottom of the InputBar |
AttachmentButton [+] | Opens the AttachmentPicker |
SlashButton [/] | Opens the slash menu / toggles terminal |
| ContextRing | Token-usage arc; click to expand |
| SelectionToggle | Eye icon — sends the current editor selection as context |
| ModeSelector | Agent / model / mode / effort dropdown |
| SendButton | Gradient button — arrow when ready, square while generating |
| SessionDrawer | History list anchored to the TopBar history button |
| TerminalView | Embedded xterm.js terminal |
Sessions & history
Per-session JSONL files, the history drawer, search and filters.
Attachments
Files, images, viewport screenshots, editor selection.
Autocomplete
/ slash commands and @ asset/file mentions.
Terminal mode
Embedded xterm.js, ConPTY / POSIX PTY, shells and history.