
    i                         d Z ddlZddlZddlZddlmZ ddlZddlmZ  ej	        e
          ZdZ G d de          ZdS )z!Firecrawl cloud browser provider.    N)Dict)CloudBrowserProviderzhttps://api.firecrawl.devc                       e Zd ZdZdefdZdefdZdefdZde	eef         fdZ
dede	eef         fdZd	edefd
Zd	eddfdZdS )FirecrawlProviderz8Firecrawl (https://firecrawl.dev) cloud browser backend.returnc                     dS )N	Firecrawl selfs    F/home/ubuntu/.hermes/hermes-agent/tools/browser_providers/firecrawl.pyprovider_namezFirecrawlProvider.provider_name   s    {    c                 Z    t          t          j                            d                    S )NFIRECRAWL_API_KEY)boolosenvirongetr   s    r   is_configuredzFirecrawlProvider.is_configured   s    BJNN#677888r   c                 L    t           j                            dt                    S )NFIRECRAWL_API_URL)r   r   r   	_BASE_URLr   s    r   _api_urlzFirecrawlProvider._api_url   s    z~~19===r   c                 r    t           j                            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   r   r   
ValueError)r   api_keys     r   _headerszFirecrawlProvider._headers!   sT    *..!455 	8  
 /0w00
 
 	
r   task_idc                    t          t          j                            dd                    }d|i}t	          j        |                                  d|                                 |d          }|j        st          d|j
         d|j                   |                                }d	| d
t          j                    j        d d          }t                               d|           ||d         |d         ddidS )NFIRECRAWL_BROWSER_TTL300ttlz/v2/browser   )headersjsontimeoutz,Failed to create Firecrawl browser session:  hermes__   z$Created Firecrawl browser session %sidcdpUrl	firecrawlT)session_namebb_session_idcdp_urlfeatures)intr   r   r   requestspostr   r   okRuntimeErrorstatus_codetextr'   uuiduuid4hexloggerinfo)r   r    r$   bodyresponsedatar0   s          r   create_sessionz FirecrawlProvider.create_session-   s   "*..!8%@@AA#(#,=}}+++MMOO	
 
 
 { 	:': :*2-: :  
 }}AAA4:<<+;BQB+?AA:LIII )!$ZH~$d+	
 
 	
r   
session_idc                    	 t          j        |                                  d| |                                 d          }|j        dv rt
                              d|           dS t
                              d||j        |j        d d                    d	S # t          $ r'}t
          
                    d
||           Y d }~d	S d }~ww xY w)N/v2/browser/
   r&   r(   )         z(Successfully closed Firecrawl session %sTz2Failed to close Firecrawl session %s: HTTP %s - %srI   Fz*Exception closing Firecrawl session %s: %s)r5   deleter   r   r9   r>   debugwarningr:   	Exceptionerror)r   rD   rA   es       r   close_sessionzFirecrawlProvider.close_sessionK   s    	==??<<
<<  H
 #66GTTTtH(M$3$'	   u 	 	 	LLEzSTUUU55555	s   A$B (/B 
C
#CC
Nc                 >   	 t          j        |                                  d| |                                 d           d S # t          $ r t
                              d|           Y d S t          $ r'}t
                              d||           Y d }~d S d }~ww xY w)NrF      rH   uE   Cannot emergency-cleanup Firecrawl session %s — missing credentialsz5Emergency cleanup failed for Firecrawl session %s: %s)	r5   rL   r   r   r   r>   rN   rO   rM   )r   rD   rQ   s      r   emergency_cleanupz#FirecrawlProvider.emergency_cleanupa   s    		aO==??<<
<<     
  	p 	p 	pNNbdnoooooo 	a 	a 	aLLPR\^_`````````	as   A A %B,	B5BB)__name__
__module____qualname____doc__strr   r   r   r   r   r   objectrC   rR   rU   r
   r   r   r   r      s       BBs    9t 9 9 9 9># > > > >

$sCx. 

 

 

 


c 
d3;.? 
 
 
 
<     ,
aC 
aD 
a 
a 
a 
a 
a 
ar   r   )rY   loggingr   r;   typingr   r5   tools.browser_providers.baser   	getLoggerrV   r>   r   r   r
   r   r   <module>r`      s    ' '  				         = = = = = =		8	$	$'	Za Za Za Za Za, Za Za Za Za Zar   