UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

46 lines (45 loc) 2.29 kB
import { u as resolvePluginNodeCapabilityTtlMs } from "./plugin-node-capability-CQtFV9Fn.js"; import { t as findMatchingPluginHttpRoutes } from "./route-match-DlTv7M6i.js"; //#region src/gateway/server/plugins-http/route-capability.ts function hasNodeCapabilityRoute(route) { return Boolean(route.nodeCapability?.surface?.trim()); } function resolvePluginNodeCapabilityRouteSurface(route) { const surface = route.nodeCapability.surface.trim(); const owner = route.pluginId?.trim() || route.source?.trim(); return { ...route.nodeCapability, surface, ...owner ? { scopeKey: `${owner}:${surface}` } : {} }; } /** Lists all node-capability routes matching the already canonicalized path context. */ function findMatchingPluginNodeCapabilityRoutes(registry, context) { return findMatchingPluginHttpRoutes(registry, context).filter(hasNodeCapabilityRoute).map((route) => Object.assign({}, route, { nodeCapability: resolvePluginNodeCapabilityRouteSurface(route) })); } /** Returns the highest-priority node-capability route for a plugin HTTP path. */ function findMatchingPluginNodeCapabilityRoute(registry, context) { return findMatchingPluginNodeCapabilityRoutes(registry, context)[0]; } /** Lists node-capability surface names advertised by the active plugin registry. */ function listPluginNodeCapabilitySurfaces(registry) { return listPluginNodeCapabilities(registry).map((entry) => entry.surface); } /** Lists unique node-capability surfaces, preferring the shortest TTL per surface. */ function listPluginNodeCapabilities(registry) { const surfaces = /* @__PURE__ */ new Map(); for (const route of registry.httpRoutes ?? []) { const surface = route.nodeCapability?.surface?.trim(); if (surface) { const next = resolvePluginNodeCapabilityRouteSurface(route); const existing = surfaces.get(surface); if (!existing || resolveTtlMs(next) < resolveTtlMs(existing)) surfaces.set(surface, next); } } return [...surfaces.values()].toSorted((a, b) => a.surface.localeCompare(b.surface)); } function resolveTtlMs(surface) { return resolvePluginNodeCapabilityTtlMs(surface); } //#endregion export { listPluginNodeCapabilitySurfaces as i, findMatchingPluginNodeCapabilityRoutes as n, listPluginNodeCapabilities as r, findMatchingPluginNodeCapabilityRoute as t };