@@ -78,16 +78,10 @@ impl ElizaAgent {
7878 tracing:: debug!( "New session request with cwd: {:?}" , request. cwd) ;
7979
8080 // Generate a new session ID
81- let session_id = SessionId ( Arc :: from ( uuid:: Uuid :: new_v4 ( ) . to_string ( ) ) ) ;
81+ let session_id = SessionId :: new ( uuid:: Uuid :: new_v4 ( ) . to_string ( ) ) ;
8282 self . create_session ( & session_id, request. mcp_servers ) ;
8383
84- let response = NewSessionResponse {
85- session_id,
86- modes : None ,
87- meta : None ,
88- } ;
89-
90- request_cx. respond ( response)
84+ request_cx. respond ( NewSessionResponse :: new ( session_id) )
9185 }
9286
9387 async fn handle_load_session (
@@ -100,12 +94,7 @@ impl ElizaAgent {
10094 // For Eliza, we just create a fresh session with no MCP servers
10195 self . create_session ( & request. session_id , vec ! [ ] ) ;
10296
103- let response = LoadSessionResponse {
104- modes : None ,
105- meta : None ,
106- } ;
107-
108- request_cx. respond ( response)
97+ request_cx. respond ( LoadSessionResponse :: new ( ) )
10998 }
11099
111100 /// Process the prompt and send response - this runs in a spawned task
@@ -171,20 +160,13 @@ impl ElizaAgent {
171160 ?final_response,
172161 "Eliza sending SessionNotification"
173162 ) ;
174- cx. send_notification ( SessionNotification {
175- session_id : session_id. clone ( ) ,
176- update : SessionUpdate :: AgentMessageChunk ( ContentChunk {
177- content : final_response. into ( ) ,
178- meta : None ,
179- } ) ,
180- meta : None ,
181- } ) ?;
163+ cx. send_notification ( SessionNotification :: new (
164+ session_id. clone ( ) ,
165+ SessionUpdate :: AgentMessageChunk ( ContentChunk :: new ( final_response. into ( ) ) ) ,
166+ ) ) ?;
182167
183168 // Complete the request
184- request_cx. respond ( PromptResponse {
185- stop_reason : StopReason :: EndTurn ,
186- meta : None ,
187- } )
169+ request_cx. respond ( PromptResponse :: new ( StopReason :: EndTurn ) )
188170 }
189171
190172 /// Helper function to execute an operation with an MCP client
@@ -213,34 +195,33 @@ impl ElizaAgent {
213195 let mcp_server = mcp_servers
214196 . iter ( )
215197 . find ( |server| match server {
216- McpServer :: Stdio { name, .. } => name == server_name,
217- McpServer :: Http { name, .. } => name == server_name,
218- McpServer :: Sse { name, .. } => name == server_name,
198+ McpServer :: Stdio ( stdio) => stdio. name == server_name,
199+ McpServer :: Http ( http) => http. name == server_name,
200+ McpServer :: Sse ( sse) => sse. name == server_name,
201+ _ => false ,
219202 } )
220203 . ok_or_else ( || anyhow:: anyhow!( "MCP server '{}' not found" , server_name) ) ?;
221204
222205 // Spawn MCP client based on server type
223206 match mcp_server {
224- McpServer :: Stdio {
225- command, args, env, ..
226- } => {
207+ McpServer :: Stdio ( stdio) => {
227208 tracing:: debug!(
228- command = ?command,
229- args = ?args,
209+ command = ?stdio . command,
210+ args = ?stdio . args,
230211 server_name = %server_name,
231212 "Starting MCP client"
232213 ) ;
233214
234215 // Create MCP client by spawning the process
235216 let mcp_client = ( )
236- . serve ( TokioChildProcess :: new ( Command :: new ( command ) . configure (
237- |cmd| {
238- cmd. args ( args) ;
239- for env_var in env {
217+ . serve ( TokioChildProcess :: new (
218+ Command :: new ( & stdio . command ) . configure ( |cmd| {
219+ cmd. args ( & stdio . args ) ;
220+ for env_var in & stdio . env {
240221 cmd. env ( & env_var. name , & env_var. value ) ;
241222 }
242- } ,
243- ) ) ?)
223+ } ) ,
224+ ) ?)
244225 . await ?;
245226
246227 tracing:: debug!( "MCP client connected" ) ;
@@ -250,18 +231,18 @@ impl ElizaAgent {
250231
251232 Ok ( result)
252233 }
253- McpServer :: Http { url , .. } => {
234+ McpServer :: Http ( http ) => {
254235 use rmcp:: transport:: StreamableHttpClientTransport ;
255236
256237 tracing:: debug!(
257- url = %url,
238+ url = %http . url,
258239 server_name = %server_name,
259240 "Starting HTTP MCP client"
260241 ) ;
261242
262243 // Create HTTP MCP client
263244 let mcp_client =
264- ( ) . serve ( StreamableHttpClientTransport :: from_uri ( url. as_str ( ) ) )
245+ ( ) . serve ( StreamableHttpClientTransport :: from_uri ( http . url . as_str ( ) ) )
265246 . await ?;
266247
267248 tracing:: debug!( "HTTP MCP client connected" ) ;
@@ -271,7 +252,8 @@ impl ElizaAgent {
271252
272253 Ok ( result)
273254 }
274- McpServer :: Sse { .. } => Err ( anyhow:: anyhow!( "SSE MCP servers not yet supported" ) ) ,
255+ McpServer :: Sse ( _) => Err ( anyhow:: anyhow!( "SSE MCP servers not yet supported" ) ) ,
256+ _ => Err ( anyhow:: anyhow!( "Unknown MCP server type" ) ) ,
275257 }
276258 }
277259
@@ -394,18 +376,10 @@ impl Component<sacp::link::AgentToClient> for ElizaAgent {
394376 async |initialize : InitializeRequest , request_cx, _cx| {
395377 tracing:: debug!( "Received initialize request" ) ;
396378
397- request_cx. respond ( InitializeResponse {
398- protocol_version : initialize. protocol_version ,
399- agent_capabilities : AgentCapabilities {
400- load_session : Default :: default ( ) ,
401- prompt_capabilities : Default :: default ( ) ,
402- mcp_capabilities : Default :: default ( ) ,
403- meta : Default :: default ( ) ,
404- } ,
405- auth_methods : Default :: default ( ) ,
406- agent_info : Default :: default ( ) ,
407- meta : Default :: default ( ) ,
408- } )
379+ request_cx. respond (
380+ InitializeResponse :: new ( initialize. protocol_version )
381+ . agent_capabilities ( AgentCapabilities :: new ( ) ) ,
382+ )
409383 } ,
410384 sacp:: on_receive_request!( ) ,
411385 )
0 commit comments