refactor(search): fold zai-search into the glm provider

The separate zai-search entry showed "No connections" on the web search
page because credentials live on the `glm` connection, not on it. Every
other provider that does both chat and search (antigravity, kimi, xai,
gemini) declares webSearch on the provider itself, so do the same here.

- glm gains serviceKinds ["llm", "webSearch"] and the MCP searchConfig
- the request builder / normalizer move from "zai-search" to "glm"
- drop the zai-search registry entry and its svg logo, which also
  removes the only need for svg logo support in getProviderIconSrc

ollama-search keeps its own entry and credentialFallback: its search
endpoint is unrelated to the ollama chat transport.
This commit is contained in:
decolua
2026-08-28 16:12:04 +07:00
parent 5a86f6a8d2
commit 9dbdca0e5e
7 changed files with 22 additions and 55 deletions

View File

@@ -394,12 +394,12 @@ function buildOllamaSearchRequest(config, params) {
};
}
// ── Z.AI Coding plan MCP web_search_prime ─────────────────────────────────
// ── GLM Coding plan MCP web_search_prime ──────────────────────────────────
// POST https://api.z.ai/api/mcp/web_search_prime/mcp
// JSON-RPC envelope: { jsonrpc, id, method: "tools/call",
// params: { name: "web_search_prime", arguments: { search_query, count } } }
// Response: { result: { content: [{ type: "text", text: "<json>" }] } }
function buildZaiSearchRequest(config, params) {
function buildGlmSearchRequest(config, params) {
const body = {
jsonrpc: "2.0",
id: `9r-${Date.now()}`,
@@ -437,7 +437,7 @@ const BUILDERS = {
"searxng": buildSearxngRequest,
"xquik": buildXquikRequest,
"ollama-search": buildOllamaSearchRequest,
"zai-search": buildZaiSearchRequest,
"glm": buildGlmSearchRequest,
};
/**

View File

@@ -257,7 +257,7 @@ function normalizeOllamaSearch(data, _query, _searchType) {
return { results, totalResults: results.length };
}
function normalizeZaiSearch(data, _query, _searchType) {
function normalizeGlmSearch(data, _query, _searchType) {
const now = new Date().toISOString();
// MCP envelope: { result: { content: [{ type: "text", text: "<json>" }] } }
let payload = data;
@@ -270,7 +270,7 @@ function normalizeZaiSearch(data, _query, _searchType) {
: Array.isArray(payload) ? payload
: [];
const results = items.map((item, idx) =>
makeResult("zai-search", {
makeResult("glm", {
title: item.title,
url: item.link || item.url,
snippet: item.content || "",
@@ -295,7 +295,7 @@ const NORMALIZERS = {
"searxng": normalizeSearxng,
"xquik": normalizeXquik,
"ollama-search": normalizeOllamaSearch,
"zai-search": normalizeZaiSearch,
"glm": normalizeGlmSearch,
};
/**