agno 2.1.10__py3-none-any.whl → 2.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -331,6 +331,7 @@ def print_response_stream(
331
331
  videos: Optional[Sequence[Video]] = None,
332
332
  files: Optional[Sequence[File]] = None,
333
333
  markdown: bool = False,
334
+ stream_events: bool = False,
334
335
  stream_intermediate_steps: bool = False, # type: ignore
335
336
  knowledge_filters: Optional[Dict[str, Any]] = None,
336
337
  add_history_to_context: Optional[bool] = None,
@@ -355,7 +356,7 @@ def print_response_stream(
355
356
  if not tags_to_include_in_markdown:
356
357
  tags_to_include_in_markdown = {"think", "thinking"}
357
358
 
358
- stream_intermediate_steps = True # With streaming print response, we need to stream intermediate steps
359
+ stream_events = True # With streaming print response, we need to stream intermediate steps
359
360
 
360
361
  _response_content: str = ""
361
362
  _response_reasoning_content: str = ""
@@ -399,7 +400,7 @@ def print_response_stream(
399
400
  videos=videos,
400
401
  files=files,
401
402
  stream=True,
402
- stream_intermediate_steps=stream_intermediate_steps,
403
+ stream_events=stream_events,
403
404
  session_id=session_id,
404
405
  session_state=session_state,
405
406
  user_id=user_id,
@@ -1160,6 +1161,7 @@ async def aprint_response_stream(
1160
1161
  videos: Optional[Sequence[Video]] = None,
1161
1162
  files: Optional[Sequence[File]] = None,
1162
1163
  markdown: bool = False,
1164
+ stream_events: bool = False,
1163
1165
  stream_intermediate_steps: bool = False, # type: ignore
1164
1166
  knowledge_filters: Optional[Dict[str, Any]] = None,
1165
1167
  add_history_to_context: Optional[bool] = None,
@@ -1182,7 +1184,7 @@ async def aprint_response_stream(
1182
1184
  if not tags_to_include_in_markdown:
1183
1185
  tags_to_include_in_markdown = {"think", "thinking"}
1184
1186
 
1185
- stream_intermediate_steps = True # With streaming print response, we need to stream intermediate steps
1187
+ stream_events = True # With streaming print response, we need to stream intermediate steps
1186
1188
 
1187
1189
  _response_content: str = ""
1188
1190
  _response_reasoning_content: str = ""
@@ -1238,7 +1240,7 @@ async def aprint_response_stream(
1238
1240
  videos=videos,
1239
1241
  files=files,
1240
1242
  stream=True,
1241
- stream_intermediate_steps=stream_intermediate_steps,
1243
+ stream_events=stream_events,
1242
1244
  session_id=session_id,
1243
1245
  session_state=session_state,
1244
1246
  user_id=user_id,
@@ -186,6 +186,7 @@ def print_response_stream(
186
186
  audio: Optional[List[Audio]] = None,
187
187
  images: Optional[List[Image]] = None,
188
188
  videos: Optional[List[Video]] = None,
189
+ stream_events: bool = False,
189
190
  stream_intermediate_steps: bool = False,
190
191
  markdown: bool = True,
191
192
  show_time: bool = True,
@@ -199,7 +200,7 @@ def print_response_stream(
199
200
 
200
201
  console = Console()
201
202
 
202
- stream_intermediate_steps = True # With streaming print response, we need to stream intermediate steps
203
+ stream_events = True # With streaming print response, we need to stream intermediate steps
203
204
 
204
205
  # Show workflow info (same as before)
205
206
  media_info = []
@@ -314,7 +315,7 @@ def print_response_stream(
314
315
  images=images,
315
316
  videos=videos,
316
317
  stream=True,
317
- stream_intermediate_steps=stream_intermediate_steps,
318
+ stream_events=stream_events,
318
319
  **kwargs,
319
320
  ): # type: ignore
320
321
  # Handle the new event types
@@ -969,6 +970,7 @@ async def aprint_response_stream(
969
970
  audio: Optional[List[Audio]] = None,
970
971
  images: Optional[List[Image]] = None,
971
972
  videos: Optional[List[Video]] = None,
973
+ stream_events: bool = False,
972
974
  stream_intermediate_steps: bool = False,
973
975
  markdown: bool = True,
974
976
  show_time: bool = True,
@@ -982,7 +984,7 @@ async def aprint_response_stream(
982
984
 
983
985
  console = Console()
984
986
 
985
- stream_intermediate_steps = True # With streaming print response, we need to stream intermediate steps
987
+ stream_events = True # With streaming print response, we need to stream intermediate steps
986
988
 
987
989
  # Show workflow info (same as before)
988
990
  media_info = []
@@ -1088,7 +1090,7 @@ async def aprint_response_stream(
1088
1090
  live_log.update(status)
1089
1091
 
1090
1092
  try:
1091
- async for response in await workflow.arun(
1093
+ async for response in workflow.arun(
1092
1094
  input=input,
1093
1095
  additional_data=additional_data,
1094
1096
  user_id=user_id,
@@ -1097,7 +1099,7 @@ async def aprint_response_stream(
1097
1099
  images=images,
1098
1100
  videos=videos,
1099
1101
  stream=True,
1100
- stream_intermediate_steps=stream_intermediate_steps,
1102
+ stream_events=stream_events,
1101
1103
  **kwargs,
1102
1104
  ): # type: ignore
1103
1105
  # Handle the new event types
agno/utils/team.py CHANGED
@@ -9,19 +9,20 @@ if TYPE_CHECKING:
9
9
 
10
10
  def format_member_agent_task(
11
11
  task_description: str,
12
- expected_output: Optional[str] = None,
13
12
  team_member_interactions_str: Optional[str] = None,
13
+ team_history_str: Optional[str] = None,
14
14
  ) -> str:
15
- member_agent_task = "You are a member of a team of agents. Your goal is to complete the following task:"
16
- member_agent_task += f"\n\n<task>\n{task_description}\n</task>"
17
-
18
- if expected_output is not None:
19
- member_agent_task += f"\n\n<expected_output>\n{expected_output}\n</expected_output>"
15
+ member_task_str = ""
20
16
 
21
17
  if team_member_interactions_str:
22
- member_agent_task += f"\n\n{team_member_interactions_str}"
18
+ member_task_str += f"{team_member_interactions_str}\n\n"
19
+
20
+ if team_history_str:
21
+ member_task_str += f"{team_history_str}\n\n"
22
+
23
+ member_task_str += f"{task_description}"
23
24
 
24
- return member_agent_task
25
+ return member_task_str
25
26
 
26
27
 
27
28
  def get_member_id(member: Union[Agent, "Team"]) -> str:
@@ -278,7 +278,8 @@ class Condition:
278
278
  step_input: StepInput,
279
279
  session_id: Optional[str] = None,
280
280
  user_id: Optional[str] = None,
281
- stream_intermediate_steps: bool = False,
281
+ stream_events: bool = False,
282
+ stream_intermediate_steps: bool = False, # type: ignore
282
283
  stream_executor_events: bool = True,
283
284
  workflow_run_response: Optional[WorkflowRunOutput] = None,
284
285
  step_index: Optional[Union[int, tuple]] = None,
@@ -300,7 +301,10 @@ class Condition:
300
301
  condition_result = self._evaluate_condition(step_input, session_state)
301
302
  log_debug(f"Condition {self.name} evaluated to: {condition_result}")
302
303
 
303
- if stream_intermediate_steps and workflow_run_response:
304
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
305
+ stream_events = stream_events or stream_intermediate_steps
306
+
307
+ if stream_events and workflow_run_response:
304
308
  # Yield condition started event
305
309
  yield ConditionExecutionStartedEvent(
306
310
  run_id=workflow_run_response.run_id or "",
@@ -315,7 +319,7 @@ class Condition:
315
319
  )
316
320
 
317
321
  if not condition_result:
318
- if stream_intermediate_steps and workflow_run_response:
322
+ if stream_events and workflow_run_response:
319
323
  # Yield condition completed event for empty case
320
324
  yield ConditionExecutionCompletedEvent(
321
325
  run_id=workflow_run_response.run_id or "",
@@ -354,7 +358,7 @@ class Condition:
354
358
  current_step_input,
355
359
  session_id=session_id,
356
360
  user_id=user_id,
357
- stream_intermediate_steps=stream_intermediate_steps,
361
+ stream_events=stream_events,
358
362
  stream_executor_events=stream_executor_events,
359
363
  workflow_run_response=workflow_run_response,
360
364
  step_index=child_step_index,
@@ -411,7 +415,7 @@ class Condition:
411
415
  break
412
416
 
413
417
  log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
414
- if stream_intermediate_steps and workflow_run_response:
418
+ if stream_events and workflow_run_response:
415
419
  # Yield condition completed event
416
420
  yield ConditionExecutionCompletedEvent(
417
421
  run_id=workflow_run_response.run_id or "",
@@ -546,6 +550,7 @@ class Condition:
546
550
  step_input: StepInput,
547
551
  session_id: Optional[str] = None,
548
552
  user_id: Optional[str] = None,
553
+ stream_events: bool = False,
549
554
  stream_intermediate_steps: bool = False,
550
555
  stream_executor_events: bool = True,
551
556
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -568,7 +573,10 @@ class Condition:
568
573
  condition_result = await self._aevaluate_condition(step_input, session_state)
569
574
  log_debug(f"Condition {self.name} evaluated to: {condition_result}")
570
575
 
571
- if stream_intermediate_steps and workflow_run_response:
576
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
577
+ stream_events = stream_events or stream_intermediate_steps
578
+
579
+ if stream_events and workflow_run_response:
572
580
  # Yield condition started event
573
581
  yield ConditionExecutionStartedEvent(
574
582
  run_id=workflow_run_response.run_id or "",
@@ -583,7 +591,7 @@ class Condition:
583
591
  )
584
592
 
585
593
  if not condition_result:
586
- if stream_intermediate_steps and workflow_run_response:
594
+ if stream_events and workflow_run_response:
587
595
  # Yield condition completed event for empty case
588
596
  yield ConditionExecutionCompletedEvent(
589
597
  run_id=workflow_run_response.run_id or "",
@@ -624,7 +632,7 @@ class Condition:
624
632
  current_step_input,
625
633
  session_id=session_id,
626
634
  user_id=user_id,
627
- stream_intermediate_steps=stream_intermediate_steps,
635
+ stream_events=stream_events,
628
636
  stream_executor_events=stream_executor_events,
629
637
  workflow_run_response=workflow_run_response,
630
638
  step_index=child_step_index,
@@ -682,7 +690,7 @@ class Condition:
682
690
 
683
691
  log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
684
692
 
685
- if stream_intermediate_steps and workflow_run_response:
693
+ if stream_events and workflow_run_response:
686
694
  # Yield condition completed event
687
695
  yield ConditionExecutionCompletedEvent(
688
696
  run_id=workflow_run_response.run_id or "",
agno/workflow/loop.py CHANGED
@@ -226,6 +226,7 @@ class Loop:
226
226
  step_input: StepInput,
227
227
  session_id: Optional[str] = None,
228
228
  user_id: Optional[str] = None,
229
+ stream_events: bool = False,
229
230
  stream_intermediate_steps: bool = False,
230
231
  stream_executor_events: bool = True,
231
232
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -245,7 +246,10 @@ class Loop:
245
246
 
246
247
  loop_step_id = str(uuid4())
247
248
 
248
- if stream_intermediate_steps and workflow_run_response:
249
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
250
+ stream_events = stream_events or stream_intermediate_steps
251
+
252
+ if stream_events and workflow_run_response:
249
253
  # Yield loop started event
250
254
  yield LoopExecutionStartedEvent(
251
255
  run_id=workflow_run_response.run_id or "",
@@ -266,7 +270,7 @@ class Loop:
266
270
  while iteration < self.max_iterations:
267
271
  log_debug(f"Loop iteration {iteration + 1}/{self.max_iterations}")
268
272
 
269
- if stream_intermediate_steps and workflow_run_response:
273
+ if stream_events and workflow_run_response:
270
274
  # Yield iteration started event
271
275
  yield LoopIterationStartedEvent(
272
276
  run_id=workflow_run_response.run_id or "",
@@ -302,7 +306,7 @@ class Loop:
302
306
  current_step_input,
303
307
  session_id=session_id,
304
308
  user_id=user_id,
305
- stream_intermediate_steps=stream_intermediate_steps,
309
+ stream_events=stream_events,
306
310
  stream_executor_events=stream_executor_events,
307
311
  workflow_run_response=workflow_run_response,
308
312
  step_index=composite_step_index,
@@ -363,7 +367,7 @@ class Loop:
363
367
  should_continue = False
364
368
  log_debug(f"Loop ending early due to step termination request at iteration {iteration}")
365
369
 
366
- if stream_intermediate_steps and workflow_run_response:
370
+ if stream_events and workflow_run_response:
367
371
  # Yield iteration completed event
368
372
  yield LoopIterationCompletedEvent(
369
373
  run_id=workflow_run_response.run_id or "",
@@ -388,7 +392,7 @@ class Loop:
388
392
 
389
393
  log_debug(f"Loop End: {self.name} ({iteration} iterations)", center=True, symbol="=")
390
394
 
391
- if stream_intermediate_steps and workflow_run_response:
395
+ if stream_events and workflow_run_response:
392
396
  # Yield loop completed event
393
397
  yield LoopExecutionCompletedEvent(
394
398
  run_id=workflow_run_response.run_id or "",
@@ -523,6 +527,7 @@ class Loop:
523
527
  step_input: StepInput,
524
528
  session_id: Optional[str] = None,
525
529
  user_id: Optional[str] = None,
530
+ stream_events: bool = False,
526
531
  stream_intermediate_steps: bool = False,
527
532
  stream_executor_events: bool = True,
528
533
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -542,7 +547,10 @@ class Loop:
542
547
  # Prepare steps first
543
548
  self._prepare_steps()
544
549
 
545
- if stream_intermediate_steps and workflow_run_response:
550
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
551
+ stream_events = stream_events or stream_intermediate_steps
552
+
553
+ if stream_events and workflow_run_response:
546
554
  # Yield loop started event
547
555
  yield LoopExecutionStartedEvent(
548
556
  run_id=workflow_run_response.run_id or "",
@@ -563,7 +571,7 @@ class Loop:
563
571
  while iteration < self.max_iterations:
564
572
  log_debug(f"Async loop iteration {iteration + 1}/{self.max_iterations}")
565
573
 
566
- if stream_intermediate_steps and workflow_run_response:
574
+ if stream_events and workflow_run_response:
567
575
  # Yield iteration started event
568
576
  yield LoopIterationStartedEvent(
569
577
  run_id=workflow_run_response.run_id or "",
@@ -599,7 +607,7 @@ class Loop:
599
607
  current_step_input,
600
608
  session_id=session_id,
601
609
  user_id=user_id,
602
- stream_intermediate_steps=stream_intermediate_steps,
610
+ stream_events=stream_events,
603
611
  stream_executor_events=stream_executor_events,
604
612
  workflow_run_response=workflow_run_response,
605
613
  step_index=composite_step_index,
@@ -663,7 +671,7 @@ class Loop:
663
671
  should_continue = False
664
672
  log_debug(f"Loop ending early due to step termination request at iteration {iteration}")
665
673
 
666
- if stream_intermediate_steps and workflow_run_response:
674
+ if stream_events and workflow_run_response:
667
675
  # Yield iteration completed event
668
676
  yield LoopIterationCompletedEvent(
669
677
  run_id=workflow_run_response.run_id or "",
@@ -688,7 +696,7 @@ class Loop:
688
696
 
689
697
  log_debug(f"Loop End: {self.name} ({iteration} iterations)", center=True, symbol="=")
690
698
 
691
- if stream_intermediate_steps and workflow_run_response:
699
+ if stream_events and workflow_run_response:
692
700
  # Yield loop completed event
693
701
  yield LoopExecutionCompletedEvent(
694
702
  run_id=workflow_run_response.run_id or "",
agno/workflow/parallel.py CHANGED
@@ -316,6 +316,7 @@ class Parallel:
316
316
  step_input: StepInput,
317
317
  session_id: Optional[str] = None,
318
318
  user_id: Optional[str] = None,
319
+ stream_events: bool = False,
319
320
  stream_intermediate_steps: bool = False,
320
321
  stream_executor_events: bool = True,
321
322
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -342,7 +343,10 @@ class Parallel:
342
343
  else:
343
344
  session_state_copies.append({})
344
345
 
345
- if stream_intermediate_steps and workflow_run_response:
346
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
347
+ stream_events = stream_events or stream_intermediate_steps
348
+
349
+ if stream_events and workflow_run_response:
346
350
  # Yield parallel step started event
347
351
  yield ParallelExecutionStartedEvent(
348
352
  run_id=workflow_run_response.run_id or "",
@@ -385,7 +389,7 @@ class Parallel:
385
389
  step_input,
386
390
  session_id=session_id,
387
391
  user_id=user_id,
388
- stream_intermediate_steps=stream_intermediate_steps,
392
+ stream_events=stream_events,
389
393
  stream_executor_events=stream_executor_events,
390
394
  workflow_run_response=workflow_run_response,
391
395
  step_index=sub_step_index,
@@ -483,7 +487,7 @@ class Parallel:
483
487
 
484
488
  log_debug(f"Parallel End: {self.name} ({len(self.steps)} steps)", center=True, symbol="=")
485
489
 
486
- if stream_intermediate_steps and workflow_run_response:
490
+ if stream_events and workflow_run_response:
487
491
  # Yield parallel step completed event
488
492
  yield ParallelExecutionCompletedEvent(
489
493
  run_id=workflow_run_response.run_id or "",
@@ -622,6 +626,7 @@ class Parallel:
622
626
  step_input: StepInput,
623
627
  session_id: Optional[str] = None,
624
628
  user_id: Optional[str] = None,
629
+ stream_events: bool = False,
625
630
  stream_intermediate_steps: bool = False,
626
631
  stream_executor_events: bool = True,
627
632
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -648,7 +653,10 @@ class Parallel:
648
653
  else:
649
654
  session_state_copies.append({})
650
655
 
651
- if stream_intermediate_steps and workflow_run_response:
656
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
657
+ stream_events = stream_events or stream_intermediate_steps
658
+
659
+ if stream_events and workflow_run_response:
652
660
  # Yield parallel step started event
653
661
  yield ParallelExecutionStartedEvent(
654
662
  run_id=workflow_run_response.run_id or "",
@@ -691,7 +699,7 @@ class Parallel:
691
699
  step_input,
692
700
  session_id=session_id,
693
701
  user_id=user_id,
694
- stream_intermediate_steps=stream_intermediate_steps,
702
+ stream_events=stream_events,
695
703
  stream_executor_events=stream_executor_events,
696
704
  workflow_run_response=workflow_run_response,
697
705
  step_index=sub_step_index,
@@ -777,7 +785,7 @@ class Parallel:
777
785
 
778
786
  log_debug(f"Parallel End: {self.name} ({len(self.steps)} steps)", center=True, symbol="=")
779
787
 
780
- if stream_intermediate_steps and workflow_run_response:
788
+ if stream_events and workflow_run_response:
781
789
  # Yield parallel step completed event
782
790
  yield ParallelExecutionCompletedEvent(
783
791
  run_id=workflow_run_response.run_id or "",
agno/workflow/router.py CHANGED
@@ -267,6 +267,7 @@ class Router:
267
267
  session_id: Optional[str] = None,
268
268
  user_id: Optional[str] = None,
269
269
  session_state: Optional[Dict[str, Any]] = None,
270
+ stream_events: bool = False,
270
271
  stream_intermediate_steps: bool = False,
271
272
  stream_executor_events: bool = True,
272
273
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -288,7 +289,10 @@ class Router:
288
289
  steps_to_execute = self._route_steps(step_input, session_state)
289
290
  log_debug(f"Router {self.name}: Selected {len(steps_to_execute)} steps to execute")
290
291
 
291
- if stream_intermediate_steps and workflow_run_response:
292
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
293
+ stream_events = stream_events or stream_intermediate_steps
294
+
295
+ if stream_events and workflow_run_response:
292
296
  # Yield router started event
293
297
  yield RouterExecutionStartedEvent(
294
298
  run_id=workflow_run_response.run_id or "",
@@ -304,7 +308,7 @@ class Router:
304
308
 
305
309
  if not steps_to_execute:
306
310
  # Yield router completed event for empty case
307
- if stream_intermediate_steps and workflow_run_response:
311
+ if stream_events and workflow_run_response:
308
312
  yield RouterExecutionCompletedEvent(
309
313
  run_id=workflow_run_response.run_id or "",
310
314
  workflow_name=workflow_run_response.workflow_name or "",
@@ -332,7 +336,7 @@ class Router:
332
336
  current_step_input,
333
337
  session_id=session_id,
334
338
  user_id=user_id,
335
- stream_intermediate_steps=stream_intermediate_steps,
339
+ stream_events=stream_events,
336
340
  stream_executor_events=stream_executor_events,
337
341
  workflow_run_response=workflow_run_response,
338
342
  step_index=step_index,
@@ -390,7 +394,7 @@ class Router:
390
394
 
391
395
  log_debug(f"Router End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
392
396
 
393
- if stream_intermediate_steps and workflow_run_response:
397
+ if stream_events and workflow_run_response:
394
398
  # Yield router completed event
395
399
  yield RouterExecutionCompletedEvent(
396
400
  run_id=workflow_run_response.run_id or "",
@@ -520,6 +524,7 @@ class Router:
520
524
  session_id: Optional[str] = None,
521
525
  user_id: Optional[str] = None,
522
526
  session_state: Optional[Dict[str, Any]] = None,
527
+ stream_events: bool = False,
523
528
  stream_intermediate_steps: bool = False,
524
529
  stream_executor_events: bool = True,
525
530
  workflow_run_response: Optional[WorkflowRunOutput] = None,
@@ -541,7 +546,10 @@ class Router:
541
546
  steps_to_execute = await self._aroute_steps(step_input, session_state)
542
547
  log_debug(f"Router {self.name} selected: {len(steps_to_execute)} steps to execute")
543
548
 
544
- if stream_intermediate_steps and workflow_run_response:
549
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
550
+ stream_events = stream_events or stream_intermediate_steps
551
+
552
+ if stream_events and workflow_run_response:
545
553
  # Yield router started event
546
554
  yield RouterExecutionStartedEvent(
547
555
  run_id=workflow_run_response.run_id or "",
@@ -556,7 +564,7 @@ class Router:
556
564
  )
557
565
 
558
566
  if not steps_to_execute:
559
- if stream_intermediate_steps and workflow_run_response:
567
+ if stream_events and workflow_run_response:
560
568
  # Yield router completed event for empty case
561
569
  yield RouterExecutionCompletedEvent(
562
570
  run_id=workflow_run_response.run_id or "",
@@ -587,7 +595,7 @@ class Router:
587
595
  current_step_input,
588
596
  session_id=session_id,
589
597
  user_id=user_id,
590
- stream_intermediate_steps=stream_intermediate_steps,
598
+ stream_events=stream_events,
591
599
  stream_executor_events=stream_executor_events,
592
600
  workflow_run_response=workflow_run_response,
593
601
  step_index=step_index,
@@ -645,7 +653,7 @@ class Router:
645
653
 
646
654
  log_debug(f"Router End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
647
655
 
648
- if stream_intermediate_steps and workflow_run_response:
656
+ if stream_events and workflow_run_response:
649
657
  # Yield router completed event
650
658
  yield RouterExecutionCompletedEvent(
651
659
  run_id=workflow_run_response.run_id or "",
agno/workflow/step.py CHANGED
@@ -404,6 +404,7 @@ class Step:
404
404
  step_input: StepInput,
405
405
  session_id: Optional[str] = None,
406
406
  user_id: Optional[str] = None,
407
+ stream_events: bool = False,
407
408
  stream_intermediate_steps: bool = False,
408
409
  stream_executor_events: bool = True,
409
410
  workflow_run_response: Optional["WorkflowRunOutput"] = None,
@@ -425,8 +426,11 @@ class Step:
425
426
  # Create session_state copy once to avoid duplication
426
427
  session_state_copy = copy(session_state) if session_state is not None else {}
427
428
 
429
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
430
+ stream_events = stream_events or stream_intermediate_steps
431
+
428
432
  # Emit StepStartedEvent
429
- if stream_intermediate_steps and workflow_run_response:
433
+ if stream_events and workflow_run_response:
430
434
  yield StepStartedEvent(
431
435
  run_id=workflow_run_response.run_id or "",
432
436
  workflow_name=workflow_run_response.workflow_name or "",
@@ -548,7 +552,7 @@ class Step:
548
552
  user_id=user_id,
549
553
  session_state=session_state_copy, # Send a copy to the executor
550
554
  stream=True,
551
- stream_intermediate_steps=stream_intermediate_steps,
555
+ stream_events=stream_events,
552
556
  yield_run_response=True,
553
557
  **kwargs,
554
558
  )
@@ -588,7 +592,7 @@ class Step:
588
592
  yield final_response
589
593
 
590
594
  # Emit StepCompletedEvent
591
- if stream_intermediate_steps and workflow_run_response:
595
+ if stream_events and workflow_run_response:
592
596
  yield StepCompletedEvent(
593
597
  run_id=workflow_run_response.run_id or "",
594
598
  workflow_name=workflow_run_response.workflow_name or "",
@@ -809,6 +813,7 @@ class Step:
809
813
  step_input: StepInput,
810
814
  session_id: Optional[str] = None,
811
815
  user_id: Optional[str] = None,
816
+ stream_events: bool = False,
812
817
  stream_intermediate_steps: bool = False,
813
818
  stream_executor_events: bool = True,
814
819
  workflow_run_response: Optional["WorkflowRunOutput"] = None,
@@ -831,7 +836,10 @@ class Step:
831
836
  # Create session_state copy once to avoid duplication
832
837
  session_state_copy = copy(session_state) if session_state is not None else {}
833
838
 
834
- if stream_intermediate_steps and workflow_run_response:
839
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
840
+ stream_events = stream_events or stream_intermediate_steps
841
+
842
+ if stream_events and workflow_run_response:
835
843
  # Emit StepStartedEvent
836
844
  yield StepStartedEvent(
837
845
  run_id=workflow_run_response.run_id or "",
@@ -978,7 +986,7 @@ class Step:
978
986
  user_id=user_id,
979
987
  session_state=session_state_copy,
980
988
  stream=True,
981
- stream_intermediate_steps=stream_intermediate_steps,
989
+ stream_events=stream_events,
982
990
  yield_run_response=True,
983
991
  **kwargs,
984
992
  )
@@ -1015,7 +1023,7 @@ class Step:
1015
1023
  final_response = self._process_step_output(final_response)
1016
1024
  yield final_response
1017
1025
 
1018
- if stream_intermediate_steps and workflow_run_response:
1026
+ if stream_events and workflow_run_response:
1019
1027
  # Emit StepCompletedEvent
1020
1028
  yield StepCompletedEvent(
1021
1029
  run_id=workflow_run_response.run_id or "",
agno/workflow/steps.py CHANGED
@@ -207,6 +207,7 @@ class Steps:
207
207
  session_state: Optional[Dict[str, Any]] = None,
208
208
  session_id: Optional[str] = None,
209
209
  user_id: Optional[str] = None,
210
+ stream_events: bool = False,
210
211
  stream_intermediate_steps: bool = False,
211
212
  stream_executor_events: bool = True,
212
213
  step_index: Optional[Union[int, tuple]] = None,
@@ -223,7 +224,10 @@ class Steps:
223
224
 
224
225
  self._prepare_steps()
225
226
 
226
- if stream_intermediate_steps:
227
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
228
+ stream_events = stream_events or stream_intermediate_steps
229
+
230
+ if stream_events:
227
231
  # Yield steps execution started event
228
232
  yield StepsExecutionStartedEvent(
229
233
  run_id=workflow_run_response.run_id or "",
@@ -266,7 +270,7 @@ class Steps:
266
270
  session_id=session_id,
267
271
  user_id=user_id,
268
272
  session_state=session_state,
269
- stream_intermediate_steps=stream_intermediate_steps,
273
+ stream_events=stream_events,
270
274
  stream_executor_events=stream_executor_events,
271
275
  workflow_run_response=workflow_run_response,
272
276
  step_index=child_step_index,
@@ -309,7 +313,7 @@ class Steps:
309
313
 
310
314
  log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
311
315
 
312
- if stream_intermediate_steps:
316
+ if stream_events:
313
317
  # Yield steps execution completed event
314
318
  yield StepsExecutionCompletedEvent(
315
319
  run_id=workflow_run_response.run_id or "",
@@ -438,6 +442,7 @@ class Steps:
438
442
  session_state: Optional[Dict[str, Any]] = None,
439
443
  session_id: Optional[str] = None,
440
444
  user_id: Optional[str] = None,
445
+ stream_events: bool = False,
441
446
  stream_intermediate_steps: bool = False,
442
447
  stream_executor_events: bool = True,
443
448
  step_index: Optional[Union[int, tuple]] = None,
@@ -454,7 +459,10 @@ class Steps:
454
459
 
455
460
  self._prepare_steps()
456
461
 
457
- if stream_intermediate_steps:
462
+ # Considering both stream_events and stream_intermediate_steps (deprecated)
463
+ stream_events = stream_events or stream_intermediate_steps
464
+
465
+ if stream_events:
458
466
  # Yield steps execution started event
459
467
  yield StepsExecutionStartedEvent(
460
468
  run_id=workflow_run_response.run_id or "",
@@ -497,7 +505,7 @@ class Steps:
497
505
  session_id=session_id,
498
506
  user_id=user_id,
499
507
  session_state=session_state,
500
- stream_intermediate_steps=stream_intermediate_steps,
508
+ stream_events=stream_events,
501
509
  stream_executor_events=stream_executor_events,
502
510
  workflow_run_response=workflow_run_response,
503
511
  step_index=child_step_index,
@@ -540,7 +548,7 @@ class Steps:
540
548
 
541
549
  log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
542
550
  # Yield steps execution completed event
543
- if stream_intermediate_steps:
551
+ if stream_events:
544
552
  yield StepsExecutionCompletedEvent(
545
553
  run_id=workflow_run_response.run_id or "",
546
554
  workflow_name=workflow_run_response.workflow_name or "",