빌드 부산물 추적 해제와 AX Agent 대기열·composer UI 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- .gitignore에 bin/obj/publish 및 IDE/OS/비밀정보 패턴 추가 - Git 인덱스에서 publish 및 src 하위 bin/obj 빌드 부산물 추적을 해제하여 저장소 노이즈를 정리 - DraftQueue를 실행 대기/최근 결과 섹션과 상태 요약 pill 구조로 재정리 - composer 상단 모델/컨텍스트/프리셋 줄과 하단 작업 위치 칩 UI를 더 평평한 시각 언어로 통일 - 워크스페이스·브랜치·워크트리 패널에 공통 row 및 요약 strip을 적용해 panel UX를 정돈 - README.md와 docs/DEVELOPMENT.md, docs/AGENT_ROADMAP.md, AGENTS.md 이력을 갱신 검증 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ - 경고 0개, 오류 0개
This commit is contained in:
@@ -17,12 +17,10 @@ public static class PermissionModeCatalog
|
||||
|
||||
public static readonly IReadOnlyList<string> UserSelectableModes = new[]
|
||||
{
|
||||
Deny,
|
||||
Default,
|
||||
AcceptEdits,
|
||||
Plan,
|
||||
BypassPermissions,
|
||||
DontAsk,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@@ -56,11 +54,11 @@ public static class PermissionModeCatalog
|
||||
"fullauto" => BypassPermissions,
|
||||
"완전자동" => BypassPermissions,
|
||||
"완전 자동" => BypassPermissions,
|
||||
"dontask" => DontAsk,
|
||||
"don't ask" => DontAsk,
|
||||
"silent" => DontAsk,
|
||||
"질문없이진행" => DontAsk,
|
||||
"질문 없이 진행" => DontAsk,
|
||||
"dontask" => BypassPermissions,
|
||||
"don't ask" => BypassPermissions,
|
||||
"silent" => BypassPermissions,
|
||||
"질문없이진행" => BypassPermissions,
|
||||
"질문 없이 진행" => BypassPermissions,
|
||||
"allow" => AcceptEdits,
|
||||
"none" => Deny,
|
||||
"disabled" => Deny,
|
||||
@@ -115,7 +113,6 @@ public static class PermissionModeCatalog
|
||||
var normalized = NormalizeGlobalMode(mode);
|
||||
return !IsAcceptEdits(normalized)
|
||||
&& !IsBypassPermissions(normalized)
|
||||
&& !IsDontAsk(normalized)
|
||||
&& !string.Equals(normalized, Deny, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
@@ -128,7 +125,6 @@ public static class PermissionModeCatalog
|
||||
AcceptEdits => "편집 자동 승인",
|
||||
Plan => "계획 모드",
|
||||
BypassPermissions => "권한 건너뛰기",
|
||||
DontAsk => "질문 없이 진행",
|
||||
Deny => "읽기 전용",
|
||||
_ => normalized,
|
||||
};
|
||||
|
||||
@@ -11,12 +11,6 @@ internal static class PermissionModePresentationCatalog
|
||||
{
|
||||
public static readonly IReadOnlyList<PermissionModePresentation> Ordered = new[]
|
||||
{
|
||||
new PermissionModePresentation(
|
||||
PermissionModeCatalog.Deny,
|
||||
"\uE711",
|
||||
"읽기 전용",
|
||||
"파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.",
|
||||
"#107C10"),
|
||||
new PermissionModePresentation(
|
||||
PermissionModeCatalog.Default,
|
||||
"\uE8D7",
|
||||
@@ -39,14 +33,8 @@ internal static class PermissionModePresentationCatalog
|
||||
PermissionModeCatalog.BypassPermissions,
|
||||
"\uE814",
|
||||
"권한 건너뛰기",
|
||||
"모든 권한을 허용합니다.",
|
||||
"파일 편집과 명령 실행까지 모두 자동 허용합니다.",
|
||||
"#B45309"),
|
||||
new PermissionModePresentation(
|
||||
PermissionModeCatalog.DontAsk,
|
||||
"\uE8A5",
|
||||
"질문 없이 진행",
|
||||
"권한 질문 없이 진행합니다. 자동 실행 범위를 점검하세요.",
|
||||
"#B91C1C"),
|
||||
};
|
||||
|
||||
public static PermissionModePresentation Resolve(string? mode)
|
||||
@@ -54,6 +42,6 @@ internal static class PermissionModePresentationCatalog
|
||||
var normalized = PermissionModeCatalog.NormalizeGlobalMode(mode);
|
||||
return Ordered.FirstOrDefault(item =>
|
||||
string.Equals(item.Mode, normalized, StringComparison.OrdinalIgnoreCase))
|
||||
?? Ordered[1];
|
||||
?? Ordered[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ public sealed class AppStateService
|
||||
if (string.IsNullOrWhiteSpace(conversation?.Permission))
|
||||
effective = defaultMode;
|
||||
|
||||
var risk = PermissionModeCatalog.IsBypassPermissions(effective) || PermissionModeCatalog.IsDontAsk(effective)
|
||||
var risk = PermissionModeCatalog.IsBypassPermissions(effective)
|
||||
? "critical"
|
||||
: PermissionModeCatalog.IsAcceptEdits(effective)
|
||||
? "high"
|
||||
@@ -522,7 +522,6 @@ public sealed class AppStateService
|
||||
"Deny" => "파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.",
|
||||
"Plan" => "계획/승인 흐름을 우선 적용한 뒤 파일 작업을 진행합니다.",
|
||||
"BypassPermissions" => "모든 권한 확인을 생략합니다. 주의해서 사용해야 합니다.",
|
||||
"DontAsk" => "권한 질문 없이 진행합니다. 자동 실행 범위를 반드시 점검해야 합니다.",
|
||||
_ => "파일 작업 전마다 사용자 확인을 요청합니다.",
|
||||
};
|
||||
|
||||
|
||||
@@ -438,7 +438,7 @@ public sealed class ChatSessionStateService
|
||||
return conv;
|
||||
}
|
||||
|
||||
public DraftQueueItem? EnqueueDraft(string tab, string text, string priority = "next", ChatStorageService? storage = null)
|
||||
public DraftQueueItem? EnqueueDraft(string tab, string text, string priority = "next", ChatStorageService? storage = null, string kind = "message")
|
||||
{
|
||||
var trimmed = text?.Trim() ?? "";
|
||||
if (string.IsNullOrWhiteSpace(trimmed))
|
||||
@@ -446,7 +446,7 @@ public sealed class ChatSessionStateService
|
||||
|
||||
var conv = EnsureCurrentConversation(tab);
|
||||
conv.DraftQueueItems ??= new List<DraftQueueItem>();
|
||||
var item = _draftQueue.CreateItem(trimmed, priority);
|
||||
var item = _draftQueue.CreateItem(trimmed, priority, kind);
|
||||
conv.DraftQueueItems.Add(item);
|
||||
TouchConversation(storage, tab);
|
||||
return item;
|
||||
|
||||
@@ -20,12 +20,13 @@ public sealed class DraftQueueService
|
||||
public DateTime? NextReadyAt { get; init; }
|
||||
}
|
||||
|
||||
public DraftQueueItem CreateItem(string text, string priority = "next")
|
||||
public DraftQueueItem CreateItem(string text, string priority = "next", string kind = "message")
|
||||
{
|
||||
return new DraftQueueItem
|
||||
{
|
||||
Text = text.Trim(),
|
||||
Priority = NormalizePriority(priority),
|
||||
Kind = string.IsNullOrWhiteSpace(kind) ? "message" : kind.Trim().ToLowerInvariant(),
|
||||
State = "queued",
|
||||
CreatedAt = DateTime.Now,
|
||||
};
|
||||
|
||||
@@ -67,7 +67,7 @@ public static class TokenEstimator
|
||||
public static string Format(int count) => count switch
|
||||
{
|
||||
>= 1_000_000 => $"{count / 1_000_000.0:0.#}M",
|
||||
>= 1_000 => $"{count / 1_000.0:0.#}k",
|
||||
>= 1_000 => $"{count / 1_000.0:0.#}K",
|
||||
_ => count.ToString(),
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user