From 56ebe613dbf009fe688d6af0e3d75a625e5aeabf Mon Sep 17 00:00:00 2001 From: Naiyuan Qing <145280634+NevilleQingNY@users.noreply.github.com> Date: Mon, 9 Feb 2026 07:30:35 +0800 Subject: [PATCH] fix(hooks): handle agent_error events in useGatewayChat Desktop path already forwards agent_error to chat.setError() via use-local-chat.ts, but the Web/Gateway path was missing this handling. Add agent_error interception in the StreamAction branch so Web clients render LLM errors the same way Desktop does. Co-Authored-By: Claude Opus 4.6 --- packages/hooks/src/use-gateway-chat.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/hooks/src/use-gateway-chat.ts b/packages/hooks/src/use-gateway-chat.ts index 4613bbfb..1871de28 100644 --- a/packages/hooks/src/use-gateway-chat.ts +++ b/packages/hooks/src/use-gateway-chat.ts @@ -50,6 +50,12 @@ export function useGatewayChat({ client, hubId, agentId }: UseGatewayChatOptions client.onMessage((msg) => { if (msg.action === StreamAction) { const payload = msg.payload as StreamPayload; + if (payload.event.type === "agent_error") { + const errorMsg = (payload.event as { error?: string }).error ?? "Unknown error"; + chat.setError({ code: "AGENT_ERROR", message: errorMsg }); + setIsLoading(false); + return; + } chat.handleStream(payload); if (payload.event.type === "message_start") setIsLoading(true); if (payload.event.type === "message_end") setIsLoading(false);