
    iR                        d Z ddlmZmZmZmZmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZ deeef         deeef         fd	Zdeeef         deeef         fd
Zddddddedee         dee         dee         deeeef                  defdZdeeef         deeef         fdZddddedededed         dee         de	fdZdeeef         deeef         fdZdedede
fdZdddedeed                   defd!ZdS )"z|
Browser session methods for Firecrawl v2 API.

Provides create, execute, delete, and list operations for browser sessions.
    )AnyDictListLiteralOptional   )BrowserCreateResponseBrowserExecuteResponseBrowserDeleteResponseBrowserListResponse)
HttpClient)handle_response_errorpayloadreturnc                     t          |           }d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   |S )	NcdpUrlcdp_urlliveViewUrllive_view_urlinteractiveLiveViewUrlinteractive_live_view_url	expiresAt
expires_atdictr   outs     f/home/agentuser/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/browser.py"_normalize_browser_create_responser      s    
w--C39C//XIs : :"=1O3&&+Fc+Q+Q+./G+H'(cl#55,LJ    c                    t          |           }d|v rt          |d         t                    rg }|d         D ]}t          |          }d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   d|v rd	|vr|d         |d	<   d
|v rd|vr|d
         |d<   d|v rd|vr|d         |d<   |                    |           ||d<   |S )Nsessionsr   r   r   r   r   r   streamWebViewstream_web_view	createdAt
created_atlastActivitylast_activity)r   
isinstancelistappend)r   r   normalized_sessionssnss        r    _normalize_browser_list_responser/       sM   
w--CSZJ>> Z 	+ 	+AaB2~~)2"5"5 "89""b'@'@&(&7?#'2--2MUW2W2W245M2N./"$$):")D)D(*?(;$%b  \%;%;#%k?< ##r(A(A&(&8?#&&r****-JJr    N)ttlactivity_ttlr$   profileclientr0   r1   r$   r2   c                ,   i }|||d<   |||d<   |||d<   |"|d         |                     dd          d|d	<   |                     d
|          }|j        st          |d           t	          |                                          }t          di |S )a  Create a new browser session.

    Args:
        client: HTTP client instance
        ttl: Total time-to-live in seconds (30-3600, default 300)
        activity_ttl: Inactivity TTL in seconds (10-3600)
        stream_web_view: Whether to enable webview streaming
        profile: Profile config with ``name`` (str) and
            optional ``save_changes`` (bool, default ``True``)

    Returns:
        BrowserCreateResponse with session id and CDP URL
    Nr0   activityTtlr#   namesave_changesT)r6   saveChangesr2   /v2/browserzcreate browser session )getpostokr   r   jsonr	   )r3   r0   r1   r$   r2   bodyrespr   s           r   browserrA   7   s    * D
U*]" /_FO";;~t<<
 
Y
 ;;}d++D7 >d$<===0==G ++7+++r    c                 J    t          |           }d|v rd|vr|d         |d<   |S )NexitCode	exit_coder   r   s     r   #_normalize_browser_execute_responserE   `   s5    
w--CS[33z?KJr    bash)languagetimeout
session_idcoderG   )pythonnoderF   rH   c                    ||d}|||d<   |                      d| d|          }|j        st          |d           t          |                                          }t          di |S )af  Execute code in a browser session.

    Args:
        client: HTTP client instance
        session_id: Browser session ID
        code: Code to execute
        language: Programming language ("python", "node", or "bash")
        timeout: Execution timeout in seconds (1-300, default 30)

    Returns:
        BrowserExecuteResponse with execution result
    )rJ   rG   NrH   /v2/browser/z/executezexecute browser coder:   )r<   r=   r   rE   r>   r
   )r3   rI   rJ   rG   rH   r?   r@   r   s           r   browser_executerO   g   s    *  D !Y;;:j:::DAAD7 <d$:;;;1$))++>>G!,,G,,,r    c                 p    t          |           }d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   |S )NsessionDurationMssession_duration_mscreditsBilledcredits_billedr   r   s     r   "_normalize_browser_delete_responserU      s_    
w--Cc!!&;3&F&F%()<%=!"#"2#"="= #O 4Jr    c                     |                      d|           }|j        st          |d           t          |                                          }t          di |S )zDelete a browser session.

    Args:
        client: HTTP client instance
        session_id: Browser session ID

    Returns:
        BrowserDeleteResponse
    rN   zdelete browser sessionr:   )deleter=   r   rU   r>   r   )r3   rI   r@   r   s       r   delete_browserrX      sb     ==4
4455D7 >d$<===0==G ++7+++r    )statusrY   )active	destroyedc                    d}|| d| }|                      |          }|j        st          |d           t          |                                          }t          di |S )zList browser sessions.

    Args:
        client: HTTP client instance
        status: Filter by session status ("active" or "destroyed")

    Returns:
        BrowserListResponse with list of sessions
    r9   Nz?status=zlist browser sessionsr:   )r;   r=   r   r/   r>   r   )r3   rY   endpointr@   r   s        r   list_browsersr^      sw     H0000::hD7 =d$;<<<.tyy{{;;G)))))r    )__doc__typingr   r   r   r   r   typesr	   r
   r   r   utils.http_clientr   utils.error_handlerr   strr   r/   intboolrA   rE   rO   rU   rX   r^   r:   r    r   <module>rg      s    6 5 5 5 5 5 5 5 5 5 5 5 5 5            + * * * * * 7 7 7 7 7 7
S#X 
4S> 
 
 
 
d38n c3h    4 "&&*(,&, &, &,&, 
#&, 3-	&,
 d^&, d38n%&, &, &, &, &,Rc3h DcN     39!- - --- -
 ./- c]- - - - -DS#X 4S>    ,,, , , , ,. 8<* * ** W234* 	* * * * * *r    