import re

# ANSI 颜色/光标控制序列（粘贴终端输出时常见）
_ANSI_ESCAPE = re.compile(r"\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07]*\x07|\x1b[@-Z\\-_]")

# 其它不可见控制字符（保留普通 URL 字符）
_CTRL_CHARS = re.compile(r"[\x00-\x1f\x7f]")


def sanitize_http_url(url: str | None) -> str:
    """去掉 URL 中的 ANSI/控制字符，避免 httpx Invalid non-printable ASCII character。"""
    if not url:
        return ""
    cleaned = _ANSI_ESCAPE.sub("", url)
    cleaned = _CTRL_CHARS.sub("", cleaned)
    return cleaned.strip()


def sanitize_model_name(name: str | None) -> str:
    if not name:
        return ""
    cleaned = _ANSI_ESCAPE.sub("", name)
    cleaned = _CTRL_CHARS.sub("", cleaned)
    return cleaned.strip()
