"""Rich 控制台主题: 统一 dark 终端友好的配色。

设计目标: 在黑底终端上,所有文字 readable,且语义有层次。
- 弱化用 grey50/grey70 而不是 dim —— 一些终端把 dim 渲染得过暗。
- 强调色一律走 bright_* —— 8 色版的 blue/cyan 在 Windows 深底太黯。
- 用语义样式名(user / assistant / tool / ok / warn / err / info / muted),
  避免在调用处硬编码颜色,以后改主题只动这一处。
"""
from __future__ import annotations

from rich.console import Console
from rich.theme import Theme

ZCBOT_THEME = Theme(
    {
        # 通用层次
        "info": "grey70",          # 普通信息(系统反馈、路径、命令提示)
        "muted": "grey50",         # 真要弱化的次要内容(预览、spinner 文本)
        "accent": "bright_cyan",   # 强调(模型名等)
        # 角色
        "user": "bold bright_magenta",
        "assistant": "bold bright_cyan",
        "tool": "bold bright_yellow",
        # 状态
        "ok": "bright_green",
        "warn": "bright_yellow",
        "err": "bold bright_red",
        # task 状态列
        "status.active": "bright_cyan",
        "status.completed": "bright_green",
        "status.abandoned": "grey50",
    }
)


def make_console() -> Console:
    """创建带 zcbot 主题的 Console。所有 TUI 入口都应通过这个工厂拿 console。"""
    return Console(theme=ZCBOT_THEME)
