+
    i'                       a  R t0 t R t^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
t
^ RIHt ^ RIHt ^ RIHt ]P"                  ! ]4      t/ t] ^ k ]P*                  ! 4       tR R ltR R	 ltR
 R lt ! R R]4      tR# )z#Browserbase cloud browser provider.N)AnyDictOptional)CloudBrowserProvider)resolve_managed_tool_gateway)managed_nous_tools_enabledc                0    V ^8  d   QhR\         R\         /#    task_idreturnstr)formats   "@/home/ubuntu/hermes-agent/tools/browser_providers/browserbase.py__annotate__r      s      s s     c                    \         ;_uu_ 4        \        P                  V 4      pV'       d   VuuR R R 4       # R\        P                  ! 4       P
                   2pV\        V &   VuuR R R 4       #   + '       g   i     R # ; i)Nzbrowserbase-session-create:)_pending_create_keys_lock_pending_create_keysgetuuiduuid4hex)r   existingcreateds   &  r   !_get_or_create_pending_create_keyr      s^    	"	"'++G4 
#	"
 0

0@0@/AB(/W% 
#	"	"	"s   A0,A00B	c                (    V ^8  d   QhR\         RR/# )r
   r   r   Nr   )r   s   "r   r   r      s     0 0s 0t 0r   c                     \         ;_uu_ 4        \        P                  V R 4       R R R 4       R #   + '       g   i     R # ; iN)r   r   pop)r   s   &r   _clear_pending_create_keyr!      s'    	"	"  $/ 
#	"	"	"s	   0A	c                D    V ^8  d   QhR\         P                  R\        /# )r
   responser   )requestsResponsebool)r   s   "r   r   r   $   s      , ,(2C2C , ,r   c                    V P                   R 8  d   R# V P                   R8w  d   R#  V P                  4       p\        T\        4      '       g   R# TP                  R4      p\        T\        4      '       g   R# \        TP                  R4      ;'       g    R4      P                  4       pRT9   #   \         d     R# i ; i)i  Ti  Ferrormessage zalready in progress)status_codejson	Exception
isinstancedictr   r   lower)r#   payloadr(   r)   s   &   r   #_should_preserve_pending_create_keyr2   $   s    s"s"--/ gt$$KK EeT""%))I&,,"-335G G++  s   B0 0B?>B?c                      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# )BrowserbaseProviderz<Browserbase (https://browserbase.com) cloud browser backend.c                    < V ^8  d   QhRS[ /# r
   r   r   )r   __classdict__s   "r   r    BrowserbaseProvider.__annotate__>   s      s r   c                    R # )Browserbase selfs   &r   provider_name!BrowserbaseProvider.provider_name>   s    r   c                    < V ^8  d   QhRS[ /# r6   )r&   )r   r7   s   "r   r   r8   A   s     6 6t 6r   c                &    V P                  4       R J# r   )_get_config_or_noner<   s   &r   is_configured!BrowserbaseProvider.is_configuredA   s    '')55r   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# r6   )r   r   r   r   )r   r7   s   "r   r   r8   H   s!     
 
Xd38n%= 
r   c           	        \         P                  P                  R 4      p\         P                  P                  R4      pV'       d@   V'       d8   RVRVR\         P                  P                  RR4      P                  R4      RR	/# \	        R
4      pVf   R# RVP
                  RRRVP                  P                  R4      RR/# )BROWSERBASE_API_KEYBROWSERBASE_PROJECT_IDapi_key
