
    iD                        d Z ddl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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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dede	fdZd
ddedeed                  de
fd Zd
S )!z
Async browser session methods for Firecrawl v2 API.

Provides async create, execute, delete, and list operations for browser sessions.
    )AnyDictLiteralOptional   )BrowserCreateResponseBrowserExecuteResponseBrowserDeleteResponseBrowserListResponse)AsyncHttpClient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     j/home/agentuser/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/aio/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clientr.   r/   r"   r0   c                  K   i }|||d<   |||d<   |||d<   |"|d         |                     dd          d|d	<   |                     d
|           d{V }t          |                                          }t	          di |S )a  Create a new browser session.

    Args:
        client: Async 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
    Nr.   activityTtlr!   namesave_changesT)r4   saveChangesr0   /v2/browser )getpostr   jsonr   )r1   r.   r/   r"   r0   bodyrespr   s           r   browserr>   6   s      * D
U*]" /_FO";;~t<<
 
Y
 ]D11111111D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_responserB   ]   s5    
w--CS[33z?KJr   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_responserH   d   s_    
w--Cc!!&;3&F&F%()<%=!"#"2#"="= #O 4Jr   bash)languagetimeout
session_idcoderJ   )pythonnoderI   rK   c                   K   ||d}|||d<   |                      d| d|           d{V }t          |                                          }t          di |S )al  Execute code in a browser session.

    Args:
        client: Async 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
    )rM   rJ   NrK   /v2/browser/z/executer8   )r:   rB   r;   r	   )r1   rL   rM   rJ   rK   r<   r=   r   s           r   browser_executerR   m   s      *  D !Y@J@@@$GGGGGGGGD1$))++>>G!,,G,,,r   c                    K   |                      d|            d{V }t          |                                          }t          di |S )zDelete a browser session.

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

    Returns:
        BrowserDeleteResponse
    rQ   Nr8   )deleterH   r;   r
   )r1   rL   r=   r   s       r   delete_browserrU      s]       :j::;;;;;;;;D0==G ++7+++r   )statusrV   )active	destroyedc                   K   d}|| d| }|                      |           d{V }t          |                                          }t          di |S )zList browser sessions.

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

    Returns:
        BrowserListResponse with list of sessions
    r7   Nz?status=r8   )r9   r-   r;   r   )r1   rV   endpointr=   r   s        r   list_browsersr[      sr       H0000H%%%%%%%%D.tyy{{;;G)))))r   )__doc__typingr   r   r   r   typesr   r	   r
   r   utils.http_client_asyncr   strr   r-   intboolr>   rB   rH   rR   rU   r[   r8   r   r   <module>rc      s    0 / / / / / / / / / / /            7 6 6 6 6 6
S#X 
4S> 
 
 
 
d38n c3h    4 "&&*(,$, $, $,$, 
#$, 3-	$,
 d^$, d38n%$, $, $, $, $,Nc3h DcN    S#X 4S>     39!- - --- -
 ./- c]- - - - -@,,, , , , ,* 8<* * ** W234* 	* * * * * *r   