/**
 * 技能名称（folderName）规范化工具，对应后端 SkillNameNormalizer。
 *
 * 规范：kebab-case，仅允许 [a-z0-9-]，不得包含大写/空格/下划线/中文；
 * 不得以短横线开头/结尾；不得有连续短横线。
 *
 * 设计目的：技能名称同时是物理目录名与 Hermes 查找标识符，必须稳定。
 * 可读性由 displayName 承载。
 */

/**
 * 尽力规范化：转小写，空格/下划线→短横线，合并连续短横线，去首尾短横线，
 * 最后剔除非 [a-z0-9-] 字符（如中文）。
 */
export function normalizeKebabCase(input) {
  if (!input) return ''
  let s = String(input).trim().toLowerCase()
  s = s.replace(/[\s_]+/g, '-')
  s = s.replace(/-+/g, '-')
  s = s.replace(/^-+|-+$/g, '')
  // 剔除非 ASCII 字母数字与短横线（中文、特殊符号等）
  s = s.replace(/[^a-z0-9-]/g, '')
  return s
}

/** 判断是否为合法 kebab-case 技能名称 */
export function isValidKebabCase(input) {
  return !!input && /^[a-z0-9]+(-[a-z0-9]+)*$/.test(input) && input.length <= 64
}
