+
    Ӄi                         R t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHt ]P                  ! ]
4      tRt ! R R]4      tR# )z!Firecrawl cloud browser provider.N)Dict)CloudBrowserProviderzhttps://api.firecrawl.devc                      a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltRtV tR# )FirecrawlProviderz8Firecrawl (https://firecrawl.dev) cloud browser backend.c                    < V ^8  d   QhRS[ /#    returnstr)format__classdict__s   ">/home/ubuntu/hermes-agent/tools/browser_providers/firecrawl.py__annotate__FirecrawlProvider.__annotate__   s      s     c                    R # )	Firecrawl selfs   &r   provider_nameFirecrawlProvider.provider_name   s    r   c                    < V ^8  d   QhRS[ /# r   )bool)r   r   s   "r   r   r      s     9 9t 9r   c                R    \        \        P                  P                  R 4      4      # )FIRECRAWL_API_KEY)r   osenvirongetr   s   &r   is_configuredFirecrawlProvider.is_configured   s    BJJNN#6788r   c                    < V ^8  d   QhRS[ /# r   r
   )r   r   s   "r   r   r      s     > ># >r   c                J    \         P                  P                  R \        4      # )FIRECRAWL_API_URL)r   r   r   	_BASE_URLr   s   &r   _api_urlFirecrawlProvider._api_url   s    zz~~19==r   c                6   < V ^8  d   QhRS[ S[S[3,          /# r   )r   r   )r   r   s   "r   r   r   !   s     

 

$sCx. 

r   c                x    \         P                  P                  R 4      pV'       g   \        R4      hRRRRV 2/# )r   zYFIRECRAWL_API_KEY environment variable is required. Get your key at https://firecrawl.devzContent-Typezapplication/jsonAuthorizationzBearer )r   r   r   
ValueError)r   api_keys   & r   _headersFirecrawlProvider._headers!   sH    **..!458 
 .wwi0
 	
r   c                <   < V ^8  d   QhRS[ RS[S[ S[3,          /# )r   task_idr	   )r   r   object)r   r   s   "r   r   r   -   s$     
 
c 
d3;.? 
r   c           	        \        \        P                  P                  R R4      4      pRV/p\        P
                  ! V P                  4        R2V P                  4       V^R7      pVP                  '       g&   \        RVP                   RVP                   24      hVP                  4       pRV R\        P                  ! 4       P                  R	,           2p\         P#                  R
V4       RVRVR,          RVR,          RRR//# )FIRECRAWL_BROWSER_TTL300ttlz/v2/browser)headersjsontimeoutz,Failed to create Firecrawl browser session:  hermes__:N   Nz$Created Firecrawl browser session %ssession_namebb_session_ididcdp_urlcdpUrlfeatures	firecrawlT)intr   r   r   requestspostr&   r-   okRuntimeErrorstatus_codetextr7   uuiduuid4hexloggerinfo)r   r0   r5   bodyresponsedatar=   s   &&     r   create_session FirecrawlProvider.create_session-   s    "**..!8%@A#(#,==}}{+MMO	
 {{{>''((--: 
 }} 	4::<+;+;B+?*@A:LI LT$ZtH~d+	
 	
r   c                &   < V ^8  d   QhRS[ RS[/# )r   
session_idr	   )r   r   )r   r   s   "r   r   r   K   s        r   c                    \         P                  ! V P                  4        R V 2V P                  4       ^
R7      pVP                  R	9   d   \
        P                  RV4       R# \
        P                  RVVP                  VP                  R,          4       R#   \         d"   p\
        P                  RY4        Rp?R# Rp?ii ; i)
/v2/browser/r6   r8   z(Successfully closed Firecrawl session %sTz2Failed to close Firecrawl session %s: HTTP %s - %s:N   NFz*Exception closing Firecrawl session %s: %sN)rZ         )rE   deleter&   r-   rI   rN   debugwarningrJ   	Exceptionerror)r   rV   rQ   es   &&  r   close_sessionFirecrawlProvider.close_sessionK   s    	==?#<
|<H
 ##6GTH((MM$'	  	LLEzU	s   A!B %3B C%CCc                $   < V ^8  d   QhRS[ RR/# )r   rV   r	   Nr
   )r   r   s   "r   r   r   a   s     
a 
aC 
aD 
ar   c                     \         P                  ! V P                  4        R V 2V P                  4       ^R7       R#   \         d    \
        P                  RT4        R# \         d"   p\
        P                  RY4        Rp?R# Rp?ii ; i)rX   rY   uE   Cannot emergency-cleanup Firecrawl session %s — missing credentialsz5Emergency cleanup failed for Firecrawl session %s: %sN)	rE   r]   r&   r-   r+   rN   r_   r`   r^   )r   rV   rb   s   && r   emergency_cleanup#FirecrawlProvider.emergency_cleanupa   su    		aOO==?#<
|<
  	pNNbdno 	aLLPR\``	as!   :> !B"B+B,BBr   N)__name__
__module____qualname____firstlineno____doc__r   r    r&   r-   rS   rc   rg   __static_attributes____classdictcell__)r   s   @r   r   r      sP     B 9 9> >

 


 
< ,
a 
ar   r   )rm   loggingr   rK   typingr   rE   tools.browser_providers.baser   	getLoggerri   rN   r%   r   r   r   r   <module>rt      s@    '  	    =			8	$'	Za, Zar   