openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
81 lines (80 loc) • 2.29 kB
JavaScript
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 };