Inline UI
The agent does not just answer in prose. It mounts rich views inline in a chat turn. A risk register table. A compliance heatmap. A 3D risk sphere. A full vendor dashboard. The server-driven UI registry carries roughly 147 keys the agent can pick from. The agent picks, the front-end renders.
The agent mounts rich views inline
The agent mounts rich views inline
A user asks to see the top three risks. The agent calls the governed
trinitite.risks_list tool, gets the rows, and emits a
risk.register_table descriptor. The front-end resolves the key against the
registry, validates the props, gates the render on the caller's access, and
mounts the table inline in the chat turn. Beneath the table, a Remediate R-1
confirm-card action waits for the user's yes.
Two rendering paths
The agent has two ways to mount a rich view:
uiDescriptor. A single component. The agent marshals the props, emits atypekey plus the props, and the front-end renders one component from the registry. Used for tables, gauges, heatmaps, single charts.generativeUi. A tree of$typenodes. The agent composes a layout, like a dashboard with a graph canvas plus a KPI strip plus a legend plus action buttons. The front-end walks the tree, resolves each node against the allowlist, gates per node, and wires$actionclicks back into the loop. Used for composed views.
Both can be set on one result. Additive.
A few of the roughly 147 keys
The registry carries data-bearing keys (the agent marshals props) and surface-mount keys (the agent emits just a key and the front-end lazily mounts a full workbench page inline).
| Key | What it renders |
|---|---|
risk.register_table | The risk register, row per risk, with severity and owner. |
risk.heatmap | A 5 by 5 likelihood-by-impact heatmap. |
manifold.space3d | A 3D risk sphere, lazy-loaded three.js. |
audit.posture_radar | The posture radar across the audit dimensions. |
audit.ledger_river | The ledger as a flowing river of signed receipts. |
agentic.ars_gauge | The Agentic Risk Score gauge, 250 to 900. |
graph.canvas | The estate graph, cytoscape canvas. |
policy.knowledge_graph | The policy knowledge graph. |
vendor.score_gauge | A vendor score gauge with the open findings. |
surface.executive_ciso | A full CISO dashboard, mounted inline. |
surface.guardians_dashboard | The guardians dashboard, mounted inline. |
agent.confirm_card | The confirm-card gate for a destructive action. |
receipt.strip | An inline deterministic-inference receipt. |
The full registry is browsable in the workbench under Dev mode. The agent's
system prompt carries a whenToUse hint for each entry, so the agent knows
which component to pick for a given answer shape.
Surface-mount: a full page, inline
A surface-mount key is the agent's "open a full page inside the chat" move.
The agent emits { type: 'surface.executive_ciso', props: { params } } and
the front-end lazily mounts the actual CISO dashboard page inline inside the
chat turn. The page fetches its own data. Roughly 85 surface-mount keys
cover the workbench: the eight role-specific executive dashboards (CEO, CFO,
CISO, CRO, GC, CTO, and more), the guardians dashboard, the estate graph
explorer, the scopes list, the eval runs, the models catalog, the NHI
surface, the connectors, the knowledge policies, the masking overview, the
reporting catalog, and about 40 audit detail pages.
The chat is the calm, reliable surface. The workbench depth lives in these pages. The agent brings the depth to the chat when you ask for it.
The confirm-card flow
When the agent hits a destructive action you did not pre-confirm, it
suspends the run and emits an agent.confirm_card descriptor. The card
renders inline with the tool name, the args, a human-readable summary, and a
Confirm and Cancel button pair.
- Confirm. The chat re-enters the loop with the same session id and the tool appended to the pre-confirmed list. Session memory reloads context. The loop re-executes the now-confirmed tool.
- Cancel. The run ends. No re-entry. The Cancel button is always present, so the gate is un-dismissable in both directions.
Destructive calls always confirm-gate. A caller can pre-confirm a known-safe automation by passing the tool name in the confirmed-actions list, skipping the card for that tool on that run. Regulated work ignores pre-confirmation for the destructive class and always confirms.
Where to go next
- Chat shell for where these inline mounts land in the settled turn anatomy.
- Named agents for scoping which surface-mount pages and tools an agent can reach.
- Receipts for the signed receipt every inline mount produces.