import re
from config import MSG_BLOCKED, MSG_FALLBACK

BLOCKED_PATTERNS: list[str] = [
    r"ignora\s+(tus|todas\s+tus)\s+instrucciones",
    r"ignore\s+(your|all\s+your)\s+instructions",
    r"act[uú]a\s+como\s+si\s+no\s+tuvieras\s+restricciones",
    r"jailbreak",
    r"dan\s+mode",
    r"pretend\s+you\s+have\s+no\s+(rules|restrictions)",
]

MAX_RESPONSE_LENGTH = 4000

def check_input(user_message: str) -> tuple[bool, str]:
    """Valida un mensaje de entrada antes de llamar al LLM."""
    text_lower = user_message.lower()
    for pattern in BLOCKED_PATTERNS:
        if re.search(pattern, text_lower):
            return False, MSG_BLOCKED
    return True, user_message


def check_output(bot_response: str) -> tuple[bool, str]:
    """Valida la respuesta generada por el LLM."""
    stripped = bot_response.strip()

    if not stripped or len(stripped) < 1:
        return False, MSG_FALLBACK

    if len(stripped) > MAX_RESPONSE_LENGTH:
        return False, MSG_FALLBACK

    return True, stripped
