Skip to contents

Rich, interactive tool-card rendering for the right Output panel. Defines a typed display contract (extra$display$toolcard) layered on top of the existing {title, markdown, right_output} keys, a render dispatcher that branches on result kind (code/image/table/diff/text/error), and a generalized adapter that normalizes any native ContentToolResult – raw btw::btw_tools() results included – into the typed contract.

Design: the private card sub-list never collides with shinychat's reserved display keys (title/icon/markdown/html/text), so the in-chat card keeps rendering natively while codeagent owns the right-panel rendering.