/** * Normalizes a display name into a valid namespace identifier: lowercase * snake_case, only `[a-z0-9_]`, no leading/trailing underscores. Produces * strings that are safe to use as TypeScript/tool-name prefixes. */ export function slugifyNamespace(input: string): string { return input .trim() .toLowerCase() .replace(/[^a-z0-9_]+/g, "_") .replace(/^_+|_+$/g, ""); } /** * Sanitizes namespace input as the user types without removing intentional * underscores that are still in-progress at the field boundaries. */ export function normalizeNamespaceInput(input: string): string { return input.toLowerCase().replace(/[^a-z0-9_]+/g, "_"); }