§
    ‰eîi2  ã                   ó†   — d Z ddlZddlZddlZddlmZmZmZ ddlZddl	m
Z
  ej        e¦  «        Z G d„ de
¦  «        ZdS )z=Browserbase cloud browser provider (direct credentials only).é    N)ÚAnyÚDictÚOptional)ÚCloudBrowserProviderc                   ó®   — e Zd ZdZdefd„Zdefd„Zdee	ee
f                  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 )ÚBrowserbaseProvideru  Browserbase (https://browserbase.com) cloud browser backend.

    This provider requires direct BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID
    credentials.  Managed Nous gateway support has been removed â€” the Nous
    subscription now routes through Browser Use instead.
    Úreturnc                 ó   — dS )NÚBrowserbase© ©Úselfs    úE/home/div/.hermes/hermes-agent/tools/browser_providers/browserbase.pyÚprovider_namez!BrowserbaseProvider.provider_name   s   € Øˆ}ó    c                 ó.   — |                       ¦   «         d uS ©N)Ú_get_config_or_noner   s    r   Úis_configuredz!BrowserbaseProvider.is_configured   s   € Ø×'Ò'Ñ)Ô)°Ð5Ð5r   c                 óø   — t           j                             d¦  «        }t           j                             d¦  «        }|r9|r7||t           j                             dd¦  «                             d¦  «        dœS d S )NÚBROWSERBASE_API_KEYÚBROWSERBASE_PROJECT_IDÚBROWSERBASE_BASE_URLzhttps://api.browserbase.comú/)Úapi_keyÚ
project_idÚbase_url)ÚosÚenvironÚgetÚrstrip)r   r   r   s      r   r   z'BrowserbaseProvider._get_config_or_none!   sy   € Ý”*—.’.Ð!6Ñ7Ô7ˆÝ”Z—^’^Ð$<Ñ=Ô=ˆ
Øð 	�zð 	à"Ø(ÝœJŸNšNÐ+AÐC`ÑaÔa×hÒhÐilÑmÔmðð ð ð
 ˆtr   c                 óP   — |                       ¦   «         }|€t          d¦  «        ‚|S )NzZBrowserbase requires BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID environment variables.)r   Ú
ValueError)r   Úconfigs     r   Ú_get_configzBrowserbaseProvider._get_config,   s6   € Ø×)Ò)Ñ+Ô+ˆØˆ>Ýð)ñô ð ð ˆr   Útask_idc                 ó8  — |                       ¦   «         }t          j                             dd¦  «                             ¦   «         dk    }t          j                             dd¦  «                             ¦   «         dk    }t          j                             dd¦  «                             ¦   «         dk    }t          j                             d¦  «        }dddddd	œ}d
|d         i}|rd|d<   |rG	 t          |¦  «        }	|	dk    r|	|d<   n+# t          $ r t                               d|¦  «         Y nw xY w|rd|d<   |rddi|d<   d|d         dœ}
t          j
        |d         › d�|
|d¬¦  «        }d}d}|j        dk    rµ|rSd}t                               d¦  «         |                     dd ¦  «         t          j
        |d         › d�|
|d¬¦  «        }|j        dk    rU|rSd}t                               d¦  «         |                     dd ¦  «         t          j
        |d         › d�|
