Ë
    )VêjÄ  ã            
      ó  — d Z ddlmZ ddlmZ ddlmZ  ed«      j                  «       ZdZ	d)d„Z
e	fd*d	„Zd+d,d
„Zd-d.d„ZdddddddœddddœdœdgddœdœdœZddddddddœig ddœdœdœZdd d!dd"didd#dœdd$d%dœd&œdgddœdœdœZg d'¢Zy()/u@   file_tools.py - read-only file operace pro AI. BezpeÄ�nÃ© cesty.é    )Úannotations)ÚPath)ÚAnyz/home/oem/CyberBrain26-labiPÃ  c                óì   — t        | «      j                  «       }|j                  «       s	t        |z  }|j	                  «       }	 |j                  t        «       |S # t        $ r t        d|› �«      ‚w xY w)NzMimo projekt: )r   Ú
expanduserÚis_absoluteÚPROJECT_ROOTÚresolveÚrelative_toÚ
ValueErrorÚPermissionError)ÚrawÚps     úN/home/oem/CyberBrain26-unified/src/cyberbrain26/services/safe_oi/file_tools.pyÚ
_safe_pathr      sm   € ÜˆS‹	×ÑÓ€AØ�=‰=Œ?Ü˜1ÑˆØ	�	‰	‹€Að4Ø	�‰”lÔ#ð €Høô ò 4Ü ¨q¨cÐ2Ó3Ð3ð4ús   ÁA ÁA3Úpathc                ód  — 	 t        | «      }|j                  «       sdd| › �dœS |j                  dd¬«      }t        |j	                  d«      «      |kD  }|r|d | }dt        |j                  t        «      «      ||dœS # t        $ r'}dt        |«      j                  › d	|› �dœcY d }~S d }~ww xY w)
NÚerrorzneni soubor: ©Ústatusr   zutf-8Úreplace)ÚencodingÚerrorsÚsuccess)r   r   Ú	truncatedÚcontentú: )r   Úis_fileÚ	read_textÚlenÚencodeÚstrr   r	   Ú	ExceptionÚtypeÚ__name__)r   Ú	max_bytesr   ÚdataÚtruncÚes         r   Ú	read_filer*      s»   € ðHÜ�tÓˆØ�y‰yŒ{Ø%°-À¸vÐ0FÑGÐGØ�{‰{ G°Iˆ{Ó>ˆÜ�D—K‘K Ó(Ó)¨IÑ5ˆÙØ˜
˜Ð#ˆDØ#¬S°·±¼|Ó1LÓ-MØ"¨tñ5ð 	5øäò HØ!¬t°A«w×/?Ñ/?Ð.@ÀÀ1À#Ð,FÑGÕGûðHús#   ‚"A? ¥AA? Á?	B/ÂB*Â$B/Â*B/c                óF  — 	 t        | «      }|j                  «       sdd| › �dœS g }t        |j                  «       «      D ]^  }	 |j	                  «       }|j                  |j                  |j                  «       rdnd|j                  dœ«       t        |«      d	k\  sŒ^ n d
t        |j                  t        «      «      |dœS # t        $ r! |j                  |j                  ddœ«       Y Œ]w xY w# t        $ r'}dt        |«      j                  › d|› �dœcY d }~S d }~ww xY w)Nr   zneni adresar: r   ÚdirÚfile)Únamer$   ÚsizeÚ?)r.   r$   éÈ   r   )r   r   Úentriesr   )r   Úis_dirÚsortedÚiterdirÚstatÚappendr.   Úst_sizer#   r    r"   r   r	   r$   r%   )r   r   r2   ÚitemÚstr)   s         r   Úlist_dirr;   &   s  € ðHÜ�tÓˆØ�x‰xŒzØ%°.ÀÀÐ0GÑHÐHØˆÜ˜1Ÿ9™9›;Ó'ò 	ˆDðAØ—Y‘Y“[�Ø—‘Ø ŸI™IØ%)§[¡[¤]™E¸ØŸJ™Jñ ô ô �7‹|˜sÓ"Ùð	ð $Ü˜AŸM™M¬,Ó7Ó8Ø"ñ$ð 	$øô	 ò AØ—‘¨¯	©	¸3Ñ?Ö@ðAûô ò HØ!¬t°A«w×/?Ñ/?Ð.@ÀÀ1À#Ð,FÑGÕGûðHúsM   ‚"C0 ¥C0 ÁACÂC0 Â$C0 Ã'C-Ã*C0 Ã,C-Ã-C0 Ã0	D Ã9DÄD ÄD Úpatternc                óV  — 	 t        |«      }g }|j                  d«      D ]Å  }|j                  «       sŒ|j                  j	                  d«      r| j	                  d«      sŒAt        |j                  «      }|h d£z  rŒ^| j                  «       |j                  j                  «       v sŒ‰|j                  t        |j                  t        «      «      «       t        |«      |k\  sŒÅ n d| t        |«      |dœS # t        $ r'}dt        |«      j                  › d|› �dœcY d }~S d }~ww xY w)	NÚ*ú.>   ú.gitÚvenvÚ_legacyÚ__pycache__Únode_modulesr   )r   r<   ÚcountÚmatchesr   r   r   )r   Úrglobr   r.   Ú
startswithÚsetÚpartsÚlowerr7   r"   r   r	   r    r#   r$   r%   )r<   r   Úmax_resultsÚbaserF   ÚfrJ   r)   s           r   Ú
find_filesrO   ?   s  € ðHÜ˜$ÓˆØˆØ—‘˜C“ò 	ˆAØ—9‘9”;ØØ�v‰v× Ñ  Ô%¨g×.@Ñ.@ÀÔ.EØÜ˜Ÿ™“LˆEØÒQÒQØØ�}‰}‹ !§&¡&§,¡,£.Ò0Ø—‘œs 1§=¡=´Ó#>Ó?Ô@Ü�w“< ;Ó.Ùð	ð $°Ü˜W›°'ñ;ð 	;øäò HØ!¬t°A«w×/?Ñ/?Ð.@ÀÀ1À#Ð,FÑGÕGûðHús*   ‚B&C8 Â);C8 Ã%C8 Ã8	D(ÄD#ÄD(Ä#D(Úfunctionr*   z,Precte obsah souboru v projektu (read-only).ÚobjectÚstringzRelativni cesta k souboru)r$   ÚdescriptionÚintegeréd   i@ )r$   ÚminimumÚmaximum)r   r&   F)r$   Ú
propertiesÚrequiredÚadditionalProperties)r.   rS   Ú
parameters)r$   rP   r;   z!Vypise obsah adresare v projektu.zRelativni cesta (vychozi .)rO   z<Najde soubory podle casti nazvu (rekurzivne, bez venv/.git).r$   zKde hledat (vychozi .)é   r1   )r<   r   rL   )ÚFIND_FILES_TOOLÚLIST_DIR_TOOLÚREAD_FILE_TOOLrO   r;   r*   N)r   r"   Úreturnr   )r   r"   r&   Úintr`   údict[str, Any])r?   )r   r"   r`   rb   )r?   é2   )r<   r"   r   r"   rL   ra   r`   rb   )Ú__doc__Ú
__future__r   Úpathlibr   Útypingr   r
   r	   ÚMAX_READr   r*   r;   rO   r_   r^   r]   Ú__all__© ó    r   ú<module>rl      s
  ðÙ FÝ "å Ý áÐ0Ó1×9Ñ9Ó;€Ø€ó	ð +3ô HôHô2Hð, %ØØAØ#à%Ð6QÑRØ"+¸ÈÑOñ
ð �H°eñ=ñ3>ñ ?€ð $ØØ6Ø#Ø¨ÐA^Ñ_Ð`Ø°ñ7ñ28ñ 9€ð &ØØQØ#à Ð)Ø%Ð6NÑOØ$-¸!ÈÑLñ
ð
 �K¸ñ@ñ	4Añ 	B€ò�rk   