변경 목적: - AX Agent의 도구 이름, 내부 설정, 스킬 정책, 실행 루프 사이의 불일치를 줄이고 전체 동작 품질을 높인다. - claw-code 수준의 일관된 동작 품질을 참고하되 AX 구조에 맞는 고유한 카탈로그·정규화 레이어로 재구성한다. 핵심 수정사항: - 도구 canonical id, legacy alias, 탭 노출, 설정 카테고리, read-only 분류를 중앙 카탈로그로 통합했다. - ToolRegistry, AgentLoopService, 병렬 실행 분류, 권한 처리, 훅 처리, 스킬 allowed-tools 해석이 같은 이름 체계를 사용하도록 정리했다. - Agent 설정/일반 설정/도움말의 도구 카드와 훅 편집기, 스킬 설명을 현재 런타임 구조에 맞게 갱신했다. - 컨텍스트 압축, intent gate, spawn agents, session learning, model prompt adapter, workspace context 관련 변경과 테스트 추가를 함께 반영했다. - 문서 이력과 비교/로드맵 문서를 최신 상태로 갱신했다. 검증 결과: - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_toolcat\ -p:IntermediateOutputPath=obj\verify_toolcat\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentToolCatalogTests -p:OutputPath=bin\verify_toolcat_tests\ -p:IntermediateOutputPath=obj\verify_toolcat_tests\ : 통과 8
174 lines
8.7 KiB
XML
174 lines
8.7 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<UseWPF>true</UseWPF>
|
|
<UseWindowsForms>true</UseWindowsForms>
|
|
<RootNamespace>AxCopilot</RootNamespace>
|
|
<AssemblyName>AxCopilot</AssemblyName>
|
|
<ApplicationIcon>Assets\icon.ico</ApplicationIcon>
|
|
<!--
|
|
★ 버전 관리 규칙 ★
|
|
이 <Version> 값 하나만 변경하면 앱 전체에 자동 반영됩니다:
|
|
- 설정 창 하단 버전 표시 (SettingsWindow.xaml.cs → SetVersionText())
|
|
- Windows 속성 탭 파일 버전 / 제품 버전
|
|
- DEVELOPMENT.md 변경 이력은 수동으로 함께 업데이트하세요.
|
|
설정 스키마 버전(마이그레이션)은 Services/SettingsService.cs → CurrentSettingsVersion 을 별도로 관리합니다.
|
|
-->
|
|
<Version>0.7.3</Version>
|
|
<Company>AX</Company>
|
|
<Product>AX Copilot</Product>
|
|
<Description>AI 기반 업무 자동화 런처 & 코파일럿</Description>
|
|
<!-- ScreenCaptureHandler의 LockBits 포인터 연산에 필요 -->
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
|
|
<!-- 배포: build.bat에서 self-contained / framework-dependent 두 종류로 publish -->
|
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
|
|
|
<!-- ─── 디컴파일 방지 ─────────────────────────────────────────────── -->
|
|
<!-- 디버그 심볼 제거 (Release) -->
|
|
<DebugType Condition="'$(Configuration)'=='Release'">none</DebugType>
|
|
<DebugSymbols Condition="'$(Configuration)'=='Release'">false</DebugSymbols>
|
|
<!-- 임베디드 소스 제거 -->
|
|
<EmbedAllSources>false</EmbedAllSources>
|
|
<!-- Suppress source link -->
|
|
<EnableSourceLink>false</EnableSourceLink>
|
|
<DeterministicSourcePaths>false</DeterministicSourcePaths>
|
|
</PropertyGroup>
|
|
|
|
<!-- Release 빌드 시 추가 난독화 설정 -->
|
|
<PropertyGroup Condition="'$(Configuration)'=='Release'">
|
|
<Optimize>true</Optimize>
|
|
<!-- 사용하지 않는 멤버 제거 (IL trimming) -->
|
|
<PublishTrimmed>false</PublishTrimmed>
|
|
<!-- PDB 제거 -->
|
|
<CopyOutputSymbolsToPublishDirectory>false</CopyOutputSymbolsToPublishDirectory>
|
|
<!-- 배포판 보호 수준 강화 -->
|
|
<PublishSingleFile>true</PublishSingleFile>
|
|
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
|
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
|
<PublishReadyToRun>true</PublishReadyToRun>
|
|
</PropertyGroup>
|
|
|
|
<!-- UseWindowsForms의 암묵적 using(System.Windows.Forms)이 WPF의
|
|
System.Windows.Input과 충돌(KeyEventArgs 모호성)하므로 전역 제거.
|
|
System.Drawing도 전역 제거: System.Windows.Media의 Color/ColorConverter/FontFamily와
|
|
모호한 참조 충돌 방지. Drawing 타입이 필요한 파일에서만 명시적 using으로 추가. -->
|
|
<ItemGroup>
|
|
<Using Remove="System.Windows.Forms" />
|
|
<Using Remove="System.Drawing" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\AxCopilot.SDK\AxCopilot.SDK.csproj" />
|
|
</ItemGroup>
|
|
|
|
<!-- 클립보드 히스토리 DPAPI 암호화 (Windows 전용, 외부 네트워크 통신 없음) -->
|
|
<!-- Windows 서비스 관리 (ServiceHandler — 로컬 전용, 외부 네트워크 통신 없음) -->
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
|
<PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" />
|
|
<PackageReference Include="Markdig" Version="0.37.0" />
|
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.0" />
|
|
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2903.40" />
|
|
<PackageReference Include="QRCoder" Version="1.6.0" />
|
|
<PackageReference Include="System.IO.Hashing" Version="8.0.0" />
|
|
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
|
|
<PackageReference Include="System.ServiceProcess.ServiceController" Version="8.0.1" />
|
|
<PackageReference Include="UglyToad.PdfPig" Version="1.7.0-custom-5" />
|
|
</ItemGroup>
|
|
|
|
<!-- Assets -->
|
|
<ItemGroup>
|
|
<!-- 가이드 원본 HTML: 편집용. 출력에 복사하지 않음 (암호화 버전 사용) -->
|
|
<None Include="Assets\AX Copilot 사용가이드.htm" />
|
|
<None Include="Assets\AX Copilot 개발자가이드.htm" />
|
|
<!-- 암호화된 가이드: 빌드 출력에 복사 (앱 내장 뷰어로 복호화) -->
|
|
<Content Include="Assets\guide_user.enc">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Include="Assets\guide_dev.enc">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<!-- 아이콘: 앱 내장 리소스 + 출력에도 복사 (트레이용) -->
|
|
<Resource Include="Assets\icon.ico" />
|
|
<None Update="Assets\icon.ico">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<!-- about.json: 빌드 시 exe에 내장되는 리소스. 런타임 파일 수정 불가. -->
|
|
<Resource Include="Assets\about.json" />
|
|
<!-- 격려/명언 문구: 빌드 시 내장. 인터넷 연결 불필요. -->
|
|
<Resource Include="Assets\Quotes\motivational.json" />
|
|
<Resource Include="Assets\Quotes\famous.json" />
|
|
<Resource Include="Assets\Quotes\display_semiconductor.json" />
|
|
<Resource Include="Assets\Quotes\it_ai.json" />
|
|
<Resource Include="Assets\Quotes\science.json" />
|
|
<Resource Include="Assets\Quotes\history.json" />
|
|
<Resource Include="Assets\Quotes\today_events.json" />
|
|
<Resource Include="Assets\Quotes\english.json" />
|
|
<Resource Include="Assets\Quotes\movies.json" />
|
|
<Resource Include="Assets\Quotes\greetings.json" />
|
|
<!-- 대화 주제 프리셋: 9종 시스템 프롬프트 (빌드 시 내장) -->
|
|
<EmbeddedResource Include="Assets\Presets\*.json" />
|
|
<!-- 모델별 상세 프롬프트: 임베디드 리소스 (EXE에 포함, 개발자만 수정 가능) -->
|
|
<EmbeddedResource Include="Assets\ModelPrompts\*.md" />
|
|
<!-- 마스코트 이미지: 내장 리소스 (EXE에 포함됨, 교체 시 재빌드 필요) -->
|
|
<Resource Include="Assets\mascot.png" Condition="Exists('Assets\mascot.png')" />
|
|
<Resource Include="Assets\mascot.jpg" Condition="Exists('Assets\mascot.jpg')" />
|
|
<Resource Include="Assets\mascot.webp" Condition="Exists('Assets\mascot.webp')" />
|
|
<Resource Include="Assets\foldy_qdy.png" Condition="Exists('Assets\foldy_qdy.png')" />
|
|
<Resource Include="Assets\pixel_art.png" Condition="Exists('Assets\pixel_art.png')" />
|
|
<!-- PPT 고품질 템플릿: 빌드에 포함하지 않음 (297MB).
|
|
런타임에 Assets/ppt/ 또는 %APPDATA%/AXCopilot/templates/ppt/ 에서 검색.
|
|
개발 환경에서는 소스의 Assets/ppt/를 자동으로 찾음. -->
|
|
<!-- 검색 엔진 아이콘: 빌드 출력에 복사 (사내망에서 외부 favicon 다운로드 불가 대응) -->
|
|
<Content Include="Assets\SearchEngines\*.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<!-- 시스템 프롬프트: 빌드 출력에 복사 (동적 로딩) -->
|
|
<Content Include="Assets\system_prompt.txt">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<Link>system_prompt.txt</Link>
|
|
</Content>
|
|
</ItemGroup>
|
|
|
|
<!-- 마스코트 GIF 애니메이션: 빌드 출력 Assets/gif/ 폴더에 복사 -->
|
|
<ItemGroup>
|
|
<Content Include="Assets\gif\*.gif">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<Link>Assets\gif\%(Filename)%(Extension)</Link>
|
|
</Content>
|
|
</ItemGroup>
|
|
|
|
<!-- 내장 스킬 파일: 빌드 출력 skills/ 폴더에 복사 -->
|
|
<ItemGroup>
|
|
<Content Include="skills\*.skill.md">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<Link>skills\%(Filename)%(Extension)</Link>
|
|
</Content>
|
|
</ItemGroup>
|
|
|
|
<!-- 테마 리소스 딕셔너리 -->
|
|
<ItemGroup>
|
|
<Resource Include="Themes\Dark.xaml" />
|
|
<Resource Include="Themes\Light.xaml" />
|
|
<Resource Include="Themes\OLED.xaml" />
|
|
<Resource Include="Themes\Nord.xaml" />
|
|
<Resource Include="Themes\Monokai.xaml" />
|
|
<Resource Include="Themes\Catppuccin.xaml" />
|
|
<Resource Include="Themes\Sepia.xaml" />
|
|
<Resource Include="Themes\Alfred.xaml" />
|
|
<Resource Include="Themes\AlfredLight.xaml" />
|
|
</ItemGroup>
|
|
|
|
<!-- 단위 테스트 프로젝트에서 internal 멤버 접근 허용 -->
|
|
<ItemGroup>
|
|
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
|
|
<_Parameter1>AxCopilot.Tests</_Parameter1>
|
|
</AssemblyAttribute>
|
|
</ItemGroup>
|
|
</Project>
|
|
|