Ë
    )Vêj  ã            	      ó\  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	  ee
«      j                  «       j                  j                  ZddlmZ  eej"                  j%                  d e e«       dz  «      «      «      Zej+                  d	d
d
¬«       dZdZh d£Zdd„Zdd„Zdd„Zdd„Zy)uÈ   
NeinteraktivnÃ­ runner pro CyberBrain26 SAFE/FULL.

ÃšmyslnÄ› podporuje jen bash/sh a python. SpouÅ¡tÃ­ kÃ³d v pevnÄ› urÄ�enÃ©m
workspace, s omezenÃ½m prostÅ™edÃ­m, timeoutem a zachycenÃ­m vÃ½stupu.
é    )ÚannotationsN)ÚPath)ÚAny)Úproject_rootÚCB26_RUNNER_WORKSPACEzrunner-workspaceéÀ  T©ÚmodeÚparentsÚexist_oké   i † >   ÚpyÚshÚbashÚshellÚpythonc                óB   — t        | «      t        k  r| S | d t         dz   S )Nu   
[output zkrÃ¡cen])ÚlenÚMAX_OUTPUT_CHARS)Úvalues    úJ/home/oem/CyberBrain26-unified/src/cyberbrain26/services/safe_oi/runner.pyÚ_clipr   "   s)   € Ü
ˆ5ƒzÔ%Ò%ØˆØÐ"Ô"Ð#Ð&;Ñ;Ð;ó    c                 óx   — t         j                  j                  d„ dD «       «      } t        t        «      | ddddœS )Nc              3  óR   K  — | ]  }t        |«      j                  «       r|–— Œ! y ­w)N)r   Úis_dir)Ú.0Ú	directorys     r   ú	<genexpr>z$_safe_environment.<locals>.<genexpr>)   s(   è ø€ ò àÜ�	‹?×!Ñ!Ô#ô 	ñùs   ‚%')z/usr/local/binz/usr/binz/binzC.UTF-8Ú1)ÚHOMEÚPATHÚLANGÚLC_ALLÚPYTHONUNBUFFERED)ÚosÚpathsepÚjoinÚstrÚ	WORKSPACE)Úpaths    r   Ú_safe_environmentr,   (   s@   € Ü�:‰:�?‰?ñ à?ôó €Dô ”I“ØØØØñð r   c                óä   — | j                  «       j                  «       }|dv rt        j                  d«      xs d}|d|gS |dv rt        j                  d«      xs d}|dd|gS t	        d	| › �«      ‚)
N>   r   r   r   r   z/bin/shz-c>   r   r   Úpython3z/usr/bin/python3z-Iõ   NepovolenÃ½ jazyk: )ÚstripÚlowerÚshutilÚwhichÚ
ValueError)ÚlanguageÚcodeÚ
normalizedr   r   s        r   Ú_command_forr8   7   s   € Ø—‘Ó!×'Ñ'Ó)€JØÐ,Ñ,Ü—‘˜VÓ$Ò1¨	ˆØ�t˜TÐ"Ð"ØÐ%Ñ%Ü—‘˜iÓ(Ò>Ð,>ˆØ˜˜d DÐ)Ð)Ü
Ð*¨8¨*Ð5Ó
6Ð6r   c                ó  — t        | t        «      r| j                  «       sddddœS |xs dj                  «       j                  «       }|t        vrddd|xs d› d�t        t        «      d	œS t        j                  d
dd¬«       	 t        j                  t        || «      t        t        «       t        j                  ddt        d¬«      }|j                  dk(  |j                  dk(  rdnd||j                  t        |j                   xs d«      t        |j"                  xs d«      t        t        t        «      dœS # t        j$                  $ r‹}dd|t        t        |j                   t        «      r|j                   xs dnd«      t        t        |j"                  t        «      r|j"                  xs dnd«      t        t        t        «      dœcY d }~S d }~wt&        $ r(}ddt        |«      |t        t        «      dœcY d }~S d }~ww xY w)NFÚrejectedu   PrÃ¡zdnÃ½ kÃ³d nelze spustit.)ÚokÚstatusÚreasonÚ r/   Úneuvedenú.)r;   r<   r=   Úallowed_languagesr   Tr	   )ÚcwdÚenvÚstdinÚcapture_outputÚtextÚtimeoutÚcheckr   Ú	completedÚfailed)r;   r<   r5   Ú
returncodeÚstdoutÚstderrÚtimeout_secondsÚ	workspacerG   )r;   r<   r5   rL   rM   rN   rO   Úerror)r;   r<   r=   r5   rO   )Ú
isinstancer)   r0   r1   ÚALLOWED_LANGUAGESÚsortedr*   ÚmkdirÚ
subprocessÚrunr8   r,   ÚDEVNULLÚTIMEOUT_SECONDSrK   r   rL   rM   ÚTimeoutExpiredÚOSError)r6   r5   r7   rI   Úexcs        r   Úrun_approved_coder\   B   sÒ  € Ü�dœCÔ ¨¯
©
¬àØ Ø5ñ
ð 	
ð ’.˜b×'Ñ'Ó)×/Ñ/Ó1€JØÔ*Ñ*àØ Ø+¨HÒ,B¸
Ð+CÀ1ÐEÜ!'Ô(9Ó!:ñ	
ð 	
ô ‡O�O˜¨°t€OÔ<ð&
Ü—N‘NÜ˜ TÓ*ÜÜ!Ó#Ü×$Ñ$ØØÜ#Øô	
ˆ	ð ×&Ñ&¨!Ñ+Ø%.×%9Ñ%9¸QÒ%>‘kÀHØ"Ø#×.Ñ.Ü˜I×,Ñ,Ò2°Ó3Ü˜I×,Ñ,Ò2°Ó3Ü.ÜœY›ñ	
ð 		
øô ×$Ñ$ò 	
àØØ"Ü´*¸S¿Z¹ZÌÔ2M˜SŸZ™ZÒ-©2ÐSUÓVÜ´*¸S¿Z¹ZÌÔ2M˜SŸZ™ZÒ-©2ÐSUÓVÜ.ÜœY›ñ
õ 	
ûô ò 
àØÜ˜#“hØ"ÜœY›ñ
õ 	
ûð
ús2   ÂB6D= Ä=H
ÅB GÇH
ÇH
Ç"HÇ?H
ÈH
)r   r)   Úreturnr)   )r]   zdict[str, str])r5   r)   r6   r)   r]   z	list[str])r6   r)   r5   r)   r]   zdict[str, Any])Ú__doc__Ú
__future__r   r&   r2   rU   Úpathlibr   Útypingr   Ú__file__ÚresolveÚparentÚPROJECT_ROOTÚcyberbrain26.pathsr   Ú_project_root_fnÚenvironÚgetr)   r*   rT   rX   r   rR   r   r,   r8   r\   © r   r   ú<module>rk      sª   ðñõ #ã 	Û Û Ý Ý á�H‹~×%Ñ%Ó'×.Ñ.×5Ñ5€õ @áØ‡J�J‡N�NØÙÑÓÐ!3Ñ3Ó4óó€	ð 
‡��U D°4€Ô 8Ø€ØÐ Ú;Ð ó<óó7ô9
r   