Add a Component to chat_container with a spacer before it if chat_container is not empty.
Mirrors pi’s addMessageToChat() which adds new Spacer(1) before each message
when this.chatContainer.children.length > 0.
Queue a follow-up message (Alt+Enter) during streaming.
Uses yoagent’s native follow_up() — the agent loop’s outer loop
picks it up naturally after the current inner loop finishes.
Rebuild the chat container from a slice of AgentMessages (pi’s renderSessionContext).
Clears the container and re-adds all message components with spacers between them.
Adjacent tool calls and tool results are paired into single ToolExecComponent.