권한 코어를 claude-code 기준으로 재구성하고 slash palette 상태 분리를 시작\n\n- Default/AcceptEdits/Plan/BypassPermissions/DontAsk/Deny 권한 모드를 추가하고 기존 Ask/Auto 호환을 유지\n- deny 우선 패턴 규칙, allow/override, 글로벌 모드 순서의 권한 해석 체계를 정리\n- file_write/file_edit/file_manage와 process/build_run/test_loop/snippet_runner/spawn_agent 계열을 권한 클래스별로 분리\n- AcceptEdits는 파일 편집 도구 자동 허용, process 계열은 계속 확인하도록 조정\n- Plan은 쓰기 도구를 차단하고 읽기 중심 진행이 되도록 보강\n- BypassPermissions와 DontAsk는 권한 확인을 생략하는 경로로 정규화\n- AX Agent 권한 팝업, 상단 배너, slash 명령 결과를 새 권한 체계에 맞게 정리\n- /permissions, /allowed-tools, /sandbox-toggle 사용법과 상태 출력을 갱신\n- ChatWindow의 slash palette 상태를 전용 SlashPaletteState로 분리해 이후 composer 개편 기반을 마련\n- AppState, 설정 모델, 테스트를 새 권한 체계에 맞게 갱신\n- dotnet build 경고 0 / 오류 0, dotnet test 436 통과를 확인
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
This commit is contained in:
@@ -241,6 +241,10 @@ public class LauncherSettings
|
||||
/// <summary>독 바 마지막 위치 Y. -1이면 하단.</summary>
|
||||
[JsonPropertyName("dockBarTop")]
|
||||
public double DockBarTop { get; set; } = -1;
|
||||
|
||||
/// <summary>모니터별 독 바 위치. key=디바이스명, value=[left, top]</summary>
|
||||
[JsonPropertyName("monitorDockPositions")]
|
||||
public Dictionary<string, List<double>> MonitorDockPositions { get; set; } = new(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -591,14 +595,15 @@ public class LlmSettings
|
||||
|
||||
/// <summary>
|
||||
/// 파일 접근 권한 수준.
|
||||
/// Ask = 매번 확인 | Plan = 계획/승인 중심 | Auto = 자동 허용 | Deny = 차단
|
||||
/// Default = 매번 확인 | AcceptEdits = 파일 편집 자동 허용 | Plan = 계획/승인 중심
|
||||
/// BypassPermissions = 모든 확인 생략 | DontAsk = 권한 질문 없이 진행 | Deny = 읽기 전용
|
||||
/// </summary>
|
||||
[JsonPropertyName("filePermission")]
|
||||
public string FilePermission { get; set; } = "Ask";
|
||||
public string FilePermission { get; set; } = "Default";
|
||||
|
||||
/// <summary>Cowork/Code 탭의 기본 파일 접근 권한. 탭 전환 시 자동 적용.</summary>
|
||||
[JsonPropertyName("defaultAgentPermission")]
|
||||
public string DefaultAgentPermission { get; set; } = "Ask";
|
||||
public string DefaultAgentPermission { get; set; } = "Default";
|
||||
|
||||
// ── 서비스별 독립 설정 ──────────────────────────────────────
|
||||
[JsonPropertyName("ollamaEndpoint")] public string OllamaEndpoint { get; set; } = "http://localhost:11434";
|
||||
@@ -608,6 +613,7 @@ public class LlmSettings
|
||||
[JsonPropertyName("vllmEndpoint")] public string VllmEndpoint { get; set; } = "";
|
||||
[JsonPropertyName("vllmApiKey")] public string VllmApiKey { get; set; } = "";
|
||||
[JsonPropertyName("vllmModel")] public string VllmModel { get; set; } = "";
|
||||
[JsonPropertyName("vllmAllowInsecureTls")] public bool VllmAllowInsecureTls { get; set; } = false;
|
||||
|
||||
[JsonPropertyName("geminiApiKey")] public string GeminiApiKey { get; set; } = "";
|
||||
[JsonPropertyName("geminiModel")] public string GeminiModel { get; set; } = "gemini-2.5-flash";
|
||||
@@ -636,6 +642,14 @@ public class LlmSettings
|
||||
[JsonPropertyName("maxAgentIterations")]
|
||||
public int MaxAgentIterations { get; set; } = 25;
|
||||
|
||||
/// <summary>컨텍스트 사전 압축 활성화 여부.</summary>
|
||||
[JsonPropertyName("enableProactiveContextCompact")]
|
||||
public bool EnableProactiveContextCompact { get; set; } = true;
|
||||
|
||||
/// <summary>컨텍스트 압축 시작 임계치(%). 최대 토큰의 몇 %에서 압축 시작할지.</summary>
|
||||
[JsonPropertyName("contextCompactTriggerPercent")]
|
||||
public int ContextCompactTriggerPercent { get; set; } = 80;
|
||||
|
||||
/// <summary>도구 실패 시 최대 재시도 횟수 (Self-Reflection).</summary>
|
||||
[JsonPropertyName("maxRetryOnError")]
|
||||
public int MaxRetryOnError { get; set; } = 3;
|
||||
@@ -648,6 +662,10 @@ public class LlmSettings
|
||||
[JsonPropertyName("agentLogLevel")]
|
||||
public string AgentLogLevel { get; set; } = "simple";
|
||||
|
||||
/// <summary>AX Agent UI 표현 수준. rich | balanced | simple</summary>
|
||||
[JsonPropertyName("agentUiExpressionLevel")]
|
||||
public string AgentUiExpressionLevel { get; set; } = "balanced";
|
||||
|
||||
/// <summary>계획 diff 심각도 중간 기준: 변경 개수 임계값.</summary>
|
||||
[JsonPropertyName("planDiffSeverityMediumCount")]
|
||||
public int PlanDiffSeverityMediumCount { get; set; } = 2;
|
||||
@@ -699,9 +717,9 @@ public class LlmSettings
|
||||
[JsonPropertyName("lastActiveTab")]
|
||||
public string LastActiveTab { get; set; } = "Chat";
|
||||
|
||||
/// <summary>폴더 데이터 활용 모드. active(적극) | passive(소극) | none(미활용)</summary>
|
||||
/// <summary>폴더 데이터 활용 모드. none(미활용) | passive(소극) | active(적극)</summary>
|
||||
[JsonPropertyName("folderDataUsage")]
|
||||
public string FolderDataUsage { get; set; } = "active";
|
||||
public string FolderDataUsage { get; set; } = "none";
|
||||
|
||||
/// <summary>
|
||||
/// 에이전트 의사결정 수준. AI가 중요한 작업 전에 사용자 확인을 요청하는 빈도.
|
||||
@@ -795,6 +813,10 @@ public class LlmSettings
|
||||
[JsonPropertyName("enableChatRainbowGlow")]
|
||||
public bool EnableChatRainbowGlow { get; set; } = false;
|
||||
|
||||
/// <summary>AX Agent 전용 테마. system | light | dark</summary>
|
||||
[JsonPropertyName("agentTheme")]
|
||||
public string AgentTheme { get; set; } = "system";
|
||||
|
||||
// ─── 알림 ──────────────────────────────────────────────────────────
|
||||
|
||||
/// <summary>에이전트 작업 완료 시 시스템 알림 표시 여부. (Cowork/Code 공통)</summary>
|
||||
@@ -866,7 +888,7 @@ public class LlmSettings
|
||||
public List<string> DisabledTools { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 도구별 실행 권한 오버라이드. 키: 도구 이름, 값: "ask" | "auto" | "deny".
|
||||
/// 도구별 실행 권한 오버라이드. 키: 도구 이름 또는 tool@pattern, 값: 권한 모드.
|
||||
/// 여기에 없는 도구는 전역 FilePermission 설정을 따릅니다.
|
||||
/// </summary>
|
||||
[JsonPropertyName("toolPermissions")]
|
||||
@@ -1125,6 +1147,10 @@ public class RegisteredModel
|
||||
[JsonPropertyName("apiKey")]
|
||||
public string ApiKey { get; set; } = "";
|
||||
|
||||
/// <summary>이 모델에 한해 TLS 인증서 검증을 생략합니다(vLLM 사내 인증서 예외 대응).</summary>
|
||||
[JsonPropertyName("allowInsecureTls")]
|
||||
public bool AllowInsecureTls { get; set; } = false;
|
||||
|
||||
// ── CP4D (IBM Cloud Pak for Data) 인증 ──────────────────────────────
|
||||
|
||||
/// <summary>인증 방식. bearer (기본) | cp4d</summary>
|
||||
|
||||
Reference in New Issue
Block a user