
    "<i/                    h   d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlm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rd dlm Z   ed          Z!d(dZ"d)dZ#d$                    d          Z%d&                                Z'dZ(dZ)ddddd*d'Z*dS )+    )annotationsN)Path)TYPE_CHECKINGAnyLiteral)ValidationError)Align)ConsoleGroup)Panel)Table)Text)
get_logger)MCPServerConfig)FileSystemSource)get_cached_typeadapter)FastMCPz
cli.configreturnboolc                 Z    t          t          j                            d                    S )z:Check if we're already running in a FastMCP uv subprocess.FASTMCP_UV_SPAWNED)r   osenvironget     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/utilities/cli.pyis_already_in_uv_subprocessr      s    
344555r   server_spec
str | Nonetuple[MCPServerConfig, str]c                   d}d}| t          d          }|                                sAt          j                    }|r|}n)t                              d           t          d          t          |          }t                              d|            n| }|	                    d          rt          |          }|                                r	 t          |          5 }t          j        |          }ddd           n# 1 swxY w Y   d|v rn\	 t          t                    }|                    |          }|j        r|j                            |           n# t"          $ r Y nw xY wn# t          j        t          f$ r Y nw xY w| t'          |          }	t          |		          }|                                }
|                    d
          x}r||
d         d
<   |                    d          x}r+|
d                             d          pg }||z   |
d         d<   |                    d          x}rt          |          |
d         d<   |                    d          x}rt          |          |
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   |                    d          x}r||
d         d<   t          di |
}||fS )a  Load config from server_spec and apply CLI overrides.

    This consolidates the config parsing logic that was duplicated across
    run, inspect, and dev commands.

    Args:
        server_spec: Python file, config file, URL, or None to auto-detect
        cli_overrides: CLI arguments that override config values

    Returns:
        Tuple of (MCPServerConfig, resolved_server_spec)
    Nzfastmcp.jsonzNo server specification provided and no fastmcp.json found in current directory.
Please specify a server file or create a fastmcp.json configuration.z-No server specification or fastmcp.json foundzUsing configuration from z.json
mcpServers)path)sourcepythonenvironmentwith_packagesdependencieswith_requirementsrequirementsprojecteditable	transport
deploymenthostportr$   	log_levelserver_argsargsr   )r   existsr   find_configloggererrorFileNotFoundErrorstrinfoendswithopenjsonloadr   validate_pythonr/   apply_runtime_settingsr   JSONDecodeErrorr   
model_dumpr   )r   cli_overridesconfigconfig_pathfound_configresolved_specfdataadapterr%   config_dictpython_overridepackages_overrideexistingrequirements_overrideproject_overrideeditable_overridetransport_overridehost_overrideport_overridepath_overridelog_level_overrideserver_args_override
new_configs                           r   load_and_merge_configrZ       st     FK >**!!## 		Y*688L Y*[   ((WXXXK((===>>>># g&& =)) 	+&& (!9Q<<D( ( ( ( ( ( ( ( ( ( ( ( ( ( (  4''
"8"I"I!(!8!8!>!> ", R"-DD[QQQ*    (*;<   
 ~!}555 /// ##%%K (++H555 ?/>M"8,)--o>>> R}-11.AAGR5F5QM">2 - 1 12E F FF P589N5O5OM">2(,,Y777 F034D0E0EM"9-)--j999 C1BM":. +..{;;; D1CL!+.%))&111} :,9L!&)%))&111} :,9L!&)%))&111} :,9L!&)*..{;;; D1CL!+.,00??? A,@L!&) !//;//J}$$s[   E0 "D7E0 DE0 
