Ë
    âß²jš  ã                  ó¬   — d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ  ej                  e«      ZdZ G d„ d	e«      ZddlZddlZd
diZd„ Zy)uf  Firecrawl cloud browser (``/v2/browser`` only; the web plugin under ``plugins/web/firecrawl/``
shares ``FIRECRAWL_API_KEY``). Config ``browser.cloud_provider: "firecrawl"`` (explicit only â€” not
in the legacy auto-detect walk). Env: ``FIRECRAWL_API_KEY``, ``FIRECRAWL_API_URL`` (default
https://api.firecrawl.dev), ``FIRECRAWL_BROWSER_TTL`` (default 300 s).é    )ÚannotationsN)ÚAnyÚDictÚOptional)Ú
get_secret)ÚCloudBrowserProviderzhttps://api.firecrawl.devc                  ó`   — e Zd ZdZdZdZdZdZdZdZ	dd	d
dœgZ
dd„Zdd„Zdd„Zddd„Zdd„Zy)ÚFirecrawlBrowserProviderz8Firecrawl (https://firecrawl.dev) cloud browser backend.Ú	firecrawlÚ	FirecrawlÚdeletez/v2/browser/{session_id}z browserz#Cloud browser with remote executionÚFIRECRAWL_API_KEYzFirecrawl API keyzhttps://firecrawl.dev)ÚkeyÚpromptÚurlc                ó*   — t        dd«      xs t        S )NÚFIRECRAWL_API_URLÚ )r   Ú	_BASE_URL©Úselfs    úG/home/ubuntu/.hermes/hermes-agent/plugins/browser/firecrawl/provider.pyÚ_api_urlz!FirecrawlBrowserProvider._api_url!   s   € äÐ-¨rÓ2Ò?´iÐ?ó    c                ó@   — t        d«      rd| j                  «       iS d S )Nr   Úbase_url)r   r   r   s    r   Ú_get_config_or_nonez,FirecrawlBrowserProvider._get_config_or_none%   s!   € Ü0:Ð;NÔ0O�
˜DŸM™M›OÐ,ÐYÐUYÐYr   c                ó&   — d| j                  «       iS )Nr   )r   r   s    r   Ú_get_configz$FirecrawlBrowserProvider._get_config(   s   € ð ˜DŸM™M›OÐ,Ð,r   Nc                óB   — t        d«      }|st        d«      ‚dd|› �dœS )Nr   zYFIRECRAWL_API_KEY environment variable is required. Get your key at https://firecrawl.devzapplication/jsonzBearer )zContent-TypeÚAuthorization)r   Ú
ValueError)r   ÚconfigÚapi_keys      r   Ú_headersz!FirecrawlBrowserProvider._headers-   s6   € ÜÐ0Ó1ˆÙÜð8ó9ð 9ð !3ÀwÈwÈiÐEXÑYÐYr   c                óš  — 	 t        t        j                  j                  dd«      «      }| j                  | j                  «       › d�| j                  «       d|i«      }| j                  |«       |j                  «       }| j                  |«      }t        j                  d|«       ||d   |d   d	d
idœS # t        t
        f$ r d}Y Œžw xY w)NÚFIRECRAWL_BROWSER_TTLÚ300i,  z/v2/browserÚttlz$Created Firecrawl browser session %sÚidÚcdpUrlr   T)Úsession_nameÚbb_session_idÚcdp_urlÚfeatures)ÚintÚosÚenvironÚgetr"   Ú	TypeErrorÚ_post_creater   r%   Ú_check_createdÚjsonÚ_session_nameÚloggerÚinfo)r   Útask_idr)   ÚresponseÚdatar,   s         r   Úcreate_sessionz'FirecrawlBrowserProvider.create_session5   sÈ   € ð	Ü”b—j‘j—n‘nÐ%<¸eÓDÓEˆCð ×$Ñ$¨¯©«Ð'8¸Ð%DÀdÇmÁmÃoÐX]Ð_bÐWcÓdˆØ×Ñ˜HÔ%Ø�}‰}‹ˆØ×)Ñ)¨'Ó2ˆÜ�‰Ð:¸LÔIà(Ø! $™ZØ˜H‘~Ø$ dÐ+ñ	
ð 	
øô œIÐ&ò 	ØŠCð	ús   ‚)B6 Â6C
Ã	C
)ÚreturnÚstr)r?   úOptional[Dict[str, Any]])r?   zDict[str, Any])N)r#   rA   r?   zDict[str, str])r;   r@   r?   zDict[str, object])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úprovider_idÚlabelÚrelease_methodÚrelease_pathÚcreate_label_suffixÚ	setup_tagÚsetup_env_varsr   r   r   r%   r>   © r   r   r
   r
      sS   „ ÙBà€KØ€EØ€NØ-€LØ$ÐØ5€Ià#Ð/BÐKbÑcð€Nó@óZó-ô
Zô
r   r
   ÚBrowserProvider)zagent.browser_providerrN   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_onceé   )	Ú_PLUGIN_COMPAT_LAZYr3   ÚAttributeErrorrB   Ú	importlibÚhermes_cli.plugin_compatrP   ÚgetattrÚimport_module)ÚnameÚtargetrT   rP   s       r   Ú__getattr__rZ   U   se   € Ü ×$Ñ$ TÓ*€FØ€~Ü˜w¤x lÐ2DÀTÀHÐMÓNÐNÛÝ2ÙŒh˜Ð&˜vÓ&Ü�9×*Ñ*¨6°!©9Ó5°v¸a±yÓAÐAr   )rE   Ú
__future__r   Úloggingr1   Útypingr   r   r   Úagent.secret_scoper   Úplugins.browser._commonr   Ú	getLoggerrB   r9   r   r
   ÚrequestsÚuuidrR   rZ   rM   r   r   ú<module>rc      se   ðñJõ
 #ã Û 	ß &Ñ &å )Ý 8à	ˆ×	Ñ	˜8Ó	$€à'€	ô1
Ð3ô 1
óp Û ð ÐDðÐ ó
Br   