The outcome of a tool execution, replayed back to the model.
content is the LLM-facing text — what the model sees on the next
iteration. ui_payload is an optional structured map that hosts
(TUIs, LiveView frontends) can render as rich content (diffs, file
previews, process output) without parsing the text.
ui_payload is nil for tools that only return text; the loop
only emits :tool_ui events when a payload is present.