mirror of
https://github.com/usestrix/strix.git
synced 2026-08-18 09:49:17 +02:00
- Removed unused escape_markup function and integrated rich.text for better text handling. - Updated various renderers to utilize Text for consistent styling and formatting. - Enhanced chat and agent message displays with dynamic text features. - Improved error handling and display for various tool components. - Refined TUI styles for better visual consistency across components.
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from typing import Any, ClassVar
|
|
|
|
from rich.text import Text
|
|
from textual.widgets import Static
|
|
|
|
from .base_renderer import BaseToolRenderer
|
|
from .registry import register_tool_renderer
|
|
|
|
|
|
@register_tool_renderer
|
|
class UserMessageRenderer(BaseToolRenderer):
|
|
tool_name: ClassVar[str] = "user_message"
|
|
css_classes: ClassVar[list[str]] = ["chat-message", "user-message"]
|
|
|
|
@classmethod
|
|
def render(cls, tool_data: dict[str, Any]) -> Static:
|
|
content = tool_data.get("content", "")
|
|
|
|
if not content:
|
|
return Static(Text(), classes=" ".join(cls.css_classes))
|
|
|
|
styled_text = cls._format_user_message(content)
|
|
|
|
return Static(styled_text, classes=" ".join(cls.css_classes))
|
|
|
|
@classmethod
|
|
def render_simple(cls, content: str) -> Text:
|
|
if not content:
|
|
return Text()
|
|
|
|
return cls._format_user_message(content)
|
|
|
|
@classmethod
|
|
def _format_user_message(cls, content: str) -> Text:
|
|
text = Text()
|
|
|
|
if len(content) > 300:
|
|
content = content[:297] + "..."
|
|
|
|
text.append("▍", style="#3b82f6")
|
|
text.append(" ")
|
|
text.append("You:", style="bold")
|
|
text.append("\n")
|
|
|
|
lines = content.split("\n")
|
|
for i, line in enumerate(lines):
|
|
if i > 0:
|
|
text.append("\n")
|
|
text.append("▍", style="#3b82f6")
|
|
text.append(" ")
|
|
text.append(line)
|
|
|
|
return text
|