
    "<i                     Z   d Z ddlZddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlmZ ddlmZ dd	lmZ  ee          Zd
edz  fdZd
efdZddddddddededz  dedee         dz  dee         dz  deeef         dz  dedz  dedz  dedz  d
efdZddddddddddedeedz   ej        ddgd          f         deee         dz   ej        dd d!"          f         deee         dz   ej        d#d$d!"          f         deee         dz   ej        d%d&d!"          f         d'eedz   ej        d(d)*          f         d+eedz   ej        d,d-*          f         deedz   ej        d.d/*          f         deedz   ej        d0d1*          f         d
dfd2ZdS )3z:Gemini CLI integration for FastMCP install using Cyclopts.    N)Path)	Annotated)print)
get_logger)UVEnvironment   )process_common_argsreturnc                  $   t          j        d          } | r8	 t          j        | dgdd           | S # t          j        t
          f$ r Y nw xY wt          j                    dz  dz  dz  t          d          t          j                    dz  d	z  dz  t          d
          g}|D ]j}|                                rT	 t          j        t          |          dgdd           t          |          c S # t          j        t
          f$ r Y fw xY wkdS )zFind the Gemini CLI command.geminiz	--versionT)checkcapture_outputz.geminilocalz/usr/local/bin/geminiz.npm-globalbinz/opt/homebrew/bin/geminiN)
shutilwhich
subprocessrunCalledProcessErrorFileNotFoundErrorr   homeexistsstr)gemini_in_pathpotential_pathspaths      /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/cli/install/gemini_cli.pyfind_gemini_commandr      se    \(++N 
		N-#   
 "!-/@A 	 	 	D	 		i')H4$%%	m#e+h6'((	O    ;;== 
	YY,#'   
 4yy   13DE   
	 4s!   3 AA<4C33DDc                  "    t                      duS )z!Check if Gemini CLI is available.N)r        r   check_gemini_cli_availabler"   @   s      ,,r!   )with_editablewith_packagesenv_varspython_versionwith_requirementsprojectfileserver_objectnamer#   r$   r%   r&   r'   r(   c          	      Z   t                      }	|	st          d           dS t          ||pg dgz   |||          }
|r|                                  d| }n!t	          |                                           }|
                    dd|g          }|	ddg}|r6|                                D ]!\  }}|                    d	| d
| g           "|                    ||d         dg           |                    |dd                    	 t          j	        |ddd           dS # t          j
        $ rN}t          d| d|j        r|j                                        nt	          |           d           Y d}~dS d}~wt          $ r!}t          d| d| d           Y d}~dS d}~ww xY w)a  Install FastMCP server in Gemini CLI.

    Args:
        file: Path to the server file
        server_object: Optional server object name (for :object suffix)
        name: Name for the server in Gemini CLI
        with_editable: Optional list of directories to install in editable mode
        with_packages: Optional list of additional packages to install
        env_vars: Optional dictionary of environment variables
        python_version: Optional Python version to use
        with_requirements: Optional requirements file to install from
        project: Optional project directory to run within

    Returns:
        True if installation was successful, False otherwise
    z[red]Gemini CLI not found.[/red]
[blue]Please ensure Gemini CLI is installed. Try running 'gemini --version' to verify.[/blue]
[blue]You can install it using 'npm install -g @google/gemini-cli'.[/blue]
Ffastmcp)pythondependenciesrequirementsr(   editable:r   mcpaddz-e=r   z--r   NT)r   r   textz[red]Failed to install '[bold]z[/bold]' in Gemini CLI: z[/red])r   r   r   resolver   build_commanditemsextendr   r   r   stderrstrip	Exception)r)   r*   r+   r#   r$   r%   r&   r'   r(   
gemini_cmd
env_configserver_specfull_command	cmd_partskeyvaluees                    r   install_gemini_clirF   E   s?   : %&&J [	
 	
 	

 u#)ri[8&  J  *99-99$,,..)) ++Y{,KLLL UE*I  7"..** 	7 	7JCds$4$4U$4$456666 dLOT2333\!""%&&&yTMMMMt(   {T{{_`_gKs18>>K[K[K[mpqrmsms{{{	
 	
 	
 uuuuu   VtVVQVVVWWWuuuuus%   
D$ $F*3AE<<F*	F%%F*)server_namer#   r$   r%   env_filer.   r'   r(   r@   rG   z--namez-nz(Custom name for the server in Gemini CLI)r+   helpz--with-editablezVDirectory with pyproject.toml to install in editable mode (can be used multiple times) )rI   negativez--withz;Additional packages to install (can be used multiple times)z--envzFEnvironment variables in KEY=VALUE format (can be used multiple times)rH   z
--env-filez)Load environment variables from .env file)rI   r.   z--pythonz(Python version to use (e.g., 3.10, 3.11)z--with-requirementsz.Requirements file to install dependencies fromz	--projectz2Run the command within the given project directoryc                   K   |pg }|pg }|pg }t          | ||||           d{V \  }	}
}}}t          |	|
|||||||	  	        }|rt          d| d           dS t          j        d           dS )zInstall an MCP server in Gemini CLI.

    Args:
        server_spec: Python file to install, optionally with :object suffix
    N)	r)   r*   r+   r#   r$   r%   r&   r'   r(   z[green]Successfully installed 'z' in Gemini CLIr   )r	   rF   r   sysexit)r@   rG   r#   r$   r%   rH   r.   r'   r(   r)   r*   r+   packagesenv_dictsuccesss                  r   gemini_cli_commandrR      s      J "'RM!'RM~2H:M[-8; ; 5 5 5 5 5 51D-x !##+
 
 
G  EEEEFFFFFr!   )__doc__r   r   rM   pathlibr   typingr   cycloptsrichr   fastmcp.utilities.loggingr   6fastmcp.utilities.mcp_server_config.v1.environments.uvr   sharedr	   __name__loggerr   r   boolr"   listdictrF   	ParameterrR   r    r!   r   <module>ra      s   @ @      



                    0 0 0 0 0 0 P P P P P P ' ' ' ' ' '	H		)S4Z ) ) ) )X-D - - - - (,&*&*!%%)N N N
N:N N
 :$N 9t#N 38nt#N $JN d{N D[N 
N N N Nt 	 	 	 	 	 	 	 	{[ [ [[ d
D!;	
 	
 	
	[ T
Ti	
 	
 	
	[$ S	DN	
 	
 	
	%[4 S	DY	
 	
 	
	5[D t<	
 	
 	
	E[R d
;	
 	
 	
	S[` !t!A	
 	
 	
	a[n tE	
 	
 	
	o[| 
}[ [ [ [ [ [r!   