UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

22 lines (21 loc) • 1.07 kB
//#region src/agents/worktrees/name.ts const WORKTREE_NAME_MAX_LENGTH = 64; const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{0,63}$/; function validateName(name) { if (!NAME_PATTERN.test(name)) throw new Error("worktree name must match [a-z0-9][a-z0-9-]{0,63}"); return name; } function appendNameOrdinal(name, ordinal) { const suffix = `-${ordinal}`; return `${name.slice(0, WORKTREE_NAME_MAX_LENGTH - suffix.length).replace(/-+$/g, "")}${suffix}`; } /** Converts a short human-readable title into a valid managed-worktree name. */ function slugifyWorktreeTitle(title) { const slug = title.normalize("NFKD").replace(/\p{M}/gu, "").toLowerCase().replace(/&/g, " and ").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, ""); if (slug.length <= WORKTREE_NAME_MAX_LENGTH) return slug || void 0; const truncated = slug.slice(0, WORKTREE_NAME_MAX_LENGTH); const wordBoundary = truncated.lastIndexOf("-"); return wordBoundary > 0 ? truncated.slice(0, wordBoundary) : truncated; } //#endregion export { slugifyWorktreeTitle as n, validateName as r, appendNameOrdinal as t };