"""Renderers for user and assistant chat messages."""
from __future__ import annotations
from rich.console import RenderableType
from rich.box import ROUNDED
from rich.panel import Panel
from rich.text import Text
from .base import ContentRenderer
class UserMessageRenderer(ContentRenderer):
"""Render a user message bubble."""
def accepts(self, msg: dict) -> bool:
return msg.get("type") == "user_message"
def render(self, msg: dict) -> RenderableType:
text = msg.get("content", "")
return Panel(
Text(text, style="bright_white"),
title="You",
title_align="left",
border_style="blue",
box=ROUNDED,
)
class AssistantMessageRenderer(ContentRenderer):
"""Render a completed assistant response as a panel."""
def accepts(self, msg: dict) -> bool:
return msg.get("type") == "assistant_message"
def render(self, msg: dict) -> RenderableType:
text = msg.get("content", "")
return Panel(
Text(text, style="bright_white"),
title="Navi",
title_align="left",
border_style="green",
box=ROUNDED,
)