2025-08-08 20:36:44 -07:00
|
|
|
from typing import Any, ClassVar
|
|
|
|
|
|
2026-01-05 00:07:54 -08:00
|
|
|
from rich.text import Text
|
2025-08-08 20:36:44 -07:00
|
|
|
from textual.widgets import Static
|
|
|
|
|
|
|
|
|
|
from .base_renderer import BaseToolRenderer
|
|
|
|
|
from .registry import register_tool_renderer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@register_tool_renderer
|
|
|
|
|
class ThinkRenderer(BaseToolRenderer):
|
|
|
|
|
tool_name: ClassVar[str] = "think"
|
|
|
|
|
css_classes: ClassVar[list[str]] = ["tool-call", "thinking-tool"]
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
def render(cls, tool_data: dict[str, Any]) -> Static:
|
|
|
|
|
args = tool_data.get("args", {})
|
|
|
|
|
thought = args.get("thought", "")
|
|
|
|
|
|
2026-01-05 00:07:54 -08:00
|
|
|
text = Text()
|
|
|
|
|
text.append("🧠 ")
|
|
|
|
|
text.append("Thinking", style="bold #a855f7")
|
|
|
|
|
text.append("\n ")
|
2025-08-08 20:36:44 -07:00
|
|
|
|
|
|
|
|
if thought:
|
2026-01-05 09:52:05 -08:00
|
|
|
text.append(thought, style="italic dim")
|
2025-08-08 20:36:44 -07:00
|
|
|
else:
|
2026-01-05 00:07:54 -08:00
|
|
|
text.append("Thinking...", style="italic dim")
|
2025-08-08 20:36:44 -07:00
|
|
|
|
|
|
|
|
css_classes = cls.get_css_classes("completed")
|
2026-01-05 00:07:54 -08:00
|
|
|
return Static(text, classes=css_classes)
|