§
    ‰eîiŸ  ã                   ó.  — U d Z ddl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 ddlmZ ddlmZmZ  ej        e¦  «        Zi Zeeef         ed<    ej        ¦   «         ZdZd	Zd
Zdedefd„Zdeddfd„Zde	j        defd„Z  G d„ de¦  «        Z!dS )z#Browser Use cloud browser provider.é    N)ÚAnyÚDictÚOptional)ÚCloudBrowserProvider)Úresolve_managed_tool_gateway)Úmanaged_nous_tools_enabledÚprefers_gatewayÚ_pending_create_keysz"https://api.browser-use.com/api/v3é   ÚusÚtask_idÚreturnc                 óæ   — t           5  t                               | ¦  «        }|r|cd d d ¦  «         S dt          j        ¦   «         j        › �}|t          | <   |cd d d ¦  «         S # 1 swxY w Y   d S )Nzbrowser-use-session-create:)Ú_pending_create_keys_lockr
   ÚgetÚuuidÚuuid4Úhex)r   ÚexistingÚcreateds      úE/home/div/.hermes/hermes-agent/tools/browser_providers/browser_use.pyÚ!_get_or_create_pending_create_keyr      sÙ   € Ý	"ð ð Ý'×+Ò+¨GÑ4Ô4ˆØð 	Øðð ð ð ñ ô ð ð ð
 Cµ´
±´Ô0@ÐBÐBˆØ(/Õ˜WÑ%Øðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ˆA&³&A&Á&A*Á-A*c                 ó|   — t           5  t                               | d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   r
   Úpop)r   s    r   Ú_clear_pending_create_keyr   #   s‚   € Ý	"ð 0ð 0Ý× Ò  ¨$Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   ˆ1±5¸5Úresponsec                 ó~  — | j         dk    rdS | j         dk    rdS 	 |                      ¦   «         }n# t          $ r Y dS w xY wt          |t          ¦  «        sdS |                     d¦  «        }t          |t          ¦  «        sdS t          |                     d¦  «        pd¦  «                             ¦   «         }d|v S )	Niô  Ti™  FÚerrorÚmessageÚ zalready in progress)Ústatus_codeÚjsonÚ	ExceptionÚ
isinstanceÚdictr   ÚstrÚlower)r   Úpayloadr   r    s       r   Ú#_should_preserve_pending_create_keyr*   (   sÔ   € ØÔ˜sÒ"Ð"ØˆtàÔ˜sÒ"Ð"ØˆuðØ—-’-‘/”/ˆˆøÝð ð ð Øˆuˆuðøøøõ �g�tÑ$Ô$ð Øˆuà�KŠK˜Ñ Ô €EÝ�e�TÑ"Ô"ð Øˆuå�%—)’)˜IÑ&Ô&Ð,¨"Ñ-Ô-×3Ò3Ñ5Ô5€GØ  GÐ+Ð+s   œ1 ±
?¾?c                   óÞ   — 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	ee
f         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 )ÚBrowserUseProviderz<Browser Use (https://browser-use.com) cloud browser backend.r   c                 ó   — dS )NzBrowser Use© ©Úselfs    r   Úprovider_namez BrowserUseProvider.provider_nameB   s   € Øˆ}ó    c                 ó.   — |                       ¦   «         d uS r   )Ú_get_config_or_noner/   s    r   Úis_configuredz BrowserUseProvider.is_configuredE   s   € Ø×'Ò'Ñ)Ô)°Ð5Ð5r2   c                 óä   — t           j                             d¦  «        }|rt          d¦  «        s|t          ddœS t          d¦  «        }|€d S |j        |j                             d¦  «        ddœS )NÚBROWSER_USE_API_KEYÚbrowserF)Úapi_keyÚbase_urlÚmanaged_modezbrowser-useú/T)	ÚosÚenvironr   r	   Ú	_BASE_URLr   Únous_user_tokenÚgateway_originÚrstrip)r0   r9   Úmanageds      r   r4   z&BrowserUseProvider._get_config_or_noneL   sŒ   € Ý”*—.’.Ð!6Ñ7Ô7ˆØð 	�?¨9Ñ5Ô5ð 	à"Ý%Ø %ðð ð õ /¨}Ñ=Ô=ˆØˆ?Ø�4ð Ô.ØÔ.×5Ò5°cÑ:Ô:Ø ð
ð 
ð 	
r2   c                 ót   — |                       ¦   «         }|€!d}t          ¦   «         rd}t          |¦  «        ‚|S )Nz=Browser Use requires a direct BROWSER_USE_API_KEY credential.zsBrowser Use requires either a direct BROWSER_USE_API_KEY credential or a managed Browser Use gateway configuration.)r4   r   Ú
ValueError)r0   Úconfigr    s      r   Ú_get_configzBrowserUseProvider._get_config_   sP   € Ø×)Ò)Ñ+Ô+ˆØˆ>àOð õ *Ñ+Ô+ð ðQð õ ˜WÑ%Ô%Ð%Øˆr2   rF   c                 ó   — d|d         dœ}|S )Nzapplication/jsonr9   )zContent-TypezX-Browser-Use-API-Keyr.   )r0   rF   Úheaderss      r   Ú_headerszBrowserUseProvider._headersq   s    € à.Ø%+¨IÔ%6ð
ð 
ˆð ˆr2   r   c                 ó4  — |                       ¦   «         }t          |                     d¦  «        ¦  «        }|                      |¦  «        }|rt	          |¦  «        |d<   |rt
          t          dœni }t          j        |d         › d�||d¬¦  «        }|j	        s?|rt          |¦  «        st          |¦  «         t          d|j        › d	|j        › �¦  «        ‚|                     ¦   «         }|rt          |¦  «         d
