
    '<i0                    V   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 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 d dlm Z  erd dlm!Z!  ed      Z"ddZ#	 	 	 	 ddZ$djK                  d      Z&djO                         Z(dZ)dZ*ddZ+y)    )annotationsN)Path)TYPE_CHECKINGAny)ValidationError)Align)ConsoleGroup)Panel)Table)Text)
get_logger)MCPServerConfig)FileSystemSource)get_cached_typeadapter)check_for_newer_version)FastMCPz
cli.configc                 R    t        t        j                  j                  d            S )z:Check if we're already running in a FastMCP uv subprocess.FASTMCP_UV_SPAWNED)boolosenvironget     {/home/jay/workspace/.worktrees/task-2057-dev2/scripts/.codegraph-venv/lib/python3.12/site-packages/fastmcp/utilities/cli.pyis_already_in_uv_subprocessr      s    

3455r   c                   d}d}| xt        d      }|j                         s9t        j                         }|r|}n t        j                  d       t        d      t        |      }t        j                  d|        n| }|j                  d      rt        |      }|j                         rw	 t        |      5 }t        j                  |      }ddd       dv rnH	 t        t              }|j                  |      }|j                  r|j                  j!                  |       |t'        |      }	t        |		      }|j)                         }
|j+                  d
      x}r||
d   d
<   |j+                  d      x}r#|
d   j+                  d      xs g }||z   |
d   d<   |j+                  d      x}rt        |      |
d   d<   |j+                  d      x}rt        |      |
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   |j+                  d      x}r||
d   d<   t        di |
}||fS # 1 sw Y   xY w# t"        $ r Y w xY w# t        j$                  t        f$ r Y w xY w)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   )server_spec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_configrW   !   sm     FK >*!!#*668L*[ ((WXXK(/}=># g&=)+& (!99Q<D(  4'
"8"I!(!8!8!> ",,"--DD[Q ~!}5 / ##%K (++H555/>M"8,)--o>>>}-11.AGR5F5QM">2 - 1 12E FFF589N5OM">2(,,Y777034D0EM"9-)--j9991BM":. +..{;;;1CL!+.%))&11}1,9L!&)%))&11}1,9L!&)%))&11}1,9L!&)*..{;;;1CL!+.,00???,@L!&) !/;/J}$$}( (" +  ((*;< sI   .K 9J3K AK  3J=8K  	K	K KK K-,K-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
c                J   t               }t        j                  t        d      }t        dt        j
                   d      }t        j                  d      }|j                  dd	
       |j                  dd
       |j                  dd
       |j                  ddt        | j                  d             |j                  ddd       t        dd      }t        dt        j                  |      ddt        j                  |      t        j                  |      dt        j                  |            }t        dd      }t        j                  ddd      }t        t        t        j                  |      t        j                  |            ddd      }	t        |ddd      }
t!        d      }dt        j                  |
      g}|j#                  t        j                  |	             |rt        j                  d |d!f      }t        d"d      }t        t        t        j                  |      t        j                  |            ddd      }|j#                  t        j                  |             |j#                  d       |j%                  t        |        y#)$zECreates and logs a formatted banner with server information and logo.T)no_wrapzFastMCP z	bold blue)style)r      )paddingboldcenter)r[   justifycyanleftdimu   🖥zServer:u   🚀zDeploy free:zhttps://fastmcp.cloudzhttps://gofastmcp.com u   ✨ FastMCP 3.0 is coming!)zPin rc   )z`fastmcp < 3`zdim bold)z/ in production, then upgrade when you're ready.rc   blue)r      P   )border_styler]   width)r\      )stderrrX   )u   🎉 Update available: r^   z
bold greenz"Run: pip install --upgrade fastmcpN)r   r   	from_ansiLOGO_ASCII_4fastmcp__version__r   grid
add_columnadd_rownamer
   r   r_   assembler   r	   appendprint)servernewer_version	logo_text
title_text
info_tabledocs_urlpanel_contentv3_line1v3_line2	v3_noticepanelconsoleoutput_elementsupdate_line1update_line2update_notices                   r   log_server_bannerr      sC    ,-M |T:I !4!4 56kJJ F+J97v6vy$v{{%*HIv~/FG +59H
Y

Z X
Z 	M 0?H}}%BH
 ell8$ell8&<=	I E T"G 37U8K1LO5<<	23 }}/L)
 @N%,,|,ell<.HI	
 	u||M:;4 MM%)*r   )returnr   )r@   z
str | Noner   ztuple[MCPServerConfig, str])rw   zFastMCP[Any]r   None),
__future__r   r:   r   pathlibr   typingr   r   pydanticr   
rich.alignr   rich.consoler	   r
   
rich.panelr   
rich.tabler   	rich.textr   rn   fastmcp.utilities.loggingr   #fastmcp.utilities.mcp_server_configr   9fastmcp.utilities.mcp_server_config.v1.sources.filesystemr   fastmcp.utilities.typesr   fastmcp.utilities.version_checkr   r   r3   r   rW   lstripLOGO_ASCII_1stripLOGO_ASCII_2LOGO_ASCII_3rm   r   r   r   r   <module>r      s    "  	  % $  '     0 ? V : C	L	!6
i%i% !i%X F4L T %' , V  P+r   