|d¬¦  «        }|j        st          d|j        › d|j        › �¦  «        ‚|                     ¦   «         }d|› d t#          j        ¦   «         j        d d!…         › �}|r|sd|d<   |rd|d"<   |r|sd|d#<   |r	d|v rd|d$<   d%                     d&„ |                     ¦   «         D ¦   «         ¦  «        }t                               d'||¦  «         ||d(         |d)         |d*œS )+NÚBROWSERBASE_PROXIESÚtrueÚfalseÚBROWSERBASE_ADVANCED_STEALTHÚBROWSERBASE_KEEP_ALIVEÚBROWSERBASE_SESSION_TIMEOUTTF)Úbasic_stealthÚproxiesÚadvanced_stealthÚ
keep_aliveÚcustom_timeoutÚ	projectIdr   Ú	keepAliver   Útimeoutz-Invalid BROWSERBASE_SESSION_TIMEOUT value: %sr/   ÚadvancedStealthÚbrowserSettingsúapplication/jsonr   )úContent-TypeúX-BB-API-Keyr   z/v1/sessionsé   ©ÚheadersÚjsonr5   i’  zhkeepAlive may require paid plan (402), retrying without it. Sessions may timeout during long operations.zYProxies unavailable (402), retrying without proxies. Bot detection may be less effective.z&Failed to create Browserbase session: Ú Úhermes_Ú_é   r0   r1   r2   z, c              3   ó$   K  — | ]\  }}|¯|V — Œd S r   r   )Ú.0ÚkÚvs      r   ú	<genexpr>z5BrowserbaseProvider.create_session.<locals>.<genexpr>™   s+   è è € ÐLÐL¡d a¨È!ÐL ÐLÐLÐLÐLÐLÐLr   z0Created Browserbase session %s with features: %sÚidÚ
connectUrl)Úsession_nameÚbb_session_idÚcdp_urlÚfeatures)r%   r   r   r    ÚlowerÚintr#   ÚloggerÚwarningÚrequestsÚpostÚstatus_codeÚpopÚokÚRuntimeErrorÚtextr>   ÚuuidÚuuid4ÚhexÚjoinÚitemsÚinfo)r   r&   r$   Úenable_proxiesÚenable_advanced_stealthÚenable_keep_aliveÚcustom_timeout_msÚfeatures_enabledÚsession_configÚtimeout_valr=   ÚresponseÚproxies_fallbackÚkeepalive_fallbackÚsession_datarJ   Úfeature_strs                    r   Úcreate_sessionz"BrowserbaseProvider.create_session5   s$  € Ø×!Ò!Ñ#Ô#ˆõ œŸšÐ(=¸vÑFÔF×LÒLÑNÔNÐRYÒYˆÝ"$¤*§.¢.Ð1OÐQXÑ"YÔ"Y×"_Ò"_Ñ"aÔ"aÐekÒ"kÐÝœJŸNšNÐ+CÀVÑLÔL×RÒRÑTÔTÐX_Ò_ÐÝœJŸNšNÐ+HÑIÔIÐð "ØØ %ØØ#ð
ð 
Ðð .9¸&ÀÔ:NÐ,Oˆàð 	/Ø*.ˆN˜;Ñ'àð 	cðcÝ!Ð"3Ñ4Ô4�Ø ’?�?Ø0;�N 9Ñ-øøÝð cð cð cÝ—’ÐNÐPaÑbÔbÐbÐbÐbðcøøøð ð 	-Ø(,ˆN˜9Ñ%à"ð 	JØ1BÀDÐ0IˆNÐ,Ñ-ð /Ø" 9Ô-ð
ð 
ˆõ
 ”=Ø�jÔ!Ð/Ð/Ð/ØØØð	
ñ 
ô 
ˆð !ÐØ"Ðð Ô 3Ò&Ð&Ø ð Ø%)Ð"Ý—’ðCñô ð ð ×"Ò" ;°Ñ5Ô5Ð5Ý#œ=Ø˜jÔ)Ð7Ð7Ð7Ø#Ø'Øð	ñ ô �ð Ô# sÒ*Ð*¨~Ð*Ø#'Ð Ý—’ð;ñô ð ð ×"Ò" 9¨dÑ3Ô3Ð3Ý#œ=Ø˜jÔ)Ð7Ð7Ð7Ø#Ø'Øð	ñ ô �ð Œ{ð 	Ýð:ØÔ'ð:ð :Ø*2¬-ð:ð :ñô ð ð
  —}’}‘”ˆØA ÐAÐA­4¬:©<¬<Ô+;¸B¸Q¸BÔ+?ÐAÐAˆàð 	/Ð"2ð 	/Ø*.Ð˜YÑ'Ø"ð 	8Ø37ÐÐ/Ñ0Øð 	2Ð%7ð 	2Ø-1Ð˜\Ñ*Øð 	6 ¨nÐ!<Ð!<Ø15ÐÐ-Ñ.à—i’iÐLÐLÐ.>×.DÒ.DÑ.FÔ.FÐLÑLÔLÑLÔLˆÝ�ŠÐFÈÐVaÑbÔbÐbð )Ø)¨$Ô/Ø# LÔ1Ø(ð	
