Ë
    âß²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)a�  Browserbase cloud browser provider: direct ``BROWSERBASE_API_KEY`` + ``BROWSERBASE_PROJECT_ID``
only (the Nous subscription routes through Browser Use). Config ``browser.cloud_provider:
"browserbase"``; knobs ``BROWSERBASE_BASE_URL``, ``BROWSERBASE_PROXIES`` (true),
``BROWSERBASE_ADVANCED_STEALTH`` (false), ``BROWSERBASE_KEEP_ALIVE`` (true),
``BROWSERBASE_SESSION_TIMEOUT`` (seconds, max 21600).é    )ÚannotationsN)ÚAnyÚDictÚOptional)Ú
get_secret)ÚCloudBrowserProvider))Ú	keepAlivezhkeepAlive may require paid plan (402), retrying without it. Sessions may timeout during long operations.)ÚproxieszYProxies unavailable (402), retrying without proxies. Bot detection may be less effective.c                  ój   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	d
ddœdddœgZdd„Zdd„Zdd„Zdd„Zdd„Zy)ÚBrowserbaseBrowserProviderz<Browserbase (https://browserbase.com) cloud browser backend.ÚbrowserbaseÚBrowserbaseÚpostz/v1/sessions/{session_id}zZBrowserbase requires BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID environment variables.z(Failed to close session %s: HTTP %s - %sz&Cloud browser with stealth and proxiesÚBROWSERBASE_API_KEYzBrowserbase API keyzhttps://browserbase.com)ÚkeyÚpromptÚurlÚBROWSERBASE_PROJECT_IDzBrowserbase project ID)r   r   c                ó~   — t        d«      }t        d«      }|r|sy ||t        dd«      xs dj                  d«      dœS )Nr   r   ÚBROWSERBASE_BASE_URLÚ zhttps://api.browserbase.comú/)Úapi_keyÚ
project_idÚbase_url)r   Úrstrip)Úselfr   r   s      úI/home/ubuntu/.hermes/hermes-agent/plugins/browser/browserbase/provider.pyÚ_get_config_or_nonez.BrowserbaseBrowserProvider._get_config_or_none+   sM   € ÜÐ2Ó3ˆÜÐ 8Ó9ˆ
Ù™JØàØ$ä#Ð$:¸BÓ?Ò`ÐC`×hÑhÐilÓmñ	
ð 	
ó    c                ó   — d|d   dœS )Núapplication/jsonr   )úContent-TypeúX-BB-API-Key© ©r   Úconfigs     r   Ú_headersz#BrowserbaseBrowserProvider._headers7   s   € Ø 2ÀFÈ9ÑDUÑVÐVr    c                ó   — |d   ddœS )Nr   r"   )r$   r#   r%   r&   s     r   Ú_release_headersz+BrowserbaseBrowserProvider._release_headers:   s   € Ø & yÑ 1ÐCUÑVÐVr    c                ó   — |d   ddœS )Nr   ÚREQUEST_RELEASE)Ú	projectIdÚstatusr%   r&   s     r   Ú_release_bodyz(BrowserbaseBrowserProvider._release_body=   s   € Ø# LÑ1Ð=NÑOÐOr    c                óÂ  — | j                  «       }t        j                  j                  dd«      j	                  «       dk7  }t        j                  j                  dd«      j	                  «       dk(  }t        j                  j                  dd«      j	                  «       dk7  }t        j                  j                  d«      }d|d   i}|rd	|d
<   |r	 t        |«      }|dkD  r||d<   |rd	|d<   |rdd	i|d<   |d   › d�}	| j                  |«      }
| j                  |	|
|«      }t        «       }t        D ]d  \  }}|j                  dk(  sŒ||v sŒ|j                  |«       t        j                  |«       |j                  |«       | j                  |	|
|«      }Œf | j!                  |«       |j#                  «       }| j%                  |«      }d	|xr d|v||xr d
|vt'        |«      xr d|v dœ}dj)                  d„ |j+                  «       D «       «      }t        j-                  d||«       ||d   |d   |dœS # t        $ r t        j                  d|«       Y �Œtw xY w)NÚBROWSERBASE_PROXIESÚtrueÚfalseÚBROWSERBASE_ADVANCED_STEALTHÚBROWSERBASE_KEEP_ALIVEÚBROWSERBASE_SESSION_TIMEOUTr-   r   Tr	   r   Útimeoutz-Invalid BROWSERBASE_SESSION_TIMEOUT value: %sr
   ÚadvancedStealthÚbrowserSettingsr   z/v1/sessionsi’  )Úbasic_stealthr
   Úadvanced_stealthÚ
