Ë
    "Yê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d«      j                  «       Zedz  Zg d¢Zg d	¢Z ej                  d
«      Zd d„Zd!d"d„ZdddddddœdddœddddœdœdgddœdœdœZddgZy)#z@shell_tools.py - shell tool s policy: read=auto, write=approval.é    )ÚannotationsN)ÚPath)ÚAnyz/home/oem/CyberBrain26-labzrunner-workspace)z&^(pwd|whoami|hostname|date|uptime)\s*$z^ls\bz^cat\bz^head\bz^tail\bz^wc\bz^grep\bz^find\bz^df\bz^du\bz^free\bz^ps\bz^top\s+-b\bz-^git\s+(status|log|diff|show|branch|remote)\bz^python3?\s+--versionz^pip\s+(list|show)\bz+^uv\s+(pip\s+list|run\s+python\s+--version)z^curl\s+-s?[SX]?\s+http)
zrm\s+-rf\s+/z
\bdd\s+if=z\bmkfs\bz	>\s*/dev/z
:\(\)\s*\{z\.env\bÚid_rsaÚ
id_ed25519z\.ssh/z\.aws/z[|><;&`$\n]Úcommandc                ó  — | j                  «       }|sy|j                  «       }t        D ]  }t        j                  ||«      sŒ y t
        j	                  |«      ryt        D ]  }t        j                  ||«      sŒ y y)NÚdenyÚwriteÚread)ÚstripÚlowerÚHARD_DENY_PATTERNSÚreÚsearchÚ
SHELL_METAÚREAD_PATTERNSÚmatch)r   ÚcÚlowÚpats       úO/home/oem/CyberBrain26-unified/src/cyberbrain26/services/safe_oi/shell_tools.pyÚ	_classifyr   )   sv   € Ø�‰‹€AÙØØ
�'‰'‹)€CÜ!ò ˆÜ�9‰9�S˜#ÕÙðô ×Ñ˜ÔØÜò ˆÜ�8‰8�C˜ÕÙðð ó    Fc                ó\  — | xs dj                  «       } | sdddœS t        | «      }|dk(  rd| ddœS |d	k(  r|sd
| ddœS 	 |dk7  rt        |z  j                  «       nt        }	 |j	                  t        «       t        j                  | «      }|sd| ddœS t        j                  |dt        |«      ddt        t        t        |«      d«      d«      ¬«      }|j                  xs ddd }|j                  xs ddd }	|j                   dk(  rdnd|j                   | |t        k7  rt        |j	                  t        «      «      nd||	dœS # t
        $ r	 t        }Y Œàw xY w# t        j"                  $ r d| d|› d�dœcY S t$        $ r(}
d| t'        |
«      j(                  › d|
› �dœcY d}
~
S d}
~
ww xY w)z0Read prikazy spusti, write vrati needs_approval.Ú Úerrorzprazdny prikaz)Ústatusr   r
   Údeniedzprikaz je v hard-deny seznamu)r   r   Úreasonr   Úneeds_approvalz5write/rizikovy prikaz - vyzaduje schvaleni uzivatelemú.u   prÃ¡zdnÃ½ pÅ™Ã­kaz)r   r   r   FTé   é<   )ÚshellÚcwdÚcapture_outputÚtextÚtimeoutNiˆ  iÐ  r   Úsuccess)r   Ú	exit_coder   r&   ÚstdoutÚstderrr)   zprekrocen timeout (zs)z: )r   r   ÚPROJECT_ROOTÚresolveÚrelative_toÚ
ValueErrorÚshlexÚsplitÚ
subprocessÚrunÚstrÚminÚmaxÚintr,   r-   Ú
returncodeÚTimeoutExpiredÚ	ExceptionÚtypeÚ__name__)r   r&   r)   Úauto_runÚcategoryÚwdÚargvÚrÚoutÚerrÚes              r   Ú	run_shellrG   9   sâ  € àŠ}˜"×#Ñ#Ó%€GÙØ!Ð,<Ñ=Ð=ä˜Ó!€Hà�6ÒØ"Ø"Ø9ñ;ð 	;ð �7Ò¡8Ø*Ø"ØQñSð 	Sð
)5Ø/2°cªzŒl˜SÑ ×)Ñ)Ô+¼|ˆð	Ø�N‰Nœ<Ô(ô �{‰{˜7Ó#ˆÙà!Ø"Ø-ñð ô �N‰NØØÜ�B“ØØÜœœC ›L¨!Ó,¨bÓ1ô
ˆð �x‰xŠ~˜2˜u Ð%ˆØ�x‰xŠ~˜2˜u Ð%ˆð $%§<¡<°1Ò#4‘i¸'ØŸ™ØØ8:¼lÒ8J”3�r—~‘~¤lÓ3Ô4ÐPSØØñ
ð 	
øô/ ò 	ÜŠBð	ûô@ ×$Ñ$ò <Ø#°Ø.¨w¨i°rÐ:ñ<ò 	<äò 5Ø!¨gÜ  ›G×,Ñ,Ð-¨R°¨sÐ3ñ5õ 	5ûð5úsO   Á "E Á#E Á8E ÂB1E ÅEÅE ÅEÅE ÅF+Å;F+ÆF&Æ F+Æ&F+ÚfunctionrG   z}Spusti shell prikaz. Read-only prikazy (ls, cat, git status, df) se spusti automaticky. Write prikazy vraci 'needs_approval'.ÚobjectÚstringzShell prikaz)r=   Údescriptionz'Pracovni adresar (relativne k projektu)Úintegerr#   r$   )r=   ÚminimumÚmaximum)r   r&   r)   )r=   Ú
propertiesÚrequiredÚadditionalProperties)ÚnamerK   Ú
parameters)r=   rH   ÚRUN_SHELL_TOOL)r   r6   Úreturnr6   )r"   é   F)
r   r6   r&   r6   r)   r9   r?   ÚboolrU   zdict[str, Any])Ú__doc__Ú
__future__r   r   r2   r4   Úpathlibr   Útypingr   r/   r.   Ú	WORKSPACEr   r   Úcompiler   r   rG   rT   Ú__all__© r   r   ú<module>r`      sÁ   ðÙ FÝ "ã 	Û Û Ý Ý áÐ0Ó1×9Ñ9Ó;€ØÐ-Ñ-€	ò€òÐ ð ˆR�Z‰Z˜Ó'€
óô <5ð~ %Øð	Gð $à (¸ÑHØ$Ð5^Ñ_Ø )°aÀBÑGñ
ð
 �K¸ñ@ñ3Añ B€ð ˜[Ð
)�r   