
    ] j                        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edee         dee         dee         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<   |S )NcdpUrlcdp_urlliveViewUrllive_view_url	expiresAt
expires_atdictr   outs     d/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/browser.py"_normalize_browser_create_responser      sz    
w--C39C//XIs : :"=1O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<   |S )Nsessionsr   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-      s%   
w--CSZJ>> Z 	+ 	+AaB2~~)2"5"5 "89""b'@'@&(&7?#"$$):")D)D(*?(;$%b  \%;%;#%k?< ##r(A(A&(&8?#&&r****-JJr   N)ttlactivity_ttlr"   clientr.   r/   r"   c                    i }|||d<   |||d<   |||d<   |                      d|          }|j        st          |d           t          |                                          }t          di |S )aS  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

    Returns:
        BrowserCreateResponse with session id and CDP URL
    Nr.   activityTtlr!   /v2/browserzcreate browser session )postokr   r   jsonr	   )r0   r.   r/   r"   bodyrespr   s          r   browserr:   3   s    $ D
U*]" /_;;}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_responser>   T   s5    
w--CS[33z?KJr   bash)languagetimeout
session_idcoder@   )pythonnoder?   rA   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
    )rC   r@   NrA   /v2/browser/z/executezexecute browser coder4   )r5   r6   r   r>   r7   r
   )r0   rB   rC   r@   rA   r8   r9   r   s           r   browser_executerH   [   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_responserN   }   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
    rG   zdelete browser sessionr4   )deleter6   r   rN   r7   r   )r0   rB   r9   r   s       r   delete_browserrQ      sb     ==4
4455D7 >d$<===0==G ++7+++r   )statusrR   )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
    r3   Nz?status=zlist browser sessionsr4   )getr6   r   r-   r7   r   )r0   rR   endpointr9   r   s        r   list_browsersrX      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boolr:   r>   rH   rN   rQ   rX   r4   r   r   <module>ra      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    0 "&&*, , ,, 
#, 3-	,
 d^, , , , ,Bc3h DcN     39!- - --- -
 ./- c]- - - - -DS#X 4S>    ,,, , , , ,. 8<* * ** W234* 	* * * * * *r   