@@ -68,9 +68,7 @@ async def execute(
6868 result = await self .delegate .execute (input , options = options )
6969
7070 # If suspended, create and persist trigger
71- await self ._handle_suspension (result )
72-
73- return result
71+ return await self ._handle_suspension (result )
7472
7573 async def stream (
7674 self ,
@@ -90,18 +88,16 @@ async def stream(
9088 if options and options .resume :
9189 input = await self ._restore_resume_input (input )
9290
93- # Stream from delegate
9491 final_result : UiPathRuntimeResult | None = None
9592 async for event in self .delegate .stream (input , options = options ):
96- yield event
97-
98- # Capture final result
9993 if isinstance (event , UiPathRuntimeResult ):
10094 final_result = event
95+ else :
96+ yield event
10197
10298 # If suspended, create and persist trigger
10399 if final_result :
104- await self ._handle_suspension (final_result )
100+ yield await self ._handle_suspension (final_result )
105101
106102 async def _restore_resume_input (
107103 self , input : dict [str , Any ] | None
@@ -128,27 +124,35 @@ async def _restore_resume_input(
128124
129125 return resume_data
130126
131- async def _handle_suspension (self , result : UiPathRuntimeResult ) -> None :
127+ async def _handle_suspension (
128+ self , result : UiPathRuntimeResult
129+ ) -> UiPathRuntimeResult :
132130 """Create and persist resume trigger if execution was suspended.
133131
134132 Args:
135133 result: The execution result to check for suspension
136134 """
137135 # Only handle suspensions
138136 if result .status != UiPathRuntimeStatus .SUSPENDED :
139- return
137+ return result
140138
141139 # Check if trigger already exists in result
142140 if result .trigger :
143141 await self .storage .save_trigger (result .trigger )
144- return
142+ return result
143+
144+ suspended_result = UiPathRuntimeResult (
145+ status = UiPathRuntimeStatus .SUSPENDED ,
146+ )
145147
146148 if result .output :
147- trigger = await self .trigger_manager .create_trigger (result .output )
149+ suspended_result .trigger = await self .trigger_manager .create_trigger (
150+ result .output
151+ )
148152
149- result . trigger = trigger
153+ await self . storage . save_trigger ( suspended_result . trigger )
150154
151- await self . storage . save_trigger ( trigger )
155+ return suspended_result
152156
153157 async def get_schema (self ) -> UiPathRuntimeSchema :
154158 """Passthrough schema from delegate runtime."""
0 commit comments