From 00602ddc4024b627275e0efd864b8d74e448f755 Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat Date: Tue, 2 Sep 2025 19:36:37 +0800 Subject: [PATCH] refactor(AiSdkToChunkAdapter): streamline web search result handling - Replaced the switch statement with a source mapping object for improved readability and maintainability. - Enhanced handling of various web search providers by mapping them to their respective sources. - Simplified the logic for processing web search results in the onChunk method. --- .../src/aiCore/chunk/AiSdkToChunkAdapter.ts | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts b/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts index d441f228c1..183e469cdd 100644 --- a/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts +++ b/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts @@ -194,26 +194,27 @@ export class AiSdkToChunkAdapter { }) } else if (final.webSearchResults.length) { const providerName = Object.keys(providerMetadata || {})[0] - switch (providerName) { - case WebSearchSource.OPENAI: - this.onChunk({ - type: ChunkType.LLM_WEB_SEARCH_COMPLETE, - llm_web_search: { - results: final.webSearchResults, - source: WebSearchSource.OPENAI_RESPONSE - } - }) - break - default: - this.onChunk({ - type: ChunkType.LLM_WEB_SEARCH_COMPLETE, - llm_web_search: { - results: final.webSearchResults, - source: WebSearchSource.AISDK - } - }) - break + const sourceMap: Record = { + [WebSearchSource.OPENAI]: WebSearchSource.OPENAI_RESPONSE, + [WebSearchSource.ANTHROPIC]: WebSearchSource.ANTHROPIC, + [WebSearchSource.OPENROUTER]: WebSearchSource.OPENROUTER, + [WebSearchSource.GEMINI]: WebSearchSource.GEMINI, + [WebSearchSource.PERPLEXITY]: WebSearchSource.PERPLEXITY, + [WebSearchSource.QWEN]: WebSearchSource.QWEN, + [WebSearchSource.HUNYUAN]: WebSearchSource.HUNYUAN, + [WebSearchSource.ZHIPU]: WebSearchSource.ZHIPU, + [WebSearchSource.GROK]: WebSearchSource.GROK, + [WebSearchSource.WEBSEARCH]: WebSearchSource.WEBSEARCH } + const source = sourceMap[providerName] || WebSearchSource.AISDK + + this.onChunk({ + type: ChunkType.LLM_WEB_SEARCH_COMPLETE, + llm_web_search: { + results: final.webSearchResults, + source + } + }) } if (finishReason === 'tool-calls') { this.onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })