1616from mcp .client .streamable_http import streamablehttp_client
1717
1818from ...types import MCPSession
19+ from mcp .types import Implementation
1920
2021logger = logging .getLogger (__name__ )
2122
@@ -50,19 +51,16 @@ async def initialize_session(self, session: MCPSession) -> None:
5051
5152 exit_stack = AsyncExitStack ()
5253
53- client_info = None
54- if session .seed is not None or (session .dataset_row and session .dataset_row .environment_context ):
55- from mcp .types import Implementation
56-
57- client_info = Implementation (name = "reward-kit" , version = "1.0.0" , _extra = {})
58- if session .seed is not None :
59- client_info ._extra ["seed" ] = session .seed
60- if session .dataset_row and session .dataset_row .environment_context :
61- client_info ._extra ["config" ] = session .dataset_row .environment_context
62- if session .dataset_row and session .dataset_row .id :
63- client_info ._extra ["dataset_row_id" ] = session .dataset_row .id
64- if session .model_id :
65- client_info ._extra ["model_id" ] = session .model_id
54+ client_info = Implementation (name = "reward-kit" , version = "1.0.0" , _extra = {})
55+ client_info ._extra ["session_id" ] = session .session_id
56+ if session .seed is not None :
57+ client_info ._extra ["seed" ] = session .seed
58+ if session .dataset_row and session .dataset_row .environment_context :
59+ client_info ._extra ["config" ] = session .dataset_row .environment_context
60+ if session .dataset_row and session .dataset_row .id :
61+ client_info ._extra ["dataset_row_id" ] = session .dataset_row .id
62+ if session .model_id :
63+ client_info ._extra ["model_id" ] = session .model_id
6664
6765 read_stream , write_stream , _ = await exit_stack .enter_async_context (
6866 streamablehttp_client (session .base_url , terminate_on_close = True )
@@ -77,32 +75,6 @@ async def initialize_session(self, session: MCPSession) -> None:
7775 session ._mcp_session = mcp_session
7876 session ._exit_stack = exit_stack
7977
80- # Update session ID to match server's calculation (for control plane sync)
81- if client_info and hasattr (client_info , "_extra" ):
82- extra_data = client_info ._extra
83- if extra_data and isinstance (extra_data , dict ):
84-
85- seed_value = extra_data .get ("seed" )
86- config_value = extra_data .get ("config" , {})
87- dataset_row_id_value = extra_data .get ("dataset_row_id" )
88- model_id_value = extra_data .get ("model_id" )
89-
90- stable_data = {
91- "seed" : seed_value ,
92- "config" : config_value ,
93- "dataset_row_id" : dataset_row_id_value ,
94- "model_id" : model_id_value ,
95- "name" : client_info .name ,
96- "version" : client_info .version ,
97- }
98-
99- stable_str = json .dumps (stable_data , sort_keys = True )
100- server_session_id = hashlib .md5 (stable_str .encode ()).hexdigest ()
101-
102- # Update the session ID to match what the server generated
103- session .session_id = server_session_id
104- logger .info (f"Updated session ID to match server: { server_session_id } " )
105-
10678 # PRE-WARM: Discover and cache tools immediately after session initialization
10779 # This prevents concurrent list_tools() calls later
10880 await self ._prewarm_tools_cache (session )
0 commit comments