@@ -913,13 +913,19 @@ async def _call_tools(
913
913
914
914
async def handle_call_or_result (
915
915
coro_or_task : Awaitable [
916
- tuple [_messages .ToolReturnPart | _messages .RetryPromptPart , _messages .UserPromptPart | None ]
916
+ tuple [
917
+ _messages .ToolReturnPart | _messages .RetryPromptPart , str | Sequence [_messages .UserContent ] | None
918
+ ]
917
919
]
918
- | Task [tuple [_messages .ToolReturnPart | _messages .RetryPromptPart , _messages .UserPromptPart | None ]],
920
+ | Task [
921
+ tuple [
922
+ _messages .ToolReturnPart | _messages .RetryPromptPart , str | Sequence [_messages .UserContent ] | None
923
+ ]
924
+ ],
919
925
index : int ,
920
926
) -> _messages .HandleResponseEvent | None :
921
927
try :
922
- tool_part , tool_user_part = (
928
+ tool_part , tool_user_content = (
923
929
(await coro_or_task ) if inspect .isawaitable (coro_or_task ) else coro_or_task .result ()
924
930
)
925
931
except exceptions .CallDeferred :
@@ -928,10 +934,10 @@ async def handle_call_or_result(
928
934
deferred_calls_by_index [index ] = 'unapproved'
929
935
else :
930
936
tool_parts_by_index [index ] = tool_part
931
- if tool_user_part :
932
- user_parts_by_index [index ] = tool_user_part
937
+ if tool_user_content :
938
+ user_parts_by_index [index ] = _messages . UserPromptPart ( content = tool_user_content )
933
939
934
- return _messages .FunctionToolResultEvent (tool_part )
940
+ return _messages .FunctionToolResultEvent (tool_part , content = tool_user_content )
935
941
936
942
if tool_manager .should_call_sequentially (tool_calls ):
937
943
for index , call in enumerate (tool_calls ):
@@ -971,7 +977,7 @@ async def _call_tool(
971
977
tool_manager : ToolManager [DepsT ],
972
978
tool_call : _messages .ToolCallPart ,
973
979
tool_call_result : DeferredToolResult | None ,
974
- ) -> tuple [_messages .ToolReturnPart | _messages .RetryPromptPart , _messages .UserPromptPart | None ]:
980
+ ) -> tuple [_messages .ToolReturnPart | _messages .RetryPromptPart , str | Sequence [ _messages .UserContent ] | None ]:
975
981
try :
976
982
if tool_call_result is None :
977
983
tool_result = await tool_manager .handle_call (tool_call )
@@ -1048,14 +1054,7 @@ async def _call_tool(
1048
1054
metadata = tool_return .metadata ,
1049
1055
)
1050
1056
1051
- user_part : _messages .UserPromptPart | None = None
1052
- if tool_return .content :
1053
- user_part = _messages .UserPromptPart (
1054
- content = tool_return .content ,
1055
- part_kind = 'user-prompt' ,
1056
- )
1057
-
1058
- return return_part , user_part
1057
+ return return_part , tool_return .content or None
1059
1058
1060
1059
1061
1060
@dataclasses .dataclass
0 commit comments