8686 NextStepHandoff ,
8787 NextStepInterruption ,
8888 NextStepRunAgain ,
89- SingleStepResult ,
9089)
9190from .run_internal .session_persistence import (
9291 persist_session_items_for_guardrail_trip ,
@@ -975,21 +974,6 @@ async def run(
975974 raise
976975
977976 parallel_results : list [InputGuardrailResult ] = []
978- parallel_guardrail_task : asyncio .Task [list [InputGuardrailResult ]] | None = (
979- None
980- )
981- model_task : asyncio .Task [SingleStepResult ] | None = None
982-
983- if parallel_guardrails :
984- parallel_guardrail_task = asyncio .create_task (
985- run_input_guardrails (
986- starting_agent ,
987- parallel_guardrails ,
988- copy_input_items (prepared_input ),
989- context_wrapper ,
990- )
991- )
992-
993977 model_task = asyncio .create_task (
994978 run_single_turn (
995979 agent = current_agent ,
@@ -1011,46 +995,29 @@ async def run(
1011995 )
1012996 )
1013997
1014- if parallel_guardrail_task :
1015- done , pending = await asyncio .wait (
1016- {parallel_guardrail_task , model_task },
1017- return_when = asyncio .FIRST_COMPLETED ,
1018- )
1019-
1020- if parallel_guardrail_task in done :
1021- try :
1022- parallel_results = parallel_guardrail_task .result ()
1023- except InputGuardrailTripwireTriggered :
1024- model_task .cancel ()
1025- await asyncio .gather (model_task , return_exceptions = True )
1026- session_input_items_for_persistence = (
1027- await persist_session_items_for_guardrail_trip (
1028- session ,
1029- server_conversation_tracker ,
1030- session_input_items_for_persistence ,
1031- original_user_input ,
1032- run_state ,
1033- store = store_setting ,
1034- )
1035- )
1036- raise
1037- turn_result = await model_task
1038- else :
1039- turn_result = await model_task
1040- try :
1041- parallel_results = await parallel_guardrail_task
1042- except InputGuardrailTripwireTriggered :
1043- session_input_items_for_persistence = (
1044- await persist_session_items_for_guardrail_trip (
1045- session ,
1046- server_conversation_tracker ,
1047- session_input_items_for_persistence ,
1048- original_user_input ,
1049- run_state ,
1050- store = store_setting ,
1051- )
998+ if parallel_guardrails :
999+ try :
1000+ parallel_results , turn_result = await asyncio .gather (
1001+ run_input_guardrails (
1002+ starting_agent ,
1003+ parallel_guardrails ,
1004+ copy_input_items (prepared_input ),
1005+ context_wrapper ,
1006+ ),
1007+ model_task ,
1008+ )
1009+ except InputGuardrailTripwireTriggered :
1010+ session_input_items_for_persistence = (
1011+ await persist_session_items_for_guardrail_trip (
1012+ session ,
1013+ server_conversation_tracker ,
1014+ session_input_items_for_persistence ,
1015+ original_user_input ,
1016+ run_state ,
1017+ store = store_setting ,
10521018 )
1053- raise
1019+ )
1020+ raise
10541021 else :
10551022 turn_result = await model_task
10561023
0 commit comments