DE0 A
E E0 
E,)E0 +E,,E0 0F	F	a[  
    _ __ ___  _____           __  __  _____________    ____    ____ 
   _ __ ___ .'____/___ ______/ /_/  |/  / ____/ __ \  |___ \  / __ \
  _ __ ___ / /_  / __ `/ ___/ __/ /|_/ / /   / /_/ /  ___/ / / / / /
 _ __ ___ / __/ / /_/ (__  ) /_/ /  / / /___/ ____/  /  __/_/ /_/ / 
_ __ ___ /_/    \____/____/\__/_/  /_/\____/_/      /_____(*)____/  


u  [38;2;0;198;255m [38;2;0;195;255m█[38;2;0;192;255m▀[38;2;0;189;255m▀[38;2;0;186;255m [38;2;0;184;255m▄[38;2;0;181;255m▀[38;2;0;178;255m█[38;2;0;175;255m [38;2;0;172;255m█[38;2;0;169;255m▀[38;2;0;166;255m▀[38;2;0;163;255m [38;2;0;160;255m▀[38;2;0;157;255m█[38;2;0;155;255m▀[38;2;0;152;255m [38;2;0;149;255m█[38;2;0;146;255m▀[38;2;0;143;255m▄[38;2;0;140;255m▀[38;2;0;137;255m█[38;2;0;134;255m [38;2;0;131;255m█[38;2;0;128;255m▀[38;2;0;126;255m▀[38;2;0;123;255m [38;2;0;120;255m█[38;2;0;117;255m▀[38;2;0;114;255m█[39m
[38;2;0;198;255m [38;2;0;195;255m█[38;2;0;192;255m▀[38;2;0;189;255m [38;2;0;186;255m [38;2;0;184;255m█[38;2;0;181;255m▀[38;2;0;178;255m█[38;2;0;175;255m [38;2;0;172;255m▄[38;2;0;169;255m▄[38;2;0;166;255m█[38;2;0;163;255m [38;2;0;160;255m [38;2;0;157;255m█[38;2;0;155;255m [38;2;0;152;255m [38;2;0;149;255m█[38;2;0;146;255m [38;2;0;143;255m▀[38;2;0;140;255m [38;2;0;137;255m█[38;2;0;134;255m [38;2;0;131;255m█[38;2;0;128;255m▄[38;2;0;126;255m▄[38;2;0;123;255m [38;2;0;120;255m█[38;2;0;117;255m▀[38;2;0;114;255m▀[39mu    [38;2;0;170;255m▄[38;2;0;142;255m▀[38;2;0;114;255m▀[38;2;0;86;255m▀[39m
 [38;2;0;170;255m█[38;2;0;142;255m▀[38;2;0;114;255m▀[39m
[38;2;0;170;255m▀[39m
[0mu  [38;2;0;198;255m [38;2;0;195;255m▄[38;2;0;192;255m▀[38;2;0;189;255m▀[38;2;0;186;255m [38;2;0;184;255m▄[38;2;0;181;255m▀[38;2;0;178;255m█[38;2;0;175;255m [38;2;0;172;255m█[38;2;0;169;255m▀[38;2;0;166;255m▀[38;2;0;163;255m [38;2;0;160;255m▀[38;2;0;157;255m█[38;2;0;155;255m▀[38;2;0;152;255m [38;2;0;149;255m█[38;2;0;146;255m▀[38;2;0;143;255m▄[38;2;0;140;255m▀[38;2;0;137;255m█[38;2;0;134;255m [38;2;0;131;255m█[38;2;0;128;255m▀[38;2;0;126;255m▀[38;2;0;123;255m [38;2;0;120;255m█[38;2;0;117;255m▀[38;2;0;114;255m█[39m
[38;2;0;198;255m [38;2;0;195;255m█[38;2;0;192;255m▀[38;2;0;189;255m [38;2;0;186;255m [38;2;0;184;255m█[38;2;0;181;255m▀[38;2;0;178;255m█[38;2;0;175;255m [38;2;0;172;255m▄[38;2;0;169;255m▄[38;2;0;166;255m█[38;2;0;163;255m [38;2;0;160;255m [38;2;0;157;255m█[38;2;0;155;255m [38;2;0;152;255m [38;2;0;149;255m█[38;2;0;146;255m [38;2;0;143;255m▀[38;2;0;140;255m [38;2;0;137;255m█[38;2;0;134;255m [38;2;0;131;255m█[38;2;0;128;255m▄[38;2;0;126;255m▄[38;2;0;123;255m [38;2;0;120;255m█[38;2;0;117;255m▀[38;2;0;114;255m▀[39m
)r0   r1   r$   serverFastMCP[Any]r.   2Literal['stdio', 'http', 'sse', 'streamable-http']r0   r1   
int | Noner$   Nonec          
     ^   t          j        t          d          }t          dt          j         d          }t          j        d          }|                    dd	
           |                    dd
           |                    dd
           |xxdk    rn	xdk    rn n  d}nxdk    r d}ndk    rd}|                    ddt          | j	        dz   d                     |                    dd|           |dv r@|r>|r<d| d| }	|r|	d|
                    d           z  }	|                    dd|	           |                    d d d            |                    d!d"d#           |                    d$d%d&           t          t          j        |          d t          j        |          d d t          j        |                    }
t          |
dd'd()          }t          d*          }|                    t          dt          j        |          d                     d+S ),aP  Creates and logs a formatted banner with server information and logo.

    Args:
        transport: The transport protocol being used
        server_name: Optional server name to display
        host: Host address (for HTTP transports)
        port: Port number (for HTTP transports)
        path: Server path (for HTTP transports)
    T)no_wrapzFastMCP z	bold blue)style)r      )paddingboldcenter)rc   justifycyanleftdimhttpstreamable-httpHTTPsseSSEstdioSTDIOu   🖥zServer name:r[   u   📦z
Transport:)rl   rm   ro   zhttp://:/u   🔗zServer URL: u   📚zDocs:zhttps://gofastmcp.comu   🚀zHosting:zhttps://fastmcp.cloud)rd      P   )border_stylere   width)stderrN)r   	from_ansiLOGO_ASCII_4fastmcp__version__r   grid
add_columnadd_rownamelstripr   r	   rg   r   r
   print)r\   r.   r0   r1   r$   	logo_text
title_text
info_tabledisplay_transport
server_urlpanel_contentpanelconsoles                r   log_server_bannerr      s   ( |T:::I 6!466kJJJJ F+++J999777v666
'VVVVV''''''''' &UUUU %WW 'v~tFK$4Fk/Z/Z/Z[[[v|->??? 66646D6,t,,d,,
 	10dkk#..000J6=*=== r2r"""vw(?@@@vz+BCCC Y
Z  

Z   M   E T"""GMM%el51148899999r   )r   r   )r   r    r   r!   )r\   r]   r.   r^   r0   r    r1   r_   r$   r    r   r`   )+
__future__r   r>   r   pathlibr   typingr   r   r   pydanticr   
rich.alignr	   rich.consoler
   r   
rich.panelr   
rich.tabler   	rich.textr   r}   fastmcp.utilities.loggingr   #fastmcp.utilities.mcp_server_configr   9fastmcp.utilities.mcp_server_config.v1.sources.filesystemr   fastmcp.utilities.typesr   r   r7   r   rZ   r   LOGO_ASCII_1stripLOGO_ASCII_2LOGO_ASCII_3r|   r   r   r   r   <module>r      s   " " " " " "  				       . . . . . . . . . . $ $ $ $ $ $       ' ' ' ' ' ' ' '                    0 0 0 0 0 0 ? ? ? ? ? ? V V V V V V : : : : : :  	L	!	!6 6 6 6
i% i% i% i%X F4LL T %'' , V ( J: J: J: J: J: J: J: J:r   