lacvet
a635f24399
[Phase 17-F+G] 권한 시스템 고도화 + 멀티파일 Diff 추적기
Phase 17-F — 권한 시스템 고도화:
AgentLoopService.Permissions.cs (신규, 97줄):
- GetPermissionService(): PermissionsConfig → PermissionDecisionService 빌드·캐시
Chain: DenyRuleHandler → AllowRuleHandler → AcceptEditsHandler → PlanModeHandler → BypassHandler
- EvaluateToolPermission(): Deny=즉시차단 / Allow=CheckDecisionRequired 스킵 / Ask=기존 흐름
- CheckMcpToolAllowed(): MCP 서버·도구 단위 권한 확인
- PermissionRuleEntry(설정) → PermissionRule(런타임) 자동 변환
Phase 17-G — 멀티파일 Diff 추적기:
AgentLoopService.DiffTracker.cs (신규, 99줄):
- DiffViewModel 프로퍼티: MultiFileDiffViewModel 지연 초기화, ChatWindow UI 바인딩용
- ExtractFilePathFromInput(): 도구 입력 JSON에서 path/file_path 추출
- CaptureOriginalFileContent(): 쓰기 도구 실행 전 원본 내용 캡처 (신규=빈 문자열)
- TrackFileModificationForDiff(): 성공 후 디스크에서 신규 내용 읽어 DiffViewModel에 기록
- ResetDiffTracker(): 세션 시작 시 Diff 목록 초기화
AgentLoopService.Execution.cs (편집):
- toolName17 변수 도입: call.ToolName ?? "" — CS8604 nullable 경고 전면 제거 (0개)
- Phase 17-G2: EmitEvent(ToolCall)에 위험도 태그 [⚠ 높음]/[• 보통] 접미사 추가
- Phase 17-F: Deny→즉시차단+DENIED 메시지, Allow→skipLegacyDecisionCheck=true
- Phase 17-G: Pre-실행 diffFilePath+diffOriginalContent 캡처, Post-성공 TrackFileModificationForDiff 호출
AgentLoopService.cs (편집):
- 세션 시작 시 ResetDiffTracker() 호출 (이전 세션 Diff 항목 초기화)
AppSettings.LlmSettings.cs (편집):
- EnableDiffTracker 설정 추가 (기본 true, json: "enableDiffTracker")
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 01:10:09 +09:00
..
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-04 01:10:09 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-04 00:39:25 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00
2026-04-03 18:23:52 +09:00