
    K{j3
                       S r SSKJr  SSKrSr\R
                  " S\R                  5      r\R
                  " S\R                  5      r\R
                  " S\R                  5      r	\R
                  " S\R                  \R                  -  5      rSS	 jr\R
                  " S
5      r\R
                  " S\R                  5      rSS jrSS jrg)u>   Bloquea HTML y código de programación en el chat de agentes.    )annotationsNu   No puedo aceptar HTML ni código de programación en este chat. Los agentes PIE360 solo trabajan con texto en lenguaje natural para informes. Reformula tu solicitud sin etiquetas HTML y sin código.z</?(?:html|head|body|script|style|iframe|object|embed|svg|link|meta|form|input|button|textarea|div|span|p|br|img|a|table|tr|td|ul|ol|li|h[1-6])\b[^>]*>zT<\s*(?:script|style|iframe|object|embed|svg|link)\b|javascript\s*:|on\w+\s*=\s*['\"]z```\s*(html|xml|javascript|typescript|tsx|jsx|js|ts|python|py|php|sql|css|java|c\+\+|cpp|c|go|rust|bash|sh|powershell|ruby|swift|kotlin)\ba  (?:<\?php|#!/usr/bin|\bfunction\s*\(|\bdef\s+[A-Za-z_]\w*\s*\(|\bclass\s+[A-Za-z_]\w*\s*[\{:]|\bimport\s+(?:[\w\{]|requests|os|sys|java)|\bfrom\s+\w+\s+import\b|\bconsole\.log\s*\(|\bdocument\.(?:write|querySelector|getElementById)\s*\(|\beval\s*\(|\bSELECT\s+.+\s+FROM\b|\bDROP\s+TABLE\b|\bINSERT\s+INTO\b|\bconst\s+[A-Za-z_]\w*\s*=|\blet\s+[A-Za-z_]\w*\s*=|=>\s*\{|public\s+static\s+void|#include\s*<)|<\?phpc                |   U =(       d    SnUR                  5       (       d  g[        R                  U5      (       a  g[        [        R                  U5      5      S:  a  g[        R                  U5      (       a  SU;   d  SU;   a  g[        R                  U5      (       a  g[        R                  U5      (       a  gg)uI   True si el mensaje del usuario trae HTML o código (no lenguaje natural). FT   z</z/>)strip_DANGEROUS_HTML_REsearchlen_HTML_TAG_REfindall_CODE_FENCE_LANG_RE_CODE_PATTERN_RE)textraws     UC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\utils\agents_code_guard.pymessage_is_html_or_coder   6   s    
*"C99;;  %%
<$%*3TS[DCK!!#&&s##    z</?[a-zA-Z][^>]*>z```[\w+-]*\n?[\s\S]*?```c                @    [         R                  SU =(       d    S5      $ )Nr   )_TAG_REsub)r   s    r   strip_html_tagsr   L   s    ;;r4:2&&r   c                    [         R                  SU =(       d    S5      n[        U5      n[        R                  " SSU5      nUR	                  5       $ )uE   Quita etiquetas HTML y bloques de código del texto visible del chat.r   z\n{3,}z

)	_FENCE_REr   r   rer   )r   cleaneds     r   strip_html_and_code_blocksr   P   s>    mmB
+Gg&GffY0G==?r   )r   strreturnbool)r   r   r   r   )__doc__
__future__r   r   CODE_REJECT_REPLYcompile
IGNORECASEr   r   r   DOTALLr   r   r   r   r   r    r   r   <module>r'      s    D " 	?  zz MM	 ZZ[MM  jjLMM 
 ::* MMBII- 4$ **)
*JJ2BMMB	'r   