|› dt!          j        ¦   «         j        d d…         › �}|r|j                             d¦  «        nd }	t(                               d|¦  «         |                     d¦  «        p|                     d¦  «        pd}
||d         |
ddi|	dœS )Nr;   zX-Idempotency-Key)ÚtimeoutÚproxyCountryCoder:   z	/browsersé   ©rI   r#   rL   z&Failed to create Browser Use session: Ú Úhermes_Ú_é   zx-external-call-idzCreated Browser Use session %sÚcdpUrlÚ
connectUrlr!   ÚidÚbrowser_useT)Úsession_nameÚbb_session_idÚcdp_urlÚfeaturesÚexternal_call_id)rG   Úboolr   rJ   r   Ú _DEFAULT_MANAGED_TIMEOUT_MINUTESÚ#_DEFAULT_MANAGED_PROXY_COUNTRY_CODEÚrequestsÚpostÚokr*   r   ÚRuntimeErrorr"   Útextr#   r   r   r   rI   ÚloggerÚinfo)r0   r   rF   r;   rI   r)   r   Úsession_datarX   r\   rZ   s              r   Úcreate_sessionz!BrowserUseProvider.create_sessionx   sö  € Ø×!Ò!Ñ#Ô#ˆÝ˜FŸJšJ ~Ñ6Ô6Ñ7Ô7ˆà—-’- Ñ'Ô'ˆØð 	VÝ+LÈWÑ+UÔ+UˆGÐ'Ñ(ð ð	Ý;Ý$Gðð ð ð
 ð 	õ ”=Ø�jÔ!Ð,Ð,Ð,ØØØð	
ñ 
ô 
ˆð Œ{ð 	Øð 3Õ$GÈÑ$QÔ$Qð 3Ý)¨'Ñ2Ô2Ð2Ýð:ØÔ'ð:ð :Ø*2¬-ð:ð :ñô ð ð
  —}’}‘”ˆØð 	/Ý% gÑ.Ô.Ð.ØA ÐAÐA­4¬:©<¬<Ô+;¸B¸Q¸BÔ+?ÐAÐAˆØIUÐ_˜8Ô+×/Ò/Ð0DÑEÔEÐEÐ[_Ðå�ŠÐ4°lÑCÔCÐCà×"Ò" 8Ñ,Ô,ÐT°×0@Ò0@ÀÑ0NÔ0NÐTÐRTˆð )Ø)¨$Ô/ØØ&¨Ð-Ø 0ð
