"""Rendering bridge — routes TUI content through Python-side renderers. When agent.rich_output exists, its functions are used. When it doesn't, everything returns None and the TUI falls back to its own markdown.tsx. """ from __future__ import annotations def render_message(text: str, cols: int = 80) -> str | None: try: from agent.rich_output import format_response except ImportError: return None try: return format_response(text, cols=cols) except TypeError: return format_response(text) except Exception: return None def render_diff(text: str, cols: int = 80) -> str | None: try: from agent.rich_output import render_diff as _rd except ImportError: return None try: return _rd(text, cols=cols) except TypeError: return _rd(text) except Exception: return None def make_stream_renderer(cols: int = 80): try: from agent.rich_output import StreamingRenderer except ImportError: return None try: return StreamingRenderer(cols=cols) except TypeError: return StreamingRenderer() except Exception: return None