
    ] 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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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List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<   |S )NcdpUrlcdp_urlliveViewUrllive_view_url	expiresAt
expires_atdictr   outs     h/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/aio/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                   K   i }|||d<   |||d<   |||d<   |                      d|           d{V }t          |                                          }t          di |S )aY  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

    Returns:
        BrowserCreateResponse with session id and CDP URL
    Nr-   activityTtlr    /v2/browser )postr   jsonr	   )r/   r-   r.   r!   bodyrespr   s          r   browserr8   2   s      $ D
U*]" /_]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_responser<   Q   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_responserB   X   s_    
w--Cc!!&;3&F&F%()<%=!"#"2#"="= #O 4Jr   bash)languagetimeout
session_idcoderD   )pythonnoderC   rE   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
    )rG   rD   NrE   /v2/browser/z/executer3   )r4   r<   r5   r
   )r/   rF   rG   rD   rE   r6   r7   r   s           r   browser_executerL   a   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
    rK   Nr3   )deleterB   r5   r   )r/   rF   r7   r   s       r   delete_browserrO      s]       :j::;;;;;;;;D0==G ++7+++r   )statusrP   )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
    r2   Nz?status=r3   )getr,   r5   r   )r/   rP   endpointr7   r   s        r   list_browsersrV      sr       H0000H%%%%%%%%D.tyy{{;;G)))))r   )__doc__typingr   r   r   r   r   typesr	   r
   r   r   utils.http_client_asyncr   strr   r,   intboolr8   r<   rB   rL   rO   rV   r3   r   r   <module>r^      s    6 5 5 5 5 5 5 5 5 5 5 5 5 5            7 6 6 6 6 6S#X 4S>    d38n c3h    0 "&&*, , ,, 
#, 3-	,
 d^, , , , ,>c3h DcN    S#X 4S>     39!- - --- -
 ./- c]- - - - -@,,, , , , ,* 8<* * ** W234* 	* * * * * *r   