ð 
ð 	
r2   Ú
session_idc                 ó  — 	 |                       ¦   «         }n,# t          $ r t                               d|¦  «         Y dS w xY w	 t	          j        |d         › d|› �|                      |¦  «        ddi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 Browser Use session %s â€” missing credentialsFr:   ú
/browsers/ÚactionÚstopé
   rO   )éÈ   éÉ   éÌ   z*Successfully closed Browser Use session %sTz4Failed to close Browser Use session %s: HTTP %s - %sro   z,Exception closing Browser Use session %s: %s)rG   rE   re   Úwarningr`   ÚpatchrJ   r"   Údebugrd   r$   r   )r0   ri   rF   r   Úes        r   Úclose_sessionz BrowserUseProvider.close_session­   sB  € ð	Ø×%Ò%Ñ'Ô'ˆFˆFøÝð 	ð 	ð 	Ý�NŠNÐXÐZdÑeÔeÐeØ�5�5ð	øøøð	Ý”~Ø˜*Ô%Ð=Ð=°Ð=Ð=ØŸš fÑ-Ô-Ø Ð'Øð	ñ ô ˆHð Ô# Ð6Ð6Ý—’ÐIÈ:ÑVÔVÐVØ�tå—’ØJØØÔ(Ø”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                 óF  — |                       ¦   «         }|€t                               d|¦  «         d S 	 t          j        |d         › d|› �|                      |¦  «        ddid¬¦  «         d S # t          $ r'}t                               d||¦  «         Y d }~d S d }~ww xY w)	NuG   Cannot emergency-cleanup Browser Use session %s â€” missing credentialsr:   rk   rl   rm   r   rO   z7Emergency cleanup failed for Browser Use session %s: %s)r4   re   rr   r`   rs   rJ   r$   rt   )r0   ri   rF   ru   s       r   Úemergency_cleanupz$BrowserUseProvider.emergency_cleanupÊ   sÜ   € Ø×)Ò)Ñ+Ô+ˆØˆ>Ý�NŠNÐdÐfpÑqÔqÐqØˆFð	cÝŒNØ˜*Ô%Ð=Ð=°Ð=Ð=ØŸš fÑ-Ô-Ø Ð'Øð	ñ ô ð ð ð øõ ð 	cð 	cð 	cÝ�LŠLÐRÐT^Ð`aÑbÔbÐbÐbÐbÐbÐbÐbÐbøøøøð	cøøøs   µ8A/ Á/
B Á9BÂB )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r1   r]   r5   r   r   r   r4   rG   rJ   Úobjectrh   rv   rx   r.   r2   r   r,   r,   ?   sE  € € € € € ØFÐFð˜sð ð ð ð ð6˜tð 6ð 6ð 6ð 6ð
 X¨d°3¸°8¬nÔ%=ð 
ð 
ð 
ð 
ð&˜T # s (œ^ð ð ð ð ð$˜t C¨ Hœ~ð °$°s¸C°x´.ð ð ð ð ð3
 cð 3
¨d°3¸°;Ô.?ð 3
ð 3
ð 3
ð 3
ðj¨ð °ð ð ð ð ð:c¨Cð c°Dð cð cð cð cð cð cr2   r,   )"r|   Úloggingr=   Ú	threadingr   Útypingr   r   r   r`   Útools.browser_providers.baser   Útools.managed_tool_gatewayr   Útools.tool_backend_helpersr   r	   Ú	getLoggerry   re   r
   r'   Ú__annotations__ÚLockr   r?   r^   r_   r   r   ÚResponser]   r*   r,   r.   r2   r   ú<module>rˆ      s–  ðØ )Ð )Ð )à €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à €€€à =Ð =Ð =Ð =Ð =Ð =Ø CÐ CÐ CÐ CÐ CÐ CØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rà	ˆÔ	˜8Ñ	$Ô	$€Ø')Ð �d˜3 ˜8”nÐ )Ð )Ñ )Ø*˜IœNÑ,Ô,Ð à0€	Ø#$Ð  Ø&*Ð #ð¨sð °sð ð ð ð ð0 sð 0¨tð 0ð 0ð 0ð 0ð
,°(Ô2Cð ,Èð ,ð ,ð ,ð ,ð.Xcð Xcð Xcð Xcð XcÐ-ñ Xcô Xcð Xcð Xcð Xcr2   