From 07f43dbfb12de900db32852b7170f7333a048d6a Mon Sep 17 00:00:00 2001 From: 770120041 <770120041@qq.com> Date: Mon, 9 Mar 2026 15:26:59 -0400 Subject: [PATCH] fix(web-search): fix empty snippets in Brave LLM Context mode Brave's /res/v1/llm/context endpoint returns snippets as plain strings, not { text: string } objects. The existing code applied .map(s => s.text) which accessed .text on strings (returning undefined), causing all snippets to be filtered out. Update the type definition and snippet extraction to handle plain strings directly. Fixes #41370 --- src/agents/tools/web-search.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/agents/tools/web-search.ts b/src/agents/tools/web-search.ts index 47c5a5abc94..d402d9922e6 100644 --- a/src/agents/tools/web-search.ts +++ b/src/agents/tools/web-search.ts @@ -272,8 +272,7 @@ type BraveSearchResponse = { }; }; -type BraveLlmContextSnippet = { text: string }; -type BraveLlmContextResult = { url: string; title: string; snippets: BraveLlmContextSnippet[] }; +type BraveLlmContextResult = { url: string; title: string; snippets: string[] }; type BraveLlmContextResponse = { grounding: { generic?: BraveLlmContextResult[] }; sources?: { url?: string; hostname?: string; date?: string }[]; @@ -1481,7 +1480,7 @@ async function runBraveLlmContextSearch(params: { const mapped = genericResults.map((entry) => ({ url: entry.url ?? "", title: entry.title ?? "", - snippets: (entry.snippets ?? []).map((s) => s.text ?? "").filter(Boolean), + snippets: (entry.snippets ?? []).filter((s) => typeof s === "string" && s.length > 0), siteName: resolveSiteName(entry.url) || undefined, }));