mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-28 18:33:37 +00:00
refactor: route bundled capability providers through plugin runtime
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
import { buildFalImageGenerationProvider } from "../extensions/fal/image-generation-provider.js";
|
||||
import { buildGoogleImageGenerationProvider } from "../extensions/google/image-generation-provider.js";
|
||||
import {
|
||||
buildMinimaxImageGenerationProvider,
|
||||
buildMinimaxPortalImageGenerationProvider,
|
||||
} from "../extensions/minimax/image-generation-provider.js";
|
||||
import { buildOpenAIImageGenerationProvider } from "../extensions/openai/image-generation-provider.js";
|
||||
import type { ImageGenerationProviderPlugin } from "./plugins/types.js";
|
||||
|
||||
type BundledImageGenerationProviderEntry = {
|
||||
pluginId: string;
|
||||
provider: ImageGenerationProviderPlugin;
|
||||
};
|
||||
|
||||
export function listBundledImageGenerationProviderEntries(): BundledImageGenerationProviderEntry[] {
|
||||
return [
|
||||
{ pluginId: "fal", provider: buildFalImageGenerationProvider() },
|
||||
{ pluginId: "google", provider: buildGoogleImageGenerationProvider() },
|
||||
{ pluginId: "minimax", provider: buildMinimaxImageGenerationProvider() },
|
||||
{ pluginId: "minimax", provider: buildMinimaxPortalImageGenerationProvider() },
|
||||
{ pluginId: "openai", provider: buildOpenAIImageGenerationProvider() },
|
||||
];
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
import { createBraveWebSearchProvider } from "../extensions/brave/web-search-provider.js";
|
||||
import { createDuckDuckGoWebSearchProvider } from "../extensions/duckduckgo/web-search-provider.js";
|
||||
import { createExaWebSearchProvider } from "../extensions/exa/web-search-provider.js";
|
||||
import { createFirecrawlWebSearchProvider } from "../extensions/firecrawl/web-search-provider.js";
|
||||
import { createGeminiWebSearchProvider } from "../extensions/google/web-search-provider.js";
|
||||
import { createKimiWebSearchProvider } from "../extensions/moonshot/web-search-provider.js";
|
||||
import { createPerplexityWebSearchProvider } from "../extensions/perplexity/web-search-provider.js";
|
||||
import { createTavilyWebSearchProvider } from "../extensions/tavily/web-search-provider.js";
|
||||
import { createXaiWebSearchProvider } from "../extensions/xai/web-search.js";
|
||||
import type { PluginWebSearchProviderEntry } from "./plugins/types.js";
|
||||
|
||||
export function listBundledWebSearchProviderEntries(): PluginWebSearchProviderEntry[] {
|
||||
return [
|
||||
{ pluginId: "brave", ...createBraveWebSearchProvider() },
|
||||
{ pluginId: "duckduckgo", ...createDuckDuckGoWebSearchProvider() },
|
||||
{ pluginId: "exa", ...createExaWebSearchProvider() },
|
||||
{ pluginId: "firecrawl", ...createFirecrawlWebSearchProvider() },
|
||||
{ pluginId: "google", ...createGeminiWebSearchProvider() },
|
||||
{ pluginId: "moonshot", ...createKimiWebSearchProvider() },
|
||||
{ pluginId: "perplexity", ...createPerplexityWebSearchProvider() },
|
||||
{ pluginId: "tavily", ...createTavilyWebSearchProvider() },
|
||||
{ pluginId: "xai", ...createXaiWebSearchProvider() },
|
||||
];
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { listBundledWebSearchProviderEntries } from "../bundled-web-search.entries.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { loadBundledCapabilityRuntimeRegistry } from "./bundled-capability-runtime.js";
|
||||
import { BUNDLED_WEB_SEARCH_PLUGIN_IDS } from "./bundled-web-search-ids.js";
|
||||
import { resolveBundledWebSearchPluginId } from "./bundled-web-search-provider-ids.js";
|
||||
import {
|
||||
@@ -105,7 +105,13 @@ describe("bundled web search metadata", () => {
|
||||
|
||||
it("keeps bundled provider metadata aligned with bundled plugin contracts", async () => {
|
||||
const fastPathProviders = listBundledWebSearchProviders();
|
||||
const bundledProviderEntries = listBundledWebSearchProviderEntries();
|
||||
const bundledProviderEntries = loadBundledCapabilityRuntimeRegistry({
|
||||
pluginIds: BUNDLED_WEB_SEARCH_PLUGIN_IDS,
|
||||
pluginSdkResolution: "dist",
|
||||
}).webSearchProviders.map((entry) => ({
|
||||
pluginId: entry.pluginId,
|
||||
...entry.provider,
|
||||
}));
|
||||
|
||||
expect(
|
||||
sortComparableEntries(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { listBundledWebSearchProviderEntries } from "../bundled-web-search.entries.js";
|
||||
import { BUNDLED_WEB_SEARCH_PLUGIN_IDS } from "./bundled-capability-metadata.js";
|
||||
import { loadBundledCapabilityRuntimeRegistry } from "./bundled-capability-runtime.js";
|
||||
import { resolveBundledWebSearchPluginId as resolveBundledWebSearchPluginIdFromMap } from "./bundled-web-search-provider-ids.js";
|
||||
import type { PluginLoadOptions } from "./loader.js";
|
||||
import { loadPluginManifestRegistry } from "./manifest-registry.js";
|
||||
@@ -11,7 +11,13 @@ let bundledWebSearchProvidersCache: BundledWebSearchProviderEntry[] | null = nul
|
||||
|
||||
function loadBundledWebSearchProviders(): BundledWebSearchProviderEntry[] {
|
||||
if (!bundledWebSearchProvidersCache) {
|
||||
bundledWebSearchProvidersCache = listBundledWebSearchProviderEntries();
|
||||
bundledWebSearchProvidersCache = loadBundledCapabilityRuntimeRegistry({
|
||||
pluginIds: BUNDLED_WEB_SEARCH_PLUGIN_IDS,
|
||||
pluginSdkResolution: "dist",
|
||||
}).webSearchProviders.map((entry) => ({
|
||||
pluginId: entry.pluginId,
|
||||
...entry.provider,
|
||||
}));
|
||||
}
|
||||
return bundledWebSearchProvidersCache;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { listBundledImageGenerationProviderEntries } from "../../bundled-image-generation-providers.js";
|
||||
import {
|
||||
BUNDLED_IMAGE_GENERATION_PLUGIN_IDS,
|
||||
BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS,
|
||||
@@ -226,10 +225,16 @@ function loadMediaUnderstandingProviderContractRegistry(): MediaUnderstandingPro
|
||||
|
||||
function loadImageGenerationProviderContractRegistry(): ImageGenerationProviderContractEntry[] {
|
||||
if (!imageGenerationProviderContractRegistryCache) {
|
||||
imageGenerationProviderContractRegistryCache =
|
||||
listBundledImageGenerationProviderEntries().filter((entry) =>
|
||||
BUNDLED_IMAGE_GENERATION_PLUGIN_IDS.includes(entry.pluginId),
|
||||
);
|
||||
const registry = loadBundledCapabilityRuntimeRegistry({
|
||||
pluginIds: BUNDLED_IMAGE_GENERATION_PLUGIN_IDS,
|
||||
pluginSdkResolution: "dist",
|
||||
});
|
||||
imageGenerationProviderContractRegistryCache = registry.imageGenerationProviders.map(
|
||||
(entry) => ({
|
||||
pluginId: entry.pluginId,
|
||||
provider: entry.provider,
|
||||
}),
|
||||
);
|
||||
}
|
||||
return imageGenerationProviderContractRegistryCache;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user