
    
Bj}                        d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 dZ
de
 ZdZdZd	Zd
ZddZddZddZe
dfddZddZe
dfddZy)z?Shared helpers for attaching Hermes to a local Chrome CDP port.    )annotationsN)get_hermes_homei$  zhttp://127.0.0.1:)z</Applications/Google Chrome.app/Contents/MacOS/Google Chromez2/Applications/Chromium.app/Contents/MacOS/Chromiumz</Applications/Brave Browser.app/Contents/MacOS/Brave Browserz>/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge))GoogleChromeApplication
chrome.exe)Chromiumr   r   )r	   r   chromium.exe)BraveSoftwarezBrave-Browserr   	brave.exe)	MicrosoftEdger   
msedge.exe)zgoogle-chromezgoogle-chrome-stablezchromium-browserchromiumzbrave-browserzmicrosoft-edge)r   r   r   r
   chromemsedgebraver   c                   g t               d	fdd
fd}| dk(  rt        D ]
  } |        S | dk(  rt        D ]  } t        j                  |               |t
        j                  j                  d      t
        j                  j                  d      t
        j                  j                  d      f       S t        D ]  } t        j                  |               |d       S )Nc                   | sy t         j                  j                  t         j                  j                  |             }|v st         j                  j	                  |       sy j                  |        j                  |       y N)ospathnormcasenormpathisfileappendadd)r   
normalized
candidatesseens     ?/home/ubuntu/.hermes/hermes-agent/hermes_cli/browser_connect.pyr   z(get_chrome_debug_candidates.<locals>.add/   s`    WW%%bgg&6&6t&<=
RWW^^D%9$    c                    t        d |       D ]3  }t        D ](  } t        j                  j                  |g|        * 5 y r   )filter_WINDOWS_INSTALL_PARTSr   r   join)basesbasepartsr   s      r!   add_install_pathsz6get_chrome_debug_candidates.<locals>.add_install_paths8   sB    4' 	0D/ 0BGGLL../0	0r"   DarwinWindowsProgramFileszProgramFiles(x86)LOCALAPPDATA)z/mnt/c/Program Filesz/mnt/c/Program Files (x86))r   
str | NonereturnNone)r'   ztuple[str | None, ...]r0   r1   )	set_DARWIN_APPS_WINDOWS_BIN_NAMESshutilwhichr   environget_LINUX_BIN_NAMES)systemr*   appnamer   r   r    s       @@@r!   get_chrome_debug_candidatesr=   +   s    JUD0
  	CH	& 	$DT"#	$JJNN>*JJNN./JJNN>*
 	
    FLL LMr"   c                 .    t        t               dz        S )Nzchrome-debug)strr    r"   r!   chrome_debug_data_dirrA   R   s     >122r"   c                *    d|  dt                ddgS )Nz--remote-debugging-port=z--user-data-dir=z--no-first-runz--no-default-browser-check)rA   )ports    r!   _chrome_debug_argsrD   V   s+    
"4&)
0234$	 r"   c                    |xs t        j                         }t        |      }|r@|d   gt        |       }|dk(  rt	        j
                  |      S t        j                  |      S |dk(  rt               }d|  d| dS y )Nr   r,   r+   z7open -a "Google Chrome" --args --remote-debugging-port=z --user-data-dir="z+" --no-first-run --no-default-browser-check)	platformr:   r=   rD   
subprocesslist2cmdlineshlexr&   rA   )rC   r:   r   argvdata_dirs        r!   manual_chrome_debug_commandrL   _   s    (x(F,V4J19 24 8906)0Cz&&t,YTXIYY(*EdV L  (z)TV	

 r"   c                j    | dk7  rddiS t        t        dd      t        t        dd      z  }|rd|iS i S )Nr,   start_new_sessionTDETACHED_PROCESSr   CREATE_NEW_PROCESS_GROUPcreationflags)getattrrG   )r:   flagss     r!   _detach_kwargsrT   q   sL    #T**J 2A6.: E (-OU#4"4r"   c                H   |xs t        j                         }t        |      }|syt        j                  t               d       	 t        j                  |d   gt        |       ft        j                  t        j                  dt        |       y# t        $ r Y yw xY w)NFT)exist_okr   )stdoutstderr)rF   r:   r=   r   makedirsrA   rG   PopenrD   DEVNULLrT   	Exception)rC   r:   r   s      r!   try_launch_chrome_debugr]   z   s    (x(F,V4JKK%'$7	]6/56	
%%%%	
 V$		
  s   AB 	B! B!)r:   r?   r0   	list[str])r0   r?   )rC   intr0   r^   )rC   r_   r:   r/   r0   r/   )r:   r?   r0   dict)rC   r_   r:   r/   r0   bool)__doc__
__future__r   r   rF   rI   r5   rG   hermes_constantsr   DEFAULT_BROWSER_CDP_PORTDEFAULT_BROWSER_CDP_URLr3   r%   r9   r4   r=   rA   rD   rL   rT   r]   r@   r"   r!   <module>rg      s    E " 	     ,   -.F-GH   
 $N3 -E[_ $5 )AW[ r"   