keep_aliveÚcustom_timeoutz, c              3  ó,   K  — | ]  \  }}|sŒ	|–— Œ y ­w)Nr%   )Ú.0ÚkÚvs      r   ú	<genexpr>z<BrowserbaseBrowserProvider.create_session.<locals>.<genexpr>m   s   è ø€ ÒL¡d a¨Ê!¤ÑLùs   ‚
�z0Created Browserbase session %s with features: %sÚidÚ
connectUrl)Úsession_nameÚbb_session_idÚcdp_urlÚfeatures)Ú_get_configÚosÚenvironÚgetÚlowerÚintÚ
ValueErrorÚloggerÚwarningr(   Ú_post_createÚsetÚ_PAID_FEATURE_FALLBACKSÚstatus_codeÚaddÚpopÚ_check_createdÚjsonÚ_session_nameÚboolÚjoinÚitemsÚinfo)r   Útask_idr'   Úenable_proxiesÚenable_advanced_stealthÚenable_keep_aliveÚcustom_timeout_msÚsession_configÚtimeout_valr   ÚheadersÚresponseÚdroppedr   rQ   Úsession_datarE   Úfeatures_enabledÚfeature_strs                      r   Úcreate_sessionz)BrowserbaseBrowserProvider.create_session@   ss  € Ø×!Ñ!Ó#ˆÜŸ™Ÿ™Ð(=¸vÓF×LÑLÓNÐRYÑYˆÜ"$§*¡*§.¡.Ð1OÐQXÓ"Y×"_Ñ"_Ó"aÐekÑ"kÐÜŸJ™JŸN™NÐ+CÀVÓL×RÑRÓTÐX_Ñ_ÐÜŸJ™JŸN™NÐ+HÓIÐà-8¸&ÀÑ:NÐ,OˆÙØ*.ˆN˜;Ñ'ÙðcÜ!Ð"3Ó4�Ø ’?Ø0;�N 9Ñ-ñ Ø(,ˆN˜9Ñ%Ù"Ø1BÀDÐ0IˆNÐ,Ñ-à˜
Ñ#Ð$ LÐ1ˆØ—-‘- Ó'ˆØ×$Ñ$ S¨'°>ÓBˆô “%ˆÜ3ò 	K‰LˆC�Ø×#Ñ# sÓ*¨s°nÒ/DØ—‘˜CÔ Ü—‘˜wÔ'Ø×"Ñ" 3Ô'Ø×,Ñ,¨S°'¸>ÓJ‘ð	Kð 	×Ñ˜HÔ%à—}‘}“ˆØ×)Ñ)¨'Ó2ˆà!Ø%ÒB¨)¸7Ð*BØ 7Ø+ÒJ°À7Ð0JÜ"Ð#4Ó5ÒU¸)À~Ð:Uñ
Ðð —i‘iÑLÐ.>×.DÑ.DÓ.FÔLÓLˆÜ�‰ÐFÈÐVaÔbà(Ø)¨$Ñ/Ø# LÑ1Ø(ñ	
ð 	
øôA ò cÜ—‘ÐNÐPa×bðcús   ÃH; È;IÉIN)ÚreturnzOptional[Dict[str, Any]])r'   úDict[str, Any]rm   zDict[str, str])r'   rn   rm   úDict[str, object])r_   Ústrrm   ro   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úprovider_idÚlabelÚrelease_methodÚrelease_pathÚmissing_credentials_errorÚclose_fail_fmtÚ	setup_tagÚsetup_env_varsr   r(   r*   r/   rl   r%   r    r   r   r      sh   „ ÙFà€KØ€EØ€NØ.€Lð	!ð ð @€NØ8€Ià%Ð1FÐOhÑiØ(Ð4LÑMð€Nó


óWóWóPô4
r    r   ÚBrowserProvider)zagent.browser_providerr}   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_LAZYrL   ÚAttributeErrorrq   Ú	importlibÚhermes_cli.plugin_compatr   ÚgetattrÚimport_module)ÚnameÚtargetrƒ   r   s       r   Ú__getattr__r‰   „   se   € Ü ×$Ñ$ TÓ*€FØ€~Ü˜w¤x lÐ2DÀTÀHÐMÓNÐNÛÝ2ÙŒh˜Ð&˜vÓ&Ü�9×*Ñ*¨6°!©9Ó5°v¸a±yÓAÐAr    )rt   Ú
__future__r   ÚloggingrJ   Útypingr   r   r   Úagent.secret_scoper   Úplugins.browser._commonr   Ú	getLoggerrq   rP   rT   r   ÚrequestsÚuuidr�   r‰   r%   r    r   ú<module>r’      si   ðñ9õ #ã Û 	ß &Ñ &å )Ý 8à	ˆ×	Ñ	˜8Ó	$€ð9Ð ôZ
Ð!5ô Z
óB Û ð ÐDðÐ ó
Br    