Ë
    MÞëjW  ã            
      ó|   — U d Z ddlmZ ddlmZ 	 	 d	 	 	 dd„Zdd	d
ddddœdddddœdœdgddœdœdœZded<   dd	gZy)uS  
web_search.py â€” Web search tool pro CyberBrain26 safe_oi.

PouÅ¾Ã­vÃ¡ DuckDuckGo pÅ™es knihovnu ddgs (100% zdarma, bez API klÃ­Ä�e).
NavrÃ¡cenÃ¡ struktura je kompatibilnÃ­ s LiteLLM tool calling formÃ¡tem.

PouÅ¾itÃ­:
    from .web_search import web_search, WEB_SEARCH_TOOL
    result = web_search("Python 3.13 release", max_results=3)
é    )Úannotations)ÚAnyNÚqueryúdict[str, Any]c                óà  — | xs dj                  «       } | sdddœS 	 t        t        t        |«      d«      d«      }	 dd	lm} 	 ddi}|r||d<    |di |¤Žj                  | |¬«      }g }|xs g D ]ƒ  }	|	j                  d«      xs |	j                  d«      xs d}
|j                  t        |	j                  dd«      «      dd t        |
«      dd t        |	j                  dd«      «      dd dœ«       Œ… |sd| g ddœS d| |dœS # t        t
        f$ r d}Y ŒÜw xY w# t        $ r}dd
|› �dœcY d}~S d}~ww xY w# t        $ r*}dt        |«      j                  › d|› �dd dœcY d}~S d}~ww xY w)uk  
    VyhledÃ¡ ve veÅ™ejnÃ©m webu pÅ™es DuckDuckGo.

    Args:
        query: dotaz (neprÃ¡zdnÃ½ string)
        max_results: 1â€“10, vÃ½chozÃ­ 5
        timelimit: 'd'|'w'|'m'|'y' pro den/tÃ½den/mÄ›sÃ­c/rok, nebo None

    Returns:
        {'status': 'success', 'query': ..., 'results': [{title, url, snippet}]}
        nebo {'status': 'error', 'error': ...}
    Ú Úerrorzquery required)Ústatusr	   é   é
   é   r   )ÚDDGSzddgs not installed: NÚtimeoutÚ	timelimit)Úmax_resultsÚhrefÚurlÚtitlei,  iÐ  ÚbodyiÜ  )r   r   ÚsnippetÚsuccessz
no results)r
   r   ÚresultsÚnote)r
   r   r   z: iô  © )ÚstripÚminÚmaxÚintÚ	TypeErrorÚ
ValueErrorÚddgsr   ÚImportErrorÚtextÚgetÚappendÚstrÚ	ExceptionÚtypeÚ__name__)r   r   r   Úmrr   ÚexcÚkwargsÚrawr   Úrr   s              úN/home/oem/CyberBrain26-unified/src/cyberbrain26/services/safe_oi/web_search.pyÚ
web_searchr0      s°  € ð Š[�b×ÑÓ!€EÙØ!Ð,<Ñ=Ð=ðÜ””S˜Ó% qÓ)¨2Ó.ˆð7Ýð
RØ"+¨R ˆÙØ"+ˆF�;Ñá‰n�V‰n×!Ñ! %°RÐ!Ó8ˆØˆØ’)˜ò 	ˆAØ—%‘%˜“-Ò5 1§5¡5¨£<Ò5°2ˆCØ�N‰NÜ˜QŸU™U 7¨BÓ/Ó0°°#Ð6Ü˜3“x  �Ü˜qŸu™u V¨RÓ0Ó1°%°4Ð8ñõ ð	ñ Ø'°%ÀBØ(ñ*ð *ð $¨eÀÑHÐHøô9 ”zÐ"ò ØŠðûô
 ò 7Ø!Ø/°¨uÐ5ñ7õ 	7ûð7ûô2 ò RØ!¬t°C«y×/AÑ/AÐ.BÀ"ÀSÀEÐ,JÈ4ÈCÐ,PÑQÕQûðRúsS   �D ½D ÁB:D: Ã?D: ÄDÄDÄ	D7Ä%D2Ä,D7Ä2D7Ä:	E-ÅE(Å"E-Å(E-Úfunctionr0   u±   VyhledÃ¡ informace na veÅ™ejnÃ©m webu pÅ™es DuckDuckGo. PouÅ¾ij, kdyÅ¾ potÅ™ebujeÅ¡ aktuÃ¡lnÃ­ informace, novinky, nebo fakta, kterÃ¡ nemusÃ­ bÃ½t v tvÃ½ch trÃ©novacÃ­ch datech.ÚobjectÚstringu)   VyhledÃ¡vacÃ­ dotaz v pÅ™irozenÃ©m jazyce)r(   ÚdescriptionÚintegerr   r   u   PoÄ�et vÃ½sledkÅ¯ (vÃ½chozÃ­ 5))r(   ÚminimumÚmaximumr4   )r   r   F)r(   Ú
propertiesÚrequiredÚadditionalProperties)Únamer4   Ú
parameters)r(   r1   ÚWEB_SEARCH_TOOL)r   N)r   r&   r   r   r   z
str | NoneÚreturnr   )	Ú__doc__Ú
__future__r   Útypingr   r0   r=   Ú__annotations__Ú__all__r   ó    r/   ú<module>rE      s™   ðò	õ #å ð /0Ø'+ð3RØ$ð3RØ0>ó3Rðp àðHð
 ð %Ø#Nñð
 &Ø Ø!Ø#Dñ	 ñð !˜	Ø$)ñ
ññ#€�ó ð< ˜lÐ
+�rD   