ð 
ð 	
s   Ã2D Ä%D5Ä4D5Ú
session_idc                 ó  — 	 |                       ¦   «         }n,# t          $ r t                               d|¦  «         Y dS w xY w	 t	          j        |d         › d|› �|d         ddœ|d         d	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)Nu;   Cannot close Browserbase session %s â€” missing credentialsFr   ú/v1/sessions/r   r8   ©r:   r9   r   ÚREQUEST_RELEASE©r3   Ústatusé
   r<   )éÈ   éÉ   éÌ   z*Successfully closed Browserbase session %sTz(Failed to close session %s: HTTP %s - %srt   z,Exception closing Browserbase session %s: %s)r%   r#   rP   rQ   rR   rS   rT   ÚdebugrX   Ú	ExceptionÚerror)r   rl   r$   rf   Úes        r   Úclose_sessionz!BrowserbaseProvider.close_session£   sY  € ð	Ø×%Ò%Ñ'Ô'ˆFˆFøÝð 	ð 	ð 	Ý�NŠNÐXÐZdÑeÔeÐeØ�5�5ð	øøøð	Ý”}Ø˜*Ô%Ð@Ð@°JÐ@Ð@à$*¨9Ô$5Ø$6ðð ð
 "(¨Ô!5Ø/ðð ð ðñ ô ˆHð Ô# Ð6Ð6Ý—’ÐIÈ:ÑVÔVÐVØ�tå—’Ø>ØØÔ(Ø”M $ 3 $Ô'ñ	ô ð ð �uøÝð 	ð 	ð 	Ý�LŠLÐGÈÐUVÑWÔWÐWØ�5�5�5�5�5øøøøð	øøøs-   ‚ —%A ¿A ÁAC Â/C Ã
DÃC<Ã<DNc                 ó@  — |                       ¦   «         }|€t                               d|¦  «         d S 	 t          j        |d         › d|› �|d         ddœ|d         dd	œd
¬¦  «         d S # t
          $ r'}t                               d||¦  «         Y d }~d S d }~ww xY w)NuG   Cannot emergency-cleanup Browserbase session %s â€” missing credentialsr   rn   r   r8   ro   r   rp   rq   é   r<   z7Emergency cleanup failed for Browserbase session %s: %s)r   rP   rQ   rR   rS   rx   rw   )r   rl   r$   rz   s       r   Úemergency_cleanupz%BrowserbaseProvider.emergency_cleanupÆ   só   € Ø×)Ò)Ñ+Ô+ˆØˆ>Ý�NŠNÐdÐfpÑqÔqÐqØˆFð	cÝŒMØ˜*Ô%Ð@Ð@°JÐ@Ð@à$*¨9Ô$5Ø$6ðð ð
 "(¨Ô!5Ø/ðð ð ðñ ô ð ð ð øõ ð 	cð 	cð 	cÝ�LŠLÐRÐT^Ð`aÑbÔbÐbÐbÐbÐbÐbÐbÐbøøøøð	cøøøs   µ5A, Á,
BÁ6BÂB)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Úboolr   r   r   r   r   r%   Úobjectrk   r{   r~   r   r   r   r   r      s  € € € € € ðð ð˜sð ð ð ð ð6˜tð 6ð 6ð 6ð 6ð	 X¨d°3¸°8¬nÔ%=ð 	ð 	ð 	ð 	ð˜T # s (œ^ð ð ð ð ðl
 cð l
¨d°3¸°;Ô.?ð l
ð l
ð l
ð l
ð\!¨ð !°ð !ð !ð !ð !ðFc¨Cð c°Dð cð cð cð cð cð cr   r   )r‚   Úloggingr   rY   Útypingr   r   r   rR   Útools.browser_providers.baser   Ú	getLoggerr   rP   r   r   r   r   ú<module>rŠ      sº   ðØ CÐ Cà €€€Ø 	€	€	€	Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à €€€à =Ð =Ð =Ð =Ð =Ð =à	ˆÔ	˜8Ñ	$Ô	$€ðJcð Jcð Jcð Jcð JcÐ.ñ Jcô Jcð Jcð Jcð Jcr   