project_idbase_urlBROWSERBASE_BASE_URLzhttps://api.browserbase.com/managed_modeFbrowserbaseNmanagedT)osenvironr   rstripr   nous_user_tokengateway_origin)r=   rI   rJ   rP   s   &   r   rB   'BrowserbaseProvider._get_config_or_noneH   s    **..!67ZZ^^$<=
z7jBJJNN+AC`ahhilm	  /}=? w..)..55c:D	
 	
r   c                6   < V ^8  d   QhRS[ S[S[3,          /# r6   )r   r   r   )r   r7   s   "r   r   r8   ^   s      T#s(^ r   c                l    V P                  4       pVf    Rp\        4       '       d   Rp\        V4      hV# )NzSBrowserbase requires direct BROWSERBASE_API_KEY/BROWSERBASE_PROJECT_ID credentials.zBrowserbase requires either direct BROWSERBASE_API_KEY/BROWSERBASE_PROJECT_ID credentials or a managed Browserbase gateway configuration.)rB   r   
ValueError)r=   configr)   s   &  r   _get_configBrowserbaseProvider._get_config^   sE    ))+>e  *++R  W%%r   c                <   < V ^8  d   QhRS[ RS[S[ S[3,          /# r	   )r   r   object)r   r7   s   "r   r   r8   l   s(     u
 u
c u
d3;.? u
r   c           
        V P                  4       p\        VP                  R 4      4      p\        P                  P                  RR4      P                  4       R8g  p\        P                  P                  RR4      P                  4       R8H  p\        P                  P                  RR4      P                  4       R8g  p\        P                  P                  R4      pRRR	R
RR
RR
RR
/pRVR,          /p	V'       d   RV	R&   V'       d    \        V4      p
V
^ 8  d   WR&   V'       d   RV	R	&   V'       d   RR/V	R&   RRRVR,          /pV'       d   \        V4      VR&   \        P                  ! VR,           R2VV	^R7      pR
pR
pVP                  R8X  d   V'       g   V'       dN   Rp\        P                  R4       V	P                  RR4       \        P                  ! VR,           R2VV	^R7      pVP                  R8X  dV   V'       dN   Rp\        P                  R 4       V	P                  R	R4       \        P                  ! VR,           R2VV	^R7      pVP                  '       gJ   V'       d   \!        V4      '       g   \#        V4       \%        R!VP                   R"VP&                   24      hVP)                  4       pV'       d   \#        V4       R#V R$\*        P,                  ! 4       P.                  R%,           2pV'       d   VP0                  P                  R&4      MRpV'       d   V'       g   RVR	&   V'       d   RVR&   V'       d   V'       g   RVR&   V'       d   RV	9   d   RVR&   R'P3                  R( VP5                  4        4       4      p\        P7                  R)VV4       R*VR+VR,,          R-VR.,          R/VR0V/#   \         d    \        P                  RT4        ELi ; i)1rN   BROWSERBASE_PROXIEStruefalseBROWSERBASE_ADVANCED_STEALTHBROWSERBASE_KEEP_ALIVEBROWSERBASE_SESSION_TIMEOUTbasic_stealthTproxiesFadvanced_stealth
keep_alivecustom_timeout	projectIdrJ   	keepAlivetimeoutz-Invalid BROWSERBASE_SESSION_TIMEOUT value: %sadvancedStealthbrowserSettingsContent-Typeapplication/jsonX-BB-API-KeyrI   zX-Idempotency-KeyrK   z/v1/sessionsheadersr,   rm   i  zhkeepAlive may require paid plan (402), retrying without it. Sessions may timeout during long operations.NzYProxies unavailable (402), retrying without proxies. Bot detection may be less effective.z&Failed to create Browserbase session:  hermes__:N   Nzx-external-call-idz, c              3   >   "   T F  w  rV'       g   K  Vx  K  	  R # 5ir   r;   ).0kvs   &  r   	<genexpr>5BrowserbaseProvider.create_session.<locals>.<genexpr>   s     L.Fda!.Fs   
z0Created Browserbase session %s with features: %ssession_namebb_session_ididcdp_url
connectUrlfeaturesexternal_call_id)r[   r&   r   rQ   rR   r0   intrY   loggerwarningr   r$   postr+   r    okr2   r!   RuntimeErrortextr,   r   r   r   rt   joinitemsinfo)r=   r   rZ   rN   enable_proxiesenable_advanced_stealthenable_keep_alivecustom_timeout_msfeatures_enabledsession_configtimeout_valrt   r#   proxies_fallbackkeepalive_fallbacksession_datar   r   feature_strs   &&                 r   create_session"BrowserbaseProvider.create_sessionl   s   !!#FJJ~67 (=vFLLNRYY"$**..1OQX"Y"_"_"aek"kJJNN+CVLRRTX__JJNN+HI Tu%e
 .9&:N,O*.N;'c!"34?0;9- (,N9%"1BD0IN,- .F9-
 +LW+UG'(==j!",/	
 !" 3&| %)"C "";5#==j)*,7#'	 ##s*~#' ; ""9d3#==j)*,7#'	 {{{$G$Q$Q)'28''((--: 
  }}%g. 	4::<+;+;B+?*@AIU8++//0DE[_"2*.Y'"37/0%7-1\*n!<15-.iiL.>.D.D.FLLFVab L\$/|L1( 0
 	
g  cNPabcs   
O !O10O1c                &   < V ^8  d   QhRS[ RS[/# )r
   
session_idr   )r   r&   )r   r7   s   "r   r   r8      s     ! ! ! !r   c                    V P                  4       p \        P
                  ! TR,           RT 2RTR,          RR/RTR	,          R
R/^
R7      pTP                  R9   d   \        P                  RT4       R# \        P                  RTTP                  TP                  R,          4       R#   \         d    \        P                  R T4        R# i ; i  \         d"   p\        P                  RY4        Rp?R# Rp?ii ; i)u;   Cannot close Browserbase session %s — missing credentialsFrK   /v1/sessions/rr   rI   rp   rq   rk   rJ   statusREQUEST_RELEASErs   z*Successfully closed Browserbase session %sTz(Failed to close session %s: HTTP %s - %s:N   Nz,Exception closing Browserbase session %s: %sN)r         )r[   rY   r   r   r$   r   r+   debugr   r-   r(   )r=   r   rZ   r#   es   &&   r   close_session!BrowserbaseProvider.close_session   s   	%%'F
	}}*%&mJ<@"F9$5"$6
  !5/ H ##6I:V>((MM$'	 7  	NNXZde	8  	LLGW	s/   B- A#C 83C -!CCD C<<Dc                $   < V ^8  d   QhRS[ RR/# )r
   r   r   Nr   )r   r7   s   "r   r   r8     s     c cC cD cr   c                6   V P                  4       pVf   \        P                  RV4       R #  \        P                  ! VR,           RV 2RVR,          RR/RVR	,          R
R/^R7       R #   \
         d"   p\        P                  RY4        R p?R # R p?ii ; i)NuG   Cannot emergency-cleanup Browserbase session %s — missing credentialsrK   r   rr   rI   rp   rq   rk   rJ   r   r   rs   z7Emergency cleanup failed for Browserbase session %s: %s)rB   r   r   r$   r   r-   r   )r=   r   rZ   r   s   &&  r   emergency_cleanup%BrowserbaseProvider.emergency_cleanup  s    ))+>NNdfpq	cMM*%&mJ<@"F9$5"$6
  !5/   	cLLRT^bb	cs   <A, ,B7BBr;   N)__name__
__module____qualname____firstlineno____doc__r>   rC   rB   r[   r   r   r   __static_attributes____classdictcell__)r7   s   @r   r4   r4   ;   sT     F 6 6
 
, u
 u
n! !Fc cr   r4   c                b    V ^8  d   Qh/ ^ \         9   d   \        \        \        3,          ;R&   # )r
   r   )__conditional_annotations__r   r   )r   s   "r   r   r      s"     ) ) * )d38n ) *r   )r   r   loggingrQ   	threadingr   typingr   r   r   r$   tools.browser_providers.baser   tools.managed_tool_gatewayr   tools.tool_backend_helpersr   	getLoggerr   r   r   Lockr   r   r!   r2   r4   r   )r   s   @r   <module>r      sm    )  	   & &  = C A			8	$')  )%NN, 0
,.^c. ^cr   