UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

81 lines (80 loc) 2.29 kB
import { s as normalizeNullableString } from "./string-coerce-CIXf7egm.js"; //#region packages/session-url-contract/src/grammar.ts const DEFAULT_MAIN_KEY = "main"; const SHORT_SESSION_REF_RE = /^(?:.*-)?([0-9a-f]{8,32})$/iu; const FIXED_RESERVED_SESSION_RESTS = /* @__PURE__ */ new Set([ "main", "global", "boot", "sessions" ]); const SESSION_SLUG_MAX_LENGTH = 48; function controlUiSessionSlug(displayName) { return ((displayName ?? "").toLowerCase().replace(/[^a-z0-9]+/gu, "-").replace(/^-+|-+$/gu, "").match(/^.*[g-z][a-z0-9]*/u)?.[0] ?? "").slice(0, SESSION_SLUG_MAX_LENGTH).replace(/-+$/gu, ""); } function normalizeControlUiBasePath(basePath) { const trimmed = basePath?.trim().replace(/^\/+|\/+$/gu, "") ?? ""; return trimmed ? `/${trimmed}` : ""; } function isReservedSessionRest(rest, mainKey) { const normalized = rest.toLowerCase(); const configuredMainKey = normalizeNullableString(mainKey)?.toLowerCase() ?? "main"; return FIXED_RESERVED_SESSION_RESTS.has(normalized) || normalized === configuredMainKey; } function parseShortSessionRef(sessionRef) { const shortId = sessionRef.match(SHORT_SESSION_REF_RE)?.[1]?.toLowerCase(); if (!shortId) return null; const slugHint = sessionRef.slice(0, sessionRef.length - shortId.length).replace(/-+$/u, ""); return slugHint ? { shortId, slugHint } : { shortId }; } //#endregion //#region packages/session-url-contract/src/share.ts const CONTROL_UI_RESERVED_ROUTE_SEGMENTS = Object.freeze([ "activity", "agents", "ai-agents", "appearance", "approve", "apps", "ask", "automation", "automations", "channels", "chat", "communications", "config", "cron", "custodian", "dashboard", "dashboards", "debug", "focus", "infrastructure", "lobsterdex", "logs", "mcp", "meetings", "memory-import", "model-providers", "model-setup", "new", "nodes", "plugin", "portals", "profile", "sessions", "settings", "skills", "tasks", "usage", "workboard", "worktrees" ]); function isControlUiReservedRouteSegment(value) { return CONTROL_UI_RESERVED_ROUTE_SEGMENTS.includes(value.toLowerCase()); } //#endregion export { normalizeControlUiBasePath as a, isReservedSessionRest as i, DEFAULT_MAIN_KEY as n, parseShortSessionRef as o, controlUiSessionSlug as r, isControlUiReservedRouteSegment as t };