@@ -321,24 +321,32 @@ interface LifecycleEventDispatcher {
321321 private void handleSystemMessageTransform (JsonRpcClient rpc , String requestId , JsonNode params ) {
322322 CompletableFuture .runAsync (() -> {
323323 try {
324+ final long requestIdLong ;
325+ try {
326+ requestIdLong = Long .parseLong (requestId );
327+ } catch (NumberFormatException nfe ) {
328+ LOG .log (Level .SEVERE , "Invalid requestId for systemMessage.transform: " + requestId , nfe );
329+ return ;
330+ }
331+
324332 String sessionId = params .has ("sessionId" ) ? params .get ("sessionId" ).asText () : null ;
325333 JsonNode sections = params .get ("sections" );
326334
327335 CopilotSession session = sessionId != null ? sessions .get (sessionId ) : null ;
328336 if (session == null ) {
329- rpc .sendErrorResponse (Long . parseLong ( requestId ) , -32602 , "Unknown session " + sessionId );
337+ rpc .sendErrorResponse (requestIdLong , -32602 , "Unknown session " + sessionId );
330338 return ;
331339 }
332340
333341 session .handleSystemMessageTransform (sections ).thenAccept (result -> {
334342 try {
335- rpc .sendResponse (Long . parseLong ( requestId ) , result );
343+ rpc .sendResponse (requestIdLong , result );
336344 } catch (IOException e ) {
337345 LOG .log (Level .SEVERE , "Error sending systemMessage.transform response" , e );
338346 }
339347 }).exceptionally (ex -> {
340348 try {
341- rpc .sendErrorResponse (Long . parseLong ( requestId ) , -32603 , "Transform error: " + ex .getMessage ());
349+ rpc .sendErrorResponse (requestIdLong , -32603 , "Transform error: " + ex .getMessage ());
342350 } catch (IOException e ) {
343351 LOG .log (Level .SEVERE , "Error sending transform error response" , e );
344352 }
0 commit comments