Ë
    âß²jW  ã                  ó¤   — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZ  ej                  e«      ZdZ G d„ de«      ZddlZd	d
iZd„ Zy)u  Brave Search (free-tier Data-for-Search API) â€” search only, 2,000 queries/month.

Config: ``web.search_backend`` / ``web.backend: "brave-free"`` (hyphen form kept for
existing user configs). Env: ``BRAVE_SEARCH_API_KEY``. Pair with Firecrawl/Tavily/Exa
for ``web_extract``.
é    )ÚannotationsN)ÚAnyÚDict)ÚBaseWebSearchProviderÚhttp_get_jsonÚprovider_envÚsearch_failÚ	search_okÚsetup_schemaÚtitled_rowsz.https://api.search.brave.com/res/v1/web/searchc                  ó.   — e Zd ZdZdZdZdZdd	d„Zd
d„Zy)ÚBraveFreeWebSearchProviderzCSearch-only Brave provider using the free-tier Data-for-Search API.z
brave-freeúBrave Search (Free)ÚBRAVE_SEARCH_API_KEYc                ó”  — t        d«      }|st        d«      S t        dt        |t	        dt        t        |«      d«      «      dœ|ddœd	t        ¬
«      \  }}|�|S |j                  d«      xs i j                  dg «      xs g }t        |d | d«      }t        j                  d|t        |«      t        |«      |«       t        |«      S )Nr   zBRAVE_SEARCH_API_KEY is not setzBrave Searché   é   )ÚqÚcountzapplication/json)zX-Subscription-TokenÚAccepté   )ÚparamsÚheadersÚtimeoutÚloggerÚwebÚresultsÚdescriptionz5Brave Search '%s': %d results (from %d raw, limit %d))r   r	   r   Ú_BRAVE_ENDPOINTÚmaxÚminÚintr   Úgetr   ÚinfoÚlenr
   )ÚselfÚqueryÚlimitÚapi_keyÚdataÚfailureÚraw_resultsÚweb_resultss           úD/home/ubuntu/.hermes/hermes-agent/plugins/web/brave_free/provider.pyÚsearchz!BraveFreeWebSearchProvider.search   sÊ   € ÜÐ5Ó6ˆÙÜÐ@ÓAÐAÜ%ØœOØ¬¨Q´´C¸³JÀÓ0CÓ)DÑEØ-4Ð@RÑSØœvô	
‰ˆˆgð ÐØˆNØ—x‘x “Ò,¨"×1Ñ1°)¸RÓ@ÒFÀBˆÜ! +¨f¨uÐ"5°}ÓEˆÜ�‰ÐKÈUÔTWÐXcÓTdÔfiÐjuÓfvÐx}Ô~Ü˜Ó%Ð%ó    c                ó"   — t        dddddd«      S )Nr   Úfreeu1   Free-tier API key â€” 2k queries/mo, search only.r   z Brave Search API key (free tier)zhttps://brave.com/search/api/)r   )r&   s    r.   Úget_setup_schemaz+BraveFreeWebSearchProvider.get_setup_schema,   s    € ÜØ! 6Ð+^Ø"Ð$FÐHgó
ð 	
r0   N)é   )r'   Ústrr(   r"   ÚreturnúDict[str, Any])r6   r7   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚNAMEÚDISPLAY_NAMEÚKEY_ENVr/   r3   © r0   r.   r   r      s   „ ÙMà€DØ(€LØ$€Gô&ô"
r0   r   ÚWebSearchProvider)zagent.web_search_providerr@   c                óÌ   — t         j                  | «      }|€t        dt        ›d| ›�«      ‚dd l}ddlm}  |t        | g|¢­Ž  t        |j                  |d   «      |d   «      S )Nzmodule z has no attribute r   )Ú	warn_oncer   )	Ú_PLUGIN_COMPAT_LAZYr#   ÚAttributeErrorr8   Ú	importlibÚhermes_cli.plugin_compatrB   ÚgetattrÚimport_module)ÚnameÚtargetrE   rB   s       r.   Ú__getattr__rK   ?   se   € Ü ×$Ñ$ TÓ*€FØ€~Ü˜w¤x lÐ2DÀTÀHÐMÓNÐNÛÝ2ÙŒh˜Ð&˜vÓ&Ü�9×*Ñ*¨6°!©9Ó5°v¸a±yÓAÐAr0   )r;   Ú
__future__r   ÚloggingÚtypingr   r   Úplugins.web._commonr   r   r   r	   r
   r   r   Ú	getLoggerr8   r   r   r   ÚosrC   rK   r?   r0   r.   ú<module>rR      sg   ðñõ #ã ß ÷ F÷  Fñ  Fà	ˆ×	Ñ	˜8Ó	$€àB€ô
Ð!6ô 
óF 
ð ÐKðÐ ó
Br0   