§
     Xj™	  ã                  ó¼   — d Z ddlmZ ddlZ ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        ZdZ	dd„Z
ddd„Zdd„ZdS )zISanitize user prompt text leaked from terminal / paste control sequences.é    )ÚannotationsNz(^|[\s\n>:\]\)])\[200~z\[201~(?=$|[\s\n<\[\(\):;.,!?])z(^|[\s\n>:\]\)])00~z01~(?=$|[\s\n<\[\(\):;.,!?])z~[[eÚtextÚstrÚreturnc                óŠ  — | s| S |                       dd¦  «                              dd¦  «                              dd¦  «                              dd¦  «        } t                               d| ¦  «        } t                               d| ¦  «        } t                               d| ¦  «        } t
                               d| ¦  «        } | S )aÅ  Strip leaked bracketed-paste wrapper markers from user-visible text.

    Defensive normalization for cases where terminal/prompt_toolkit parsing
    fails and bracketed-paste markers end up in the buffer as literal text.

    Canonical wrappers are stripped unconditionally. Degraded visible forms like
    ``[200~`` / ``[201~`` and ``00~`` / ``01~`` are removed only at boundaries
    so embedded literals such as ``literal[200~tag`` stay intact.
    z[200~Ú z[201~z^[[200~z^[[201~z\1)ÚreplaceÚ_BRACKETED_PASTE_BOUNDARY_STARTÚsubÚ_BRACKETED_PASTE_BOUNDARY_ENDÚ_BRACKETED_PASTE_DEGRADED_STARTÚ_BRACKETED_PASTE_DEGRADED_END)r   s    ú?/home/thesage/.hermes/hermes-agent/hermes_cli/input_sanitize.pyÚ%strip_leaked_bracketed_paste_wrappersr      s±   € ð ð Øˆð 	Š[ "Ñ%Ô%ß	Š˜bÑ	!Ô	!ß	Š˜BÑ	Ô	ß	Š˜BÑ	Ô	ð	 	õ +×.Ò.¨u°dÑ;Ô;€DÝ(×,Ò,¨R°Ñ6Ô6€DÝ*×.Ò.¨u°dÑ;Ô;€DÝ(×,Ò,¨R°Ñ6Ô6€DØ€Kó    é   Úmin_repeatsÚintc                óÂ  — | s| S t           }t          | ¦  «        }d}|t          |¦  «        k    rf| |t          |¦  «        z
  |…         |k    rH|dz  }|t          |¦  «        z  }|t          |¦  «        k    r| |t          |¦  «        z
  |…         |k    °H||k     r| S |}|dk    r| |dz
  |…         dk    r|dz  }n|dk    r| |dz
           dk    r|dz  }| d|…         S )zFDrop a trailing run of the desktop ~[[e corruption signature (#62557).r   é   é   z[eÚ[N)Ú_DESKTOP_PASTE_ARTIFACTÚlen)r   r   ÚmarkerÚindexÚrepeat_countÚstarts         r   Ú!collapse_repeated_input_artifactsr   *   s  € àð Øˆå$€FÝ‰IŒI€EØ€LØ
•3v‘;”;Ò
Ð
 4¨µ°F±´Ñ(;¸eÐ(CÔ#DÈÒ#NÐ#NØ˜ÑˆØ•V‘”Ñˆð •3v‘;”;Ò
Ð
 4¨µ°F±´Ñ(;¸eÐ(CÔ#DÈÒ#NÐ#Nð kÒ!Ð!Øˆà€EØ‚z€zd˜5 1™9 uÐ,Ô-°Ò5Ð5Ø‰
ˆˆØ	!Šˆ˜˜U Q™Yœ¨3Ò.Ð.Ø‰
ˆØŒ<Ðr   c                óp   — t          | t          ¦  «        r| s| S t          | ¦  «        }t          |¦  «        S )zFNormalize user-authored prompt text before persistence or model input.)Ú
isinstancer   r   r   )r   Úcleaneds     r   Úsanitize_user_prompt_textr#   A   s;   € ådCÑ Ô ð ¨ð ØˆÝ3°DÑ9Ô9€GÝ,¨WÑ5Ô5Ð5r   )r   r   r   r   )r   )r   r   r   r   r   r   )Ú__doc__Ú
__future__r   ÚreÚcompiler
   r   r   r   r   r   r   r#   © r   r   ú<module>r)      sÅ   ðØ OÐ Oà "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	à", "¤*Ð-FÑ"GÔ"GÐ Ø * ¤
Ð+MÑ NÔ NÐ Ø", "¤*Ð-CÑ"DÔ"DÐ Ø * ¤
Ð+JÑ KÔ KÐ ð !Ð ðð ð ð ð4ð ð ð ð ð.6ð 6ð 6ð 6ð 6ð 6r   