The agent chat surface gets a redesigned catalog and a smarter approval step. Agents are now browsable in a filterable list-to-detail layout, and the human approval gate renders a preview appropriate to the tool being called, chosen from the tool's schema rather than a hardcoded list of tool names.
A browsable agent catalog
- Category grouping. Agents are grouped under category headers and sorted alphabetically within each, with an uncategorised group for the rest, replacing the previous flat accordion.
- Icons and skills. Each agent carries a custom icon, served as a blob URL rather than inlined, and its declared skills appear alongside its tools in the detail view. A default icon is used when none is set.
- Inline targeting. Selecting an agent returns to the chat and injects a styled agent token into the input, so the next message is routed to it.
Schema-driven approval previews
- Schema forwarded to the client. The tool-permission request now carries the tool's JSON Schema over the streaming transport, so the client chooses a preview without a further round-trip.
- Preview chosen from shape. A resolver maps schema property patterns to a preview: an old-value and new-value pair renders a Monaco diff, a content property renders read-only source, and any other tool renders a labelled-fields card from the schema's descriptions.
- New tools covered automatically. Because the preview is derived from the schema, a newly added dictionary tool gets a rich approval preview with no frontend change.
The approval gate's frame and approve or reject controls are unchanged; only the rendering of the pending call's arguments is now schema-aware, so the operator sees a file edit as a diff rather than raw parameters.