UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

33 lines (32 loc) 1.78 kB
import { a as isAvatarImageDataUrl, i as isAvatarHttpUrl, u as looksLikeAvatarPath } from "./avatar-policy-CLA5a0j8.js"; //#region src/gateway/control-ui-shared.ts const CONTROL_UI_AVATAR_PREFIX = "/avatar"; /** Normalizes a Control UI base path to either "" or a leading-slash path without trailing slash. */ function normalizeControlUiBasePath(basePath) { if (!basePath) return ""; let normalized = basePath.trim(); if (!normalized) return ""; if (!normalized.startsWith("/")) normalized = `/${normalized}`; if (normalized === "/") return ""; if (normalized.endsWith("/")) normalized = normalized.slice(0, -1); return normalized; } /** Builds the gateway-served avatar URL for an agent under the provided base path. */ function buildControlUiAvatarUrl(basePath, agentId) { return basePath ? `${basePath}${CONTROL_UI_AVATAR_PREFIX}/${agentId}` : `${CONTROL_UI_AVATAR_PREFIX}/${agentId}`; } /** Resolves the assistant avatar URL that Control UI should render for the active agent. */ function resolveAssistantAvatarUrl(params) { const avatar = params.avatar?.trim(); if (!avatar) return; if (isAvatarHttpUrl(avatar) || isAvatarImageDataUrl(avatar)) return avatar; const basePath = normalizeControlUiBasePath(params.basePath); const baseAvatarPrefix = basePath ? `${basePath}${CONTROL_UI_AVATAR_PREFIX}/` : `${CONTROL_UI_AVATAR_PREFIX}/`; if (basePath && avatar.startsWith(`/avatar/`)) return `${basePath}${avatar}`; if (avatar.startsWith(baseAvatarPrefix)) return avatar; if (!params.agentId) return avatar; if (looksLikeAvatarPath(avatar)) return buildControlUiAvatarUrl(basePath, params.agentId); return avatar; } //#endregion export { resolveAssistantAvatarUrl as i, buildControlUiAvatarUrl as n, normalizeControlUiBasePath as r, CONTROL_UI_AVATAR_PREFIX as t };