UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

47 lines (46 loc) 2.26 kB
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js"; import { f as isValidIPv4 } from "./net-DbNPs6Xm.js"; import { t as normalizeControlUiBasePath } from "./control-ui-shared-BiO6QP54.js"; import { t as resolveAdvertisedLanHostCore } from "./advertised-lan-host-Dp_V4Fun.js"; import { n as pickBestEffortPrimaryLanIPv4, t as inspectBestEffortPrimaryTailnetIPv4 } from "./network-discovery-display-C19jxNns.js"; //#region src/gateway/control-ui-links.ts /** Resolve the advertised HTTP and websocket URLs for the Control UI. */ function resolveControlUiLinks(params) { const port = params.port; const bind = params.bind ?? "loopback"; const customBindHost = params.customBindHost?.trim(); const advertisedLanHost = normalizeOptionalString(params.advertisedLanHost); const { tailnetIPv4 } = inspectBestEffortPrimaryTailnetIPv4(); const host = (() => { if (bind === "custom" && customBindHost && isValidIPv4(customBindHost)) return customBindHost; if (bind === "tailnet" && tailnetIPv4) return tailnetIPv4 ?? "127.0.0.1"; if (bind === "lan") return advertisedLanHost ?? pickBestEffortPrimaryLanIPv4() ?? "127.0.0.1"; return "127.0.0.1"; })(); const basePath = normalizeControlUiBasePath(params.basePath); const uiPath = basePath ? `${basePath}/` : "/"; const wsPath = basePath ? basePath : ""; const httpScheme = params.tlsEnabled === true ? "https" : "http"; const wsScheme = params.tlsEnabled === true ? "wss" : "ws"; return { httpUrl: `${httpScheme}://${host}:${port}${uiPath}`, wsUrl: `${wsScheme}://${host}:${port}${wsPath}` }; } /** Resolve Control UI URLs meant for display to nearby devices. */ async function resolveAdvertisedControlUiLinks(params) { const advertisedLanHost = params.bind === "lan" ? await resolveAdvertisedLanHostCore().catch(() => null) : null; return resolveControlUiLinks({ ...params, advertisedLanHost }); } /** Resolve Control UI URLs for co-located readiness probes and health checks. */ function resolveLocalControlUiProbeLinks(params) { return resolveControlUiLinks({ ...params, bind: params.bind === "lan" ? "loopback" : params.bind }); } //#endregion export { resolveControlUiLinks as n, resolveLocalControlUiProbeLinks as r, resolveAdvertisedControlUiLinks as t };