@@ -455,6 +455,7 @@ async def _run_node_async(
455455 user_id : str ,
456456 session_id : str ,
457457 new_message : Optional [types .Content ] = None ,
458+ state_delta : Optional [dict [str , Any ]] = None ,
458459 run_config : Optional [RunConfig ] = None ,
459460 yield_user_message : bool = False ,
460461 node : Optional ['BaseNode' ] = None ,
@@ -512,7 +513,9 @@ async def _run_node_async(
512513
513514 # Append user message to session for history
514515 if new_message :
515- user_event = await self ._append_user_event (ic , new_message )
516+ user_event = await self ._append_user_event (
517+ ic , new_message , state_delta = state_delta
518+ )
516519 if yield_user_message and user_event :
517520 yield user_event
518521
@@ -706,14 +709,26 @@ def _resolve_invocation_id_from_fr(
706709 return invocation_ids .pop ()
707710
708711 async def _append_user_event (
709- self , ic : InvocationContext , content : types .Content
712+ self ,
713+ ic : InvocationContext ,
714+ content : types .Content ,
715+ * ,
716+ state_delta : Optional [dict [str , Any ]] = None ,
710717 ) -> Event :
711718 """Append a user message event to the session and return it."""
712- event = Event (
713- invocation_id = ic .invocation_id ,
714- author = 'user' ,
715- content = content ,
716- )
719+ if state_delta :
720+ event = Event (
721+ invocation_id = ic .invocation_id ,
722+ author = 'user' ,
723+ actions = EventActions (state_delta = state_delta ),
724+ content = content ,
725+ )
726+ else :
727+ event = Event (
728+ invocation_id = ic .invocation_id ,
729+ author = 'user' ,
730+ content = content ,
731+ )
717732 # when a paused task delegation is in flight, stamp
718733 # the new user message with that task's isolation_scope so the
719734 # task agent's content-build (scoped to <fc_id>) sees it.
@@ -989,6 +1004,7 @@ async def run_async(
9891004 user_id = user_id ,
9901005 session_id = session_id ,
9911006 new_message = new_message ,
1007+ state_delta = state_delta ,
9921008 run_config = run_config ,
9931009 yield_user_message = yield_user_message ,
9941010 node = agent_to_run ,
@@ -1008,6 +1024,7 @@ async def run_async(
10081024 user_id = user_id ,
10091025 session_id = session_id ,
10101026 new_message = new_message ,
1027+ state_delta = state_delta ,
10111028 run_config = run_config ,
10121029 yield_user_message = yield_user_message ,
10131030 )
0 commit comments