mirror of https://github.com/openclaw/openclaw.git
56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
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";
|
|
import type { PluginWebSearchProviderEntry } from "./types.js";
|
|
|
|
type BundledWebSearchProviderEntry = PluginWebSearchProviderEntry & { pluginId: string };
|
|
|
|
let bundledWebSearchProvidersCache: BundledWebSearchProviderEntry[] | null = null;
|
|
|
|
function loadBundledWebSearchProviders(): BundledWebSearchProviderEntry[] {
|
|
if (!bundledWebSearchProvidersCache) {
|
|
bundledWebSearchProvidersCache = loadBundledCapabilityRuntimeRegistry({
|
|
pluginIds: BUNDLED_WEB_SEARCH_PLUGIN_IDS,
|
|
pluginSdkResolution: "dist",
|
|
}).webSearchProviders.map((entry) => ({
|
|
pluginId: entry.pluginId,
|
|
...entry.provider,
|
|
}));
|
|
}
|
|
return bundledWebSearchProvidersCache;
|
|
}
|
|
|
|
export function resolveBundledWebSearchPluginIds(params: {
|
|
config?: PluginLoadOptions["config"];
|
|
workspaceDir?: string;
|
|
env?: PluginLoadOptions["env"];
|
|
}): string[] {
|
|
const bundledWebSearchPluginIdSet = new Set<string>(BUNDLED_WEB_SEARCH_PLUGIN_IDS);
|
|
return loadPluginManifestRegistry({
|
|
config: params.config,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
})
|
|
.plugins.filter(
|
|
(plugin) => plugin.origin === "bundled" && bundledWebSearchPluginIdSet.has(plugin.id),
|
|
)
|
|
.map((plugin) => plugin.id)
|
|
.toSorted((left, right) => left.localeCompare(right));
|
|
}
|
|
|
|
export function listBundledWebSearchPluginIds(): string[] {
|
|
return [...BUNDLED_WEB_SEARCH_PLUGIN_IDS];
|
|
}
|
|
|
|
export function listBundledWebSearchProviders(): PluginWebSearchProviderEntry[] {
|
|
return loadBundledWebSearchProviders();
|
|
}
|
|
|
|
export function resolveBundledWebSearchPluginId(
|
|
providerId: string | undefined,
|
|
): string | undefined {
|
|
return resolveBundledWebSearchPluginIdFromMap(providerId);
|
|
}
|