Files
AX-Copilot-Codex/src/AxCopilot/Views/ChatWindow.xaml
lacvet 7f8a075553
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 작업 폴더 팝업 단순화
작업 폴더 선택 팝업을 검색과 요약 스트립 중심 구조에서 최근 폴더 목록 중심 구조로 재구성했다.

현재 선택 체크가 보이는 최근 폴더 목록과 다른 폴더 선택 액션만 남겨 캡처와 비슷한 빠른 선택 흐름으로 정리했다.

README와 DEVELOPMENT 문서에 변경 이력과 시점을 반영했다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-05 19:49:53 +09:00

5327 lines
421 KiB
XML

<Window x:Class="AxCopilot.Views.ChatWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
Title="AX Copilot — AX Agent"
Width="1180" Height="820"
MinWidth="780" MinHeight="560"
WindowStyle="None"
UseLayoutRounding="True"
SnapsToDevicePixels="True"
Background="{DynamicResource LauncherBackground}"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
ShowInTaskbar="True"
Icon="pack://application:,,,/Assets/icon.ico">
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="48"
CornerRadius="0"
GlassFrameThickness="0"
ResizeBorderThickness="6"/>
</WindowChrome.WindowChrome>
<Window.Resources>
<!-- 사이드바 버튼 -->
<Style x:Key="GhostBtn" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="8,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd" Background="{TemplateBinding Background}"
CornerRadius="6" Padding="{TemplateBinding Padding}"
Opacity="1">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
<Setter TargetName="Bd" Property="Opacity" Value="0.85"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.35"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TitleBarActionButton" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Width" Value="34"/>
<Setter Property="Height" Value="34"/>
<Setter Property="Margin" Value="1,0,0,0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
CornerRadius="6"
Opacity="1"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<ScaleTransform x:Name="ScaleTf" ScaleX="1" ScaleY="1"/>
</Border.RenderTransform>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="ScaleTf"
Storyboard.TargetProperty="ScaleX"
To="1.06"
Duration="0:0:0.12"/>
<DoubleAnimation Storyboard.TargetName="ScaleTf"
Storyboard.TargetProperty="ScaleY"
To="1.06"
Duration="0:0:0.12"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="ScaleTf"
Storyboard.TargetProperty="ScaleX"
To="1"
Duration="0:0:0.12"/>
<DoubleAnimation Storyboard.TargetName="ScaleTf"
Storyboard.TargetProperty="ScaleY"
To="1"
Duration="0:0:0.12"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.78"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.35"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TitleBarCloseButton" TargetType="Button" BasedOn="{StaticResource TitleBarActionButton}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#33FF5A5A"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="OverlayBinaryChoiceButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ItemBackground}"/>
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="12,6"/>
<Setter Property="Margin" Value="0,0,6,0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="ChoiceBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ChoiceBorder" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="ChoiceBorder" Property="Opacity" Value="0.55"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="OverlayAdvancedToggleRowStyle" TargetType="Border">
<Setter Property="Background" Value="{DynamicResource ItemBackground}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="10"/>
<Setter Property="Padding" Value="14,12"/>
<Setter Property="Margin" Value="0,0,0,8"/>
</Style>
<Style x:Key="OverlayHelpBadge" TargetType="Border">
<Setter Property="Width" Value="16"/>
<Setter Property="Height" Value="16"/>
<Setter Property="CornerRadius" Value="8"/>
<Setter Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
<Setter Property="Margin" Value="6,0,0,0"/>
<Setter Property="Cursor" Value="Help"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- 탭 버튼 -->
<Style x:Key="TopTabBtn" TargetType="RadioButton">
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="FontSize" Value="13.5"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="Padding" Value="18,8"/>
<Setter Property="MinWidth" Value="62"/>
<Setter Property="MinHeight" Value="32"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"
CornerRadius="11"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="True">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource HintBackground}"/>
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource LauncherBackground}"/>
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.35"/>
<Setter Property="Cursor" Value="Arrow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 테두리 호버 버튼 (배경색 변경 없이 테두리만 표시) -->
<Style x:Key="OutlineHoverBtn" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="8,6,10,6"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd" Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
CornerRadius="8" Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.35"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SettingsNavBtn" TargetType="RadioButton">
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
<Setter Property="FontSize" Value="11.5"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="8,6"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border x:Name="Bd"
Background="Transparent"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ContentPresenter VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource HintBackground}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="OverlayComboBoxToggle" TargetType="ToggleButton">
<Border x:Name="Bd"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1.5"
CornerRadius="8"
Padding="10,6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"/>
<TextBlock Grid.Column="1"
Text="&#xE70D;"
FontFamily="Segoe MDL2 Assets"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="8,0,2,0"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource AccentColor}"/>
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemBackground}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="OverlayComboBox" TargetType="ComboBox">
<Setter Property="MinWidth" Value="150"/>
<Setter Property="Height" Value="32"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
<Setter Property="Background" Value="{DynamicResource ItemBackground}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="ItemContainerStyle" Value="{DynamicResource OverlayComboBoxItem}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<ToggleButton x:Name="ToggleButton"
Template="{StaticResource OverlayComboBoxToggle}"
Focusable="False"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press"/>
<ContentPresenter x:Name="ContentSite"
IsHitTestVisible="False"
Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Margin="12,6,28,6"
VerticalAlignment="Center"
HorizontalAlignment="Left"/>
<Popup x:Name="Popup"
Placement="Bottom"
IsOpen="{TemplateBinding IsDropDownOpen}"
AllowsTransparency="True"
Focusable="False"
PopupAnimation="Slide">
<Grid x:Name="DropDown"
MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}"
SnapsToDevicePixels="True">
<Border x:Name="DropDownBorder"
Background="{DynamicResource LauncherBackground}"
CornerRadius="8"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Margin="0,2,0,0"
Padding="4">
<Border.Effect>
<DropShadowEffect BlurRadius="12" ShadowDepth="4" Opacity="0.12" Direction="270"/>
</Border.Effect>
<ScrollViewer SnapsToDevicePixels="True"
VerticalScrollBarVisibility="Auto"
MaxHeight="300">
<StackPanel IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Contained"/>
</ScrollViewer>
</Border>
</Grid>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="OverlayComboBoxItem" TargetType="ComboBoxItem">
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Padding" Value="10,7"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border x:Name="Bd"
Background="Transparent"
CornerRadius="6"
Padding="{TemplateBinding Padding}"
Margin="0,1">
<ContentPresenter VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
<Setter Property="Foreground" Value="{DynamicResource AccentColor}"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 모든 드롭다운 메뉴는 코드-비하인드에서 커스텀 Popup으로 렌더링 -->
</Window.Resources>
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<!-- 축소 아이콘 바 (사이드바 닫힘 시 표시) -->
<ColumnDefinition x:Name="IconBarColumn" Width="0"/>
<!-- 사이드바 (열림 시 표시) -->
<ColumnDefinition x:Name="SidebarColumn" Width="246" MinWidth="0"/>
<ColumnDefinition Width="*"/>
<!-- 미리보기 스플리터 -->
<ColumnDefinition x:Name="SplitterColumn" Width="0"/>
<!-- 미리보기 패널 (파일 생성 시 표시) -->
<ColumnDefinition x:Name="PreviewColumn" Width="0" MinWidth="0"/>
</Grid.ColumnDefinitions>
<!-- ══ 축소 아이콘 바 (사이드바 닫힘 시) ══ -->
<Border x:Name="IconBarPanel" Grid.Column="0"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,1,0"
Visibility="Collapsed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<!-- 상단 아이콘들 -->
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,2,0,0">
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30"
Click="BtnNewChat_Click" ToolTip="새 대화"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,6,0,0">
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30"
Click="BtnToggleSidebar_Click" ToolTip="검색"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30" Margin="0,2,0,0"
Click="BtnCategoryDrop_Click" ToolTip="대화 필터"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
<!-- 하단: 사용자 이니셜 -->
<Button x:Name="BtnUserIconBar" Grid.Row="2" Style="{StaticResource GhostBtn}"
HorizontalAlignment="Center" VerticalAlignment="Center"
ToolTip="" Padding="0"
WindowChrome.IsHitTestVisibleInChrome="True">
<Border Width="26" Height="26" CornerRadius="13"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="UserInitialIconBar" Text="U" FontSize="11" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Button>
</Grid>
</Border>
<!-- ══════════════════════════════════════════════════════ -->
<!-- 좌측: 사이드바 -->
<!-- ══════════════════════════════════════════════════════ -->
<Border x:Name="SidebarPanel" Grid.Column="1"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,1,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="36"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="42"/>
</Grid.RowDefinitions>
<!-- 헤더 -->
<Grid Grid.Row="0" Margin="12,0,12,0">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="AX Agent" FontSize="11" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Grid>
<!-- 상단 액션 -->
<Grid Grid.Row="1" Margin="12,2,12,6">
<StackPanel>
<Border x:Name="SidebarNewChatTrigger"
Background="Transparent"
CornerRadius="7"
Padding="8,6"
Cursor="Hand"
MouseEnter="SidebarNewChatTrigger_MouseEnter"
MouseLeave="SidebarNewChatTrigger_MouseLeave"
MouseLeftButtonUp="SidebarNewChatTrigger_MouseLeftButtonUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="새 대화"
Foreground="{DynamicResource PrimaryText}"
FontSize="12.5" FontWeight="SemiBold" Margin="8,0,0,0" VerticalAlignment="Center"/>
<TextBlock x:Name="SidebarNewChatShortcutHint"
Grid.Column="2"
Text="Ctrl+N"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
FontSize="10.5"
VerticalAlignment="Center"/>
</Grid>
</Border>
<Border x:Name="SidebarSearchTrigger"
Background="Transparent"
CornerRadius="7"
Padding="8,6"
Cursor="Hand"
MouseEnter="SidebarSearchTrigger_MouseEnter"
MouseLeave="SidebarSearchTrigger_MouseLeave"
MouseLeftButtonUp="SidebarSearchTrigger_MouseLeftButtonUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="검색"
Foreground="{DynamicResource PrimaryText}"
FontSize="12.5" FontWeight="SemiBold" Margin="8,0,0,0" VerticalAlignment="Center"/>
<TextBlock x:Name="SidebarSearchShortcutHint"
Grid.Column="2"
Text="Ctrl+K"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
FontSize="10.5"
VerticalAlignment="Center"/>
</Grid>
</Border>
<Border x:Name="SidebarSearchEditor"
Background="{DynamicResource ItemBackground}"
CornerRadius="7"
Padding="9,6"
Visibility="Collapsed"
Opacity="0"
RenderTransformOrigin="0,0.5">
<Border.RenderTransform>
<ScaleTransform x:Name="SidebarSearchEditorScale" ScaleX="0.85" ScaleY="1"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="12.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBox x:Name="SearchBox" Grid.Column="1"
Background="Transparent" BorderThickness="0"
Foreground="{DynamicResource PrimaryText}"
CaretBrush="{DynamicResource AccentColor}" FontSize="12.5"
VerticalAlignment="Center" Margin="9,0,7,0"
TextChanged="SearchBox_TextChanged"/>
<Button x:Name="BtnConversationSort" Grid.Column="2"
Style="{StaticResource GhostBtn}"
Padding="7,3.5" MinWidth="58"
Margin="0,0,0,0"
VerticalAlignment="Center"
Click="BtnConversationSort_Click"
ToolTip="대화 정렬 기준 전환"
Visibility="Collapsed">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE8CB;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="ConversationSortLabel" Text="활동"
FontSize="11.5" FontWeight="SemiBold"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button x:Name="BtnRunningOnlyFilter" Grid.Column="3"
Style="{StaticResource GhostBtn}"
Padding="7,3.5" MinWidth="58"
Margin="5,0,0,0"
VerticalAlignment="Center"
Click="BtnRunningOnlyFilter_Click"
ToolTip="비활성"
Visibility="Collapsed"
IsEnabled="False">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE768;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="RunningOnlyFilterLabel" Text="진행"
FontSize="11.5" FontWeight="SemiBold"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Grid.Column="4"
Style="{StaticResource GhostBtn}"
Padding="7,4"
Margin="5,0,0,0"
Click="BtnSidebarSearchClose_Click"
ToolTip="검색 닫기">
<TextBlock Text="&#xE711;"
FontFamily="Segoe MDL2 Assets"
FontSize="10.5"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</Grid>
</Border>
</StackPanel>
</Grid>
<!-- 상단 필터 드롭다운 -->
<Border Grid.Row="2" Margin="12,0,12,4">
<Button x:Name="BtnCategoryDrop" Style="{StaticResource GhostBtn}"
HorizontalAlignment="Stretch" Padding="9,5"
Click="BtnCategoryDrop_Click">
<Grid HorizontalAlignment="Stretch">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="CategoryIcon" Text="&#xE8BD;"
FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,7,0"/>
<TextBlock x:Name="CategoryLabel" Text="모든 주제"
FontSize="12" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
<TextBlock Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9.5"
Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Right" VerticalAlignment="Center"/>
</Grid>
</Button>
</Border>
<!-- 탭별 좌측 메뉴 -->
<Border Grid.Row="3" Margin="12,0,12,6"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
CornerRadius="0"
Padding="0">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,4" Visibility="Collapsed">
<TextBlock x:Name="SidebarModeBadgeIcon" Text="&#xE8BD;"
FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="SidebarModeBadgeTitle" Text="Chat 메뉴"
FontSize="11.75" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
<StackPanel x:Name="SidebarChatMenu" Visibility="Visible">
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
Padding="9,5" Margin="0,0,0,3"
MouseLeftButtonUp="SidebarChatAll_MouseLeftButtonUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="주제"
Foreground="{DynamicResource PrimaryText}"
FontSize="12" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
</Grid>
</Border>
<Border x:Name="SidebarChatRunningRow" Cursor="Hand" Background="Transparent" CornerRadius="8"
Padding="9,5"
MouseLeftButtonUp="SidebarChatRunning_MouseLeftButtonUp"
Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE768;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="#22C55E" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="진행 중 대화만 보기"
Foreground="{DynamicResource PrimaryText}"
FontSize="12" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" x:Name="SidebarChatRunningState" Text="OFF"
Foreground="{DynamicResource SecondaryText}"
FontSize="10.75" VerticalAlignment="Center"/>
</Grid>
</Border>
</StackPanel>
<StackPanel x:Name="SidebarCoworkMenu" Visibility="Collapsed">
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
Padding="9,5" Margin="0,0,0,3"
MouseLeftButtonUp="SidebarCoworkCategory_MouseLeftButtonUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE8FD;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="#3B82F6" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="작업 유형"
Foreground="{DynamicResource PrimaryText}"
FontSize="12" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
</Grid>
</Border>
</StackPanel>
<StackPanel x:Name="SidebarCodeMenu" Visibility="Collapsed">
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
Padding="9,5" Margin="0,0,0,3"
MouseLeftButtonUp="SidebarCodeCategory_MouseLeftButtonUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE943;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="#3B82F6" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="워크스페이스"
Foreground="{DynamicResource PrimaryText}"
FontSize="12" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
</Grid>
</Border>
</StackPanel>
</StackPanel>
</Border>
<!-- 대화 목록 -->
<ScrollViewer Grid.Row="4" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<StackPanel x:Name="ConversationPanel" Margin="6,0,6,0"/>
</ScrollViewer>
<!-- 하단: 삭제 -->
<Border Grid.Row="5" BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
Padding="0,2">
<Button x:Name="BtnDeleteAll" Style="{StaticResource GhostBtn}"
HorizontalAlignment="Center" VerticalAlignment="Center"
Click="BtnDeleteAll_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE74D;" FontFamily="Segoe MDL2 Assets" FontSize="9.75"
Foreground="#AA5555" VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock Text="전체 삭제" FontSize="9.75" Foreground="#AA5555"/>
</StackPanel>
</Button>
</Border>
<!-- 하단: 사용자 계정 -->
<Border Grid.Row="6" Margin="10,0,10,6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Width="28" Height="28" CornerRadius="14"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Margin="0,0,8,0">
<TextBlock x:Name="UserInitialSidebar" Text="U" FontSize="11.5" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock x:Name="UserNameText" Text="" FontSize="10.5" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
TextTrimming="CharacterEllipsis"/>
<TextBlock x:Name="UserPcText" Text="" FontSize="8.75"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<Button x:Name="BtnSidebarSettings"
Grid.Column="2"
Style="{StaticResource GhostBtn}"
Width="32" Height="32"
Margin="6,0,0,0"
VerticalAlignment="Center"
Click="BtnSettings_Click"
ToolTip="AX Agent 설정">
<TextBlock Text="&#xE713;"
FontFamily="Segoe MDL2 Assets"
FontSize="15"
Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Button>
</Grid>
</Border>
</Grid>
</Border>
<!-- ══════════════════════════════════════════════════════ -->
<!-- 우측: 메시지 영역 -->
<!-- ══════════════════════════════════════════════════════ -->
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="42"/>
<RowDefinition Height="Auto"/> <!-- 서브 바: 제목 + 프리뷰 -->
<RowDefinition Height="Auto"/> <!-- 스티키 진행률 바 -->
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/> <!-- 입력 바 + Popup들 -->
<RowDefinition Height="Auto"/> <!-- 파일 탐색기 -->
<RowDefinition Height="30"/> <!-- 상태바 -->
</Grid.RowDefinitions>
<!-- ── 서브 바: 제목 + 프리뷰 버튼 (AX Agent 스타일) ── -->
<Border Grid.Row="1" Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
Padding="10,3,10,3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- 좌: 대화 제목 -->
<StackPanel Grid.Column="0" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Grid VerticalAlignment="Center">
<TextBlock x:Name="ChatTitle" Text="" FontSize="12.25" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
MaxWidth="360" Cursor="Hand"
MouseLeftButtonDown="ChatTitle_MouseDown"
ToolTip="클릭하여 대화 이름 변경"/>
<TextBox x:Name="ChatTitleEdit" FontSize="12.25"
Foreground="{DynamicResource PrimaryText}"
Background="{DynamicResource HintBackground}"
CaretBrush="{DynamicResource AccentColor}"
BorderThickness="0" Padding="3,1.5"
MaxWidth="360" MinWidth="80"
Visibility="Collapsed"
LostFocus="ChatTitleEdit_LostFocus"
KeyDown="ChatTitleEdit_KeyDown"/>
</Grid>
<Border x:Name="ConversationStatusStrip" Visibility="Collapsed"
Margin="6,0,0,0" Padding="3.5,1"
CornerRadius="4"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
<TextBlock x:Name="ConversationStatusStripLabel" Text=""
FontSize="8" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</Border>
</StackPanel>
<WrapPanel x:Name="ConversationQuickStrip" Visibility="Collapsed"
Margin="0,0,0,0">
<Button x:Name="BtnQuickRunningFilter" Style="{StaticResource GhostBtn}"
Padding="4,1" Margin="0,0,2,0"
Click="BtnQuickRunningFilter_Click"
Visibility="Collapsed"
IsEnabled="False">
<TextBlock x:Name="QuickRunningLabel" Text="진행"
FontSize="8" FontWeight="SemiBold"/>
</Button>
<Button x:Name="BtnQuickHotSort" Style="{StaticResource GhostBtn}"
Padding="4,1"
Click="BtnQuickHotSort_Click">
<TextBlock x:Name="QuickHotLabel" Text="활동"
FontSize="8" FontWeight="SemiBold"/>
</Button>
</WrapPanel>
</StackPanel>
<Border x:Name="SelectedPresetGuide"
Grid.Column="1"
Visibility="Collapsed"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="12,7"
Margin="16,0">
<StackPanel HorizontalAlignment="Center">
<TextBlock x:Name="SelectedPresetGuideTitle"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
TextAlignment="Center"/>
<TextBlock x:Name="SelectedPresetGuideDesc"
Margin="0,2,0,0"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"
TextAlignment="Center"
TextTrimming="CharacterEllipsis"
MaxWidth="320"/>
</StackPanel>
</Border>
<!-- 우: 프리뷰 토글 버튼 -->
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Button x:Name="BtnPreviewToggle" Style="{StaticResource GhostBtn}"
Click="BtnPreviewToggle_Click" ToolTip="미리보기 패널" Visibility="Collapsed"
Padding="5,2.5" MinWidth="0">
<StackPanel Orientation="Horizontal">
<Ellipse x:Name="PreviewDot" Width="5" Height="5" Fill="#22C55E"
Margin="0,0,4,0" VerticalAlignment="Center"/>
<TextBlock Text="프리뷰" FontSize="10.5"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- ── 에이전트 진행률 스티키 바 ── -->
<Border x:Name="AgentProgressBar" Grid.Row="2" Visibility="Collapsed"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
Padding="7,1,7,1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- 아이콘 -->
<TextBlock Grid.Column="0" x:Name="ProgressIcon"
Text="&#xE768;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,6,0"/>
<!-- 단계 텍스트 -->
<TextBlock Grid.Column="1" x:Name="ProgressStepLabel"
Text="" FontSize="11"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
MaxWidth="220" Margin="0,0,8,0"/>
<!-- 프로그레스 바 -->
<Border Grid.Column="2" CornerRadius="3" Background="{DynamicResource ItemHoverBackground}"
Height="4" VerticalAlignment="Center" Margin="0,0,8,0">
<Border x:Name="ProgressFill" CornerRadius="3" HorizontalAlignment="Left"
Width="0" Background="{DynamicResource AccentColor}"/>
</Border>
<!-- 퍼센트 -->
<TextBlock Grid.Column="3" x:Name="ProgressPercent"
Text="0%" FontSize="10" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,6,0" MinWidth="26" TextAlignment="Right"/>
<!-- 경과 시간 -->
<TextBlock Grid.Column="4" x:Name="ProgressElapsed"
Text="0:00" FontSize="9.5"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</Grid>
</Border>
<!-- ── 상단 권한 알림 배너 ── -->
<Border x:Name="PermissionTopBanner"
Grid.Row="0" Grid.RowSpan="3"
Visibility="Collapsed"
Margin="16,94,16,0"
VerticalAlignment="Top"
Panel.ZIndex="20"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10"
Padding="10,8">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="PermissionTopBannerIcon"
Text="&#xE7BA;"
FontFamily="Segoe MDL2 Assets"
FontSize="12"
Margin="0,0,8,0"
VerticalAlignment="Center"
Foreground="{DynamicResource AccentColor}"/>
<StackPanel>
<TextBlock x:Name="PermissionTopBannerTitle"
Text="현재 권한 모드"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="PermissionTopBannerText"
Text=""
FontSize="11"
TextWrapping="Wrap"
MaxWidth="760"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
</StackPanel>
<Button x:Name="BtnPermissionTopBannerClose"
Grid.Column="1"
Style="{StaticResource GhostBtn}"
Padding="2"
Cursor="Hand"
Click="BtnPermissionTopBannerClose_Click"
ToolTip="닫기">
<TextBlock Text="&#xE711;"
FontFamily="Segoe MDL2 Assets"
FontSize="9"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</Grid>
</Border>
<!-- ── 상단 바: 토글 | 탭(중앙) | 설정+닫기 ── -->
<Border Grid.Row="0" Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0"
Orientation="Horizontal"
VerticalAlignment="Center"
Margin="42,0,0,0"
Visibility="Collapsed">
<TextBlock x:Name="CurrentTabTitle"
Text="AX Agent"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
</StackPanel>
<!-- 좌: 사이드바 토글 -->
<Button x:Name="BtnToggleSidebar"
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"
Width="28"
Height="28"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
Cursor="Hand"
Click="BtnToggleSidebar_Click" ToolTip="사이드바 열기/닫기"
WindowChrome.IsHitTestVisibleInChrome="True">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border x:Name="Root"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6">
<Grid Width="28" Height="28">
<Border Width="14"
Height="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
CornerRadius="2"
BorderBrush="{DynamicResource SecondaryText}"
BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4"/>
<ColumnDefinition Width="1"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border x:Name="SidebarPane"
Grid.Column="0"
Margin="1,1,0,1"
CornerRadius="1,0,0,1"
Background="{DynamicResource SecondaryText}"/>
<Border x:Name="SidebarDivider"
Grid.Column="1"
Margin="0,1,0,1"
Background="{DynamicResource SecondaryText}"
Opacity="0.55"/>
<Border x:Name="SidebarBodyLine1"
Grid.Column="2"
Width="5"
Height="1"
Margin="0,3,2,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
CornerRadius="1"
Background="{DynamicResource SecondaryText}"
Opacity="0.85"/>
<Border x:Name="SidebarBodyLine2"
Grid.Column="2"
Width="5"
Height="1"
Margin="0,0,2,3"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
CornerRadius="1"
Background="{DynamicResource SecondaryText}"
Opacity="0.7"/>
</Grid>
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Root" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
<Setter TargetName="Root" Property="BorderBrush" Value="{DynamicResource AccentColor}"/>
<Setter TargetName="SidebarPane" Property="Background" Value="{DynamicResource AccentColor}"/>
<Setter TargetName="SidebarDivider" Property="Background" Value="{DynamicResource AccentColor}"/>
<Setter TargetName="SidebarBodyLine1" Property="Background" Value="{DynamicResource AccentColor}"/>
<Setter TargetName="SidebarBodyLine2" Property="Background" Value="{DynamicResource AccentColor}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Root" Property="Opacity" Value="0.88"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
<!-- 중앙: 탭 메뉴 -->
<Border Grid.Column="1"
HorizontalAlignment="Center" VerticalAlignment="Center"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="16" Padding="4"
MinHeight="40"
WindowChrome.IsHitTestVisibleInChrome="True">
<StackPanel Orientation="Horizontal">
<RadioButton x:Name="TabChat" Content="채팅" Style="{StaticResource TopTabBtn}"
IsChecked="True" GroupName="TopTab"
Checked="TabChat_Checked"/>
<RadioButton x:Name="TabCowork" Content="Cowork" Style="{StaticResource TopTabBtn}"
GroupName="TopTab"
Checked="TabCowork_Checked"/>
<RadioButton x:Name="TabCode" Content="코드" Style="{StaticResource TopTabBtn}"
GroupName="TopTab"
Checked="TabCode_Checked"/>
</StackPanel>
</Border>
<!-- 우: 최소화 + 최대화 + 닫기 -->
<StackPanel Grid.Column="2"
Orientation="Horizontal" HorizontalAlignment="Right"
VerticalAlignment="Center" Margin="0,0,4,0"
WindowChrome.IsHitTestVisibleInChrome="True">
<Button Style="{StaticResource TitleBarActionButton}" Click="BtnMinimize_Click" ToolTip="최소화">
<TextBlock Text="&#xE921;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource TitleBarActionButton}" Click="BtnMaximize_Click" ToolTip="최대화">
<TextBlock x:Name="MaximizeIcon" Text="&#xE739;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource TitleBarCloseButton}" Click="BtnClose_Click" ToolTip="닫기">
<TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="12.5"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- ── 메시지 내 검색 바 (Ctrl+F) ── -->
<Border x:Name="MessageSearchBar" Grid.Row="3" Visibility="Collapsed"
Panel.ZIndex="5" VerticalAlignment="Top"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
Padding="10,5" Margin="28,0,28,0" CornerRadius="0,0,8,8">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="13"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,8,0"/>
<TextBox x:Name="SearchTextBox" Grid.Column="1"
FontSize="12.5" Padding="4,3"
Background="Transparent" Foreground="{DynamicResource PrimaryText}"
BorderThickness="0"
TextChanged="SearchTextBox_TextChanged"/>
<TextBlock x:Name="SearchResultCount" Grid.Column="2"
Text="" FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="8,0"/>
<Button Grid.Column="3" Style="{StaticResource GhostBtn}" Padding="4"
Click="SearchPrev_Click" ToolTip="이전 (Shift+Enter)">
<TextBlock Text="&#xE70E;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Grid.Column="4" Style="{StaticResource GhostBtn}" Padding="4"
Click="SearchNext_Click" ToolTip="다음 (Enter)">
<TextBlock Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Grid.Column="5" Style="{StaticResource GhostBtn}" Padding="4"
Click="SearchClose_Click" ToolTip="닫기 (Esc)">
<TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="9"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</Grid>
</Border>
<!-- ── 메시지 스크롤 ── -->
<ScrollViewer x:Name="MessageScroll" Grid.Row="3"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
Background="{DynamicResource LauncherBackground}"
Padding="24,12,24,8">
<StackPanel x:Name="MessagePanel"
Margin="0,0,0,8"
MaxWidth="960"
HorizontalAlignment="Center">
<StackPanel.RenderTransform>
<TranslateTransform/>
</StackPanel.RenderTransform>
</StackPanel>
</ScrollViewer>
<!-- 빈 상태 -->
<Grid x:Name="EmptyState" Grid.Row="3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
MaxWidth="960"
Margin="24,16,24,16">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="18"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,14,0,4">
<Border x:Name="EmptyIcon" CornerRadius="14" Width="48" Height="48"
HorizontalAlignment="Center" Margin="0,0,0,10"
Background="{DynamicResource HintBackground}">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="24"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock x:Name="EmptyStateTitle" Text="작업을 시작하세요" FontSize="22" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center"/>
<TextBlock x:Name="EmptyStateDesc" Text="프롬프트를 입력하거나 아래 작업 유형을 선택하면 됩니다"
FontSize="14.25" Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Center"
TextAlignment="Center"
Width="430"
Margin="0,7,0,0"/>
</StackPanel>
<ScrollViewer x:Name="TopicPresetScrollViewer"
Grid.Row="2"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
MaxHeight="420"
Margin="0"
Padding="0,4,0,8">
<!-- 대화 주제 버튼 (프리셋에서 동적 생성) -->
<WrapPanel x:Name="TopicButtonPanel" HorizontalAlignment="Center"
Margin="0,0,0,8"/>
</ScrollViewer>
</Grid>
<!-- ── 프롬프트 템플릿 팝업 ── -->
<Popup x:Name="TemplatePopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=InputBorder}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="18"
Padding="8" MinWidth="320" MaxWidth="440">
<Border.Effect>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Opacity="0.14"/>
</Border.Effect>
<StackPanel>
<TextBlock Text="프리셋" FontSize="13" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
Margin="12,10,12,8"/>
<Border Margin="8,0,8,8"
CornerRadius="10"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Background="{DynamicResource ItemBackground}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE721;"
FontFamily="Segoe MDL2 Assets"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="10,0,8,0"/>
<TextBox x:Name="TemplateSearchBox"
Grid.Column="1"
BorderThickness="0"
Background="Transparent"
Foreground="{DynamicResource PrimaryText}"
CaretBrush="{DynamicResource AccentColor}"
FontSize="11.5"
Padding="0,8,10,8"
TextChanged="TemplateSearchBox_TextChanged"/>
</Grid>
</Border>
<ItemsControl x:Name="TemplateItems"/>
<TextBlock x:Name="TemplateEmptyHint"
Text="등록된 템플릿이 없습니다. 설정에서 추가하세요."
FontSize="11" Foreground="{DynamicResource SecondaryText}"
Margin="10,4,10,8" Visibility="Collapsed"/>
</StackPanel>
</Border>
</Popup>
<!-- ── 권한 선택 팝업 ── -->
<Popup x:Name="PermissionPopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=BtnPermission}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="18"
Padding="10" MinWidth="340">
<Border.Effect>
<DropShadowEffect BlurRadius="22" ShadowDepth="0" Opacity="0.15"/>
</Border.Effect>
<StackPanel x:Name="PermissionItems" Margin="2"/>
</Border>
</Popup>
<!-- ── 데이터 활용 수준 팝업 ── -->
<Popup x:Name="DataUsagePopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=BtnDataUsage}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="18"
Padding="10" MinWidth="300">
<Border.Effect>
<DropShadowEffect BlurRadius="22" ShadowDepth="0" Opacity="0.15"/>
</Border.Effect>
<StackPanel x:Name="DataUsageItems" Margin="2"/>
</Border>
</Popup>
<!-- ── 슬래시 명령어 팝업 ── -->
<Popup x:Name="SlashPopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=InputBorder}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="16"
Padding="0" MinWidth="620" MaxWidth="760"
PreviewMouseWheel="SlashPopup_PreviewMouseWheel">
<Border.Effect>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Opacity="0.14"/>
</Border.Effect>
<StackPanel>
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,0,1"
CornerRadius="16,16,0,0"
Padding="14,12,14,8">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0">
<Border Background="{DynamicResource AccentColor}"
CornerRadius="8"
Padding="5,1.5"
Margin="0,0,8,0"
VerticalAlignment="Center">
<TextBlock Text="/"
FontSize="12"
FontWeight="SemiBold"
Foreground="White"/>
</Border>
<TextBlock x:Name="SlashPopupTitle"
Text="명령 및 스킬"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
<Button Grid.Column="1"
x:Name="BtnSlashReset"
Click="BtnSlashReset_Click"
Style="{StaticResource GhostBtn}"
Padding="7,3"
Margin="0,0,6,0"
ToolTip="핀/최근 정리">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE74D;"
FontFamily="Segoe MDL2 Assets"
FontSize="10.5"
Foreground="{DynamicResource SecondaryText}"
Margin="0,0,4,0"/>
<TextBlock Text="정리"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
</Button>
<Button Grid.Column="2"
x:Name="BtnSlashToggleGroups"
Click="BtnSlashToggleGroups_Click"
Style="{StaticResource GhostBtn}"
Padding="7,3"
ToolTip="명령/스킬 그룹 전체 접기 또는 펼치기">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE70D;"
FontFamily="Segoe MDL2 Assets"
FontSize="10.5"
Foreground="{DynamicResource SecondaryText}"
Margin="0,0,4,0"/>
<TextBlock x:Name="SlashToggleGroupsLabel"
Text="전체 접기"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
</Button>
</Grid>
<TextBlock x:Name="SlashPopupHint"
Text="방향키나 마우스 휠로 이동하고 Enter로 바로 실행합니다"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
Margin="0,5,0,0"/>
</StackPanel>
</Border>
<ScrollViewer x:Name="SlashScrollViewer"
MaxHeight="420"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
CanContentScroll="False"
PanningMode="VerticalOnly"
PreviewMouseWheel="SlashPopup_PreviewMouseWheel"
Padding="10,8,10,6">
<ItemsControl x:Name="SlashItems"/>
</ScrollViewer>
<TextBlock x:Name="SlashPopupFooter"
Margin="12,0,12,10"
Text="Enter 실행 · ↑↓ 이동 · 휠 스크롤 · Esc 닫기"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
</Border>
</Popup>
<!-- ── 폴더 선택 팝업 ── -->
<Popup x:Name="FolderMenuPopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=FolderPathLabel}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="16"
MinWidth="286"
MaxWidth="332">
<Border.Effect>
<DropShadowEffect BlurRadius="22" ShadowDepth="0" Opacity="0.14"/>
</Border.Effect>
<StackPanel Margin="0">
<TextBlock Text="최근"
Margin="16,14,16,10"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<ScrollViewer MaxHeight="360"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
Padding="10,0,10,10">
<StackPanel x:Name="FolderMenuItems" Margin="2"/>
</ScrollViewer>
</StackPanel>
</Border>
</Popup>
<Popup x:Name="GitBranchPopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=BtnGitBranch}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="16"
Padding="8"
MinWidth="340"
MaxWidth="420">
<Border.Effect>
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Opacity="0.14"/>
</Border.Effect>
<StackPanel>
<TextBlock Text="브랜치 상태"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
Margin="8,6,8,8"/>
<Border Margin="8,0,8,8"
CornerRadius="10"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Background="{DynamicResource ItemBackground}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE721;"
FontFamily="Segoe MDL2 Assets"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="10,0,8,0"/>
<TextBox x:Name="GitBranchSearchBox"
Grid.Column="1"
BorderThickness="0"
Background="Transparent"
Foreground="{DynamicResource PrimaryText}"
CaretBrush="{DynamicResource AccentColor}"
FontSize="11.5"
Padding="0,8,10,8"
ToolTip="브랜치 검색"
TextChanged="GitBranchSearchBox_TextChanged"/>
</Grid>
</Border>
<StackPanel x:Name="GitBranchItems" Margin="0,0,0,4"/>
</StackPanel>
</Border>
</Popup>
<!-- ── 토스트 알림 ── -->
<Border x:Name="ToastBorder" Grid.Row="3" Visibility="Collapsed"
Panel.ZIndex="20"
HorizontalAlignment="Center" VerticalAlignment="Bottom"
Margin="0,0,0,16"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1"
CornerRadius="20"
Padding="16,8,16,8" Opacity="0"
IsHitTestVisible="False">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="ToastIcon" Text="&#xE73E;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="ToastText" Text="" FontSize="12"
Foreground="{DynamicResource PrimaryText}" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- ── 입력 바 ── -->
<Border x:Name="ComposerShell" Grid.Row="4"
Margin="24,0,24,12"
Width="Auto"
MaxWidth="900"
HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<StackPanel HorizontalAlignment="Stretch">
<Border x:Name="DraftPreviewCard"
Visibility="Collapsed"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10"
Padding="8,6,8,6"
Margin="0,0,0,4">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="후속 요청"
FontSize="10.5"
Foreground="{DynamicResource SecondaryText}"/>
<TextBlock x:Name="DraftPreviewText"
FontSize="12.5"
Foreground="{DynamicResource PrimaryText}"
Margin="0,4,0,0"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Top">
<Button x:Name="BtnDraftEnqueue"
Style="{StaticResource GhostBtn}"
Padding="6,4"
Margin="0,0,4,0"
Click="BtnDraftEnqueue_Click"
ToolTip="대기열에 추가">
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button x:Name="BtnDraftEdit"
Style="{StaticResource GhostBtn}"
Padding="6,4"
Margin="0,0,4,0"
Click="BtnDraftEdit_Click"
ToolTip="메시지 편집">
<TextBlock Text="&#xE70F;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button x:Name="BtnDraftClear"
Style="{StaticResource GhostBtn}"
Padding="6,4"
Click="BtnDraftClear_Click"
ToolTip="대기열 끄기">
<TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- 무지개 글로우 + 입력 영역 (겹침 레이아웃) -->
<Grid>
<!-- 무지개 글로우 외부 테두리 (메시지 전송 시 애니메이션) -->
<StackPanel x:Name="DraftQueuePanel"
Visibility="Collapsed"
Margin="0,0,0,6"/>
<Border x:Name="InputGlowBorder" CornerRadius="14" Opacity="0"
Margin="-1" IsHitTestVisible="False">
<Border.BorderBrush>
<LinearGradientBrush x:Name="RainbowBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#FF6B6B" Offset="0.0"/>
<GradientStop Color="#FECA57" Offset="0.17"/>
<GradientStop Color="#48DBFB" Offset="0.33"/>
<GradientStop Color="#FF9FF3" Offset="0.5"/>
<GradientStop Color="#54A0FF" Offset="0.67"/>
<GradientStop Color="#5F27CD" Offset="0.83"/>
<GradientStop Color="#FF6B6B" Offset="1.0"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Border.BorderThickness>
<Thickness>1.5</Thickness>
</Border.BorderThickness>
<Border.Effect>
<BlurEffect Radius="2"/>
</Border.Effect>
</Border>
<!-- 실제 입력 영역 -->
<Border x:Name="InputBorder"
Background="{DynamicResource ItemBackground}"
CornerRadius="12" Padding="3"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- Row 0: 모델 셀렉터 + 템플릿 버튼 -->
<Grid Grid.Row="0" Margin="3,1,3,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Name="BtnModelSelector"
Style="{StaticResource OutlineHoverBtn}"
Grid.Column="0"
HorizontalAlignment="Left"
Margin="0"
MinHeight="28"
Padding="8,3"
Click="BtnModelSelector_Click"
ToolTip="모델/추론 빠른 설정"
WindowChrome.IsHitTestVisibleInChrome="True">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xEA86;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="ModelLabel" FontSize="12.5"
Foreground="{DynamicResource SecondaryText}"
MaxWidth="300"
TextTrimming="CharacterEllipsis"
VerticalAlignment="Center"/>
<TextBlock Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="4,1,0,0"/>
</StackPanel>
</Button>
<Border x:Name="TokenUsageCard"
Grid.Column="2"
Margin="6,0,0,0"
Padding="0"
Width="28"
Height="28"
CornerRadius="999"
BorderBrush="Transparent"
BorderThickness="0"
Background="Transparent"
VerticalAlignment="Center"
Visibility="Collapsed"
Cursor="Hand"
MouseEnter="TokenUsageCard_MouseEnter"
MouseLeave="TokenUsageCard_MouseLeave">
<Grid>
<Grid Width="28" Height="28" VerticalAlignment="Center">
<Ellipse Stroke="{DynamicResource HintBackground}"
StrokeThickness="3"/>
<Path x:Name="TokenUsageArc"
Stroke="{DynamicResource AccentColor}"
StrokeThickness="3"
StrokeStartLineCap="Round"
StrokeEndLineCap="Round"/>
<Canvas IsHitTestVisible="False">
<Ellipse x:Name="TokenUsageThresholdMarker"
Width="5"
Height="5"
Fill="{DynamicResource AccentColor}"/>
</Canvas>
<TextBlock x:Name="TokenUsagePercentText"
Text="0%"
FontSize="8.25"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
<StackPanel Visibility="Collapsed">
<TextBlock x:Name="TokenUsageSummaryText"
Text="컨텍스트"
FontSize="10.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="TokenUsageHintText"
Text="0 / 0"
FontSize="9"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<Button x:Name="BtnCompactNow"
Style="{StaticResource GhostBtn}"
Visibility="Collapsed"
Padding="6,3"
Margin="0"
VerticalAlignment="Center"
Click="BtnCompactNow_Click"
ToolTip="지금 대화 컨텍스트 압축">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE8D4;"
FontFamily="Segoe MDL2 Assets"
FontSize="8.5"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"
Margin="0,0,4,0"/>
<TextBlock x:Name="CompactNowLabel"
Text="압축"
FontSize="9"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
</Border>
<Popup x:Name="TokenUsagePopup"
Grid.Column="2"
PlacementTarget="{Binding ElementName=TokenUsageCard}"
Placement="Top"
HorizontalOffset="-8"
VerticalOffset="-10"
AllowsTransparency="True"
PopupAnimation="Fade"
StaysOpen="True">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="14"
Padding="12,10"
MinWidth="186"
MouseEnter="TokenUsagePopup_MouseEnter"
MouseLeave="TokenUsagePopup_MouseLeave">
<Border.Effect>
<DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.16"/>
</Border.Effect>
<StackPanel>
<TextBlock x:Name="TokenUsagePopupTitle"
Text="컨텍스트 창"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="TokenUsagePopupUsage"
Margin="0,6,0,0"
Text="76% 창"
FontSize="18"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="TokenUsagePopupDetail"
Margin="0,2,0,0"
Text="197k/258k 캐시 토큰 사용"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"
TextWrapping="Wrap"/>
<TextBlock x:Name="TokenUsagePopupCompact"
Margin="0,8,0,0"
Text="AX Agent가 컨텍스트를 자동으로 압축합니다"
FontSize="11.5"
Foreground="{DynamicResource PrimaryText}"
TextWrapping="Wrap"/>
</StackPanel>
</Border>
</Popup>
<Button x:Name="BtnTemplateSelector"
Style="{StaticResource OutlineHoverBtn}"
Grid.Column="3"
HorizontalAlignment="Right"
Margin="6,0,0,0"
MinHeight="28"
MinWidth="68"
Padding="8,3"
Click="BtnTemplateSelector_Click"
ToolTip="프롬프트 템플릿"
WindowChrome.IsHitTestVisibleInChrome="True">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE8A5;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock Text="프리셋" FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
<TextBlock Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="4,1,0,0"/>
</StackPanel>
</Button>
</Grid>
<!-- Row 1: 모델/권한 빠른 설정 팝업 -->
<Popup x:Name="InlineSettingsPanel"
Grid.Row="1"
PlacementTarget="{Binding ElementName=BtnModelSelector}"
Placement="Bottom"
HorizontalOffset="0"
VerticalOffset="8"
StaysOpen="False"
AllowsTransparency="True"
PopupAnimation="Fade">
<Border Margin="0"
Padding="10,10,10,8"
CornerRadius="16"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Background="{DynamicResource LauncherBackground}"
MinWidth="404"
MaxWidth="520">
<Border.Effect>
<DropShadowEffect BlurRadius="24" ShadowDepth="0" Opacity="0.16"/>
</Border.Effect>
<StackPanel>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="모델과 추론"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<TextBlock Grid.Column="1"
x:Name="InlineSettingsHintText"
Margin="6,0,0,0"
Text="서비스, 모델, 추론을 여기서 바로 바꿉니다"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
<Button Grid.Column="2"
x:Name="BtnInlineSettingsClose"
Style="{StaticResource GhostBtn}"
Padding="5,3"
Click="BtnInlineSettingsClose_Click"
ToolTip="설정 패널 닫기">
<TextBlock Text="&#xE711;"
FontFamily="Segoe MDL2 Assets"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</Grid>
<ComboBox x:Name="CmbInlineService"
Visibility="Collapsed"
SelectionChanged="CmbInlineService_SelectionChanged"/>
<ComboBox x:Name="CmbInlineModel"
Visibility="Collapsed"
SelectionChanged="CmbInlineModel_SelectionChanged"/>
<TextBlock Text="서비스"
Margin="0,0,0,5"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel x:Name="InlineServiceCardPanel"
Margin="0,0,0,8"/>
<TextBlock Text="모델"
Margin="0,0,0,5"
FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
<StackPanel x:Name="InlineModelListPanel"
Margin="0,0,0,8"/>
<WrapPanel x:Name="InlineSettingsQuickActions" Margin="0,0,0,0">
<Button x:Name="BtnInlineFastMode"
Style="{StaticResource OutlineHoverBtn}"
Margin="0,0,6,6"
Padding="9,4"
Click="BtnInlineFastMode_Click"/>
<Button x:Name="BtnInlineReasoning"
Style="{StaticResource OutlineHoverBtn}"
Margin="0,0,6,6"
Padding="9,4"
Click="BtnInlineReasoning_Click"/>
<Button x:Name="BtnInlinePlanMode"
Style="{StaticResource OutlineHoverBtn}"
Visibility="Collapsed"
IsEnabled="False"
Margin="0,0,6,6"
Padding="9,4"/>
<Button x:Name="BtnInlinePermission"
Style="{StaticResource OutlineHoverBtn}"
Visibility="Collapsed"
Margin="0,0,6,6"
Padding="9,4"
Click="BtnInlinePermission_Click"/>
<Button x:Name="BtnInlineSkill"
Style="{StaticResource OutlineHoverBtn}"
Margin="0,0,6,6"
Padding="10,5"
Click="BtnInlineSkill_Click"
Visibility="Collapsed"/>
<Button x:Name="BtnInlineCommandBrowser"
Style="{StaticResource OutlineHoverBtn}"
Margin="0,0,6,6"
Padding="10,5"
Click="BtnInlineCommandBrowser_Click"
Visibility="Collapsed"/>
<Button x:Name="BtnInlineMcp"
Style="{StaticResource OutlineHoverBtn}"
Margin="0,0,6,6"
Padding="10,5"
Click="BtnInlineMcp_Click"
Visibility="Collapsed"/>
</WrapPanel>
</StackPanel>
</Border>
</Popup>
<!-- Row 2: 첨부 파일 목록 -->
<ItemsControl x:Name="AttachedFilesPanel" Grid.Row="2"
Margin="8,0,8,2" Visibility="Collapsed">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<!-- 입력 영역 (Row 3) -->
<Grid Grid.Row="3" Margin="0,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox x:Name="InputBox"
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
Foreground="{DynamicResource PrimaryText}"
Background="Transparent"
CaretBrush="{DynamicResource AccentColor}"
BorderThickness="0" Padding="14,10"
VerticalAlignment="Top"
VerticalContentAlignment="Top"
AcceptsReturn="True"
PreviewKeyDown="InputBox_PreviewKeyDown"
TextChanged="InputBox_TextChanged"
TextWrapping="Wrap"
MinHeight="40" MaxHeight="148"
VerticalScrollBarVisibility="Auto"/>
<!-- 워터마크 (프롬프트 카드 안내문구) -->
<TextBlock x:Name="InputWatermark"
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
Foreground="{DynamicResource SecondaryText}"
Padding="14,10" IsHitTestVisible="False"
TextWrapping="Wrap" Opacity="0.7"
Visibility="Collapsed"/>
<!-- 슬래시 명령어 칩 (명령 선택 후 표시) -->
<Border x:Name="SlashCommandChip"
HorizontalAlignment="Left" VerticalAlignment="Top"
Margin="10,7,0,0" Visibility="Collapsed"
CornerRadius="7" Padding="8,3,4,3"
Background="{DynamicResource ItemHoverBackground}"
IsHitTestVisible="True">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="SlashChipText"
FontSize="12.5" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
<Border x:Name="SlashChipClose" Cursor="Hand"
Padding="4,0,2,0" Margin="2,0,0,0"
VerticalAlignment="Center">
<TextBlock Text="&#xE711;"
FontFamily="Segoe MDL2 Assets"
FontSize="8" Foreground="{DynamicResource AccentColor}"/>
</Border>
</StackPanel>
</Border>
</Grid>
<!-- 파일 첨부 -->
<Button x:Name="BtnAttach" Style="{StaticResource GhostBtn}" Grid.Column="1"
Width="32" Height="32" Margin="0,0,6,0" VerticalAlignment="Bottom"
Click="BtnAttach_Click" ToolTip="파일 첨부"
WindowChrome.IsHitTestVisibleInChrome="True"
AllowDrop="True">
<TextBlock Text="&#xE723;" FontFamily="Segoe MDL2 Assets" FontSize="14"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<!-- 내보내기 -->
<Button Style="{StaticResource GhostBtn}" Grid.Column="2"
Width="32" Height="32" Margin="0,0,4,0" VerticalAlignment="Bottom"
Click="BtnExport_Click" ToolTip="대화 내보내기"
WindowChrome.IsHitTestVisibleInChrome="True"
Visibility="Collapsed">
<TextBlock Text="&#xEDE1;" FontFamily="Segoe MDL2 Assets" FontSize="14"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<!-- 일시정지 -->
<Border x:Name="BtnPause" Grid.Column="3"
Width="30" Height="30" Margin="0,0,6,0"
CornerRadius="10" Cursor="Hand"
Background="{DynamicResource ItemHoverBackground}" Visibility="Collapsed"
VerticalAlignment="Bottom"
MouseLeftButtonUp="BtnPause_Click"
ToolTip="일시정지 / 재개">
<TextBlock x:Name="PauseIcon" Text="&#xE769;"
FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<!-- 중지/전송 -->
<Button x:Name="BtnStop" Grid.Column="3"
Width="36" Height="36" Margin="6,0,6,0"
Cursor="Hand" Click="BtnStop_Click"
VerticalAlignment="Bottom" Visibility="Collapsed"
WindowChrome.IsHitTestVisibleInChrome="True">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border Background="#DC2626" CornerRadius="12">
<TextBlock Text="&#xE71A;" FontFamily="Segoe MDL2 Assets"
FontSize="13" Foreground="White"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
<Button x:Name="BtnSend" Grid.Column="4"
Width="38" Height="38" Margin="6,0,2,0"
Cursor="Hand" Click="BtnSend_Click"
VerticalAlignment="Bottom">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd" Background="{DynamicResource AccentColor}"
CornerRadius="12">
<TextBlock Text="&#xE724;" FontFamily="Segoe MDL2 Assets"
FontSize="13" Foreground="White"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.85"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Bd" Property="Opacity" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
</Grid>
</Border>
</Grid> <!-- 글로우 + 입력 Grid 닫기 -->
<!-- ── 폴더 바 + 권한 메뉴 (입력 하단, Cowork/Code 탭 전용) ── -->
<Border x:Name="FolderBar" Visibility="Collapsed"
Margin="4,4,4,0"
MinHeight="32"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
CornerRadius="0"
Padding="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <!-- 0: 폴더 아이콘 -->
<ColumnDefinition Width="*"/> <!-- 1: 폴더 경로 -->
<ColumnDefinition Width="Auto"/> <!-- 2: 폴더 해제 X -->
<ColumnDefinition Width="Auto"/> <!-- 3: 구분선 -->
<ColumnDefinition Width="Auto"/> <!-- 4: 포맷/디자인 -->
<ColumnDefinition Width="Auto"/> <!-- 5: 구분선 -->
<ColumnDefinition Width="Auto"/> <!-- 6: 데이터 활용 -->
<ColumnDefinition Width="Auto"/> <!-- 7: 구분선 -->
<ColumnDefinition Width="Auto"/> <!-- 8: 권한 -->
<ColumnDefinition Width="Auto"/> <!-- 9: 구분선 -->
<ColumnDefinition Width="Auto"/> <!-- 10: git -->
</Grid.ColumnDefinitions>
<!-- 폴더 아이콘 -->
<TextBlock Grid.Column="0" Text="&#xED25;" FontFamily="Segoe MDL2 Assets" FontSize="14"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="6,0,4,0"/>
<!-- 폴더 경로 (클릭 시 최근 폴더 메뉴) -->
<TextBlock x:Name="FolderPathLabel" Grid.Column="1"
Text="폴더를 선택하세요" FontSize="13"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Cursor="Hand" MouseLeftButtonUp="FolderPathLabel_Click"
ToolTip="클릭하여 폴더 변경"/>
<!-- 폴더 해제 -->
<Button Grid.Column="2" Style="{StaticResource GhostBtn}"
Padding="6,4" Click="BtnFolderClear_Click" ToolTip="폴더 연결 해제">
<TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<!-- 구분선 -->
<Border Grid.Column="3" Width="1" Height="18" Margin="4,0"
Background="{DynamicResource SeparatorColor}"/>
<!-- 포맷/디자인 드롭다운 (Cowork 전용, 코드비하인드에서 동적 생성) -->
<StackPanel x:Name="MoodIconPanel" Grid.Column="4" Orientation="Horizontal"
VerticalAlignment="Center"/>
<!-- 구분선 (포맷/디자인 뒤) -->
<Border x:Name="FormatMoodSeparator" Grid.Column="5" Width="1" Height="18" Margin="4,0"
Background="{DynamicResource SeparatorColor}" Visibility="Collapsed"/>
<!-- 데이터 활용 메뉴 -->
<Border x:Name="BtnDataUsage" Grid.Column="6" Cursor="Hand"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
Padding="10,5"
CornerRadius="8"
MouseLeftButtonUp="BtnDataUsage_Click"
ToolTip="폴더 데이터 활용 수준">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="DataUsageIcon" Text="&#xE9F5;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="DataUsageLabel" Text="활용하지 않음" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 구분선 -->
<Border Grid.Column="7" Width="1" Height="18" Margin="4,0"
Background="{DynamicResource SeparatorColor}"/>
<!-- 권한 메뉴 -->
<Button x:Name="BtnPermission" Grid.Column="8" Style="{StaticResource OutlineHoverBtn}"
Padding="10,5" Click="BtnPermission_Click" ToolTip="파일 접근 권한">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="PermissionIcon" Text="&#xE8D7;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="PermissionLabel" Text="활용하지 않음" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Border x:Name="GitBranchSeparator" Grid.Column="9" Width="1" Height="18" Margin="4,0"
Visibility="Collapsed"
Background="{DynamicResource SeparatorColor}"/>
<Button x:Name="BtnGitBranch"
Grid.Column="10"
Style="{StaticResource GhostBtn}"
Padding="10,5"
Margin="2,0,0,0"
Visibility="Collapsed"
Click="BtnGitBranch_Click"
ToolTip="현재 Git 브랜치 상태">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE943;"
FontFamily="Segoe MDL2 Assets"
FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="0,0,4,0"/>
<TextBlock x:Name="GitBranchLabel"
Text="main"
FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
<TextBlock x:Name="GitBranchFilesText"
Text=""
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="6,0,0,0"/>
<TextBlock x:Name="GitBranchAddedText"
Text=""
FontSize="11"
Foreground="#16A34A"
VerticalAlignment="Center"
Margin="6,0,0,0"/>
<TextBlock x:Name="GitBranchDeletedText"
Text=""
FontSize="11"
Foreground="#DC2626"
VerticalAlignment="Center"
Margin="4,0,0,0"/>
<TextBlock Text="&#xE70D;"
FontFamily="Segoe MDL2 Assets"
FontSize="8"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"
Margin="6,1,0,0"/>
</StackPanel>
</Button>
</Grid>
</Border>
<!-- 포맷 선택 팝업 -->
<Popup x:Name="FormatMenuPopup" PlacementTarget="{Binding ElementName=BtnFormatMenu}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="12"
Padding="6" MinWidth="200">
<StackPanel x:Name="FormatMenuItems" Margin="2"/>
</Border>
</Popup>
<!-- 디자인 선택 팝업 -->
<Popup x:Name="MoodMenuPopup" PlacementTarget="{Binding ElementName=BtnMoodMenu}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="12"
Padding="6" MinWidth="380" MaxHeight="480">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel x:Name="MoodMenuItems" Margin="2"/>
</ScrollViewer>
</Border>
</Popup>
</StackPanel>
</Border>
<!-- ── 파일 탐색기 패널 ── -->
<Border x:Name="FileBrowserPanel" Grid.Row="5" Visibility="Collapsed"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
MaxHeight="220">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- 툴바 -->
<Border Grid.Row="0" Background="{DynamicResource HintBackground}" Padding="8,4">
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Text="&#xED25;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="FileBrowserTitle" Text="파일 탐색기"
FontSize="11.5" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button Style="{StaticResource GhostBtn}" Padding="3"
Click="BtnFileBrowserRefresh_Click" ToolTip="새로고침" Cursor="Hand">
<TextBlock Text="&#xE72C;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource GhostBtn}" Padding="3"
Click="BtnFileBrowserOpenFolder_Click" ToolTip="탐색기에서 열기" Cursor="Hand">
<TextBlock Text="&#xE8A7;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource GhostBtn}" Padding="3"
Click="BtnFileBrowserClose_Click" ToolTip="닫기" Cursor="Hand">
<TextBlock Text="&#xE70D;" FontFamily="Segoe MDL2 Assets" FontSize="9"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- 트리뷰 -->
<TreeView x:Name="FileTreeView" Grid.Row="1"
Background="Transparent" BorderThickness="0"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5" Padding="4,2"/>
</Grid>
</Border>
<!-- ── 하단 상태바 (AX Agent 스타일) ── -->
<Border Grid.Row="6" Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
Padding="10,3,10,3" Height="26">
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left"
VerticalAlignment="Center">
<!-- 상태 아이콘 (다이아몬드 + 애니메이션) -->
<TextBlock x:Name="StatusDiamond" Text="●" FontSize="8.5"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center" Margin="0,0,5,0"
RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<RotateTransform x:Name="StatusDiamondRotate" Angle="0"/>
</TextBlock.RenderTransform>
</TextBlock>
<TextBlock x:Name="StatusLabel" Text="대기 중" FontSize="10"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
VerticalAlignment="Center">
<Border x:Name="RuntimeActivityBadge" Visibility="Collapsed"
CornerRadius="4" Padding="3,1" Margin="0,0,4,0"
Background="{DynamicResource HintBackground}" ToolTip="현재 실행 중인 작업"
Cursor="Hand"
MouseLeftButtonUp="RuntimeTaskSummary_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE945;" FontFamily="Segoe MDL2 Assets" FontSize="8"
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,2,0"/>
<TextBlock x:Name="RuntimeActivityLabel" Text="실행 중 0"
FontSize="8.25" Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</StackPanel>
</Border>
<TextBlock x:Name="LastCompletedLabel" Text=""
FontSize="8.75"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,5,0"
MaxWidth="160" TextTrimming="CharacterEllipsis"
Visibility="Collapsed"
Cursor="Hand"
MouseLeftButtonUp="RuntimeTaskSummary_Click"/>
<Button x:Name="BtnToggleExecutionLog" Style="{StaticResource GhostBtn}"
Padding="4,1" Margin="0,0,4,0"
Click="BtnToggleExecutionLog_Click"
ToolTip="실행 로그 표시/숨기기">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="ExecutionLogIcon" Text="&#xE7C1;"
FontFamily="Segoe MDL2 Assets" FontSize="8"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,2,0"/>
<TextBlock x:Name="ExecutionLogLabel" Text="실행 로그 0"
FontSize="8.25"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Border x:Name="SubAgentIndicator" Visibility="Collapsed"
CornerRadius="4" Padding="3,1" Margin="0,0,4,0"
Background="{DynamicResource HintBackground}" ToolTip="실행 중인 서브에이전트">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE945;" FontFamily="Segoe MDL2 Assets" FontSize="8"
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,2,0"/>
<TextBlock x:Name="SubAgentIndicatorLabel" Text="서브에이전트 0"
FontSize="8.25" Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 워크플로우 분석기 열기 버튼 (개발자 모드) -->
<Border x:Name="BtnShowAnalyzer" Visibility="Collapsed"
CornerRadius="4" Padding="3.5,1" Margin="0,0,5,0"
Background="{DynamicResource HintBackground}" Cursor="Hand" ToolTip="워크플로우 분석기"
MouseLeftButtonUp="BtnShowAnalyzer_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE9D9;" FontFamily="Segoe MDL2 Assets" FontSize="8.5"
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,2.5,0"/>
<TextBlock Text="분석기" FontSize="8.75" Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</StackPanel>
</Border>
<TextBlock x:Name="StatusElapsed" Text="" FontSize="8.25"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBlock x:Name="StatusTokens" Text="" FontSize="8.25"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Grid>
</Border>
</Grid>
<!-- ══ AX Agent 설정 오버레이 (채팅 화면 내부 전체 덮기) ══ -->
<Border x:Name="AgentSettingsOverlay"
Grid.Column="2"
Grid.ColumnSpan="3"
Margin="0,48,0,0"
Background="{DynamicResource LauncherBackground}"
Visibility="Collapsed"
Panel.ZIndex="120">
<Grid Margin="0">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="0"
Padding="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="172"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.RowSpan="2"
Grid.Column="0"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,1,0">
<StackPanel Margin="14,16,12,12">
<Button Style="{StaticResource GhostBtn}"
HorizontalAlignment="Left"
Padding="0"
Margin="0,0,0,10"
Click="BtnOverlaySettingsClose_Click"
ToolTip="대화로 돌아가기">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE72B;"
FontFamily="Segoe MDL2 Assets"
FontSize="13"
Foreground="{DynamicResource SecondaryText}"
Margin="0,0,6,0"
VerticalAlignment="Center"/>
<StackPanel>
<TextBlock Text="설정"
FontSize="18"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="AX Agent"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"
Margin="0,1,0,0"/>
</StackPanel>
</StackPanel>
</Button>
<RadioButton x:Name="OverlayNavBasic"
Content="공통"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Checked="OverlayNav_Checked"
Tag="basic"
IsChecked="True"/>
<RadioButton x:Name="OverlayNavChat"
Content="채팅"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="chat"/>
<RadioButton x:Name="OverlayNavShared"
Content="코워크/코드"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="shared"/>
<RadioButton x:Name="OverlayNavCowork"
Content="코워크"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="cowork"/>
<RadioButton x:Name="OverlayNavCode"
Content="코드"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="code"/>
<RadioButton x:Name="OverlayNavDev"
Content="개발자"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="dev"/>
<RadioButton x:Name="OverlayNavTools"
Content="도구"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="tools"/>
<RadioButton x:Name="OverlayNavSkill"
Content="스킬"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="skill"/>
<RadioButton x:Name="OverlayNavBlock"
Content="차단"
GroupName="OverlayNav"
Style="{StaticResource SettingsNavBtn}"
HorizontalAlignment="Stretch"
Margin="0,4,0,0"
Checked="OverlayNav_Checked"
Tag="block"/>
</StackPanel>
</Border>
<ScrollViewer Grid.Row="0" Grid.RowSpan="2" Grid.Column="1"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
Padding="14,14,20,20">
<StackPanel>
<Border x:Name="OverlaySectionHeading"
Background="Transparent"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0"
CornerRadius="0"
Padding="0"
Margin="0,0,0,12">
<StackPanel>
<TextBlock x:Name="OverlayTopHeadingTitle"
Text="공통 설정"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="OverlayTopHeadingDescription"
Text="Chat, Cowork, Code에서 공통으로 쓰는 기본 설정입니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
</Border>
<StackPanel x:Name="OverlayThemeStylePanel"
Visibility="Collapsed"
Margin="0,0,0,12">
<TextBlock Text="테마 스타일"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="AX Agent 전용 시각 언어를 고릅니다. 채팅 본문과 설정 카드 모두 같은 스타일로 바뀝니다."
Margin="0,4,0,8"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel>
<Border x:Name="OverlayThemeStyleClawCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeStyleClawCard_MouseLeftButtonUp">
<TextBlock Text="Claw"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayThemeStyleCodexCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeStyleCodexCard_MouseLeftButtonUp">
<TextBlock Text="Codex"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayThemeStyleSlateCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeStyleSlateCard_MouseLeftButtonUp">
<TextBlock Text="Slate"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
</WrapPanel>
</StackPanel>
<StackPanel x:Name="OverlayThemePanel"
Visibility="Collapsed"
Margin="0,0,0,12">
<TextBlock Text="테마 모드"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="시스템 테마를 따르거나, AX Agent만 별도로 라이트/다크 모드로 고정할 수 있습니다."
Margin="0,4,0,8"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel>
<Border x:Name="OverlayThemeSystemCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeSystemCard_MouseLeftButtonUp">
<TextBlock Text="System"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayThemeLightCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeLightCard_MouseLeftButtonUp">
<TextBlock Text="Light"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayThemeDarkCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayThemeDarkCard_MouseLeftButtonUp">
<TextBlock Text="Dark"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
</WrapPanel>
</StackPanel>
<Border x:Name="OverlaySectionService"
Background="Transparent"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,0,1"
CornerRadius="0"
Padding="0,0,0,12"
Margin="0,0,0,10">
<StackPanel>
<TextBlock Text="서비스와 모델"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="대화에 사용할 서비스와 모델 연결을 관리합니다."
Margin="0,4,0,10"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel Margin="0,0,0,8">
<Border x:Name="OverlaySvcOllamaCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlaySvcOllamaCard_MouseLeftButtonUp">
<TextBlock Text="Ollama" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlaySvcVllmCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlaySvcVllmCard_MouseLeftButtonUp">
<TextBlock Text="vLLM" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlaySvcGeminiCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlaySvcGeminiCard_MouseLeftButtonUp">
<TextBlock Text="Gemini" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlaySvcClaudeCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlaySvcClaudeCard_MouseLeftButtonUp">
<TextBlock Text="Claude" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
</WrapPanel>
<Grid x:Name="OverlayServiceSelectRow" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,6,0">
<StackPanel Orientation="Horizontal" Margin="0,0,0,6">
<TextBlock Text="서비스"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">현재 대화에서 사용할 AI 서비스 연결을 선택합니다. 사내 모드에서는 내부 연결만 유지하는 데도 함께 쓰입니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayService"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayService_SelectionChanged"/>
</StackPanel>
<StackPanel Grid.Column="1" Margin="6,0,0,0">
<StackPanel Orientation="Horizontal" Margin="0,0,0,6">
<TextBlock Text="모델"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">선택한 서비스 안에서 실제 응답을 생성할 모델입니다. 모델에 따라 속도, 문장 길이, 코드 품질이 달라질 수 있습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayModel"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayModel_SelectionChanged"/>
</StackPanel>
</Grid>
<Grid Margin="0,2,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="현재 서비스"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"
Margin="0,0,0,8"/>
<TextBlock x:Name="OverlaySelectedServiceText"
Grid.Column="1"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"
Margin="0,0,0,8"/>
<TextBlock Grid.Row="1"
Text="현재 모델"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
<TextBlock x:Name="OverlaySelectedModelText"
Grid.Row="1"
Grid.Column="1"
FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</Grid>
<Grid x:Name="OverlayServiceDetailPanel" Margin="0,12,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel x:Name="OverlayEndpointFieldPanel"
Margin="0,0,6,0">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="OverlayEndpointLabel"
Text="기본 서버 주소"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">Ollama, vLLM 같은 연결형 서비스의 기본 주소입니다. 사내 서버나 프록시를 쓰는 경우 이 값을 바꿔 연결 대상을 맞춥니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock x:Name="OverlayEndpointHint"
Text="선택한 서비스의 기본 연결 주소를 입력합니다."
Margin="0,4,0,6"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<TextBox x:Name="TxtOverlayServiceEndpoint"
LostFocus="TxtOverlayServiceEndpoint_LostFocus"
Padding="9,7"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</StackPanel>
<StackPanel x:Name="OverlayApiKeyFieldPanel"
Grid.Column="1"
Margin="6,0,0,0">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="OverlayApiKeyLabel"
Text="API 키"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">Gemini, Claude처럼 인증이 필요한 서비스만 입력합니다. 빈 값이면 인증 없이 접속 가능한 연결만 사용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock x:Name="OverlayApiKeyHint"
Text="접근 제어가 필요한 경우에만 입력합니다."
Margin="0,4,0,6"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<PasswordBox x:Name="TxtOverlayServiceApiKey"
LostFocus="TxtOverlayServiceApiKey_LostFocus"
Padding="9,7"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
FontSize="12"/>
</StackPanel>
</Grid>
</StackPanel>
</Border>
<Border x:Name="OverlaySectionQuick"
Background="Transparent"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0,0,0,1"
CornerRadius="0"
Padding="0,0,0,12"
Margin="0,0,0,10">
<StackPanel>
<TextBlock Text="실행 방식"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="권한, 계획, 추론 방식을 같은 기준으로 바로 바꿉니다."
Margin="0,4,0,10"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="호출 간격 최적화"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Width="16" Height="16" CornerRadius="8" Background="{DynamicResource ItemHoverBackground}" Margin="6,0,0,0" Cursor="Help" VerticalAlignment="Center">
<TextBlock Text="?" FontSize="10" FontWeight="Bold" Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap" Foreground="White" FontSize="12" LineHeight="18" MaxWidth="280">호출 간격을 조정해 제한이 있는 환경에서 더 안정적으로 동작하게 합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="호출 간격을 조정해 제한이 있는 환경에서 더 안정적으로 동작합니다."
Margin="0,3,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayFastMode"
Grid.Column="1"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayFastMode_SelectionChanged">
<ComboBoxItem Content="Fast · 켜짐" Tag="on"/>
<ComboBoxItem Content="Fast · 꺼짐" Tag="off"/>
</ComboBox>
</Grid>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="의사결정 수준"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Width="16" Height="16" CornerRadius="8" Background="{DynamicResource ItemHoverBackground}" Margin="6,0,0,0" Cursor="Help" VerticalAlignment="Center">
<TextBlock Text="?" FontSize="10" FontWeight="Bold" Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap" Foreground="White" FontSize="12" LineHeight="18" MaxWidth="280">계획과 확인 단계를 얼마나 신중하게 가져갈지 정합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="계획과 확인 단계를 얼마나 신중하게 가져갈지 정합니다."
Margin="0,3,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayReasoning"
Grid.Column="1"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayReasoning_SelectionChanged">
<ComboBoxItem Content="추론 · 낮음" Tag="minimal"/>
<ComboBoxItem Content="추론 · 중간" Tag="normal"/>
<ComboBoxItem Content="추론 · 높음" Tag="detailed"/>
</ComboBox>
</Grid>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="실행 전 계획"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Width="16" Height="16" CornerRadius="8" Background="{DynamicResource ItemHoverBackground}" Margin="6,0,0,0" Cursor="Help" VerticalAlignment="Center">
<TextBlock Text="?" FontSize="10" FontWeight="Bold" Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap" Foreground="White" FontSize="12" LineHeight="18" MaxWidth="280">실행 전에 계획 단계를 둘지 바로 작업으로 넘어갈지 선택합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="실행 전에 계획 단계를 둘지 바로 작업으로 넘어갈지 선택합니다."
Margin="0,3,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayPlanMode"
Grid.Column="1"
Visibility="Collapsed"
Style="{StaticResource OverlayComboBox}">
<ComboBoxItem Content="계획 · 끄기" Tag="off"/>
<ComboBoxItem Content="계획 · 자동 계획" Tag="auto"/>
<ComboBoxItem Content="계획 · 항상 계획" Tag="always"/>
</ComboBox>
</Grid>
<Grid Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="권한 모드"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Width="16" Height="16" CornerRadius="8" Background="{DynamicResource ItemHoverBackground}" Margin="6,0,0,0" Cursor="Help" VerticalAlignment="Center">
<TextBlock Text="?" FontSize="10" FontWeight="Bold" Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap" Foreground="White" FontSize="12" LineHeight="18" MaxWidth="280">파일 접근과 실행 요청을 어떤 기준으로 승인할지 결정합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="파일 접근과 실행 요청을 어떤 기준으로 승인할지 결정합니다."
Margin="0,3,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayPermission"
Grid.Column="1"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayPermission_SelectionChanged">
<ComboBoxItem Content="권한 · 차단" Tag="Deny"/>
<ComboBoxItem Content="권한 · 권한 요청" Tag="Default"/>
<ComboBoxItem Content="권한 · 편집 자동 승인" Tag="AcceptEdits"/>
<ComboBoxItem Content="권한 · 계획 모드" Tag="Plan"/>
<ComboBoxItem Content="권한 · 권한 건너뛰기" Tag="BypassPermissions"/>
</ComboBox>
</Grid>
</StackPanel>
</Border>
<Border x:Name="OverlaySectionDetail"
Background="Transparent"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="0"
CornerRadius="0"
Padding="0"
Margin="0,0,0,0">
<StackPanel>
<TextBlock x:Name="OverlayAnchorCommon"
Text="세부 설정"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
Visibility="Collapsed"/>
<TextBlock Text="Chat, Cowork, Code에서 공통으로 쓰는 기본 설정입니다."
Margin="0,4,0,10"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
Visibility="Collapsed"/>
<Grid x:Name="OverlayAiEnabledRow" Margin="0,0,0,12" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="AX Agent 사용"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="비활성화하면 AX Agent 대화 기능이 숨겨집니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayAiEnabled"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"
Checked="ChkOverlayAiEnabled_Changed"
Unchecked="ChkOverlayAiEnabled_Changed"/>
</Grid>
<Grid x:Name="OverlayDefaultOutputFormatRow" Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="문서 형태"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">문서나 결과물을 파일로 만들 때 우선 고려할 출력 형식입니다. 자동으로 두면 요청 내용을 보고 가장 맞는 형식을 선택합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="기본은 AI 자동 선택으로 두고 필요할 때만 바꿉니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayDefaultOutputFormat"
Grid.Column="1"
MinWidth="160"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayDefaultOutputFormat_SelectionChanged">
<ComboBoxItem Content="AI 자동 · 자동" Tag="auto"/>
<ComboBoxItem Content="AI 자동 · Word" Tag="docx"/>
<ComboBoxItem Content="AI 자동 · HTML 보고서" Tag="html"/>
<ComboBoxItem Content="AI 자동 · Excel" Tag="xlsx"/>
<ComboBoxItem Content="AI 자동 · PDF" Tag="pdf"/>
<ComboBoxItem Content="AI 자동 · Markdown" Tag="md"/>
<ComboBoxItem Content="AI 자동 · 텍스트" Tag="txt"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayDefaultMoodRow" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="디자인 스타일"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">HTML 보고서나 미리보기 화면을 만들 때 기본으로 적용할 분위기입니다. 같은 내용도 보고서 톤과 카드 스타일이 달라집니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="HTML/미리보기 기본 스타일을 설정합니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayDefaultMood"
Grid.Column="1"
MinWidth="160"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayDefaultMood_SelectionChanged"/>
</Grid>
<Grid x:Name="OverlayPdfExportPathRow" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="280"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="PDF 내보내기 기본 경로"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">대화 내용을 PDF로 저장할 때 기본으로 제안할 폴더입니다. 비워 두면 바탕화면을 사용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="빈 값이면 바탕화면을 기본 경로로 사용합니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<TextBox x:Name="TxtOverlayPdfExportPath"
Grid.Column="1"
LostFocus="TxtOverlayPdfExportPath_LostFocus"
Padding="9,7"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</Grid>
<Border x:Name="OverlayToggleImageInput" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="이미지 입력 활성화"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">스크린샷 붙여넣기와 이미지 파일 첨부를 허용합니다. 끄면 텍스트와 일반 파일만 다룹니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="이미지 붙여넣기와 파일 첨부를 AX Agent 대화에 허용합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableImageInput"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<StackPanel x:Name="OverlayModelEditorPanel">
<TextBlock Text="등록된 모델 선택"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"
Margin="0,4,0,6"/>
<TextBlock Text="사내 서비스는 등록한 모델 중에서 선택하고, 여기서 바로 추가/편집할 수 있습니다."
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"
Margin="0,0,0,8"/>
<WrapPanel x:Name="OverlayModelChipPanel" Margin="0,2,0,0"/>
<Grid x:Name="OverlayRegisteredModelsHeader"
Margin="0,10,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="등록 모델 관리"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Button x:Name="BtnOverlayAddModel"
Grid.Column="1"
Style="{StaticResource OutlineHoverBtn}"
MinHeight="28"
Padding="10,4"
Click="BtnOverlayAddModel_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;"
FontFamily="Segoe MDL2 Assets"
FontSize="11"
Foreground="{DynamicResource AccentColor}"
Margin="0,0,5,0"
VerticalAlignment="Center"/>
<TextBlock Text="모델 추가"
FontSize="11.5"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
<StackPanel x:Name="OverlayRegisteredModelsPanel"
Margin="0,0,0,8"/>
<TextBox x:Name="TxtOverlayModelInput" Visibility="Collapsed"/>
</StackPanel>
<Grid x:Name="OverlayAnchorPermission" Margin="12,12,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="운영 모드"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">사내 모드는 외부 검색, 외부 URL 열기, 외부 호출을 더 강하게 제한합니다. 사외 모드는 외부 서비스와 웹 작업까지 허용하는 확장 모드입니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayOperationMode"
Grid.Column="1"
MinWidth="140"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayOperationMode_SelectionChanged">
<ComboBoxItem Content="모드 · 사내 모드" Tag="internal"/>
<ComboBoxItem Content="모드 · 사외 모드" Tag="external"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayFolderDataUsageRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="폴더 데이터 활용"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">현재 폴더의 파일과 문맥을 응답에 얼마나 적극적으로 활용할지 정합니다. 적극 활용은 관련 파일을 더 넓게 참조하고, 활용하지 않음은 현재 입력 중심으로만 답합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayFolderDataUsage"
Grid.Column="1"
MinWidth="140"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayFolderDataUsage_SelectionChanged">
<ComboBoxItem Content="데이터 · 활용하지 않음" Tag="none"/>
<ComboBoxItem Content="데이터 · 소극 활용" Tag="passive"/>
<ComboBoxItem Content="데이터 · 적극 활용" Tag="active"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayTlsRow" Visibility="Collapsed" Margin="0,0,0,0">
<CheckBox x:Name="OverlayHiddenTlsToggle" Visibility="Collapsed"/>
</Grid>
<Grid x:Name="OverlayAnchorAdvanced" Margin="0,14,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="압축 시작 한도(%)"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">컨텍스트 사용량이 이 비율에 도달하면 오래된 대화를 먼저 요약해 공간을 비웁니다. 값을 낮추면 더 일찍 압축해 안정성이 올라갑니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1">
<WrapPanel HorizontalAlignment="Right">
<Border x:Name="OverlayCompact60Card"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayCompactPresetCard_MouseLeftButtonUp"
Tag="60">
<TextBlock Text="60%" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayCompact70Card"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayCompactPresetCard_MouseLeftButtonUp"
Tag="70">
<TextBlock Text="70%" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayCompact80Card"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayCompactPresetCard_MouseLeftButtonUp"
Tag="80">
<TextBlock Text="80%" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayCompact90Card"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,0,8"
MouseLeftButtonUp="OverlayCompactPresetCard_MouseLeftButtonUp"
Tag="90">
<TextBlock Text="90%" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
</WrapPanel>
<TextBox x:Name="TxtOverlayContextCompactTriggerPercent"
Visibility="Collapsed"
LostFocus="TxtOverlayContextCompactTriggerPercent_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayMaxContextTokensRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="최대 컨텍스트 토큰"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">한 번의 작업에서 AX Agent가 유지할 수 있는 최대 문맥 크기입니다. 너무 낮으면 긴 대화가 빨리 잘리고, 너무 높으면 느려질 수 있습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1">
<WrapPanel HorizontalAlignment="Right">
<Border x:Name="OverlayContext4KCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayContextPresetCard_MouseLeftButtonUp"
Tag="4096">
<TextBlock Text="4K" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayContext16KCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayContextPresetCard_MouseLeftButtonUp"
Tag="16384">
<TextBlock Text="16K" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayContext64KCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayContextPresetCard_MouseLeftButtonUp"
Tag="65536">
<TextBlock Text="64K" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayContext256KCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayContextPresetCard_MouseLeftButtonUp"
Tag="262144">
<TextBlock Text="256K" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
<Border x:Name="OverlayContext1MCard"
Cursor="Hand"
CornerRadius="8"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="9,7"
Margin="0,0,0,8"
MouseLeftButtonUp="OverlayContextPresetCard_MouseLeftButtonUp"
Tag="1000000">
<TextBlock Text="1M" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
</WrapPanel>
<TextBox x:Name="TxtOverlayMaxContextTokens"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxContextTokens_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayTemperatureRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Temperature"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">낮을수록 더 일관되고 정확한 답변 쪽으로, 높을수록 더 자유롭고 창의적인 답변 쪽으로 기울어집니다. 일반 업무형 응답은 0.7 전후가 기본값입니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Slider x:Name="SldOverlayTemperature"
Width="150"
Minimum="0"
Maximum="2"
TickFrequency="0.1"
IsSnapToTickEnabled="True"
ValueChanged="SldOverlayTemperature_ValueChanged"
VerticalAlignment="Center"/>
<Border Width="48"
Height="28"
Margin="10,0,0,0"
CornerRadius="8"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="TxtOverlayTemperatureValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5"/>
</Border>
<TextBox x:Name="TxtOverlayTemperature"
Visibility="Collapsed"
LostFocus="TxtOverlayTemperature_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayMaxRetryRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="오류 재시도 횟수"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">도구 실패나 일시 오류가 났을 때 자동으로 다시 시도할 횟수입니다. 높을수록 복구 기회는 늘지만 전체 실행 시간도 길어집니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Slider x:Name="SldOverlayMaxRetryOnError"
Width="150"
Minimum="0"
Maximum="10"
TickFrequency="1"
IsSnapToTickEnabled="True"
ValueChanged="SldOverlayMaxRetryOnError_ValueChanged"
VerticalAlignment="Center"/>
<Border Width="48"
Height="28"
Margin="10,0,0,0"
CornerRadius="8"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="TxtOverlayMaxRetryOnErrorValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5"/>
</Border>
<TextBox x:Name="TxtOverlayMaxRetryOnError"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxRetryOnError_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayMaxAgentIterationsRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="최대 Agent Pass"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">계획, 실행, 검토 단계를 몇 번까지 반복할지 정합니다. 큰 작업일수록 여유를 두는 편이 좋지만, 너무 높으면 과도하게 오래 돌 수 있습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Slider x:Name="SldOverlayMaxAgentIterations"
Width="150"
Minimum="1"
Maximum="100"
TickFrequency="1"
IsSnapToTickEnabled="True"
ValueChanged="SldOverlayMaxAgentIterations_ValueChanged"
VerticalAlignment="Center"/>
<Border Width="48"
Height="28"
Margin="10,0,0,0"
CornerRadius="8"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="TxtOverlayMaxAgentIterationsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5"/>
</Border>
<TextBox x:Name="TxtOverlayMaxAgentIterations"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxAgentIterations_LostFocus"/>
</StackPanel>
</Grid>
<StackPanel x:Name="OverlayDeveloperRuntimePanel" Margin="0,14,0,0">
<Grid x:Name="OverlayFreeTierDelayRow">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="호출 간 딜레이(초)"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">무료 호출 제한이 있는 서비스에서 연속 요청 사이에 둘 최소 대기 시간입니다. 호출이 막히는 환경일수록 조금 넉넉하게 두는 편이 안정적입니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Slider x:Name="SldOverlayFreeTierDelaySeconds"
Width="150"
Minimum="0"
Maximum="60"
TickFrequency="1"
IsSnapToTickEnabled="True"
ValueChanged="SldOverlayFreeTierDelaySeconds_ValueChanged"
VerticalAlignment="Center"/>
<Border Width="48"
Height="28"
Margin="10,0,0,0"
CornerRadius="8"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="TxtOverlayFreeTierDelaySecondsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5"/>
</Border>
<TextBox x:Name="TxtOverlayFreeTierDelaySeconds"
Visibility="Collapsed"
LostFocus="TxtOverlayFreeTierDelaySeconds_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayMaxSubAgentsRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="220"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="서브에이전트 최대 수"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">큰 작업을 병렬로 나눌 때 동시에 돌릴 최대 서브에이전트 수입니다. 값을 높이면 빠를 수 있지만 CPU와 메모리 사용량이 늘어납니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<Slider x:Name="SldOverlayMaxSubAgents"
Width="150"
Minimum="1"
Maximum="10"
TickFrequency="1"
IsSnapToTickEnabled="True"
ValueChanged="SldOverlayMaxSubAgents_ValueChanged"
VerticalAlignment="Center"/>
<Border Width="48"
Height="28"
Margin="10,0,0,0"
CornerRadius="8"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="TxtOverlayMaxSubAgentsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryText}"
FontSize="11.5"/>
</Border>
<TextBox x:Name="TxtOverlayMaxSubAgents"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxSubAgents_LostFocus"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayAgentLogLevelRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="실행 이력 상세도"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">채팅창에 도구 호출과 결과를 얼마나 자세히 보여줄지 정합니다. 디버그는 가장 자세하지만 작업 흐름이 길게 보일 수 있습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayAgentLogLevel"
Grid.Column="1"
MinWidth="160"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayAgentLogLevel_SelectionChanged">
<ComboBoxItem Content="간략" Tag="simple"/>
<ComboBoxItem Content="상세" Tag="detailed"/>
<ComboBoxItem Content="디버그" Tag="debug"/>
</ComboBox>
</Grid>
</StackPanel>
<StackPanel x:Name="OverlayDeveloperExtraPanel" Margin="0,8,0,0">
<Grid x:Name="OverlayPlanDiffCountRow">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="180"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="계획 diff 심각도(개수)"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">계획 변경 개수가 어느 정도일 때 중간, 대폭 배지를 붙일지 정합니다. 검토 기준을 팀 스타일에 맞게 조절할 때 씁니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock Text="중간" Margin="0,0,6,0" Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBox x:Name="TxtOverlayPlanDiffMediumCount"
Width="48"
Margin="0,0,10,0"
TextAlignment="Center"
LostFocus="TxtOverlayPlanDiffMediumCount_LostFocus"
Padding="8,5"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
<TextBlock Text="대폭" Margin="0,0,6,0" Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBox x:Name="TxtOverlayPlanDiffHighCount"
Width="48"
TextAlignment="Center"
LostFocus="TxtOverlayPlanDiffHighCount_LostFocus"
Padding="8,5"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</StackPanel>
</Grid>
<Grid x:Name="OverlayPlanDiffRatioRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="180"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="계획 diff 심각도(비율 %)"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">전체 계획 대비 변경 비율이 어느 수준일 때 중간, 대폭으로 볼지 정합니다. 작업 크기보다 영향도를 기준으로 보고 싶을 때 적합합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock Text="중간" Margin="0,0,6,0" Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBox x:Name="TxtOverlayPlanDiffMediumRatio"
Width="48"
Margin="0,0,10,0"
TextAlignment="Center"
LostFocus="TxtOverlayPlanDiffMediumRatio_LostFocus"
Padding="8,5"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
<TextBlock Text="대폭" Margin="0,0,6,0" Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBox x:Name="TxtOverlayPlanDiffHighRatio"
Width="48"
TextAlignment="Center"
LostFocus="TxtOverlayPlanDiffHighRatio_LostFocus"
Padding="8,5"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</StackPanel>
</Grid>
<Border x:Name="OverlayToggleWorkflowVisualizer" Style="{StaticResource OverlayAdvancedToggleRowStyle}" Margin="0,8,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="워크플로우 시각화" FontSize="12.5" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="에이전트 실행 흐름을 별도 창에서 실시간으로 보여줍니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayWorkflowVisualizer"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleShowTotalCallStats" Style="{StaticResource OverlayAdvancedToggleRowStyle}" Margin="0,8,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="전체 호출·토큰 합계 표시" FontSize="12.5" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="작업 완료 시 총 호출 수와 누적 토큰량을 별도로 표시합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayShowTotalCallStats"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleAuditLog" Style="{StaticResource OverlayAdvancedToggleRowStyle}" Margin="0,8,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="감사 로그" FontSize="12.5" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="도구 호출 이력을 로컬 JSON으로 기록해 보안 감사와 디버깅에 활용합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableAuditLog"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Grid x:Name="OverlayOpenAuditLogRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="감사 로그 폴더"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<TextBlock Text="저장된 도구 호출 이력 폴더를 바로 엽니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<Border Grid.Column="1"
Cursor="Hand"
Background="{DynamicResource ItemHoverBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="8"
Padding="10,6"
Margin="12,0,0,0"
MouseLeftButtonUp="OverlayOpenAuditLogBtn_MouseLeftButtonUp">
<TextBlock Text="폴더 열기"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"/>
</Border>
</Grid>
</StackPanel>
<StackPanel x:Name="OverlayAdvancedTogglePanel" Margin="0,14,0,0">
<CheckBox x:Name="ChkOverlayVllmAllowInsecureTls" Visibility="Collapsed" Checked="ChkOverlayVllmAllowInsecureTls_Changed" Unchecked="ChkOverlayVllmAllowInsecureTls_Changed"/>
<Border x:Name="OverlayToggleProactiveCompact" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="자동 대화 압축"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">긴 대화에서 오래된 내용을 먼저 요약해 현재 작업에 필요한 맥락만 남깁니다. 컨텍스트 초과로 답변이 끊기는 상황을 줄일 때 유용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="대화 길이가 길어질 때 이전 내용을 먼저 정리해 컨텍스트 한도에 안정적으로 맞춥니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableProactiveCompact"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleSkillSystem" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="확장 스킬 사용"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">로컬 스킬 파일을 읽어 슬래시 명령, 업무 템플릿, 자동 워크플로우를 확장합니다. 끄면 기본 내장 기능만 사용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="설치된 스킬 파일을 읽어 슬래시 명령과 업무별 확장 워크플로우를 활용합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableSkillSystem"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleToolHooks" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="실행 전후 자동 확장"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">도구 실행 직전과 직후에 사용자 정의 훅을 연결합니다. 백업, 로그 기록, 검증 스크립트 같은 후처리를 자동화할 때 씁니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="도구 실행 전후에 추가 스크립트나 확장 규칙을 끼워 넣어 자동 처리 흐름을 확장합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableToolHooks"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleHookInputMutation" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="입력 보정 반영"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">훅이나 확장 규칙이 입력을 더 안전하거나 명확하게 다듬은 경우, 그 수정본을 실제 실행 프롬프트에 반영합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="확장 규칙이 입력을 더 적절하게 고친 경우 그 수정본을 실제 실행에 반영합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableHookInputMutation"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleHookPermissionUpdate" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="권한 변경 반영"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">확장 규칙이 읽기 전용, 승인 필요 같은 실행 권한을 조정하면 그 결과를 다음 도구 단계에 바로 이어받습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="확장 규칙이 현재 실행 권한을 조정하면 그 변경값을 이어지는 단계에 바로 적용합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableHookPermissionUpdate"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleCoworkVerification" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Cowork 결과 검토"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">문서, 보고서, 표 같은 업무 결과를 한 번 더 확인해 빠진 항목이나 형식 오류를 줄입니다. 완성도는 올라가지만 한 단계 더 검토하므로 시간이 조금 더 듭니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="문서와 데이터 작업 결과를 한 번 더 점검해 누락이나 형식 문제를 줄입니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableCoworkVerification"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleCodeVerification" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Code 결과 검토"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">코드 수정 후 다시 읽고 점검해 누락된 변경, 문법 문제, 테스트 누락 가능성을 줄입니다. 안전성은 오르지만 응답 시간이 약간 늘 수 있습니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="코드 생성 또는 수정 뒤에 한 번 더 점검해 오류와 빠진 부분을 줄입니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableCodeVerification"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleCodeReview" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="코드 리뷰 도구 활성화"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">Git diff 분석, 파일 리뷰, PR 요약 생성 도구를 코드 탭에서 사용할 수 있게 합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="코드 탭에서 diff 분석과 리뷰 요약 도구를 자동으로 활용합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableCodeReview"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleParallelTools" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="도구 병렬 실행"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">서로 충돌하지 않는 읽기, 조회, 분석 작업을 동시에 실행해 응답 속도를 높입니다. 순서 보장이 중요한 작업은 자동으로 직렬 처리됩니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="서로 겹치지 않는 작업은 동시에 처리해 응답 시간을 줄입니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableParallelTools"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleProjectRules" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="프로젝트 규칙 자동 반영"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">작업 폴더 안의 규칙 문서나 지침 파일을 읽어 코딩 스타일, 금지사항, 작업 순서를 응답에 자동 반영합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="작업 폴더 안의 규칙 문서를 읽어 작업 방식과 주의사항을 자동으로 반영합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableProjectRules"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleAgentMemory" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="에이전트 메모리 사용"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">폴더별 메모와 이전 합의사항을 유지해 반복 요청에서 같은 설명을 다시 하지 않도록 돕습니다. 장기 작업을 이어갈 때 특히 유용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="폴더별 메모를 유지해 반복 작업에서 이전 맥락을 더 잘 이어갑니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableAgentMemory"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleWorktreeTools" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Worktree 도구"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">브랜치와 작업 디렉터리를 분리해 실험 작업을 안전하게 진행하는 도구입니다. 현재 작업을 건드리지 않고 병렬 검토를 하고 싶을 때 유용합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="코드 탭에서 워크트리 생성과 전환 도구를 노출합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableWorktreeTools"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleTeamTools" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Team 도구"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">큰 작업을 역할별 단위로 쪼개고 병렬 진행 흐름을 관리하는 도구입니다. 리뷰, 구현, 검증을 나눠 다룰 때 도움이 됩니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="코드 탭에서 팀 작업 생성과 정리 도구를 사용할 수 있게 합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableTeamTools"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
<Border x:Name="OverlayToggleCronTools" Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Cron 도구"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">정기 실행 작업이나 예약형 자동화를 다룰 때 쓰는 도구입니다. 반복 점검, 예약 생성, 상태 확인 같은 흐름을 연결합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="코드 탭에서 예약 작업 생성과 확인 도구를 사용할 수 있게 합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableCronTools"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</Border>
</StackPanel>
<Border x:Name="OverlayToolsInfoPanel"
Visibility="Collapsed"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,14,0,0">
<StackPanel>
<TextBlock Text="도구 설명"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="도구 탭에서는 AX Agent가 실제로 사용할 도구와 실행 전후 확장 흐름을 관리합니다."
Margin="0,4,0,10"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<TextBlock FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource PrimaryText}">
AI가 파일 읽기/쓰기, 검색, Git 같은 도구를 실행할 때
<LineBreak/>Pre 훅과 Post 훅으로 사용자 스크립트를 자동 실행할 수 있습니다.
<LineBreak/>
<LineBreak/>동작 흐름: AI 판단 → Pre 훅 → 도구 실행 → Post 훅 → 다음 단계
<LineBreak/>
<LineBreak/>활용 예시
<LineBreak/>• 파일 수정 후 자동 백업
<LineBreak/>• Git 커밋 전 린트/테스트 실행
<LineBreak/>• 특정 도구 실행 시 로그 기록 또는 알림 표시
<LineBreak/>
<LineBreak/>훅 실패나 타임아웃이 나더라도 AX Agent 작업은 계속 진행됩니다.
</TextBlock>
</StackPanel>
</Border>
<StackPanel x:Name="OverlayToolsRuntimePanel"
Visibility="Collapsed"
Margin="0,14,0,0">
<TextBlock Text="훅 실행 타임아웃"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,8,0,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="도구 훅 스크립트 제한 시간"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="지정 시간 안에 훅이 끝나지 않으면 자동으로 종료하고, AX Agent 본 작업은 계속 진행합니다."
Margin="0,4,0,0"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="44"/>
</Grid.ColumnDefinitions>
<Slider x:Name="SldOverlayToolHookTimeoutMs"
Minimum="3000"
Maximum="30000"
TickFrequency="1000"
IsSnapToTickEnabled="True"
SmallChange="1000"
LargeChange="3000"
VerticalAlignment="Center"
ValueChanged="SldOverlayToolHookTimeoutMs_ValueChanged"/>
<Border Grid.Column="1"
Margin="10,0,0,0"
Padding="8,4"
MinWidth="44"
VerticalAlignment="Center"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10">
<TextBlock x:Name="TxtOverlayToolHookTimeoutMsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<TextBox x:Name="TxtOverlayToolHookTimeoutMs"
Visibility="Collapsed"
LostFocus="TxtOverlayToolHookTimeoutMs_LostFocus"/>
</Grid>
</Grid>
</Border>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="등록된 훅"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="실행 전/후 자동 확장에 연결된 스크립트를 여기서 직접 추가하고 정리합니다."
Margin="0,4,0,0"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<Border Grid.Column="1"
Cursor="Hand"
Background="{DynamicResource ItemHoverBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="8"
Padding="10,6"
Margin="12,0,0,0"
MouseLeftButtonUp="OverlayAddHookBtn_MouseLeftButtonUp">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;"
FontFamily="Segoe MDL2 Assets"
FontSize="11.5"
Margin="0,0,6,0"
Foreground="{DynamicResource AccentColor}"/>
<TextBlock Text="훅 추가"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"/>
</StackPanel>
</Border>
</Grid>
<StackPanel x:Name="OverlayHookListPanel"/>
</StackPanel>
<Border x:Name="OverlaySkillInfoPanel"
Visibility="Collapsed"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,14,0,0">
<StackPanel>
<TextBlock Text="스킬 설명"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="스킬 탭에서는 재사용 워크플로우, 폴더 기반 확장, MCP 연동과 보조 동작을 관리합니다."
Margin="0,4,0,10"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<TextBlock FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource PrimaryText}">
`.skill.md` 또는 `SKILL.md` 파일을 두면 슬래시 명령(`/`)으로 스킬을 호출할 수 있습니다.
<LineBreak/>기본 스킬 폴더: %APPDATA%\AxCopilot\skills\
<LineBreak/>
<LineBreak/>이 탭에서 함께 관리하는 항목
<LineBreak/>• 추가 스킬 폴더
<LineBreak/>• 슬래시 팝업 표시 개수
<LineBreak/>• 드래그 앤 드롭 AI 액션
<LineBreak/>• 응답 실패 대비 폴백 모델
<LineBreak/>• MCP 서버 연결 상태와 확장 도구 연동
<LineBreak/>
<LineBreak/>MCP 서버를 연결하면 브라우저, 파일시스템, 외부 업무 도구 같은 확장 기능을 AX Agent가 사용할 수 있습니다.
</TextBlock>
</StackPanel>
</Border>
<Border x:Name="OverlayBlockInfoPanel"
Visibility="Collapsed"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,14,0,0">
<StackPanel>
<TextBlock Text="차단 설명"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="차단 탭에서는 에이전트가 접근하거나 수정하면 안 되는 경로와 파일 형식을 확인합니다."
Margin="0,4,0,10"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<TextBlock FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource PrimaryText}">
시스템 보호 경로와 실행 위험이 높은 형식은 기본값으로 막아 둡니다.
<LineBreak/>운영 정책에 맞춰 차단 기준을 검토할 때 이 탭을 확인하면 됩니다.
</TextBlock>
</StackPanel>
</Border>
<StackPanel x:Name="OverlayBlockRuntimePanel"
Visibility="Collapsed"
Margin="0,14,0,0">
<TextBlock Text="에이전트 접근 차단"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,8,0,8">
<StackPanel>
<TextBlock Text="차단 경로 패턴"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="에이전트가 접근할 수 없는 경로입니다. (시스템 보호)"
Margin="0,2,0,8"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<StackPanel x:Name="OverlayBlockedPathsPanel"/>
</StackPanel>
</Border>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,0,0,14">
<StackPanel>
<TextBlock Text="차단 확장자"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="에이전트가 수정할 수 없는 파일 형식입니다."
Margin="0,2,0,8"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel x:Name="OverlayBlockedExtensionsPanel"/>
</StackPanel>
</Border>
</StackPanel>
<StackPanel x:Name="OverlaySkillRuntimePanel"
Visibility="Collapsed"
Margin="0,14,0,0">
<TextBlock Text="스킬 설정"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,8,0,8">
<StackPanel>
<TextBlock Text="스킬 폴더"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock x:Name="OverlaySkillsFolderPathText"
Margin="0,4,0,10"
FontSize="11"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel Margin="0,0,0,10">
<Border Cursor="Hand"
Background="{DynamicResource ItemHoverBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="8"
Padding="10,6"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayBrowseSkillFolderBtn_MouseLeftButtonUp">
<TextBlock Text="폴더 선택"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"/>
</Border>
<Border Cursor="Hand"
Background="{DynamicResource ItemHoverBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="8"
Padding="10,6"
Margin="0,0,8,8"
MouseLeftButtonUp="OverlayOpenSkillFolderBtn_MouseLeftButtonUp">
<TextBlock Text="폴더 열기"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"/>
</Border>
</WrapPanel>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Text="슬래시 팝업 표시 개수"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="36"/>
</Grid.ColumnDefinitions>
<Slider x:Name="SldOverlaySlashPopupPageSize"
Minimum="3"
Maximum="20"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="1"
LargeChange="2"
VerticalAlignment="Center"
ValueChanged="SldOverlaySlashPopupPageSize_ValueChanged"/>
<Border Grid.Column="1"
Margin="8,0,0,0"
Padding="6,4"
VerticalAlignment="Center"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10">
<TextBlock x:Name="TxtOverlaySlashPopupPageSizeValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<TextBox x:Name="TxtOverlaySlashPopupPageSize"
Visibility="Collapsed"
LostFocus="TxtOverlaySlashPopupPageSize_LostFocus"/>
</Grid>
</Grid>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Text="슬래시 핀 최대 개수"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="36"/>
</Grid.ColumnDefinitions>
<Slider x:Name="SldOverlayMaxFavoriteSlashCommands"
Minimum="1"
Maximum="30"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="1"
LargeChange="2"
VerticalAlignment="Center"
ValueChanged="SldOverlayMaxFavoriteSlashCommands_ValueChanged"/>
<Border Grid.Column="1"
Margin="8,0,0,0"
Padding="6,4"
VerticalAlignment="Center"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10">
<TextBlock x:Name="TxtOverlayMaxFavoriteSlashCommandsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<TextBox x:Name="TxtOverlayMaxFavoriteSlashCommands"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxFavoriteSlashCommands_LostFocus"/>
</Grid>
</Grid>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Text="슬래시 최근 최대 개수"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="36"/>
</Grid.ColumnDefinitions>
<Slider x:Name="SldOverlayMaxRecentSlashCommands"
Minimum="5"
Maximum="50"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="1"
LargeChange="5"
VerticalAlignment="Center"
ValueChanged="SldOverlayMaxRecentSlashCommands_ValueChanged"/>
<Border Grid.Column="1"
Margin="8,0,0,0"
Padding="6,4"
VerticalAlignment="Center"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="10">
<TextBlock x:Name="TxtOverlayMaxRecentSlashCommandsValue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="11.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
</Border>
<TextBox x:Name="TxtOverlayMaxRecentSlashCommands"
Visibility="Collapsed"
LostFocus="TxtOverlayMaxRecentSlashCommands_LostFocus"/>
</Grid>
</Grid>
<Border Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="드래그 앤 드롭 AI 액션"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="파일을 끌어 놓을 때 AI 액션 선택 메뉴를 먼저 보여줍니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayEnableDragDropAiActions"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"
Checked="ChkOverlayEnableDragDropAiActions_Changed"
Unchecked="ChkOverlayEnableDragDropAiActions_Changed"/>
</Grid>
</Border>
<Border Style="{StaticResource OverlayAdvancedToggleRowStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,16,0">
<TextBlock Text="드래그 앤 드롭 즉시 전송"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="AI 액션을 고른 뒤 추가 확인 없이 바로 큐에 넣어 실행합니다."
Margin="0,4,0,0"
FontSize="11.5"
TextWrapping="Wrap"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<CheckBox x:Name="ChkOverlayDragDropAutoSend"
Grid.Column="1"
VerticalAlignment="Center"
Style="{StaticResource ToggleSwitch}"
Checked="ChkOverlayDragDropAutoSend_Changed"
Unchecked="ChkOverlayDragDropAutoSend_Changed"/>
</Grid>
</Border>
<TextBlock Text="로드된 스킬"
Margin="0,10,0,6"
FontSize="12"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<StackPanel x:Name="OverlaySkillListPanel"/>
</StackPanel>
</Border>
<TextBlock Text="폴백 모델"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,8,0,14">
<StackPanel x:Name="OverlayFallbackModelsPanel"/>
</Border>
<TextBlock Text="MCP 서버"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Border Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
CornerRadius="12"
Padding="14,12"
Margin="0,8,0,14">
<StackPanel x:Name="OverlayMcpServerListPanel"/>
</Border>
</StackPanel>
<StackPanel x:Name="OverlayToolRegistrySection"
Visibility="Collapsed"
Margin="0,14,0,0">
<TextBlock Text="등록된 도구/커넥터"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="에이전트가 사용할 수 있는 도구 목록입니다. 코워크/코드 탭에서 자동으로 호출합니다."
Margin="0,4,0,8"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
<StackPanel x:Name="OverlayToolRegistryPanel"/>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</Grid>
</Border>
</Grid>
</Border>
<!-- ══ 미리보기 스플리터 (Column 3) ══ -->
<GridSplitter x:Name="PreviewSplitter" Grid.Column="3" Width="5"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Background="Transparent" Cursor="SizeWE" Visibility="Collapsed"
ShowsPreview="True"/>
<!-- ══ 문서 미리보기 패널 (Column 4) ══ -->
<!--
WebView2 에어스페이스 문제 해결:
탭 바와 WebView2 콘텐츠를 DockPanel으로 분리.
DockPanel.Dock="Top"인 탭 바는 별도 WPF 레이어로 렌더링되어
WebView2 HWND에 가려지지 않음.
-->
<Border x:Name="PreviewPanel" Grid.Column="4" Visibility="Collapsed"
Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1,0,0,0">
<DockPanel LastChildFill="True">
<!-- 탭 바 + 도구 버튼 (DockPanel.Top — WebView2 위에 독립 레이어) -->
<Border DockPanel.Dock="Top" Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,0,0,1"
Padding="0" Panel.ZIndex="10" Focusable="True"
PreviewMouseDown="PreviewTabBar_PreviewMouseDown">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Disabled" CanContentScroll="True">
<StackPanel x:Name="PreviewTabPanel" Orientation="Horizontal"/>
</ScrollViewer>
<StackPanel Grid.Column="1" Orientation="Horizontal" Margin="4,0">
<Button x:Name="BtnOpenExternal" Style="{StaticResource GhostBtn}" Padding="6"
Click="BtnOpenExternal_Click" ToolTip="외부 프로그램으로 열기" Cursor="Hand">
<TextBlock Text="&#xE8A7;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}" IsHitTestVisible="False"/>
</Button>
<Button Style="{StaticResource GhostBtn}" Padding="6"
Click="BtnClosePreview_Click" ToolTip="미리보기 닫기" Cursor="Hand">
<TextBlock Text="&#xE711;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}" IsHitTestVisible="False"/>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- 미리보기 콘텐츠 영역 (DockPanel.Fill — WebView2는 여기에만 존재) -->
<Grid ClipToBounds="True">
<wv2:WebView2 x:Name="PreviewWebView" Visibility="Collapsed"/>
<ScrollViewer x:Name="PreviewTextScroll" Visibility="Collapsed"
VerticalScrollBarVisibility="Auto" Padding="12,8">
<TextBlock x:Name="PreviewTextBlock" TextWrapping="Wrap"
FontFamily="Consolas" FontSize="12"
Foreground="{DynamicResource PrimaryText}"/>
</ScrollViewer>
<DataGrid x:Name="PreviewDataGrid" Visibility="Collapsed"
AutoGenerateColumns="True" IsReadOnly="True"
HeadersVisibility="Column" GridLinesVisibility="All"
Background="Transparent" Foreground="{DynamicResource PrimaryText}"
BorderThickness="0" CanUserAddRows="False"
RowBackground="{DynamicResource HintBackground}" AlternatingRowBackground="{DynamicResource ItemHoverBackground}"
ColumnHeaderHeight="30" RowHeight="28" FontSize="11.5"/>
<TextBlock x:Name="PreviewEmpty" Text="미리보기할 파일이 없습니다"
HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="12" Foreground="{DynamicResource SecondaryText}"
Visibility="Collapsed"/>
</Grid>
</DockPanel>
</Border>
<!-- 리사이즈 그립 -->
<Thumb x:Name="ResizeGrip" Grid.Column="2"
Width="14" Height="14"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
Cursor="SizeNWSE" Opacity="0.3"
DragDelta="ResizeGrip_DragDelta">
<Thumb.Template>
<ControlTemplate>
<TextBlock Text="&#xE740;" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="{DynamicResource SecondaryText}"/>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Grid>
</Border>
</Window>