/**
 * Brain profile lifecycle 의 pure helpers — sidebarProvider 의 add/edit/delete
 * 흐름에서 modal UI 와 config 쓰기를 제외한 *데이터 변환* 만 격리.
 *
 * 현재 한 함수만 있지만 향후 edit 의 "변경된 필드만 머지", delete 의 "next active
 * 선택 규칙" 등 다른 pure transform 도 같은 모듈에 모인다.
 */

/**
 * 사용자 입력 이름으로부터 slug-style 아이디 후보를 만들고, 기존 목록과 충돌하지
 * 않는 가장 짧은 이름을 반환. slug 가 빈 문자열이면 `'brain'` 으로 fallback.
 * 충돌 시 `-2`, `-3` … suffix 를 붙여 회피.
 */
export function generateUniqueBrainId(name: string, existingProfiles: ReadonlyArray<{ id: string }>): string {
    const idBase = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '') || 'brain';
    if (!existingProfiles.some((p) => p.id === idBase)) return idBase;
    let suffix = 2;
    let id = `${idBase}-${suffix}`;
    while (existingProfiles.some((p) => p.id === id)) {
        suffix += 1;
        id = `${idBase}-${suffix}`;
    }
    return id;
}
