
    i7                         U d Z ddlZddlmZmZmZ ddlmZ  ej                  d      Z	 G d d      Z
 G d d	      Zdaee   ed
<   defdZy)z
Genesis V2 Browser Module
==========================
Enhanced browser automation via the Genesis Superior Browser (GSB) stack.
    N)AnyOptionalDict)get_gsbzgenesis_v2.core.browserc                   "    e Zd ZddededefdZy)BrowserResultNsuccessdataerrorc                 .    || _         || _        || _        y )N)r	   r
   r   )selfr	   r
   r   s       0/mnt/e/genesis-system/genesis_v2/core/browser.py__init__zBrowserResult.__init__   s    	
    )NN)__name__
__module____qualname__boolr   strr    r   r   r   r      s     C s r   r   c                   X    e Zd ZdZd ZdedefdZdedefdZ	dedefd	Z
defd
Zd Zy)BrowserControllerz:Manages browser automation by delegating to the GSB Stack.c                 0    t               | _        d| _        y )NF)r   gsbactiver   s    r   r   zBrowserController.__init__   s    9r   taskreturnc                 b   K   d| _         | j                  j                  |       d{   S 7 w)z"Execute a goal-based browser task.TN)r   r   execute_task)r   r   s     r   executezBrowserController.execute   s(     XX**40000s   &/-/urlc                   K   	 | j                   j                  s;| j                   j                  j                          d{   | j                   _        | j                   j                  j	                  |       d{    t        dd|i      S 7 O7 # t        $ r8}t        j                  d|        t        dt        |            cY d}~S d}~ww xY ww)zNavigate to a URL using GSB.NTr"   r	   r
   zGSB Navigate Error: Fr	   r   )
r   active_pagestealthget_pagegotor   	Exceptionloggerr   r   )r   r"   es      r   navigatezBrowserController.navigate   s     	>88''-1XX-=-=-F-F-H'H$((&&++C000 UCLAA (I0 	>LL/s34 c!f==	>sX   C=B B;B =B>B CB B 	C-CCCCCselectorc                   K   	 | j                   j                  st        dd      S | j                   j                  j	                  | j                   j                  |       d{    t        dd|i      S 7 # t
        $ r8}t        j                  d|        t        dt        |            cY d}~S d}~ww xY ww)	zClick an element using GSB.FNo active pager%   NTr.   r$   zGSB Click Error: )	r   r&   r   r'   human_clickr*   r+   r   r   )r   r.   r,   s      r   clickzBrowserController.click*   s     	>88''$U:JKK((""..txx/C/CXNNN Z4JKK O 	>LL,QC01 c!f==	>sP   B>"A: B>=A: $A8%A: 7B>8A: :	B;-B60B;1B>6B;;B>c                 P  K   	 | j                   j                  r9| j                   j                  j                          d{   }t        d|      S t        dd      S 7 # t        $ r8}t
        j                  d|        t        dt        |            cY d}~S d}~ww xY ww)zProxy to GSB screenshot.NTr$   Fr0   r%   zGSB Screenshot Error: )r   r&   
screenshotr   r*   r+   r   r   )r   r
   r,   s      r   r4   zBrowserController.screenshot5   s     	>xx##!XX11<<>>$T== 6FGG ?  	>LL1!56 c!f==	>sR   B&=A" A A" B&A" B& A" "	B#+-BB#B&B##B&c                 <    d| _         t        j                  d       y)z
Close GSB.Fz$Browser controller session detached.N)r   r+   infor   s    r   closezBrowserController.close@   s    :;r   N)r   r   r   __doc__r   r   dictr!   r   r-   r2   r4   r7   r   r   r   r   r      sT    D1# 1$ 1
	># 	>- 	>	>C 	>M 	>	>- 	><r   r   _browser_controllerr   c                  .    t         
t               a t         S )z,Get or create the global browser controller.)r:   r   r   r   r   get_browser_controllerr<   H   s     "/1r   )r8   loggingtypingr   r   r   genesis_v2.core.browser_gsbr   	getLoggerr+   r   r   r:   __annotations__r<   r   r   r   <module>rB      s`     & & /			4	5 0< 0<f 48 X/0 7 1 r   