From 3ac26b45935013d7d2ca52eb886f4e843f77090a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 14 Jul 2026 06:17:36 -0700 Subject: [PATCH] refactor(tavily): remove internal export seams (#107540) --- extensions/tavily/src/config.ts | 6 +++--- extensions/tavily/src/tavily-tools.test.ts | 17 ++++------------- scripts/deadcode-exports.baseline.mjs | 3 --- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/extensions/tavily/src/config.ts b/extensions/tavily/src/config.ts index 39631d5f594..6fc86fd0924 100644 --- a/extensions/tavily/src/config.ts +++ b/extensions/tavily/src/config.ts @@ -8,8 +8,8 @@ import { import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; export const DEFAULT_TAVILY_BASE_URL = "https://api.tavily.com"; -export const DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS = 30; -export const DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS = 60; +const DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS = 30; +const DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS = 60; type TavilySearchConfig = | { @@ -25,7 +25,7 @@ type PluginEntryConfig = { }; }; -export function resolveTavilySearchConfig(cfg?: OpenClawConfig): TavilySearchConfig { +function resolveTavilySearchConfig(cfg?: OpenClawConfig): TavilySearchConfig { const pluginConfig = cfg?.plugins?.entries?.tavily?.config as PluginEntryConfig; const pluginWebSearch = pluginConfig?.webSearch; if (pluginWebSearch && typeof pluginWebSearch === "object" && !Array.isArray(pluginWebSearch)) { diff --git a/extensions/tavily/src/tavily-tools.test.ts b/extensions/tavily/src/tavily-tools.test.ts index 1cc0eb80a6c..80eea5f480f 100644 --- a/extensions/tavily/src/tavily-tools.test.ts +++ b/extensions/tavily/src/tavily-tools.test.ts @@ -5,12 +5,9 @@ import { createTestPluginApi } from "openclaw/plugin-sdk/plugin-test-api"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { DEFAULT_TAVILY_BASE_URL, - DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS, - DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS, resolveTavilyApiKey, resolveTavilyBaseUrl, resolveTavilyExtractTimeoutSeconds, - resolveTavilySearchConfig, resolveTavilySearchTimeoutSeconds, } from "./config.js"; @@ -408,10 +405,6 @@ describe("tavily tools", () => { }, } as OpenClawConfig; - expect(resolveTavilySearchConfig(cfg)).toEqual({ - apiKey: "plugin-key", - baseUrl: "https://plugin.tavily.test", - }); expect(resolveTavilyApiKey(cfg)).toBe("plugin-key"); expect(resolveTavilyBaseUrl(cfg)).toBe("https://plugin.tavily.test"); }); @@ -423,8 +416,8 @@ describe("tavily tools", () => { expect(resolveTavilyApiKey()).toBe("env-key"); expect(resolveTavilyBaseUrl()).toBe("https://env.tavily.test"); expect(resolveTavilyBaseUrl({} as OpenClawConfig)).not.toBe(DEFAULT_TAVILY_BASE_URL); - expect(resolveTavilySearchTimeoutSeconds()).toBe(DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS); - expect(resolveTavilyExtractTimeoutSeconds()).toBe(DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS); + expect(resolveTavilySearchTimeoutSeconds()).toBe(30); + expect(resolveTavilyExtractTimeoutSeconds()).toBe(60); }); it("accepts positive numeric timeout overrides and floors them", () => { @@ -432,10 +425,8 @@ describe("tavily tools", () => { expect(resolveTavilyExtractTimeoutSeconds(42.7)).toBe(42); expect(resolveTavilySearchTimeoutSeconds(0.5)).toBe(1); expect(resolveTavilyExtractTimeoutSeconds(0.5)).toBe(1); - expect(resolveTavilySearchTimeoutSeconds(0)).toBe(DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS); - expect(resolveTavilyExtractTimeoutSeconds(Number.NaN)).toBe( - DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS, - ); + expect(resolveTavilySearchTimeoutSeconds(0)).toBe(30); + expect(resolveTavilyExtractTimeoutSeconds(Number.NaN)).toBe(60); }); it("appends endpoints to reverse-proxy base urls", () => { diff --git a/scripts/deadcode-exports.baseline.mjs b/scripts/deadcode-exports.baseline.mjs index b2e26fddd7c..f2356544c64 100644 --- a/scripts/deadcode-exports.baseline.mjs +++ b/scripts/deadcode-exports.baseline.mjs @@ -180,9 +180,6 @@ export const KNIP_UNUSED_EXPORT_BASELINE = [ "extensions/synology-chat/src/channel.ts: createSynologyChatPlugin", "extensions/synology-chat/src/client.ts: fetchChatUsers (synologyClient)", "extensions/synology-chat/src/webhook-handler.ts: clearSynologyWebhookRateLimiterStateForTest", - "extensions/tavily/src/config.ts: DEFAULT_TAVILY_EXTRACT_TIMEOUT_SECONDS", - "extensions/tavily/src/config.ts: DEFAULT_TAVILY_SEARCH_TIMEOUT_SECONDS", - "extensions/tavily/src/config.ts: resolveTavilySearchConfig", "extensions/telegram/src/account-throttler.ts: clearAccountThrottlersForTest", "extensions/telegram/src/account-throttler.ts: createTelegramAccountThrottler", "extensions/telegram/src/bot-info-cache.ts: setTelegramBotInfoCacheStoreForTest",