Files
AX-Copilot-Codex/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs
lacvet 666416ff65
Some checks failed
Release Gate / gate (push) Has been cancelled
권한 팝업 순서/즉시반영 정렬: Deny 상단 배치와 탭 기본값 강제
- 권한 팝업 핵심 영역에 Deny(활용하지 않음) 포함, 고급은 DontAsk만 유지

- LoadConversationSettings가 대화 권한 미설정 시 탭 기본권한(Chat=Deny, Cowork/Code=DefaultAgentPermission) 즉시 적용

- PermissionModePresentationCatalog 한글 라벨/설명 문자열 정리

- README/DEVELOPMENT 이력(2026-04-04 15:52 KST) 동기화
2026-04-04 15:52:58 +09:00

60 lines
2.1 KiB
C#

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<PermissionModePresentation> 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];
}
}