@@ -101,7 +101,7 @@ async def execute(self) -> Optional[UiPathRuntimeResult]:
101101 graph_config ["max_concurrency" ] = int (max_concurrency )
102102
103103 # Stream the output at debug time
104- if self .context . job_id is None :
104+ if self .is_debug_run () :
105105 # Get final chunk while streaming
106106 final_chunk = None
107107 async for stream_chunk in graph .astream (
@@ -115,7 +115,7 @@ async def execute(self) -> Optional[UiPathRuntimeResult]:
115115
116116 self .context .output = self ._extract_graph_result (final_chunk , graph )
117117 else :
118- # Execute the graph normally at runtime
118+ # Execute the graph normally at runtime or eval
119119 self .context .output = await graph .ainvoke (
120120 processed_input , graph_config
121121 )
@@ -310,9 +310,15 @@ def _extract_graph_result(
310310 # Check which channels are present
311311 available_channels = [ch for ch in output_channels if ch in final_chunk ]
312312
313+ # if no available channels, output may contain the last_node name as key
314+ unwrapped_final_chunk = {}
315+ if not available_channels :
316+ if len (final_chunk ) == 1 and isinstance (unwrapped_final_chunk := next (iter (final_chunk .values ())), dict ):
317+ available_channels = [ch for ch in output_channels if ch in unwrapped_final_chunk ]
318+
313319 if available_channels :
314320 # Create a dict with the available channels
315- return {channel : final_chunk [channel ] for channel in available_channels }
321+ return {channel : final_chunk . get ( channel , None ) or unwrapped_final_chunk [channel ] for channel in available_channels }
316322
317323 # Fallback for any other case
318324 return final_chunk
0 commit comments