diff --git a/src/va_agent/governance.py b/src/va_agent/governance.py index 27936e0..a94212f 100644 --- a/src/va_agent/governance.py +++ b/src/va_agent/governance.py @@ -4,7 +4,7 @@ import json import logging import re -from typing import Literal +from typing import Literal, cast from google.adk.agents.callback_context import CallbackContext from google.adk.models import LlmRequest, LlmResponse @@ -22,7 +22,7 @@ from .config import settings logger = logging.getLogger(__name__) -FORBIDDEN_EMOJIS = [ +FORBIDDEN_EMOJIS: list[str] = [ "🄵", "šŸ”Ŗ", "šŸŽ°", @@ -144,11 +144,18 @@ Devuelve un JSON con la siguiente estructura: person_pattern = r"(?:šŸ§‘|šŸ‘©|šŸ‘Ø)" tone_pattern = r"[\U0001F3FB-\U0001F3FF]?" + emoji_separator: str = "|" + sorted_emojis = cast( + "list[str]", sorted(FORBIDDEN_EMOJIS, key=len, reverse=True) + ) + escaped_emojis = [re.escape(emoji) for emoji in sorted_emojis] + emoji_pattern = emoji_separator.join(escaped_emojis) + # Unique pattern that combines all forbidden emojis, including skin tones and compound emojis return re.compile( rf"{person_pattern}{tone_pattern}\u200dā¤ļø?\u200dšŸ’‹\u200d{person_pattern}{tone_pattern}" # kissers rf"|{person_pattern}{tone_pattern}\u200dā¤ļø?\u200d{person_pattern}{tone_pattern}" # lovers - rf"|{'|'.join(map(re.escape, sorted(FORBIDDEN_EMOJIS, key=len, reverse=True)))}" # simple emojis + rf"|{emoji_pattern}" # simple emojis rf"|šŸ–•{tone_pattern}" # middle finger with all skin tone variations )