"""Hermes skin/theme engine — the theme SDK for every surface.""" import logging from dataclasses import dataclass, field from pathlib import Path from typing import Any, Dict, List, Optional, Tuple from hermes_constants import get_hermes_home logger = logging.getLogger(__name__) @dataclass class SkinConfig: """Complete skin configuration.""" name: str description: str = "" colors: Dict[str, str] = field(default_factory=dict) # Paired palettes for the opposite background polarity (mirrors the desktop app's # colors/darkColors pairing): a light terminal prefers `light_colors` (falling back to # `colors`), and vice versa for `dark_colors`. light_colors: Dict[str, str] = field(default_factory=dict) dark_colors: Dict[str, str] = field(default_factory=dict) spinner: Dict[str, Any] = field(default_factory=dict) branding: Dict[str, str] = field(default_factory=dict) tool_prefix: str = "┊" tool_emojis: Dict[str, str] = field(default_factory=dict) # per-tool emoji overrides banner_logo: str = "" # Rich-markup ASCII art logo (replaces HERMES_AGENT_LOGO) banner_hero: str = "" # Rich-markup hero art (replaces HERMES_CADUCEUS) custom_css: str = "" # Raw CSS injected as a