11
11
12
12
from ag_ui .core import (
13
13
EventType , TextMessageStartEvent , TextMessageContentEvent , TextMessageEndEvent ,
14
- ToolCallStartEvent , ToolCallArgsEvent , ToolCallEndEvent , StateDeltaEvent , CustomEvent
14
+ ToolCallStartEvent , ToolCallArgsEvent , ToolCallEndEvent , ToolCallResultEvent ,
15
+ StateDeltaEvent , CustomEvent
15
16
)
16
17
from google .adk .events import Event as ADKEvent
17
18
from ag_ui_adk .event_translator import EventTranslator
@@ -128,11 +129,14 @@ async def test_translate_function_responses_handling(self, translator, mock_adk_
128
129
129
130
@pytest .mark .asyncio
130
131
async def test_translate_function_response_with_call_tool_result_payload (self , translator ):
131
- """Ensure CallToolResult payloads are serialized without errors ."""
132
+ """Ensure complex CallToolResult payloads are serialized correctly ."""
132
133
133
134
@dataclass
134
135
class TextContent :
135
- text : str
136
+ type : str = "text"
137
+ text : str = ""
138
+ annotations : list | None = None
139
+ meta : dict | None = None
136
140
137
141
@dataclass
138
142
class CallToolResult :
@@ -149,15 +153,15 @@ class CallToolResult:
149
153
]
150
154
151
155
payload = CallToolResult (
152
- meta = { "source" : "test" } ,
156
+ meta = None ,
153
157
structuredContent = None ,
154
158
isError = False ,
155
159
content = [TextContent (text = text ) for text in repeated_text_entries ],
156
160
)
157
161
158
162
function_response = SimpleNamespace (
159
163
id = "tool-structured-1" ,
160
- response = asdict ( payload ) ,
164
+ response = { "result" : payload } ,
161
165
)
162
166
163
167
events = []
@@ -169,9 +173,9 @@ class CallToolResult:
169
173
assert isinstance (event , ToolCallResultEvent )
170
174
171
175
content = json .loads (event .content )
172
- assert content ["isError" ] is False
173
- assert content ["structuredContent" ] is None
174
- assert [item ["text" ] for item in content ["content" ]] == repeated_text_entries
176
+ assert content ["result" ][ " isError" ] is False
177
+ assert content ["result" ][ " structuredContent" ] is None
178
+ assert [item ["text" ] for item in content ["result" ][ " content" ]] == repeated_text_entries
175
179
176
180
@pytest .mark .asyncio
177
181
async def test_translate_state_delta_event (self , translator , mock_adk_event ):
@@ -835,4 +839,4 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
835
839
836
840
# Should reset streaming state
837
841
assert translator ._is_streaming is False
838
- assert translator ._streaming_message_id is None
842
+ assert translator ._streaming_message_id is None
0 commit comments