권한·도구 결과 callout 상태 제목 강화
Some checks failed
Release Gate / gate (push) Has been cancelled

transcript callout이 상태별로 다른 제목과 강조선을 가지도록 정리했습니다.

권한 요청은 확인 포인트와 적용 내용, 도구 결과는 승인 필요, 오류 확인, 부분 완료 점검, 다음 권장 작업으로 구분되게 바꿨습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
This commit is contained in:
2026-04-06 13:54:31 +09:00
parent a46b4bf9c0
commit c4d050f2bf
3 changed files with 49 additions and 14 deletions

View File

@@ -85,6 +85,7 @@ public partial class ChatWindow
private Border CreateAgentMetaCallout(string title, string body, Brush titleBrush, Brush background, Brush borderBrush)
{
var accentColor = (titleBrush as SolidColorBrush)?.Color ?? Colors.SteelBlue;
return new Border
{
Background = background,
@@ -93,30 +94,60 @@ public partial class ChatWindow
CornerRadius = new CornerRadius(8),
Padding = new Thickness(7, 5, 7, 5),
Margin = new Thickness(11, 2, 0, 0),
Child = new StackPanel
Child = new Grid
{
ColumnDefinitions =
{
new ColumnDefinition { Width = new GridLength(3) },
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
},
Children =
{
new TextBlock
new Border
{
Text = title,
FontSize = 7.75,
FontWeight = FontWeights.SemiBold,
Foreground = titleBrush,
Background = new SolidColorBrush(accentColor),
CornerRadius = new CornerRadius(2),
},
new TextBlock
new StackPanel
{
Text = body,
FontSize = 8.1,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray,
TextWrapping = TextWrapping.Wrap,
Margin = new Thickness(0, 1, 0, 0),
Margin = new Thickness(8, 0, 0, 0),
Children =
{
new TextBlock
{
Text = title,
FontSize = 7.75,
FontWeight = FontWeights.SemiBold,
Foreground = titleBrush,
},
new TextBlock
{
Text = body,
FontSize = 8.1,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray,
TextWrapping = TextWrapping.Wrap,
Margin = new Thickness(0, 1, 0, 0),
}
}
}
}
}
};
}
private static string GetToolResultCalloutTitle(string statusKind)
{
return statusKind switch
{
"error" => "오류 확인",
"reject" => "거부됨",
"cancel" => "중단됨",
"approval_required" => "승인 필요",
"partial" => "부분 완료 점검",
_ => "다음 권장 작업",
};
}
private Border CreateAgentInlineActionButton(string text, string icon, Brush foreground, Brush borderBrush, Action onClick)
{
var button = new Border
@@ -312,7 +343,8 @@ public partial class ChatWindow
: string.Equals(permissionPresentation.Severity, "medium", StringComparison.OrdinalIgnoreCase)
? BrushFromHex("#FDE68A")
: BrushFromHex("#BFDBFE");
stack.Children.Add(CreateAgentMetaCallout("확인 포인트", clipped, titleBrush, background, border));
var title = evt.Type == AgentEventType.PermissionGranted ? "적용 내용" : "확인 포인트";
stack.Children.Add(CreateAgentMetaCallout(title, clipped, titleBrush, background, border));
}
else if (toolResultPresentation != null)
{
@@ -334,7 +366,7 @@ public partial class ChatWindow
: string.Equals(toolResultPresentation.StatusKind, "approval_required", StringComparison.OrdinalIgnoreCase)
? BrushFromHex("#FED7AA")
: BrushFromHex("#FDE68A");
stack.Children.Add(CreateAgentMetaCallout("다음 권장 작업", clipped, titleBrush, background, border));
stack.Children.Add(CreateAgentMetaCallout(GetToolResultCalloutTitle(toolResultPresentation.StatusKind), clipped, titleBrush, background, border));
}
}