namespace AxCopilot.Services.Agent; internal sealed record PermissionModePresentation( string Mode, string Icon, string Title, string Description, string ColorHex); internal static class PermissionModePresentationCatalog { public static readonly IReadOnlyList Ordered = new[] { new PermissionModePresentation( PermissionModeCatalog.Deny, "\uE711", "활용하지 않음", "파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.", "#107C10"), new PermissionModePresentation( PermissionModeCatalog.Default, "\uE8D7", "소극 활용", "변경 전 확인하고, 필요한 경우에만 파일 접근을 진행합니다.", "#2563EB"), new PermissionModePresentation( PermissionModeCatalog.AcceptEdits, "\uE73E", "적극 활용", "파일 편집 도구를 자동 승인하고 명령 실행은 계속 확인합니다.", "#107C10"), new PermissionModePresentation( PermissionModeCatalog.Plan, "\uE7C3", "계획 중심", "쓰기 전 계획과 승인 흐름을 우선합니다.", "#4338CA"), new PermissionModePresentation( PermissionModeCatalog.BypassPermissions, "\uE814", "완전 자동", "권한 확인을 대부분 생략합니다. 민감한 작업은 주의하세요.", "#B45309"), new PermissionModePresentation( PermissionModeCatalog.DontAsk, "\uE8A5", "질문 없이 진행", "권한 질문 없이 진행합니다. 자동 실행 범위를 점검하세요.", "#B91C1C"), }; public static PermissionModePresentation Resolve(string? mode) { var normalized = PermissionModeCatalog.NormalizeGlobalMode(mode); return Ordered.FirstOrDefault(item => string.Equals(item.Mode, normalized, StringComparison.OrdinalIgnoreCase)) ?? Ordered[1]; } }