refactor: explicit kind=='final' check in async-tool routing (Grok)
Mirrors the same change applied to AWSNovaSonicLLMService and OpenAIRealtimeLLMService in #4441: replaces the implicit "final happens last" pattern in _process_completed_function_calls with an explicit `if async_payload.kind == "final":` block, plus a trailing defensive `continue` so async-tool messages with an unrecognized kind don't fall through to the regular tool-result handling block.
This commit is contained in:
@@ -942,12 +942,19 @@ class GrokRealtimeLLMService(LLMService[GrokRealtimeLLMAdapter]):
|
|||||||
error_msg="Grok Realtime does not support streamed async tool results.",
|
error_msg="Grok Realtime does not support streamed async tool results.",
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
# kind == "final": deliver via the formal tool-result channel
|
if async_payload.kind == "final":
|
||||||
# — same path as a synchronous tool result, just delayed.
|
# Deliver via the formal tool-result channel — same path
|
||||||
if send_new_results:
|
# as a synchronous tool result, just delayed.
|
||||||
sent_new_result = True
|
if send_new_results:
|
||||||
await self._send_tool_result(async_payload.tool_call_id, async_payload.result)
|
sent_new_result = True
|
||||||
self._completed_tool_calls.add(async_payload.tool_call_id)
|
await self._send_tool_result(
|
||||||
|
async_payload.tool_call_id, async_payload.result
|
||||||
|
)
|
||||||
|
self._completed_tool_calls.add(async_payload.tool_call_id)
|
||||||
|
continue
|
||||||
|
# Defensive: any async-tool message must not fall through
|
||||||
|
# to the regular tool-result block below, even if it
|
||||||
|
# carries a kind we don't recognize.
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Look for newly-completed "regular" (as opposed to async-tool) results
|
# Look for newly-completed "regular" (as opposed to async-tool) results
|
||||||
|
|||||||
Reference in New Issue
Block a user