@@ -53,7 +53,7 @@ async def execute(self) -> Optional[UiPathRuntimeResult]:
5353
5454 # Set up SignalR client
5555 signalr_url = (
56- f"{ os .environ .get ('UIPATH_URL' )} /mcp_/wsstunnel?slug={ self .server .name } &jobKey ={ self .context . job_id } "
56+ f"{ os .environ .get ('UIPATH_URL' )} /mcp_/wsstunnel?slug={ self .server .name } &sessionId ={ self .server . session_id } "
5757 )
5858
5959 self .cancel_event = asyncio .Event ()
@@ -73,7 +73,7 @@ async def execute(self) -> Optional[UiPathRuntimeResult]:
7373
7474 # Keep the runtime alive
7575 # Start SignalR client and keep it running (this is a blocking call)
76- logger .info ("Starting SignalR client..." )
76+ logger .info ("Starting websocket client..." )
7777
7878 run_task = asyncio .create_task (self .signalr_client .run ())
7979
@@ -144,14 +144,13 @@ async def handle_signalr_message(self, args: list) -> None:
144144 Handle incoming SignalR messages.
145145 The SignalR client will call this with the arguments from the server.
146146 """
147- if len (args ) < 2 :
147+ if len (args ) < 1 :
148148 logger .error (f"Received invalid SignalR message arguments: { args } " )
149149 return
150150
151151 session_id = args [0 ]
152- message = args [1 ]
153152
154- logger .info (f"Received message for session { session_id } : { message } " )
153+ logger .info (f"Received websocket notification... { session_id } " )
155154
156155 try :
157156 # Check if we have a session server for this session_id
@@ -165,11 +164,11 @@ async def handle_signalr_message(self, args: list) -> None:
165164 session_server = self .session_servers [session_id ]
166165
167166 # Forward the message to the session's MCP server
168- await session_server .send_message ( message )
167+ await session_server .get_messages ( )
169168
170169 except Exception as e :
171170 logger .error (
172- f"Error handling SignalR message for session { session_id } : { str (e )} "
171+ f"Error handling websocket notification for session { session_id } : { str (e )} "
173172 )
174173
175174 async def handle_signalr_error (self , error : Any ) -> None :
@@ -178,36 +177,20 @@ async def handle_signalr_error(self, error: Any) -> None:
178177
179178 async def handle_signalr_open (self ) -> None :
180179 """Handle SignalR connection open event."""
181- logger .info ("SignalR connection established" )
182- uipath = UiPath ()
183- response = uipath .api_client .request (
184- "GET" ,
185- f"mcp_/mcp/{ self .server .name } /message?jobKey={ self .context .job_id } "
186- )
187- if response .status_code == 200 :
188- data = response .json ()
189- session_id = data ["sessionId" ]
190- message = data ["message" ]
191- logger .info (f"Received message from UiPath MCP: { data } " )
192- if session_id and session_id .strip ():
193- if session_id not in self .session_servers :
194- # Create and start a new session server
195- session_server = SessionServer (self .server , session_id )
196- self .session_servers [session_id ] = session_server
197- await session_server .start (self .signalr_client )
198-
199- # Get the session server for this session
200- session_server = self .session_servers [session_id ]
201-
202- if message and message .strip ():
203- logger .info (f"Forwarding message to session { session_id } : { message } " )
204- # Forward the message to the session's MCP server
205- await session_server .send_message (message )
180+
181+ logger .info ("Websocket connection established." )
182+ if self .server .session_id :
183+ try :
184+ session_server = SessionServer (self .server , self .server .session_id )
185+ await session_server .start (self .signalr_client )
186+ self .session_servers [self .server .session_id ] = session_server
187+ await session_server .get_messages ()
188+ except Exception as e :
189+ logger .error (f"Error starting session server: { str (e )} " )
206190
207191 async def handle_signalr_close (self ) -> None :
208192 """Handle SignalR connection close event."""
209- logger .info ("SignalR connection closed" )
210-
193+ logger .info ("SignalR connection closed." )
211194 # Clean up all session servers when the connection closes
212195 await self .cleanup ()
213196
0 commit comments