권한 모드 별칭 정합 보강: slash 입력과 카탈로그 정규화 일치
Some checks failed
Release Gate / gate (push) Has been cancelled

- PermissionModeCatalog에 none/passive/active/planning/fullauto/silent 별칭 추가

- ChatWindow /permissions,/allowed-tools 액션 파서에 동일 별칭 반영

- PermissionModeCatalogTests 회귀 케이스 추가 및 빌드/테스트/문서 이력 동기화(2026-04-04 14:57 KST)
This commit is contained in:
2026-04-04 14:58:05 +09:00
parent 5957921dea
commit 68d49b8835
5 changed files with 55 additions and 1 deletions

View File

@@ -222,7 +222,7 @@ public class MyHandler : IActionHandler
### v0.7.3 — AX Agent 권한 코어 재구성 + 입력 계층 정리
업데이트: 2026-04-04 14:55 (KST)
업데이트: 2026-04-04 14:57 (KST)
| 분류 | 내용 |
|------|------|
@@ -287,6 +287,7 @@ public class MyHandler : IActionHandler
| 입력 하단/모델 선택 컴팩트 정렬 | 입력 박스·모델 선택 버튼·인라인 설정 패널·전송 버튼 크기를 축소해 Codex형 컴포저 밀도로 정렬 |
| 로직 안정화 회귀 보강 | `ContextCondenserTests``LlmRuntimeOverrideTests`를 보강해 compact 실동작과 vLLM 암호화 API키/SSL 우회 해석 규칙을 회귀 검증 |
| 권한 패턴 구문 호환성 보강 | 권한 규칙 파서를 `tool@pattern``tool|pattern`, `tool(pattern)`도 해석하도록 확장하고 deny→allow 우선순위 회귀를 보강 |
| 권한 모드 별칭 정합 보강 | `/permissions`, `/allowed-tools`에서 `none/passive/active/planning/fullauto/silent` 별칭을 지원하고 카탈로그 정규화와 일치시킴 |
| Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 |
| 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 |
| 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed |

View File

@@ -3530,3 +3530,26 @@ else:
### 3) 품질 게이트
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj --filter "FullyQualifiedName~OperationModePolicyTests|FullyQualifiedName~PermissionModeCatalogTests|FullyQualifiedName~PermissionModePresentationCatalogTests"` 통과 (45 passed, 0 failed).
## 2026-04-04 추가 진행 기록 (연속 실행 37차: 권한 모드 별칭 정합 보강)
업데이트: 2026-04-04 14:57 (KST)
### 1) 권한 모드 정규화 별칭 확장
- `PermissionModeCatalog.NormalizeGlobalMode`에 별칭 추가:
- `none`, `disabled` → `Deny`
- `passive` → `Default`
- `active` → `AcceptEdits`
- `planning` → `Plan`
- `fullauto` → `BypassPermissions`
- `silent` → `DontAsk`
### 2) Slash 권한 명령 별칭 동기화
- `ChatWindow.TryApplyPermissionModeFromAction`에도 동일 별칭을 반영해 `/permissions`, `/allowed-tools` 입력과 내부 정규화 규칙을 일치시킴.
### 3) 회귀 테스트 보강
- `PermissionModeCatalogTests`에 신규 별칭 입력 케이스를 추가해 정규화 회귀 검증 강화.
### 4) 품질 게이트
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj --filter "FullyQualifiedName~PermissionModeCatalogTests|FullyQualifiedName~OperationModePolicyTests|FullyQualifiedName~ChatWindowSlashPolicyTests"` 통과 (88 passed, 0 failed).

View File

@@ -10,11 +10,17 @@ public class PermissionModeCatalogTests
[InlineData(null, PermissionModeCatalog.Default)]
[InlineData("", PermissionModeCatalog.Default)]
[InlineData("ask", PermissionModeCatalog.Default)]
[InlineData("passive", PermissionModeCatalog.Default)]
[InlineData("auto", PermissionModeCatalog.AcceptEdits)]
[InlineData("active", PermissionModeCatalog.AcceptEdits)]
[InlineData("accept", PermissionModeCatalog.AcceptEdits)]
[InlineData("plan", PermissionModeCatalog.Plan)]
[InlineData("bypass", PermissionModeCatalog.BypassPermissions)]
[InlineData("fullauto", PermissionModeCatalog.BypassPermissions)]
[InlineData("dontask", PermissionModeCatalog.DontAsk)]
[InlineData("silent", PermissionModeCatalog.DontAsk)]
[InlineData("none", PermissionModeCatalog.Deny)]
[InlineData("disabled", PermissionModeCatalog.Deny)]
[InlineData("deny", PermissionModeCatalog.Deny)]
[InlineData("unknown", PermissionModeCatalog.Default)]
public void NormalizeGlobalMode_ShouldMapExpectedModes(string? input, string expected)

View File

@@ -38,15 +38,34 @@ public static class PermissionModeCatalog
{
"default" => Default,
"ask" => Ask,
"passive" => Default,
"소극활용" => Default,
"소극 활용" => Default,
"acceptedits" => AcceptEdits,
"accept" => AcceptEdits,
"auto" => Auto,
"active" => AcceptEdits,
"적극활용" => AcceptEdits,
"적극 활용" => AcceptEdits,
"plan" => Plan,
"planning" => Plan,
"계획중심" => Plan,
"계획 중심" => Plan,
"bypasspermissions" => BypassPermissions,
"bypass" => BypassPermissions,
"fullauto" => BypassPermissions,
"완전자동" => BypassPermissions,
"완전 자동" => BypassPermissions,
"dontask" => DontAsk,
"don't ask" => DontAsk,
"silent" => DontAsk,
"질문없이진행" => DontAsk,
"질문 없이 진행" => DontAsk,
"allow" => AcceptEdits,
"none" => Deny,
"disabled" => Deny,
"활용하지않음" => Deny,
"활용하지 않음" => Deny,
"deny" => Deny,
_ => Default,
};

View File

@@ -2273,9 +2273,14 @@ public partial class ChatWindow : Window
"active" => PermissionModeCatalog.AcceptEdits,
"deny" => PermissionModeCatalog.Deny,
"plan" => PermissionModeCatalog.Plan,
"planning" => PermissionModeCatalog.Plan,
"bypass" => PermissionModeCatalog.BypassPermissions,
"bypasspermissions" => PermissionModeCatalog.BypassPermissions,
"fullauto" => PermissionModeCatalog.BypassPermissions,
"dontask" => PermissionModeCatalog.DontAsk,
"silent" => PermissionModeCatalog.DontAsk,
"none" => PermissionModeCatalog.Deny,
"disabled" => PermissionModeCatalog.Deny,
_ => null,
};