UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

29 lines (28 loc) 1.29 kB
import { s as searchClawHubPackages } from "./clawhub-packages-DzRBkN2F.js"; //#region src/plugins/catalog-search.ts const INSTALLABLE_PLUGIN_FAMILIES = ["code-plugin", "bundle-plugin"]; const DEFAULT_PLUGIN_SEARCH_LIMIT = 20; const MAX_PLUGIN_SEARCH_LIMIT = 100; function resolveSearchLimit(limit) { if (!Number.isFinite(limit) || !limit || limit <= 0) return DEFAULT_PLUGIN_SEARCH_LIMIT; return Math.min(Math.max(Math.trunc(limit), 1), MAX_PLUGIN_SEARCH_LIMIT); } function mergePackageSearchResults(groups, limit) { const byName = /* @__PURE__ */ new Map(); for (const entry of groups.flat()) { const existing = byName.get(entry.package.name); if (!existing || entry.score > existing.score) byName.set(entry.package.name, entry); } return [...byName.values()].toSorted((left, right) => right.score - left.score).slice(0, limit); } /** Searches installable ClawHub plugin families and merges duplicate packages by best score. */ async function searchInstallablePluginPackages(params) { const limit = resolveSearchLimit(params.limit); return mergePackageSearchResults(await Promise.all(INSTALLABLE_PLUGIN_FAMILIES.map((family) => searchClawHubPackages({ query: params.query, family, limit }))), limit); } //#endregion export { searchInstallablePluginPackages as t };