재구성 AX Agent 설정과 채팅 UI를 Claude형 구조로
Some checks failed
Release Gate / gate (push) Has been cancelled

This commit is contained in:
2026-04-04 17:48:51 +09:00
parent 90c2f15e96
commit a027ea4f9a
6000 changed files with 11532 additions and 94063 deletions

View File

@@ -178,6 +178,7 @@ public class SettingsViewModel : INotifyPropertyChanged
private string _vllmEndpoint = "";
private string _vllmApiKey = "";
private string _vllmModel = "";
private bool _vllmAllowInsecureTls;
private string _geminiApiKey = "";
private string _geminiModel = "gemini-2.5-flash";
private string _sigmoidApiKey = "";
@@ -215,6 +216,7 @@ public class SettingsViewModel : INotifyPropertyChanged
public string VllmEndpoint { get => _vllmEndpoint; set { _vllmEndpoint = value; OnPropertyChanged(); } }
public string VllmApiKey { get => _vllmApiKey; set { _vllmApiKey = value; OnPropertyChanged(); } }
public string VllmModel { get => _vllmModel; set { _vllmModel = value; OnPropertyChanged(); } }
public bool VllmAllowInsecureTls { get => _vllmAllowInsecureTls; set { _vllmAllowInsecureTls = value; OnPropertyChanged(); } }
// ── Gemini 설정 ──
public string GeminiApiKey { get => _geminiApiKey; set { _geminiApiKey = value; OnPropertyChanged(); } }
@@ -285,6 +287,20 @@ public class SettingsViewModel : INotifyPropertyChanged
set { _maxRetryOnError = Math.Clamp(value, 0, 10); OnPropertyChanged(); }
}
private bool _enableProactiveContextCompact;
public bool EnableProactiveContextCompact
{
get => _enableProactiveContextCompact;
set { _enableProactiveContextCompact = value; OnPropertyChanged(); }
}
private int _contextCompactTriggerPercent;
public int ContextCompactTriggerPercent
{
get => _contextCompactTriggerPercent;
set { _contextCompactTriggerPercent = Math.Clamp(value, 50, 95); OnPropertyChanged(); }
}
private string _agentLogLevel;
public string AgentLogLevel
{
@@ -292,6 +308,22 @@ public class SettingsViewModel : INotifyPropertyChanged
set { _agentLogLevel = value; OnPropertyChanged(); }
}
private string _agentUiExpressionLevel = "balanced";
public string AgentUiExpressionLevel
{
get => _agentUiExpressionLevel;
set
{
_agentUiExpressionLevel = (value ?? "balanced").Trim().ToLowerInvariant() switch
{
"rich" => "rich",
"simple" => "simple",
_ => "balanced",
};
OnPropertyChanged();
}
}
private int _planDiffSeverityMediumCount = 2;
public int PlanDiffSeverityMediumCount
{
@@ -479,6 +511,20 @@ public class SettingsViewModel : INotifyPropertyChanged
set { _slashPopupPageSize = Math.Clamp(value, 3, 10); OnPropertyChanged(); }
}
private int _maxFavoriteSlashCommands = 10;
public int MaxFavoriteSlashCommands
{
get => _maxFavoriteSlashCommands;
set { _maxFavoriteSlashCommands = Math.Clamp(value, 1, 30); OnPropertyChanged(); }
}
private int _maxRecentSlashCommands = 20;
public int MaxRecentSlashCommands
{
get => _maxRecentSlashCommands;
set { _maxRecentSlashCommands = Math.Clamp(value, 5, 50); OnPropertyChanged(); }
}
// ── 드래그&드롭 AI ──
private bool _enableDragDropAiActions = true;
public bool EnableDragDropAiActions
@@ -988,7 +1034,17 @@ public class SettingsViewModel : INotifyPropertyChanged
_autoPreview = llm.AutoPreview;
_maxAgentIterations = llm.MaxAgentIterations > 0 ? llm.MaxAgentIterations : 25;
_maxRetryOnError = llm.MaxRetryOnError > 0 ? llm.MaxRetryOnError : 3;
_enableProactiveContextCompact = llm.EnableProactiveContextCompact;
_contextCompactTriggerPercent = llm.ContextCompactTriggerPercent > 0
? Math.Clamp(llm.ContextCompactTriggerPercent, 50, 95)
: 80;
_agentLogLevel = llm.AgentLogLevel;
_agentUiExpressionLevel = (llm.AgentUiExpressionLevel ?? "balanced").Trim().ToLowerInvariant() switch
{
"rich" => "rich",
"simple" => "simple",
_ => "balanced",
};
_planDiffSeverityMediumCount = llm.PlanDiffSeverityMediumCount > 0 ? Math.Clamp(llm.PlanDiffSeverityMediumCount, 1, 20) : 2;
_planDiffSeverityHighCount = llm.PlanDiffSeverityHighCount > 0 ? Math.Clamp(llm.PlanDiffSeverityHighCount, 1, 30) : 5;
_planDiffSeverityMediumRatioPercent = llm.PlanDiffSeverityMediumRatioPercent > 0 ? Math.Clamp(llm.PlanDiffSeverityMediumRatioPercent, 1, 100) : 25;
@@ -1013,6 +1069,8 @@ public class SettingsViewModel : INotifyPropertyChanged
_enableForkSkillDelegationEnforcement = llm.EnableForkSkillDelegationEnforcement;
_skillsFolderPath = llm.SkillsFolderPath;
_slashPopupPageSize = llm.SlashPopupPageSize > 0 ? Math.Clamp(llm.SlashPopupPageSize, 3, 10) : 6;
_maxFavoriteSlashCommands = llm.MaxFavoriteSlashCommands > 0 ? Math.Clamp(llm.MaxFavoriteSlashCommands, 1, 30) : 10;
_maxRecentSlashCommands = llm.MaxRecentSlashCommands > 0 ? Math.Clamp(llm.MaxRecentSlashCommands, 5, 50) : 20;
_enableDragDropAiActions = llm.EnableDragDropAiActions;
_dragDropAutoSend = llm.DragDropAutoSend;
_enableCodeReview = llm.Code.EnableCodeReview;
@@ -1033,6 +1091,7 @@ public class SettingsViewModel : INotifyPropertyChanged
_ollamaModel = llm.OllamaModel;
_vllmEndpoint = llm.VllmEndpoint;
_vllmModel = llm.VllmModel;
_vllmAllowInsecureTls = llm.VllmAllowInsecureTls;
_geminiModel = string.IsNullOrEmpty(llm.GeminiModel) ? "gemini-2.5-flash" : llm.GeminiModel;
_sigmoidModel = string.IsNullOrEmpty(llm.ClaudeModel) ? "cl" + "aude-sonnet-4-6" : llm.ClaudeModel;
@@ -1087,6 +1146,7 @@ public class SettingsViewModel : INotifyPropertyChanged
Service = rm.Service,
Endpoint = rm.Endpoint,
ApiKey = rm.ApiKey,
AllowInsecureTls = rm.AllowInsecureTls,
AuthType = rm.AuthType ?? "bearer",
Cp4dUrl = rm.Cp4dUrl ?? "",
Cp4dUsername = rm.Cp4dUsername ?? "",
@@ -1412,7 +1472,10 @@ public class SettingsViewModel : INotifyPropertyChanged
s.Llm.AutoPreview = _autoPreview;
s.Llm.MaxAgentIterations = _maxAgentIterations;
s.Llm.MaxRetryOnError = _maxRetryOnError;
s.Llm.EnableProactiveContextCompact = _enableProactiveContextCompact;
s.Llm.ContextCompactTriggerPercent = _contextCompactTriggerPercent;
s.Llm.AgentLogLevel = _agentLogLevel;
s.Llm.AgentUiExpressionLevel = _agentUiExpressionLevel;
s.Llm.PlanDiffSeverityMediumCount = _planDiffSeverityMediumCount;
s.Llm.PlanDiffSeverityHighCount = _planDiffSeverityHighCount;
s.Llm.PlanDiffSeverityMediumRatioPercent = _planDiffSeverityMediumRatioPercent;
@@ -1437,6 +1500,8 @@ public class SettingsViewModel : INotifyPropertyChanged
s.Llm.EnableForkSkillDelegationEnforcement = _enableForkSkillDelegationEnforcement;
s.Llm.SkillsFolderPath = _skillsFolderPath;
s.Llm.SlashPopupPageSize = _slashPopupPageSize;
s.Llm.MaxFavoriteSlashCommands = _maxFavoriteSlashCommands;
s.Llm.MaxRecentSlashCommands = _maxRecentSlashCommands;
s.Llm.EnableDragDropAiActions = _enableDragDropAiActions;
s.Llm.DragDropAutoSend = _dragDropAutoSend;
s.Llm.Code.EnableCodeReview = _enableCodeReview;
@@ -1457,6 +1522,7 @@ public class SettingsViewModel : INotifyPropertyChanged
s.Llm.OllamaModel = _ollamaModel;
s.Llm.VllmEndpoint = _vllmEndpoint;
s.Llm.VllmModel = _vllmModel;
s.Llm.VllmAllowInsecureTls = _vllmAllowInsecureTls;
s.Llm.GeminiModel = _geminiModel;
s.Llm.ClaudeModel = _sigmoidModel;
s.Llm.GeminiApiKey = _geminiApiKey;
@@ -1502,6 +1568,7 @@ public class SettingsViewModel : INotifyPropertyChanged
Service = rm.Service,
Endpoint = rm.Endpoint,
ApiKey = rm.ApiKey,
AllowInsecureTls = rm.AllowInsecureTls,
AuthType = rm.AuthType ?? "bearer",
Cp4dUrl = rm.Cp4dUrl ?? "",
Cp4dUsername = rm.Cp4dUsername ?? "",
@@ -1820,6 +1887,7 @@ public class RegisteredModelRow : INotifyPropertyChanged
private string _service = "ollama";
private string _endpoint = "";
private string _apiKey = "";
private bool _allowInsecureTls;
/// <summary>UI 표시용 별칭</summary>
public string Alias
@@ -1856,6 +1924,13 @@ public class RegisteredModelRow : INotifyPropertyChanged
set { _apiKey = value; OnPropertyChanged(); }
}
/// <summary>이 모델 요청 시 TLS 인증서 검증을 생략합니다.</summary>
public bool AllowInsecureTls
{
get => _allowInsecureTls;
set { _allowInsecureTls = value; OnPropertyChanged(); }
}
// ── CP4D 인증 필드 ──────────────────────────────────────────────────
private string _authType = "bearer";